blob: 64baad65c5720269f4b46717212862b6829a3e75 [file] [log] [blame]
// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_EXTENSIONS_EXTENSION_ACTION_PLATFORM_DELEGATE_H_
#define CHROME_BROWSER_UI_EXTENSIONS_EXTENSION_ACTION_PLATFORM_DELEGATE_H_
#include <memory>
#include "chrome/browser/ui/extensions/extension_popup_types.h"
#include "ui/gfx/native_ui_types.h"
class ExtensionActionViewController;
namespace extensions {
class ExtensionViewHost;
} // namespace extensions
class ExtensionActionPlatformDelegate {
public:
virtual ~ExtensionActionPlatformDelegate() = default;
// Attaches the delegate to an ExtensionActionViewController. It is called
// by the controller on its constructor.
virtual void AttachToController(
ExtensionActionViewController* controller) = 0;
// Detaches the delegate from an ExtensionActionViewController. It is called
// by the controller on its destructor.
virtual void DetachFromController() = 0;
// The following are forwarded from ToolbarActionViewController. See that
// class for the definitions.
virtual void RegisterCommand() = 0;
virtual void UnregisterCommand() = 0;
// Returns whether there is currently a popup visible.
virtual bool IsShowingPopup() const = 0;
// Hides the current popup, if one is visible.
virtual void HidePopup() = 0;
// Returns the native view for the popup, if one is active.
virtual gfx::NativeView GetPopupNativeView() = 0;
// Begins the process of showing the popup for the extension action on the
// current web contents. |by_user| is true if popup is being triggered by a
// user action.
// The popup may not be shown synchronously if the extension is hidden and
// first needs to slide itself out.
virtual void TriggerPopup(std::unique_ptr<extensions::ExtensionViewHost> host,
PopupShowAction show_action,
bool by_user,
ShowPopupCallback callback) = 0;
// Shows the context menu for the action as a fallback for performing another
// action.
virtual void ShowContextMenuAsFallback() = 0;
// Closes the overflow menu, if it was open. Returns whether or not the
// overflow menu was closed.
virtual bool CloseOverflowMenuIfOpen() = 0;
};
#endif // CHROME_BROWSER_UI_EXTENSIONS_EXTENSION_ACTION_PLATFORM_DELEGATE_H_