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_TOOLBAR_VIEW_H_ | 5 #ifndef CHROME_BROWSER_UI_VIEWS_TOOLBAR_TOOLBAR_VIEW_H_ |
6 #define CHROME_BROWSER_UI_VIEWS_TOOLBAR_TOOLBAR_VIEW_H_ | 6 #define CHROME_BROWSER_UI_VIEWS_TOOLBAR_TOOLBAR_VIEW_H_ |
7 | 7 |
8 #include <set> | 8 #include <set> |
9 #include <string> | 9 #include <string> |
10 | 10 |
11 #include "base/memory/scoped_ptr.h" | 11 #include "base/memory/scoped_ptr.h" |
12 #include "base/observer_list.h" | 12 #include "base/observer_list.h" |
13 #include "base/prefs/pref_member.h" | 13 #include "base/prefs/pref_member.h" |
14 #include "chrome/browser/command_observer.h" | 14 #include "chrome/browser/command_observer.h" |
15 #include "chrome/browser/ui/toolbar/back_forward_menu_model.h" | 15 #include "chrome/browser/ui/toolbar/back_forward_menu_model.h" |
| 16 #include "chrome/browser/ui/toolbar/wrench_menu_badge_controller.h" |
16 #include "chrome/browser/ui/views/location_bar/location_bar_view.h" | 17 #include "chrome/browser/ui/views/location_bar/location_bar_view.h" |
17 #include "ui/base/accelerators/accelerator.h" | 18 #include "ui/base/accelerators/accelerator.h" |
18 #include "ui/views/accessible_pane_view.h" | 19 #include "ui/views/accessible_pane_view.h" |
19 #include "ui/views/controls/button/menu_button.h" | 20 #include "ui/views/controls/button/menu_button.h" |
20 #include "ui/views/controls/button/menu_button_listener.h" | 21 #include "ui/views/controls/button/menu_button_listener.h" |
21 #include "ui/views/view.h" | 22 #include "ui/views/view.h" |
22 | 23 |
23 class BackButton; | 24 class BackButton; |
24 class BrowserActionsContainer; | 25 class BrowserActionsContainer; |
25 class Browser; | 26 class Browser; |
(...skipping 16 matching lines...) Expand all Loading... |
42 | 43 |
43 // The Browser Window's toolbar. | 44 // The Browser Window's toolbar. |
44 class ToolbarView : public views::AccessiblePaneView, | 45 class ToolbarView : public views::AccessiblePaneView, |
45 public views::MenuButtonListener, | 46 public views::MenuButtonListener, |
46 public ui::AcceleratorProvider, | 47 public ui::AcceleratorProvider, |
47 public LocationBarView::Delegate, | 48 public LocationBarView::Delegate, |
48 public content::NotificationObserver, | 49 public content::NotificationObserver, |
49 public CommandObserver, | 50 public CommandObserver, |
50 public views::ButtonListener, | 51 public views::ButtonListener, |
51 public views::WidgetObserver, | 52 public views::WidgetObserver, |
52 public views::ViewTargeterDelegate { | 53 public views::ViewTargeterDelegate, |
| 54 public WrenchMenuBadgeController::Delegate { |
53 public: | 55 public: |
54 // The view class name. | 56 // The view class name. |
55 static const char kViewClassName[]; | 57 static const char kViewClassName[]; |
56 | 58 |
57 explicit ToolbarView(Browser* browser); | 59 explicit ToolbarView(Browser* browser); |
58 virtual ~ToolbarView(); | 60 virtual ~ToolbarView(); |
59 | 61 |
60 // Create the contents of the Browser Toolbar. | 62 // Create the contents of the Browser Toolbar. |
61 void Init(); | 63 void Init(); |
62 | 64 |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
185 enum DisplayMode { | 187 enum DisplayMode { |
186 DISPLAYMODE_NORMAL, // Normal toolbar with buttons, etc. | 188 DISPLAYMODE_NORMAL, // Normal toolbar with buttons, etc. |
187 DISPLAYMODE_LOCATION // Slimline toolbar showing only compact location | 189 DISPLAYMODE_LOCATION // Slimline toolbar showing only compact location |
188 // bar, used for popups. | 190 // bar, used for popups. |
189 }; | 191 }; |
190 | 192 |
191 // views::ViewTargeterDelegate: | 193 // views::ViewTargeterDelegate: |
192 virtual bool DoesIntersectRect(const views::View* target, | 194 virtual bool DoesIntersectRect(const views::View* target, |
193 const gfx::Rect& rect) const OVERRIDE; | 195 const gfx::Rect& rect) const OVERRIDE; |
194 | 196 |
195 // Returns true if we should show the upgrade recommended dot. | 197 // WrenchMenuBadgeController::Delegate: |
196 bool ShouldShowUpgradeRecommended(); | 198 virtual void UpdateBadgeSeverity(WrenchMenuBadgeController::BadgeType type, |
197 | 199 WrenchIconPainter::Severity severity, |
198 // Returns true if we should show the background page badge. | 200 bool animate) OVERRIDE; |
199 bool ShouldShowBackgroundPageBadge(); | |
200 | |
201 // Returns true if we should show the warning for incompatible software. | |
202 bool ShouldShowIncompatibilityWarning(); | |
203 | 201 |
204 // Returns the number of pixels above the location bar in non-normal display. | 202 // Returns the number of pixels above the location bar in non-normal display. |
205 int PopupTopSpacing() const; | 203 int PopupTopSpacing() const; |
206 | 204 |
207 // Given toolbar contents of size |size|, returns the total toolbar size. | 205 // Given toolbar contents of size |size|, returns the total toolbar size. |
208 gfx::Size SizeForContentSize(gfx::Size size) const; | 206 gfx::Size SizeForContentSize(gfx::Size size) const; |
209 | 207 |
210 // Loads the images for all the child views. | 208 // Loads the images for all the child views. |
211 void LoadImages(); | 209 void LoadImages(); |
212 | 210 |
213 bool is_display_mode_normal() const { | 211 bool is_display_mode_normal() const { |
214 return display_mode_ == DISPLAYMODE_NORMAL; | 212 return display_mode_ == DISPLAYMODE_NORMAL; |
215 } | 213 } |
216 | 214 |
217 // Shows the critical notification bubble against the wrench menu. | 215 // Shows the critical notification bubble against the wrench menu. |
218 void ShowCriticalNotification(); | 216 void ShowCriticalNotification(); |
219 | 217 |
220 // Shows the outdated install notification bubble against the wrench menu. | 218 // Shows the outdated install notification bubble against the wrench menu. |
221 // |auto_update_enabled| is set to true when auto-upate is on. | 219 // |auto_update_enabled| is set to true when auto-upate is on. |
222 void ShowOutdatedInstallNotification(bool auto_update_enabled); | 220 void ShowOutdatedInstallNotification(bool auto_update_enabled); |
223 | 221 |
224 // Updates the badge and the accessible name of the app menu (Wrench). | |
225 void UpdateAppMenuState(); | |
226 | |
227 // Updates the severity level on the wrench menu button. | |
228 void UpdateWrenchButtonSeverity(); | |
229 | |
230 void OnShowHomeButtonChanged(); | 222 void OnShowHomeButtonChanged(); |
231 | 223 |
232 int content_shadow_height() const; | 224 int content_shadow_height() const; |
233 | 225 |
234 // Controls | 226 // Controls |
235 BackButton* back_; | 227 BackButton* back_; |
236 ToolbarButton* forward_; | 228 ToolbarButton* forward_; |
237 ReloadButton* reload_; | 229 ReloadButton* reload_; |
238 HomeButton* home_; | 230 HomeButton* home_; |
239 LocationBarView* location_bar_; | 231 LocationBarView* location_bar_; |
240 BrowserActionsContainer* browser_actions_; | 232 BrowserActionsContainer* browser_actions_; |
241 WrenchToolbarButton* app_menu_; | 233 WrenchToolbarButton* app_menu_; |
242 Browser* browser_; | 234 Browser* browser_; |
243 | 235 |
| 236 WrenchMenuBadgeController badge_controller_; |
| 237 |
244 // Controls whether or not a home button should be shown on the toolbar. | 238 // Controls whether or not a home button should be shown on the toolbar. |
245 BooleanPrefMember show_home_button_; | 239 BooleanPrefMember show_home_button_; |
246 | 240 |
247 // The display mode used when laying out the toolbar. | 241 // The display mode used when laying out the toolbar. |
248 DisplayMode display_mode_; | 242 DisplayMode display_mode_; |
249 | 243 |
250 // Wrench model and menu. | 244 // Wrench model and menu. |
251 // Note that the menu should be destroyed before the model it uses, so the | 245 // Note that the menu should be destroyed before the model it uses, so the |
252 // menu should be listed later. | 246 // menu should be listed later. |
253 scoped_ptr<WrenchMenuModel> wrench_menu_model_; | 247 scoped_ptr<WrenchMenuModel> wrench_menu_model_; |
254 scoped_ptr<WrenchMenu> wrench_menu_; | 248 scoped_ptr<WrenchMenu> wrench_menu_; |
255 | 249 |
256 // The factory to create bubbles to warn about dangerous/suspicious | 250 // The factory to create bubbles to warn about dangerous/suspicious |
257 // extensions. | 251 // extensions. |
258 scoped_ptr<extensions::ExtensionMessageBubbleFactory> | 252 scoped_ptr<extensions::ExtensionMessageBubbleFactory> |
259 extension_message_bubble_factory_; | 253 extension_message_bubble_factory_; |
260 | 254 |
261 // A list of listeners to call when the menu opens. | 255 // A list of listeners to call when the menu opens. |
262 ObserverList<views::MenuListener> menu_listeners_; | 256 ObserverList<views::MenuListener> menu_listeners_; |
263 | 257 |
264 content::NotificationRegistrar registrar_; | 258 content::NotificationRegistrar registrar_; |
265 | 259 |
266 DISALLOW_IMPLICIT_CONSTRUCTORS(ToolbarView); | 260 DISALLOW_IMPLICIT_CONSTRUCTORS(ToolbarView); |
267 }; | 261 }; |
268 | 262 |
269 #endif // CHROME_BROWSER_UI_VIEWS_TOOLBAR_TOOLBAR_VIEW_H_ | 263 #endif // CHROME_BROWSER_UI_VIEWS_TOOLBAR_TOOLBAR_VIEW_H_ |
OLD | NEW |