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

Unified Diff: chrome/browser/ui/views/toolbar/browser_action_view.h

Issue 661493004: Add infrastructure for Chrome Actions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Abstract away more extensions Created 6 years, 2 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/toolbar/browser_action_view.h
diff --git a/chrome/browser/ui/views/toolbar/browser_action_view.h b/chrome/browser/ui/views/toolbar/browser_action_view.h
index 190e545ab479aacec10071a2a20e74a4d54da040..8f864c7739d7178552acab68f704036e463b5966 100644
--- a/chrome/browser/ui/views/toolbar/browser_action_view.h
+++ b/chrome/browser/ui/views/toolbar/browser_action_view.h
@@ -5,8 +5,7 @@
#ifndef CHROME_BROWSER_UI_VIEWS_TOOLBAR_BROWSER_ACTION_VIEW_H_
#define CHROME_BROWSER_UI_VIEWS_TOOLBAR_BROWSER_ACTION_VIEW_H_
-#include "chrome/browser/ui/views/extensions/extension_action_view_controller.h"
-#include "chrome/browser/ui/views/extensions/extension_action_view_delegate.h"
+#include "chrome/browser/ui/views/toolbar/toolbar_action_view_delegate.h"
#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h"
#include "ui/views/controls/button/menu_button.h"
@@ -27,14 +26,14 @@ class Image;
////////////////////////////////////////////////////////////////////////////////
// BrowserActionView
-// A wrapper around an ExtensionActionViewController to display an extension
+// A wrapper around a ToolbarActionViewController to display a toolbar action
// action in the BrowserActionsContainer.
-// Despite its name, this class can handle either Browser Actions or Page
-// Actions.
+// Despite its name, this class can handle any type of toolbar action, including
+// extension actions (browser and page actions) and component actions.
// TODO(devlin): Rename this and BrowserActionsContainer when more of the
// toolbar redesign is done.
class BrowserActionView : public views::MenuButton,
- public ExtensionActionViewDelegate,
+ public ToolbarActionViewDelegate,
public views::ButtonListener,
public content::NotificationObserver {
public:
@@ -66,48 +65,21 @@ class BrowserActionView : public views::MenuButton,
// Returns the primary BrowserActionView associated with the given
// |extension|.
- virtual BrowserActionView* GetMainViewForExtension(
- const extensions::Extension* extension) = 0;
+ virtual BrowserActionView* GetMainViewForAction(
+ BrowserActionView* view) = 0;
protected:
virtual ~Delegate() {}
};
- // The IconObserver will receive a notification when the button's icon has
- // been updated.
- class IconObserver {
- public:
- virtual void OnIconUpdated(const gfx::ImageSkia& icon) = 0;
-
- protected:
- virtual ~IconObserver() {}
- };
-
- BrowserActionView(const extensions::Extension* extension,
- ExtensionAction* extension_action,
+ BrowserActionView(scoped_ptr<ToolbarActionViewController> view_controller,
Browser* browser,
- BrowserActionView::Delegate* delegate);
+ Delegate* delegate);
virtual ~BrowserActionView();
- const extensions::Extension* extension() const {
- return view_controller_->extension();
- }
- ExtensionAction* extension_action() {
- return view_controller_->extension_action();
- }
- ExtensionActionViewController* view_controller() {
- return view_controller_.get();
- }
- void set_icon_observer(IconObserver* icon_observer) {
- icon_observer_ = icon_observer;
- }
-
// Called to update the display to match the browser action's state.
void UpdateState();
- // Does this button's action have a popup?
- bool IsPopup();
-
// Overridden from views::View:
virtual void GetAccessibleState(ui::AXViewState* state) override;
@@ -134,13 +106,13 @@ class BrowserActionView : public views::MenuButton,
virtual scoped_ptr<views::LabelButtonBorder> CreateDefaultBorder() const
override;
- // Whether the browser action is enabled on this tab. Note that we cannot use
- // the built-in views enabled/SetEnabled because disabled views do not
- // receive drag events.
- bool IsEnabled(int tab_id) const;
+ // ToolbarActionViewDelegate: (public because called by others).
+ virtual content::WebContents* GetCurrentWebContents() const override;
- // Gets the icon of this button and its badge.
- gfx::ImageSkia GetIconWithBadge();
+ ToolbarActionViewController* view_controller() {
+ return view_controller_.get();
+ }
+ Browser* browser() { return browser_; }
// Returns button icon so it can be accessed during tests.
gfx::ImageSkia GetIconForTest();
@@ -154,16 +126,15 @@ class BrowserActionView : public views::MenuButton,
virtual void PaintChildren(gfx::Canvas* canvas,
const views::CullSet& cull_set) override;
- // ExtensionActionViewDelegate:
+ // ToolbarActionViewDelegate:
virtual views::View* GetAsView() override;
virtual bool IsShownInMenu() override;
virtual views::FocusManager* GetFocusManagerForAccelerator() override;
virtual views::Widget* GetParentForContextMenu() override;
- virtual ExtensionActionViewController* GetPreferredPopupViewController()
+ virtual ToolbarActionViewController* GetPreferredPopupViewController()
override;
virtual views::View* GetReferenceViewForPopup() override;
virtual views::MenuButton* GetContextMenuButton() override;
- virtual content::WebContents* GetCurrentWebContents() override;
virtual void HideActivePopup() override;
virtual void OnIconUpdated() override;
virtual void OnPopupShown(bool grant_tab_permissions) override;
@@ -175,21 +146,20 @@ class BrowserActionView : public views::MenuButton,
// object.
scoped_ptr<views::MenuButton::PressedLock> pressed_lock_;
- // The controller for this ExtensionAction view.
- scoped_ptr<ExtensionActionViewController> view_controller_;
+ // The controller for this toolbar action view.
+ scoped_ptr<ToolbarActionViewController> view_controller_;
+
+ // The associated browser.
+ Browser* browser_;
// Delegate that usually represents a container for BrowserActionView.
- BrowserActionView::Delegate* delegate_;
+ Delegate* delegate_;
// Used to make sure we only register the command once.
- bool called_registered_extension_command_;
+ bool called_register_command_;
content::NotificationRegistrar registrar_;
- // The observer that we need to notify when the icon of the button has been
- // updated.
- IconObserver* icon_observer_;
-
DISALLOW_COPY_AND_ASSIGN(BrowserActionView);
};

Powered by Google App Engine
This is Rietveld 408576698