Commit 3b7859cb authored by Peter Kasting's avatar Peter Kasting Committed by Commit Bot

Add background tab text colors for inactive and incognito windows.

With the default behavior of Chrome being to not show a tab background, we want
to change themes to default to that as well, unless the theme author actually
supplies an image/color for this explicitly.  To do this, we need to support
different tab text colors for the cases where the frame colors can vary.  This
adds the framework for that support.

Right now, the default is to use the same text colors in inactive windows as
active ones.

This also gives themes that want normal and incognito windows to differ greatly
(as the built-in theme's does) the ability to implement that and still have
readable tab titles.

Bug: 866672
Change-Id: I032a72bc799d0675c517db10283513a30db23328
Reviewed-on: https://chromium-review.googlesource.com/1152418
Commit-Queue: Peter Kasting <pkasting@chromium.org>
Reviewed-by: default avatarEvan Stade <estade@chromium.org>
Cr-Commit-Position: refs/heads/master@{#578807}
parent ab438e42
...@@ -238,6 +238,12 @@ const StringToIntTable kColorTable[] = { ...@@ -238,6 +238,12 @@ const StringToIntTable kColorTable[] = {
{ "toolbar", ThemeProperties::COLOR_TOOLBAR }, { "toolbar", ThemeProperties::COLOR_TOOLBAR },
{ "tab_text", ThemeProperties::COLOR_TAB_TEXT }, { "tab_text", ThemeProperties::COLOR_TAB_TEXT },
{ "tab_background_text", ThemeProperties::COLOR_BACKGROUND_TAB_TEXT }, { "tab_background_text", ThemeProperties::COLOR_BACKGROUND_TAB_TEXT },
{ "tab_background_text_inactive",
ThemeProperties::COLOR_BACKGROUND_TAB_TEXT_INACTIVE },
{ "tab_background_text_incognito",
ThemeProperties::COLOR_BACKGROUND_TAB_TEXT_INCOGNITO },
{ "tab_background_text_incognito_inactive",
ThemeProperties::COLOR_BACKGROUND_TAB_TEXT_INCOGNITO_INACTIVE },
{ "bookmark_text", ThemeProperties::COLOR_BOOKMARK_TEXT }, { "bookmark_text", ThemeProperties::COLOR_BOOKMARK_TEXT },
{ "ntp_background", ThemeProperties::COLOR_NTP_BACKGROUND }, { "ntp_background", ThemeProperties::COLOR_NTP_BACKGROUND },
{ "ntp_text", ThemeProperties::COLOR_NTP_TEXT }, { "ntp_text", ThemeProperties::COLOR_NTP_TEXT },
...@@ -1014,6 +1020,20 @@ void BrowserThemePack::GenerateMissingColors( ...@@ -1014,6 +1020,20 @@ void BrowserThemePack::GenerateMissingColors(
HSLShift(frame, GetTintInternal( HSLShift(frame, GetTintInternal(
ThemeProperties::TINT_FRAME_INCOGNITO_INACTIVE)); ThemeProperties::TINT_FRAME_INCOGNITO_INACTIVE));
} }
// Generate inactive background tab text colors if active colors were
// specified.
static constexpr int kColorsToCopy[][2] = {
{ThemeProperties::COLOR_BACKGROUND_TAB_TEXT,
ThemeProperties::COLOR_BACKGROUND_TAB_TEXT_INACTIVE},
{ThemeProperties::COLOR_BACKGROUND_TAB_TEXT_INCOGNITO,
ThemeProperties::COLOR_BACKGROUND_TAB_TEXT_INCOGNITO_INACTIVE},
};
for (const int* text_colors : kColorsToCopy) {
const auto src_it = colors->find(text_colors[0]);
if (src_it != colors->end() && !base::ContainsKey(*colors, text_colors[1]))
(*colors)[text_colors[1]] = src_it->second;
}
} }
void BrowserThemePack::BuildDisplayPropertiesFromJSON( void BrowserThemePack::BuildDisplayPropertiesFromJSON(
......
...@@ -423,6 +423,10 @@ SkColor BrowserThemePackTest::GetDefaultColor(int id) { ...@@ -423,6 +423,10 @@ SkColor BrowserThemePackTest::GetDefaultColor(int id) {
return TP::GetDefaultColor(TP::COLOR_BACKGROUND_TAB, true); return TP::GetDefaultColor(TP::COLOR_BACKGROUND_TAB, true);
case TP::COLOR_BACKGROUND_TAB_INCOGNITO_INACTIVE: case TP::COLOR_BACKGROUND_TAB_INCOGNITO_INACTIVE:
return TP::GetDefaultColor(TP::COLOR_BACKGROUND_TAB_INACTIVE, true); return TP::GetDefaultColor(TP::COLOR_BACKGROUND_TAB_INACTIVE, true);
case TP::COLOR_BACKGROUND_TAB_TEXT_INCOGNITO:
return TP::GetDefaultColor(TP::COLOR_BACKGROUND_TAB_TEXT, true);
case TP::COLOR_BACKGROUND_TAB_TEXT_INCOGNITO_INACTIVE:
return TP::GetDefaultColor(TP::COLOR_BACKGROUND_TAB_TEXT_INACTIVE, true);
default: default:
return TP::GetDefaultColor(id, false); return TP::GetDefaultColor(id, false);
} }
...@@ -479,6 +483,8 @@ TEST_F(BrowserThemePackTest, SupportsAlpha) { ...@@ -479,6 +483,8 @@ TEST_F(BrowserThemePackTest, SupportsAlpha) {
colors[TP::COLOR_TOOLBAR] = SkColorSetARGB(255, 0, 20, 40); colors[TP::COLOR_TOOLBAR] = SkColorSetARGB(255, 0, 20, 40);
colors[TP::COLOR_TAB_TEXT] = SkColorSetARGB(255, 60, 80, 100); colors[TP::COLOR_TAB_TEXT] = SkColorSetARGB(255, 60, 80, 100);
colors[TP::COLOR_BACKGROUND_TAB_TEXT] = SkColorSetARGB(0, 120, 140, 160); colors[TP::COLOR_BACKGROUND_TAB_TEXT] = SkColorSetARGB(0, 120, 140, 160);
colors[TP::COLOR_BACKGROUND_TAB_TEXT_INACTIVE] =
colors[TP::COLOR_BACKGROUND_TAB_TEXT];
colors[TP::COLOR_BOOKMARK_TEXT] = SkColorSetARGB(255, 180, 200, 220); colors[TP::COLOR_BOOKMARK_TEXT] = SkColorSetARGB(255, 180, 200, 220);
colors[TP::COLOR_NTP_TEXT] = SkColorSetARGB(128, 240, 255, 0); colors[TP::COLOR_NTP_TEXT] = SkColorSetARGB(128, 240, 255, 0);
VerifyColorMap(colors); VerifyColorMap(colors);
......
...@@ -16,6 +16,9 @@ bool IncreasedContrastThemeSupplier::GetColor(int id, SkColor* color) const { ...@@ -16,6 +16,9 @@ bool IncreasedContrastThemeSupplier::GetColor(int id, SkColor* color) const {
*color = SK_ColorBLACK; *color = SK_ColorBLACK;
return true; return true;
case ThemeProperties::COLOR_BACKGROUND_TAB_TEXT: case ThemeProperties::COLOR_BACKGROUND_TAB_TEXT:
case ThemeProperties::COLOR_BACKGROUND_TAB_TEXT_INACTIVE:
case ThemeProperties::COLOR_BACKGROUND_TAB_TEXT_INCOGNITO:
case ThemeProperties::COLOR_BACKGROUND_TAB_TEXT_INCOGNITO_INACTIVE:
*color = SK_ColorWHITE; *color = SK_ColorWHITE;
return true; return true;
case ThemeProperties::COLOR_TOOLBAR: case ThemeProperties::COLOR_TOOLBAR:
......
...@@ -171,6 +171,7 @@ base::Optional<SkColor> MaybeGetDefaultColorForNewerMaterialUi(int id, ...@@ -171,6 +171,7 @@ base::Optional<SkColor> MaybeGetDefaultColorForNewerMaterialUi(int id,
return incognito ? gfx::kGoogleGrey100 : gfx::kChromeIconGrey; return incognito ? gfx::kGoogleGrey100 : gfx::kChromeIconGrey;
case ThemeProperties::COLOR_BACKGROUND_TAB_TEXT: case ThemeProperties::COLOR_BACKGROUND_TAB_TEXT:
case ThemeProperties::COLOR_BACKGROUND_TAB_TEXT_INACTIVE:
case ThemeProperties::COLOR_TAB_CLOSE_BUTTON_INACTIVE: case ThemeProperties::COLOR_TAB_CLOSE_BUTTON_INACTIVE:
case ThemeProperties::COLOR_TAB_ALERT_AUDIO: case ThemeProperties::COLOR_TAB_ALERT_AUDIO:
return incognito ? gfx::kGoogleGrey400 : gfx::kChromeIconGrey; return incognito ? gfx::kGoogleGrey400 : gfx::kChromeIconGrey;
...@@ -300,6 +301,7 @@ SkColor ThemeProperties::GetDefaultColor(int id, bool incognito) { ...@@ -300,6 +301,7 @@ SkColor ThemeProperties::GetDefaultColor(int id, bool incognito) {
return incognito ? kDefaultColorToolbarTextIncognito return incognito ? kDefaultColorToolbarTextIncognito
: kDefaultColorToolbarText; : kDefaultColorToolbarText;
case COLOR_BACKGROUND_TAB_TEXT: case COLOR_BACKGROUND_TAB_TEXT:
case COLOR_BACKGROUND_TAB_TEXT_INACTIVE:
return incognito ? kDefaultColorBackgroundTabTextIncognito return incognito ? kDefaultColorBackgroundTabTextIncognito
: kDefaultColorBackgroundTabText; : kDefaultColorBackgroundTabText;
case COLOR_NTP_BACKGROUND: case COLOR_NTP_BACKGROUND:
...@@ -379,6 +381,8 @@ SkColor ThemeProperties::GetDefaultColor(int id, bool incognito) { ...@@ -379,6 +381,8 @@ SkColor ThemeProperties::GetDefaultColor(int id, bool incognito) {
case COLOR_FRAME_INCOGNITO_INACTIVE: case COLOR_FRAME_INCOGNITO_INACTIVE:
case COLOR_BACKGROUND_TAB_INCOGNITO: case COLOR_BACKGROUND_TAB_INCOGNITO:
case COLOR_BACKGROUND_TAB_INCOGNITO_INACTIVE: case COLOR_BACKGROUND_TAB_INCOGNITO_INACTIVE:
case COLOR_BACKGROUND_TAB_TEXT_INCOGNITO:
case COLOR_BACKGROUND_TAB_TEXT_INCOGNITO_INACTIVE:
NOTREACHED() << "These values should be queried via their respective " NOTREACHED() << "These values should be queried via their respective "
"non-incognito equivalents and an appropriate " "non-incognito equivalents and an appropriate "
"|incognito| value."; "|incognito| value.";
......
...@@ -41,6 +41,9 @@ class ThemeProperties { ...@@ -41,6 +41,9 @@ class ThemeProperties {
COLOR_TOOLBAR, COLOR_TOOLBAR,
COLOR_TAB_TEXT, COLOR_TAB_TEXT,
COLOR_BACKGROUND_TAB_TEXT, COLOR_BACKGROUND_TAB_TEXT,
COLOR_BACKGROUND_TAB_TEXT_INACTIVE,
COLOR_BACKGROUND_TAB_TEXT_INCOGNITO,
COLOR_BACKGROUND_TAB_TEXT_INCOGNITO_INACTIVE,
COLOR_BOOKMARK_TEXT, COLOR_BOOKMARK_TEXT,
COLOR_NTP_BACKGROUND, COLOR_NTP_BACKGROUND,
COLOR_NTP_TEXT, COLOR_NTP_TEXT,
......
...@@ -119,6 +119,10 @@ int GetIncognitoId(int id) { ...@@ -119,6 +119,10 @@ int GetIncognitoId(int id) {
return ThemeProperties::COLOR_BACKGROUND_TAB_INCOGNITO; return ThemeProperties::COLOR_BACKGROUND_TAB_INCOGNITO;
case ThemeProperties::COLOR_BACKGROUND_TAB_INACTIVE: case ThemeProperties::COLOR_BACKGROUND_TAB_INACTIVE:
return ThemeProperties::COLOR_BACKGROUND_TAB_INCOGNITO_INACTIVE; return ThemeProperties::COLOR_BACKGROUND_TAB_INCOGNITO_INACTIVE;
case ThemeProperties::COLOR_BACKGROUND_TAB_TEXT:
return ThemeProperties::COLOR_BACKGROUND_TAB_TEXT_INCOGNITO;
case ThemeProperties::COLOR_BACKGROUND_TAB_TEXT_INACTIVE:
return ThemeProperties::COLOR_BACKGROUND_TAB_TEXT_INCOGNITO_INACTIVE;
default: default:
return id; return id;
} }
......
...@@ -142,9 +142,14 @@ SkColor BrowserNonClientFrameView::GetTabBackgroundColor(TabState state) const { ...@@ -142,9 +142,14 @@ SkColor BrowserNonClientFrameView::GetTabBackgroundColor(TabState state) const {
} }
SkColor BrowserNonClientFrameView::GetTabForegroundColor(TabState state) const { SkColor BrowserNonClientFrameView::GetTabForegroundColor(TabState state) const {
if (MD::IsRefreshUi() && state == TAB_INACTIVE && if (state == TAB_ACTIVE)
!GetThemeProvider()->HasCustomColor( return GetThemeOrDefaultColor(ThemeProperties::COLOR_TAB_TEXT);
ThemeProperties::COLOR_BACKGROUND_TAB_TEXT)) {
const int color_id =
ShouldPaintAsActive()
? ThemeProperties::COLOR_BACKGROUND_TAB_TEXT
: ThemeProperties::COLOR_BACKGROUND_TAB_TEXT_INACTIVE;
if (MD::IsRefreshUi() && !GetThemeProvider()->HasCustomColor(color_id)) {
const SkColor background_color = GetTabBackgroundColor(TAB_INACTIVE); const SkColor background_color = GetTabBackgroundColor(TAB_INACTIVE);
const SkColor default_color = color_utils::IsDark(background_color) const SkColor default_color = color_utils::IsDark(background_color)
? gfx::kGoogleGrey500 ? gfx::kGoogleGrey500
...@@ -153,9 +158,6 @@ SkColor BrowserNonClientFrameView::GetTabForegroundColor(TabState state) const { ...@@ -153,9 +158,6 @@ SkColor BrowserNonClientFrameView::GetTabForegroundColor(TabState state) const {
background_color); background_color);
} }
const auto color_id = state == TAB_ACTIVE
? ThemeProperties::COLOR_TAB_TEXT
: ThemeProperties::COLOR_BACKGROUND_TAB_TEXT;
return GetThemeOrDefaultColor(color_id); return GetThemeOrDefaultColor(color_id);
} }
......
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