Commit ad8b22bd authored by Peter Boström's avatar Peter Boström Committed by Commit Bot

Replace ::GetBrowserActionsContainer calls

As BrowserActionsContainer disappears with the introduction of
ExtensionsToolbarContainer this CL adds CHECKs to make sure that that
experiment is not enabled whenever GetBrowserActionsContainer gets
called.

This change adds |GetToolbarActionViewForId| and
|GetDefaultExtensionDialogAnchorView| to the ToolbarButtonProvider
interface so requests for those do not need to go through
BrowserActionsContainer.

As a a side effect ExtensionUninstallDialogView can now anchor to
pinned extensions when this experiment is enabled (as they are visible),
but like the extension-installed dialog they cannot pop out the
extension to display the dialog anchor yet.

Bug: chromium:985834
Change-Id: I0bbc8da1d501846e72fc06987343dd758e83f922
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1731301Reviewed-by: default avatarCaroline Rising <corising@chromium.org>
Commit-Queue: Peter Boström <pbos@chromium.org>
Cr-Commit-Position: refs/heads/master@{#683383}
parent e283a10a
......@@ -83,7 +83,7 @@ views::View* AnchorViewForBrowser(ExtensionInstalledBubble* controller,
// visible, and will fall back on the default case on showing the
// installed dialog anchored to the general extensions toolbar button.
reference_view =
browser_view->toolbar()->extensions_container()->GetViewForId(
browser_view->toolbar_button_provider()->GetToolbarActionViewForId(
controller->extension()->id());
} else {
BrowserActionsContainer* container =
......@@ -107,12 +107,8 @@ views::View* AnchorViewForBrowser(ExtensionInstalledBubble* controller,
// Default case.
if (!reference_view || !reference_view->GetVisible()) {
if (base::FeatureList::IsEnabled(features::kExtensionsToolbarMenu)) {
return browser_view->toolbar()
->extensions_container()
->extensions_button();
}
return browser_view->toolbar_button_provider()->GetAppMenuButton();
return browser_view->toolbar_button_provider()
->GetDefaultExtensionDialogAnchorView();
}
return reference_view;
}
......
......@@ -45,12 +45,11 @@ ToolbarActionView* GetExtensionAnchorView(const std::string& extension_id,
if (!browser_view)
return nullptr;
DCHECK(browser_view->toolbar_button_provider());
BrowserActionsContainer* const browser_actions_container =
browser_view->toolbar_button_provider()->GetBrowserActionsContainer();
if (!browser_actions_container)
return nullptr;
// TODO(pbos): Pop out extensions so that they can become visible before
// showing the uninstall dialog.
ToolbarActionView* const reference_view =
browser_actions_container->GetViewForId(extension_id);
browser_view->toolbar_button_provider()->GetToolbarActionViewForId(
extension_id);
return reference_view && reference_view->GetVisible() ? reference_view
: nullptr;
}
......
......@@ -13,6 +13,7 @@
#include "chrome/browser/ui/content_settings/content_setting_image_model.h"
#include "chrome/browser/ui/extensions/hosted_app_browser_controller.h"
#include "chrome/browser/ui/layout_constants.h"
#include "chrome/browser/ui/ui_features.h"
#include "chrome/browser/ui/view_ids.h"
#include "chrome/browser/ui/views/frame/browser_view.h"
#include "chrome/browser/ui/views/frame/hosted_app_menu_button.h"
......@@ -364,9 +365,23 @@ HostedAppButtonContainer::GetWebContentsForPageActionIconView() {
BrowserActionsContainer*
HostedAppButtonContainer::GetBrowserActionsContainer() {
CHECK(!base::FeatureList::IsEnabled(features::kExtensionsToolbarMenu));
return browser_actions_container_;
}
ToolbarActionView* HostedAppButtonContainer::GetToolbarActionViewForId(
const std::string& id) {
// TODO(pbos): Implement this for kExtensionsToolbarMenu.
CHECK(!base::FeatureList::IsEnabled(features::kExtensionsToolbarMenu));
return browser_actions_container_->GetViewForId(id);
}
views::View* HostedAppButtonContainer::GetDefaultExtensionDialogAnchorView() {
// TODO(pbos): Implement this for kExtensionsToolbarMenu.
CHECK(!base::FeatureList::IsEnabled(features::kExtensionsToolbarMenu));
return GetAppMenuButton();
}
OmniboxPageActionIconContainerView*
HostedAppButtonContainer::GetOmniboxPageActionIconContainerView() {
return omnibox_page_action_icon_container_view_;
......
......@@ -114,6 +114,8 @@ class HostedAppButtonContainer : public views::AccessiblePaneView,
// ToolbarButtonProvider:
BrowserActionsContainer* GetBrowserActionsContainer() override;
ToolbarActionView* GetToolbarActionViewForId(const std::string& id) override;
views::View* GetDefaultExtensionDialogAnchorView() override;
OmniboxPageActionIconContainerView* GetOmniboxPageActionIconContainerView()
override;
AppMenuButton* GetAppMenuButton() override;
......
......@@ -8,6 +8,7 @@
class AppMenuButton;
class BrowserActionsContainer;
class OmniboxPageActionIconContainerView;
class ToolbarActionView;
namespace gfx {
class Rect;
......@@ -23,8 +24,17 @@ class View;
class ToolbarButtonProvider {
public:
// Gets the browser actions container.
// TODO(pbos): Transition callers off of this function.
virtual BrowserActionsContainer* GetBrowserActionsContainer() = 0;
// Gets the associated ToolbarActionView for this id.
virtual ToolbarActionView* GetToolbarActionViewForId(
const std::string& id) = 0;
// Gets the default view to use as an anchor for extension dialogs if the
// ToolbarActionView is not visible or available.
virtual views::View* GetDefaultExtensionDialogAnchorView() = 0;
// Gets the omnibox page action icon container.
virtual OmniboxPageActionIconContainerView*
GetOmniboxPageActionIconContainerView() = 0;
......
......@@ -784,9 +784,23 @@ ui::NativeTheme* ToolbarView::GetViewNativeTheme() {
// ToolbarButtonProvider:
BrowserActionsContainer* ToolbarView::GetBrowserActionsContainer() {
CHECK(!base::FeatureList::IsEnabled(features::kExtensionsToolbarMenu));
return browser_actions_;
}
ToolbarActionView* ToolbarView::GetToolbarActionViewForId(
const std::string& id) {
if (extensions_container_)
return extensions_container_->GetViewForId(id);
return GetBrowserActionsContainer()->GetViewForId(id);
}
views::View* ToolbarView::GetDefaultExtensionDialogAnchorView() {
if (extensions_container_)
return extensions_container_;
return GetAppMenuButton();
}
OmniboxPageActionIconContainerView*
ToolbarView::GetOmniboxPageActionIconContainerView() {
return location_bar_->omnibox_page_action_icon_container_view();
......
......@@ -227,6 +227,8 @@ class ToolbarView : public views::AccessiblePaneView,
// ToolbarButtonProvider:
BrowserActionsContainer* GetBrowserActionsContainer() override;
ToolbarActionView* GetToolbarActionViewForId(const std::string& id) override;
views::View* GetDefaultExtensionDialogAnchorView() override;
OmniboxPageActionIconContainerView* GetOmniboxPageActionIconContainerView()
override;
AppMenuButton* GetAppMenuButton() override;
......
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