summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/webui/extension_icon_source.cc
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-10 21:27:25 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-10 21:27:25 +0000
commit07aa98646a9a57f4e5f5fdbf9012b34d0936492f (patch)
tree12ab41fad3a0b128f82dd7cbca61e54cbc501d26 /chrome/browser/ui/webui/extension_icon_source.cc
parent6cad5bfd4d5ad1f3ebf80c53bf205459fdef8ee3 (diff)
downloadchromium_src-07aa98646a9a57f4e5f5fdbf9012b34d0936492f.zip
chromium_src-07aa98646a9a57f4e5f5fdbf9012b34d0936492f.tar.gz
chromium_src-07aa98646a9a57f4e5f5fdbf9012b34d0936492f.tar.bz2
Handle case where we can't find icon for extension
in ExtensionIconSource. This prevents a crash when opening the extensions web ui page with an extension that has no icon. BUG=none TEST=manual Review URL: http://codereview.chromium.org/6651013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77696 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui/webui/extension_icon_source.cc')
-rw-r--r--chrome/browser/ui/webui/extension_icon_source.cc23
1 files changed, 14 insertions, 9 deletions
diff --git a/chrome/browser/ui/webui/extension_icon_source.cc b/chrome/browser/ui/webui/extension_icon_source.cc
index 321cd55..1dd64a2 100644
--- a/chrome/browser/ui/webui/extension_icon_source.cc
+++ b/chrome/browser/ui/webui/extension_icon_source.cc
@@ -123,15 +123,16 @@ void ExtensionIconSource::StartDataRequest(const std::string& path,
ExtensionResource icon =
request->extension->GetIconResource(request->size, request->match);
- // We fall back to multiple sources, using the following order:
- // 1) The icons as listed in the extension / app manifests.
- // 2) If a 16px icon and the extension has a launch URL, see if Chrome
- // has a corresponding favicon.
- // 3) If still no matches, load the default extension / application icon.
- if (!icon.relative_path().empty()) {
+ if (icon.relative_path().empty())
+ LoadIconFailed(request_id);
+ else
LoadExtensionImage(icon, request_id);
- return;
- }
+}
+
+void ExtensionIconSource::LoadIconFailed(int request_id) {
+ ExtensionIconRequest* request = GetData(request_id);
+ ExtensionResource icon =
+ request->extension->GetIconResource(request->size, request->match);
if (request->size == Extension::EXTENSION_ICON_BITTY)
LoadFaviconImage(request_id);
@@ -236,7 +237,11 @@ void ExtensionIconSource::OnImageLoaded(SkBitmap* image,
int index) {
int request_id = tracker_map_[index];
tracker_map_.erase(tracker_map_.find(index));
- FinalizeImage(image, request_id);
+
+ if (!image || image->empty())
+ LoadIconFailed(request_id);
+ else
+ FinalizeImage(image, request_id);
}
bool ExtensionIconSource::ParseData(const std::string& path,