Fixes bug in file_util::ReplaceExtension that could chop off path
elements. This was causing some folks bookmarks not to get saved!

BUG=1946
TEST=covered by unit tests

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@2412 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/base/file_util_unittest.cc b/base/file_util_unittest.cc
index e5cea3a7..c56579a 100644
--- a/base/file_util_unittest.cc
+++ b/base/file_util_unittest.cc
@@ -819,6 +819,18 @@
   }
 }
 
+// Make sure ReplaceExtension doesn't replace an extension that occurs as one of
+// the directory names of the path.
+TEST_F(FileUtilTest, ReplaceExtensionTestWithPathSeparators) {
+  std::wstring path;
+  file_util::AppendToPath(&path, L"foo.bar");
+  file_util::AppendToPath(&path, L"foo");
+  // '/foo.bar/foo' with extension '.baz'
+  std::wstring result_path = path;
+  file_util::ReplaceExtension(&result_path, L".baz");
+  EXPECT_EQ(path + L".baz", result_path);
+}
+
 TEST_F(FileUtilTest, FileEnumeratorTest) {
   // Test an empty directory.
   file_util::FileEnumerator f0(test_dir_, true,