19f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project// Copyright 2014 The Chromium Authors. All rights reserved. 29f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project// Use of this source code is governed by a BSD-style license that can be 39f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project// found in the LICENSE file. 49f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 59f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifndef CHROME_BROWSER_UI_VIEWS_EXTENSIONS_EXTENSION_ACTION_VIEW_DELEGATE_H_ 69f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define CHROME_BROWSER_UI_VIEWS_EXTENSIONS_EXTENSION_ACTION_VIEW_DELEGATE_H_ 79f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 89f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectnamespace content { 99f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectclass WebContents; 109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project} 119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 129f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectnamespace views { 139f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectclass FocusManager; 149f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectclass MenuButton; 159f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectclass View; 169f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectclass Widget; 179f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project} 189f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 199f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectclass ExtensionActionViewController; 209f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 219f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project// The view that surrounds an ExtensionAction and owns the 229f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project// ExtensionActionViewController. Since different actions can subclass 239f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project// different views, we don't derive views::View directly here. 249f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectclass ExtensionActionViewDelegate { 259f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project public: 269f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project // Returns |this| as a view. We need this because our subclasses implement 279f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project // different kinds of views, and inheriting View here is a really bad idea. 289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project virtual views::View* GetAsView() = 0; 299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project // Returns true if this view is being shown inside a menu. 319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project virtual bool IsShownInMenu() = 0; 329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 339f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project // Returns the FocusManager to use when registering accelerators. 349f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project virtual views::FocusManager* GetFocusManagerForAccelerator() = 0; 359f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 369f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project // Returns the parent for the associated context menu. 379f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project virtual views::Widget* GetParentForContextMenu() = 0; 389f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 399f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project // In some cases (such as when an action is shown in a menu), a substitute 409f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project // ExtensionActionViewController should be used for showing popups. This 419f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project // returns the preferred control. 429f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project virtual ExtensionActionViewController* GetPreferredPopupViewController() = 0; 439f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 449f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project // Returns the reference view for the extension action's popup. 459f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project virtual views::View* GetReferenceViewForPopup() = 0; 469f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 479f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project // Returns the MenuButton (if any) to use in showing the context menu (this 489f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project // allows views code to update the pressed state of the button). 499f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project virtual views::MenuButton* GetContextMenuButton() = 0; 509f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 519f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project // Returns the current web contents. 529f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project virtual content::WebContents* GetCurrentWebContents() = 0; 539f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 549f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project // Hides whatever popup is active (even if it's not this one). 559f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project virtual void HideActivePopup() = 0; 569f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 579f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project // Called when the icon is updated; this is forwarded from the icon factory. 589f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project virtual void OnIconUpdated() = 0; 599f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 609f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project // Called when a popup is shown. See ExecuteAction() for the definition of 619f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project // |grant_tab_permissions|. 629f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project virtual void OnPopupShown(bool grant_tab_permissions) {} 639f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 649f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project // Does any additional cleanup after the popup is closed. 659f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project virtual void CleanupPopup() {} 669f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 679f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project protected: 689f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project virtual ~ExtensionActionViewDelegate() {} 699f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 709f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 719f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif // CHROME_BROWSER_UI_VIEWS_EXTENSIONS_EXTENSION_ACTION_VIEW_DELEGATE_H_ 729f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project