diff options
author | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-06 18:05:41 +0000 |
---|---|---|
committer | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-06 18:05:41 +0000 |
commit | 6e12377f0b289b14858149b8cfe33abac46a06f6 (patch) | |
tree | 5b944dd17db0749793d5ef7af90fe5c6d0255d90 /chrome | |
parent | 7ef4cbbb55e58e43e7edcf358a9fb689673d39a9 (diff) | |
download | chromium_src-6e12377f0b289b14858149b8cfe33abac46a06f6.zip chromium_src-6e12377f0b289b14858149b8cfe33abac46a06f6.tar.gz chromium_src-6e12377f0b289b14858149b8cfe33abac46a06f6.tar.bz2 |
Fix regression caused by r73784, add regression test and
do some minor test organization.
BUG=57263,71955
TEST=Install https://chrome.google.com/webstore/detail/odmpalfplhaahlgnkkonchfhpegdcgjm and a few apps from the web store. Open popup. Popup should contain icons for each app and should not crash.
Review URL: http://codereview.chromium.org/6410088
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@73956 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
15 files changed, 34 insertions, 24 deletions
diff --git a/chrome/browser/extensions/extension_resource_request_policy_apitest.cc b/chrome/browser/extensions/extension_resource_request_policy_apitest.cc index b5d45c1..d9b371d 100644 --- a/chrome/browser/extensions/extension_resource_request_policy_apitest.cc +++ b/chrome/browser/extensions/extension_resource_request_policy_apitest.cc @@ -84,12 +84,25 @@ IN_PROC_BROWSER_TEST_F(ExtensionResourceRequestPolicyTest, OriginPrivileges) { EXPECT_EQ(result, "Loaded"); } +IN_PROC_BROWSER_TEST_F(ExtensionResourceRequestPolicyTest, + ExtensionCanLoadHostedAppIcons) { + ASSERT_TRUE(LoadExtension(test_data_dir_ + .AppendASCII("extension_resource_request_policy") + .AppendASCII("extension"))); + + ASSERT_TRUE(RunExtensionSubtest( + "extension_resource_request_policy/extension2/", + "can_load_icons_from_hosted_apps.html")); +} + IN_PROC_BROWSER_TEST_F(ExtensionResourceRequestPolicyTest, Audio) { - EXPECT_TRUE(RunExtensionSubtest("extension_resource_request_policy/media", - "audio.html")); + EXPECT_TRUE(RunExtensionSubtest( + "extension_resource_request_policy/extension2", + "audio.html")); } IN_PROC_BROWSER_TEST_F(ExtensionResourceRequestPolicyTest, Video) { - EXPECT_TRUE(RunExtensionSubtest("extension_resource_request_policy/media", - "video.html")); + EXPECT_TRUE(RunExtensionSubtest( + "extension_resource_request_policy/extension2", + "video.html")); } diff --git a/chrome/common/extensions/extension_icon_set.cc b/chrome/common/extensions/extension_icon_set.cc index 1f1dd21..fc1ac58 100644 --- a/chrome/common/extensions/extension_icon_set.cc +++ b/chrome/common/extensions/extension_icon_set.cc @@ -15,7 +15,7 @@ void ExtensionIconSet::Clear() { } void ExtensionIconSet::Add(int size, const std::string& path) { - DCHECK(path.size() > 0 && path[0] != '/'); + CHECK(path.size() > 0 && path[0] != '/'); map_[size] = path; } @@ -50,10 +50,14 @@ std::string ExtensionIconSet::Get(int size, MatchType match_type) const { } bool ExtensionIconSet::ContainsPath(const std::string& path) const { - DCHECK(path.size() > 0 && path[0] != '/'); + if (path.empty()) + return false; + + CHECK(path[0] != '/') << + "ExtensionIconSet stores icon paths without leading slash."; + for (IconMap::const_iterator iter = map_.begin(); iter != map_.end(); ++iter) { - LOG(ERROR) << iter->second << " , " << path; if (iter->second == path) return true; } diff --git a/chrome/common/extensions/extension_icon_set_unittest.cc b/chrome/common/extensions/extension_icon_set_unittest.cc index 4da96bc..9bd1ec5 100644 --- a/chrome/common/extensions/extension_icon_set_unittest.cc +++ b/chrome/common/extensions/extension_icon_set_unittest.cc @@ -44,6 +44,7 @@ TEST(ExtensionIconSet, Values) { EXPECT_TRUE(icons.ContainsPath("foo")); EXPECT_TRUE(icons.ContainsPath("bar")); EXPECT_FALSE(icons.ContainsPath("baz")); + EXPECT_FALSE(icons.ContainsPath("")); icons.Clear(); EXPECT_FALSE(icons.ContainsPath("foo")); diff --git a/chrome/renderer/extensions/extension_resource_request_policy.cc b/chrome/renderer/extensions/extension_resource_request_policy.cc index f4fcb30..188701a 100644 --- a/chrome/renderer/extensions/extension_resource_request_policy.cc +++ b/chrome/renderer/extensions/extension_resource_request_policy.cc @@ -28,8 +28,10 @@ bool ExtensionResourceRequestPolicy::CanRequestResource( // some extensions want to be able to do things like create their own // launchers. const Extension* extension = loaded_extensions->GetByURL(resource_url); + std::string resource_root_relative_path = + resource_url.path().empty() ? "" : resource_url.path().substr(1); if (extension && extension->is_hosted_app() && - !extension->icons().ContainsPath(resource_url.path())) { + !extension->icons().ContainsPath(resource_root_relative_path)) { LOG(ERROR) << "Denying load of " << resource_url.spec() << " from " << "hosted app."; return false; diff --git a/chrome/test/data/extensions/api_test/extension_resource_request_policy/extension/manifest.json b/chrome/test/data/extensions/api_test/extension_resource_request_policy/extension/manifest.json index 3a0c184..588a679 100644 --- a/chrome/test/data/extensions/api_test/extension_resource_request_policy/extension/manifest.json +++ b/chrome/test/data/extensions/api_test/extension_resource_request_policy/extension/manifest.json @@ -1,5 +1,5 @@ { - "description": "test", + "description": "Extension 1", "key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPOziAf8MbTjdUo6DysZ4nAU/2f/kwYnftyKkxI1GyTlbStprGy+Y2ek4/59QbE3xEE+dIIuYeObM4QTptpcFMg956ZLFoeDg41Pg3tzUrbltgG8hXTbBxN852FJx2kdaqa/MKUUsJKGSD5hkUmvZRADGGWhMWzvz64ao1h02xJQIDAQAB", "name": "test", "permissions": [ "http://a.com/*" ], diff --git a/chrome/test/data/extensions/api_test/extension_resource_request_policy/media/audio.html b/chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/audio.html index 8ef69f4..8ef69f4 100644 --- a/chrome/test/data/extensions/api_test/extension_resource_request_policy/media/audio.html +++ b/chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/audio.html diff --git a/chrome/test/data/extensions/api_test/extension_resource_request_policy/media/bear.wav b/chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/bear.wav Binary files differindex 1870eed..1870eed 100644 --- a/chrome/test/data/extensions/api_test/extension_resource_request_policy/media/bear.wav +++ b/chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/bear.wav diff --git a/chrome/test/data/extensions/api_test/extension_resource_request_policy/media/bear.webm b/chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/bear.webm Binary files differindex 422df3f..422df3f 100644 --- a/chrome/test/data/extensions/api_test/extension_resource_request_policy/media/bear.webm +++ b/chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/bear.webm diff --git a/chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/can_load_icons_from_hosted_apps.html b/chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/can_load_icons_from_hosted_apps.html index 46c6a70..096d66f 100644 --- a/chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/can_load_icons_from_hosted_apps.html +++ b/chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/can_load_icons_from_hosted_apps.html @@ -1,3 +1,3 @@ -<title>Unmodified</title> - -<img onload="document.title='Loaded'" onerror="document.title='Image failed to load'" src="chrome-extension://ggmldgjhdenlnjjjmehkomheglpmijnf/test.png"> +<img src="chrome-extension://fnbdbepgnidhjejikpionpfohdjjogpm/test.png" + onload="chrome.test.notifyPass()" + onerror="chrome.test.notifyFail()"> diff --git a/chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/cant_load_packaged_resources_from_hosted_apps.html b/chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/cant_load_packaged_resources_from_hosted_apps.html deleted file mode 100644 index 9ba959d..0000000 --- a/chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/cant_load_packaged_resources_from_hosted_apps.html +++ /dev/null @@ -1,3 +0,0 @@ -<title>Unmodified</title> - -<img onload="document.title='Loaded'" onerror="document.title='Image failed to load'" src="chrome-extension://ggmldgjhdenlnjjjmehkomheglpmijnf/test2.png"> diff --git a/chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/extensions_can_load_other_extension_resources.html b/chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/extensions_can_load_other_extension_resources.html deleted file mode 100644 index 4183769..0000000 --- a/chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/extensions_can_load_other_extension_resources.html +++ /dev/null @@ -1,3 +0,0 @@ -<title>Unmodified</title> - -<img onload="document.title='Loaded'" onerror="document.title='Image failed to load'" src="chrome-extension://fnbdbepgnidhjejikpionpfohdjjogpm/test.png">
\ No newline at end of file diff --git a/chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/manifest.json b/chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/manifest.json index 970fcf0..042ee4e 100644 --- a/chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/manifest.json +++ b/chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/manifest.json @@ -1,5 +1,5 @@ { - "description": "test", + "description": "Extension 2", "key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPOziAf8MbTjdUo6DysZ4nAU/2f/kwYnftyKkxI1GyTlbStprGy+Y2ek4/59QbE3xEE+dIIuYeObM4QTptpcFMg956ZLFoeDg41Pg3tzUrbltgG8hXTbBxN852FJx2kdaqa/MKUUsJKGSD5hkUmvZRADGGWhMWzvz64ao1h02xJQIDAQAC", "name": "test", "version": "0.1" diff --git a/chrome/test/data/extensions/api_test/extension_resource_request_policy/media/video.html b/chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/video.html index dfa951c..dfa951c 100644 --- a/chrome/test/data/extensions/api_test/extension_resource_request_policy/media/video.html +++ b/chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/video.html diff --git a/chrome/test/data/extensions/api_test/extension_resource_request_policy/hosted_app/manifest.json b/chrome/test/data/extensions/api_test/extension_resource_request_policy/hosted_app/manifest.json index 4de0837..9e4f339 100644 --- a/chrome/test/data/extensions/api_test/extension_resource_request_policy/hosted_app/manifest.json +++ b/chrome/test/data/extensions/api_test/extension_resource_request_policy/hosted_app/manifest.json @@ -1,5 +1,5 @@ { - "description": "test", + "description": "Hosted app", "key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPOziAf8MbTjdUo6DysZ4nAU/2f/kwYnftyKkxI1GyTlbStprGy+Y2ek4/59QbE3xEE+dIIuYeObM4QTptpcFMg956ZLFoeDg41Pg3tzUrbltgG8hXTbBxN852FJx2kdaqa/MKUUsJKGSD5hkUmvZRADGGWhMWzvz64ao1h02xJQIDAQAD", "name": "test", "version": "0.1", diff --git a/chrome/test/data/extensions/api_test/extension_resource_request_policy/media/manifest.json b/chrome/test/data/extensions/api_test/extension_resource_request_policy/media/manifest.json deleted file mode 100644 index 0d9792a..0000000 --- a/chrome/test/data/extensions/api_test/extension_resource_request_policy/media/manifest.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "test", - "version": "1" -} |