extension_action_view_delegate.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_EXTENSIONS_EXTENSION_ACTION_VIEW_DELEGATE_H_ 6#define CHROME_BROWSER_UI_VIEWS_EXTENSIONS_EXTENSION_ACTION_VIEW_DELEGATE_H_ 7 8namespace content { 9class WebContents; 10} 11 12namespace views { 13class FocusManager; 14class MenuButton; 15class View; 16class Widget; 17} 18 19class ExtensionActionViewController; 20 21// The view that surrounds an ExtensionAction and owns the 22// ExtensionActionViewController. Since different actions can subclass 23// different views, we don't derive views::View directly here. 24class ExtensionActionViewDelegate { 25 public: 26 // Returns |this| as a view. We need this because our subclasses implement 27 // different kinds of views, and inheriting View here is a really bad idea. 28 virtual views::View* GetAsView() = 0; 29 30 // Returns true if this view is being shown inside a menu. 31 virtual bool IsShownInMenu() = 0; 32 33 // Returns the FocusManager to use when registering accelerators. 34 virtual views::FocusManager* GetFocusManagerForAccelerator() = 0; 35 36 // Returns the parent for the associated context menu. 37 virtual views::Widget* GetParentForContextMenu() = 0; 38 39 // In some cases (such as when an action is shown in a menu), a substitute 40 // ExtensionActionViewController should be used for showing popups. This 41 // returns the preferred control. 42 virtual ExtensionActionViewController* GetPreferredPopupViewController() = 0; 43 44 // Returns the reference view for the extension action's popup. 45 virtual views::View* GetReferenceViewForPopup() = 0; 46 47 // Returns the MenuButton (if any) to use in showing the context menu (this 48 // allows views code to update the pressed state of the button). 49 virtual views::MenuButton* GetContextMenuButton() = 0; 50 51 // Returns the current web contents. 52 virtual content::WebContents* GetCurrentWebContents() = 0; 53 54 // Hides whatever popup is active (even if it's not this one). 55 virtual void HideActivePopup() = 0; 56 57 // Called when the icon is updated; this is forwarded from the icon factory. 58 virtual void OnIconUpdated() = 0; 59 60 // Called when a popup is shown. See ExecuteAction() for the definition of 61 // |grant_tab_permissions|. 62 virtual void OnPopupShown(bool grant_tab_permissions) {} 63 64 // Does any additional cleanup after the popup is closed. 65 virtual void CleanupPopup() {} 66 67 protected: 68 virtual ~ExtensionActionViewDelegate() {} 69}; 70 71#endif // CHROME_BROWSER_UI_VIEWS_EXTENSIONS_EXTENSION_ACTION_VIEW_DELEGATE_H_ 72