Commit 4fadc40c authored by Peter Kasting's avatar Peter Kasting Committed by Commit Bot

Reland "Add background tab text colors for inactive and incognito windows."

This is a reland of 3b7859cb

Original change's description:
> 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: Evan Stade <estade@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#578807}

Bug: 866672
Change-Id: I2d80ccb2db306655b666d16588bfae59f087639b
TBR: estade, bsep
Reviewed-on: https://chromium-review.googlesource.com/1154149Reviewed-by: default avatarPeter Kasting <pkasting@chromium.org>
Commit-Queue: Peter Kasting <pkasting@chromium.org>
Cr-Commit-Position: refs/heads/master@{#578929}
parent 83a34400
......@@ -238,6 +238,12 @@ const StringToIntTable kColorTable[] = {
{ "toolbar", ThemeProperties::COLOR_TOOLBAR },
{ "tab_text", ThemeProperties::COLOR_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 },
{ "ntp_background", ThemeProperties::COLOR_NTP_BACKGROUND },
{ "ntp_text", ThemeProperties::COLOR_NTP_TEXT },
......@@ -1014,6 +1020,20 @@ void BrowserThemePack::GenerateMissingColors(
HSLShift(frame, GetTintInternal(
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(
......
......@@ -425,6 +425,10 @@ SkColor BrowserThemePackTest::GetDefaultColor(int id) {
return TP::GetDefaultColor(TP::COLOR_BACKGROUND_TAB, true);
case TP::COLOR_BACKGROUND_TAB_INCOGNITO_INACTIVE:
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:
return TP::GetDefaultColor(id, false);
}
......@@ -481,6 +485,8 @@ TEST_F(BrowserThemePackTest, SupportsAlpha) {
colors[TP::COLOR_TOOLBAR] = SkColorSetARGB(255, 0, 20, 40);
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_INACTIVE] =
colors[TP::COLOR_BACKGROUND_TAB_TEXT];
colors[TP::COLOR_BOOKMARK_TEXT] = SkColorSetARGB(255, 180, 200, 220);
colors[TP::COLOR_NTP_TEXT] = SkColorSetARGB(128, 240, 255, 0);
VerifyColorMap(colors);
......
......@@ -16,6 +16,9 @@ bool IncreasedContrastThemeSupplier::GetColor(int id, SkColor* color) const {
*color = SK_ColorBLACK;
return true;
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;
return true;
case ThemeProperties::COLOR_TOOLBAR:
......
......@@ -171,6 +171,7 @@ base::Optional<SkColor> MaybeGetDefaultColorForNewerMaterialUi(int id,
return incognito ? gfx::kGoogleGrey100 : gfx::kChromeIconGrey;
case ThemeProperties::COLOR_BACKGROUND_TAB_TEXT:
case ThemeProperties::COLOR_BACKGROUND_TAB_TEXT_INACTIVE:
case ThemeProperties::COLOR_TAB_CLOSE_BUTTON_INACTIVE:
case ThemeProperties::COLOR_TAB_ALERT_AUDIO:
return incognito ? gfx::kGoogleGrey400 : gfx::kChromeIconGrey;
......@@ -300,6 +301,7 @@ SkColor ThemeProperties::GetDefaultColor(int id, bool incognito) {
return incognito ? kDefaultColorToolbarTextIncognito
: kDefaultColorToolbarText;
case COLOR_BACKGROUND_TAB_TEXT:
case COLOR_BACKGROUND_TAB_TEXT_INACTIVE:
return incognito ? kDefaultColorBackgroundTabTextIncognito
: kDefaultColorBackgroundTabText;
case COLOR_NTP_BACKGROUND:
......@@ -379,6 +381,8 @@ SkColor ThemeProperties::GetDefaultColor(int id, bool incognito) {
case COLOR_FRAME_INCOGNITO_INACTIVE:
case COLOR_BACKGROUND_TAB_INCOGNITO:
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 "
"non-incognito equivalents and an appropriate "
"|incognito| value.";
......
......@@ -41,6 +41,9 @@ class ThemeProperties {
COLOR_TOOLBAR,
COLOR_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_NTP_BACKGROUND,
COLOR_NTP_TEXT,
......
......@@ -119,6 +119,10 @@ int GetIncognitoId(int id) {
return ThemeProperties::COLOR_BACKGROUND_TAB_INCOGNITO;
case ThemeProperties::COLOR_BACKGROUND_TAB_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:
return id;
}
......
......@@ -142,9 +142,14 @@ SkColor BrowserNonClientFrameView::GetTabBackgroundColor(TabState state) const {
}
SkColor BrowserNonClientFrameView::GetTabForegroundColor(TabState state) const {
if (MD::IsRefreshUi() && state == TAB_INACTIVE &&
!GetThemeProvider()->HasCustomColor(
ThemeProperties::COLOR_BACKGROUND_TAB_TEXT)) {
if (state == TAB_ACTIVE)
return GetThemeOrDefaultColor(ThemeProperties::COLOR_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 default_color = color_utils::IsDark(background_color)
? gfx::kGoogleGrey500
......@@ -153,9 +158,6 @@ SkColor BrowserNonClientFrameView::GetTabForegroundColor(TabState state) const {
background_color);
}
const auto color_id = state == TAB_ACTIVE
? ThemeProperties::COLOR_TAB_TEXT
: ThemeProperties::COLOR_BACKGROUND_TAB_TEXT;
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