Chromium Code Reviews| 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..f859cbcc511cea4811464dc79fd64d031fc1cbfe 100644 |
| --- a/chrome/browser/ui/views/action_box_menu.cc |
| +++ b/chrome/browser/ui/views/action_box_menu.cc |
| @@ -4,22 +4,47 @@ |
| #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 { |
|
not at google - send to devlin
2013/02/01 16:39:47
1 line
Rune Fevang
2013/02/01 22:12:54
Done.
|
| + public: |
| + explicit ExtensionImageView(const Extension* extension) { |
| + const ActionInfo* page_launcher_info = |
| + ActionInfo::GetPageLauncherInfo(extension); |
| + icon_.reset(new IconImage(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_; |
| +}; |
| +} |
|
not at google - send to devlin
2013/02/01 16:39:47
// namespace
Rune Fevang
2013/02/01 22:12:54
Done.
|
| + |
| // static |
| scoped_ptr<ActionBoxMenu> ActionBoxMenu::Create( |
| - Browser* browser, |
| scoped_ptr<ActionBoxMenuModel> model) { |
| - scoped_ptr<ActionBoxMenu> menu(new ActionBoxMenu(browser, model.Pass())); |
| + scoped_ptr<ActionBoxMenu> menu(new ActionBoxMenu(model.Pass())); |
| menu->PopulateMenu(); |
| return menu.Pass(); |
| } |
| @@ -40,10 +65,8 @@ void ActionBoxMenu::RunMenu(views::MenuButton* menu_button, |
| views::MenuRunner::HAS_MNEMONICS)); |
| } |
| -ActionBoxMenu::ActionBoxMenu(Browser* browser, |
| - scoped_ptr<ActionBoxMenuModel> model) |
| - : browser_(browser), |
| - model_(model.Pass()) { |
| +ActionBoxMenu::ActionBoxMenu(scoped_ptr<ActionBoxMenuModel> model) |
| + : model_(model.Pass()) { |
| views::MenuItemView* menu = new views::MenuItemView(this); |
| menu->set_has_icons(true); |
| @@ -54,47 +77,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 +85,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(extension); |
| // |menu_item| will own the |view| from now on. |
| menu_item->SetIconView(view); |
| } |