From 4b4b5b6a1dc7df63d085d2ea6fe09201a841728f Mon Sep 17 00:00:00 2001 From: Mats Palmgren Date: Sun, 24 Mar 2019 23:13:52 +0100 Subject: [PATCH] style: Implement the counter-set property. Bug: 1518201 Reviewed-by: emilio --- components/style/properties/gecko.mako.rs | 4 ++-- .../style/properties/longhands/counters.mako.rs | 11 ++++++++++- components/style/values/computed/counters.rs | 6 +++--- components/style/values/computed/mod.rs | 2 +- components/style/values/generics/counters.rs | 12 ++++++------ components/style/values/specified/counters.rs | 8 ++++---- components/style/values/specified/mod.rs | 2 +- 7 files changed, 27 insertions(+), 18 deletions(-) diff --git a/components/style/properties/gecko.mako.rs b/components/style/properties/gecko.mako.rs index 0879e5846c3..e3bd2ea559f 100644 --- a/components/style/properties/gecko.mako.rs +++ b/components/style/properties/gecko.mako.rs @@ -4559,7 +4559,7 @@ clip-path <%self:impl_trait style_struct_name="Counters" - skip_longhands="content counter-increment counter-reset"> + skip_longhands="content counter-increment counter-reset counter-set"> pub fn ineffective_content_property(&self) -> bool { self.gecko.mContents.is_empty() } @@ -4788,7 +4788,7 @@ clip-path ) } - % for counter_property in ["Increment", "Reset"]: + % for counter_property in ["Increment", "Reset", "Set"]: pub fn set_counter_${counter_property.lower()}( &mut self, v: longhands::counter_${counter_property.lower()}::computed_value::T diff --git a/components/style/properties/longhands/counters.mako.rs b/components/style/properties/longhands/counters.mako.rs index b690eeb5c45..715aba1066e 100644 --- a/components/style/properties/longhands/counters.mako.rs +++ b/components/style/properties/longhands/counters.mako.rs @@ -27,9 +27,18 @@ ${helpers.predefined_type( ${helpers.predefined_type( "counter-reset", - "CounterReset", + "CounterSetOrReset", initial_value="Default::default()", animation_value_type="discrete", spec="https://drafts.csswg.org/css-lists-3/#propdef-counter-reset", servo_restyle_damage="rebuild_and_reflow", )} + +${helpers.predefined_type( + "counter-set", + "CounterSetOrReset", + initial_value="Default::default()", + animation_value_type="discrete", + spec="https://drafts.csswg.org/css-lists-3/#propdef-counter-set", + servo_restyle_damage="rebuild_and_reflow", +)} diff --git a/components/style/values/computed/counters.rs b/components/style/values/computed/counters.rs index aaf83afe485..3a083632eb9 100644 --- a/components/style/values/computed/counters.rs +++ b/components/style/values/computed/counters.rs @@ -7,13 +7,13 @@ use crate::values::computed::url::ComputedImageUrl; use crate::values::generics::counters as generics; use crate::values::generics::counters::CounterIncrement as GenericCounterIncrement; -use crate::values::generics::counters::CounterReset as GenericCounterReset; +use crate::values::generics::counters::CounterSetOrReset as GenericCounterSetOrReset; /// A computed value for the `counter-increment` property. pub type CounterIncrement = GenericCounterIncrement; -/// A computed value for the `counter-increment` property. -pub type CounterReset = GenericCounterReset; +/// A computed value for the `counter-set` and `counter-reset` properties. +pub type CounterSetOrReset = GenericCounterSetOrReset; /// A computed value for the `content` property. pub type Content = generics::Content; diff --git a/components/style/values/computed/mod.rs b/components/style/values/computed/mod.rs index 1f7d1e3eddc..184bac3b12a 100644 --- a/components/style/values/computed/mod.rs +++ b/components/style/values/computed/mod.rs @@ -45,7 +45,7 @@ pub use self::box_::{OverflowClipBox, OverscrollBehavior, Perspective, Resize}; pub use self::box_::{ScrollSnapAlign, ScrollSnapType, TouchAction, VerticalAlign, WillChange}; pub use self::color::{Color, ColorOrAuto, ColorPropertyValue, RGBAColor}; pub use self::column::ColumnCount; -pub use self::counters::{Content, ContentItem, CounterIncrement, CounterReset}; +pub use self::counters::{Content, ContentItem, CounterIncrement, CounterSetOrReset}; pub use self::easing::TimingFunction; pub use self::effects::{BoxShadow, Filter, SimpleShadow}; pub use self::flex::FlexBasis; diff --git a/components/style/values/generics/counters.rs b/components/style/values/generics/counters.rs index 0f5d6bbb939..7bab3c4bbc5 100644 --- a/components/style/values/generics/counters.rs +++ b/components/style/values/generics/counters.rs @@ -45,21 +45,21 @@ impl Deref for CounterIncrement { } } -/// A generic value for the `counter-reset` property. +/// A generic value for the `counter-set` and `counter-reset` properties. #[derive( Clone, Debug, Default, MallocSizeOf, PartialEq, SpecifiedValueInfo, ToComputedValue, ToCss, )] -pub struct CounterReset(Counters); +pub struct CounterSetOrReset(Counters); -impl CounterReset { - /// Returns a new value for `counter-reset`. +impl CounterSetOrReset { + /// Returns a new value for `counter-set` / `counter-reset`. #[inline] pub fn new(counters: Vec>) -> Self { - CounterReset(Counters(counters.into_boxed_slice())) + CounterSetOrReset(Counters(counters.into_boxed_slice())) } } -impl Deref for CounterReset { +impl Deref for CounterSetOrReset { type Target = [CounterPair]; #[inline] diff --git a/components/style/values/specified/counters.rs b/components/style/values/specified/counters.rs index 6ee6575fc94..262e7765a4a 100644 --- a/components/style/values/specified/counters.rs +++ b/components/style/values/specified/counters.rs @@ -10,7 +10,7 @@ use crate::parser::{Parse, ParserContext}; use crate::values::generics::counters as generics; use crate::values::generics::counters::CounterIncrement as GenericCounterIncrement; use crate::values::generics::counters::CounterPair; -use crate::values::generics::counters::CounterReset as GenericCounterReset; +use crate::values::generics::counters::CounterSetOrReset as GenericCounterSetOrReset; #[cfg(feature = "gecko")] use crate::values::generics::CounterStyleOrNone; use crate::values::specified::url::SpecifiedImageUrl; @@ -34,10 +34,10 @@ impl Parse for CounterIncrement { } } -/// A specified value for the `counter-increment` property. -pub type CounterReset = GenericCounterReset; +/// A specified value for the `counter-set` and `counter-reset` properties. +pub type CounterSetOrReset = GenericCounterSetOrReset; -impl Parse for CounterReset { +impl Parse for CounterSetOrReset { fn parse<'i, 't>( context: &ParserContext, input: &mut Parser<'i, 't>, diff --git a/components/style/values/specified/mod.rs b/components/style/values/specified/mod.rs index 7295f060697..e673005f3e6 100644 --- a/components/style/values/specified/mod.rs +++ b/components/style/values/specified/mod.rs @@ -44,7 +44,7 @@ pub use self::box_::{ScrollSnapAlign, ScrollSnapType}; pub use self::box_::{TouchAction, TransitionProperty, VerticalAlign, WillChange}; pub use self::color::{Color, ColorOrAuto, ColorPropertyValue, RGBAColor}; pub use self::column::ColumnCount; -pub use self::counters::{Content, ContentItem, CounterIncrement, CounterReset}; +pub use self::counters::{Content, ContentItem, CounterIncrement, CounterSetOrReset}; pub use self::easing::TimingFunction; pub use self::effects::{BoxShadow, Filter, SimpleShadow}; pub use self::flex::FlexBasis;