Index: chrome/browser/extensions/extension_action_icon_factory.cc |
diff --git a/chrome/browser/extensions/extension_action_icon_factory.cc b/chrome/browser/extensions/extension_action_icon_factory.cc |
index 396fbabaf7a25a5c7892bc9d05e9c0b1635f4b46..6c5461f2262fd778324a874ca36bf3bf9b48c7e2 100644 |
--- a/chrome/browser/extensions/extension_action_icon_factory.cc |
+++ b/chrome/browser/extensions/extension_action_icon_factory.cc |
@@ -6,41 +6,25 @@ |
#include "chrome/browser/extensions/extension_action.h" |
#include "chrome/browser/profiles/profile.h" |
-#include "extensions/common/extension.h" |
-#include "extensions/common/extension_icon_set.h" |
-#include "grit/theme_resources.h" |
-#include "ui/base/resource/resource_bundle.h" |
+#include "ui/gfx/image/image.h" |
#include "ui/gfx/image/image_skia.h" |
using extensions::Extension; |
using extensions::IconImage; |
-namespace { |
- |
-gfx::ImageSkia GetDefaultIcon() { |
- return *ui::ResourceBundle::GetSharedInstance().GetImageNamed( |
- IDR_EXTENSIONS_FAVICON).ToImageSkia(); |
-} |
- |
-} // namespace |
- |
ExtensionActionIconFactory::ExtensionActionIconFactory( |
Profile* profile, |
const Extension* extension, |
- const ExtensionAction* action, |
+ ExtensionAction* action, |
Observer* observer) |
: extension_(extension), |
action_(action), |
- observer_(observer) { |
- if (action_->default_icon()) { |
- default_icon_.reset(new IconImage( |
- profile, |
- extension_, |
- *action_->default_icon(), |
- ExtensionAction::GetIconSizeForType(action_->action_type()), |
- GetDefaultIcon(), |
- this)); |
- } |
+ observer_(observer), |
+ icon_image_observer_(this) { |
+ extensions::IconImage* default_icon_image = |
+ action->LoadDefaultIconImage(*extension, profile); |
+ if (default_icon_image) |
+ icon_image_observer_.Add(default_icon_image); |
} |
ExtensionActionIconFactory::~ExtensionActionIconFactory() {} |
@@ -51,9 +35,13 @@ void ExtensionActionIconFactory::OnExtensionIconImageChanged(IconImage* image) { |
observer_->OnIconUpdated(); |
} |
+void ExtensionActionIconFactory::OnExtensionIconImageDestroyed( |
+ IconImage* image) { |
+ icon_image_observer_.RemoveAll(); |
+} |
+ |
gfx::Image ExtensionActionIconFactory::GetIcon(int tab_id) { |
- gfx::ImageSkia base_icon = GetBaseIconFromAction(tab_id); |
- return gfx::Image(base_icon); |
+ return gfx::Image(GetBaseIconFromAction(tab_id)); |
} |
gfx::ImageSkia ExtensionActionIconFactory::GetBaseIconFromAction(int tab_id) { |
@@ -65,8 +53,5 @@ gfx::ImageSkia ExtensionActionIconFactory::GetBaseIconFromAction(int tab_id) { |
if (!icon.isNull()) |
return icon; |
- if (default_icon_) |
- return default_icon_->image_skia(); |
- |
- return GetDefaultIcon(); |
+ return action_->GetDefaultIconImage(); |
} |