style: Implement the counter-set property.

Bug: 1518201
Reviewed-by: emilio
This commit is contained in:
Mats Palmgren 2019-03-24 23:13:52 +01:00 committed by Emilio Cobos Álvarez
parent 14b176019c
commit 4b4b5b6a1d
7 changed files with 27 additions and 18 deletions

View file

@ -4559,7 +4559,7 @@ clip-path
</%self:impl_trait> </%self:impl_trait>
<%self:impl_trait style_struct_name="Counters" <%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 { pub fn ineffective_content_property(&self) -> bool {
self.gecko.mContents.is_empty() 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()}( pub fn set_counter_${counter_property.lower()}(
&mut self, &mut self,
v: longhands::counter_${counter_property.lower()}::computed_value::T v: longhands::counter_${counter_property.lower()}::computed_value::T

View file

@ -27,9 +27,18 @@ ${helpers.predefined_type(
${helpers.predefined_type( ${helpers.predefined_type(
"counter-reset", "counter-reset",
"CounterReset", "CounterSetOrReset",
initial_value="Default::default()", initial_value="Default::default()",
animation_value_type="discrete", animation_value_type="discrete",
spec="https://drafts.csswg.org/css-lists-3/#propdef-counter-reset", spec="https://drafts.csswg.org/css-lists-3/#propdef-counter-reset",
servo_restyle_damage="rebuild_and_reflow", 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",
)}

View file

@ -7,13 +7,13 @@
use crate::values::computed::url::ComputedImageUrl; use crate::values::computed::url::ComputedImageUrl;
use crate::values::generics::counters as generics; use crate::values::generics::counters as generics;
use crate::values::generics::counters::CounterIncrement as GenericCounterIncrement; 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. /// A computed value for the `counter-increment` property.
pub type CounterIncrement = GenericCounterIncrement<i32>; pub type CounterIncrement = GenericCounterIncrement<i32>;
/// A computed value for the `counter-increment` property. /// A computed value for the `counter-set` and `counter-reset` properties.
pub type CounterReset = GenericCounterReset<i32>; pub type CounterSetOrReset = GenericCounterSetOrReset<i32>;
/// A computed value for the `content` property. /// A computed value for the `content` property.
pub type Content = generics::Content<ComputedImageUrl>; pub type Content = generics::Content<ComputedImageUrl>;

View file

@ -45,7 +45,7 @@ pub use self::box_::{OverflowClipBox, OverscrollBehavior, Perspective, Resize};
pub use self::box_::{ScrollSnapAlign, ScrollSnapType, TouchAction, VerticalAlign, WillChange}; pub use self::box_::{ScrollSnapAlign, ScrollSnapType, TouchAction, VerticalAlign, WillChange};
pub use self::color::{Color, ColorOrAuto, ColorPropertyValue, RGBAColor}; pub use self::color::{Color, ColorOrAuto, ColorPropertyValue, RGBAColor};
pub use self::column::ColumnCount; 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::easing::TimingFunction;
pub use self::effects::{BoxShadow, Filter, SimpleShadow}; pub use self::effects::{BoxShadow, Filter, SimpleShadow};
pub use self::flex::FlexBasis; pub use self::flex::FlexBasis;

View file

@ -45,21 +45,21 @@ impl<I> Deref for CounterIncrement<I> {
} }
} }
/// A generic value for the `counter-reset` property. /// A generic value for the `counter-set` and `counter-reset` properties.
#[derive( #[derive(
Clone, Debug, Default, MallocSizeOf, PartialEq, SpecifiedValueInfo, ToComputedValue, ToCss, Clone, Debug, Default, MallocSizeOf, PartialEq, SpecifiedValueInfo, ToComputedValue, ToCss,
)] )]
pub struct CounterReset<I>(Counters<I>); pub struct CounterSetOrReset<I>(Counters<I>);
impl<I> CounterReset<I> { impl<I> CounterSetOrReset<I> {
/// Returns a new value for `counter-reset`. /// Returns a new value for `counter-set` / `counter-reset`.
#[inline] #[inline]
pub fn new(counters: Vec<CounterPair<I>>) -> Self { pub fn new(counters: Vec<CounterPair<I>>) -> Self {
CounterReset(Counters(counters.into_boxed_slice())) CounterSetOrReset(Counters(counters.into_boxed_slice()))
} }
} }
impl<I> Deref for CounterReset<I> { impl<I> Deref for CounterSetOrReset<I> {
type Target = [CounterPair<I>]; type Target = [CounterPair<I>];
#[inline] #[inline]

View file

@ -10,7 +10,7 @@ use crate::parser::{Parse, ParserContext};
use crate::values::generics::counters as generics; use crate::values::generics::counters as generics;
use crate::values::generics::counters::CounterIncrement as GenericCounterIncrement; use crate::values::generics::counters::CounterIncrement as GenericCounterIncrement;
use crate::values::generics::counters::CounterPair; 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")] #[cfg(feature = "gecko")]
use crate::values::generics::CounterStyleOrNone; use crate::values::generics::CounterStyleOrNone;
use crate::values::specified::url::SpecifiedImageUrl; use crate::values::specified::url::SpecifiedImageUrl;
@ -34,10 +34,10 @@ impl Parse for CounterIncrement {
} }
} }
/// A specified value for the `counter-increment` property. /// A specified value for the `counter-set` and `counter-reset` properties.
pub type CounterReset = GenericCounterReset<Integer>; pub type CounterSetOrReset = GenericCounterSetOrReset<Integer>;
impl Parse for CounterReset { impl Parse for CounterSetOrReset {
fn parse<'i, 't>( fn parse<'i, 't>(
context: &ParserContext, context: &ParserContext,
input: &mut Parser<'i, 't>, input: &mut Parser<'i, 't>,

View file

@ -44,7 +44,7 @@ pub use self::box_::{ScrollSnapAlign, ScrollSnapType};
pub use self::box_::{TouchAction, TransitionProperty, VerticalAlign, WillChange}; pub use self::box_::{TouchAction, TransitionProperty, VerticalAlign, WillChange};
pub use self::color::{Color, ColorOrAuto, ColorPropertyValue, RGBAColor}; pub use self::color::{Color, ColorOrAuto, ColorPropertyValue, RGBAColor};
pub use self::column::ColumnCount; 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::easing::TimingFunction;
pub use self::effects::{BoxShadow, Filter, SimpleShadow}; pub use self::effects::{BoxShadow, Filter, SimpleShadow};
pub use self::flex::FlexBasis; pub use self::flex::FlexBasis;