Commit bfad81bd authored by Peter Kasting's avatar Peter Kasting Committed by Commit Bot

Change omnibox background color from push-toward-dark to push-toward-nearest.

Bug: 1042807
Change-Id: I9f8554970d5344bf9c90ced78aa925e8fa77282b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2023276Reviewed-by: default avatarEvan Stade <estade@chromium.org>
Commit-Queue: Peter Kasting <pkasting@chromium.org>
Cr-Commit-Position: refs/heads/master@{#735649}
parent 4ea8bdc0
......@@ -623,12 +623,13 @@ SkColor ThemeService::GetDefaultColor(int id, bool incognito) const {
case TP::COLOR_OMNIBOX_BACKGROUND: {
constexpr float kMinOmniboxToolbarContrast = 1.3f;
const SkColor toolbar_color = GetColor(TP::COLOR_TOOLBAR, incognito);
const SkColor darkest_color = color_utils::GetDarkestColor();
const SkColor endpoint_color =
color_utils::GetEndpointColorWithMinContrast(toolbar_color);
const SkColor blend_target =
(color_utils::GetContrastRatio(toolbar_color, darkest_color) >=
(color_utils::GetContrastRatio(toolbar_color, endpoint_color) >=
kMinOmniboxToolbarContrast)
? darkest_color
: color_utils::GetColorWithMaxContrast(darkest_color);
? endpoint_color
: color_utils::GetColorWithMaxContrast(endpoint_color);
return color_utils::BlendForMinContrast(toolbar_color, toolbar_color,
blend_target,
kMinOmniboxToolbarContrast)
......
......@@ -19,11 +19,12 @@ ui::ColorTransform ChooseOmniboxBgBlendTarget() {
return base::BindRepeating(
[](SkColor input_color, const ui::ColorMixer& mixer) {
const SkColor toolbar_color = mixer.GetResultColor(kColorToolbar);
const SkColor darkest_color = color_utils::GetDarkestColor();
return (color_utils::GetContrastRatio(toolbar_color, darkest_color) >=
const SkColor endpoint_color =
color_utils::GetEndpointColorWithMinContrast(toolbar_color);
return (color_utils::GetContrastRatio(toolbar_color, endpoint_color) >=
kMinOmniboxToolbarContrast)
? darkest_color
: color_utils::GetColorWithMaxContrast(darkest_color);
? endpoint_color
: color_utils::GetColorWithMaxContrast(endpoint_color);
});
}
......
......@@ -106,7 +106,7 @@ ColorTransform ContrastInvert(ColorTransform transform) {
const SkColor far_endpoint =
color_utils::GetColorWithMaxContrast(foreground);
const SkColor near_endpoint =
color_utils::GetColorWithMaxContrast(far_endpoint);
color_utils::GetEndpointColorWithMinContrast(foreground);
const float contrast_ratio =
color_utils::GetContrastRatio(foreground, far_endpoint);
return color_utils::BlendForMinContrast(foreground, near_endpoint,
......
......@@ -306,6 +306,10 @@ SkColor GetColorWithMaxContrast(SkColor color) {
return IsDark(color) ? SK_ColorWHITE : g_darkest_color;
}
SkColor GetEndpointColorWithMinContrast(SkColor color) {
return IsDark(color) ? g_darkest_color : SK_ColorWHITE;
}
SkColor BlendTowardMaxContrast(SkColor color, SkAlpha alpha) {
SkAlpha original_alpha = SkColorGetA(color);
SkColor blended_color = AlphaBlend(GetColorWithMaxContrast(color),
......@@ -400,10 +404,6 @@ std::string SkColorToRgbString(SkColor color) {
SkColorGetB(color));
}
SkColor GetDarkestColor() {
return g_darkest_color;
}
SkColor SetDarkestColorForTesting(SkColor color) {
const SkColor previous_darkest_color = g_darkest_color;
g_darkest_color = color;
......
......@@ -127,6 +127,10 @@ GFX_EXPORT bool IsDark(SkColor color);
// |color|.
GFX_EXPORT SkColor GetColorWithMaxContrast(SkColor color);
// Returns whichever of white or the darkest available color contrasts less with
// |color|.
GFX_EXPORT SkColor GetEndpointColorWithMinContrast(SkColor color);
// Blends towards the color with max contrast by |alpha|. The alpha of
// the original color is preserved.
GFX_EXPORT SkColor BlendTowardMaxContrast(SkColor color, SkAlpha alpha);
......@@ -171,9 +175,6 @@ GFX_EXPORT std::string SkColorToRgbaString(SkColor color);
// Creates an rgb string for an SkColor. For example: '255,0,255'.
GFX_EXPORT std::string SkColorToRgbString(SkColor color);
// Returns the darkest available color.
GFX_EXPORT SkColor GetDarkestColor();
// Sets the darkest available color to |color|. Returns the previous darkest
// color.
GFX_EXPORT SkColor SetDarkestColorForTesting(SkColor color);
......
......@@ -205,14 +205,6 @@ TEST(ColorUtils, SkColorToRgbString) {
EXPECT_EQ(color_string, "50,100,150");
}
TEST(ColorUtils, GetAndSetDarkestColor) {
const SkColor old_darkest_color = GetDarkestColor();
EXPECT_EQ(old_darkest_color, SetDarkestColorForTesting(SK_ColorLTGRAY));
EXPECT_EQ(SK_ColorLTGRAY, GetDarkestColor());
EXPECT_EQ(SK_ColorLTGRAY, SetDarkestColorForTesting(old_darkest_color));
EXPECT_EQ(old_darkest_color, GetDarkestColor());
}
TEST(ColorUtils, IsDarkDarkestColorChange) {
ASSERT_FALSE(IsDark(SK_ColorLTGRAY));
const SkColor old_darkest_color = SetDarkestColorForTesting(SK_ColorLTGRAY);
......@@ -247,6 +239,20 @@ TEST(ColorUtils, GetColorWithMaxContrast) {
EXPECT_EQ(old_darkest_color, GetColorWithMaxContrast(SK_ColorWHITE));
}
TEST(ColorUtils, GetEndpointColorWithMinContrast) {
const SkColor old_darkest_color = SetDarkestColorForTesting(SK_ColorBLACK);
EXPECT_EQ(SK_ColorBLACK, GetEndpointColorWithMinContrast(SK_ColorBLACK));
EXPECT_EQ(SK_ColorBLACK,
GetEndpointColorWithMinContrast(SkColorSetRGB(0x75, 0x75, 0x75)));
EXPECT_EQ(SK_ColorWHITE, GetEndpointColorWithMinContrast(SK_ColorWHITE));
EXPECT_EQ(SK_ColorWHITE,
GetEndpointColorWithMinContrast(SkColorSetRGB(0x76, 0x76, 0x76)));
SetDarkestColorForTesting(old_darkest_color);
EXPECT_EQ(old_darkest_color,
GetEndpointColorWithMinContrast(old_darkest_color));
}
TEST(ColorUtils, BlendForMinContrast_ForegroundAlreadyMeetsMinimum) {
const auto result = BlendForMinContrast(SK_ColorBLACK, SK_ColorWHITE);
EXPECT_EQ(SK_AlphaTRANSPARENT, result.alpha);
......
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