diff options
author | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-09 22:14:27 +0000 |
---|---|---|
committer | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-09 22:14:27 +0000 |
commit | ee5c29daf67e999166394e1acb0f89b755b70aaf (patch) | |
tree | db73c6f93b688b554e08eefd805411cef1d8a940 /chrome/browser/extensions | |
parent | 2747db2640d2395115de7f3d168786b8ef6e3a81 (diff) | |
download | chromium_src-ee5c29daf67e999166394e1acb0f89b755b70aaf.zip chromium_src-ee5c29daf67e999166394e1acb0f89b755b70aaf.tar.gz chromium_src-ee5c29daf67e999166394e1acb0f89b755b70aaf.tar.bz2 |
Move Contains() method to file_utils, stop relying on in extensions_protocol
Review URL: http://codereview.chromium.org/16805
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@7841 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions')
-rw-r--r-- | chrome/browser/extensions/extension_protocols.cc | 10 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_protocols_unittest.cc | 6 |
2 files changed, 5 insertions, 11 deletions
diff --git a/chrome/browser/extensions/extension_protocols.cc b/chrome/browser/extensions/extension_protocols.cc index d09cdd1..8f6957d 100644 --- a/chrome/browser/extensions/extension_protocols.cc +++ b/chrome/browser/extensions/extension_protocols.cc @@ -40,12 +40,12 @@ FilePath GetPathForExtensionResource(const FilePath& extension_path, if (!net::FileURLToFilePath(file_url, &ret_val)) return FilePath(); - if (!file_util::AbsolutePath(&ret_val)) - return FilePath(); - // Double-check that the path we ended up with is actually inside the - // extension root. - if (!extension_path.Contains(ret_val)) + // extension root. We can do this with a simple prefix match because: + // a) We control the prefix on both sides, and they should match. + // b) GURL normalizes things like "../" and "//" before it gets to us. + if (ret_val.value().find(extension_path.value() + + FilePath::kSeparators[0]) != 0) return FilePath(); return ret_val; diff --git a/chrome/browser/extensions/extension_protocols_unittest.cc b/chrome/browser/extensions/extension_protocols_unittest.cc index 113b480..dee70a8 100644 --- a/chrome/browser/extensions/extension_protocols_unittest.cc +++ b/chrome/browser/extensions/extension_protocols_unittest.cc @@ -15,12 +15,8 @@ TEST(ExtensionProtocolsTest, GetPathForExtensionResource) { GetPathForExtensionResource(extension_path, "/foo/bar.gif").value()); EXPECT_EQ(std::wstring(L"C:\\myextension\\"), GetPathForExtensionResource(extension_path, "/").value()); - // TODO(aa): This one is a bit weird, but is what net::FileURLToFilePath() - // returns for this input. Investigate adding more validation. EXPECT_EQ(std::wstring(L"C:\\myextension\\c:\\foo.gif"), GetPathForExtensionResource(extension_path, "/c:/foo.gif").value()); - EXPECT_EQ(std::wstring(L"C:\\myextension\\foo.gif"), - GetPathForExtensionResource(extension_path, "//foo.gif").value()); EXPECT_EQ(std::wstring(L""), GetPathForExtensionResource(extension_path, "/../foo.gif").value()); #else @@ -29,8 +25,6 @@ TEST(ExtensionProtocolsTest, GetPathForExtensionResource) { GetPathForExtensionResource(extension_path, "/foo/bar.gif").value()); EXPECT_EQ(std::wstring("/myextension/"), GetPathForExtensionResource(extension_path, "/").value()); - EXPECT_EQ(std::wstring("/myextension/foo.gif"), - GetPathForExtensionResource(extension_path, "//foo.gif").value()); EXPECT_EQ(std::wstring(""), GetPathForExtensionResource(extension_path, "/../foo.gif").value()); #endif |