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 "chrome/browser/ui/views/extensions/extension_action_view_controller.h" | 8 #include "chrome/browser/ui/views/extensions/extension_action_view_controller.h" |
9 #include "chrome/browser/ui/views/extensions/extension_action_view_delegate.h" | 9 #include "chrome/browser/ui/views/extensions/extension_action_view_delegate.h" |
10 #include "content/public/browser/notification_observer.h" | 10 #include "content/public/browser/notification_observer.h" |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 virtual bool ShownInsideMenu() const = 0; | 49 virtual bool ShownInsideMenu() const = 0; |
50 | 50 |
51 // Notifies that a drag completed. Note this will only happen if the view | 51 // Notifies that a drag completed. Note this will only happen if the view |
52 // wasn't removed during the drag-and-drop process (i.e., not when there | 52 // wasn't removed during the drag-and-drop process (i.e., not when there |
53 // was a move in the browser actions, since we re-create the views each | 53 // was a move in the browser actions, since we re-create the views each |
54 // time we re-order the browser actions). | 54 // time we re-order the browser actions). |
55 virtual void OnBrowserActionViewDragDone() = 0; | 55 virtual void OnBrowserActionViewDragDone() = 0; |
56 | 56 |
57 // Returns the view of the browser actions overflow menu to use as a | 57 // Returns the view of the browser actions overflow menu to use as a |
58 // reference point for a popup when this view isn't visible. | 58 // reference point for a popup when this view isn't visible. |
59 virtual views::View* GetOverflowReferenceView() = 0; | 59 virtual views::MenuButton* GetOverflowReferenceView() = 0; |
60 | 60 |
61 // Sets the delegate's active popup owner to be |popup_owner|. | 61 // Sets the delegate's active popup owner to be |popup_owner|. |
62 virtual void SetPopupOwner(BrowserActionView* popup_owner) = 0; | 62 virtual void SetPopupOwner(BrowserActionView* popup_owner) = 0; |
63 | 63 |
64 // Hides the active popup of the delegate, if one exists. | 64 // Hides the active popup of the delegate, if one exists. |
65 virtual void HideActivePopup() = 0; | 65 virtual void HideActivePopup() = 0; |
66 | 66 |
67 // Returns the primary BrowserActionView associated with the given | 67 // Returns the primary BrowserActionView associated with the given |
68 // |extension|. | 68 // |extension|. |
69 virtual BrowserActionView* GetMainViewForExtension( | 69 virtual BrowserActionView* GetMainViewForExtension( |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
127 // case) is dismissed. | 127 // case) is dismissed. |
128 virtual bool Activate() OVERRIDE; | 128 virtual bool Activate() OVERRIDE; |
129 virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE; | 129 virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE; |
130 virtual void OnMouseReleased(const ui::MouseEvent& event) OVERRIDE; | 130 virtual void OnMouseReleased(const ui::MouseEvent& event) OVERRIDE; |
131 virtual void OnMouseExited(const ui::MouseEvent& event) OVERRIDE; | 131 virtual void OnMouseExited(const ui::MouseEvent& event) OVERRIDE; |
132 virtual bool OnKeyReleased(const ui::KeyEvent& event) OVERRIDE; | 132 virtual bool OnKeyReleased(const ui::KeyEvent& event) OVERRIDE; |
133 virtual void OnGestureEvent(ui::GestureEvent* event) OVERRIDE; | 133 virtual void OnGestureEvent(ui::GestureEvent* event) OVERRIDE; |
134 virtual scoped_ptr<views::LabelButtonBorder> CreateDefaultBorder() const | 134 virtual scoped_ptr<views::LabelButtonBorder> CreateDefaultBorder() const |
135 OVERRIDE; | 135 OVERRIDE; |
136 | 136 |
137 // Notifications when to set button state to pushed/not pushed (for when the | |
138 // popup/context menu is hidden or shown by the container). | |
139 void SetButtonPushed(); | |
140 void SetButtonNotPushed(); | |
141 | |
142 // Whether the browser action is enabled on this tab. Note that we cannot use | 137 // Whether the browser action is enabled on this tab. Note that we cannot use |
143 // the built-in views enabled/SetEnabled because disabled views do not | 138 // the built-in views enabled/SetEnabled because disabled views do not |
144 // receive drag events. | 139 // receive drag events. |
145 bool IsEnabled(int tab_id) const; | 140 bool IsEnabled(int tab_id) const; |
146 | 141 |
147 // Gets the icon of this button and its badge. | 142 // Gets the icon of this button and its badge. |
148 gfx::ImageSkia GetIconWithBadge(); | 143 gfx::ImageSkia GetIconWithBadge(); |
149 | 144 |
150 // Returns button icon so it can be accessed during tests. | 145 // Returns button icon so it can be accessed during tests. |
151 gfx::ImageSkia GetIconForTest(); | 146 gfx::ImageSkia GetIconForTest(); |
152 | 147 |
153 private: | 148 private: |
154 // Overridden from views::View: | 149 // Overridden from views::View: |
155 virtual void ViewHierarchyChanged( | 150 virtual void ViewHierarchyChanged( |
156 const ViewHierarchyChangedDetails& details) OVERRIDE; | 151 const ViewHierarchyChangedDetails& details) OVERRIDE; |
157 virtual void OnDragDone() OVERRIDE; | 152 virtual void OnDragDone() OVERRIDE; |
158 virtual gfx::Size GetPreferredSize() const OVERRIDE; | 153 virtual gfx::Size GetPreferredSize() const OVERRIDE; |
159 virtual void PaintChildren(gfx::Canvas* canvas, | 154 virtual void PaintChildren(gfx::Canvas* canvas, |
160 const views::CullSet& cull_set) OVERRIDE; | 155 const views::CullSet& cull_set) OVERRIDE; |
161 | 156 |
162 // ExtensionActionViewDelegate: | 157 // ExtensionActionViewDelegate: |
163 virtual views::View* GetAsView() OVERRIDE; | 158 virtual views::View* GetAsView() OVERRIDE; |
164 virtual bool IsShownInMenu() OVERRIDE; | 159 virtual bool IsShownInMenu() OVERRIDE; |
165 virtual views::FocusManager* GetFocusManagerForAccelerator() OVERRIDE; | 160 virtual views::FocusManager* GetFocusManagerForAccelerator() OVERRIDE; |
166 virtual views::Widget* GetParentForContextMenu() OVERRIDE; | 161 virtual views::Widget* GetParentForContextMenu() OVERRIDE; |
167 virtual ExtensionActionViewController* GetPreferredPopupViewController() | 162 virtual ExtensionActionViewController* GetPreferredPopupViewController() |
168 OVERRIDE; | 163 OVERRIDE; |
169 virtual views::View* GetReferenceViewForPopup() OVERRIDE; | 164 virtual views::View* GetReferenceViewForPopup() OVERRIDE; |
| 165 virtual views::MenuButton* GetContextMenuButton() OVERRIDE; |
170 virtual content::WebContents* GetCurrentWebContents() OVERRIDE; | 166 virtual content::WebContents* GetCurrentWebContents() OVERRIDE; |
171 virtual void HideActivePopup() OVERRIDE; | 167 virtual void HideActivePopup() OVERRIDE; |
172 virtual void OnIconUpdated() OVERRIDE; | 168 virtual void OnIconUpdated() OVERRIDE; |
173 virtual void OnPopupShown(bool grant_tab_permissions) OVERRIDE; | 169 virtual void OnPopupShown(bool grant_tab_permissions) OVERRIDE; |
174 virtual void CleanupPopup() OVERRIDE; | 170 virtual void CleanupPopup() OVERRIDE; |
175 virtual void OnWillShowContextMenus() OVERRIDE; | |
176 virtual void OnContextMenuDone() OVERRIDE; | |
177 | 171 |
178 // The controller for this ExtensionAction view. | 172 // The controller for this ExtensionAction view. |
179 scoped_ptr<ExtensionActionViewController> view_controller_; | 173 scoped_ptr<ExtensionActionViewController> view_controller_; |
180 | 174 |
181 // Delegate that usually represents a container for BrowserActionView. | 175 // Delegate that usually represents a container for BrowserActionView. |
182 BrowserActionView::Delegate* delegate_; | 176 BrowserActionView::Delegate* delegate_; |
183 | 177 |
184 // Used to make sure we only register the command once. | 178 // Used to make sure we only register the command once. |
185 bool called_registered_extension_command_; | 179 bool called_registered_extension_command_; |
186 | 180 |
187 content::NotificationRegistrar registrar_; | 181 content::NotificationRegistrar registrar_; |
188 | 182 |
189 // The observer that we need to notify when the icon of the button has been | 183 // The observer that we need to notify when the icon of the button has been |
190 // updated. | 184 // updated. |
191 IconObserver* icon_observer_; | 185 IconObserver* icon_observer_; |
192 | 186 |
| 187 // A lock to keep the MenuButton pressed when a menu or popup is visible. |
| 188 scoped_ptr<views::MenuButton::PressedLock> pressed_lock_; |
| 189 |
193 DISALLOW_COPY_AND_ASSIGN(BrowserActionView); | 190 DISALLOW_COPY_AND_ASSIGN(BrowserActionView); |
194 }; | 191 }; |
195 | 192 |
196 #endif // CHROME_BROWSER_UI_VIEWS_TOOLBAR_BROWSER_ACTION_VIEW_H_ | 193 #endif // CHROME_BROWSER_UI_VIEWS_TOOLBAR_BROWSER_ACTION_VIEW_H_ |
OLD | NEW |