Skip to content

Commit

Permalink
cros: move ash border init to chromeos color mixer
Browse files Browse the repository at this point in the history
Since Lacros windows cannot access to ash color mixer, the border of
Lacros windows have red color aka. the placeholder color.

This cl moves the initializations of highlight border colors from ash
color mixer to the chrome native color mixer.

To get correct background color, add a new color transform
`GetEndpointColorWithMinContrast`.

Bug: 1341662
Change-Id: I2206048bc153ee62987ef3b7e1e6820d35baa350
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3788652
Reviewed-by: Peter Kasting <pkasting@chromium.org>
Reviewed-by: Min Chen <minch@chromium.org>
Commit-Queue: Xiaodan Zhu <zxdan@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1030247}
  • Loading branch information
Xiaodan Zhu authored and Chromium LUCI CQ committed Aug 1, 2022
1 parent a98a6ed commit c38b70b
Show file tree
Hide file tree
Showing 7 changed files with 69 additions and 41 deletions.
25 changes: 4 additions & 21 deletions ash/style/ash_color_mixer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -97,23 +97,6 @@ void AddControlsColors(ui::ColorMixer& mixer,
mixer[ui::kColorAshFocusRing] = use_dark_color
? ui::ColorTransform(gfx::kGoogleBlue300)
: ui::ColorTransform(gfx::kGoogleBlue600);

mixer[ui::kColorAshSystemUIBorderColor1] =
use_dark_color ? ui::ColorTransform(kColorAshShieldAndBase80)
: ui::ColorTransform(SkColorSetA(SK_ColorBLACK, 0x0F));
mixer[ui::kColorAshSystemUIBorderColor2] =
use_dark_color ? ui::ColorTransform(kColorAshShieldAndBase60)
: ui::ColorTransform(SkColorSetA(SK_ColorBLACK, 0x0F));
mixer[ui::kColorAshSystemUIBorderColor3] = {SkColorSetA(SK_ColorBLACK, 0x0F)};

mixer[ui::kColorAshSystemUIHighlightColor1] =
use_dark_color ? ui::ColorTransform(SkColorSetA(SK_ColorWHITE, 0x14))
: ui::ColorTransform(SkColorSetA(SK_ColorWHITE, 0x4C));
mixer[ui::kColorAshSystemUIHighlightColor2] =
use_dark_color ? ui::ColorTransform(SkColorSetA(SK_ColorWHITE, 0x0F))
: ui::ColorTransform(SkColorSetA(SK_ColorWHITE, 0x33));
mixer[ui::kColorAshSystemUIHighlightColor3] = {
ui::kColorAshSystemUIHighlightColor1};
}

// Mappings the Content layer colors for Material 2.
Expand Down Expand Up @@ -416,13 +399,13 @@ void AddAshColorMixer(ui::ColorProvider* provider,
if (!features::IsDarkLightModeEnabled()) {
ash::ScopedLightModeAsDefault scoped_light_mode_as_default;
mixer[ui::kColorAshSystemUILightBorderColor1] = {
ui::kColorAshSystemUIBorderColor1};
ui::kColorHighlightBorderBorder1};
mixer[ui::kColorAshSystemUILightBorderColor2] = {
ui::kColorAshSystemUIBorderColor2};
ui::kColorHighlightBorderBorder2};
mixer[ui::kColorAshSystemUILightHighlightColor1] = {
ui::kColorAshSystemUIHighlightColor1};
ui::kColorHighlightBorderHighlight1};
mixer[ui::kColorAshSystemUILightHighlightColor2] = {
ui::kColorAshSystemUIHighlightColor2};
ui::kColorHighlightBorderHighlight2};
return;
}

Expand Down
12 changes: 6 additions & 6 deletions ash/style/ash_color_provider.cc
Original file line number Diff line number Diff line change
Expand Up @@ -181,17 +181,17 @@ SkColor AshColorProvider::GetControlsLayerColor(ControlsLayerType type) const {
case ControlsLayerType::kFocusRingColor:
return color_provider->GetColor(ui::kColorAshFocusRing);
case ControlsLayerType::kHighlightColor1:
return color_provider->GetColor(ui::kColorAshSystemUIHighlightColor1);
return color_provider->GetColor(ui::kColorHighlightBorderHighlight1);
case ControlsLayerType::kHighlightColor2:
return color_provider->GetColor(ui::kColorAshSystemUIHighlightColor2);
return color_provider->GetColor(ui::kColorHighlightBorderHighlight2);
case ControlsLayerType::kHighlightColor3:
return color_provider->GetColor(ui::kColorAshSystemUIHighlightColor3);
return color_provider->GetColor(ui::kColorHighlightBorderHighlight3);
case ControlsLayerType::kBorderColor1:
return color_provider->GetColor(ui::kColorAshSystemUIBorderColor1);
return color_provider->GetColor(ui::kColorHighlightBorderBorder1);
case ControlsLayerType::kBorderColor2:
return color_provider->GetColor(ui::kColorAshSystemUIBorderColor2);
return color_provider->GetColor(ui::kColorHighlightBorderBorder2);
case ControlsLayerType::kBorderColor3:
return color_provider->GetColor(ui::kColorAshSystemUIBorderColor3);
return color_provider->GetColor(ui::kColorHighlightBorderBorder3);
}
}

Expand Down
27 changes: 26 additions & 1 deletion ui/color/chromeos/native_color_mixers_chromeos.cc
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,32 @@ void AddNativeCoreColorMixer(ColorProvider* provider,
mixer[kColorAshSystemUIMenuItemBackgroundSelected] = {
kColorMenuItemBackgroundSelected};
mixer[kColorAshSystemUIMenuSeparator] = {kColorMenuSeparator};
if (key.color_mode == ColorProviderManager::ColorMode::kDark) {
bool dark_mode = key.color_mode == ColorProviderManager::ColorMode::kDark;

// Add color initializations for highlight border.
{
const ui::ColorTransform light_border = {SkColorSetA(SK_ColorBLACK, 0x0F)};
const auto default_background_color =
ui::GetEndpointColorWithMinContrast({ui::kColorPrimaryBackground});
const auto background_color =
key.user_color.has_value() ? ui::ColorTransform(key.user_color.value())
: default_background_color;
mixer[kColorHighlightBorderBorder1] =
dark_mode ? SetAlpha(background_color, SK_AlphaOPAQUE * 0.8f)
: light_border;
mixer[kColorHighlightBorderBorder2] =
dark_mode ? SetAlpha(background_color, SK_AlphaOPAQUE * 0.6f)
: light_border;
mixer[kColorHighlightBorderBorder3] = light_border;

mixer[kColorHighlightBorderHighlight1] = {
SkColorSetA(SK_ColorWHITE, dark_mode ? 0x14 : 0x4C)};
mixer[kColorHighlightBorderHighlight2] = {
SkColorSetA(SK_ColorWHITE, dark_mode ? 0x0F : 0x33)};
mixer[kColorHighlightBorderHighlight3] = {kColorHighlightBorderHighlight1};
}

if (dark_mode) {
const bool high_elevation =
key.elevation_mode == ColorProviderManager::ElevationMode::kHigh;
const SkColor base_color =
Expand Down
14 changes: 7 additions & 7 deletions ui/color/color_id.h
Original file line number Diff line number Diff line change
Expand Up @@ -210,13 +210,6 @@
\
E_CPONLY(kColorAshOnboardingFocusRing) \
\
E_CPONLY(kColorAshSystemUIBorderColor1) \
E_CPONLY(kColorAshSystemUIBorderColor2) \
E_CPONLY(kColorAshSystemUIBorderColor3) \
E_CPONLY(kColorAshSystemUIHighlightColor1) \
E_CPONLY(kColorAshSystemUIHighlightColor2) \
E_CPONLY(kColorAshSystemUIHighlightColor3) \
\
/* TODO(crbug/1319917): Remove these when dark light mode is launched. */ \
E_CPONLY(kColorAshSystemUILightBorderColor1) \
E_CPONLY(kColorAshSystemUILightBorderColor2) \
Expand All @@ -228,6 +221,13 @@
E_CPONLY(kColorAshSystemUIMenuItemBackgroundSelected) \
E_CPONLY(kColorAshSystemUIMenuSeparator) \
\
E_CPONLY(kColorHighlightBorderBorder1) \
E_CPONLY(kColorHighlightBorderBorder2) \
E_CPONLY(kColorHighlightBorderBorder3) \
E_CPONLY(kColorHighlightBorderHighlight1) \
E_CPONLY(kColorHighlightBorderHighlight2) \
E_CPONLY(kColorHighlightBorderHighlight3) \
\
E_CPONLY(kColorNativeColor1) \
E_CPONLY(kColorNativeColor1Shade1) \
E_CPONLY(kColorNativeColor1Shade2) \
Expand Down
15 changes: 15 additions & 0 deletions ui/color/color_transform.cc
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,21 @@ ColorTransform GetColorWithMaxContrast(ColorTransform transform) {
return base::BindRepeating(generator, std::move(transform));
}

ColorTransform GetEndpointColorWithMinContrast(ColorTransform transform) {
const auto generator = [](ColorTransform transform, SkColor input_color,
const ColorMixer& mixer) {
const SkColor transform_color = transform.Run(input_color, mixer);
const SkColor result_color =
color_utils::GetEndpointColorWithMinContrast(transform_color);
DVLOG(2) << "ColorTransform GetEndPointColorWithMinContrast:"
<< " Input Color: " << SkColorName(input_color)
<< " Transform Color: " << SkColorName(transform_color)
<< " Result Color: " << SkColorName(result_color);
return result_color;
};
return base::BindRepeating(generator, std::move(transform));
}

ColorTransform GetResultingPaintColor(ColorTransform foreground_transform,
ColorTransform background_transform) {
const auto generator = [](ColorTransform foreground_transform,
Expand Down
5 changes: 5 additions & 0 deletions ui/color/color_transform.h
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,11 @@ COMPONENT_EXPORT(COLOR) ColorTransform FromTransformInput();
COMPONENT_EXPORT(COLOR)
ColorTransform GetColorWithMaxContrast(ColorTransform transform);

// A transform which returns the end point color with min contrast against the
// result of |transform|.
COMPONENT_EXPORT(COLOR)
ColorTransform GetEndpointColorWithMinContrast(ColorTransform transform);

// A transform which returns the resulting paint color of the result of
// |foreground_transform| over the result of |background_transform|.
COMPONENT_EXPORT(COLOR)
Expand Down
12 changes: 6 additions & 6 deletions ui/views/highlight_border.cc
Original file line number Diff line number Diff line change
Expand Up @@ -80,13 +80,13 @@ SkColor HighlightBorder::GetHighlightColor(const views::View& view,
} else {
switch (type) {
case HighlightBorder::Type::kHighlightBorder1:
highlight_color_id = ui::kColorAshSystemUIHighlightColor1;
highlight_color_id = ui::kColorHighlightBorderHighlight1;
break;
case HighlightBorder::Type::kHighlightBorder2:
highlight_color_id = ui::kColorAshSystemUIHighlightColor2;
highlight_color_id = ui::kColorHighlightBorderHighlight2;
break;
case HighlightBorder::Type::kHighlightBorder3:
highlight_color_id = ui::kColorAshSystemUIHighlightColor3;
highlight_color_id = ui::kColorHighlightBorderHighlight3;
break;
}
}
Expand Down Expand Up @@ -114,13 +114,13 @@ SkColor HighlightBorder::GetBorderColor(const views::View& view,
} else {
switch (type) {
case HighlightBorder::Type::kHighlightBorder1:
border_color_id = ui::kColorAshSystemUIBorderColor1;
border_color_id = ui::kColorHighlightBorderBorder1;
break;
case HighlightBorder::Type::kHighlightBorder2:
border_color_id = ui::kColorAshSystemUIBorderColor2;
border_color_id = ui::kColorHighlightBorderBorder2;
break;
case HighlightBorder::Type::kHighlightBorder3:
border_color_id = ui::kColorAshSystemUIBorderColor3;
border_color_id = ui::kColorHighlightBorderBorder3;
break;
}
}
Expand Down

0 comments on commit c38b70b

Please sign in to comment.