1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file. 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef CHROME_BROWSER_UI_VIEWS_TOOLBAR_EXTENSION_TOOLBAR_MENU_VIEW_H_ 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define CHROME_BROWSER_UI_VIEWS_TOOLBAR_EXTENSION_TOOLBAR_MENU_VIEW_H_ 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/memory/weak_ptr.h" 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/scoped_observer.h" 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/ui/views/toolbar/browser_actions_container_observer.h" 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "ui/views/view.h" 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass Browser; 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass BrowserActionsContainer; 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class WrenchMenu; 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// ExtensionToolbarMenuView is the view containing the extension actions that 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// overflowed from the BrowserActionsContainer, and is contained in and owned by 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// the wrench menu. 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// In the event that the WrenchMenu was opened for an Extension Action drag-and- 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// drop, this will also close the menu upon completion. 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class ExtensionToolbarMenuView : public views::View, 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) public BrowserActionsContainerObserver { 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public: 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ExtensionToolbarMenuView(Browser* browser, WrenchMenu* wrench_menu); 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual ~ExtensionToolbarMenuView(); 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Returns whether the wrench menu should show this view. This is true when 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // either |container_| has icons to display or the menu was opened for a drag- 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // and-drop operation. 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool ShouldShow(); 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // views::View: 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual gfx::Size GetPreferredSize() const OVERRIDE; 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual int GetHeightForWidth(int width) const OVERRIDE; 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void Layout() OVERRIDE; 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private: 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // BrowserActionsContainerObserver: 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void OnBrowserActionDragDone() OVERRIDE; 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Closes the |wrench_menu_|. 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void CloseWrenchMenu(); 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // The associated browser. 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch Browser* browser_; 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // The WrenchMenu, which may need to be closed after a drag-and-drop. 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) WrenchMenu* wrench_menu_; 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // The overflow BrowserActionsContainer which is nested in this view. 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch BrowserActionsContainer* container_; 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ScopedObserver<BrowserActionsContainer, BrowserActionsContainerObserver> 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) browser_actions_container_observer_; 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::WeakPtrFactory<ExtensionToolbarMenuView> weak_factory_; 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DISALLOW_COPY_AND_ASSIGN(ExtensionToolbarMenuView); 60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}; 61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif // CHROME_BROWSER_UI_VIEWS_TOOLBAR_EXTENSION_TOOLBAR_MENU_VIEW_H_ 63