Replace NoViewportPercentage with a macro

This commit is contained in:
Nazım Can Altınova 2017-02-08 12:29:41 +03:00 committed by Simon Sapin
parent 9204f2aaad
commit abc40f61c0
19 changed files with 104 additions and 103 deletions

View file

@ -333,9 +333,9 @@
<%def name="single_keyword(name, values, vector=False, **kwargs)"> <%def name="single_keyword(name, values, vector=False, **kwargs)">
<%call expr="single_keyword_computed(name, values, vector, **kwargs)"> <%call expr="single_keyword_computed(name, values, vector, **kwargs)">
use values::computed::ComputedValueAsSpecified; use values::computed::ComputedValueAsSpecified;
use values::NoViewportPercentage; use values::HasViewportPercentage;
impl ComputedValueAsSpecified for SpecifiedValue {} impl ComputedValueAsSpecified for SpecifiedValue {}
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
</%call> </%call>
</%def> </%def>

View file

@ -16,8 +16,8 @@ ${helpers.predefined_type("background-color", "CSSColor",
has_uncacheable_values="${product == 'gecko'}"> has_uncacheable_values="${product == 'gecko'}">
use std::fmt; use std::fmt;
use style_traits::ToCss; use style_traits::ToCss;
use values::HasViewportPercentage;
use values::specified::Image; use values::specified::Image;
use values::NoViewportPercentage;
pub mod computed_value { pub mod computed_value {
use values::computed; 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)] #[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "servo", derive(HeapSizeOf))] #[cfg_attr(feature = "servo", derive(HeapSizeOf))]

View file

@ -87,10 +87,10 @@ ${helpers.single_keyword("-moz-float-edge", "content-box margin-box",
spec="https://drafts.csswg.org/css-backgrounds/#border-image-source"> spec="https://drafts.csswg.org/css-backgrounds/#border-image-source">
use std::fmt; use std::fmt;
use style_traits::ToCss; use style_traits::ToCss;
use values::NoViewportPercentage; use values::HasViewportPercentage;
use values::specified::Image; use values::specified::Image;
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
pub mod computed_value { pub mod computed_value {
use values::computed; 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"> spec="https://drafts.csswg.org/css-backgrounds/#border-image-repeat">
use std::fmt; use std::fmt;
use style_traits::ToCss; use style_traits::ToCss;
use values::NoViewportPercentage; use values::HasViewportPercentage;
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
pub mod computed_value { pub mod computed_value {
pub use super::RepeatKeyword; 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"> spec="https://drafts.csswg.org/css-backgrounds/#border-image-slice">
use std::fmt; use std::fmt;
use style_traits::ToCss; use style_traits::ToCss;
use values::NoViewportPercentage; use values::HasViewportPercentage;
use values::specified::{Number, Percentage}; use values::specified::{Number, Percentage};
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
pub mod computed_value { pub mod computed_value {
use values::computed::Number; use values::computed::Number;

View file

@ -31,8 +31,8 @@
%> %>
use values::computed::ComputedValueAsSpecified; use values::computed::ComputedValueAsSpecified;
use style_traits::ToCss; use style_traits::ToCss;
use values::NoViewportPercentage; use values::HasViewportPercentage;
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
pub mod computed_value { pub mod computed_value {
pub use super::SpecifiedValue as T; pub use super::SpecifiedValue as T;
@ -113,8 +113,8 @@ ${helpers.single_keyword("-moz-top-layer", "none top",
} }
} }
use values::NoViewportPercentage; use values::HasViewportPercentage;
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
impl ToComputedValue for SpecifiedValue { impl ToComputedValue for SpecifiedValue {
type ComputedValue = computed_value::T; type ComputedValue = computed_value::T;
@ -152,8 +152,8 @@ ${helpers.single_keyword("-moz-top-layer", "none top",
gecko_inexhaustive="True" gecko_inexhaustive="True"
gecko_ffi_name="mFloat" gecko_ffi_name="mFloat"
spec="https://drafts.csswg.org/css-box/#propdef-float"> spec="https://drafts.csswg.org/css-box/#propdef-float">
use values::NoViewportPercentage; use values::HasViewportPercentage;
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
impl ToComputedValue for SpecifiedValue { impl ToComputedValue for SpecifiedValue {
type ComputedValue = computed_value::T; type ComputedValue = computed_value::T;
@ -194,8 +194,8 @@ ${helpers.single_keyword("-moz-top-layer", "none top",
gecko_enum_prefix="StyleClear" gecko_enum_prefix="StyleClear"
gecko_ffi_name="mBreakType" gecko_ffi_name="mBreakType"
spec="https://www.w3.org/TR/CSS2/visuren.html#flow-control"> spec="https://www.w3.org/TR/CSS2/visuren.html#flow-control">
use values::NoViewportPercentage; use values::HasViewportPercentage;
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
impl ToComputedValue for SpecifiedValue { impl ToComputedValue for SpecifiedValue {
type ComputedValue = computed_value::T; type ComputedValue = computed_value::T;
@ -396,9 +396,9 @@ ${helpers.single_keyword("overflow-x", "visible hidden scroll auto",
use std::fmt; use std::fmt;
use style_traits::ToCss; use style_traits::ToCss;
use values::computed::ComputedValueAsSpecified; use values::computed::ComputedValueAsSpecified;
use values::NoViewportPercentage; use values::HasViewportPercentage;
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
impl ToCss for SpecifiedValue { impl ToCss for SpecifiedValue {
fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { fn to_css<W>(&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; use values::specified::Time;
pub use values::specified::Time as SpecifiedValue; pub use values::specified::Time as SpecifiedValue;
use values::NoViewportPercentage; use values::HasViewportPercentage;
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
pub mod computed_value { pub mod computed_value {
pub use values::computed::Time as T; pub use values::computed::Time as T;
@ -703,8 +703,8 @@ ${helpers.single_keyword("overflow-x", "visible hidden scroll auto",
} }
} }
use values::NoViewportPercentage; use values::HasViewportPercentage;
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
#[inline] #[inline]
pub fn get_initial_value() -> computed_value::T { pub fn get_initial_value() -> computed_value::T {
@ -745,8 +745,8 @@ ${helpers.single_keyword("overflow-x", "visible hidden scroll auto",
SpecifiedValue::parse(input) SpecifiedValue::parse(input)
} }
use values::NoViewportPercentage; use values::HasViewportPercentage;
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
impl ComputedValueAsSpecified for SpecifiedValue { } impl ComputedValueAsSpecified for SpecifiedValue { }
</%helpers:vector_longhand> </%helpers:vector_longhand>
@ -773,7 +773,7 @@ ${helpers.single_keyword("overflow-x", "visible hidden scroll auto",
use std::ops::Deref; use std::ops::Deref;
use style_traits::ToCss; use style_traits::ToCss;
use values::computed::ComputedValueAsSpecified; use values::computed::ComputedValueAsSpecified;
use values::NoViewportPercentage; use values::HasViewportPercentage;
pub mod computed_value { pub mod computed_value {
pub use super::SpecifiedValue as T; 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,()> { pub fn parse(context: &ParserContext, input: &mut Parser) -> Result<SpecifiedValue,()> {
SpecifiedValue::parse(context, input) SpecifiedValue::parse(context, input)
@ -847,7 +847,7 @@ ${helpers.single_keyword("overflow-x", "visible hidden scroll auto",
use std::fmt; use std::fmt;
use style_traits::ToCss; use style_traits::ToCss;
use values::computed::ComputedValueAsSpecified; use values::computed::ComputedValueAsSpecified;
use values::NoViewportPercentage; use values::HasViewportPercentage;
pub mod computed_value { pub mod computed_value {
pub use super::SpecifiedValue as T; 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] #[inline]
pub fn get_initial_value() -> computed_value::T { pub fn get_initial_value() -> computed_value::T {

View file

@ -22,9 +22,9 @@ ${helpers.predefined_type("column-width",
spec="https://drafts.csswg.org/css-multicol/#propdef-column-count"> spec="https://drafts.csswg.org/css-multicol/#propdef-column-count">
use std::fmt; use std::fmt;
use style_traits::ToCss; use style_traits::ToCss;
use values::NoViewportPercentage; use values::HasViewportPercentage;
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
#[derive(Debug, Clone, Copy, PartialEq)] #[derive(Debug, Clone, Copy, PartialEq)]
#[cfg_attr(feature = "servo", derive(HeapSizeOf))] #[cfg_attr(feature = "servo", derive(HeapSizeOf))]

View file

@ -10,7 +10,7 @@
use cssparser::Token; use cssparser::Token;
use std::ascii::AsciiExt; use std::ascii::AsciiExt;
use values::computed::ComputedValueAsSpecified; use values::computed::ComputedValueAsSpecified;
use values::NoViewportPercentage; use values::HasViewportPercentage;
use super::list_style_type; use super::list_style_type;
@ -18,7 +18,7 @@
pub use self::computed_value::ContentItem; pub use self::computed_value::ContentItem;
impl ComputedValueAsSpecified for SpecifiedValue {} impl ComputedValueAsSpecified for SpecifiedValue {}
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
pub mod computed_value { pub mod computed_value {
use super::super::list_style_type; use super::super::list_style_type;
@ -179,7 +179,7 @@
use std::fmt; use std::fmt;
use style_traits::ToCss; use style_traits::ToCss;
use super::content; use super::content;
use values::NoViewportPercentage; use values::HasViewportPercentage;
use values::computed::ComputedValueAsSpecified; use values::computed::ComputedValueAsSpecified;
use cssparser::{Token, serialize_identifier}; use cssparser::{Token, serialize_identifier};
@ -199,7 +199,7 @@
} }
impl ComputedValueAsSpecified for SpecifiedValue {} impl ComputedValueAsSpecified for SpecifiedValue {}
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
impl ToCss for SpecifiedValue { impl ToCss for SpecifiedValue {
fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write {

View file

@ -11,12 +11,12 @@
<%helpers:longhand name="font-family" animatable="False" need_index="True" <%helpers:longhand name="font-family" animatable="False" need_index="True"
spec="https://drafts.csswg.org/css-fonts/#propdef-font-family"> spec="https://drafts.csswg.org/css-fonts/#propdef-font-family">
use self::computed_value::{FontFamily, FamilyName}; use self::computed_value::{FontFamily, FamilyName};
use values::NoViewportPercentage; use values::HasViewportPercentage;
use values::computed::ComputedValueAsSpecified; use values::computed::ComputedValueAsSpecified;
pub use self::computed_value::T as SpecifiedValue; pub use self::computed_value::T as SpecifiedValue;
impl ComputedValueAsSpecified for SpecifiedValue {} impl ComputedValueAsSpecified for SpecifiedValue {}
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
pub mod computed_value { pub mod computed_value {
use cssparser::CssStringWriter; use cssparser::CssStringWriter;
@ -223,9 +223,9 @@ ${helpers.single_keyword("font-variant-caps",
spec="https://drafts.csswg.org/css-fonts/#propdef-font-weight"> spec="https://drafts.csswg.org/css-fonts/#propdef-font-weight">
use std::fmt; use std::fmt;
use style_traits::ToCss; use style_traits::ToCss;
use values::NoViewportPercentage; use values::HasViewportPercentage;
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
#[derive(Debug, Clone, PartialEq, Eq, Copy)] #[derive(Debug, Clone, PartialEq, Eq, Copy)]
#[cfg_attr(feature = "servo", derive(HeapSizeOf))] #[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" <%helpers:longhand products="gecko" name="font-size-adjust" animatable="True"
spec="https://drafts.csswg.org/css-fonts/#propdef-font-size-adjust"> spec="https://drafts.csswg.org/css-fonts/#propdef-font-size-adjust">
use values::NoViewportPercentage; use values::HasViewportPercentage;
use values::computed::ComputedValueAsSpecified; use values::computed::ComputedValueAsSpecified;
use values::specified::Number; use values::specified::Number;
impl ComputedValueAsSpecified for SpecifiedValue {} impl ComputedValueAsSpecified for SpecifiedValue {}
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
#[derive(Copy, Clone, Debug, PartialEq)] #[derive(Copy, Clone, Debug, PartialEq)]
#[cfg_attr(feature = "servo", derive(HeapSizeOf))] #[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"> spec="https://drafts.csswg.org/css-fonts/#propdef-font-synthesis">
use std::fmt; use std::fmt;
use style_traits::ToCss; use style_traits::ToCss;
use values::NoViewportPercentage; use values::HasViewportPercentage;
use values::computed::ComputedValueAsSpecified; use values::computed::ComputedValueAsSpecified;
impl ComputedValueAsSpecified for SpecifiedValue {} impl ComputedValueAsSpecified for SpecifiedValue {}
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
pub mod computed_value { pub mod computed_value {
pub use super::SpecifiedValue as T; 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"> spec="https://drafts.csswg.org/css-fonts/#propdef-font-feature-settings">
use std::fmt; use std::fmt;
use style_traits::ToCss; use style_traits::ToCss;
use values::NoViewportPercentage; use values::HasViewportPercentage;
use values::computed::ComputedValueAsSpecified; use values::computed::ComputedValueAsSpecified;
pub use self::computed_value::T as SpecifiedValue; pub use self::computed_value::T as SpecifiedValue;
impl ComputedValueAsSpecified for SpecifiedValue {} impl ComputedValueAsSpecified for SpecifiedValue {}
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
pub mod computed_value { pub mod computed_value {
use cssparser::Parser; 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 // 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" <%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"> spec="https://drafts.csswg.org/css-fonts-3/#propdef-font-language-override">
use values::NoViewportPercentage; use values::HasViewportPercentage;
use values::computed::ComputedValueAsSpecified; use values::computed::ComputedValueAsSpecified;
pub use self::computed_value::T as SpecifiedValue; pub use self::computed_value::T as SpecifiedValue;
impl ComputedValueAsSpecified for SpecifiedValue {} impl ComputedValueAsSpecified for SpecifiedValue {}
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
pub mod computed_value { pub mod computed_value {
use std::fmt; use std::fmt;

View file

@ -35,8 +35,8 @@ ${helpers.single_keyword("direction", "ltr rtl", need_clone=True, animatable=Fal
animatable="False" animatable="False"
spec="https://drafts.csswg.org/css-writing-modes/#propdef-text-orientation" spec="https://drafts.csswg.org/css-writing-modes/#propdef-text-orientation"
> >
use values::NoViewportPercentage; use values::HasViewportPercentage;
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
impl ToComputedValue for SpecifiedValue { impl ToComputedValue for SpecifiedValue {
type ComputedValue = computed_value::T; type ComputedValue = computed_value::T;
@ -91,8 +91,8 @@ ${helpers.single_keyword("image-rendering",
use style_traits::ToCss; use style_traits::ToCss;
use values::specified::Angle; use values::specified::Angle;
use values::NoViewportPercentage; use values::HasViewportPercentage;
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
use std::f32::consts::PI; use std::f32::consts::PI;
use values::CSSFloat; use values::CSSFloat;
@ -225,9 +225,9 @@ ${helpers.single_keyword("image-rendering",
use std::fmt; use std::fmt;
use style_traits::ToCss; use style_traits::ToCss;
use values::computed::ComputedValueAsSpecified; use values::computed::ComputedValueAsSpecified;
use values::NoViewportPercentage; use values::HasViewportPercentage;
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
#[derive(Copy, Clone, Debug, Eq, PartialEq)] #[derive(Copy, Clone, Debug, Eq, PartialEq)]
#[cfg_attr(feature = "servo", derive(HeapSizeOf, Deserialize, Serialize))] #[cfg_attr(feature = "servo", derive(HeapSizeOf, Deserialize, Serialize))]

View file

@ -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"> <%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; pub use self::computed_value::T as SpecifiedValue;
use values::computed::ComputedValueAsSpecified; use values::computed::ComputedValueAsSpecified;
use values::NoViewportPercentage; use values::HasViewportPercentage;
impl ComputedValueAsSpecified for SpecifiedValue {} impl ComputedValueAsSpecified for SpecifiedValue {}
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
pub mod computed_value { pub mod computed_value {
use style_traits::ToCss; use style_traits::ToCss;
macro_rules! define_text_align { macro_rules! define_text_align {
@ -434,11 +434,11 @@ ${helpers.single_keyword("text-align-last",
use cssparser::RGBA; use cssparser::RGBA;
use std::fmt; use std::fmt;
use style_traits::ToCss; use style_traits::ToCss;
use values::NoViewportPercentage; use values::HasViewportPercentage;
use values::computed::ComputedValueAsSpecified; use values::computed::ComputedValueAsSpecified;
impl ComputedValueAsSpecified for SpecifiedValue {} impl ComputedValueAsSpecified for SpecifiedValue {}
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
#[derive(Clone, PartialEq, Copy, Debug)] #[derive(Clone, PartialEq, Copy, Debug)]
#[cfg_attr(feature = "servo", derive(HeapSizeOf))] #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
@ -518,9 +518,9 @@ ${helpers.single_keyword("text-align-last",
animatable="False" animatable="False"
spec="https://drafts.csswg.org/css-text/#propdef-white-space"> spec="https://drafts.csswg.org/css-text/#propdef-white-space">
use values::computed::ComputedValueAsSpecified; use values::computed::ComputedValueAsSpecified;
use values::NoViewportPercentage; use values::HasViewportPercentage;
impl ComputedValueAsSpecified for SpecifiedValue {} impl ComputedValueAsSpecified for SpecifiedValue {}
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
impl SpecifiedValue { impl SpecifiedValue {
pub fn allow_wrap(&self) -> bool { pub fn allow_wrap(&self) -> bool {
@ -771,9 +771,9 @@ ${helpers.single_keyword("text-align-last",
use std::fmt; use std::fmt;
use style_traits::ToCss; use style_traits::ToCss;
use unicode_segmentation::UnicodeSegmentation; use unicode_segmentation::UnicodeSegmentation;
use values::NoViewportPercentage; use values::HasViewportPercentage;
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
pub mod computed_value { pub mod computed_value {
#[derive(Debug, Clone, PartialEq)] #[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"> spec="https://drafts.csswg.org/css-text-decor/#propdef-text-emphasis-position">
use std::fmt; use std::fmt;
use values::computed::ComputedValueAsSpecified; use values::computed::ComputedValueAsSpecified;
use values::NoViewportPercentage; use values::HasViewportPercentage;
use style_traits::ToCss; use style_traits::ToCss;
define_css_keyword_enum!(HorizontalWritingModeValue: define_css_keyword_enum!(HorizontalWritingModeValue:
@ -996,7 +996,7 @@ ${helpers.single_keyword("text-align-last",
} }
impl ComputedValueAsSpecified for SpecifiedValue {} impl ComputedValueAsSpecified for SpecifiedValue {}
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
pub fn get_initial_value() -> computed_value::T { pub fn get_initial_value() -> computed_value::T {
SpecifiedValue(HorizontalWritingModeValue::Over, VerticalWritingModeValue::Right) SpecifiedValue(HorizontalWritingModeValue::Over, VerticalWritingModeValue::Right)

View file

@ -39,7 +39,7 @@ ${helpers.predefined_type("list-style-image", "UrlOrNone", "Either::Second(None_
use std::fmt; use std::fmt;
use style_traits::ToCss; use style_traits::ToCss;
use values::computed::ComputedValueAsSpecified; use values::computed::ComputedValueAsSpecified;
use values::NoViewportPercentage; use values::HasViewportPercentage;
pub use self::computed_value::T as SpecifiedValue; 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 ComputedValueAsSpecified for SpecifiedValue {}
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
impl ToCss for SpecifiedValue { impl ToCss for SpecifiedValue {
fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write {

View file

@ -20,7 +20,6 @@ ${helpers.predefined_type("outline-color", "CSSColor", "::cssparser::Color::Curr
use std::fmt; use std::fmt;
use style_traits::ToCss; use style_traits::ToCss;
use values::specified::BorderStyle; use values::specified::BorderStyle;
use values::NoViewportPercentage;
use values::computed::ComputedValueAsSpecified; use values::computed::ComputedValueAsSpecified;
pub type SpecifiedValue = Either<Auto, BorderStyle>; pub type SpecifiedValue = Either<Auto, BorderStyle>;

View file

@ -8,12 +8,12 @@
<%helpers:longhand name="cursor" animatable="False" spec="https://drafts.csswg.org/css-ui/#cursor"> <%helpers:longhand name="cursor" animatable="False" spec="https://drafts.csswg.org/css-ui/#cursor">
pub use self::computed_value::T as SpecifiedValue; pub use self::computed_value::T as SpecifiedValue;
use values::NoViewportPercentage; use values::HasViewportPercentage;
use values::computed::ComputedValueAsSpecified; use values::computed::ComputedValueAsSpecified;
use values::specified::url::SpecifiedUrl; use values::specified::url::SpecifiedUrl;
impl ComputedValueAsSpecified for SpecifiedValue {} impl ComputedValueAsSpecified for SpecifiedValue {}
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
pub mod computed_value { pub mod computed_value {
use std::fmt; use std::fmt;

View file

@ -24,11 +24,11 @@
% endfor % endfor
<%helpers:longhand name="z-index" spec="https://www.w3.org/TR/CSS2/visuren.html#z-index" animatable="True"> <%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; use values::computed::ComputedValueAsSpecified;
impl ComputedValueAsSpecified for SpecifiedValue {} impl ComputedValueAsSpecified for SpecifiedValue {}
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
pub type SpecifiedValue = computed_value::T; pub type SpecifiedValue = computed_value::T;
pub mod computed_value { pub mod computed_value {
use std::fmt; use std::fmt;

View file

@ -62,7 +62,7 @@ ${helpers.single_keyword("mask-type", "luminance alpha",
spec="https://drafts.fxtf.org/css-masking/#propdef-clip-path"> spec="https://drafts.fxtf.org/css-masking/#propdef-clip-path">
use std::fmt; use std::fmt;
use style_traits::ToCss; use style_traits::ToCss;
use values::NoViewportPercentage; use values::HasViewportPercentage;
use values::specified::basic_shape::{ShapeSource, GeometryBox}; use values::specified::basic_shape::{ShapeSource, GeometryBox};
pub mod computed_value { pub mod computed_value {
@ -83,7 +83,7 @@ ${helpers.single_keyword("mask-type", "luminance alpha",
ShapeSource::parse(context, input) ShapeSource::parse(context, input)
} }
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
</%helpers:longhand> </%helpers:longhand>
${helpers.single_keyword("mask-mode", ${helpers.single_keyword("mask-mode",
@ -196,7 +196,7 @@ ${helpers.single_keyword("mask-composite",
use std::sync::Arc; use std::sync::Arc;
use values::specified::Image; use values::specified::Image;
use values::specified::url::SpecifiedUrl; use values::specified::url::SpecifiedUrl;
use values::NoViewportPercentage; use values::HasViewportPercentage;
pub mod computed_value { pub mod computed_value {
use std::fmt; use std::fmt;
@ -222,7 +222,7 @@ ${helpers.single_keyword("mask-composite",
} }
} }
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
#[derive(Debug, Clone, PartialEq)] #[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "servo", derive(HeapSizeOf))] #[cfg_attr(feature = "servo", derive(HeapSizeOf))]

View file

@ -16,12 +16,12 @@
spec="https://drafts.csswg.org/css-ui/#propdef-text-overflow"> spec="https://drafts.csswg.org/css-ui/#propdef-text-overflow">
use std::fmt; use std::fmt;
use style_traits::ToCss; use style_traits::ToCss;
use values::NoViewportPercentage; use values::HasViewportPercentage;
use values::computed::ComputedValueAsSpecified; use values::computed::ComputedValueAsSpecified;
use cssparser; use cssparser;
impl ComputedValueAsSpecified for SpecifiedValue {} impl ComputedValueAsSpecified for SpecifiedValue {}
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
#[derive(PartialEq, Eq, Clone, Debug)] #[derive(PartialEq, Eq, Clone, Debug)]
#[cfg_attr(feature = "servo", derive(HeapSizeOf))] #[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"> spec="https://drafts.csswg.org/css-text-decor/#propdef-text-decoration-line">
use std::fmt; use std::fmt;
use style_traits::ToCss; use style_traits::ToCss;
use values::NoViewportPercentage; use values::HasViewportPercentage;
use values::computed::ComputedValueAsSpecified; use values::computed::ComputedValueAsSpecified;
impl ComputedValueAsSpecified for SpecifiedValue {} impl ComputedValueAsSpecified for SpecifiedValue {}
impl NoViewportPercentage for SpecifiedValue {} no_viewport_percentage!(SpecifiedValue);
#[derive(PartialEq, Eq, Copy, Clone, Debug)] #[derive(PartialEq, Eq, Copy, Clone, Debug)]
#[cfg_attr(feature = "servo", derive(HeapSizeOf))] #[cfg_attr(feature = "servo", derive(HeapSizeOf))]

View file

@ -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 computed;
pub mod specified; pub mod specified;
@ -62,18 +75,7 @@ pub trait HasViewportPercentage {
fn has_viewport_percentage(&self) -> bool; 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<T> HasViewportPercentage for T
where T: NoViewportPercentage,
{
#[inline]
fn has_viewport_percentage(&self) -> bool {
false
}
}
use self::computed::ComputedValueAsSpecified; use self::computed::ComputedValueAsSpecified;
@ -103,7 +105,7 @@ macro_rules! define_keyword_type {
} }
impl ComputedValueAsSpecified for $name {} impl ComputedValueAsSpecified for $name {}
impl NoViewportPercentage for $name {} no_viewport_percentage!($name);
}; };
} }

View file

@ -8,7 +8,7 @@ use cssparser::Parser;
use parser::{Parse, ParserContext}; use parser::{Parse, ParserContext};
use std::fmt; use std::fmt;
use style_traits::ToCss; use style_traits::ToCss;
use values::NoViewportPercentage; use values::HasViewportPercentage;
use values::computed::ComputedValueAsSpecified; use values::computed::ComputedValueAsSpecified;
#[derive(PartialEq, Clone, Debug)] #[derive(PartialEq, Clone, Debug)]
@ -96,4 +96,4 @@ impl Parse for GridLine {
} }
impl ComputedValueAsSpecified for GridLine {} impl ComputedValueAsSpecified for GridLine {}
impl NoViewportPercentage for GridLine {} no_viewport_percentage!(GridLine);

View file

@ -16,7 +16,7 @@ use std::f32::consts::PI;
use std::fmt; use std::fmt;
use std::ops::Mul; use std::ops::Mul;
use style_traits::ToCss; 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::{ComputedValueAsSpecified, Context, ToComputedValue};
use super::computed::Shadow as ComputedShadow; use super::computed::Shadow as ComputedShadow;
@ -35,7 +35,7 @@ pub mod length;
pub mod position; pub mod position;
pub mod url; pub mod url;
impl NoViewportPercentage for i32 {} // For PropertyDeclaration::Order no_viewport_percentage!(i32); // For PropertyDeclaration::Order
#[derive(Clone, PartialEq, Debug)] #[derive(Clone, PartialEq, Debug)]
#[cfg_attr(feature = "servo", derive(HeapSizeOf))] #[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 { impl ToCss for CSSColor {
fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write {
@ -79,7 +79,7 @@ pub struct CSSRGBA {
pub authored: Option<String>, pub authored: Option<String>,
} }
impl NoViewportPercentage for CSSRGBA {} no_viewport_percentage!(CSSRGBA);
impl ToCss for CSSRGBA { impl ToCss for CSSRGBA {
fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write {
@ -193,7 +193,7 @@ pub fn parse_number(input: &mut Parser) -> Result<f32, ()> {
#[allow(missing_docs)] #[allow(missing_docs)]
pub struct BorderRadiusSize(pub Size2D<LengthOrPercentage>); pub struct BorderRadiusSize(pub Size2D<LengthOrPercentage>);
impl NoViewportPercentage for BorderRadiusSize {} no_viewport_percentage!(BorderRadiusSize);
impl BorderRadiusSize { impl BorderRadiusSize {
#[allow(missing_docs)] #[allow(missing_docs)]
@ -402,7 +402,7 @@ define_numbered_css_keyword_enum! { BorderStyle:
"outset" => outset = 2, "outset" => outset = 2,
} }
impl NoViewportPercentage for BorderStyle {} no_viewport_percentage!(BorderStyle);
impl BorderStyle { impl BorderStyle {
/// Whether this border style is either none or hidden. /// Whether this border style is either none or hidden.
@ -462,7 +462,7 @@ impl ToCss for Time {
#[allow(missing_docs)] #[allow(missing_docs)]
pub struct Number(pub CSSFloat); pub struct Number(pub CSSFloat);
impl NoViewportPercentage for Number {} no_viewport_percentage!(Number);
impl Parse for Number { impl Parse for Number {
fn parse(_context: &ParserContext, input: &mut Parser) -> Result<Self, ()> { fn parse(_context: &ParserContext, input: &mut Parser) -> Result<Self, ()> {
@ -512,7 +512,7 @@ impl ToCss for Number {
#[allow(missing_docs)] #[allow(missing_docs)]
pub struct Opacity(pub CSSFloat); pub struct Opacity(pub CSSFloat);
impl NoViewportPercentage for Opacity {} no_viewport_percentage!(Opacity);
impl Parse for Opacity { impl Parse for Opacity {
fn parse(_context: &ParserContext, input: &mut Parser) -> Result<Self, ()> { fn parse(_context: &ParserContext, input: &mut Parser) -> Result<Self, ()> {

View file

@ -15,7 +15,7 @@ use std::borrow::Cow;
use std::fmt::{self, Write}; use std::fmt::{self, Write};
use std::sync::Arc; use std::sync::Arc;
use style_traits::ToCss; use style_traits::ToCss;
use values::NoViewportPercentage; use values::HasViewportPercentage;
use values::computed::ComputedValueAsSpecified; use values::computed::ComputedValueAsSpecified;
/// A set of data needed in Gecko to represent a URL. /// 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? // TODO(emilio): Maybe consider ComputedUrl to save a word in style structs?
impl ComputedValueAsSpecified for SpecifiedUrl {} impl ComputedValueAsSpecified for SpecifiedUrl {}
impl NoViewportPercentage for SpecifiedUrl {} no_viewport_percentage!(SpecifiedUrl);