extension_toolbar_menu_view.h revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_UI_VIEWS_TOOLBAR_EXTENSION_TOOLBAR_MENU_VIEW_H_ 6#define CHROME_BROWSER_UI_VIEWS_TOOLBAR_EXTENSION_TOOLBAR_MENU_VIEW_H_ 7 8#include "base/memory/weak_ptr.h" 9#include "base/scoped_observer.h" 10#include "chrome/browser/ui/views/toolbar/browser_actions_container_observer.h" 11#include "ui/views/view.h" 12 13class Browser; 14class BrowserActionsContainer; 15class WrenchMenu; 16 17// ExtensionToolbarMenuView is the view containing the extension actions that 18// overflowed from the BrowserActionsContainer, and is contained in and owned by 19// the wrench menu. 20// In the event that the WrenchMenu was opened for an Extension Action drag-and- 21// drop, this will also close the menu upon completion. 22class ExtensionToolbarMenuView : public views::View, 23 public BrowserActionsContainerObserver { 24 public: 25 ExtensionToolbarMenuView(Browser* browser, WrenchMenu* wrench_menu); 26 virtual ~ExtensionToolbarMenuView(); 27 28 // Returns whether the wrench menu should show this view. This is true when 29 // either |container_| has icons to display or the menu was opened for a drag- 30 // and-drop operation. 31 bool ShouldShow(); 32 33 // views::View: 34 virtual gfx::Size GetPreferredSize() const OVERRIDE; 35 virtual int GetHeightForWidth(int width) const OVERRIDE; 36 virtual void Layout() OVERRIDE; 37 38 private: 39 // BrowserActionsContainerObserver: 40 virtual void OnBrowserActionDragDone() OVERRIDE; 41 42 // Closes the |wrench_menu_|. 43 void CloseWrenchMenu(); 44 45 // The associated browser. 46 Browser* browser_; 47 48 // The WrenchMenu, which may need to be closed after a drag-and-drop. 49 WrenchMenu* wrench_menu_; 50 51 // The overflow BrowserActionsContainer which is nested in this view. 52 BrowserActionsContainer* container_; 53 54 ScopedObserver<BrowserActionsContainer, BrowserActionsContainerObserver> 55 browser_actions_container_observer_; 56 57 base::WeakPtrFactory<ExtensionToolbarMenuView> weak_factory_; 58 59 DISALLOW_COPY_AND_ASSIGN(ExtensionToolbarMenuView); 60}; 61 62#endif // CHROME_BROWSER_UI_VIEWS_TOOLBAR_EXTENSION_TOOLBAR_MENU_VIEW_H_ 63