| 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
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8638159b6e6ac4706b5594972218227e184f8401
|
| --- /dev/null
|
| +++ b/chrome/browser/extensions/extension_action_icon_factory.cc
|
| @@ -0,0 +1,66 @@
|
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "chrome/browser/extensions/extension_action_icon_factory.h"
|
| +
|
| +#include "chrome/common/extensions/extension.h"
|
| +#include "chrome/common/extensions/extension_action.h"
|
| +#include "chrome/common/extensions/extension_icon_set.h"
|
| +#include "grit/theme_resources.h"
|
| +#include "ui/base/resource/resource_bundle.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(
|
| + const Extension* extension,
|
| + const ExtensionAction* action,
|
| + Observer* observer)
|
| + : extension_(extension),
|
| + action_(action),
|
| + observer_(observer) {
|
| + if (action_->default_icon()) {
|
| + default_icon_.reset(new IconImage(
|
| + extension_,
|
| + *action_->default_icon(),
|
| + ExtensionAction::GetIconSizeForType(action_->action_type()),
|
| + GetDefaultIcon(),
|
| + this));
|
| + }
|
| +}
|
| +
|
| +ExtensionActionIconFactory::~ExtensionActionIconFactory() {}
|
| +
|
| +// extensions::IconImage::Observer overrides.
|
| +void ExtensionActionIconFactory::OnExtensionIconImageChanged(IconImage* image) {
|
| + if (observer_)
|
| + observer_->OnIconUpdated();
|
| +}
|
| +
|
| +gfx::Image ExtensionActionIconFactory::GetIcon(int tab_id) {
|
| + gfx::ImageSkia base_icon = GetBaseIconFromAction(tab_id);
|
| + return action_->ApplyAttentionAndAnimation(base_icon, tab_id);
|
| +}
|
| +
|
| +gfx::ImageSkia ExtensionActionIconFactory::GetBaseIconFromAction(int tab_id) {
|
| + gfx::ImageSkia icon = action_->GetExplicitlySetIcon(tab_id);
|
| + if (!icon.isNull())
|
| + return icon;
|
| +
|
| + if (default_icon_.get())
|
| + return default_icon_->image_skia();
|
| +
|
| + return GetDefaultIcon();
|
| +}
|
| +
|
|
|