Order posix file listings by type as well as name.

http://crbug.com/12812
TEST=go to /, see that directories are sorted before other files.

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

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


CrOS-Libchrome-Original-Commit: 172c55057003795131ecb2ad5dd012b0c1785171
diff --git a/base/file_util_unittest.cc b/base/file_util_unittest.cc
index 3ecd1cf..e0884f7 100644
--- a/base/file_util_unittest.cc
+++ b/base/file_util_unittest.cc
@@ -1035,10 +1035,12 @@
   EXPECT_TRUE(file_util::CreateDirectory(dirC));
   EXPECT_TRUE(file_util::CreateDirectory(dirD));
 
-  // Files and directories are enumerated in the lexicographical order,
-  // ignoring case and whether they are files or directories.
+  // On Windows, files and directories are enumerated in the lexicographical
+  // order, ignoring case and whether they are files or directories. On posix,
+  // we order directories before files.
   file_util::FileEnumerator enumerator(test_dir_, false, FILES_AND_DIRECTORIES);
   FilePath cur_file = enumerator.Next();
+#if defined(OS_WIN)
   EXPECT_EQ(fileA.value(), cur_file.value());
   cur_file = enumerator.Next();
   EXPECT_EQ(fileB.value(), cur_file.value());
@@ -1051,6 +1053,21 @@
   cur_file = enumerator.Next();
   EXPECT_EQ(fileF.value(), cur_file.value());
   cur_file = enumerator.Next();
+#elif defined(OS_POSIX)
+  EXPECT_EQ(dirC.value(), cur_file.value());
+  cur_file = enumerator.Next();
+  EXPECT_EQ(dirD.value(), cur_file.value());
+  cur_file = enumerator.Next();
+  EXPECT_EQ(dirE.value(), cur_file.value());
+  cur_file = enumerator.Next();
+  EXPECT_EQ(fileA.value(), cur_file.value());
+  cur_file = enumerator.Next();
+  EXPECT_EQ(fileB.value(), cur_file.value());
+  cur_file = enumerator.Next();
+  EXPECT_EQ(fileF.value(), cur_file.value());
+  cur_file = enumerator.Next();
+#endif
+
   EXPECT_EQ(FILE_PATH_LITERAL(""), cur_file.value());
 }