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

Unified Diff: chrome/browser/views/browser_actions_container.h

Issue 306044: Refactor implementation of BrowserActions, and add support for (Closed)
Patch Set: Make it work on linux too Created 11 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
« no previous file with comments | « chrome/browser/tab_contents/tab_contents.cc ('k') | chrome/browser/views/browser_actions_container.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/views/browser_actions_container.h
diff --git a/chrome/browser/views/browser_actions_container.h b/chrome/browser/views/browser_actions_container.h
index e365bcd9e52a2f4bea20cf36ab5c56d14d6537ce..756de0ae9fba9879da8680575006355819069488 100644
--- a/chrome/browser/views/browser_actions_container.h
+++ b/chrome/browser/views/browser_actions_container.h
@@ -17,8 +17,7 @@
class BrowserActionsContainer;
class Extension;
-class ExtensionAction;
-class ExtensionActionState;
+class ExtensionAction2;
class ExtensionPopup;
class Profile;
class ToolbarView;
@@ -27,20 +26,21 @@ class ToolbarView;
// BrowserActionButton
// The BrowserActionButton is a specialization of the MenuButton class.
-// It acts on a ExtensionAction, in this case a BrowserAction and handles
+// It acts on a ExtensionAction2, in this case a BrowserAction and handles
// loading the image for the button asynchronously on the file thread to
class BrowserActionButton : public views::MenuButton,
public views::ButtonListener,
public ImageLoadingTracker::Observer,
public NotificationObserver {
public:
- BrowserActionButton(ExtensionAction* browser_action,
- Extension* extension,
- BrowserActionsContainer* panel);
+ BrowserActionButton(Extension* extension, BrowserActionsContainer* panel);
~BrowserActionButton();
- const ExtensionAction& browser_action() const { return *browser_action_; }
- ExtensionActionState* browser_action_state() { return browser_action_state_; }
+ ExtensionAction2* browser_action() const { return browser_action_; }
+ Extension* extension() { return extension_; }
+
+ // Called to update the display to match the browser action's state.
+ void UpdateState();
// Overriden from views::View. Return a 0-inset so the icon can draw all the
// way to the edge of the view if it wants.
@@ -76,15 +76,15 @@ class BrowserActionButton : public views::MenuButton,
virtual void PopupDidHide();
private:
- // Called to update the display to match the browser action's state.
- void OnStateUpdated();
+ // If the image from the browser action needs to be loaded, load it.
+ void LoadImage();
- // The browser action this view represents. The ExtensionAction is not owned
+ // The browser action this view represents. The ExtensionAction2 is not owned
// by this class.
- ExtensionAction* browser_action_;
+ ExtensionAction2* browser_action_;
- // The state of our browser action. Not owned by this class.
- ExtensionActionState* browser_action_state_;
+ // The extension associated with the browser action we're displaying.
+ Extension* extension_;
// The icons representing different states for the browser action.
std::vector<SkBitmap> browser_action_icons_;
@@ -110,9 +110,7 @@ class BrowserActionButton : public views::MenuButton,
class BrowserActionView : public views::View {
public:
- BrowserActionView(ExtensionAction* browser_action, Extension* extension,
- BrowserActionsContainer* panel);
-
+ BrowserActionView(Extension* extension, BrowserActionsContainer* panel);
BrowserActionButton* button() { return button_; }
private:
@@ -121,6 +119,9 @@ class BrowserActionView : public views::View {
// Override PaintChildren so that we can paint the badge on top of children.
virtual void PaintChildren(gfx::Canvas* canvas);
+ // The container for this view.
+ BrowserActionsContainer* panel_;
+
// The button this view contains.
BrowserActionButton* button_;
};
@@ -143,6 +144,9 @@ class BrowserActionsContainer : public views::View,
// Get the number of browser actions being displayed.
int num_browser_actions() { return browser_action_views_.size(); }
+ // Returns the current tab's ID, or -1 if there is no current tab.
+ int GetCurrentTabId();
+
// Get a particular browser action view.
BrowserActionView* GetBrowserActionViewAt(int index) {
return browser_action_views_[index];
@@ -192,6 +196,14 @@ class BrowserActionsContainer : public views::View,
ExtensionPopup* TestGetPopup() { return popup_; }
private:
+ // Adds a browser action view for the extension if it needs one. DCHECK if
+ // it has already been added.
+ void AddBrowserAction(Extension* extension);
+
+ // Removes the browser action view for an extension if it has one. DCHECK if
+ // no such view.
+ void RemoveBrowserAction(Extension* extension);
+
// The vector of browser actions (icons/image buttons for each action).
std::vector<BrowserActionView*> browser_action_views_;
« no previous file with comments | « chrome/browser/tab_contents/tab_contents.cc ('k') | chrome/browser/views/browser_actions_container.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698