Commit f0ebbf7a authored by Devlin Cronin's avatar Devlin Cronin Committed by Commit Bot

[Extensions Menu] Move ShowToolbarActionPopup() to ExtensionsContainer

ShowToolbarActionPopup() is called from the ExtensionActionAPI to
trigger a popup from a couple different call sites. Move the method to
ExtensionsContainer, and implement it on ExtensionsToolbarContainer.

Bug: 984654, 985834
Change-Id: I37033f132f01546e0b26f3f84cf7a8c15d922ab9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1927214Reviewed-by: default avatarPeter Boström <pbos@chromium.org>
Commit-Queue: Devlin <rdevlin.cronin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#721648}
parent 67c535e8
...@@ -27,13 +27,14 @@ ...@@ -27,13 +27,14 @@
#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/browser_finder.h"
#include "chrome/browser/ui/browser_window.h" #include "chrome/browser/ui/browser_window.h"
#include "chrome/browser/ui/extensions/extensions_container.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/browser/ui/toolbar/toolbar_actions_bar.h"
#include "chrome/common/extensions/api/extension_action/action_info.h" #include "chrome/common/extensions/api/extension_action/action_info.h"
#include "content/public/browser/notification_service.h" #include "content/public/browser/notification_service.h"
#include "extensions/browser/api/declarative_net_request/constants.h" #include "extensions/browser/api/declarative_net_request/constants.h"
#include "extensions/browser/event_router.h" #include "extensions/browser/event_router.h"
#include "extensions/browser/extension_host.h" #include "extensions/browser/extension_host.h"
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_util.h" #include "extensions/browser/extension_util.h"
#include "extensions/browser/notification_types.h" #include "extensions/browser/notification_types.h"
...@@ -125,12 +126,12 @@ bool ExtensionActionAPI::ShowExtensionActionPopup( ...@@ -125,12 +126,12 @@ bool ExtensionActionAPI::ShowExtensionActionPopup(
if (!browser->SupportsWindowFeature(Browser::FEATURE_TOOLBAR)) if (!browser->SupportsWindowFeature(Browser::FEATURE_TOOLBAR))
return false; return false;
ToolbarActionsBar* toolbar_actions_bar = ExtensionsContainer* extensions_container =
browser->window()->GetToolbarActionsBar(); browser->window()->GetExtensionsContainer();
// ToolbarActionsBar could be null if, e.g., this is a popup window with no // The ExtensionsContainer could be null if, e.g., this is a popup window with
// toolbar. // no toolbar.
return toolbar_actions_bar && return extensions_container &&
toolbar_actions_bar->ShowToolbarActionPopup( extensions_container->ShowToolbarActionPopup(
extension->id(), grant_active_tab_permissions); extension->id(), grant_active_tab_permissions);
} }
......
...@@ -50,6 +50,12 @@ class ExtensionsContainer { ...@@ -50,6 +50,12 @@ class ExtensionsContainer {
bool is_sticky, bool is_sticky,
const base::Closure& closure) = 0; const base::Closure& closure) = 0;
// Shows the popup for the action with |id|, returning true if a popup is
// shown. If |grant_active_tab| is true, then active tab permissions should
// be given to the action (only do this if this is through a user action).
virtual bool ShowToolbarActionPopup(const std::string& action_id,
bool grant_active_tab) = 0;
// Displays the given |bubble| once the toolbar is no longer animating. // Displays the given |bubble| once the toolbar is no longer animating.
virtual void ShowToolbarActionBubble( virtual void ShowToolbarActionBubble(
std::unique_ptr<ToolbarActionsBarBubbleDelegate> bubble) = 0; std::unique_ptr<ToolbarActionsBarBubbleDelegate> bubble) = 0;
......
...@@ -149,11 +149,6 @@ class ToolbarActionsBar : public ExtensionsContainer, ...@@ -149,11 +149,6 @@ class ToolbarActionsBar : public ExtensionsContainer,
// Updates all the toolbar actions. // Updates all the toolbar actions.
void Update(); void Update();
// Shows the popup for the action with |id|, returning true if a popup is
// shown. If |grant_active_tab| is true, then active tab permissions should
// be given to the action (only do this if this is through a user action).
bool ShowToolbarActionPopup(const std::string& id, bool grant_active_tab);
// Sets the width for the overflow menu rows. // Sets the width for the overflow menu rows.
void SetOverflowRowWidth(int width); void SetOverflowRowWidth(int width);
...@@ -241,6 +236,8 @@ class ToolbarActionsBar : public ExtensionsContainer, ...@@ -241,6 +236,8 @@ class ToolbarActionsBar : public ExtensionsContainer,
void PopOutAction(ToolbarActionViewController* action, void PopOutAction(ToolbarActionViewController* action,
bool is_sticky, bool is_sticky,
const base::Closure& closure) override; const base::Closure& closure) override;
bool ShowToolbarActionPopup(const std::string& id,
bool grant_active_tab) override;
void ShowToolbarActionBubble( void ShowToolbarActionBubble(
std::unique_ptr<ToolbarActionsBarBubbleDelegate> bubble) override; std::unique_ptr<ToolbarActionsBarBubbleDelegate> bubble) override;
void ShowToolbarActionBubbleAsync( void ShowToolbarActionBubbleAsync(
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include "base/numerics/ranges.h" #include "base/numerics/ranges.h"
#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_window.h"
#include "chrome/browser/ui/layout_constants.h" #include "chrome/browser/ui/layout_constants.h"
#include "chrome/browser/ui/toolbar/toolbar_action_view_controller.h" #include "chrome/browser/ui/toolbar/toolbar_action_view_controller.h"
#include "chrome/browser/ui/views/extensions/browser_action_drag_data.h" #include "chrome/browser/ui/views/extensions/browser_action_drag_data.h"
...@@ -133,6 +134,17 @@ void ExtensionsToolbarContainer::PopOutAction( ...@@ -133,6 +134,17 @@ void ExtensionsToolbarContainer::PopOutAction(
->RunOrQueueAction(closure); ->RunOrQueueAction(closure);
} }
bool ExtensionsToolbarContainer::ShowToolbarActionPopup(
const std::string& action_id,
bool grant_active_tab) {
// Don't override another popup, and only show in the active window.
if (popped_out_action_ || !browser_->window()->IsActive())
return false;
ToolbarActionViewController* action = GetActionForId(action_id);
return action && action->ExecuteAction(grant_active_tab);
}
void ExtensionsToolbarContainer::ShowToolbarActionBubble( void ExtensionsToolbarContainer::ShowToolbarActionBubble(
std::unique_ptr<ToolbarActionsBarBubbleDelegate> controller) { std::unique_ptr<ToolbarActionsBarBubbleDelegate> controller) {
auto iter = icons_.find(controller->GetAnchorActionId()); auto iter = icons_.find(controller->GetAnchorActionId());
......
...@@ -74,6 +74,8 @@ class ExtensionsToolbarContainer : public ToolbarIconContainerView, ...@@ -74,6 +74,8 @@ class ExtensionsToolbarContainer : public ToolbarIconContainerView,
void PopOutAction(ToolbarActionViewController* action, void PopOutAction(ToolbarActionViewController* action,
bool is_sticky, bool is_sticky,
const base::Closure& closure) override; const base::Closure& closure) override;
bool ShowToolbarActionPopup(const std::string& action_id,
bool grant_active_tab) override;
void ShowToolbarActionBubble( void ShowToolbarActionBubble(
std::unique_ptr<ToolbarActionsBarBubbleDelegate> bubble) override; std::unique_ptr<ToolbarActionsBarBubbleDelegate> bubble) override;
void ShowToolbarActionBubbleAsync( void ShowToolbarActionBubbleAsync(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment