| Index: chrome/browser/ui/views/action_box_menu.cc
|
| diff --git a/chrome/browser/ui/views/action_box_menu.cc b/chrome/browser/ui/views/action_box_menu.cc
|
| index 186e43e4dc124f6e71f3ff88876963d9175d865a..4e7242aa1702c0ab26708f596db22f50dd09671d 100644
|
| --- a/chrome/browser/ui/views/action_box_menu.cc
|
| +++ b/chrome/browser/ui/views/action_box_menu.cc
|
| @@ -4,22 +4,51 @@
|
|
|
| #include "chrome/browser/ui/views/action_box_menu.h"
|
|
|
| +#include "chrome/browser/extensions/extension_icon_image.h"
|
| #include "chrome/browser/ui/toolbar/action_box_menu_model.h"
|
| -#include "chrome/browser/ui/views/browser_action_view.h"
|
| -#include "grit/generated_resources.h"
|
| -#include "grit/theme_resources.h"
|
| -#include "ui/base/l10n/l10n_util.h"
|
| -#include "ui/base/resource/resource_bundle.h"
|
| -#include "ui/views/bubble/bubble_border.h"
|
| +#include "chrome/common/extensions/api/extension_action/action_info.h"
|
| +#include "chrome/common/extensions/extension.h"
|
| +#include "chrome/common/extensions/extension_constants.h"
|
| #include "ui/views/controls/button/menu_button.h"
|
| +#include "ui/views/controls/image_view.h"
|
| #include "ui/views/controls/menu/menu_runner.h"
|
| #include "ui/views/view.h"
|
|
|
| +using extensions::ActionInfo;
|
| +using extensions::Extension;
|
| +using extensions::IconImage;
|
| +
|
| +namespace {
|
| +class ExtensionImageView : public views::ImageView, public IconImage::Observer {
|
| + public:
|
| + ExtensionImageView(Profile* profile, const Extension* extension) {
|
| + const ActionInfo* page_launcher_info =
|
| + ActionInfo::GetPageLauncherInfo(extension);
|
| + icon_.reset(new IconImage(profile,
|
| + extension,
|
| + page_launcher_info->default_icon,
|
| + extension_misc::EXTENSION_ICON_ACTION,
|
| + Extension::GetDefaultIcon(true),
|
| + this));
|
| + SetImage(icon_->image_skia());
|
| + }
|
| +
|
| + private:
|
| + virtual void OnExtensionIconImageChanged(extensions::IconImage* image) {
|
| + SetImage(icon_->image_skia());
|
| + }
|
| +
|
| + scoped_ptr<extensions::IconImage> icon_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(ExtensionImageView);
|
| +};
|
| +} // namespace
|
| +
|
| // static
|
| scoped_ptr<ActionBoxMenu> ActionBoxMenu::Create(
|
| - Browser* browser,
|
| + Profile* profile,
|
| scoped_ptr<ActionBoxMenuModel> model) {
|
| - scoped_ptr<ActionBoxMenu> menu(new ActionBoxMenu(browser, model.Pass()));
|
| + scoped_ptr<ActionBoxMenu> menu(new ActionBoxMenu(profile, model.Pass()));
|
| menu->PopulateMenu();
|
| return menu.Pass();
|
| }
|
| @@ -40,9 +69,9 @@ void ActionBoxMenu::RunMenu(views::MenuButton* menu_button,
|
| views::MenuRunner::HAS_MNEMONICS));
|
| }
|
|
|
| -ActionBoxMenu::ActionBoxMenu(Browser* browser,
|
| +ActionBoxMenu::ActionBoxMenu(Profile* profile,
|
| scoped_ptr<ActionBoxMenuModel> model)
|
| - : browser_(browser),
|
| + : profile_(profile),
|
| model_(model.Pass()) {
|
| views::MenuItemView* menu = new views::MenuItemView(this);
|
| menu->set_has_icons(true);
|
| @@ -54,47 +83,6 @@ void ActionBoxMenu::ExecuteCommand(int id) {
|
| model_->ExecuteCommand(id);
|
| }
|
|
|
| -void ActionBoxMenu::InspectPopup(ExtensionAction* action) {
|
| -}
|
| -
|
| -int ActionBoxMenu::GetCurrentTabId() const {
|
| - return 0;
|
| -}
|
| -
|
| -void ActionBoxMenu::OnBrowserActionExecuted(BrowserActionButton* button) {
|
| -}
|
| -
|
| -void ActionBoxMenu::OnBrowserActionVisibilityChanged() {
|
| -}
|
| -
|
| -gfx::Point ActionBoxMenu::GetViewContentOffset() const {
|
| - return gfx::Point(0, 0);
|
| -}
|
| -
|
| -bool ActionBoxMenu::NeedToShowMultipleIconStates() const {
|
| - return false;
|
| -}
|
| -
|
| -bool ActionBoxMenu::NeedToShowTooltip() const {
|
| - return false;
|
| -}
|
| -
|
| -void ActionBoxMenu::WriteDragDataForView(views::View* sender,
|
| - const gfx::Point& press_pt,
|
| - ui::OSExchangeData* data) {
|
| -}
|
| -
|
| -int ActionBoxMenu::GetDragOperationsForView(views::View* sender,
|
| - const gfx::Point& p) {
|
| - return 0;
|
| -}
|
| -
|
| -bool ActionBoxMenu::CanStartDragForView(views::View* sender,
|
| - const gfx::Point& press_pt,
|
| - const gfx::Point& p) {
|
| - return false;
|
| -}
|
| -
|
| void ActionBoxMenu::PopulateMenu() {
|
| for (int model_index = 0; model_index < model_->GetItemCount();
|
| ++model_index) {
|
| @@ -103,11 +91,8 @@ void ActionBoxMenu::PopulateMenu() {
|
| model_.get(), model_index, model_->GetCommandIdAt(model_index));
|
| if (model_->GetTypeAt(model_index) == ui::MenuModel::TYPE_COMMAND) {
|
| if (model_->IsItemExtension(model_index)) {
|
| - menu_item->SetMargins(0, 0);
|
| - const extensions::Extension* extension =
|
| - model_->GetExtensionAt(model_index);
|
| - BrowserActionView* view = new BrowserActionView(extension,
|
| - browser_, this);
|
| + const Extension* extension = model_->GetExtensionAt(model_index);
|
| + ExtensionImageView* view = new ExtensionImageView(profile_, extension);
|
| // |menu_item| will own the |view| from now on.
|
| menu_item->SetIconView(view);
|
| }
|
|
|