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

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: Use raw pointer + IconImage signature changed 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..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);
}
« no previous file with comments | « chrome/browser/ui/views/action_box_menu.h ('k') | chrome/browser/ui/views/location_bar/action_box_button_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698