summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authoraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-06 18:05:41 +0000
committeraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-06 18:05:41 +0000
commit6e12377f0b289b14858149b8cfe33abac46a06f6 (patch)
tree5b944dd17db0749793d5ef7af90fe5c6d0255d90 /chrome
parent7ef4cbbb55e58e43e7edcf358a9fb689673d39a9 (diff)
downloadchromium_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')
-rw-r--r--chrome/browser/extensions/extension_resource_request_policy_apitest.cc21
-rw-r--r--chrome/common/extensions/extension_icon_set.cc10
-rw-r--r--chrome/common/extensions/extension_icon_set_unittest.cc1
-rw-r--r--chrome/renderer/extensions/extension_resource_request_policy.cc4
-rw-r--r--chrome/test/data/extensions/api_test/extension_resource_request_policy/extension/manifest.json2
-rw-r--r--chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/audio.html (renamed from chrome/test/data/extensions/api_test/extension_resource_request_policy/media/audio.html)0
-rw-r--r--chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/bear.wav (renamed from chrome/test/data/extensions/api_test/extension_resource_request_policy/media/bear.wav)bin188460 -> 188460 bytes
-rw-r--r--chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/bear.webm (renamed from chrome/test/data/extensions/api_test/extension_resource_request_policy/media/bear.webm)bin58199 -> 58199 bytes
-rw-r--r--chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/can_load_icons_from_hosted_apps.html6
-rw-r--r--chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/cant_load_packaged_resources_from_hosted_apps.html3
-rw-r--r--chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/extensions_can_load_other_extension_resources.html3
-rw-r--r--chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/manifest.json2
-rw-r--r--chrome/test/data/extensions/api_test/extension_resource_request_policy/extension2/video.html (renamed from chrome/test/data/extensions/api_test/extension_resource_request_policy/media/video.html)0
-rw-r--r--chrome/test/data/extensions/api_test/extension_resource_request_policy/hosted_app/manifest.json2
-rw-r--r--chrome/test/data/extensions/api_test/extension_resource_request_policy/media/manifest.json4
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
index 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
Binary files differ
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
index 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
Binary files differ
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"
-}