Migrated colors that used in theme_properties to color provider pipeline

https://github.com/brave/brave-browser/issues/23423

Introduced for color mixers for light/dark/private/tor window for using
our theme colors from color provider.

With this PR, brave's background color of new tab button/tab search button
is used.
This commit is contained in:
Simon Hong
2022-06-20 11:41:45 +09:00
parent 5c60f1d060
commit 13b4f3028c
17 changed files with 340 additions and 30 deletions
+1
View File
@@ -33,6 +33,7 @@ source_set("themes") {
"//brave/components/sidebar/buildflags",
"//brave/components/speedreader:buildflags",
"//chrome/browser:theme_properties",
"//chrome/browser/ui/color:mixers",
"//skia:skia",
"//ui/gfx:color_utils",
"//ui/native_theme:native_theme",
@@ -0,0 +1,23 @@
/* Copyright (c) 2022 The Brave Authors. All rights reserved.
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "brave/browser/themes/brave_private_window_theme_supplier.h"
#include "brave/browser/ui/color/brave_color_mixer.h"
#include "ui/color/color_provider_manager.h"
BravePrivateWindowThemeSupplier::BravePrivateWindowThemeSupplier(
bool private_window)
: CustomThemeSupplier(ThemeType::kAutogenerated),
for_private_window_(private_window) {}
BravePrivateWindowThemeSupplier::~BravePrivateWindowThemeSupplier() = default;
void BravePrivateWindowThemeSupplier::AddColorMixers(
ui::ColorProvider* provider,
const ui::ColorProviderManager::Key& key) const {
for_private_window_ ? AddBravePrivateThemeColorMixer(provider, key)
: AddBraveTorThemeColorMixer(provider, key);
}
@@ -0,0 +1,31 @@
/* Copyright (c) 2022 The Brave Authors. All rights reserved.
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef BRAVE_BROWSER_THEMES_BRAVE_PRIVATE_WINDOW_THEME_SUPPLIER_H_
#define BRAVE_BROWSER_THEMES_BRAVE_PRIVATE_WINDOW_THEME_SUPPLIER_H_
#include "chrome/browser/themes/custom_theme_supplier.h"
// A theme supplier for private (or tor) window.
class BravePrivateWindowThemeSupplier : public CustomThemeSupplier {
public:
explicit BravePrivateWindowThemeSupplier(bool private_window);
BravePrivateWindowThemeSupplier(const BravePrivateWindowThemeSupplier&) =
delete;
BravePrivateWindowThemeSupplier& operator=(
const BravePrivateWindowThemeSupplier&) = delete;
protected:
~BravePrivateWindowThemeSupplier() override;
void AddColorMixers(ui::ColorProvider* provider,
const ui::ColorProviderManager::Key& key) const override;
// false if this is for tor window.
bool for_private_window_ = true;
};
#endif // BRAVE_BROWSER_THEMES_BRAVE_PRIVATE_WINDOW_THEME_SUPPLIER_H_
+1 -5
View File
@@ -9,6 +9,7 @@
#include "brave/browser/themes/brave_dark_mode_utils.h"
#include "brave/browser/themes/brave_theme_helper_utils.h"
#include "brave/browser/themes/theme_properties.h"
#include "brave/browser/ui/color/color_palette.h"
#include "brave/components/brave_vpn/buildflags/buildflags.h"
#include "brave/components/sidebar/buildflags/buildflags.h"
#include "build/build_config.h"
@@ -23,11 +24,6 @@
namespace {
// TODO(simonhong): Get colors from brave's palette.
// Omnibox text colors
const SkColor kDarkOmniboxText = SkColorSetRGB(0xff, 0xff, 0xff);
const SkColor kLightOmniboxText = SkColorSetRGB(0x42, 0x42, 0x42);
#if BUILDFLAG(IS_LINUX)
bool IsUsingSystemTheme(const CustomThemeSupplier* theme_supplier) {
return theme_supplier &&
@@ -6,6 +6,7 @@
#include "brave/browser/themes/brave_dark_mode_utils.h"
#include "brave/browser/themes/brave_theme_helper_utils.h"
#include "brave/browser/themes/theme_properties.h"
#include "brave/browser/ui/color/color_palette.h"
#include "brave/components/constants/pref_names.h"
#include "build/build_config.h"
#include "chrome/browser/profiles/profile.h"
@@ -20,6 +21,7 @@
#include "content/public/test/browser_test.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest-spi.h"
#include "ui/color/color_provider.h"
#include "ui/native_theme/native_theme.h"
#include "ui/native_theme/native_theme_observer.h"
@@ -188,6 +190,21 @@ IN_PROC_BROWSER_TEST_F(BraveThemeServiceTest, OmniboxColorTest) {
tp->GetColor(ThemeProperties::COLOR_OMNIBOX_RESULTS_BG));
}
// Check some colors from color provider pipeline.
IN_PROC_BROWSER_TEST_F(BraveThemeServiceTest, ColorProviderTest) {
auto* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
auto* cp = browser_view->GetColorProvider();
SkColor frame_active_color = cp->GetColor(ui::kColorFrameActive);
EXPECT_TRUE(frame_active_color == kLightFrame ||
frame_active_color == kDarkFrame);
auto* private_browser = CreateIncognitoBrowser();
browser_view = BrowserView::GetBrowserViewForBrowser(private_browser);
cp = browser_view->GetColorProvider();
frame_active_color = cp->GetColor(ui::kColorFrameActive);
EXPECT_EQ(kPrivateFrame, frame_active_color);
}
// Some tests are failing for Windows x86 CI,
// See https://github.com/brave/brave-browser/issues/22767
#if BUILDFLAG(IS_WIN) && defined(ARCH_CPU_X86)
+5
View File
@@ -10,6 +10,8 @@ brave_browser_themes_deps = []
if (!is_android) {
brave_browser_themes_sources += [
"//brave/browser/themes/brave_dark_mode_utils.cc",
"//brave/browser/themes/brave_private_window_theme_supplier.cc",
"//brave/browser/themes/brave_private_window_theme_supplier.h",
"//brave/browser/themes/brave_theme_helper.cc",
"//brave/browser/themes/brave_theme_helper.h",
"//brave/browser/themes/brave_theme_helper_utils.cc",
@@ -31,9 +33,12 @@ if (!is_android) {
"//brave/components/brave_vpn/buildflags",
"//brave/components/constants",
"//brave/components/sidebar/buildflags",
"//chrome/browser/ui",
"//chrome/browser/ui/color:color_headers",
"//chrome/common",
"//components/pref_registry",
"//components/prefs",
"//ui/color",
"//ui/gfx",
"//ui/native_theme",
]
+5 -17
View File
@@ -6,15 +6,12 @@
#include "brave/browser/themes/theme_properties.h"
#include "base/notreached.h"
#include "brave/browser/ui/color/color_palette.h"
#include "chrome/browser/themes/theme_properties.h"
#include "ui/gfx/color_palette.h"
namespace {
const SkColor kLightToolbar = SkColorSetRGB(0xf3, 0xf3, 0xf3);
const SkColor kLightFrame = SkColorSetRGB(0xd5, 0xd9, 0xdc);
const SkColor kLightToolbarIcon = SkColorSetRGB(0x42, 0x42, 0x42);
absl::optional<SkColor> MaybeGetDefaultColorForBraveLightUi(int id) {
switch (id) {
// Applies when the window is active, tabs and also tab bar everywhere
@@ -27,7 +24,7 @@ absl::optional<SkColor> MaybeGetDefaultColorForBraveLightUi(int id) {
// except active tab
case ThemeProperties::COLOR_FRAME_INACTIVE:
case ThemeProperties::COLOR_TAB_BACKGROUND_INACTIVE_FRAME_INACTIVE:
return color_utils::HSLShift(kLightFrame, { -1, -1, 0.6 });
return color_utils::HSLShift(kLightFrame, {-1, -1, 0.6});
// Active tab and also the URL toolbar
// Parts of this color show up as you hover over innactive tabs too
case ThemeProperties::COLOR_TOOLBAR:
@@ -131,10 +128,6 @@ absl::optional<SkColor> MaybeGetDefaultColorForBraveLightUi(int id) {
}
}
const SkColor kDarkToolbar = SkColorSetRGB(0x30, 0x34, 0x43);
const SkColor kDarkFrame = SkColorSetRGB(0x0C, 0x0C, 0x17);
const SkColor kDarkToolbarIcon = SkColorSetRGB(0xed, 0xed, 0xed);
absl::optional<SkColor> MaybeGetDefaultColorForBraveDarkUi(int id) {
switch (id) {
// Applies when the window is active, tabs and also tab bar everywhere
@@ -146,7 +139,7 @@ absl::optional<SkColor> MaybeGetDefaultColorForBraveDarkUi(int id) {
// except active tab
case ThemeProperties::COLOR_FRAME_INACTIVE:
case ThemeProperties::COLOR_TAB_BACKGROUND_INACTIVE_FRAME_INACTIVE:
return color_utils::HSLShift(kDarkFrame, { -1, -1, 0.6 });
return color_utils::HSLShift(kDarkFrame, {-1, -1, 0.6});
// Active tab and also the URL toolbar
// Parts of this color show up as you hover over innactive tabs too
case ThemeProperties::COLOR_TOOLBAR:
@@ -253,9 +246,6 @@ absl::optional<SkColor> MaybeGetDefaultColorForBraveDarkUi(int id) {
}
}
const SkColor kPrivateFrame = SkColorSetRGB(0x19, 0x16, 0x2F);
const SkColor kPrivateToolbar = SkColorSetRGB(0x32, 0x25, 0x60);
absl::optional<SkColor> MaybeGetDefaultColorForPrivateUi(int id) {
switch (id) {
// Applies when the window is active, tabs and also tab bar everywhere
@@ -267,7 +257,7 @@ absl::optional<SkColor> MaybeGetDefaultColorForPrivateUi(int id) {
// except active tab
case ThemeProperties::COLOR_FRAME_INACTIVE:
case ThemeProperties::COLOR_TAB_BACKGROUND_INACTIVE_FRAME_INACTIVE:
return color_utils::HSLShift(kPrivateFrame, { -1, -1, 0.55 });
return color_utils::HSLShift(kPrivateFrame, {-1, -1, 0.55});
// Active tab and also the URL toolbar
// Parts of this color show up as you hover over innactive tabs too
case ThemeProperties::COLOR_TOOLBAR:
@@ -293,8 +283,6 @@ absl::optional<SkColor> MaybeGetDefaultColorForPrivateUi(int id) {
}
}
const SkColor kPrivateTorFrame = SkColorSetRGB(0x19, 0x0E, 0x2A);
const SkColor kPrivateTorToolbar = SkColorSetRGB(0x49, 0x2D, 0x58);
absl::optional<SkColor> MaybeGetDefaultColorForPrivateTorUi(int id) {
switch (id) {
// Applies when the window is active, tabs and also tab bar everywhere
@@ -306,7 +294,7 @@ absl::optional<SkColor> MaybeGetDefaultColorForPrivateTorUi(int id) {
// except active tab
case ThemeProperties::COLOR_FRAME_INACTIVE:
case ThemeProperties::COLOR_TAB_BACKGROUND_INACTIVE_FRAME_INACTIVE:
return color_utils::HSLShift(kPrivateTorFrame, { -1, -1, 0.55 });
return color_utils::HSLShift(kPrivateTorFrame, {-1, -1, 0.55});
// Active tab and also the URL toolbar
// Parts of this color show up as you hover over innactive tabs too
case ThemeProperties::COLOR_TOOLBAR:
+137
View File
@@ -0,0 +1,137 @@
/* Copyright (c) 2022 The Brave Authors. All rights reserved.
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "brave/browser/ui/color/brave_color_mixer.h"
#include "brave/browser/ui/color/color_palette.h"
#include "chrome/browser/ui/color/chrome_color_id.h"
#include "ui/color/color_id.h"
#include "ui/color/color_provider.h"
#include "ui/color/color_recipe.h"
#include "ui/gfx/color_palette.h"
#include "ui/gfx/color_utils.h"
void AddBraveLightThemeColorMixer(ui::ColorProvider* provider,
const ui::ColorProviderManager::Key& key) {
ui::ColorMixer& mixer = provider->AddMixer();
mixer[kColorDownloadShelfButtonText] = {gfx::kBraveGrey800};
mixer[ui::kColorFrameActive] = {kLightFrame};
mixer[kColorTabBackgroundInactiveFrameActive] = {ui::kColorFrameActive};
mixer[kColorNewTabButtonBackgroundFrameActive] = {ui::kColorFrameActive};
mixer[kColorToolbarContentAreaSeparator] = {ui::kColorFrameActive};
mixer[ui::kColorFrameInactive] = {
color_utils::HSLShift(kLightFrame, {-1, -1, 0.6})};
mixer[kColorTabBackgroundInactiveFrameInactive] = {ui::kColorFrameInactive};
mixer[kColorNewTabButtonBackgroundFrameInactive] = {ui::kColorFrameInactive};
mixer[kColorToolbar] = {kLightToolbar};
mixer[kColorToolbarTopSeparatorFrameActive] = {kColorToolbar};
mixer[kColorToolbarTopSeparatorFrameInactive] = {kColorToolbar};
mixer[kColorTabBackgroundActiveFrameActive] = {kColorToolbar};
mixer[kColorTabBackgroundActiveFrameInactive] = {kColorToolbar};
mixer[kColorTabForegroundActiveFrameActive] = {kLightToolbarIcon};
mixer[kColorTabForegroundInactiveFrameActive] = {
kColorTabForegroundActiveFrameActive};
mixer[kColorBookmarkBarForeground] = {kColorTabForegroundActiveFrameActive};
mixer[kColorToolbarButtonIcon] = {kColorTabForegroundActiveFrameActive};
mixer[kColorToolbarButtonIconInactive] = {
color_utils::AlphaBlend(kLightToolbarIcon, kLightToolbar, 0.3f)};
}
void AddBraveDarkThemeColorMixer(ui::ColorProvider* provider,
const ui::ColorProviderManager::Key& key) {
ui::ColorMixer& mixer = provider->AddMixer();
mixer[kColorDownloadShelfButtonText] = {SK_ColorWHITE};
mixer[ui::kColorFrameActive] = {kDarkFrame};
mixer[kColorTabBackgroundInactiveFrameActive] = {ui::kColorFrameActive};
mixer[kColorNewTabButtonBackgroundFrameActive] = {ui::kColorFrameActive};
mixer[ui::kColorFrameInactive] = {
color_utils::HSLShift(kDarkFrame, {-1, -1, 0.6})};
mixer[kColorTabBackgroundInactiveFrameInactive] = {ui::kColorFrameInactive};
mixer[kColorNewTabButtonBackgroundFrameInactive] = {ui::kColorFrameInactive};
mixer[kColorToolbar] = {kDarkToolbar};
mixer[kColorToolbarTopSeparatorFrameActive] = {kColorToolbar};
mixer[kColorToolbarTopSeparatorFrameInactive] = {kColorToolbar};
mixer[kColorToolbarContentAreaSeparator] = {kColorToolbar};
mixer[kColorTabStrokeFrameActive] = {kColorToolbar};
mixer[kColorTabStrokeFrameInactive] = {kColorToolbar};
mixer[kColorTabBackgroundActiveFrameActive] = {kColorToolbar};
mixer[kColorTabBackgroundActiveFrameInactive] = {kColorToolbar};
mixer[kColorTabForegroundActiveFrameActive] = {
SkColorSetRGB(0xF3, 0xF3, 0xF3)};
mixer[kColorBookmarkBarForeground] = {kColorTabForegroundActiveFrameActive};
mixer[kColorTabForegroundInactiveFrameActive] = {
kColorTabForegroundActiveFrameActive};
mixer[kColorToolbarButtonIcon] = {kDarkToolbarIcon};
mixer[kColorToolbarButtonIconInactive] = {
color_utils::AlphaBlend(kDarkToolbarIcon, kDarkToolbar, 0.3f)};
}
void AddBravePrivateThemeColorMixer(ui::ColorProvider* provider,
const ui::ColorProviderManager::Key& key) {
AddBraveDarkThemeColorMixer(provider, key);
ui::ColorMixer& mixer = provider->AddMixer();
mixer[ui::kColorFrameActive] = {kPrivateFrame};
mixer[kColorTabBackgroundInactiveFrameActive] = {ui::kColorFrameActive};
mixer[kColorNewTabButtonBackgroundFrameActive] = {ui::kColorFrameActive};
mixer[ui::kColorFrameInactive] = {
color_utils::HSLShift(kPrivateFrame, {-1, -1, 0.55})};
mixer[kColorTabBackgroundInactiveFrameInactive] = {ui::kColorFrameInactive};
mixer[kColorNewTabButtonBackgroundFrameInactive] = {ui::kColorFrameInactive};
mixer[kColorToolbar] = {kPrivateToolbar};
mixer[kColorToolbarContentAreaSeparator] = {kColorToolbar};
mixer[kColorTabBackgroundActiveFrameActive] = {kColorToolbar};
mixer[kColorTabBackgroundActiveFrameInactive] = {kColorToolbar};
mixer[kColorTabForegroundActiveFrameActive] = {
SkColorSetRGB(0xF3, 0xF3, 0xF3)};
mixer[kColorBookmarkBarForeground] = {SkColorSetRGB(0xFF, 0xFF, 0xFF)};
mixer[kColorTabForegroundInactiveFrameActive] = {
SkColorSetRGB(0xFF, 0xFF, 0xFF)};
mixer[kColorToolbarButtonIcon] = {kDarkToolbarIcon};
mixer[kColorToolbarButtonIconInactive] = {
color_utils::AlphaBlend(kDarkToolbarIcon, kPrivateToolbar, 0.3f)};
}
void AddBraveTorThemeColorMixer(ui::ColorProvider* provider,
const ui::ColorProviderManager::Key& key) {
AddBravePrivateThemeColorMixer(provider, key);
ui::ColorMixer& mixer = provider->AddMixer();
mixer[ui::kColorFrameActive] = {kPrivateTorFrame};
mixer[kColorTabBackgroundInactiveFrameActive] = {ui::kColorFrameActive};
mixer[kColorNewTabButtonBackgroundFrameActive] = {ui::kColorFrameActive};
mixer[ui::kColorFrameInactive] = {
color_utils::HSLShift(kPrivateTorFrame, {-1, -1, 0.55})};
mixer[kColorTabBackgroundInactiveFrameInactive] = {ui::kColorFrameInactive};
mixer[kColorNewTabButtonBackgroundFrameInactive] = {ui::kColorFrameInactive};
mixer[kColorToolbar] = {kPrivateTorToolbar};
mixer[kColorToolbarContentAreaSeparator] = {kColorToolbar};
mixer[kColorTabBackgroundActiveFrameActive] = {kColorToolbar};
mixer[kColorTabBackgroundActiveFrameInactive] = {kColorToolbar};
mixer[kColorToolbarButtonIconInactive] = {
color_utils::AlphaBlend(kDarkToolbarIcon, kPrivateTorToolbar, 0.3f)};
}
+24
View File
@@ -0,0 +1,24 @@
/* Copyright (c) 2022 The Brave Authors. All rights reserved.
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef BRAVE_BROWSER_UI_COLOR_BRAVE_COLOR_MIXER_H_
#define BRAVE_BROWSER_UI_COLOR_BRAVE_COLOR_MIXER_H_
#include "ui/color/color_provider_manager.h"
namespace ui {
class ColorProvider;
} // namespace ui
void AddBraveLightThemeColorMixer(ui::ColorProvider* provider,
const ui::ColorProviderManager::Key& key);
void AddBraveDarkThemeColorMixer(ui::ColorProvider* provider,
const ui::ColorProviderManager::Key& key);
void AddBravePrivateThemeColorMixer(ui::ColorProvider* provider,
const ui::ColorProviderManager::Key& key);
void AddBraveTorThemeColorMixer(ui::ColorProvider* provider,
const ui::ColorProviderManager::Key& key);
#endif // BRAVE_BROWSER_UI_COLOR_BRAVE_COLOR_MIXER_H_
+28
View File
@@ -0,0 +1,28 @@
/* Copyright (c) 2022 The Brave Authors. All rights reserved.
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef BRAVE_BROWSER_UI_COLOR_COLOR_PALETTE_H_
#define BRAVE_BROWSER_UI_COLOR_COLOR_PALETTE_H_
#include "third_party/skia/include/core/SkColor.h"
// TODO(simonhong): Move all below colors to brave_color_mixer.cc.
// Originally this colors were defined in BraveThemeProperties but
// they are used from mixers also. When color fetching from theme
// provider is deprecated, only mixer will use these colors.
constexpr SkColor kLightToolbar = SkColorSetRGB(0xf3, 0xf3, 0xf3);
constexpr SkColor kLightFrame = SkColorSetRGB(0xd5, 0xd9, 0xdc);
constexpr SkColor kLightToolbarIcon = SkColorSetRGB(0x42, 0x42, 0x42);
constexpr SkColor kDarkOmniboxText = SkColorSetRGB(0xff, 0xff, 0xff);
constexpr SkColor kLightOmniboxText = SkColorSetRGB(0x42, 0x42, 0x42);
constexpr SkColor kDarkToolbar = SkColorSetRGB(0x30, 0x34, 0x43);
constexpr SkColor kDarkFrame = SkColorSetRGB(0x0C, 0x0C, 0x17);
constexpr SkColor kDarkToolbarIcon = SkColorSetRGB(0xed, 0xed, 0xed);
constexpr SkColor kPrivateFrame = SkColorSetRGB(0x19, 0x16, 0x2F);
constexpr SkColor kPrivateToolbar = SkColorSetRGB(0x32, 0x25, 0x60);
constexpr SkColor kPrivateTorFrame = SkColorSetRGB(0x19, 0x0E, 0x2A);
constexpr SkColor kPrivateTorToolbar = SkColorSetRGB(0x49, 0x2D, 0x58);
#endif // BRAVE_BROWSER_UI_COLOR_COLOR_PALETTE_H_
+16
View File
@@ -0,0 +1,16 @@
# Copyright (c) 2022 The Brave Authors. All rights reserved.
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
# You can obtain one at http://mozilla.org/MPL/2.0/.
brave_browser_ui_color_mixers_sources = [
"//brave/browser/ui/color/brave_color_mixer.cc",
"//brave/browser/ui/color/brave_color_mixer.h",
"//brave/browser/ui/color/color_palette.h",
]
brave_browser_ui_color_mixers_deps = [
"//skia",
"//ui/color",
"//ui/gfx",
]
+23 -2
View File
@@ -6,6 +6,7 @@
#include "brave/browser/ui/views/frame/brave_browser_frame.h"
#include "brave/browser/profiles/profile_util.h"
#include "brave/browser/themes/brave_private_window_theme_supplier.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/themes/theme_service.h"
#include "chrome/browser/themes/theme_service_factory.h"
@@ -13,8 +14,16 @@
#include "chrome/browser/ui/views/frame/browser_view.h"
BraveBrowserFrame::BraveBrowserFrame(BrowserView* browser_view)
: BrowserFrame(browser_view),
view_(browser_view) {}
: BrowserFrame(browser_view), view_(browser_view) {
if (view_->browser()->profile()->IsIncognitoProfile() ||
view_->browser()->profile()->IsTor() ||
view_->browser()->profile()->IsGuestSession()) {
theme_supplier_ = base::MakeRefCounted<BravePrivateWindowThemeSupplier>(
!view_->browser()->profile()->IsTor());
}
}
BraveBrowserFrame::~BraveBrowserFrame() = default;
// Tor/Guest profile should use DarkAura. If not, their native ui is affected by
// normal windows theme change.
@@ -28,3 +37,15 @@ const ui::NativeTheme* BraveBrowserFrame::GetNativeTheme() const {
}
return views::Widget::GetNativeTheme();
}
ui::ColorProviderManager::ThemeInitializerSupplier*
BraveBrowserFrame::GetCustomTheme() const {
// To provider private(tor) windows's theme color via color provider,
// we use |theme_supplier_| for both as upstream doesn't use separated
// mix for private window.
if (theme_supplier_) {
return theme_supplier_.get();
}
return BrowserFrame::GetCustomTheme();
}
@@ -7,19 +7,26 @@
#define BRAVE_BROWSER_UI_VIEWS_FRAME_BRAVE_BROWSER_FRAME_H_
#include "base/memory/raw_ptr.h"
#include "base/memory/scoped_refptr.h"
#include "chrome/browser/ui/views/frame/browser_frame.h"
class CustomThemeSupplier;
class BraveBrowserFrame : public BrowserFrame {
public:
explicit BraveBrowserFrame(BrowserView* browser_view);
BraveBrowserFrame(const BraveBrowserFrame&) = delete;
BraveBrowserFrame& operator=(const BraveBrowserFrame&) = delete;
~BraveBrowserFrame() override;
// BrowserFrame overrides:
const ui::NativeTheme* GetNativeTheme() const override;
ui::ColorProviderManager::ThemeInitializerSupplier* GetCustomTheme()
const override;
private:
raw_ptr<BrowserView> view_ = nullptr;
scoped_refptr<CustomThemeSupplier> theme_supplier_;
};
#endif // BRAVE_BROWSER_UI_VIEWS_FRAME_BRAVE_BROWSER_FRAME_H_
+1
View File
@@ -8,6 +8,7 @@ import("//brave/browser/resources/bookmarks/sources.gni")
import("//brave/browser/resources/extensions/sources.gni")
import("//brave/browser/resources/history/sources.gni")
import("//brave/browser/resources/settings/sources.gni")
import("//brave/browser/ui/color/sources.gni")
import("//brave/build/config/compiler.gni")
import("//brave/build/mac/config.gni")
import("//brave/components/content_settings/core/browser/sources.gni")
@@ -5,6 +5,8 @@
#include "chrome/browser/ui/color/chrome_color_mixer.h"
#include "brave/browser/ui/color/brave_color_mixer.h"
#define AddChromeColorMixer AddChromeColorMixer_ChromiumImpl
#include "src/chrome/browser/ui/color/chrome_color_mixer.cc"
#undef AddChromeColorMixer
@@ -13,13 +15,13 @@ namespace {
void AddBraveColorMixer(ui::ColorProvider* provider,
const ui::ColorProviderManager::Key& key) {
const bool dark_mode =
key.color_mode == ui::ColorProviderManager::ColorMode::kDark;
ui::ColorMixer& mixer = provider->AddMixer();
// Apply brave theme when there is no custom theme.
if (key.custom_theme)
return;
// Download shelf colors.
mixer[kColorDownloadShelfButtonText] = {dark_mode ? SK_ColorWHITE
: gfx::kBraveGrey800};
key.color_mode == ui::ColorProviderManager::ColorMode::kDark
? AddBraveDarkThemeColorMixer(provider, key)
: AddBraveLightThemeColorMixer(provider, key);
}
} // namespace
@@ -0,0 +1,12 @@
diff --git a/chrome/browser/ui/color/BUILD.gn b/chrome/browser/ui/color/BUILD.gn
index ebc0b2e5886804820c7f5f594c68e80f85c002cb..a925b384c5359cd8ed5f8907a80df3639fbc60fb 100644
--- a/chrome/browser/ui/color/BUILD.gn
+++ b/chrome/browser/ui/color/BUILD.gn
@@ -35,6 +35,7 @@ source_set("mixers") {
"//ui/color:color",
"//ui/color:mixers",
]
+ sources += brave_browser_ui_color_mixers_sources deps += brave_browser_ui_color_mixers_deps
if (is_chromeos) {
sources += [ "chromeos/native_chrome_color_mixer_chromeos.cc" ]
+1
View File
@@ -808,6 +808,7 @@ if (!is_android) {
"//brave/vendor/bat-native-ledger",
"//brave/vendor/bat-native-ledger:publishers_proto",
"//chrome/browser",
"//chrome/browser/ui/color:mixers",
"//components/commerce/core:feature_list",
"//components/gcm_driver:gcm_buildflags",
"//components/history_clusters/core",