Implement accent-color CSS property
The accent-color CSS property lets the page specify a color to be used
in form controls instead of the builtin colors.
This patch does not change focus ring colors or text selection colors as
mentioned in this issue:
https://github.com/w3c/csswg-drafts/issues/5657
Spec: https://drafts.csswg.org/css-ui-4/#widget-accent
I2P: https://groups.google.com/a/chromium.org/g/blink-dev/c/q9zf-frdewo
I plan to have the particular usage of colors and contrasting reviewed
by UX and accessibility before launching this feature.
Bug: 1092093
Change-Id: Ida4586a73219b5c3347cc1385b01d02714b02abe
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2681146
Commit-Queue: Joey Arhar <[email protected]>
Reviewed-by: Rune Lillesveen <[email protected]>
Reviewed-by: Dmitry Gozman <[email protected]>
Reviewed-by: Elly Fong-Jones <[email protected]>
Reviewed-by: Mason Freed <[email protected]>
Cr-Commit-Position: refs/heads/master@{#862542}
diff --git a/ui/native_theme/native_theme_base.h b/ui/native_theme/native_theme_base.h
index bb16add..a29df63 100644
--- a/ui/native_theme/native_theme_base.h
+++ b/ui/native_theme/native_theme_base.h
@@ -35,7 +35,8 @@
State state,
const gfx::Rect& rect,
const ExtraParams& extra,
- ColorScheme color_scheme) const override;
+ ColorScheme color_scheme,
+ const base::Optional<SkColor>& accent_color) const override;
bool SupportsNinePatch(Part part) const override;
gfx::Size GetNinePatchCanvasSize(Part part) const override;
@@ -125,13 +126,15 @@
State state,
const gfx::Rect& rect,
const ButtonExtraParams& button,
- ColorScheme color_scheme) const;
+ ColorScheme color_scheme,
+ const base::Optional<SkColor>& accent_color) const;
void PaintRadio(cc::PaintCanvas* canvas,
State state,
const gfx::Rect& rect,
const ButtonExtraParams& button,
- ColorScheme color_scheme) const;
+ ColorScheme color_scheme,
+ const base::Optional<SkColor>& accent_color) const;
void PaintButton(cc::PaintCanvas* canvas,
State state,
@@ -174,13 +177,15 @@
State state,
const gfx::Rect& rect,
const SliderExtraParams& slider,
- ColorScheme color_scheme) const;
+ ColorScheme color_scheme,
+ const base::Optional<SkColor>& accent_color) const;
void PaintSliderThumb(cc::PaintCanvas* canvas,
State state,
const gfx::Rect& rect,
const SliderExtraParams& slider,
- ColorScheme color_scheme) const;
+ ColorScheme color_scheme,
+ const base::Optional<SkColor>& accent_color) const;
virtual void PaintInnerSpinButton(
cc::PaintCanvas* canvas,
@@ -193,7 +198,8 @@
State state,
const gfx::Rect& rect,
const ProgressBarExtraParams& progress_bar,
- ColorScheme color_scheme) const;
+ ColorScheme color_scheme,
+ const base::Optional<SkColor>& accent_color) const;
virtual void PaintFrameTopArea(cc::PaintCanvas* canvas,
State state,
@@ -274,13 +280,15 @@
// Paint the common parts of the checkboxes and radio buttons.
// border_radius specifies how rounded the corners should be.
- SkRect PaintCheckboxRadioCommon(cc::PaintCanvas* canvas,
- State state,
- const gfx::Rect& rect,
- const ButtonExtraParams& button,
- bool is_checkbox,
- const SkScalar border_radius,
- ColorScheme color_scheme) const;
+ SkRect PaintCheckboxRadioCommon(
+ cc::PaintCanvas* canvas,
+ State state,
+ const gfx::Rect& rect,
+ const ButtonExtraParams& button,
+ bool is_checkbox,
+ const SkScalar border_radius,
+ ColorScheme color_scheme,
+ const base::Optional<SkColor>& accent_color) const;
SkColor ControlsBackgroundColorForState(State state,
ColorScheme color_scheme) const;