Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(167)

Unified Diff: chrome/browser/ui/views/action_box_menu.cc

Issue 12095023: Allow platform apps to add themselves to the Action Box. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rebase Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..9bc78bf88c269f99063f745d5fa60f3599afac29 100644
--- a/chrome/browser/ui/views/action_box_menu.cc
+++ b/chrome/browser/ui/views/action_box_menu.cc
@@ -4,22 +4,46 @@
#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:
+ 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:
sky 2013/02/11 16:37:09 nit: newline between 33/34
Rune Fevang 2013/02/11 20:52:52 Done.
+ virtual void OnExtensionIconImageChanged(extensions::IconImage* image) {
+ SetImage(icon_->image_skia());
+ }
+
+ scoped_ptr<extensions::IconImage> icon_;
+};
sky 2013/02/11 16:37:09 DISALLOW...
Rune Fevang 2013/02/11 20:52:52 Done.
+} // namespace
+
// 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 +64,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 +76,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 +84,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);
}

Powered by Google App Engine
This is Rietveld 408576698