diff --git a/components/style/gecko_bindings/sugar/style_complex_color.rs b/components/style/gecko_bindings/sugar/style_complex_color.rs index 0e06b4c50ba..696eb6968b6 100644 --- a/components/style/gecko_bindings/sugar/style_complex_color.rs +++ b/components/style/gecko_bindings/sugar/style_complex_color.rs @@ -6,8 +6,9 @@ use gecko::values::{convert_nscolor_to_rgba, convert_rgba_to_nscolor}; use gecko_bindings::structs::{nscolor, StyleComplexColor}; +use values::{Auto, Either}; use values::computed::Color as ComputedColor; -use values::generics::ui::CaretColor; +use values::computed::ui::ColorOrAuto; impl From for StyleComplexColor { fn from(other: nscolor) -> Self { @@ -59,27 +60,21 @@ impl From for ComputedColor { } } -impl From> for StyleComplexColor -where - Color: Into, -{ - fn from(other: CaretColor) -> Self { +impl From for StyleComplexColor { + fn from(other: ColorOrAuto) -> Self { match other { - CaretColor::Color(color) => color.into(), - CaretColor::Auto => StyleComplexColor::auto(), + Either::First(color) => color.into(), + Either::Second(_) => StyleComplexColor::auto(), } } } -impl From for CaretColor -where - StyleComplexColor: Into, -{ +impl From for ColorOrAuto { fn from(other: StyleComplexColor) -> Self { if !other.mIsAuto { - CaretColor::Color(other.into()) + Either::First(other.into()) } else { - CaretColor::Auto + Either::Second(Auto) } } } diff --git a/components/style/properties/longhand/inherited_ui.mako.rs b/components/style/properties/longhand/inherited_ui.mako.rs index 3b516e2f1ce..b806a099123 100644 --- a/components/style/properties/longhand/inherited_ui.mako.rs +++ b/components/style/properties/longhand/inherited_ui.mako.rs @@ -43,8 +43,8 @@ ${helpers.single_keyword("-moz-user-focus", ${helpers.predefined_type( "caret-color", - "CaretColor", - "generics::ui::CaretColor::Auto", + "ColorOrAuto", + "Either::Second(Auto)", spec="https://drafts.csswg.org/css-ui/#caret-color", animation_value_type="AnimatedCaretColor", ignored_when_colors_disabled=True, diff --git a/components/style/values/computed/mod.rs b/components/style/values/computed/mod.rs index 0f27225eeb0..d6660f6a6eb 100644 --- a/components/style/values/computed/mod.rs +++ b/components/style/values/computed/mod.rs @@ -78,7 +78,7 @@ pub use self::text::{TextAlign, TextEmphasisPosition, TextEmphasisStyle, TextOve pub use self::time::Time; pub use self::transform::{Rotate, Scale, TimingFunction, Transform, TransformOperation}; pub use self::transform::{TransformOrigin, TransformStyle, Translate}; -pub use self::ui::{CaretColor, Cursor, MozForceBrokenImageIcon}; +pub use self::ui::{ColorOrAuto, Cursor, MozForceBrokenImageIcon}; #[cfg(feature = "gecko")] pub use self::ui::CursorImage; diff --git a/components/style/values/computed/ui.rs b/components/style/values/computed/ui.rs index 1313a5e5dd9..5307f79a38e 100644 --- a/components/style/values/computed/ui.rs +++ b/components/style/values/computed/ui.rs @@ -4,6 +4,7 @@ //! Computed values for UI properties +use values::{Auto, Either}; use values::computed::Number; use values::computed::color::Color; use values::computed::url::ComputedImageUrl; @@ -11,8 +12,8 @@ use values::generics::ui as generics; pub use values::specified::ui::MozForceBrokenImageIcon; -/// A computed value for the `caret-color` property. -pub type CaretColor = generics::CaretColor; +/// auto | +pub type ColorOrAuto = Either; /// A computed value for the `cursor` property. pub type Cursor = generics::Cursor; diff --git a/components/style/values/generics/ui.rs b/components/style/values/generics/ui.rs index a52ee9fcf76..9ccf1f80d53 100644 --- a/components/style/values/generics/ui.rs +++ b/components/style/values/generics/ui.rs @@ -8,17 +8,6 @@ use std::fmt::{self, Write}; use style_traits::{CssWriter, ToCss}; use style_traits::cursor::CursorKind; -/// A generic value for the `caret-color` property. -#[derive(Animate, Clone, ComputeSquaredDistance, Copy, Debug, MallocSizeOf, - PartialEq, SpecifiedValueInfo, ToAnimatedValue, ToAnimatedZero, - ToComputedValue, ToCss)] -pub enum CaretColor { - /// An explicit color. - Color(Color), - /// The keyword `auto`. - Auto, -} - /// A generic value for the `cursor` property. /// /// https://drafts.csswg.org/css-ui/#cursor diff --git a/components/style/values/specified/mod.rs b/components/style/values/specified/mod.rs index b1795acd65b..c25d58332f5 100644 --- a/components/style/values/specified/mod.rs +++ b/components/style/values/specified/mod.rs @@ -75,7 +75,7 @@ pub use self::text::{TextAlignKeyword, TextDecorationLine, TextOverflow, WordSpa pub use self::time::Time; pub use self::transform::{Rotate, Scale, TimingFunction, Transform}; pub use self::transform::{TransformOrigin, TransformStyle, Translate}; -pub use self::ui::{CaretColor, Cursor, MozForceBrokenImageIcon}; +pub use self::ui::{ColorOrAuto, Cursor, MozForceBrokenImageIcon}; #[cfg(feature = "gecko")] pub use self::ui::CursorImage; pub use super::generics::grid::GridTemplateComponent as GenericGridTemplateComponent; diff --git a/components/style/values/specified/ui.rs b/components/style/values/specified/ui.rs index d42b1e4e257..e912c24b808 100644 --- a/components/style/values/specified/ui.rs +++ b/components/style/values/specified/ui.rs @@ -9,25 +9,14 @@ use parser::{Parse, ParserContext}; use std::fmt::{self, Write}; use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss}; use style_traits::cursor::CursorKind; +use values::{Auto, Either}; use values::generics::ui as generics; use values::specified::Number; use values::specified::color::Color; use values::specified::url::SpecifiedImageUrl; -/// A specified value for the `caret-color` property. -pub type CaretColor = generics::CaretColor; - -impl Parse for CaretColor { - fn parse<'i, 't>( - context: &ParserContext, - input: &mut Parser<'i, 't>, - ) -> Result> { - if input.try(|i| i.expect_ident_matching("auto")).is_ok() { - return Ok(generics::CaretColor::Auto); - } - Ok(generics::CaretColor::Color(Color::parse(context, input)?)) - } -} +/// auto | +pub type ColorOrAuto = Either; /// A specified value for the `cursor` property. pub type Cursor = generics::Cursor;