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

Fix extensions-button visibility in PWA windows

Adds an GetIconColor method to ToolbarIconContainerView and a method to
override it. The latter is used by WebAppFrameToolbarView to set the
icon color.

Before this the icon color was never set for the container hosted inside
WebAppFrameToolbarView so the icon image was never loaded -> never
visible.

Bug: chromium:1006162
Change-Id: Ic3566461f1bd7319944060db766b91ac38adef87
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1900090
Commit-Queue: Caroline Rising <corising@chromium.org>
Reviewed-by: default avatarCaroline Rising <corising@chromium.org>
Auto-Submit: Peter Boström <pbos@chromium.org>
Cr-Commit-Position: refs/heads/master@{#712753}
parent 12a8b63b
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "chrome/app/vector_icons/vector_icons.h" #include "chrome/app/vector_icons/vector_icons.h"
#include "chrome/browser/themes/theme_properties.h" #include "chrome/browser/themes/theme_properties.h"
#include "chrome/browser/ui/views/extensions/extensions_menu_view.h" #include "chrome/browser/ui/views/extensions/extensions_menu_view.h"
#include "chrome/browser/ui/views/extensions/extensions_toolbar_container.h"
#include "chrome/grit/generated_resources.h" #include "chrome/grit/generated_resources.h"
#include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_registry.h"
#include "ui/base/l10n/l10n_util.h" #include "ui/base/l10n/l10n_util.h"
...@@ -18,7 +19,7 @@ ...@@ -18,7 +19,7 @@
ExtensionsToolbarButton::ExtensionsToolbarButton( ExtensionsToolbarButton::ExtensionsToolbarButton(
Browser* browser, Browser* browser,
ExtensionsContainer* extensions_container) ExtensionsToolbarContainer* extensions_container)
: ToolbarButton(this), : ToolbarButton(this),
browser_(browser), browser_(browser),
extensions_container_(extensions_container) { extensions_container_(extensions_container) {
...@@ -32,10 +33,9 @@ void ExtensionsToolbarButton::UpdateIcon() { ...@@ -32,10 +33,9 @@ void ExtensionsToolbarButton::UpdateIcon() {
const int icon_size = ui::MaterialDesignController::touch_ui() const int icon_size = ui::MaterialDesignController::touch_ui()
? kDefaultTouchableIconSize ? kDefaultTouchableIconSize
: kDefaultIconSize; : kDefaultIconSize;
const SkColor normal_color =
GetThemeProvider()->GetColor(ThemeProperties::COLOR_TOOLBAR_BUTTON_ICON);
SetImage(views::Button::STATE_NORMAL, SetImage(views::Button::STATE_NORMAL,
gfx::CreateVectorIcon(kExtensionIcon, icon_size, normal_color)); gfx::CreateVectorIcon(kExtensionIcon, icon_size,
extensions_container_->GetIconColor()));
} }
void ExtensionsToolbarButton::ButtonPressed(views::Button* sender, void ExtensionsToolbarButton::ButtonPressed(views::Button* sender,
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
#include "chrome/browser/ui/views/toolbar/toolbar_button.h" #include "chrome/browser/ui/views/toolbar/toolbar_button.h"
class Browser; class Browser;
class ExtensionsContainer; class ExtensionsToolbarContainer;
// Button in the toolbar that provides access to the corresponding extensions // Button in the toolbar that provides access to the corresponding extensions
// menu. // menu.
...@@ -16,7 +16,7 @@ class ExtensionsToolbarButton : public ToolbarButton, ...@@ -16,7 +16,7 @@ class ExtensionsToolbarButton : public ToolbarButton,
public views::ButtonListener { public views::ButtonListener {
public: public:
ExtensionsToolbarButton(Browser* browser, ExtensionsToolbarButton(Browser* browser,
ExtensionsContainer* extensions_container); ExtensionsToolbarContainer* extensions_container);
void UpdateIcon(); void UpdateIcon();
...@@ -25,7 +25,7 @@ class ExtensionsToolbarButton : public ToolbarButton, ...@@ -25,7 +25,7 @@ class ExtensionsToolbarButton : public ToolbarButton,
void ButtonPressed(views::Button* sender, const ui::Event& event) override; void ButtonPressed(views::Button* sender, const ui::Event& event) override;
Browser* const browser_; Browser* const browser_;
ExtensionsContainer* const extensions_container_; ExtensionsToolbarContainer* const extensions_container_;
DISALLOW_COPY_AND_ASSIGN(ExtensionsToolbarButton); DISALLOW_COPY_AND_ASSIGN(ExtensionsToolbarButton);
}; };
......
...@@ -19,7 +19,7 @@ class AvatarToolbarButtonTest : public TestWithBrowserView {}; ...@@ -19,7 +19,7 @@ class AvatarToolbarButtonTest : public TestWithBrowserView {};
#if !defined(OS_CHROMEOS) #if !defined(OS_CHROMEOS)
TEST_F(AvatarToolbarButtonTest, HighlightMeetsMinimumContrast) { TEST_F(AvatarToolbarButtonTest, HighlightMeetsMinimumContrast) {
auto parent = std::make_unique<ToolbarIconContainerView>(browser()); auto parent = std::make_unique<ToolbarAccountIconContainerView>(browser());
auto button = std::make_unique<AvatarToolbarButton>(browser(), parent.get()); auto button = std::make_unique<AvatarToolbarButton>(browser(), parent.get());
button->set_owned_by_client(); button->set_owned_by_client();
......
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
#include "chrome/browser/ui/views/toolbar/toolbar_account_icon_container_view.h" #include "chrome/browser/ui/views/toolbar/toolbar_account_icon_container_view.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.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_command_controller.h" #include "chrome/browser/ui/browser_command_controller.h"
#include "chrome/browser/ui/views/autofill/payments/local_card_migration_icon_view.h" #include "chrome/browser/ui/views/autofill/payments/local_card_migration_icon_view.h"
...@@ -93,11 +92,6 @@ const char* ToolbarAccountIconContainerView::GetClassName() const { ...@@ -93,11 +92,6 @@ const char* ToolbarAccountIconContainerView::GetClassName() const {
return kToolbarAccountIconContainerViewClassName; return kToolbarAccountIconContainerViewClassName;
} }
SkColor ToolbarAccountIconContainerView::GetIconColor() const {
return GetThemeProvider()->GetColor(
ThemeProperties::COLOR_TOOLBAR_BUTTON_ICON);
}
const views::View::Views& ToolbarAccountIconContainerView::GetChildren() const { const views::View::Views& ToolbarAccountIconContainerView::GetChildren() const {
return page_action_icon_container_view_->children(); return page_action_icon_container_view_->children();
} }
...@@ -49,8 +49,6 @@ class ToolbarAccountIconContainerView : public ToolbarIconContainerView, ...@@ -49,8 +49,6 @@ class ToolbarAccountIconContainerView : public ToolbarIconContainerView,
// ToolbarIconContainerView: // ToolbarIconContainerView:
const views::View::Views& GetChildren() const override; const views::View::Views& GetChildren() const override;
SkColor GetIconColor() const;
PageActionIconContainerView* page_action_icon_container_view_ = nullptr; PageActionIconContainerView* page_action_icon_container_view_ = nullptr;
AvatarToolbarButton* const avatar_ = nullptr; AvatarToolbarButton* const avatar_ = nullptr;
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <memory> #include <memory>
#include "base/stl_util.h" #include "base/stl_util.h"
#include "chrome/browser/themes/theme_properties.h"
#include "chrome/browser/ui/layout_constants.h" #include "chrome/browser/ui/layout_constants.h"
#include "chrome/browser/ui/views/chrome_layout_provider.h" #include "chrome/browser/ui/views/chrome_layout_provider.h"
#include "chrome/browser/ui/views/toolbar/toolbar_button.h" #include "chrome/browser/ui/views/toolbar/toolbar_button.h"
...@@ -40,8 +41,6 @@ ToolbarIconContainerView::~ToolbarIconContainerView() { ...@@ -40,8 +41,6 @@ ToolbarIconContainerView::~ToolbarIconContainerView() {
RemoveAllChildViews(true); RemoveAllChildViews(true);
} }
void ToolbarIconContainerView::UpdateAllIcons() {}
void ToolbarIconContainerView::AddMainButton(views::Button* main_button) { void ToolbarIconContainerView::AddMainButton(views::Button* main_button) {
DCHECK(!main_button_); DCHECK(!main_button_);
main_button->AddObserver(this); main_button->AddObserver(this);
...@@ -159,6 +158,18 @@ void ToolbarIconContainerView::UpdateHighlight() { ...@@ -159,6 +158,18 @@ void ToolbarIconContainerView::UpdateHighlight() {
observer.OnHighlightChanged(); observer.OnHighlightChanged();
} }
void ToolbarIconContainerView::OverrideIconColor(SkColor color) {
icon_color_ = color;
UpdateAllIcons();
}
SkColor ToolbarIconContainerView::GetIconColor() const {
if (icon_color_)
return icon_color_.value();
return GetThemeProvider()->GetColor(
ThemeProperties::COLOR_TOOLBAR_BUTTON_ICON);
}
bool ToolbarIconContainerView::IsHighlighted() { bool ToolbarIconContainerView::IsHighlighted() {
return ShouldDisplayHighlight(); return ShouldDisplayHighlight();
} }
......
...@@ -27,8 +27,8 @@ class ToolbarIconContainerView : public views::View, ...@@ -27,8 +27,8 @@ class ToolbarIconContainerView : public views::View,
ToolbarIconContainerView& operator=(const ToolbarIconContainerView&) = delete; ToolbarIconContainerView& operator=(const ToolbarIconContainerView&) = delete;
~ToolbarIconContainerView() override; ~ToolbarIconContainerView() override;
// Update all the icons it contains. Override by subclass. // Update all the icons it contains.
virtual void UpdateAllIcons(); virtual void UpdateAllIcons() = 0;
// Adds the RHS child as well as setting its margins. // Adds the RHS child as well as setting its margins.
void AddMainButton(views::Button* main_button); void AddMainButton(views::Button* main_button);
...@@ -36,6 +36,9 @@ class ToolbarIconContainerView : public views::View, ...@@ -36,6 +36,9 @@ class ToolbarIconContainerView : public views::View,
void AddObserver(Observer* obs); void AddObserver(Observer* obs);
void RemoveObserver(const Observer* obs); void RemoveObserver(const Observer* obs);
void OverrideIconColor(SkColor icon_color);
SkColor GetIconColor() const;
bool IsHighlighted(); bool IsHighlighted();
// views::ButtonObserver: // views::ButtonObserver:
...@@ -84,6 +87,10 @@ class ToolbarIconContainerView : public views::View, ...@@ -84,6 +87,10 @@ class ToolbarIconContainerView : public views::View,
// hierarchy. // hierarchy.
views::Button* main_button_ = nullptr; views::Button* main_button_ = nullptr;
// Override for the icon color. If not set, |COLOR_TOOLBAR_BUTTON_ICON| is
// used.
base::Optional<SkColor> icon_color_;
// Points to the child buttons that we know are currently highlighted. // Points to the child buttons that we know are currently highlighted.
// TODO(pbos): Consider observing buttons leaving our hierarchy and removing // TODO(pbos): Consider observing buttons leaving our hierarchy and removing
// them from this set. // them from this set.
......
...@@ -613,6 +613,8 @@ void WebAppFrameToolbarView::UpdateChildrenColor() { ...@@ -613,6 +613,8 @@ void WebAppFrameToolbarView::UpdateChildrenColor() {
web_app_origin_text_->SetTextColor(icon_color); web_app_origin_text_->SetTextColor(icon_color);
if (content_settings_container_) if (content_settings_container_)
content_settings_container_->SetIconColor(icon_color); content_settings_container_->SetIconColor(icon_color);
if (extensions_container_)
extensions_container_->OverrideIconColor(icon_color);
page_action_icon_container_view_->SetIconColor(icon_color); page_action_icon_container_view_->SetIconColor(icon_color);
web_app_menu_button_->SetColor(icon_color); web_app_menu_button_->SetColor(icon_color);
} }
......
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