summaryrefslogtreecommitdiffstats
path: root/chrome/common
diff options
context:
space:
mode:
authoraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-23 22:55:00 +0000
committeraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-23 22:55:00 +0000
commit1cea23942dddeeb854a0f8120812e87b5c962d34 (patch)
tree8b957aaf4e349bd100791ac1c7d8e4c9edbc8dd3 /chrome/common
parent088ee1afadb121aaf01cb033c373ade1d35456ac (diff)
downloadchromium_src-1cea23942dddeeb854a0f8120812e87b5c962d34.zip
chromium_src-1cea23942dddeeb854a0f8120812e87b5c962d34.tar.gz
chromium_src-1cea23942dddeeb854a0f8120812e87b5c962d34.tar.bz2
Allow extensions to request the icons of hosted apps.
BUG=53495 TEST= Review URL: http://codereview.chromium.org/3409004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@60371 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common')
-rw-r--r--chrome/common/extensions/extension.cc10
-rw-r--r--chrome/common/extensions/extension_icon_set.cc13
-rw-r--r--chrome/common/extensions/extension_icon_set.h3
-rw-r--r--chrome/common/extensions/extension_icon_set_unittest.cc15
-rw-r--r--chrome/common/extensions/extension_manifests_unittest.cc9
5 files changed, 50 insertions, 0 deletions
diff --git a/chrome/common/extensions/extension.cc b/chrome/common/extensions/extension.cc
index 4a3f851..009f164 100644
--- a/chrome/common/extensions/extension.cc
+++ b/chrome/common/extensions/extension.cc
@@ -1147,6 +1147,16 @@ bool Extension::InitFromValue(const DictionaryValue& source, bool require_key,
errors::kInvalidIconPath, key);
return false;
}
+
+ if (icon_path.size() > 0 && icon_path[0] == '/')
+ icon_path = icon_path.substr(1);
+
+ if (icon_path.empty()) {
+ *error = ExtensionErrorUtils::FormatErrorMessage(
+ errors::kInvalidIconPath, key);
+ return false;
+ }
+
icons_.Add(kIconSizes[i], icon_path);
}
}
diff --git a/chrome/common/extensions/extension_icon_set.cc b/chrome/common/extensions/extension_icon_set.cc
index 0679882..3eedce0 100644
--- a/chrome/common/extensions/extension_icon_set.cc
+++ b/chrome/common/extensions/extension_icon_set.cc
@@ -11,6 +11,7 @@ void ExtensionIconSet::Clear() {
}
void ExtensionIconSet::Add(int size, const std::string& path) {
+ DCHECK(path.size() > 0 && path[0] != '/');
map_[size] = path;
}
@@ -43,3 +44,15 @@ std::string ExtensionIconSet::Get(int size, MatchType match_type) const {
return result == map_.end() ? std::string() : result->second;
}
}
+
+bool ExtensionIconSet::ContainsPath(const std::string& path) const {
+ DCHECK(path.size() > 0 && path[0] != '/');
+ for (IconMap::const_iterator iter = map_.begin(); iter != map_.end();
+ ++iter) {
+ LOG(ERROR) << iter->second << " , " << path;
+ if (iter->second == path)
+ return true;
+ }
+
+ return false;
+}
diff --git a/chrome/common/extensions/extension_icon_set.h b/chrome/common/extensions/extension_icon_set.h
index 474a0c1..d1dc9f3 100644
--- a/chrome/common/extensions/extension_icon_set.h
+++ b/chrome/common/extensions/extension_icon_set.h
@@ -32,6 +32,9 @@ class ExtensionIconSet {
};
std::string Get(int size, MatchType match_type) const;
+ // Returns true if the set contains the specified path.
+ bool ContainsPath(const std::string& path) const;
+
private:
IconMap map_;
};
diff --git a/chrome/common/extensions/extension_icon_set_unittest.cc b/chrome/common/extensions/extension_icon_set_unittest.cc
index d91206a..4da96bc 100644
--- a/chrome/common/extensions/extension_icon_set_unittest.cc
+++ b/chrome/common/extensions/extension_icon_set_unittest.cc
@@ -33,3 +33,18 @@ TEST(ExtensionIconSet, Basic) {
EXPECT_EQ("", icons.Get(37, ExtensionIconSet::MATCH_SMALLER));
EXPECT_EQ("", icons.Get(47, ExtensionIconSet::MATCH_BIGGER));
}
+
+TEST(ExtensionIconSet, Values) {
+ ExtensionIconSet icons;
+ EXPECT_FALSE(icons.ContainsPath("foo"));
+
+ icons.Add(1, "foo");
+ icons.Add(2, "bar");
+
+ EXPECT_TRUE(icons.ContainsPath("foo"));
+ EXPECT_TRUE(icons.ContainsPath("bar"));
+ EXPECT_FALSE(icons.ContainsPath("baz"));
+
+ icons.Clear();
+ EXPECT_FALSE(icons.ContainsPath("foo"));
+}
diff --git a/chrome/common/extensions/extension_manifests_unittest.cc b/chrome/common/extensions/extension_manifests_unittest.cc
index 38a03f8..d6b47db3 100644
--- a/chrome/common/extensions/extension_manifests_unittest.cc
+++ b/chrome/common/extensions/extension_manifests_unittest.cc
@@ -332,3 +332,12 @@ TEST_F(ExtensionManifestTest, DisallowExtensionPermissions) {
}
}
}
+
+TEST_F(ExtensionManifestTest, NormalizeIconPaths) {
+ scoped_ptr<Extension> extension(
+ LoadAndExpectSuccess("normalize_icon_paths.json"));
+ EXPECT_EQ("16.png",
+ extension->icons().Get(16, ExtensionIconSet::MATCH_EXACTLY));
+ EXPECT_EQ("48.png",
+ extension->icons().Get(48, ExtensionIconSet::MATCH_EXACTLY));
+}