OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_UI_VIEWS_TOOLBAR_BROWSER_ACTION_VIEW_H_ | 5 #ifndef CHROME_BROWSER_UI_VIEWS_TOOLBAR_BROWSER_ACTION_VIEW_H_ |
6 #define CHROME_BROWSER_UI_VIEWS_TOOLBAR_BROWSER_ACTION_VIEW_H_ | 6 #define CHROME_BROWSER_UI_VIEWS_TOOLBAR_BROWSER_ACTION_VIEW_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "chrome/browser/extensions/extension_action_icon_factory.h" | 10 #include "chrome/browser/extensions/extension_action_icon_factory.h" |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
104 | 104 |
105 // The BrowserActionButton is a specialization of the MenuButton class. | 105 // The BrowserActionButton is a specialization of the MenuButton class. |
106 // It acts on a ExtensionAction, in this case a BrowserAction and handles | 106 // It acts on a ExtensionAction, in this case a BrowserAction and handles |
107 // loading the image for the button asynchronously on the file thread. | 107 // loading the image for the button asynchronously on the file thread. |
108 class BrowserActionButton : public views::MenuButton, | 108 class BrowserActionButton : public views::MenuButton, |
109 public views::ButtonListener, | 109 public views::ButtonListener, |
110 public views::ContextMenuController, | 110 public views::ContextMenuController, |
111 public content::NotificationObserver, | 111 public content::NotificationObserver, |
112 public ExtensionActionIconFactory::Observer { | 112 public ExtensionActionIconFactory::Observer { |
113 public: | 113 public: |
114 // The IconObserver will receive a notification when the button's icon has | |
115 // been updated. | |
116 class IconObserver { | |
117 public: | |
118 virtual ~IconObserver() {} | |
119 virtual void OnIconUpdated(const gfx::ImageSkia& icon) = 0; | |
120 }; | |
121 | |
122 void set_icon_observer(IconObserver* icon_observer) { | |
123 icon_observer_ = icon_observer; | |
124 } | |
Finnur
2014/02/19 11:46:31
nit: constructor should appear ahead of this funct
| |
125 | |
114 BrowserActionButton(const extensions::Extension* extension, | 126 BrowserActionButton(const extensions::Extension* extension, |
115 Browser* browser_, | 127 Browser* browser_, |
116 BrowserActionView::Delegate* delegate); | 128 BrowserActionView::Delegate* delegate); |
117 | 129 |
118 // Call this instead of delete. | 130 // Call this instead of delete. |
119 void Destroy(); | 131 void Destroy(); |
120 | 132 |
121 ExtensionAction* browser_action() const { return browser_action_; } | 133 ExtensionAction* browser_action() const { return browser_action_; } |
122 const extensions::Extension* extension() { return extension_; } | 134 const extensions::Extension* extension() { return extension_; } |
123 | 135 |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
170 void SetButtonNotPushed(); | 182 void SetButtonNotPushed(); |
171 | 183 |
172 // Whether the browser action is enabled on this tab. Note that we cannot use | 184 // Whether the browser action is enabled on this tab. Note that we cannot use |
173 // the built-in views enabled/SetEnabled because disabled views do not | 185 // the built-in views enabled/SetEnabled because disabled views do not |
174 // receive drag events. | 186 // receive drag events. |
175 bool IsEnabled(int tab_id) const; | 187 bool IsEnabled(int tab_id) const; |
176 | 188 |
177 // Returns icon factory for the button. | 189 // Returns icon factory for the button. |
178 ExtensionActionIconFactory& icon_factory() { return icon_factory_; } | 190 ExtensionActionIconFactory& icon_factory() { return icon_factory_; } |
179 | 191 |
192 // Gets the icon of this button and its badge. | |
193 gfx::ImageSkia GetIconWithBadge(); | |
194 | |
180 // Returns button icon so it can be accessed during tests. | 195 // Returns button icon so it can be accessed during tests. |
181 gfx::ImageSkia GetIconForTest(); | 196 gfx::ImageSkia GetIconForTest(); |
182 | 197 |
183 protected: | 198 protected: |
184 // Overridden from views::View: | 199 // Overridden from views::View: |
185 virtual void ViewHierarchyChanged( | 200 virtual void ViewHierarchyChanged( |
186 const ViewHierarchyChangedDetails& details) OVERRIDE; | 201 const ViewHierarchyChangedDetails& details) OVERRIDE; |
187 | 202 |
188 private: | 203 private: |
189 virtual ~BrowserActionButton(); | 204 virtual ~BrowserActionButton(); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
223 | 238 |
224 content::NotificationRegistrar registrar_; | 239 content::NotificationRegistrar registrar_; |
225 | 240 |
226 // The extension key binding accelerator this browser action is listening for | 241 // The extension key binding accelerator this browser action is listening for |
227 // (to show the popup). | 242 // (to show the popup). |
228 scoped_ptr<ui::Accelerator> keybinding_; | 243 scoped_ptr<ui::Accelerator> keybinding_; |
229 | 244 |
230 // Responsible for running the menu. | 245 // Responsible for running the menu. |
231 scoped_ptr<views::MenuRunner> menu_runner_; | 246 scoped_ptr<views::MenuRunner> menu_runner_; |
232 | 247 |
248 // The observer that we need to notify when the icon of the button has been | |
249 // updated. | |
250 IconObserver* icon_observer_; | |
251 | |
233 friend class base::DeleteHelper<BrowserActionButton>; | 252 friend class base::DeleteHelper<BrowserActionButton>; |
234 | 253 |
235 DISALLOW_COPY_AND_ASSIGN(BrowserActionButton); | 254 DISALLOW_COPY_AND_ASSIGN(BrowserActionButton); |
236 }; | 255 }; |
237 | 256 |
238 #endif // CHROME_BROWSER_UI_VIEWS_TOOLBAR_BROWSER_ACTION_VIEW_H_ | 257 #endif // CHROME_BROWSER_UI_VIEWS_TOOLBAR_BROWSER_ACTION_VIEW_H_ |
OLD | NEW |