| 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();
|
| }
|
|
|