| 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_ACTIONS_CONTAINER_H_ | 5 #ifndef CHROME_BROWSER_UI_VIEWS_TOOLBAR_BROWSER_ACTIONS_CONTAINER_H_ |
| 6 #define CHROME_BROWSER_UI_VIEWS_TOOLBAR_BROWSER_ACTIONS_CONTAINER_H_ | 6 #define CHROME_BROWSER_UI_VIEWS_TOOLBAR_BROWSER_ACTIONS_CONTAINER_H_ |
| 7 | 7 |
| 8 #include "base/observer_list.h" | 8 #include "base/observer_list.h" |
| 9 #include "chrome/browser/extensions/extension_keybinding_registry.h" | 9 #include "chrome/browser/extensions/extension_keybinding_registry.h" |
| 10 #include "chrome/browser/extensions/extension_toolbar_model.h" | 10 #include "chrome/browser/extensions/extension_toolbar_model.h" |
| 11 #include "chrome/browser/ui/views/extensions/browser_action_overflow_menu_contro
ller.h" | 11 #include "chrome/browser/ui/views/extensions/browser_action_overflow_menu_contro
ller.h" |
| 12 #include "chrome/browser/ui/views/toolbar/browser_action_view.h" | 12 #include "chrome/browser/ui/views/toolbar/browser_action_view.h" |
| 13 #include "content/public/browser/notification_observer.h" | |
| 14 #include "ui/gfx/animation/animation_delegate.h" | 13 #include "ui/gfx/animation/animation_delegate.h" |
| 15 #include "ui/gfx/animation/tween.h" | 14 #include "ui/gfx/animation/tween.h" |
| 16 #include "ui/views/controls/button/menu_button_listener.h" | 15 #include "ui/views/controls/button/menu_button_listener.h" |
| 17 #include "ui/views/controls/resize_area_delegate.h" | 16 #include "ui/views/controls/resize_area_delegate.h" |
| 18 #include "ui/views/drag_controller.h" | 17 #include "ui/views/drag_controller.h" |
| 19 #include "ui/views/view.h" | 18 #include "ui/views/view.h" |
| 20 | 19 |
| 21 class BrowserActionsContainerObserver; | 20 class BrowserActionsContainerObserver; |
| 22 class ExtensionKeybindingRegistryViews; | 21 class ExtensionKeybindingRegistryViews; |
| 23 class ExtensionPopup; | 22 class ExtensionPopup; |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 153 const views::View* chevron() const { return chevron_; } | 152 const views::View* chevron() const { return chevron_; } |
| 154 | 153 |
| 155 // Returns the profile this container is associated with. | 154 // Returns the profile this container is associated with. |
| 156 Profile* profile() const { return profile_; } | 155 Profile* profile() const { return profile_; } |
| 157 | 156 |
| 158 // Get a particular browser action view. | 157 // Get a particular browser action view. |
| 159 BrowserActionView* GetBrowserActionViewAt(int index) { | 158 BrowserActionView* GetBrowserActionViewAt(int index) { |
| 160 return browser_action_views_[index]; | 159 return browser_action_views_[index]; |
| 161 } | 160 } |
| 162 | 161 |
| 163 // Retrieve the BrowserActionView for a certain extension |action|. | 162 // Returns the BrowserActionView* associated with the given |extension|, or |
| 164 BrowserActionView* GetBrowserActionView(ExtensionAction* action); | 163 // NULL if none exists. |
| 164 BrowserActionView* GetViewForExtension( |
| 165 const extensions::Extension* extension); |
| 165 | 166 |
| 166 // Update the views to reflect the state of the browser action icons. | 167 // Update the views to reflect the state of the browser action icons. |
| 167 void RefreshBrowserActionViews(); | 168 void RefreshBrowserActionViews(); |
| 168 | 169 |
| 169 // Sets up the browser action view vector. | 170 // Sets up the browser action view vector. |
| 170 void CreateBrowserActionViews(); | 171 void CreateBrowserActionViews(); |
| 171 | 172 |
| 172 // Delete all browser action views. | 173 // Delete all browser action views. |
| 173 void DeleteBrowserActionViews(); | 174 void DeleteBrowserActionViews(); |
| 174 | 175 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 191 void RemoveObserver(BrowserActionsContainerObserver* observer); | 192 void RemoveObserver(BrowserActionsContainerObserver* observer); |
| 192 | 193 |
| 193 // Overridden from views::View: | 194 // Overridden from views::View: |
| 194 virtual gfx::Size GetPreferredSize() const OVERRIDE; | 195 virtual gfx::Size GetPreferredSize() const OVERRIDE; |
| 195 virtual gfx::Size GetMinimumSize() const OVERRIDE; | 196 virtual gfx::Size GetMinimumSize() const OVERRIDE; |
| 196 virtual void Layout() OVERRIDE; | 197 virtual void Layout() OVERRIDE; |
| 197 virtual bool GetDropFormats(int* formats, | 198 virtual bool GetDropFormats(int* formats, |
| 198 std::set<ui::OSExchangeData::CustomFormat>* custom_formats) OVERRIDE; | 199 std::set<ui::OSExchangeData::CustomFormat>* custom_formats) OVERRIDE; |
| 199 virtual bool AreDropTypesRequired() OVERRIDE; | 200 virtual bool AreDropTypesRequired() OVERRIDE; |
| 200 virtual bool CanDrop(const ui::OSExchangeData& data) OVERRIDE; | 201 virtual bool CanDrop(const ui::OSExchangeData& data) OVERRIDE; |
| 201 virtual void OnDragEntered(const ui::DropTargetEvent& event) OVERRIDE; | |
| 202 virtual int OnDragUpdated(const ui::DropTargetEvent& event) OVERRIDE; | 202 virtual int OnDragUpdated(const ui::DropTargetEvent& event) OVERRIDE; |
| 203 virtual void OnDragExited() OVERRIDE; | 203 virtual void OnDragExited() OVERRIDE; |
| 204 virtual int OnPerformDrop(const ui::DropTargetEvent& event) OVERRIDE; | 204 virtual int OnPerformDrop(const ui::DropTargetEvent& event) OVERRIDE; |
| 205 virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE; | 205 virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE; |
| 206 | 206 |
| 207 // Overridden from views::MenuButtonListener: | 207 // Overridden from views::MenuButtonListener: |
| 208 virtual void OnMenuButtonClicked(views::View* source, | 208 virtual void OnMenuButtonClicked(views::View* source, |
| 209 const gfx::Point& point) OVERRIDE; | 209 const gfx::Point& point) OVERRIDE; |
| 210 | 210 |
| 211 // Overridden from views::DragController: | 211 // Overridden from views::DragController: |
| (...skipping 22 matching lines...) Expand all Loading... |
| 234 virtual bool ShownInsideMenu() const OVERRIDE; | 234 virtual bool ShownInsideMenu() const OVERRIDE; |
| 235 virtual void OnBrowserActionViewDragDone() OVERRIDE; | 235 virtual void OnBrowserActionViewDragDone() OVERRIDE; |
| 236 virtual views::View* GetOverflowReferenceView() OVERRIDE; | 236 virtual views::View* GetOverflowReferenceView() OVERRIDE; |
| 237 virtual void SetPopupOwner(BrowserActionView* popup_owner) OVERRIDE; | 237 virtual void SetPopupOwner(BrowserActionView* popup_owner) OVERRIDE; |
| 238 virtual void HideActivePopup() OVERRIDE; | 238 virtual void HideActivePopup() OVERRIDE; |
| 239 | 239 |
| 240 // Overridden from extension::ExtensionKeybindingRegistry::Delegate: | 240 // Overridden from extension::ExtensionKeybindingRegistry::Delegate: |
| 241 virtual extensions::ActiveTabPermissionGranter* | 241 virtual extensions::ActiveTabPermissionGranter* |
| 242 GetActiveTabPermissionGranter() OVERRIDE; | 242 GetActiveTabPermissionGranter() OVERRIDE; |
| 243 | 243 |
| 244 // Moves a browser action with |id| to |new_index|. | |
| 245 void MoveBrowserAction(const std::string& extension_id, size_t new_index); | |
| 246 | |
| 247 // Retrieve the current popup. This should only be used by unit tests. | 244 // Retrieve the current popup. This should only be used by unit tests. |
| 248 ExtensionPopup* TestGetPopup(); | 245 ExtensionPopup* TestGetPopup(); |
| 249 | 246 |
| 250 // Set how many icons the container should show. This should only be used by | 247 // Set how many icons the container should show. This should only be used by |
| 251 // unit tests. | 248 // unit tests. |
| 252 void TestSetIconVisibilityCount(size_t icons); | 249 void TestSetIconVisibilityCount(size_t icons); |
| 253 | 250 |
| 254 // During testing we can disable animations by setting this flag to true, | 251 // During testing we can disable animations by setting this flag to true, |
| 255 // so that the bar resizes instantly, instead of having to poll it while it | 252 // so that the bar resizes instantly, instead of having to poll it while it |
| 256 // animates to open/closed status. | 253 // animates to open/closed status. |
| 257 static bool disable_animations_during_testing_; | 254 static bool disable_animations_during_testing_; |
| 258 | 255 |
| 259 protected: | 256 protected: |
| 260 // Overridden from views::View: | 257 // Overridden from views::View: |
| 261 virtual void ViewHierarchyChanged( | 258 virtual void ViewHierarchyChanged( |
| 262 const ViewHierarchyChangedDetails& details) OVERRIDE; | 259 const ViewHierarchyChangedDetails& details) OVERRIDE; |
| 263 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; | 260 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; |
| 264 virtual void OnThemeChanged() OVERRIDE; | 261 virtual void OnThemeChanged() OVERRIDE; |
| 265 | 262 |
| 266 private: | 263 private: |
| 267 friend class BrowserActionView; // So it can access IconWidth(). | 264 friend class BrowserActionView; // So it can access IconWidth(). |
| 268 friend class ShowFolderMenuTask; | |
| 269 | 265 |
| 270 // A struct representing the position at which an action will be dropped. | 266 // A struct representing the position at which an action will be dropped. |
| 271 struct DropPosition; | 267 struct DropPosition; |
| 272 | 268 |
| 273 typedef std::vector<BrowserActionView*> BrowserActionViews; | 269 typedef std::vector<BrowserActionView*> BrowserActionViews; |
| 274 | 270 |
| 275 // Returns the width of an icon, optionally with its padding. | 271 // Returns the width of an icon, optionally with its padding. |
| 276 static int IconWidth(bool include_padding); | 272 static int IconWidth(bool include_padding); |
| 277 | 273 |
| 278 // Returns the height of an icon. | 274 // Returns the height of an icon. |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 335 void Animate(gfx::Tween::Type type, size_t num_visible_icons); | 331 void Animate(gfx::Tween::Type type, size_t num_visible_icons); |
| 336 | 332 |
| 337 // Returns true if this extension should be shown in this toolbar. This can | 333 // Returns true if this extension should be shown in this toolbar. This can |
| 338 // return false if we are in an incognito window and the extension is disabled | 334 // return false if we are in an incognito window and the extension is disabled |
| 339 // for incognito. | 335 // for incognito. |
| 340 bool ShouldDisplayBrowserAction(const extensions::Extension* extension) const; | 336 bool ShouldDisplayBrowserAction(const extensions::Extension* extension) const; |
| 341 | 337 |
| 342 // Return the index of the first visible icon. | 338 // Return the index of the first visible icon. |
| 343 size_t GetFirstVisibleIconIndex() const; | 339 size_t GetFirstVisibleIconIndex() const; |
| 344 | 340 |
| 345 // Returns the BrowserActionView* associated with the given |extension|, or | |
| 346 // NULL if none exists. | |
| 347 BrowserActionView* GetViewForExtension( | |
| 348 const extensions::Extension* extension); | |
| 349 | |
| 350 // Returns the number of icons that this container should draw. This differs | 341 // Returns the number of icons that this container should draw. This differs |
| 351 // from the model's GetVisibleIconCount if this container is for the overflow. | 342 // from the model's GetVisibleIconCount if this container is for the overflow. |
| 352 size_t GetIconCount() const; | 343 size_t GetIconCount() const; |
| 353 | 344 |
| 354 // Whether this container is in overflow mode (as opposed to in 'main' | 345 // Whether this container is in overflow mode (as opposed to in 'main' |
| 355 // mode). See class comments for details on the difference. | 346 // mode). See class comments for details on the difference. |
| 356 bool in_overflow_mode() const { return main_container_ != NULL; } | 347 bool in_overflow_mode() const { return main_container_ != NULL; } |
| 357 | 348 |
| 358 // The vector of browser actions (icons/image buttons for each action). Note | 349 // The vector of browser actions (icons/image buttons for each action). Note |
| 359 // that not every BrowserAction in the ToolbarModel will necessarily be in | 350 // that not every BrowserAction in the ToolbarModel will necessarily be in |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 412 // are done animating. | 403 // are done animating. |
| 413 int animation_target_size_; | 404 int animation_target_size_; |
| 414 | 405 |
| 415 // The DropPosition for the current drag-and-drop operation, or NULL if there | 406 // The DropPosition for the current drag-and-drop operation, or NULL if there |
| 416 // is none. | 407 // is none. |
| 417 scoped_ptr<DropPosition> drop_position_; | 408 scoped_ptr<DropPosition> drop_position_; |
| 418 | 409 |
| 419 // The class that registers for keyboard shortcuts for extension commands. | 410 // The class that registers for keyboard shortcuts for extension commands. |
| 420 scoped_ptr<ExtensionKeybindingRegistryViews> extension_keybinding_registry_; | 411 scoped_ptr<ExtensionKeybindingRegistryViews> extension_keybinding_registry_; |
| 421 | 412 |
| 422 base::WeakPtrFactory<BrowserActionsContainer> task_factory_; | |
| 423 | |
| 424 // Handles delayed showing of the overflow menu when hovering. | 413 // Handles delayed showing of the overflow menu when hovering. |
| 425 base::WeakPtrFactory<BrowserActionsContainer> show_menu_task_factory_; | 414 base::WeakPtrFactory<BrowserActionsContainer> show_menu_task_factory_; |
| 426 | 415 |
| 427 ObserverList<BrowserActionsContainerObserver> observers_; | 416 ObserverList<BrowserActionsContainerObserver> observers_; |
| 428 | 417 |
| 429 DISALLOW_COPY_AND_ASSIGN(BrowserActionsContainer); | 418 DISALLOW_COPY_AND_ASSIGN(BrowserActionsContainer); |
| 430 }; | 419 }; |
| 431 | 420 |
| 432 #endif // CHROME_BROWSER_UI_VIEWS_TOOLBAR_BROWSER_ACTIONS_CONTAINER_H_ | 421 #endif // CHROME_BROWSER_UI_VIEWS_TOOLBAR_BROWSER_ACTIONS_CONTAINER_H_ |
| OLD | NEW |