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

Dynamically enable/disable WebUI tab strip

This change keys off of ui::MaterialDesignController::touch_ui().

Bug: chromium:1024013
Change-Id: Ic22087009c21a57b4616c333f652b5fa5a03f63f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1914533
Commit-Queue: Peter Boström <pbos@chromium.org>
Reviewed-by: default avatarTaylor Bergquist <tbergquist@chromium.org>
Cr-Commit-Position: refs/heads/master@{#715308}
parent 7ab60f67
...@@ -67,6 +67,10 @@ ...@@ -67,6 +67,10 @@
#include "ui/views/widget/widget_delegate.h" #include "ui/views/widget/widget_delegate.h"
#include "ui/views/window/caption_button_layout_constants.h" #include "ui/views/window/caption_button_layout_constants.h"
#if BUILDFLAG(ENABLE_WEBUI_TAB_STRIP)
#include "chrome/browser/ui/views/frame/webui_tab_strip_container_view.h"
#endif // BUILDFLAG(ENABLE_WEBUI_TAB_STRIP)
namespace { namespace {
// Color for the window title text. // Color for the window title text.
...@@ -657,7 +661,7 @@ bool BrowserNonClientFrameViewAsh::ShouldPaint() const { ...@@ -657,7 +661,7 @@ bool BrowserNonClientFrameViewAsh::ShouldPaint() const {
#if BUILDFLAG(ENABLE_WEBUI_TAB_STRIP) #if BUILDFLAG(ENABLE_WEBUI_TAB_STRIP)
// Normal windows that have a WebUI-based tab strip do not need a browser // Normal windows that have a WebUI-based tab strip do not need a browser
// frame as no tab strip is drawn on top of the browser frame. // frame as no tab strip is drawn on top of the browser frame.
if (base::FeatureList::IsEnabled(features::kWebUITabStrip) && if (WebUITabStripContainerView::UseTouchableTabStrip() &&
browser_view()->IsBrowserTypeNormal()) { browser_view()->IsBrowserTypeNormal()) {
return false; return false;
} }
......
...@@ -425,6 +425,7 @@ BrowserView::BrowserView(std::unique_ptr<Browser> browser) ...@@ -425,6 +425,7 @@ BrowserView::BrowserView(std::unique_ptr<Browser> browser)
: views::ClientView(nullptr, nullptr), browser_(std::move(browser)) { : views::ClientView(nullptr, nullptr), browser_(std::move(browser)) {
browser_->tab_strip_model()->AddObserver(this); browser_->tab_strip_model()->AddObserver(this);
immersive_mode_controller_ = chrome::CreateImmersiveModeController(); immersive_mode_controller_ = chrome::CreateImmersiveModeController();
md_observer_.Add(ui::MaterialDesignController::GetInstance());
} }
BrowserView::~BrowserView() { BrowserView::~BrowserView() {
...@@ -547,7 +548,7 @@ bool BrowserView::IsTabStripVisible() const { ...@@ -547,7 +548,7 @@ bool BrowserView::IsTabStripVisible() const {
return false; return false;
#if BUILDFLAG(ENABLE_WEBUI_TAB_STRIP) #if BUILDFLAG(ENABLE_WEBUI_TAB_STRIP)
if (base::FeatureList::IsEnabled(features::kWebUITabStrip)) if (WebUITabStripContainerView::UseTouchableTabStrip())
return false; return false;
#endif // BUILDFLAG(ENABLE_WEBUI_TAB_STRIP) #endif // BUILDFLAG(ENABLE_WEBUI_TAB_STRIP)
...@@ -2010,7 +2011,7 @@ BrowserView::GetNativeViewHostsForTopControlsSlide() const { ...@@ -2010,7 +2011,7 @@ BrowserView::GetNativeViewHostsForTopControlsSlide() const {
results.push_back(contents_web_view_->holder()); results.push_back(contents_web_view_->holder());
#if BUILDFLAG(ENABLE_WEBUI_TAB_STRIP) #if BUILDFLAG(ENABLE_WEBUI_TAB_STRIP)
if (base::FeatureList::IsEnabled(features::kWebUITabStrip)) if (webui_tab_strip_)
results.push_back(webui_tab_strip_->GetNativeViewHost()); results.push_back(webui_tab_strip_->GetNativeViewHost());
#endif // BUILDFLAG(ENABLE_WEBUI_TAB_STRIP) #endif // BUILDFLAG(ENABLE_WEBUI_TAB_STRIP)
...@@ -2591,22 +2592,6 @@ void BrowserView::InitViews() { ...@@ -2591,22 +2592,6 @@ void BrowserView::InitViews() {
contents_container_->SetLayoutManager(std::make_unique<ContentsLayoutManager>( contents_container_->SetLayoutManager(std::make_unique<ContentsLayoutManager>(
devtools_web_view_, contents_web_view_)); devtools_web_view_, contents_web_view_));
views::View* webui_tab_strip_view = nullptr;
#if BUILDFLAG(ENABLE_WEBUI_TAB_STRIP)
if (base::FeatureList::IsEnabled(features::kWebUITabStrip)) {
// We use |contents_container_| here so that enabling or disabling
// devtools won't affect the tab sizes. We still use only
// |contents_web_view_| for screenshotting and will adjust the
// screenshot accordingly. Ideally, the thumbnails should be sized
// based on a typical tab size, ignoring devtools or e.g. the
// downloads bar.
webui_tab_strip_ = top_container_->AddChildView(
std::make_unique<WebUITabStripContainerView>(browser_.get(),
contents_container_));
webui_tab_strip_view = webui_tab_strip_;
}
#endif // BUILDFLAG(ENABLE_WEBUI_TAB_STRIP)
toolbar_ = top_container_->AddChildView( toolbar_ = top_container_->AddChildView(
std::make_unique<ToolbarView>(browser_.get(), this)); std::make_unique<ToolbarView>(browser_.get(), this));
toolbar_->Init(); toolbar_->Init();
...@@ -2650,8 +2635,8 @@ void BrowserView::InitViews() { ...@@ -2650,8 +2635,8 @@ void BrowserView::InitViews() {
auto browser_view_layout = std::make_unique<BrowserViewLayout>( auto browser_view_layout = std::make_unique<BrowserViewLayout>(
std::make_unique<BrowserViewLayoutDelegateImpl>(this), std::make_unique<BrowserViewLayoutDelegateImpl>(this),
GetWidget()->GetNativeView(), this, top_container_, GetWidget()->GetNativeView(), this, top_container_,
tab_strip_region_view_, tabstrip_, webui_tab_strip_view, toolbar_, tab_strip_region_view_, tabstrip_, toolbar_, infobar_container_,
infobar_container_, contents_container_, immersive_mode_controller_.get(), contents_container_, immersive_mode_controller_.get(),
web_footer_experiment, contents_separator_); web_footer_experiment, contents_separator_);
SetLayoutManager(std::move(browser_view_layout)); SetLayoutManager(std::move(browser_view_layout));
...@@ -2668,6 +2653,33 @@ void BrowserView::InitViews() { ...@@ -2668,6 +2653,33 @@ void BrowserView::InitViews() {
frame_->OnBrowserViewInitViewsComplete(); frame_->OnBrowserViewInitViewsComplete();
frame_->GetFrameView()->UpdateMinimumSize(); frame_->GetFrameView()->UpdateMinimumSize();
using_native_frame_ = frame_->ShouldUseNativeFrame(); using_native_frame_ = frame_->ShouldUseNativeFrame();
MaybeInitializeWebUITabStrip();
}
void BrowserView::MaybeInitializeWebUITabStrip() {
#if BUILDFLAG(ENABLE_WEBUI_TAB_STRIP)
if (WebUITabStripContainerView::UseTouchableTabStrip()) {
if (!webui_tab_strip_) {
// We use |contents_container_| here so that enabling or disabling
// devtools won't affect the tab sizes. We still use only
// |contents_web_view_| for screenshotting and will adjust the
// screenshot accordingly. Ideally, the thumbnails should be sized
// based on a typical tab size, ignoring devtools or e.g. the
// downloads bar.
webui_tab_strip_ = top_container_->AddChildView(
std::make_unique<WebUITabStripContainerView>(browser_.get(),
contents_container_));
}
} else if (webui_tab_strip_) {
top_container_->RemoveChildView(webui_tab_strip_);
delete webui_tab_strip_;
webui_tab_strip_ = nullptr;
}
GetBrowserViewLayout()->set_webui_tab_strip(webui_tab_strip_);
if (toolbar_)
toolbar_->UpdateForWebUITabStrip();
#endif // BUILDFLAG(ENABLE_WEBUI_TAB_STRIP)
} }
void BrowserView::LoadingAnimationCallback() { void BrowserView::LoadingAnimationCallback() {
...@@ -3246,6 +3258,12 @@ void BrowserView::OnImmersiveModeControllerDestroyed() { ...@@ -3246,6 +3258,12 @@ void BrowserView::OnImmersiveModeControllerDestroyed() {
ReparentTopContainerForEndOfImmersive(); ReparentTopContainerForEndOfImmersive();
} }
///////////////////////////////////////////////////////////////////////////////
// BrowserView, ui::MaterialDesignControllerObserver implementation:
void BrowserView::OnTouchUiChanged() {
MaybeInitializeWebUITabStrip();
}
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// BrowserView, banners::AppBannerManager::Observer implementation: // BrowserView, banners::AppBannerManager::Observer implementation:
void BrowserView::OnAppBannerManagerChanged( void BrowserView::OnAppBannerManagerChanged(
......
...@@ -42,6 +42,8 @@ ...@@ -42,6 +42,8 @@
#include "chrome/common/buildflags.h" #include "chrome/common/buildflags.h"
#include "components/infobars/core/infobar_container.h" #include "components/infobars/core/infobar_container.h"
#include "ui/base/accelerators/accelerator.h" #include "ui/base/accelerators/accelerator.h"
#include "ui/base/material_design/material_design_controller.h"
#include "ui/base/material_design/material_design_controller_observer.h"
#include "ui/base/models/simple_menu_model.h" #include "ui/base/models/simple_menu_model.h"
#include "ui/gfx/native_widget_types.h" #include "ui/gfx/native_widget_types.h"
#include "ui/views/controls/button/button.h" #include "ui/views/controls/button/button.h"
...@@ -104,6 +106,7 @@ class BrowserView : public BrowserWindow, ...@@ -104,6 +106,7 @@ class BrowserView : public BrowserWindow,
public ExclusiveAccessBubbleViewsContext, public ExclusiveAccessBubbleViewsContext,
public extensions::ExtensionKeybindingRegistry::Delegate, public extensions::ExtensionKeybindingRegistry::Delegate,
public ImmersiveModeController::Observer, public ImmersiveModeController::Observer,
public ui::MaterialDesignControllerObserver,
public banners::AppBannerManager::Observer { public banners::AppBannerManager::Observer {
public: public:
// The browser view's class name. // The browser view's class name.
...@@ -528,6 +531,9 @@ class BrowserView : public BrowserWindow, ...@@ -528,6 +531,9 @@ class BrowserView : public BrowserWindow,
void OnImmersiveFullscreenExited() override; void OnImmersiveFullscreenExited() override;
void OnImmersiveModeControllerDestroyed() override; void OnImmersiveModeControllerDestroyed() override;
// ui::MaterialDesignControllerObserver:
void OnTouchUiChanged() override;
// banners::AppBannerManager::Observer: // banners::AppBannerManager::Observer:
void OnAppBannerManagerChanged( void OnAppBannerManagerChanged(
banners::AppBannerManager* new_manager) override; banners::AppBannerManager* new_manager) override;
...@@ -570,6 +576,9 @@ class BrowserView : public BrowserWindow, ...@@ -570,6 +576,9 @@ class BrowserView : public BrowserWindow,
// Constructs and initializes the child views. // Constructs and initializes the child views.
void InitViews(); void InitViews();
// Make sure the WebUI tab strip exists if it should.
void MaybeInitializeWebUITabStrip();
// Callback for the loading animation(s) associated with this view. // Callback for the loading animation(s) associated with this view.
void LoadingAnimationCallback(); void LoadingAnimationCallback();
...@@ -826,6 +835,10 @@ class BrowserView : public BrowserWindow, ...@@ -826,6 +835,10 @@ class BrowserView : public BrowserWindow,
std::unique_ptr<ImmersiveModeController> immersive_mode_controller_; std::unique_ptr<ImmersiveModeController> immersive_mode_controller_;
ScopedObserver<ui::MaterialDesignController,
ui::MaterialDesignControllerObserver>
md_observer_{this};
std::unique_ptr<WebContentsCloseHandler> web_contents_close_handler_; std::unique_ptr<WebContentsCloseHandler> web_contents_close_handler_;
// The class that registers for keyboard shortcuts for extension commands. // The class that registers for keyboard shortcuts for extension commands.
......
...@@ -126,7 +126,6 @@ BrowserViewLayout::BrowserViewLayout( ...@@ -126,7 +126,6 @@ BrowserViewLayout::BrowserViewLayout(
views::View* top_container, views::View* top_container,
views::View* tab_strip_region_view, views::View* tab_strip_region_view,
TabStrip* tab_strip, TabStrip* tab_strip,
views::View* webui_tab_strip,
views::View* toolbar, views::View* toolbar,
InfoBarContainerView* infobar_container, InfoBarContainerView* infobar_container,
views::View* contents_container, views::View* contents_container,
...@@ -138,7 +137,6 @@ BrowserViewLayout::BrowserViewLayout( ...@@ -138,7 +137,6 @@ BrowserViewLayout::BrowserViewLayout(
browser_view_(browser_view), browser_view_(browser_view),
top_container_(top_container), top_container_(top_container),
tab_strip_region_view_(tab_strip_region_view), tab_strip_region_view_(tab_strip_region_view),
webui_tab_strip_(webui_tab_strip),
toolbar_(toolbar), toolbar_(toolbar),
infobar_container_(infobar_container), infobar_container_(infobar_container),
contents_container_(contents_container), contents_container_(contents_container),
......
...@@ -54,7 +54,6 @@ class BrowserViewLayout : public views::LayoutManager { ...@@ -54,7 +54,6 @@ class BrowserViewLayout : public views::LayoutManager {
views::View* top_container, views::View* top_container,
views::View* tab_strip_region_view, views::View* tab_strip_region_view,
TabStrip* tab_strip, TabStrip* tab_strip,
views::View* webui_tab_strip,
views::View* toolbar, views::View* toolbar,
InfoBarContainerView* infobar_container, InfoBarContainerView* infobar_container,
views::View* contents_container, views::View* contents_container,
...@@ -65,6 +64,9 @@ class BrowserViewLayout : public views::LayoutManager { ...@@ -65,6 +64,9 @@ class BrowserViewLayout : public views::LayoutManager {
// Sets or updates views that are not available when |this| is initialized. // Sets or updates views that are not available when |this| is initialized.
void set_tab_strip(TabStrip* tab_strip) { tab_strip_ = tab_strip; } void set_tab_strip(TabStrip* tab_strip) { tab_strip_ = tab_strip; }
void set_webui_tab_strip(views::View* webui_tab_strip) {
webui_tab_strip_ = webui_tab_strip;
}
void set_bookmark_bar(BookmarkBarView* bookmark_bar) { void set_bookmark_bar(BookmarkBarView* bookmark_bar) {
bookmark_bar_ = bookmark_bar; bookmark_bar_ = bookmark_bar;
} }
...@@ -144,7 +146,6 @@ class BrowserViewLayout : public views::LayoutManager { ...@@ -144,7 +146,6 @@ class BrowserViewLayout : public views::LayoutManager {
// testing much easier. // testing much easier.
views::View* const top_container_; views::View* const top_container_;
views::View* const tab_strip_region_view_; views::View* const tab_strip_region_view_;
views::View* const webui_tab_strip_;
views::View* const toolbar_; views::View* const toolbar_;
InfoBarContainerView* const infobar_container_; InfoBarContainerView* const infobar_container_;
views::View* const contents_container_; views::View* const contents_container_;
...@@ -152,6 +153,7 @@ class BrowserViewLayout : public views::LayoutManager { ...@@ -152,6 +153,7 @@ class BrowserViewLayout : public views::LayoutManager {
views::View* const web_footer_experiment_; views::View* const web_footer_experiment_;
views::View* const contents_separator_; views::View* const contents_separator_;
views::View* webui_tab_strip_ = nullptr;
TabStrip* tab_strip_ = nullptr; TabStrip* tab_strip_ = nullptr;
BookmarkBarView* bookmark_bar_ = nullptr; BookmarkBarView* bookmark_bar_ = nullptr;
views::View* download_shelf_ = nullptr; views::View* download_shelf_ = nullptr;
......
...@@ -210,9 +210,10 @@ class BrowserViewLayoutTest : public ChromeViewsTestBase { ...@@ -210,9 +210,10 @@ class BrowserViewLayoutTest : public ChromeViewsTestBase {
std::unique_ptr<BrowserViewLayoutDelegate>(delegate_), std::unique_ptr<BrowserViewLayoutDelegate>(delegate_),
nullptr, // NativeView. nullptr, // NativeView.
nullptr, // BrowserView. nullptr, // BrowserView.
top_container_, tab_strip_region_view, tab_strip_, webui_tab_strip_, top_container_, tab_strip_region_view, tab_strip_, toolbar_,
toolbar_, infobar_container_, contents_container_, infobar_container_, contents_container_,
immersive_mode_controller_.get(), nullptr, separator_); immersive_mode_controller_.get(), nullptr, separator_);
layout_->set_webui_tab_strip(webui_tab_strip());
} }
private: private:
......
...@@ -15,11 +15,13 @@ ...@@ -15,11 +15,13 @@
#include "chrome/browser/extensions/chrome_extension_web_contents_observer.h" #include "chrome/browser/extensions/chrome_extension_web_contents_observer.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/browser/task_manager/web_contents_tags.h" #include "chrome/browser/task_manager/web_contents_tags.h"
#include "chrome/browser/themes/theme_properties.h"
#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_commands.h" #include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/layout_constants.h" #include "chrome/browser/ui/layout_constants.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/browser/ui/tabs/tab_strip_model_observer.h" #include "chrome/browser/ui/tabs/tab_strip_model_observer.h"
#include "chrome/browser/ui/ui_features.h"
#include "chrome/browser/ui/view_ids.h" #include "chrome/browser/ui/view_ids.h"
#include "chrome/browser/ui/views/frame/browser_view.h" #include "chrome/browser/ui/views/frame/browser_view.h"
#include "chrome/browser/ui/views/toolbar/toolbar_button.h" #include "chrome/browser/ui/views/toolbar/toolbar_button.h"
...@@ -133,6 +135,7 @@ WebUITabStripContainerView::WebUITabStripContainerView( ...@@ -133,6 +135,7 @@ WebUITabStripContainerView::WebUITabStripContainerView(
base::Unretained(this)), base::Unretained(this)),
base::Bind(&WebUITabStripContainerView::CloseContainer, base::Bind(&WebUITabStripContainerView::CloseContainer,
base::Unretained(this)))) { base::Unretained(this)))) {
DCHECK(UseTouchableTabStrip());
animation_.SetTweenType(gfx::Tween::Type::FAST_OUT_SLOW_IN); animation_.SetTweenType(gfx::Tween::Type::FAST_OUT_SLOW_IN);
SetVisible(false); SetVisible(false);
...@@ -170,7 +173,17 @@ WebUITabStripContainerView::WebUITabStripContainerView( ...@@ -170,7 +173,17 @@ WebUITabStripContainerView::WebUITabStripContainerView(
auto_closer_->DisableCheckTargets(); auto_closer_->DisableCheckTargets();
} }
WebUITabStripContainerView::~WebUITabStripContainerView() = default; WebUITabStripContainerView::~WebUITabStripContainerView() {
// The NewTabButton and TabCounter button both use |this| as a listener. We
// need to make sure we outlive them.
delete new_tab_button_;
delete tab_counter_;
}
bool WebUITabStripContainerView::UseTouchableTabStrip() {
return base::FeatureList::IsEnabled(features::kWebUITabStrip) &&
ui::MaterialDesignController::touch_ui();
}
views::NativeViewHost* WebUITabStripContainerView::GetNativeViewHost() { views::NativeViewHost* WebUITabStripContainerView::GetNativeViewHost() {
return web_view_->holder(); return web_view_->holder();
...@@ -228,6 +241,17 @@ std::unique_ptr<views::View> WebUITabStripContainerView::CreateTabCounter() { ...@@ -228,6 +241,17 @@ std::unique_ptr<views::View> WebUITabStripContainerView::CreateTabCounter() {
return tab_counter; return tab_counter;
} }
void WebUITabStripContainerView::UpdateButtons() {
const SkColor normal_color =
GetThemeProvider()->GetColor(ThemeProperties::COLOR_TOOLBAR_BUTTON_ICON);
if (new_tab_button_) {
new_tab_button_->SetImage(views::Button::STATE_NORMAL,
gfx::CreateVectorIcon(kAddIcon, normal_color));
}
if (tab_counter_)
tab_counter_->SetEnabledTextColors(normal_color);
}
void WebUITabStripContainerView::CloseContainer() { void WebUITabStripContainerView::CloseContainer() {
SetContainerTargetVisibility(false); SetContainerTargetVisibility(false);
} }
...@@ -256,8 +280,9 @@ bool WebUITabStripContainerView::EventShouldPropagate(const ui::Event& event) { ...@@ -256,8 +280,9 @@ bool WebUITabStripContainerView::EventShouldPropagate(const ui::Event& event) {
return true; return true;
// If the event is in the container or control buttons, let it be handled. // If the event is in the container or control buttons, let it be handled.
for (views::View* view : for (views::View* view : {static_cast<views::View*>(this),
{static_cast<views::View*>(this), new_tab_button_, tab_counter_}) { static_cast<views::View*>(new_tab_button_),
static_cast<views::View*>(tab_counter_)}) {
if (!view) if (!view)
continue; continue;
......
...@@ -43,12 +43,16 @@ class WebUITabStripContainerView : public TabStripUI::Embedder, ...@@ -43,12 +43,16 @@ class WebUITabStripContainerView : public TabStripUI::Embedder,
views::View* tab_contents_container); views::View* tab_contents_container);
~WebUITabStripContainerView() override; ~WebUITabStripContainerView() override;
static bool UseTouchableTabStrip();
views::NativeViewHost* GetNativeViewHost(); views::NativeViewHost* GetNativeViewHost();
// Control buttons. Each must only be called once. // Control buttons. Each must only be called once.
std::unique_ptr<ToolbarButton> CreateNewTabButton(); std::unique_ptr<ToolbarButton> CreateNewTabButton();
std::unique_ptr<views::View> CreateTabCounter(); std::unique_ptr<views::View> CreateTabCounter();
void UpdateButtons();
private: private:
class AutoCloser; class AutoCloser;
...@@ -85,8 +89,8 @@ class WebUITabStripContainerView : public TabStripUI::Embedder, ...@@ -85,8 +89,8 @@ class WebUITabStripContainerView : public TabStripUI::Embedder,
Browser* const browser_; Browser* const browser_;
views::WebView* const web_view_; views::WebView* const web_view_;
views::View* const tab_contents_container_; views::View* const tab_contents_container_;
views::View* new_tab_button_ = nullptr; ToolbarButton* new_tab_button_ = nullptr;
views::View* tab_counter_ = nullptr; views::LabelButton* tab_counter_ = nullptr;
int desired_height_ = 0; int desired_height_ = 0;
......
...@@ -272,14 +272,6 @@ void ToolbarView::Init() { ...@@ -272,14 +272,6 @@ void ToolbarView::Init() {
if (avatar) if (avatar)
avatar_ = AddChildView(std::move(avatar)); avatar_ = AddChildView(std::move(avatar));
#if BUILDFLAG(ENABLE_WEBUI_TAB_STRIP)
if (browser_view_->webui_tab_strip()) {
webui_new_tab_button_ =
AddChildView(browser_view_->webui_tab_strip()->CreateNewTabButton());
AddChildView(browser_view_->webui_tab_strip()->CreateTabCounter());
}
#endif // BUILDFLAG(ENABLE_WEBUI_TAB_STRIP)
app_menu_button_ = AddChildView(std::move(app_menu_button)); app_menu_button_ = AddChildView(std::move(app_menu_button));
LoadImages(); LoadImages();
...@@ -364,6 +356,19 @@ void ToolbarView::UpdateCustomTabBarVisibility(bool visible, bool animate) { ...@@ -364,6 +356,19 @@ void ToolbarView::UpdateCustomTabBarVisibility(bool visible, bool animate) {
} }
} }
void ToolbarView::UpdateForWebUITabStrip() {
#if BUILDFLAG(ENABLE_WEBUI_TAB_STRIP)
if (browser_view_->webui_tab_strip() && app_menu_button_) {
const int insertion_index = GetIndexOf(app_menu_button_);
AddChildViewAt(browser_view_->webui_tab_strip()->CreateTabCounter(),
insertion_index);
AddChildViewAt(browser_view_->webui_tab_strip()->CreateNewTabButton(),
insertion_index);
LoadImages();
}
#endif // BUILDFLAG(ENABLE_WEBUI_TAB_STRIP)
}
void ToolbarView::ResetTabState(WebContents* tab) { void ToolbarView::ResetTabState(WebContents* tab) {
if (location_bar_) if (location_bar_)
location_bar_->ResetTabState(tab); location_bar_->ResetTabState(tab);
...@@ -890,11 +895,10 @@ void ToolbarView::LoadImages() { ...@@ -890,11 +895,10 @@ void ToolbarView::LoadImages() {
if (media_button_) if (media_button_)
media_button_->UpdateIcon(); media_button_->UpdateIcon();
if (webui_new_tab_button_) { #if BUILDFLAG(ENABLE_WEBUI_TAB_STRIP)
webui_new_tab_button_->SetImage( if (browser_view_->webui_tab_strip())
views::Button::STATE_NORMAL, browser_view_->webui_tab_strip()->UpdateButtons();
gfx::CreateVectorIcon(kAddIcon, normal_color)); #endif // BUILDFLAG(ENABLE_WEBUI_TAB_STRIP)
}
if (avatar_) if (avatar_)
avatar_->UpdateIcon(); avatar_->UpdateIcon();
......
...@@ -107,6 +107,10 @@ class ToolbarView : public views::AccessiblePaneView, ...@@ -107,6 +107,10 @@ class ToolbarView : public views::AccessiblePaneView,
// transition. // transition.
void UpdateCustomTabBarVisibility(bool visible, bool animate); void UpdateCustomTabBarVisibility(bool visible, bool animate);
// We may or may not be using a WebUI tab strip. Make sure toolbar items are
// added or removed accordingly.
void UpdateForWebUITabStrip();
// Clears the current state for |tab|. // Clears the current state for |tab|.
void ResetTabState(content::WebContents* tab); void ResetTabState(content::WebContents* tab);
...@@ -274,7 +278,6 @@ class ToolbarView : public views::AccessiblePaneView, ...@@ -274,7 +278,6 @@ class ToolbarView : public views::AccessiblePaneView,
ExtensionsToolbarContainer* extensions_container_ = nullptr; ExtensionsToolbarContainer* extensions_container_ = nullptr;
media_router::CastToolbarButton* cast_ = nullptr; media_router::CastToolbarButton* cast_ = nullptr;
ToolbarAccountIconContainerView* toolbar_account_icon_container_ = nullptr; ToolbarAccountIconContainerView* toolbar_account_icon_container_ = nullptr;
ToolbarButton* webui_new_tab_button_ = nullptr;
AvatarToolbarButton* avatar_ = nullptr; AvatarToolbarButton* avatar_ = nullptr;
MediaToolbarButtonView* media_button_ = nullptr; MediaToolbarButtonView* media_button_ = nullptr;
BrowserAppMenuButton* app_menu_button_ = nullptr; BrowserAppMenuButton* app_menu_button_ = nullptr;
......
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