| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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_VIEWS_BROWSER_ACTIONS_CONTAINER_H_ | 5 #ifndef CHROME_BROWSER_VIEWS_BROWSER_ACTIONS_CONTAINER_H_ |
| 6 #define CHROME_BROWSER_VIEWS_BROWSER_ACTIONS_CONTAINER_H_ | 6 #define CHROME_BROWSER_VIEWS_BROWSER_ACTIONS_CONTAINER_H_ |
| 7 | 7 |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/task.h" | 10 #include "base/task.h" |
| 11 #include "chrome/browser/extensions/extension_toolbar_model.h" |
| 11 #include "chrome/browser/extensions/image_loading_tracker.h" | 12 #include "chrome/browser/extensions/image_loading_tracker.h" |
| 12 #include "chrome/browser/views/browser_bubble.h" | 13 #include "chrome/browser/views/browser_bubble.h" |
| 13 #include "chrome/browser/views/extensions/extension_action_context_menu.h" | 14 #include "chrome/browser/views/extensions/extension_action_context_menu.h" |
| 14 #include "chrome/common/notification_observer.h" | 15 #include "chrome/common/notification_observer.h" |
| 15 #include "chrome/common/notification_registrar.h" | 16 #include "chrome/common/notification_registrar.h" |
| 16 #include "views/controls/button/menu_button.h" | 17 #include "views/controls/button/menu_button.h" |
| 17 #include "views/controls/menu/view_menu_delegate.h" | 18 #include "views/controls/menu/view_menu_delegate.h" |
| 18 #include "views/controls/resize_gripper.h" | 19 #include "views/controls/resize_gripper.h" |
| 19 #include "views/view.h" | 20 #include "views/view.h" |
| 20 | 21 |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 208 // animation ends and we don't want the chevron to flash into view while we are | 209 // animation ends and we don't want the chevron to flash into view while we are |
| 209 // growing the container. | 210 // growing the container. |
| 210 // | 211 // |
| 211 //////////////////////////////////////////////////////////////////////////////// | 212 //////////////////////////////////////////////////////////////////////////////// |
| 212 class BrowserActionsContainer | 213 class BrowserActionsContainer |
| 213 : public views::View, | 214 : public views::View, |
| 214 public NotificationObserver, | 215 public NotificationObserver, |
| 215 public BrowserBubble::Delegate, | 216 public BrowserBubble::Delegate, |
| 216 public views::ViewMenuDelegate, | 217 public views::ViewMenuDelegate, |
| 217 public views::ResizeGripper::ResizeGripperDelegate, | 218 public views::ResizeGripper::ResizeGripperDelegate, |
| 218 public AnimationDelegate { | 219 public AnimationDelegate, |
| 220 public ExtensionToolbarModel::Observer { |
| 219 public: | 221 public: |
| 220 BrowserActionsContainer(Profile* profile, ToolbarView* toolbar); | 222 BrowserActionsContainer(Profile* profile, ToolbarView* toolbar); |
| 221 virtual ~BrowserActionsContainer(); | 223 virtual ~BrowserActionsContainer(); |
| 222 | 224 |
| 223 static void RegisterUserPrefs(PrefService* prefs); | 225 static void RegisterUserPrefs(PrefService* prefs); |
| 224 | 226 |
| 225 // Get the number of browser actions being displayed. | 227 // Get the number of browser actions being displayed. |
| 226 int num_browser_actions() const { return browser_action_views_.size(); } | 228 int num_browser_actions() const { return browser_action_views_.size(); } |
| 227 | 229 |
| 228 // Whether we are performing resize animation on the container. | 230 // Whether we are performing resize animation on the container. |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 288 void HidePopup(); | 290 void HidePopup(); |
| 289 | 291 |
| 290 // Simulate a click on a browser action button. This should only be | 292 // Simulate a click on a browser action button. This should only be |
| 291 // used by unit tests. | 293 // used by unit tests. |
| 292 void TestExecuteBrowserAction(int index); | 294 void TestExecuteBrowserAction(int index); |
| 293 | 295 |
| 294 // Retrieve the current popup. This should only be used by unit tests. | 296 // Retrieve the current popup. This should only be used by unit tests. |
| 295 ExtensionPopup* TestGetPopup() { return popup_; } | 297 ExtensionPopup* TestGetPopup() { return popup_; } |
| 296 | 298 |
| 297 private: | 299 private: |
| 298 // Adds a browser action view for the extension if it needs one. DCHECK if | 300 // ExtensionToolbarModel::Observer implementation. |
| 299 // it has already been added. | 301 virtual void BrowserActionAdded(Extension* extension, int index); |
| 300 void AddBrowserAction(Extension* extension); | 302 virtual void BrowserActionRemoved(Extension* extension); |
| 301 | |
| 302 // Removes the browser action view for an extension if it has one. DCHECK if | |
| 303 // no such view. | |
| 304 void RemoveBrowserAction(Extension* extension); | |
| 305 | 303 |
| 306 // Takes a width in pixels, calculates how many icons fit within that space | 304 // Takes a width in pixels, calculates how many icons fit within that space |
| 307 // (up to the maximum number of icons in our vector) and shaves off the | 305 // (up to the maximum number of icons in our vector) and shaves off the |
| 308 // excess pixels. | 306 // excess pixels. |
| 309 int ClampToNearestIconCount(int pixels) const; | 307 int ClampToNearestIconCount(int pixels) const; |
| 310 | 308 |
| 311 // Calculates the width of the container area NOT used to show the icons (the | 309 // Calculates the width of the container area NOT used to show the icons (the |
| 312 // controls to the left and to the right of the icons). | 310 // controls to the left and to the right of the icons). |
| 313 int WidthOfNonIconArea() const; | 311 int WidthOfNonIconArea() const; |
| 314 | 312 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 331 // The toolbar that owns us. | 329 // The toolbar that owns us. |
| 332 ToolbarView* toolbar_; | 330 ToolbarView* toolbar_; |
| 333 | 331 |
| 334 // The current popup and the button it came from. NULL if no popup. | 332 // The current popup and the button it came from. NULL if no popup. |
| 335 ExtensionPopup* popup_; | 333 ExtensionPopup* popup_; |
| 336 | 334 |
| 337 // The button that triggered the current popup (just a reference to a button | 335 // The button that triggered the current popup (just a reference to a button |
| 338 // from browser_action_views_). | 336 // from browser_action_views_). |
| 339 BrowserActionButton* popup_button_; | 337 BrowserActionButton* popup_button_; |
| 340 | 338 |
| 339 // The model that tracks the order of the toolbar icons. |
| 340 ExtensionToolbarModel* model_; |
| 341 |
| 341 // The current size of the container. | 342 // The current size of the container. |
| 342 gfx::Size container_size_; | 343 gfx::Size container_size_; |
| 343 | 344 |
| 344 // The resize gripper for the container. | 345 // The resize gripper for the container. |
| 345 views::ResizeGripper* resize_gripper_; | 346 views::ResizeGripper* resize_gripper_; |
| 346 | 347 |
| 347 // The chevron for accessing the overflow items. | 348 // The chevron for accessing the overflow items. |
| 348 views::MenuButton* chevron_; | 349 views::MenuButton* chevron_; |
| 349 | 350 |
| 350 // The animation that happens when the container snaps to place. | 351 // The animation that happens when the container snaps to place. |
| (...skipping 10 matching lines...) Expand all Loading... |
| 361 // Keeps track of the absolute pixel width the container should have when we | 362 // Keeps track of the absolute pixel width the container should have when we |
| 362 // are done animating. | 363 // are done animating. |
| 363 int animation_target_size_; | 364 int animation_target_size_; |
| 364 | 365 |
| 365 ScopedRunnableMethodFactory<BrowserActionsContainer> task_factory_; | 366 ScopedRunnableMethodFactory<BrowserActionsContainer> task_factory_; |
| 366 | 367 |
| 367 DISALLOW_COPY_AND_ASSIGN(BrowserActionsContainer); | 368 DISALLOW_COPY_AND_ASSIGN(BrowserActionsContainer); |
| 368 }; | 369 }; |
| 369 | 370 |
| 370 #endif // CHROME_BROWSER_VIEWS_BROWSER_ACTIONS_CONTAINER_H_ | 371 #endif // CHROME_BROWSER_VIEWS_BROWSER_ACTIONS_CONTAINER_H_ |
| OLD | NEW |