summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_icon_manager.cc
diff options
context:
space:
mode:
authorasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-16 21:39:29 +0000
committerasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-16 21:39:29 +0000
commit18539ee85b09a1398eb545a46f137bf336670202 (patch)
tree1f07ae1a40e8782b51b586d1f880fd154ad14df5 /chrome/browser/extensions/extension_icon_manager.cc
parent90c62d6ab15826ff2177bae02dea70ba30125ad1 (diff)
downloadchromium_src-18539ee85b09a1398eb545a46f137bf336670202.zip
chromium_src-18539ee85b09a1398eb545a46f137bf336670202.tar.gz
chromium_src-18539ee85b09a1398eb545a46f137bf336670202.tar.bz2
Fix problem with extension context menu items losing top-level icon.
If an extension adds some context menu items, then removes them all, and adds some more, instead of their actual icon the new items will get the default extension icon in context menus. This is because we use the caching feature of ImageLoadingTracker and get an immediate callback from LoadImage before we've put the request in pending_icons_. BUG=53543 TEST=Steps are outlined in bug report. Review URL: http://codereview.chromium.org/3425007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@59726 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_icon_manager.cc')
-rw-r--r--chrome/browser/extensions/extension_icon_manager.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/chrome/browser/extensions/extension_icon_manager.cc b/chrome/browser/extensions/extension_icon_manager.cc
index 23eeec5..53c8923 100644
--- a/chrome/browser/extensions/extension_icon_manager.cc
+++ b/chrome/browser/extensions/extension_icon_manager.cc
@@ -49,11 +49,13 @@ void ExtensionIconManager::LoadIcon(Extension* extension) {
ExtensionResource icon_resource = extension->GetIconResource(
Extension::EXTENSION_ICON_BITTY, ExtensionIconSet::MATCH_BIGGER);
if (!icon_resource.extension_root().empty()) {
+ // Insert into pending_icons_ first because LoadImage can call us back
+ // synchronously if the image is already cached.
+ pending_icons_.insert(extension->id());
image_tracker_.LoadImage(extension,
icon_resource,
gfx::Size(kFavIconSize, kFavIconSize),
ImageLoadingTracker::CACHE);
- pending_icons_.insert(extension->id());
}
}