diff --git a/components/style/properties/helpers.mako.rs b/components/style/properties/helpers.mako.rs index 7156e9f9585..1c0c441ac63 100644 --- a/components/style/properties/helpers.mako.rs +++ b/components/style/properties/helpers.mako.rs @@ -333,9 +333,9 @@ <%def name="single_keyword(name, values, vector=False, **kwargs)"> <%call expr="single_keyword_computed(name, values, vector, **kwargs)"> use values::computed::ComputedValueAsSpecified; - use values::NoViewportPercentage; + use values::HasViewportPercentage; impl ComputedValueAsSpecified for SpecifiedValue {} - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); diff --git a/components/style/properties/longhand/background.mako.rs b/components/style/properties/longhand/background.mako.rs index ca790ab884c..e5cffa016c2 100644 --- a/components/style/properties/longhand/background.mako.rs +++ b/components/style/properties/longhand/background.mako.rs @@ -16,8 +16,8 @@ ${helpers.predefined_type("background-color", "CSSColor", has_uncacheable_values="${product == 'gecko'}"> use std::fmt; use style_traits::ToCss; + use values::HasViewportPercentage; use values::specified::Image; - use values::NoViewportPercentage; pub mod computed_value { use values::computed; @@ -35,7 +35,7 @@ ${helpers.predefined_type("background-color", "CSSColor", } } - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); #[derive(Debug, Clone, PartialEq)] #[cfg_attr(feature = "servo", derive(HeapSizeOf))] diff --git a/components/style/properties/longhand/border.mako.rs b/components/style/properties/longhand/border.mako.rs index b5c4ff6b1d3..55688015ed8 100644 --- a/components/style/properties/longhand/border.mako.rs +++ b/components/style/properties/longhand/border.mako.rs @@ -87,10 +87,10 @@ ${helpers.single_keyword("-moz-float-edge", "content-box margin-box", spec="https://drafts.csswg.org/css-backgrounds/#border-image-source"> use std::fmt; use style_traits::ToCss; - use values::NoViewportPercentage; + use values::HasViewportPercentage; use values::specified::Image; - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); pub mod computed_value { use values::computed; @@ -279,9 +279,9 @@ ${helpers.single_keyword("-moz-float-edge", "content-box margin-box", spec="https://drafts.csswg.org/css-backgrounds/#border-image-repeat"> use std::fmt; use style_traits::ToCss; - use values::NoViewportPercentage; + use values::HasViewportPercentage; - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); pub mod computed_value { pub use super::RepeatKeyword; @@ -557,10 +557,10 @@ ${helpers.single_keyword("-moz-float-edge", "content-box margin-box", spec="https://drafts.csswg.org/css-backgrounds/#border-image-slice"> use std::fmt; use style_traits::ToCss; - use values::NoViewportPercentage; + use values::HasViewportPercentage; use values::specified::{Number, Percentage}; - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); pub mod computed_value { use values::computed::Number; diff --git a/components/style/properties/longhand/box.mako.rs b/components/style/properties/longhand/box.mako.rs index 0e4abaaa1dc..aa30a5551ad 100644 --- a/components/style/properties/longhand/box.mako.rs +++ b/components/style/properties/longhand/box.mako.rs @@ -31,8 +31,8 @@ %> use values::computed::ComputedValueAsSpecified; use style_traits::ToCss; - use values::NoViewportPercentage; - impl NoViewportPercentage for SpecifiedValue {} + use values::HasViewportPercentage; + no_viewport_percentage!(SpecifiedValue); pub mod computed_value { pub use super::SpecifiedValue as T; @@ -113,8 +113,8 @@ ${helpers.single_keyword("-moz-top-layer", "none top", } } - use values::NoViewportPercentage; - impl NoViewportPercentage for SpecifiedValue {} + use values::HasViewportPercentage; + no_viewport_percentage!(SpecifiedValue); impl ToComputedValue for SpecifiedValue { type ComputedValue = computed_value::T; @@ -152,8 +152,8 @@ ${helpers.single_keyword("-moz-top-layer", "none top", gecko_inexhaustive="True" gecko_ffi_name="mFloat" spec="https://drafts.csswg.org/css-box/#propdef-float"> - use values::NoViewportPercentage; - impl NoViewportPercentage for SpecifiedValue {} + use values::HasViewportPercentage; + no_viewport_percentage!(SpecifiedValue); impl ToComputedValue for SpecifiedValue { type ComputedValue = computed_value::T; @@ -194,8 +194,8 @@ ${helpers.single_keyword("-moz-top-layer", "none top", gecko_enum_prefix="StyleClear" gecko_ffi_name="mBreakType" spec="https://www.w3.org/TR/CSS2/visuren.html#flow-control"> - use values::NoViewportPercentage; - impl NoViewportPercentage for SpecifiedValue {} + use values::HasViewportPercentage; + no_viewport_percentage!(SpecifiedValue); impl ToComputedValue for SpecifiedValue { type ComputedValue = computed_value::T; @@ -396,9 +396,9 @@ ${helpers.single_keyword("overflow-x", "visible hidden scroll auto", use std::fmt; use style_traits::ToCss; use values::computed::ComputedValueAsSpecified; - use values::NoViewportPercentage; + use values::HasViewportPercentage; - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); impl ToCss for SpecifiedValue { fn to_css(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { @@ -442,8 +442,8 @@ ${helpers.single_keyword("overflow-x", "visible hidden scroll auto", use values::specified::Time; pub use values::specified::Time as SpecifiedValue; - use values::NoViewportPercentage; - impl NoViewportPercentage for SpecifiedValue {} + use values::HasViewportPercentage; + no_viewport_percentage!(SpecifiedValue); pub mod computed_value { pub use values::computed::Time as T; @@ -703,8 +703,8 @@ ${helpers.single_keyword("overflow-x", "visible hidden scroll auto", } } - use values::NoViewportPercentage; - impl NoViewportPercentage for SpecifiedValue {} + use values::HasViewportPercentage; + no_viewport_percentage!(SpecifiedValue); #[inline] pub fn get_initial_value() -> computed_value::T { @@ -745,8 +745,8 @@ ${helpers.single_keyword("overflow-x", "visible hidden scroll auto", SpecifiedValue::parse(input) } - use values::NoViewportPercentage; - impl NoViewportPercentage for SpecifiedValue {} + use values::HasViewportPercentage; + no_viewport_percentage!(SpecifiedValue); impl ComputedValueAsSpecified for SpecifiedValue { } @@ -773,7 +773,7 @@ ${helpers.single_keyword("overflow-x", "visible hidden scroll auto", use std::ops::Deref; use style_traits::ToCss; use values::computed::ComputedValueAsSpecified; - use values::NoViewportPercentage; + use values::HasViewportPercentage; pub mod computed_value { pub use super::SpecifiedValue as T; @@ -805,7 +805,7 @@ ${helpers.single_keyword("overflow-x", "visible hidden scroll auto", }) } } - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); pub fn parse(context: &ParserContext, input: &mut Parser) -> Result { SpecifiedValue::parse(context, input) @@ -847,7 +847,7 @@ ${helpers.single_keyword("overflow-x", "visible hidden scroll auto", use std::fmt; use style_traits::ToCss; use values::computed::ComputedValueAsSpecified; - use values::NoViewportPercentage; + use values::HasViewportPercentage; pub mod computed_value { pub use super::SpecifiedValue as T; @@ -885,7 +885,7 @@ ${helpers.single_keyword("overflow-x", "visible hidden scroll auto", } } - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); #[inline] pub fn get_initial_value() -> computed_value::T { diff --git a/components/style/properties/longhand/column.mako.rs b/components/style/properties/longhand/column.mako.rs index e10a69e45d1..f55524f5201 100644 --- a/components/style/properties/longhand/column.mako.rs +++ b/components/style/properties/longhand/column.mako.rs @@ -22,9 +22,9 @@ ${helpers.predefined_type("column-width", spec="https://drafts.csswg.org/css-multicol/#propdef-column-count"> use std::fmt; use style_traits::ToCss; - use values::NoViewportPercentage; + use values::HasViewportPercentage; - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); #[derive(Debug, Clone, Copy, PartialEq)] #[cfg_attr(feature = "servo", derive(HeapSizeOf))] diff --git a/components/style/properties/longhand/counters.mako.rs b/components/style/properties/longhand/counters.mako.rs index 78c9fa8fc9e..265e4b9bfe0 100644 --- a/components/style/properties/longhand/counters.mako.rs +++ b/components/style/properties/longhand/counters.mako.rs @@ -10,7 +10,7 @@ use cssparser::Token; use std::ascii::AsciiExt; use values::computed::ComputedValueAsSpecified; - use values::NoViewportPercentage; + use values::HasViewportPercentage; use super::list_style_type; @@ -18,7 +18,7 @@ pub use self::computed_value::ContentItem; impl ComputedValueAsSpecified for SpecifiedValue {} - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); pub mod computed_value { use super::super::list_style_type; @@ -179,7 +179,7 @@ use std::fmt; use style_traits::ToCss; use super::content; - use values::NoViewportPercentage; + use values::HasViewportPercentage; use values::computed::ComputedValueAsSpecified; use cssparser::{Token, serialize_identifier}; @@ -199,7 +199,7 @@ } impl ComputedValueAsSpecified for SpecifiedValue {} - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); impl ToCss for SpecifiedValue { fn to_css(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { diff --git a/components/style/properties/longhand/font.mako.rs b/components/style/properties/longhand/font.mako.rs index 42387415c1b..a52a7e1f498 100644 --- a/components/style/properties/longhand/font.mako.rs +++ b/components/style/properties/longhand/font.mako.rs @@ -11,12 +11,12 @@ <%helpers:longhand name="font-family" animatable="False" need_index="True" spec="https://drafts.csswg.org/css-fonts/#propdef-font-family"> use self::computed_value::{FontFamily, FamilyName}; - use values::NoViewportPercentage; + use values::HasViewportPercentage; use values::computed::ComputedValueAsSpecified; pub use self::computed_value::T as SpecifiedValue; impl ComputedValueAsSpecified for SpecifiedValue {} - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); pub mod computed_value { use cssparser::CssStringWriter; @@ -223,9 +223,9 @@ ${helpers.single_keyword("font-variant-caps", spec="https://drafts.csswg.org/css-fonts/#propdef-font-weight"> use std::fmt; use style_traits::ToCss; - use values::NoViewportPercentage; + use values::HasViewportPercentage; - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); #[derive(Debug, Clone, PartialEq, Eq, Copy)] #[cfg_attr(feature = "servo", derive(HeapSizeOf))] @@ -458,12 +458,12 @@ ${helpers.single_keyword("font-variant-caps", <%helpers:longhand products="gecko" name="font-size-adjust" animatable="True" spec="https://drafts.csswg.org/css-fonts/#propdef-font-size-adjust"> - use values::NoViewportPercentage; + use values::HasViewportPercentage; use values::computed::ComputedValueAsSpecified; use values::specified::Number; impl ComputedValueAsSpecified for SpecifiedValue {} - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); #[derive(Copy, Clone, Debug, PartialEq)] #[cfg_attr(feature = "servo", derive(HeapSizeOf))] @@ -520,11 +520,11 @@ ${helpers.single_keyword("font-variant-caps", spec="https://drafts.csswg.org/css-fonts/#propdef-font-synthesis"> use std::fmt; use style_traits::ToCss; - use values::NoViewportPercentage; + use values::HasViewportPercentage; use values::computed::ComputedValueAsSpecified; impl ComputedValueAsSpecified for SpecifiedValue {} - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); pub mod computed_value { pub use super::SpecifiedValue as T; @@ -610,12 +610,12 @@ ${helpers.single_keyword("font-variant-position", spec="https://drafts.csswg.org/css-fonts/#propdef-font-feature-settings"> use std::fmt; use style_traits::ToCss; - use values::NoViewportPercentage; + use values::HasViewportPercentage; use values::computed::ComputedValueAsSpecified; pub use self::computed_value::T as SpecifiedValue; impl ComputedValueAsSpecified for SpecifiedValue {} - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); pub mod computed_value { use cssparser::Parser; @@ -719,12 +719,12 @@ ${helpers.single_keyword("font-variant-position", // https://www.w3.org/TR/css-fonts-3/#propdef-font-language-override <%helpers:longhand name="font-language-override" products="none" animatable="False" extra_prefixes="moz" spec="https://drafts.csswg.org/css-fonts-3/#propdef-font-language-override"> - use values::NoViewportPercentage; + use values::HasViewportPercentage; use values::computed::ComputedValueAsSpecified; pub use self::computed_value::T as SpecifiedValue; impl ComputedValueAsSpecified for SpecifiedValue {} - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); pub mod computed_value { use std::fmt; diff --git a/components/style/properties/longhand/inherited_box.mako.rs b/components/style/properties/longhand/inherited_box.mako.rs index 6a87bad5d15..ef19dedaca8 100644 --- a/components/style/properties/longhand/inherited_box.mako.rs +++ b/components/style/properties/longhand/inherited_box.mako.rs @@ -35,8 +35,8 @@ ${helpers.single_keyword("direction", "ltr rtl", need_clone=True, animatable=Fal animatable="False" spec="https://drafts.csswg.org/css-writing-modes/#propdef-text-orientation" > - use values::NoViewportPercentage; - impl NoViewportPercentage for SpecifiedValue {} + use values::HasViewportPercentage; + no_viewport_percentage!(SpecifiedValue); impl ToComputedValue for SpecifiedValue { type ComputedValue = computed_value::T; @@ -91,8 +91,8 @@ ${helpers.single_keyword("image-rendering", use style_traits::ToCss; use values::specified::Angle; - use values::NoViewportPercentage; - impl NoViewportPercentage for SpecifiedValue {} + use values::HasViewportPercentage; + no_viewport_percentage!(SpecifiedValue); use std::f32::consts::PI; use values::CSSFloat; @@ -225,9 +225,9 @@ ${helpers.single_keyword("image-rendering", use std::fmt; use style_traits::ToCss; use values::computed::ComputedValueAsSpecified; - use values::NoViewportPercentage; + use values::HasViewportPercentage; - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); #[derive(Copy, Clone, Debug, Eq, PartialEq)] #[cfg_attr(feature = "servo", derive(HeapSizeOf, Deserialize, Serialize))] diff --git a/components/style/properties/longhand/inherited_text.mako.rs b/components/style/properties/longhand/inherited_text.mako.rs index 03b5eb2e33b..900dec4846c 100644 --- a/components/style/properties/longhand/inherited_text.mako.rs +++ b/components/style/properties/longhand/inherited_text.mako.rs @@ -204,9 +204,9 @@ ${helpers.single_keyword("text-align-last", <%helpers:longhand name="text-align" animatable="False" spec="https://drafts.csswg.org/css-text/#propdef-text-align"> pub use self::computed_value::T as SpecifiedValue; use values::computed::ComputedValueAsSpecified; - use values::NoViewportPercentage; + use values::HasViewportPercentage; impl ComputedValueAsSpecified for SpecifiedValue {} - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); pub mod computed_value { use style_traits::ToCss; macro_rules! define_text_align { @@ -434,11 +434,11 @@ ${helpers.single_keyword("text-align-last", use cssparser::RGBA; use std::fmt; use style_traits::ToCss; - use values::NoViewportPercentage; + use values::HasViewportPercentage; use values::computed::ComputedValueAsSpecified; impl ComputedValueAsSpecified for SpecifiedValue {} - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); #[derive(Clone, PartialEq, Copy, Debug)] #[cfg_attr(feature = "servo", derive(HeapSizeOf))] @@ -518,9 +518,9 @@ ${helpers.single_keyword("text-align-last", animatable="False" spec="https://drafts.csswg.org/css-text/#propdef-white-space"> use values::computed::ComputedValueAsSpecified; - use values::NoViewportPercentage; + use values::HasViewportPercentage; impl ComputedValueAsSpecified for SpecifiedValue {} - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); impl SpecifiedValue { pub fn allow_wrap(&self) -> bool { @@ -771,9 +771,9 @@ ${helpers.single_keyword("text-align-last", use std::fmt; use style_traits::ToCss; use unicode_segmentation::UnicodeSegmentation; - use values::NoViewportPercentage; + use values::HasViewportPercentage; - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); pub mod computed_value { #[derive(Debug, Clone, PartialEq)] @@ -977,7 +977,7 @@ ${helpers.single_keyword("text-align-last", spec="https://drafts.csswg.org/css-text-decor/#propdef-text-emphasis-position"> use std::fmt; use values::computed::ComputedValueAsSpecified; - use values::NoViewportPercentage; + use values::HasViewportPercentage; use style_traits::ToCss; define_css_keyword_enum!(HorizontalWritingModeValue: @@ -996,7 +996,7 @@ ${helpers.single_keyword("text-align-last", } impl ComputedValueAsSpecified for SpecifiedValue {} - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); pub fn get_initial_value() -> computed_value::T { SpecifiedValue(HorizontalWritingModeValue::Over, VerticalWritingModeValue::Right) diff --git a/components/style/properties/longhand/list.mako.rs b/components/style/properties/longhand/list.mako.rs index 9f19d80aec7..b0cfc32f56c 100644 --- a/components/style/properties/longhand/list.mako.rs +++ b/components/style/properties/longhand/list.mako.rs @@ -39,7 +39,7 @@ ${helpers.predefined_type("list-style-image", "UrlOrNone", "Either::Second(None_ use std::fmt; use style_traits::ToCss; use values::computed::ComputedValueAsSpecified; - use values::NoViewportPercentage; + use values::HasViewportPercentage; pub use self::computed_value::T as SpecifiedValue; @@ -50,7 +50,7 @@ ${helpers.predefined_type("list-style-image", "UrlOrNone", "Either::Second(None_ } impl ComputedValueAsSpecified for SpecifiedValue {} - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); impl ToCss for SpecifiedValue { fn to_css(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { diff --git a/components/style/properties/longhand/outline.mako.rs b/components/style/properties/longhand/outline.mako.rs index e4fb0512d85..9780ac24110 100644 --- a/components/style/properties/longhand/outline.mako.rs +++ b/components/style/properties/longhand/outline.mako.rs @@ -20,7 +20,6 @@ ${helpers.predefined_type("outline-color", "CSSColor", "::cssparser::Color::Curr use std::fmt; use style_traits::ToCss; use values::specified::BorderStyle; - use values::NoViewportPercentage; use values::computed::ComputedValueAsSpecified; pub type SpecifiedValue = Either; diff --git a/components/style/properties/longhand/pointing.mako.rs b/components/style/properties/longhand/pointing.mako.rs index 71c43b2cc2b..a6219a32d1f 100644 --- a/components/style/properties/longhand/pointing.mako.rs +++ b/components/style/properties/longhand/pointing.mako.rs @@ -8,12 +8,12 @@ <%helpers:longhand name="cursor" animatable="False" spec="https://drafts.csswg.org/css-ui/#cursor"> pub use self::computed_value::T as SpecifiedValue; - use values::NoViewportPercentage; + use values::HasViewportPercentage; use values::computed::ComputedValueAsSpecified; use values::specified::url::SpecifiedUrl; impl ComputedValueAsSpecified for SpecifiedValue {} - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); pub mod computed_value { use std::fmt; diff --git a/components/style/properties/longhand/position.mako.rs b/components/style/properties/longhand/position.mako.rs index adb66cdc3a4..73b11432aaa 100644 --- a/components/style/properties/longhand/position.mako.rs +++ b/components/style/properties/longhand/position.mako.rs @@ -24,11 +24,11 @@ % endfor <%helpers:longhand name="z-index" spec="https://www.w3.org/TR/CSS2/visuren.html#z-index" animatable="True"> - use values::NoViewportPercentage; + use values::HasViewportPercentage; use values::computed::ComputedValueAsSpecified; impl ComputedValueAsSpecified for SpecifiedValue {} - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); pub type SpecifiedValue = computed_value::T; pub mod computed_value { use std::fmt; diff --git a/components/style/properties/longhand/svg.mako.rs b/components/style/properties/longhand/svg.mako.rs index b75a9c26255..9e68d5386af 100644 --- a/components/style/properties/longhand/svg.mako.rs +++ b/components/style/properties/longhand/svg.mako.rs @@ -62,7 +62,7 @@ ${helpers.single_keyword("mask-type", "luminance alpha", spec="https://drafts.fxtf.org/css-masking/#propdef-clip-path"> use std::fmt; use style_traits::ToCss; - use values::NoViewportPercentage; + use values::HasViewportPercentage; use values::specified::basic_shape::{ShapeSource, GeometryBox}; pub mod computed_value { @@ -83,7 +83,7 @@ ${helpers.single_keyword("mask-type", "luminance alpha", ShapeSource::parse(context, input) } - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); ${helpers.single_keyword("mask-mode", @@ -196,7 +196,7 @@ ${helpers.single_keyword("mask-composite", use std::sync::Arc; use values::specified::Image; use values::specified::url::SpecifiedUrl; - use values::NoViewportPercentage; + use values::HasViewportPercentage; pub mod computed_value { use std::fmt; @@ -222,7 +222,7 @@ ${helpers.single_keyword("mask-composite", } } - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); #[derive(Debug, Clone, PartialEq)] #[cfg_attr(feature = "servo", derive(HeapSizeOf))] diff --git a/components/style/properties/longhand/text.mako.rs b/components/style/properties/longhand/text.mako.rs index a4325c7a0cc..8d1792c046b 100644 --- a/components/style/properties/longhand/text.mako.rs +++ b/components/style/properties/longhand/text.mako.rs @@ -16,12 +16,12 @@ spec="https://drafts.csswg.org/css-ui/#propdef-text-overflow"> use std::fmt; use style_traits::ToCss; - use values::NoViewportPercentage; + use values::HasViewportPercentage; use values::computed::ComputedValueAsSpecified; use cssparser; impl ComputedValueAsSpecified for SpecifiedValue {} - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); #[derive(PartialEq, Eq, Clone, Debug)] #[cfg_attr(feature = "servo", derive(HeapSizeOf))] @@ -108,11 +108,11 @@ ${helpers.single_keyword("unicode-bidi", spec="https://drafts.csswg.org/css-text-decor/#propdef-text-decoration-line"> use std::fmt; use style_traits::ToCss; - use values::NoViewportPercentage; + use values::HasViewportPercentage; use values::computed::ComputedValueAsSpecified; impl ComputedValueAsSpecified for SpecifiedValue {} - impl NoViewportPercentage for SpecifiedValue {} + no_viewport_percentage!(SpecifiedValue); #[derive(PartialEq, Eq, Copy, Clone, Debug)] #[cfg_attr(feature = "servo", derive(HeapSizeOf))] diff --git a/components/style/values/mod.rs b/components/style/values/mod.rs index 7a7d7baafea..4665b37ad82 100644 --- a/components/style/values/mod.rs +++ b/components/style/values/mod.rs @@ -47,6 +47,19 @@ macro_rules! define_numbered_css_keyword_enum { } } +/// A macro used to implement HasViewportPercentage trait +/// for a given type that may never contain viewport units. +macro_rules! no_viewport_percentage { + ($name: ident) => { + impl HasViewportPercentage for $name { + #[inline] + fn has_viewport_percentage(&self) -> bool { + false + } + } + }; +} + pub mod computed; pub mod specified; @@ -62,18 +75,7 @@ pub trait HasViewportPercentage { fn has_viewport_percentage(&self) -> bool; } -/// A trait used as a marker to represent that a given type may never contain -/// viewport units. -pub trait NoViewportPercentage {} -impl HasViewportPercentage for T - where T: NoViewportPercentage, -{ - #[inline] - fn has_viewport_percentage(&self) -> bool { - false - } -} use self::computed::ComputedValueAsSpecified; @@ -103,7 +105,7 @@ macro_rules! define_keyword_type { } impl ComputedValueAsSpecified for $name {} - impl NoViewportPercentage for $name {} + no_viewport_percentage!($name); }; } diff --git a/components/style/values/specified/grid.rs b/components/style/values/specified/grid.rs index 1e414799ed9..4f3e64142e7 100644 --- a/components/style/values/specified/grid.rs +++ b/components/style/values/specified/grid.rs @@ -8,7 +8,7 @@ use cssparser::Parser; use parser::{Parse, ParserContext}; use std::fmt; use style_traits::ToCss; -use values::NoViewportPercentage; +use values::HasViewportPercentage; use values::computed::ComputedValueAsSpecified; #[derive(PartialEq, Clone, Debug)] @@ -96,4 +96,4 @@ impl Parse for GridLine { } impl ComputedValueAsSpecified for GridLine {} -impl NoViewportPercentage for GridLine {} +no_viewport_percentage!(GridLine); diff --git a/components/style/values/specified/mod.rs b/components/style/values/specified/mod.rs index 076324cebe6..dac10f661f7 100644 --- a/components/style/values/specified/mod.rs +++ b/components/style/values/specified/mod.rs @@ -16,7 +16,7 @@ use std::f32::consts::PI; use std::fmt; use std::ops::Mul; use style_traits::ToCss; -use super::{CSSFloat, HasViewportPercentage, NoViewportPercentage, Either, None_}; +use super::{CSSFloat, HasViewportPercentage, Either, None_}; use super::computed::{ComputedValueAsSpecified, Context, ToComputedValue}; use super::computed::Shadow as ComputedShadow; @@ -35,7 +35,7 @@ pub mod length; pub mod position; pub mod url; -impl NoViewportPercentage for i32 {} // For PropertyDeclaration::Order +no_viewport_percentage!(i32); // For PropertyDeclaration::Order #[derive(Clone, PartialEq, Debug)] #[cfg_attr(feature = "servo", derive(HeapSizeOf))] @@ -60,7 +60,7 @@ impl Parse for CSSColor { } } -impl NoViewportPercentage for CSSColor {} +no_viewport_percentage!(CSSColor); impl ToCss for CSSColor { fn to_css(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { @@ -79,7 +79,7 @@ pub struct CSSRGBA { pub authored: Option, } -impl NoViewportPercentage for CSSRGBA {} +no_viewport_percentage!(CSSRGBA); impl ToCss for CSSRGBA { fn to_css(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { @@ -193,7 +193,7 @@ pub fn parse_number(input: &mut Parser) -> Result { #[allow(missing_docs)] pub struct BorderRadiusSize(pub Size2D); -impl NoViewportPercentage for BorderRadiusSize {} +no_viewport_percentage!(BorderRadiusSize); impl BorderRadiusSize { #[allow(missing_docs)] @@ -402,7 +402,7 @@ define_numbered_css_keyword_enum! { BorderStyle: "outset" => outset = 2, } -impl NoViewportPercentage for BorderStyle {} +no_viewport_percentage!(BorderStyle); impl BorderStyle { /// Whether this border style is either none or hidden. @@ -462,7 +462,7 @@ impl ToCss for Time { #[allow(missing_docs)] pub struct Number(pub CSSFloat); -impl NoViewportPercentage for Number {} +no_viewport_percentage!(Number); impl Parse for Number { fn parse(_context: &ParserContext, input: &mut Parser) -> Result { @@ -512,7 +512,7 @@ impl ToCss for Number { #[allow(missing_docs)] pub struct Opacity(pub CSSFloat); -impl NoViewportPercentage for Opacity {} +no_viewport_percentage!(Opacity); impl Parse for Opacity { fn parse(_context: &ParserContext, input: &mut Parser) -> Result { diff --git a/components/style/values/specified/url.rs b/components/style/values/specified/url.rs index de58714c74f..9ce58980050 100644 --- a/components/style/values/specified/url.rs +++ b/components/style/values/specified/url.rs @@ -15,7 +15,7 @@ use std::borrow::Cow; use std::fmt::{self, Write}; use std::sync::Arc; use style_traits::ToCss; -use values::NoViewportPercentage; +use values::HasViewportPercentage; use values::computed::ComputedValueAsSpecified; /// A set of data needed in Gecko to represent a URL. @@ -202,4 +202,4 @@ impl ToCss for SpecifiedUrl { // TODO(emilio): Maybe consider ComputedUrl to save a word in style structs? impl ComputedValueAsSpecified for SpecifiedUrl {} -impl NoViewportPercentage for SpecifiedUrl {} +no_viewport_percentage!(SpecifiedUrl);