file_util: Convert the wstring version of IsDirectoryEmpty to FilePath.

BUG=24672
TEST=compiles

Review URL: http://codereview.chromium.org/2153002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@48237 0039d316-1c4b-4281-b951-d872f2087c98


CrOS-Libchrome-Original-Commit: b33f1d943fd420857d9c5988ce1f4598f9a8765a
diff --git a/base/file_util.cc b/base/file_util.cc
index 5bc73ce..aea6e62 100644
--- a/base/file_util.cc
+++ b/base/file_util.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
@@ -194,6 +194,15 @@
   return true;
 }
 
+bool IsDirectoryEmpty(const FilePath& dir_path) {
+  FileEnumerator files(dir_path, false,
+      static_cast<FileEnumerator::FILE_TYPE>(
+          FileEnumerator::FILES | FileEnumerator::DIRECTORIES));
+  if (files.Next().value().empty())
+    return true;
+  return false;
+}
+
 FILE* CreateAndOpenTemporaryFile(FilePath* path) {
   FilePath directory;
   if (!GetTempDir(&directory))
diff --git a/base/file_util.h b/base/file_util.h
index 16f18f1..414f775 100644
--- a/base/file_util.h
+++ b/base/file_util.h
@@ -212,16 +212,16 @@
 // already be pinned to the taskbar.
 bool TaskbarUnpinShortcutLink(const wchar_t* shortcut);
 
-// Return true if the given directory is empty
-bool IsDirectoryEmpty(const std::wstring& dir_path);
-
 // Copy from_path to to_path recursively and then delete from_path recursively.
 // Returns true if all operations succeed.
 // This function simulates Move(), but unlike Move() it works across volumes.
 // This fuction is not transactional.
 bool CopyAndDeleteDirectory(const FilePath& from_path,
                             const FilePath& to_path);
-#endif
+#endif  // defined(OS_WIN)
+
+// Return true if the given directory is empty
+bool IsDirectoryEmpty(const FilePath& dir_path);
 
 // Get the temporary directory provided by the system.
 bool GetTempDir(FilePath* path);
diff --git a/base/file_util_unittest.cc b/base/file_util_unittest.cc
index efe79c9..682376a 100644
--- a/base/file_util_unittest.cc
+++ b/base/file_util_unittest.cc
@@ -1622,4 +1622,20 @@
   ASSERT_TRUE(file_info.last_modified == modification_time);
 }
 
+TEST_F(FileUtilTest, IsDirectoryEmpty) {
+  FilePath empty_dir = test_dir_.Append(FILE_PATH_LITERAL("EmptyDir"));
+
+  ASSERT_FALSE(file_util::PathExists(empty_dir));
+
+  ASSERT_TRUE(file_util::CreateDirectory(empty_dir));
+
+  EXPECT_TRUE(file_util::IsDirectoryEmpty(empty_dir));
+
+  FilePath foo(empty_dir.Append(FILE_PATH_LITERAL("foo.txt")));
+  std::string bar("baz");
+  ASSERT_TRUE(file_util::WriteFile(foo, bar.c_str(), bar.length()));
+
+  EXPECT_FALSE(file_util::IsDirectoryEmpty(empty_dir));
+}
+
 }  // namespace