author | Emilio Cobos Álvarez <emilio@crisal.io> |
Tue, 21 Aug 2018 17:23:30 +0200 | |
changeset 432761 | e3e6a4d867a447d7c56827a491e6e2330838082b |
parent 432760 | 4bb2acbf4eb0d386046945e52bdd546fc41ae8e5 |
child 432762 | ab61273bea17b941baca4f3f85b6ca0362d56e22 |
push id | 106864 |
push user | emilio@crisal.io |
push date | Wed, 22 Aug 2018 09:25:49 +0000 |
treeherder | mozilla-inbound@e3e6a4d867a4 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | heycam |
bugs | 1485037 |
milestone | 63.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/servo/components/style/properties/longhands/background.mako.rs +++ b/servo/components/style/properties/longhands/background.mako.rs @@ -13,24 +13,27 @@ initial_specified_value="SpecifiedValue::transparent()", spec="https://drafts.csswg.org/css-backgrounds/#background-color", animation_value_type="AnimatedColor", ignored_when_colors_disabled=True, allow_quirks=True, flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER", )} -${helpers.predefined_type("background-image", "ImageLayer", +${helpers.predefined_type( + "background-image", + "ImageLayer", initial_value="Either::First(None_)", initial_specified_value="Either::First(None_)", spec="https://drafts.csswg.org/css-backgrounds/#the-background-image", vector="True", animation_value_type="discrete", ignored_when_colors_disabled="True", - flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER")} + flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER", +)} % for (axis, direction, initial) in [("x", "Horizontal", "left"), ("y", "Vertical", "top")]: ${helpers.predefined_type( "background-position-" + axis, "position::" + direction + "Position", initial_value="computed::LengthOrPercentage::zero()", initial_specified_value="SpecifiedValue::initial_specified_value()", spec="https://drafts.csswg.org/css-backgrounds-4/#propdef-background-position-" + axis, @@ -47,23 +50,25 @@ "computed::BackgroundRepeat::repeat()", initial_specified_value="specified::BackgroundRepeat::repeat()", animation_value_type="discrete", vector=True, spec="https://drafts.csswg.org/css-backgrounds/#the-background-repeat", flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER", )} -${helpers.single_keyword("background-attachment", - "scroll fixed" + (" local" if product == "gecko" else ""), - vector=True, - gecko_enum_prefix="StyleImageLayerAttachment", - spec="https://drafts.csswg.org/css-backgrounds/#the-background-attachment", - animation_value_type="discrete", - flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER")} +${helpers.single_keyword( + "background-attachment", + "scroll fixed" + (" local" if product == "gecko" else ""), + vector=True, + gecko_enum_prefix="StyleImageLayerAttachment", + spec="https://drafts.csswg.org/css-backgrounds/#the-background-attachment", + animation_value_type="discrete", + flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER", +)} ${helpers.single_keyword( "background-clip", "border-box padding-box content-box", extra_gecko_values="text", vector=True, extra_prefixes="webkit", gecko_enum_prefix="StyleGeometryBox", gecko_inexhaustive=True, @@ -91,17 +96,19 @@ spec="https://drafts.csswg.org/css-backgrounds/#the-background-size", vector=True, vector_animation_type="repeatable_list", animation_value_type="BackgroundSizeList", flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER", extra_prefixes="webkit")} // https://drafts.fxtf.org/compositing/#background-blend-mode -${helpers.single_keyword("background-blend-mode", - """normal multiply screen overlay darken lighten color-dodge - color-burn hard-light soft-light difference exclusion hue - saturation color luminosity""", - gecko_constant_prefix="NS_STYLE_BLEND", - gecko_pref="layout.css.background-blend-mode.enabled", - vector=True, products="gecko", animation_value_type="discrete", - spec="https://drafts.fxtf.org/compositing/#background-blend-mode", - flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER")} +${helpers.single_keyword( + "background-blend-mode", + """normal multiply screen overlay darken lighten color-dodge + color-burn hard-light soft-light difference exclusion hue + saturation color luminosity""", + gecko_constant_prefix="NS_STYLE_BLEND", + gecko_pref="layout.css.background-blend-mode.enabled", + vector=True, products="gecko", animation_value_type="discrete", + spec="https://drafts.fxtf.org/compositing/#background-blend-mode", + flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER", +)}
--- a/servo/components/style/properties/longhands/border.mako.rs +++ b/servo/components/style/properties/longhands/border.mako.rs @@ -56,87 +56,112 @@ logical=is_logical, logical_group="border-width", flags="APPLIES_TO_FIRST_LETTER GETCS_NEEDS_LAYOUT_FLUSH", allow_quirks=not is_logical, servo_restyle_damage="reflow rebuild_and_reflow_inline" )} % endfor -${helpers.gecko_keyword_conversion(Keyword('border-style', - "none solid double dotted dashed hidden groove ridge inset outset"), - type="::values::specified::BorderStyle")} +${helpers.gecko_keyword_conversion( + Keyword('border-style', + "none solid double dotted dashed hidden groove ridge inset outset"), + type="::values::specified::BorderStyle", +)} // FIXME(#4126): when gfx supports painting it, make this Size2D<LengthOrPercentage> % for corner in ["top-left", "top-right", "bottom-right", "bottom-left"]: - ${helpers.predefined_type("border-" + corner + "-radius", "BorderCornerRadius", - "computed::BorderCornerRadius::zero()", - "parse", extra_prefixes="webkit", - spec="https://drafts.csswg.org/css-backgrounds/#border-%s-radius" % corner, - boxed=True, - flags="APPLIES_TO_FIRST_LETTER", - animation_value_type="BorderCornerRadius")} + ${helpers.predefined_type( + "border-" + corner + "-radius", + "BorderCornerRadius", + "computed::BorderCornerRadius::zero()", + "parse", + extra_prefixes="webkit", + spec="https://drafts.csswg.org/css-backgrounds/#border-%s-radius" % corner, + boxed=True, + flags="APPLIES_TO_FIRST_LETTER", + animation_value_type="BorderCornerRadius", + )} % endfor -${helpers.single_keyword("box-decoration-break", "slice clone", - gecko_enum_prefix="StyleBoxDecorationBreak", - gecko_pref="layout.css.box-decoration-break.enabled", - spec="https://drafts.csswg.org/css-break/#propdef-box-decoration-break", - products="gecko", animation_value_type="discrete")} +${helpers.single_keyword( + "box-decoration-break", + "slice clone", + gecko_enum_prefix="StyleBoxDecorationBreak", + gecko_pref="layout.css.box-decoration-break.enabled", + spec="https://drafts.csswg.org/css-break/#propdef-box-decoration-break", + products="gecko", + animation_value_type="discrete", +)} -${helpers.single_keyword("-moz-float-edge", "content-box margin-box", - gecko_ffi_name="mFloatEdge", - gecko_enum_prefix="StyleFloatEdge", - products="gecko", - spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-float-edge)", - animation_value_type="discrete")} +${helpers.single_keyword( + "-moz-float-edge", + "content-box margin-box", + gecko_ffi_name="mFloatEdge", + gecko_enum_prefix="StyleFloatEdge", + products="gecko", + spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-float-edge)", + animation_value_type="discrete", +)} -${helpers.predefined_type("border-image-source", "ImageLayer", +${helpers.predefined_type( + "border-image-source", + "ImageLayer", initial_value="Either::First(None_)", initial_specified_value="Either::First(None_)", spec="https://drafts.csswg.org/css-backgrounds/#the-background-image", vector=False, animation_value_type="discrete", flags="APPLIES_TO_FIRST_LETTER", - boxed=True)} + boxed=True, +)} -${helpers.predefined_type("border-image-outset", "LengthOrNumberRect", +${helpers.predefined_type( + "border-image-outset", + "LengthOrNumberRect", parse_method="parse_non_negative", initial_value="computed::LengthOrNumberRect::all(computed::LengthOrNumber::zero())", initial_specified_value="specified::LengthOrNumberRect::all(specified::LengthOrNumber::zero())", spec="https://drafts.csswg.org/css-backgrounds/#border-image-outset", animation_value_type="discrete", flags="APPLIES_TO_FIRST_LETTER", - boxed=True)} + boxed=True, +)} ${helpers.predefined_type( "border-image-repeat", "BorderImageRepeat", "computed::BorderImageRepeat::stretch()", initial_specified_value="specified::BorderImageRepeat::stretch()", animation_value_type="discrete", spec="https://drafts.csswg.org/css-backgrounds/#the-border-image-repeat", flags="APPLIES_TO_FIRST_LETTER", )} -${helpers.predefined_type("border-image-width", "BorderImageWidth", +${helpers.predefined_type( + "border-image-width", + "BorderImageWidth", initial_value="computed::BorderImageWidth::all(computed::BorderImageSideWidth::one())", initial_specified_value="specified::BorderImageWidth::all(specified::BorderImageSideWidth::one())", spec="https://drafts.csswg.org/css-backgrounds/#border-image-width", animation_value_type="discrete", flags="APPLIES_TO_FIRST_LETTER", - boxed=True)} + boxed=True, +)} -${helpers.predefined_type("border-image-slice", "BorderImageSlice", +${helpers.predefined_type( + "border-image-slice", + "BorderImageSlice", initial_value="computed::NumberOrPercentage::Percentage(computed::Percentage(1.)).into()", initial_specified_value="specified::NumberOrPercentage::Percentage(specified::Percentage::new(1.)).into()", spec="https://drafts.csswg.org/css-backgrounds/#border-image-slice", animation_value_type="discrete", flags="APPLIES_TO_FIRST_LETTER", - boxed=True)} + boxed=True, +)} #[cfg(feature = "gecko")] impl ::values::computed::BorderImageWidth { pub fn to_gecko_rect(&self, sides: &mut ::gecko_bindings::structs::nsStyleSides) { use gecko_bindings::sugar::ns_style_coord::{CoordDataMut, CoordDataValue}; use gecko::values::GeckoStyleCoordConvertible; use values::generics::border::BorderImageSideWidth; @@ -150,18 +175,19 @@ impl ::values::computed::BorderImageWidt }, BorderImageSideWidth::Number(n) => { sides.data_at_mut(${i}).set_value(CoordDataValue::Factor(n)) }, } % endfor } - pub fn from_gecko_rect(sides: &::gecko_bindings::structs::nsStyleSides) - -> Option<::values::computed::BorderImageWidth> { + pub fn from_gecko_rect( + sides: &::gecko_bindings::structs::nsStyleSides, + ) -> Option<::values::computed::BorderImageWidth> { use gecko_bindings::structs::nsStyleUnit::{eStyleUnit_Factor, eStyleUnit_Auto}; use gecko_bindings::sugar::ns_style_coord::CoordData; use gecko::values::GeckoStyleCoordConvertible; use values::computed::{LengthOrPercentage, Number}; use values::generics::border::BorderImageSideWidth; Some( ::values::computed::BorderImageWidth::new(
--- a/servo/components/style/properties/longhands/box.mako.rs +++ b/servo/components/style/properties/longhands/box.mako.rs @@ -36,61 +36,68 @@ -moz-grid-group -moz-grid-line -moz-stack -moz-inline-stack -moz-deck -moz-popup -moz-groupbox """, gecko_enum_prefix='StyleDisplay', gecko_strip_moz_prefix=False), type="::values::specified::Display" )} -${helpers.single_keyword("-moz-top-layer", "none top", - gecko_constant_prefix="NS_STYLE_TOP_LAYER", - gecko_ffi_name="mTopLayer", - products="gecko", animation_value_type="none", - enabled_in="ua", - spec="Internal (not web-exposed)")} +${helpers.single_keyword( + "-moz-top-layer", + "none top", + gecko_constant_prefix="NS_STYLE_TOP_LAYER", + gecko_ffi_name="mTopLayer", + products="gecko", + animation_value_type="none", + enabled_in="ua", + spec="Internal (not web-exposed)", +)} -${helpers.single_keyword("position", "static absolute relative fixed sticky", - animation_value_type="discrete", - flags="CREATES_STACKING_CONTEXT ABSPOS_CB", - spec="https://drafts.csswg.org/css-position/#position-property", - servo_restyle_damage="rebuild_and_reflow")} +${helpers.single_keyword( + "position", + "static absolute relative fixed sticky", + animation_value_type="discrete", + flags="CREATES_STACKING_CONTEXT ABSPOS_CB", + spec="https://drafts.csswg.org/css-position/#position-property", + servo_restyle_damage="rebuild_and_reflow", +)} ${helpers.predefined_type( "float", "Float", "computed::Float::None", initial_specified_value="specified::Float::None", spec="https://drafts.csswg.org/css-box/#propdef-float", animation_value_type="discrete", needs_context=False, flags="APPLIES_TO_FIRST_LETTER", servo_restyle_damage="rebuild_and_reflow", - gecko_ffi_name="mFloat" + gecko_ffi_name="mFloat", )} ${helpers.predefined_type( "clear", "Clear", "computed::Clear::None", animation_value_type="discrete", needs_context=False, gecko_ffi_name="mBreakType", spec="https://drafts.csswg.org/css-box/#propdef-clear", - servo_restyle_damage="rebuild_and_reflow" + servo_restyle_damage="rebuild_and_reflow", )} ${helpers.predefined_type( "vertical-align", "VerticalAlign", "computed::VerticalAlign::baseline()", animation_value_type="ComputedValue", flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER", spec="https://www.w3.org/TR/CSS2/visudet.html#propdef-vertical-align", - servo_restyle_damage = "reflow" + servo_restyle_damage = "reflow", )} // CSS 2.1, Section 11 - Visual effects ${helpers.single_keyword("-servo-overflow-clip-box", "padding-box content-box", products="servo", animation_value_type="none", enabled_in="ua", spec="Internal, not web-exposed, \ may be standardized in the future (https://developer.mozilla.org/en-US/docs/Web/CSS/overflow-clip-box)")} @@ -113,328 +120,368 @@ <% overflow_custom_consts = { "-moz-hidden-unscrollable": "CLIP" } %> // FIXME(pcwalton, #2742): Implement scrolling for `scroll` and `auto`. // // We allow it to apply to placeholders for UA sheets, which set it !important. -${helpers.single_keyword("overflow-x", "visible hidden scroll auto", - animation_value_type="discrete", - extra_gecko_values="-moz-hidden-unscrollable", - custom_consts=overflow_custom_consts, - gecko_constant_prefix="NS_STYLE_OVERFLOW", - flags="APPLIES_TO_PLACEHOLDER", - spec="https://drafts.csswg.org/css-overflow/#propdef-overflow-x", - servo_restyle_damage = "reflow")} +${helpers.single_keyword( + "overflow-x", + "visible hidden scroll auto", + animation_value_type="discrete", + extra_gecko_values="-moz-hidden-unscrollable", + custom_consts=overflow_custom_consts, + gecko_constant_prefix="NS_STYLE_OVERFLOW", + flags="APPLIES_TO_PLACEHOLDER", + spec="https://drafts.csswg.org/css-overflow/#propdef-overflow-x", + servo_restyle_damage = "reflow", +)} // FIXME(pcwalton, #2742): Implement scrolling for `scroll` and `auto`. // // We allow it to apply to placeholders for UA sheets, which set it !important. <%helpers:longhand name="overflow-y" animation_value_type="discrete" flags="APPLIES_TO_PLACEHOLDER", spec="https://drafts.csswg.org/css-overflow/#propdef-overflow-y" servo_restyle_damage = "reflow"> pub use super::overflow_x::{SpecifiedValue, parse, get_initial_value, computed_value}; </%helpers:longhand> <% transition_extra_prefixes = "moz:layout.css.prefixes.transitions webkit" %> -${helpers.predefined_type("transition-duration", - "Time", - "computed::Time::zero()", - initial_specified_value="specified::Time::zero()", - parse_method="parse_non_negative", - vector=True, - need_index=True, - animation_value_type="none", - extra_prefixes=transition_extra_prefixes, - spec="https://drafts.csswg.org/css-transitions/#propdef-transition-duration")} +${helpers.predefined_type( + "transition-duration", + "Time", + "computed::Time::zero()", + initial_specified_value="specified::Time::zero()", + parse_method="parse_non_negative", + vector=True, + need_index=True, + animation_value_type="none", + extra_prefixes=transition_extra_prefixes, + spec="https://drafts.csswg.org/css-transitions/#propdef-transition-duration", +)} -${helpers.predefined_type("transition-timing-function", - "TimingFunction", - "computed::TimingFunction::ease()", - initial_specified_value="specified::TimingFunction::ease()", - vector=True, - need_index=True, - animation_value_type="none", - extra_prefixes=transition_extra_prefixes, - spec="https://drafts.csswg.org/css-transitions/#propdef-transition-timing-function")} +${helpers.predefined_type( + "transition-timing-function", + "TimingFunction", + "computed::TimingFunction::ease()", + initial_specified_value="specified::TimingFunction::ease()", + vector=True, + need_index=True, + animation_value_type="none", + extra_prefixes=transition_extra_prefixes, + spec="https://drafts.csswg.org/css-transitions/#propdef-transition-timing-function", +)} ${helpers.predefined_type( "transition-property", "TransitionProperty", "computed::TransitionProperty::all()", initial_specified_value="specified::TransitionProperty::all()", vector=True, allow_empty="NotInitial", need_index=True, animation_value_type="none", extra_prefixes=transition_extra_prefixes, spec="https://drafts.csswg.org/css-transitions/#propdef-transition-property", )} -${helpers.predefined_type("transition-delay", - "Time", - "computed::Time::zero()", - initial_specified_value="specified::Time::zero()", - vector=True, - need_index=True, - animation_value_type="none", - extra_prefixes=transition_extra_prefixes, - spec="https://drafts.csswg.org/css-transitions/#propdef-transition-delay")} - +${helpers.predefined_type( + "transition-delay", + "Time", + "computed::Time::zero()", + initial_specified_value="specified::Time::zero()", + vector=True, + need_index=True, + animation_value_type="none", + extra_prefixes=transition_extra_prefixes, + spec="https://drafts.csswg.org/css-transitions/#propdef-transition-delay", +)} <% animation_extra_prefixes = "moz:layout.css.prefixes.animations webkit" %> ${helpers.predefined_type( "animation-name", "AnimationName", "computed::AnimationName::none()", initial_specified_value="specified::AnimationName::none()", vector=True, need_index=True, animation_value_type="none", extra_prefixes=animation_extra_prefixes, allowed_in_keyframe_block=False, spec="https://drafts.csswg.org/css-animations/#propdef-animation-name", )} -${helpers.predefined_type("animation-duration", - "Time", - "computed::Time::zero()", - initial_specified_value="specified::Time::zero()", - parse_method="parse_non_negative", - vector=True, - need_index=True, - animation_value_type="none", - extra_prefixes=animation_extra_prefixes, - spec="https://drafts.csswg.org/css-transitions/#propdef-transition-duration")} +${helpers.predefined_type( + "animation-duration", + "Time", + "computed::Time::zero()", + initial_specified_value="specified::Time::zero()", + parse_method="parse_non_negative", + vector=True, + need_index=True, + animation_value_type="none", + extra_prefixes=animation_extra_prefixes, + spec="https://drafts.csswg.org/css-transitions/#propdef-transition-duration", +)} // animation-timing-function is the exception to the rule for allowed_in_keyframe_block: // https://drafts.csswg.org/css-animations/#keyframes -${helpers.predefined_type("animation-timing-function", - "TimingFunction", - "computed::TimingFunction::ease()", - initial_specified_value="specified::TimingFunction::ease()", - vector=True, - need_index=True, - animation_value_type="none", - extra_prefixes=animation_extra_prefixes, - allowed_in_keyframe_block=True, - spec="https://drafts.csswg.org/css-transitions/#propdef-animation-timing-function")} +${helpers.predefined_type( + "animation-timing-function", + "TimingFunction", + "computed::TimingFunction::ease()", + initial_specified_value="specified::TimingFunction::ease()", + vector=True, + need_index=True, + animation_value_type="none", + extra_prefixes=animation_extra_prefixes, + allowed_in_keyframe_block=True, + spec="https://drafts.csswg.org/css-transitions/#propdef-animation-timing-function", +)} ${helpers.predefined_type( "animation-iteration-count", "AnimationIterationCount", "computed::AnimationIterationCount::one()", initial_specified_value="specified::AnimationIterationCount::one()", vector=True, need_index=True, animation_value_type="none", extra_prefixes=animation_extra_prefixes, allowed_in_keyframe_block=False, spec="https://drafts.csswg.org/css-animations/#propdef-animation-iteration-count", )} <% animation_direction_custom_consts = { "alternate-reverse": "Alternate_reverse" } %> -${helpers.single_keyword("animation-direction", - "normal reverse alternate alternate-reverse", - need_index=True, - animation_value_type="none", - vector=True, - gecko_enum_prefix="PlaybackDirection", - custom_consts=animation_direction_custom_consts, - extra_prefixes=animation_extra_prefixes, - spec="https://drafts.csswg.org/css-animations/#propdef-animation-direction", - allowed_in_keyframe_block=False)} +${helpers.single_keyword( + "animation-direction", + "normal reverse alternate alternate-reverse", + need_index=True, + animation_value_type="none", + vector=True, + gecko_enum_prefix="PlaybackDirection", + custom_consts=animation_direction_custom_consts, + extra_prefixes=animation_extra_prefixes, + spec="https://drafts.csswg.org/css-animations/#propdef-animation-direction", + allowed_in_keyframe_block=False, +)} -${helpers.single_keyword("animation-play-state", - "running paused", - need_index=True, - animation_value_type="none", - vector=True, - extra_prefixes=animation_extra_prefixes, - spec="https://drafts.csswg.org/css-animations/#propdef-animation-play-state", - allowed_in_keyframe_block=False)} +${helpers.single_keyword( + "animation-play-state", + "running paused", + need_index=True, + animation_value_type="none", + vector=True, + extra_prefixes=animation_extra_prefixes, + spec="https://drafts.csswg.org/css-animations/#propdef-animation-play-state", + allowed_in_keyframe_block=False, +)} -${helpers.single_keyword("animation-fill-mode", - "none forwards backwards both", - need_index=True, - animation_value_type="none", - vector=True, - gecko_enum_prefix="FillMode", - extra_prefixes=animation_extra_prefixes, - spec="https://drafts.csswg.org/css-animations/#propdef-animation-fill-mode", - allowed_in_keyframe_block=False)} +${helpers.single_keyword( + "animation-fill-mode", + "none forwards backwards both", + need_index=True, + animation_value_type="none", + vector=True, + gecko_enum_prefix="FillMode", + extra_prefixes=animation_extra_prefixes, + spec="https://drafts.csswg.org/css-animations/#propdef-animation-fill-mode", + allowed_in_keyframe_block=False, +)} -${helpers.predefined_type("animation-delay", - "Time", - "computed::Time::zero()", - initial_specified_value="specified::Time::zero()", - vector=True, - need_index=True, - animation_value_type="none", - extra_prefixes=animation_extra_prefixes, - spec="https://drafts.csswg.org/css-animations/#propdef-animation-delay", - allowed_in_keyframe_block=False)} +${helpers.predefined_type( + "animation-delay", + "Time", + "computed::Time::zero()", + initial_specified_value="specified::Time::zero()", + vector=True, + need_index=True, + animation_value_type="none", + extra_prefixes=animation_extra_prefixes, + spec="https://drafts.csswg.org/css-animations/#propdef-animation-delay", + allowed_in_keyframe_block=False, +)} % for axis in ["x", "y"]: ${helpers.predefined_type( "scroll-snap-points-" + axis, "ScrollSnapPoint", "computed::ScrollSnapPoint::none()", animation_value_type="discrete", gecko_pref="layout.css.scroll-snap.enabled", products="gecko", spec="Nonstandard (https://www.w3.org/TR/2015/WD-css-snappoints-1-20150326/#scroll-snap-points)", )} % endfor -${helpers.predefined_type("scroll-snap-destination", - "Position", - "computed::Position::zero()", - products="gecko", - gecko_pref="layout.css.scroll-snap.enabled", - boxed=True, - spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-snap-destination)", - animation_value_type="discrete")} +${helpers.predefined_type( + "scroll-snap-destination", + "Position", + "computed::Position::zero()", + products="gecko", + gecko_pref="layout.css.scroll-snap.enabled", + boxed=True, + spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-snap-destination)", + animation_value_type="discrete", +)} ${helpers.predefined_type( "scroll-snap-coordinate", "Position", "computed::Position::zero()", vector=True, products="gecko", gecko_pref="layout.css.scroll-snap.enabled", spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-snap-destination)", animation_value_type="discrete", - allow_empty="NotInitial" + allow_empty="NotInitial", )} <% transform_extra_prefixes = "moz:layout.css.prefixes.transforms webkit" %> ${helpers.predefined_type( "transform", "Transform", "generics::transform::Transform::none()", extra_prefixes=transform_extra_prefixes, animation_value_type="ComputedValue", gecko_ffi_name="mSpecifiedTransform", flags="CREATES_STACKING_CONTEXT FIXPOS_CB \ GETCS_NEEDS_LAYOUT_FLUSH CAN_ANIMATE_ON_COMPOSITOR", spec="https://drafts.csswg.org/css-transforms/#propdef-transform", - servo_restyle_damage="reflow_out_of_flow" + servo_restyle_damage="reflow_out_of_flow", )} -${helpers.predefined_type("rotate", "Rotate", - "generics::transform::Rotate::None", - animation_value_type="ComputedValue", - boxed=True, - flags="CREATES_STACKING_CONTEXT FIXPOS_CB", - gecko_pref="layout.css.individual-transform.enabled", - spec="https://drafts.csswg.org/css-transforms-2/#individual-transforms", - servo_restyle_damage = "reflow_out_of_flow")} +${helpers.predefined_type( + "rotate", + "Rotate", + "generics::transform::Rotate::None", + animation_value_type="ComputedValue", + boxed=True, + flags="CREATES_STACKING_CONTEXT FIXPOS_CB", + gecko_pref="layout.css.individual-transform.enabled", + spec="https://drafts.csswg.org/css-transforms-2/#individual-transforms", + servo_restyle_damage = "reflow_out_of_flow", +)} -${helpers.predefined_type("scale", "Scale", - "generics::transform::Scale::None", - animation_value_type="ComputedValue", - boxed=True, - flags="CREATES_STACKING_CONTEXT FIXPOS_CB", - gecko_pref="layout.css.individual-transform.enabled", - spec="https://drafts.csswg.org/css-transforms-2/#individual-transforms", - servo_restyle_damage = "reflow_out_of_flow")} +${helpers.predefined_type( + "scale", + "Scale", + "generics::transform::Scale::None", + animation_value_type="ComputedValue", + boxed=True, + flags="CREATES_STACKING_CONTEXT FIXPOS_CB", + gecko_pref="layout.css.individual-transform.enabled", + spec="https://drafts.csswg.org/css-transforms-2/#individual-transforms", + servo_restyle_damage = "reflow_out_of_flow", +)} ${helpers.predefined_type( "translate", "Translate", "generics::transform::Translate::None", animation_value_type="ComputedValue", boxed=True, flags="CREATES_STACKING_CONTEXT FIXPOS_CB GETCS_NEEDS_LAYOUT_FLUSH", gecko_pref="layout.css.individual-transform.enabled", spec="https://drafts.csswg.org/css-transforms-2/#individual-transforms", - servo_restyle_damage="reflow_out_of_flow" + servo_restyle_damage="reflow_out_of_flow", )} // Motion Path Module Level 1 ${helpers.predefined_type( "offset-path", "OffsetPath", "computed::OffsetPath::none()", animation_value_type="none", gecko_pref="layout.css.motion-path.enabled", flags="CREATES_STACKING_CONTEXT FIXPOS_CB", spec="https://drafts.fxtf.org/motion-1/#offset-path-property" )} // CSSOM View Module // https://www.w3.org/TR/cssom-view-1/ -${helpers.single_keyword("scroll-behavior", - "auto smooth", - gecko_pref="layout.css.scroll-behavior.property-enabled", - products="gecko", - spec="https://drafts.csswg.org/cssom-view/#propdef-scroll-behavior", - animation_value_type="discrete")} +${helpers.single_keyword( + "scroll-behavior", + "auto smooth", + gecko_pref="layout.css.scroll-behavior.property-enabled", + products="gecko", + spec="https://drafts.csswg.org/cssom-view/#propdef-scroll-behavior", + animation_value_type="discrete", +)} % for axis in ["x", "y"]: ${helpers.predefined_type( "scroll-snap-type-" + axis, "ScrollSnapType", "computed::ScrollSnapType::None", products="gecko", needs_context=False, gecko_pref="layout.css.scroll-snap.enabled", spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-snap-type-x)", - animation_value_type="discrete" + animation_value_type="discrete", )} % endfor % for axis in ["x", "y"]: ${helpers.predefined_type( "overscroll-behavior-" + axis, "OverscrollBehavior", "computed::OverscrollBehavior::Auto", products="gecko", needs_context=False, gecko_pref="layout.css.overscroll-behavior.enabled", spec="https://wicg.github.io/overscroll-behavior/#overscroll-behavior-properties", - animation_value_type="discrete" + animation_value_type="discrete", )} % endfor // Compositing and Blending Level 1 // http://www.w3.org/TR/compositing-1/ -${helpers.single_keyword("isolation", - "auto isolate", - products="gecko", - gecko_pref="layout.css.isolation.enabled", - spec="https://drafts.fxtf.org/compositing/#isolation", - flags="CREATES_STACKING_CONTEXT", - animation_value_type="discrete")} +${helpers.single_keyword( + "isolation", + "auto isolate", + products="gecko", + gecko_pref="layout.css.isolation.enabled", + spec="https://drafts.fxtf.org/compositing/#isolation", + flags="CREATES_STACKING_CONTEXT", + animation_value_type="discrete", +)} // TODO add support for logical values recto and verso -${helpers.single_keyword("page-break-after", - "auto always avoid left right", - products="gecko", - spec="https://drafts.csswg.org/css2/page.html#propdef-page-break-after", - animation_value_type="discrete")} -${helpers.single_keyword("page-break-before", - "auto always avoid left right", - products="gecko", - spec="https://drafts.csswg.org/css2/page.html#propdef-page-break-before", - animation_value_type="discrete")} -${helpers.single_keyword("page-break-inside", - "auto avoid", - products="gecko", - gecko_ffi_name="mBreakInside", - gecko_constant_prefix="NS_STYLE_PAGE_BREAK", - spec="https://drafts.csswg.org/css2/page.html#propdef-page-break-inside", - animation_value_type="discrete")} +${helpers.single_keyword( + "page-break-after", + "auto always avoid left right", + products="gecko", + spec="https://drafts.csswg.org/css2/page.html#propdef-page-break-after", + animation_value_type="discrete", +)} + +${helpers.single_keyword( + "page-break-before", + "auto always avoid left right", + products="gecko", + spec="https://drafts.csswg.org/css2/page.html#propdef-page-break-before", + animation_value_type="discrete", +)} + +${helpers.single_keyword( + "page-break-inside", + "auto avoid", + products="gecko", + gecko_ffi_name="mBreakInside", + gecko_constant_prefix="NS_STYLE_PAGE_BREAK", + spec="https://drafts.csswg.org/css2/page.html#propdef-page-break-inside", + animation_value_type="discrete", +)} // CSS Basic User Interface Module Level 3 // http://dev.w3.org/csswg/css-ui // // This is APPLIES_TO_PLACEHOLDER so we can override, in the UA sheet, the // 'resize' property we'd inherit from textarea otherwise. Basically, just // makes the UA rules easier to write. ${helpers.predefined_type( @@ -468,30 +515,34 @@ boxed=True, extra_prefixes=transform_extra_prefixes, spec="https://drafts.csswg.org/css-transforms-2/#perspective-origin-property", flags="GETCS_NEEDS_LAYOUT_FLUSH", animation_value_type="ComputedValue", servo_restyle_damage="reflow_out_of_flow" )} -${helpers.single_keyword("backface-visibility", - "visible hidden", - spec="https://drafts.csswg.org/css-transforms/#backface-visibility-property", - extra_prefixes=transform_extra_prefixes, - animation_value_type="discrete")} +${helpers.single_keyword( + "backface-visibility", + "visible hidden", + spec="https://drafts.csswg.org/css-transforms/#backface-visibility-property", + extra_prefixes=transform_extra_prefixes, + animation_value_type="discrete", +)} -${helpers.single_keyword("transform-box", - "border-box fill-box view-box", - gecko_enum_prefix="StyleGeometryBox", - products="gecko", - gecko_pref="svg.transform-box.enabled", - spec="https://drafts.csswg.org/css-transforms/#transform-box", - gecko_inexhaustive="True", - animation_value_type="discrete")} +${helpers.single_keyword( + "transform-box", + "border-box fill-box view-box", + gecko_enum_prefix="StyleGeometryBox", + products="gecko", + gecko_pref="svg.transform-box.enabled", + spec="https://drafts.csswg.org/css-transforms/#transform-box", + gecko_inexhaustive="True", + animation_value_type="discrete", +)} ${helpers.predefined_type( "transform-style", "TransformStyle", "computed::TransformStyle::" + ("Auto" if product == "servo" else "Flat"), spec="https://drafts.csswg.org/css-transforms-2/#transform-style-property", needs_context=False, extra_prefixes=transform_extra_prefixes, @@ -505,17 +556,17 @@ "TransformOrigin", "computed::TransformOrigin::initial_value()", animation_value_type="ComputedValue", extra_prefixes=transform_extra_prefixes, gecko_ffi_name="mTransformOrigin", boxed=True, flags="GETCS_NEEDS_LAYOUT_FLUSH", spec="https://drafts.csswg.org/css-transforms/#transform-origin-property", - servo_restyle_damage="reflow_out_of_flow" + servo_restyle_damage="reflow_out_of_flow", )} ${helpers.predefined_type( "contain", "Contain", "specified::Contain::empty()", animation_value_type="none", products="gecko", @@ -530,37 +581,43 @@ "Appearance", "computed::Appearance::None", products="gecko", alias="-webkit-appearance:layout.css.webkit-appearance.enabled", spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-appearance)", animation_value_type="discrete", )} -${helpers.predefined_type("-moz-binding", "url::UrlOrNone", "computed::url::UrlOrNone::none()", - products="gecko", - animation_value_type="none", - gecko_ffi_name="mBinding", - spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-binding)")} +${helpers.predefined_type( + "-moz-binding", + "url::UrlOrNone", + "computed::url::UrlOrNone::none()", + products="gecko", + animation_value_type="none", + gecko_ffi_name="mBinding", + spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-binding)", +)} -${helpers.single_keyword("-moz-orient", - "inline block horizontal vertical", - products="gecko", - gecko_ffi_name="mOrient", - gecko_enum_prefix="StyleOrient", - spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-orient)", - animation_value_type="discrete")} +${helpers.single_keyword( + "-moz-orient", + "inline block horizontal vertical", + products="gecko", + gecko_ffi_name="mOrient", + gecko_enum_prefix="StyleOrient", + spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-orient)", + animation_value_type="discrete", +)} ${helpers.predefined_type( "will-change", "WillChange", "computed::WillChange::auto()", products="gecko", animation_value_type="none", - spec="https://drafts.csswg.org/css-will-change/#will-change" + spec="https://drafts.csswg.org/css-will-change/#will-change", )} ${helpers.predefined_type( "shape-image-threshold", "Opacity", "0.0", products="gecko", gecko_pref="layout.css.shape-outside.enabled", animation_value_type="ComputedValue", flags="APPLIES_TO_FIRST_LETTER",
--- a/servo/components/style/properties/longhands/color.mako.rs +++ b/servo/components/style/properties/longhands/color.mako.rs @@ -10,17 +10,17 @@ ${helpers.predefined_type( "color", "ColorPropertyValue", "::cssparser::RGBA::new(0, 0, 0, 255)", animation_value_type="AnimatedRGBA", flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER", ignored_when_colors_disabled="True", - spec="https://drafts.csswg.org/css-color/#color" + spec="https://drafts.csswg.org/css-color/#color", )} // FIXME(#15973): Add servo support for system colors // // FIXME(emilio): Move outside of mako. % if product == "gecko": pub mod system_colors { <% @@ -91,18 +91,20 @@ pub mod system_colors { } impl ToComputedValue for SystemColor { type ComputedValue = u32; // nscolor #[inline] fn to_computed_value(&self, cx: &Context) -> Self::ComputedValue { unsafe { - Gecko_GetLookAndFeelSystemColor(*self as i32, - cx.device().pres_context()) + Gecko_GetLookAndFeelSystemColor( + *self as i32, + cx.device().pres_context(), + ) } } #[inline] fn from_computed_value(_: &Self::ComputedValue) -> Self { unreachable!() } }
--- a/servo/components/style/properties/longhands/column.mako.rs +++ b/servo/components/style/properties/longhands/column.mako.rs @@ -1,74 +1,87 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ <%namespace name="helpers" file="/helpers.mako.rs" /> <% data.new_style_struct("Column", inherited=False) %> -${helpers.predefined_type("column-width", - "length::NonNegativeLengthOrAuto", - "Either::Second(Auto)", - initial_specified_value="Either::Second(Auto)", - extra_prefixes="moz", - animation_value_type="NonNegativeLengthOrAuto", - servo_pref="layout.columns.enabled", - spec="https://drafts.csswg.org/css-multicol/#propdef-column-width", - servo_restyle_damage="rebuild_and_reflow")} - +${helpers.predefined_type( + "column-width", + "length::NonNegativeLengthOrAuto", + "Either::Second(Auto)", + initial_specified_value="Either::Second(Auto)", + extra_prefixes="moz", + animation_value_type="NonNegativeLengthOrAuto", + servo_pref="layout.columns.enabled", + spec="https://drafts.csswg.org/css-multicol/#propdef-column-width", + servo_restyle_damage="rebuild_and_reflow", +)} ${helpers.predefined_type( "column-count", "ColumnCount", "computed::ColumnCount::auto()", initial_specified_value="specified::ColumnCount::auto()", servo_pref="layout.columns.enabled", animation_value_type="AnimatedColumnCount", extra_prefixes="moz", spec="https://drafts.csswg.org/css-multicol/#propdef-column-count", servo_restyle_damage="rebuild_and_reflow", )} - - -${helpers.single_keyword("column-fill", "balance auto", extra_prefixes="moz", - products="gecko", animation_value_type="discrete", - gecko_enum_prefix="StyleColumnFill", - spec="https://drafts.csswg.org/css-multicol/#propdef-column-fill")} +${helpers.single_keyword( + "column-fill", + "balance auto", + extra_prefixes="moz", + products="gecko", + animation_value_type="discrete", + gecko_enum_prefix="StyleColumnFill", + spec="https://drafts.csswg.org/css-multicol/#propdef-column-fill", +)} -${helpers.predefined_type("column-rule-width", - "BorderSideWidth", - "::values::computed::NonNegativeLength::new(3.)", - initial_specified_value="specified::BorderSideWidth::Medium", - computed_type="::values::computed::NonNegativeLength", - products="gecko", - spec="https://drafts.csswg.org/css-multicol/#propdef-column-rule-width", - animation_value_type="NonNegativeLength", - extra_prefixes="moz")} +${helpers.predefined_type( + "column-rule-width", + "BorderSideWidth", + "::values::computed::NonNegativeLength::new(3.)", + initial_specified_value="specified::BorderSideWidth::Medium", + computed_type="::values::computed::NonNegativeLength", + products="gecko", + spec="https://drafts.csswg.org/css-multicol/#propdef-column-rule-width", + animation_value_type="NonNegativeLength", + extra_prefixes="moz", +)} // https://drafts.csswg.org/css-multicol-1/#crc ${helpers.predefined_type( "column-rule-color", "Color", "computed_value::T::currentcolor()", initial_specified_value="specified::Color::currentcolor()", products="gecko", animation_value_type="AnimatedColor", extra_prefixes="moz", ignored_when_colors_disabled=True, spec="https://drafts.csswg.org/css-multicol/#propdef-column-rule-color", )} -${helpers.single_keyword("column-span", "none all", - products="gecko", animation_value_type="discrete", - gecko_enum_prefix="StyleColumnSpan", - gecko_pref="layout.css.column-span.enabled", - spec="https://drafts.csswg.org/css-multicol/#propdef-column-span", - extra_prefixes="moz:layout.css.column-span.enabled")} +${helpers.single_keyword( + "column-span", + "none all", + products="gecko", + animation_value_type="discrete", + gecko_enum_prefix="StyleColumnSpan", + gecko_pref="layout.css.column-span.enabled", + spec="https://drafts.csswg.org/css-multicol/#propdef-column-span", + extra_prefixes="moz:layout.css.column-span.enabled", +)} -${helpers.single_keyword("column-rule-style", - "none hidden dotted dashed solid double groove ridge inset outset", - products="gecko", extra_prefixes="moz", - gecko_constant_prefix="NS_STYLE_BORDER_STYLE", - animation_value_type="discrete", - spec="https://drafts.csswg.org/css-multicol/#propdef-column-rule-style")} +${helpers.single_keyword( + "column-rule-style", + "none hidden dotted dashed solid double groove ridge inset outset", + products="gecko", + extra_prefixes="moz", + gecko_constant_prefix="NS_STYLE_BORDER_STYLE", + animation_value_type="discrete", + spec="https://drafts.csswg.org/css-multicol/#propdef-column-rule-style", +)}
--- a/servo/components/style/properties/longhands/counters.mako.rs +++ b/servo/components/style/properties/longhands/counters.mako.rs @@ -1,33 +1,35 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ <%namespace name="helpers" file="/helpers.mako.rs" /> <% data.new_style_struct("Counters", inherited=False, gecko_name="Content") %> -${helpers.predefined_type("content", - "Content", - "computed::Content::normal()", - initial_specified_value="specified::Content::normal()", - animation_value_type="discrete", - spec="https://drafts.csswg.org/css-content/#propdef-content", - servo_restyle_damage="rebuild_and_reflow")} +${helpers.predefined_type( + "content", + "Content", + "computed::Content::normal()", + initial_specified_value="specified::Content::normal()", + animation_value_type="discrete", + spec="https://drafts.csswg.org/css-content/#propdef-content", + servo_restyle_damage="rebuild_and_reflow", +)} ${helpers.predefined_type( "counter-increment", "CounterIncrement", initial_value="Default::default()", animation_value_type="discrete", spec="https://drafts.csswg.org/css-lists/#propdef-counter-increment", - servo_restyle_damage="rebuild_and_reflow" + servo_restyle_damage="rebuild_and_reflow", )} ${helpers.predefined_type( "counter-reset", "CounterReset", 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" + servo_restyle_damage="rebuild_and_reflow", )}
--- a/servo/components/style/properties/longhands/effects.mako.rs +++ b/servo/components/style/properties/longhands/effects.mako.rs @@ -10,53 +10,58 @@ ${helpers.predefined_type( "opacity", "Opacity", "1.0", animation_value_type="ComputedValue", flags="CREATES_STACKING_CONTEXT APPLIES_TO_PLACEHOLDER \ CAN_ANIMATE_ON_COMPOSITOR", spec="https://drafts.csswg.org/css-color/#opacity", - servo_restyle_damage = "reflow_out_of_flow" + servo_restyle_damage = "reflow_out_of_flow", )} ${helpers.predefined_type( "box-shadow", "BoxShadow", None, vector=True, animation_value_type="AnimatedBoxShadowList", vector_animation_type="with_zero", extra_prefixes="webkit", ignored_when_colors_disabled=True, flags="APPLIES_TO_FIRST_LETTER", spec="https://drafts.csswg.org/css-backgrounds/#box-shadow", )} -${helpers.predefined_type("clip", - "ClipRectOrAuto", - "computed::ClipRectOrAuto::auto()", - animation_value_type="ComputedValue", - boxed=True, - allow_quirks=True, - spec="https://drafts.fxtf.org/css-masking/#clip-property")} +${helpers.predefined_type( + "clip", + "ClipRectOrAuto", + "computed::ClipRectOrAuto::auto()", + animation_value_type="ComputedValue", + boxed=True, + allow_quirks=True, + spec="https://drafts.fxtf.org/css-masking/#clip-property", +)} ${helpers.predefined_type( "filter", "Filter", None, vector=True, separator="Space", animation_value_type="AnimatedFilterList", vector_animation_type="with_zero", extra_prefixes="webkit", flags="CREATES_STACKING_CONTEXT FIXPOS_CB", spec="https://drafts.fxtf.org/filters/#propdef-filter", )} -${helpers.single_keyword("mix-blend-mode", - """normal multiply screen overlay darken lighten color-dodge - color-burn hard-light soft-light difference exclusion hue - saturation color luminosity""", gecko_constant_prefix="NS_STYLE_BLEND", - animation_value_type="discrete", - flags="CREATES_STACKING_CONTEXT", - gecko_pref="layout.css.mix-blend-mode.enabled", - spec="https://drafts.fxtf.org/compositing/#propdef-mix-blend-mode")} +${helpers.single_keyword( + "mix-blend-mode", + """normal multiply screen overlay darken lighten color-dodge + color-burn hard-light soft-light difference exclusion hue + saturation color luminosity""", + gecko_constant_prefix="NS_STYLE_BLEND", + animation_value_type="discrete", + flags="CREATES_STACKING_CONTEXT", + gecko_pref="layout.css.mix-blend-mode.enabled", + spec="https://drafts.fxtf.org/compositing/#propdef-mix-blend-mode", +)}
--- a/servo/components/style/properties/longhands/inherited_svg.mako.rs +++ b/servo/components/style/properties/longhands/inherited_svg.mako.rs @@ -1,97 +1,133 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ <%namespace name="helpers" file="/helpers.mako.rs" /> // SVG 1.1 (Second Edition) // https://www.w3.org/TR/SVG/ -<% data.new_style_struct("InheritedSVG", - inherited=True, - gecko_name="SVG") %> +<% data.new_style_struct("InheritedSVG", inherited=True, gecko_name="SVG") %> // Section 10 - Text -${helpers.single_keyword("text-anchor", - "start middle end", - products="gecko", - animation_value_type="discrete", - spec="https://www.w3.org/TR/SVG/text.html#TextAnchorProperty")} +${helpers.single_keyword( + "text-anchor", + "start middle end", + products="gecko", + animation_value_type="discrete", + spec="https://www.w3.org/TR/SVG/text.html#TextAnchorProperty", +)} // Section 11 - Painting: Filling, Stroking and Marker Symbols -${helpers.single_keyword("color-interpolation", - "srgb auto linearrgb", - products="gecko", - animation_value_type="discrete", - spec="https://www.w3.org/TR/SVG11/painting.html#ColorInterpolationProperty")} +${helpers.single_keyword( + "color-interpolation", + "srgb auto linearrgb", + products="gecko", + animation_value_type="discrete", + spec="https://www.w3.org/TR/SVG11/painting.html#ColorInterpolationProperty", +)} -${helpers.single_keyword("color-interpolation-filters", "linearrgb auto srgb", - products="gecko", - gecko_constant_prefix="NS_STYLE_COLOR_INTERPOLATION", - animation_value_type="discrete", - spec="https://www.w3.org/TR/SVG11/painting.html#ColorInterpolationFiltersProperty")} +${helpers.single_keyword( + "color-interpolation-filters", + "linearrgb auto srgb", + products="gecko", + gecko_constant_prefix="NS_STYLE_COLOR_INTERPOLATION", + animation_value_type="discrete", + spec="https://www.w3.org/TR/SVG11/painting.html#ColorInterpolationFiltersProperty", +)} ${helpers.predefined_type( - "fill", "SVGPaint", + "fill", + "SVGPaint", "::values::computed::SVGPaint::black()", products="gecko", animation_value_type="IntermediateSVGPaint", boxed=True, - spec="https://www.w3.org/TR/SVG2/painting.html#SpecifyingFillPaint")} - -${helpers.predefined_type("fill-opacity", "SVGOpacity", "Default::default()", - products="gecko", animation_value_type="ComputedValue", - spec="https://www.w3.org/TR/SVG11/painting.html#FillOpacityProperty")} - -${helpers.single_keyword("fill-rule", "nonzero evenodd", - gecko_enum_prefix="StyleFillRule", - products="gecko", animation_value_type="discrete", - spec="https://www.w3.org/TR/SVG11/painting.html#FillRuleProperty")} - -${helpers.single_keyword("shape-rendering", - "auto optimizespeed crispedges geometricprecision", - products="gecko", - animation_value_type="discrete", - spec="https://www.w3.org/TR/SVG11/painting.html#ShapeRenderingProperty")} + spec="https://www.w3.org/TR/SVG2/painting.html#SpecifyingFillPaint", +)} ${helpers.predefined_type( - "stroke", "SVGPaint", + "fill-opacity", + "SVGOpacity", + "Default::default()", + products="gecko", + animation_value_type="ComputedValue", + spec="https://www.w3.org/TR/SVG11/painting.html#FillOpacityProperty", +)} + +${helpers.single_keyword( + "fill-rule", + "nonzero evenodd", + gecko_enum_prefix="StyleFillRule", + products="gecko", + animation_value_type="discrete", + spec="https://www.w3.org/TR/SVG11/painting.html#FillRuleProperty", +)} + +${helpers.single_keyword( + "shape-rendering", + "auto optimizespeed crispedges geometricprecision", + products="gecko", + animation_value_type="discrete", + spec="https://www.w3.org/TR/SVG11/painting.html#ShapeRenderingProperty", +)} + +${helpers.predefined_type( + "stroke", + "SVGPaint", "Default::default()", products="gecko", animation_value_type="IntermediateSVGPaint", boxed=True, - spec="https://www.w3.org/TR/SVG2/painting.html#SpecifyingStrokePaint")} + spec="https://www.w3.org/TR/SVG2/painting.html#SpecifyingStrokePaint", +)} ${helpers.predefined_type( "stroke-width", "SVGWidth", "::values::computed::NonNegativeLength::new(1.).into()", products="gecko", animation_value_type="::values::computed::SVGWidth", spec="https://www.w3.org/TR/SVG2/painting.html#StrokeWidth", )} -${helpers.single_keyword("stroke-linecap", "butt round square", - products="gecko", animation_value_type="discrete", - spec="https://www.w3.org/TR/SVG11/painting.html#StrokeLinecapProperty")} +${helpers.single_keyword( + "stroke-linecap", + "butt round square", + products="gecko", + animation_value_type="discrete", + spec="https://www.w3.org/TR/SVG11/painting.html#StrokeLinecapProperty", +)} -${helpers.single_keyword("stroke-linejoin", "miter round bevel", - products="gecko", animation_value_type="discrete", - spec="https://www.w3.org/TR/SVG11/painting.html#StrokeLinejoinProperty")} +${helpers.single_keyword( + "stroke-linejoin", + "miter round bevel", + products="gecko", + animation_value_type="discrete", + spec="https://www.w3.org/TR/SVG11/painting.html#StrokeLinejoinProperty", +)} -${helpers.predefined_type("stroke-miterlimit", "GreaterThanOrEqualToOneNumber", - "From::from(4.0)", - products="gecko", - animation_value_type="::values::computed::GreaterThanOrEqualToOneNumber", - spec="https://www.w3.org/TR/SVG11/painting.html#StrokeMiterlimitProperty")} +${helpers.predefined_type( + "stroke-miterlimit", + "GreaterThanOrEqualToOneNumber", + "From::from(4.0)", + products="gecko", + animation_value_type="::values::computed::GreaterThanOrEqualToOneNumber", + spec="https://www.w3.org/TR/SVG11/painting.html#StrokeMiterlimitProperty", +)} -${helpers.predefined_type("stroke-opacity", "SVGOpacity", "Default::default()", - products="gecko", animation_value_type="ComputedValue", - spec="https://www.w3.org/TR/SVG11/painting.html#StrokeOpacityProperty")} +${helpers.predefined_type( + "stroke-opacity", + "SVGOpacity", + "Default::default()", + products="gecko", + animation_value_type="ComputedValue", + spec="https://www.w3.org/TR/SVG11/painting.html#StrokeOpacityProperty", +)} ${helpers.predefined_type( "stroke-dasharray", "SVGStrokeDashArray", "Default::default()", products="gecko", animation_value_type="::values::computed::SVGStrokeDashArray", spec="https://www.w3.org/TR/SVG2/painting.html#StrokeDashing", @@ -101,43 +137,64 @@ "stroke-dashoffset", "SVGLength", "Au(0).into()", products="gecko", animation_value_type="ComputedValue", spec="https://www.w3.org/TR/SVG2/painting.html#StrokeDashing", )} // Section 14 - Clipping, Masking and Compositing -${helpers.single_keyword("clip-rule", "nonzero evenodd", - products="gecko", - gecko_enum_prefix="StyleFillRule", - animation_value_type="discrete", - spec="https://www.w3.org/TR/SVG11/masking.html#ClipRuleProperty")} +${helpers.single_keyword( + "clip-rule", + "nonzero evenodd", + products="gecko", + gecko_enum_prefix="StyleFillRule", + animation_value_type="discrete", + spec="https://www.w3.org/TR/SVG11/masking.html#ClipRuleProperty", +)} -${helpers.predefined_type("marker-start", "url::UrlOrNone", "computed::url::UrlOrNone::none()", - products="gecko", - animation_value_type="discrete", - spec="https://www.w3.org/TR/SVG2/painting.html#VertexMarkerProperties")} +${helpers.predefined_type( + "marker-start", + "url::UrlOrNone", + "computed::url::UrlOrNone::none()", + products="gecko", + animation_value_type="discrete", + spec="https://www.w3.org/TR/SVG2/painting.html#VertexMarkerProperties", +)} -${helpers.predefined_type("marker-mid", "url::UrlOrNone", "computed::url::UrlOrNone::none()", - products="gecko", - animation_value_type="discrete", - spec="https://www.w3.org/TR/SVG2/painting.html#VertexMarkerProperties")} +${helpers.predefined_type( + "marker-mid", + "url::UrlOrNone", + "computed::url::UrlOrNone::none()", + products="gecko", + animation_value_type="discrete", + spec="https://www.w3.org/TR/SVG2/painting.html#VertexMarkerProperties", +)} -${helpers.predefined_type("marker-end", "url::UrlOrNone", "computed::url::UrlOrNone::none()", - products="gecko", - animation_value_type="discrete", - spec="https://www.w3.org/TR/SVG2/painting.html#VertexMarkerProperties")} - -${helpers.predefined_type("paint-order", "SVGPaintOrder", "computed::SVGPaintOrder::normal()", - products="gecko", - animation_value_type="discrete", - spec="https://www.w3.org/TR/SVG2/painting.html#PaintOrder")} +${helpers.predefined_type( + "marker-end", + "url::UrlOrNone", + "computed::url::UrlOrNone::none()", + products="gecko", + animation_value_type="discrete", + spec="https://www.w3.org/TR/SVG2/painting.html#VertexMarkerProperties", +)} -${helpers.predefined_type("-moz-context-properties", - "MozContextProperties", - initial_value=None, - vector=True, - need_index=True, - animation_value_type="none", - products="gecko", - spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-context-properties)", - allow_empty=True)} +${helpers.predefined_type( + "paint-order", + "SVGPaintOrder", + "computed::SVGPaintOrder::normal()", + products="gecko", + animation_value_type="discrete", + spec="https://www.w3.org/TR/SVG2/painting.html#PaintOrder", +)} + +${helpers.predefined_type( + "-moz-context-properties", + "MozContextProperties", + initial_value=None, + vector=True, + need_index=True, + animation_value_type="none", + products="gecko", + spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-context-properties)", + allow_empty=True, +)}
--- a/servo/components/style/properties/longhands/inherited_table.mako.rs +++ b/servo/components/style/properties/longhands/inherited_table.mako.rs @@ -1,32 +1,45 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ <%namespace name="helpers" file="/helpers.mako.rs" /> <% data.new_style_struct("InheritedTable", inherited=True, gecko_name="TableBorder") %> -${helpers.single_keyword("border-collapse", "separate collapse", - gecko_constant_prefix="NS_STYLE_BORDER", - animation_value_type="discrete", - spec="https://drafts.csswg.org/css-tables/#propdef-border-collapse", - servo_restyle_damage = "reflow")} -${helpers.single_keyword("empty-cells", "show hide", - gecko_constant_prefix="NS_STYLE_TABLE_EMPTY_CELLS", - animation_value_type="discrete", - spec="https://drafts.csswg.org/css-tables/#propdef-empty-cells", - servo_restyle_damage="rebuild_and_reflow")} -${helpers.single_keyword("caption-side", "top bottom", - extra_gecko_values="right left top-outside bottom-outside", - needs_conversion="True", - animation_value_type="discrete", - spec="https://drafts.csswg.org/css-tables/#propdef-caption-side", - servo_restyle_damage="rebuild_and_reflow")} +${helpers.single_keyword( + "border-collapse", + "separate collapse", + gecko_constant_prefix="NS_STYLE_BORDER", + animation_value_type="discrete", + spec="https://drafts.csswg.org/css-tables/#propdef-border-collapse", + servo_restyle_damage = "reflow", +)} + +${helpers.single_keyword( + "empty-cells", + "show hide", + gecko_constant_prefix="NS_STYLE_TABLE_EMPTY_CELLS", + animation_value_type="discrete", + spec="https://drafts.csswg.org/css-tables/#propdef-empty-cells", + servo_restyle_damage="rebuild_and_reflow", +)} -${helpers.predefined_type("border-spacing", - "BorderSpacing", - "computed::BorderSpacing::zero()", - animation_value_type="BorderSpacing", - boxed=True, - spec="https://drafts.csswg.org/css-tables/#propdef-border-spacing", - servo_restyle_damage = "reflow")} +${helpers.single_keyword( + "caption-side", + "top bottom", + extra_gecko_values="right left top-outside bottom-outside", + needs_conversion="True", + animation_value_type="discrete", + spec="https://drafts.csswg.org/css-tables/#propdef-caption-side", + servo_restyle_damage="rebuild_and_reflow", +)} + +${helpers.predefined_type( + "border-spacing", + "BorderSpacing", + "computed::BorderSpacing::zero()", + animation_value_type="BorderSpacing", + boxed=True, + spec="https://drafts.csswg.org/css-tables/#propdef-border-spacing", + servo_restyle_damage = "reflow", +)}
--- a/servo/components/style/properties/longhands/inherited_text.mako.rs +++ b/servo/components/style/properties/longhands/inherited_text.mako.rs @@ -15,61 +15,78 @@ APPLIES_TO_PLACEHOLDER GETCS_NEEDS_LAYOUT_FLUSH", spec="https://drafts.csswg.org/css2/visudet.html#propdef-line-height", servo_restyle_damage="reflow" )} // CSS Text Module Level 3 // TODO(pcwalton): `full-width` -${helpers.single_keyword("text-transform", - "none capitalize uppercase lowercase", - extra_gecko_values="full-width", - animation_value_type="discrete", - flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER", - spec="https://drafts.csswg.org/css-text/#propdef-text-transform", - servo_restyle_damage="rebuild_and_reflow")} +${helpers.single_keyword( + "text-transform", + "none capitalize uppercase lowercase", + extra_gecko_values="full-width", + animation_value_type="discrete", + flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER", + spec="https://drafts.csswg.org/css-text/#propdef-text-transform", + servo_restyle_damage="rebuild_and_reflow", +)} -${helpers.single_keyword("hyphens", "manual none auto", - gecko_enum_prefix="StyleHyphens", - products="gecko", animation_value_type="discrete", extra_prefixes="moz", - spec="https://drafts.csswg.org/css-text/#propdef-hyphens")} +${helpers.single_keyword( + "hyphens", + "manual none auto", + gecko_enum_prefix="StyleHyphens", + products="gecko", + animation_value_type="discrete", + extra_prefixes="moz", + spec="https://drafts.csswg.org/css-text/#propdef-hyphens", +)} // TODO: Support <percentage> -${helpers.single_keyword("-moz-text-size-adjust", "auto none", - gecko_constant_prefix="NS_STYLE_TEXT_SIZE_ADJUST", - gecko_ffi_name="mTextSizeAdjust", - products="gecko", animation_value_type="discrete", - spec="https://drafts.csswg.org/css-size-adjust/#adjustment-control", - alias="-webkit-text-size-adjust")} +${helpers.single_keyword( + "-moz-text-size-adjust", + "auto none", + gecko_constant_prefix="NS_STYLE_TEXT_SIZE_ADJUST", + gecko_ffi_name="mTextSizeAdjust", + products="gecko", animation_value_type="discrete", + spec="https://drafts.csswg.org/css-size-adjust/#adjustment-control", + alias="-webkit-text-size-adjust", +)} -${helpers.predefined_type("text-indent", - "LengthOrPercentage", - "computed::LengthOrPercentage::Length(computed::Length::new(0.))", - animation_value_type="ComputedValue", - spec="https://drafts.csswg.org/css-text/#propdef-text-indent", - allow_quirks=True, servo_restyle_damage = "reflow")} +${helpers.predefined_type( + "text-indent", + "LengthOrPercentage", + "computed::LengthOrPercentage::Length(computed::Length::new(0.))", + animation_value_type="ComputedValue", + spec="https://drafts.csswg.org/css-text/#propdef-text-indent", + allow_quirks=True, + servo_restyle_damage = "reflow", +)} // Also known as "word-wrap" (which is more popular because of IE), but this is the preferred // name per CSS-TEXT 6.2. -${helpers.single_keyword("overflow-wrap", - "normal break-word", - gecko_constant_prefix="NS_STYLE_OVERFLOWWRAP", - animation_value_type="discrete", - spec="https://drafts.csswg.org/css-text/#propdef-overflow-wrap", - alias="word-wrap", - servo_restyle_damage="rebuild_and_reflow")} +${helpers.single_keyword( + "overflow-wrap", + "normal break-word", + gecko_constant_prefix="NS_STYLE_OVERFLOWWRAP", + animation_value_type="discrete", + spec="https://drafts.csswg.org/css-text/#propdef-overflow-wrap", + alias="word-wrap", + servo_restyle_damage="rebuild_and_reflow", +)} // TODO(pcwalton): Support `word-break: keep-all` once we have better CJK support. -${helpers.single_keyword("word-break", - "normal break-all keep-all", - gecko_constant_prefix="NS_STYLE_WORDBREAK", - animation_value_type="discrete", - spec="https://drafts.csswg.org/css-text/#propdef-word-break", - servo_restyle_damage="rebuild_and_reflow")} +${helpers.single_keyword( + "word-break", + "normal break-all keep-all", + gecko_constant_prefix="NS_STYLE_WORDBREAK", + animation_value_type="discrete", + spec="https://drafts.csswg.org/css-text/#propdef-word-break", + servo_restyle_damage="rebuild_and_reflow", +)} // TODO(pcwalton): Support `text-justify: distribute`. <%helpers:single_keyword name="text-justify" values="auto none inter-word" extra_gecko_values="inter-character" extra_specified="${'distribute' if product == 'gecko' else ''}" gecko_enum_prefix="StyleTextJustify" @@ -101,49 +118,55 @@ computed_value::T::${value} => SpecifiedValue::${value}, % endfor } } } % endif </%helpers:single_keyword> -${helpers.single_keyword("text-align-last", - "auto start end left right center justify", - products="gecko", - gecko_constant_prefix="NS_STYLE_TEXT_ALIGN", - animation_value_type="discrete", - spec="https://drafts.csswg.org/css-text/#propdef-text-align-last")} +${helpers.single_keyword( + "text-align-last", + "auto start end left right center justify", + products="gecko", + gecko_constant_prefix="NS_STYLE_TEXT_ALIGN", + animation_value_type="discrete", + spec="https://drafts.csswg.org/css-text/#propdef-text-align-last", +)} // TODO make this a shorthand and implement text-align-last/text-align-all -// -// FIXME(emilio): This can't really be that complicated. -${helpers.predefined_type("text-align", - "TextAlign", - "computed::TextAlign::start()", - animation_value_type="discrete", - flags="APPLIES_TO_PLACEHOLDER", - spec="https://drafts.csswg.org/css-text/#propdef-text-align", - servo_restyle_damage = "reflow")} +${helpers.predefined_type( + "text-align", + "TextAlign", + "computed::TextAlign::start()", + animation_value_type="discrete", + flags="APPLIES_TO_PLACEHOLDER", + spec="https://drafts.csswg.org/css-text/#propdef-text-align", + servo_restyle_damage = "reflow", +)} -${helpers.predefined_type("letter-spacing", - "LetterSpacing", - "computed::LetterSpacing::normal()", - animation_value_type="ComputedValue", - flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER", - spec="https://drafts.csswg.org/css-text/#propdef-letter-spacing", - servo_restyle_damage="rebuild_and_reflow")} +${helpers.predefined_type( + "letter-spacing", + "LetterSpacing", + "computed::LetterSpacing::normal()", + animation_value_type="ComputedValue", + flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER", + spec="https://drafts.csswg.org/css-text/#propdef-letter-spacing", + servo_restyle_damage="rebuild_and_reflow", +)} -${helpers.predefined_type("word-spacing", - "WordSpacing", - "computed::WordSpacing::normal()", - animation_value_type="ComputedValue", - flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER", - spec="https://drafts.csswg.org/css-text/#propdef-word-spacing", - servo_restyle_damage="rebuild_and_reflow")} +${helpers.predefined_type( + "word-spacing", + "WordSpacing", + "computed::WordSpacing::normal()", + animation_value_type="ComputedValue", + flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER", + spec="https://drafts.csswg.org/css-text/#propdef-word-spacing", + servo_restyle_damage="rebuild_and_reflow", +)} <%helpers:single_keyword name="white-space" values="normal pre nowrap pre-wrap pre-line" extra_gecko_values="-moz-pre-space" gecko_enum_prefix="StyleWhiteSpace" needs_conversion="True" animation_value_type="discrete" @@ -262,52 +285,70 @@ products="gecko", animation_value_type="AnimatedColor", ignored_when_colors_disabled=True, gecko_pref="layout.css.prefixes.webkit", flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER", spec="https://compat.spec.whatwg.org/#the-webkit-text-stroke-color", )} -${helpers.predefined_type("-webkit-text-stroke-width", - "BorderSideWidth", - "::values::computed::NonNegativeLength::new(0.)", - initial_specified_value="specified::BorderSideWidth::Length(specified::Length::zero())", - computed_type="::values::computed::NonNegativeLength", - products="gecko", - gecko_pref="layout.css.prefixes.webkit", - flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER", - spec="https://compat.spec.whatwg.org/#the-webkit-text-stroke-width", - animation_value_type="discrete")} +${helpers.predefined_type( + "-webkit-text-stroke-width", + "BorderSideWidth", + "::values::computed::NonNegativeLength::new(0.)", + initial_specified_value="specified::BorderSideWidth::Length(specified::Length::zero())", + computed_type="::values::computed::NonNegativeLength", + products="gecko", + gecko_pref="layout.css.prefixes.webkit", + flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER", + spec="https://compat.spec.whatwg.org/#the-webkit-text-stroke-width", + animation_value_type="discrete", +)} // CSS Ruby Layout Module Level 1 // https://drafts.csswg.org/css-ruby/ -${helpers.single_keyword("ruby-align", "space-around start center space-between", - products="gecko", animation_value_type="discrete", - spec="https://drafts.csswg.org/css-ruby/#ruby-align-property")} +${helpers.single_keyword( + "ruby-align", + "space-around start center space-between", + products="gecko", + animation_value_type="discrete", + spec="https://drafts.csswg.org/css-ruby/#ruby-align-property", +)} -${helpers.single_keyword("ruby-position", "over under", - products="gecko", animation_value_type="discrete", - spec="https://drafts.csswg.org/css-ruby/#ruby-position-property")} +${helpers.single_keyword( + "ruby-position", + "over under", + products="gecko", + animation_value_type="discrete", + spec="https://drafts.csswg.org/css-ruby/#ruby-position-property", +)} // CSS Writing Modes Module Level 3 // https://drafts.csswg.org/css-writing-modes-3/ -${helpers.single_keyword("text-combine-upright", "none all", - products="gecko", animation_value_type="discrete", - spec="https://drafts.csswg.org/css-writing-modes-3/#text-combine-upright")} +${helpers.single_keyword( + "text-combine-upright", + "none all", + products="gecko", + animation_value_type="discrete", + spec="https://drafts.csswg.org/css-writing-modes-3/#text-combine-upright", +)} // SVG 1.1: Section 11 - Painting: Filling, Stroking and Marker Symbols -${helpers.single_keyword("text-rendering", - "auto optimizespeed optimizelegibility geometricprecision", - animation_value_type="discrete", - spec="https://www.w3.org/TR/SVG11/painting.html#TextRenderingProperty", - servo_restyle_damage="rebuild_and_reflow")} +${helpers.single_keyword( + "text-rendering", + "auto optimizespeed optimizelegibility geometricprecision", + animation_value_type="discrete", + spec="https://www.w3.org/TR/SVG11/painting.html#TextRenderingProperty", + servo_restyle_damage="rebuild_and_reflow", +)} // FIXME Firefox expects the initial value of this property to change depending // on the value of the layout.css.control-characters.visible pref. -${helpers.single_keyword("-moz-control-character-visibility", - "hidden visible", - gecko_constant_prefix="NS_STYLE_CONTROL_CHARACTER_VISIBILITY", - gecko_ffi_name="mControlCharacterVisibility", - animation_value_type="none", - products="gecko", - spec="Nonstandard")} +${helpers.single_keyword( + "-moz-control-character-visibility", + "hidden visible", + gecko_constant_prefix="NS_STYLE_CONTROL_CHARACTER_VISIBILITY", + gecko_ffi_name="mControlCharacterVisibility", + animation_value_type="none", + products="gecko", + spec="Nonstandard", +)}
--- a/servo/components/style/properties/longhands/inherited_ui.mako.rs +++ b/servo/components/style/properties/longhands/inherited_ui.mako.rs @@ -1,50 +1,66 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ <%namespace name="helpers" file="/helpers.mako.rs" /> <% data.new_style_struct("InheritedUI", inherited=True, gecko_name="UI") %> -${helpers.predefined_type("cursor", - "Cursor", - "computed::Cursor::auto()", - initial_specified_value="specified::Cursor::auto()", - animation_value_type="discrete", - spec="https://drafts.csswg.org/css-ui/#cursor")} +${helpers.predefined_type( + "cursor", + "Cursor", + "computed::Cursor::auto()", + initial_specified_value="specified::Cursor::auto()", + animation_value_type="discrete", + spec="https://drafts.csswg.org/css-ui/#cursor", +)} // NB: `pointer-events: auto` (and use of `pointer-events` in anything that isn't SVG, in fact) // is nonstandard, slated for CSS4-UI. // TODO(pcwalton): SVG-only values. -${helpers.single_keyword("pointer-events", "auto none", animation_value_type="discrete", - extra_gecko_values="visiblepainted visiblefill visiblestroke visible painted fill stroke all", - flags="APPLIES_TO_PLACEHOLDER", - spec="https://www.w3.org/TR/SVG11/interact.html#PointerEventsProperty")} +${helpers.single_keyword( + "pointer-events", + "auto none", + animation_value_type="discrete", + extra_gecko_values="visiblepainted visiblefill visiblestroke visible painted fill stroke all", + flags="APPLIES_TO_PLACEHOLDER", + spec="https://www.w3.org/TR/SVG11/interact.html#PointerEventsProperty", +)} -${helpers.single_keyword("-moz-user-input", "auto none", - products="gecko", gecko_ffi_name="mUserInput", - gecko_enum_prefix="StyleUserInput", - animation_value_type="discrete", - spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-user-input)")} +${helpers.single_keyword( + "-moz-user-input", + "auto none", + products="gecko", + gecko_ffi_name="mUserInput", + gecko_enum_prefix="StyleUserInput", + animation_value_type="discrete", + spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-user-input)", +)} -${helpers.single_keyword("-moz-user-modify", "read-only read-write write-only", - products="gecko", gecko_ffi_name="mUserModify", - gecko_enum_prefix="StyleUserModify", - needs_conversion=True, - animation_value_type="discrete", - spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-user-modify)")} +${helpers.single_keyword( + "-moz-user-modify", + "read-only read-write write-only", + products="gecko", + gecko_ffi_name="mUserModify", + gecko_enum_prefix="StyleUserModify", + needs_conversion=True, + animation_value_type="discrete", + spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-user-modify)", +)} -${helpers.single_keyword("-moz-user-focus", - "none ignore normal select-after select-before select-menu select-same select-all", - products="gecko", gecko_ffi_name="mUserFocus", - gecko_enum_prefix="StyleUserFocus", - animation_value_type="discrete", - spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-user-focus)")} +${helpers.single_keyword( + "-moz-user-focus", + "none ignore normal select-after select-before select-menu select-same select-all", + products="gecko", gecko_ffi_name="mUserFocus", + gecko_enum_prefix="StyleUserFocus", + animation_value_type="discrete", + spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-user-focus)", +)} ${helpers.predefined_type( "caret-color", "ColorOrAuto", "Either::Second(Auto)", spec="https://drafts.csswg.org/css-ui/#caret-color", animation_value_type="AnimatedCaretColor", ignored_when_colors_disabled=True,
--- a/servo/components/style/properties/longhands/list.mako.rs +++ b/servo/components/style/properties/longhands/list.mako.rs @@ -35,30 +35,36 @@ initial_specified_value="specified::ListStyleType::disc()", animation_value_type="discrete", boxed=True, spec="https://drafts.csswg.org/css-lists/#propdef-list-style-type", servo_restyle_damage="rebuild_and_reflow", )} % endif -${helpers.predefined_type("list-style-image", - "url::ImageUrlOrNone", - initial_value="computed::url::ImageUrlOrNone::none()", - initial_specified_value="specified::url::ImageUrlOrNone::none()", - animation_value_type="discrete", - spec="https://drafts.csswg.org/css-lists/#propdef-list-style-image", - servo_restyle_damage="rebuild_and_reflow")} +${helpers.predefined_type( + "list-style-image", + "url::ImageUrlOrNone", + initial_value="computed::url::ImageUrlOrNone::none()", + initial_specified_value="specified::url::ImageUrlOrNone::none()", + animation_value_type="discrete", + spec="https://drafts.csswg.org/css-lists/#propdef-list-style-image", + servo_restyle_damage="rebuild_and_reflow", +)} -${helpers.predefined_type("quotes", - "Quotes", - "computed::Quotes::get_initial_value()", - animation_value_type="discrete", - spec="https://drafts.csswg.org/css-content/#propdef-quotes", - servo_restyle_damage="rebuild_and_reflow")} +${helpers.predefined_type( + "quotes", + "Quotes", + "computed::Quotes::get_initial_value()", + animation_value_type="discrete", + spec="https://drafts.csswg.org/css-content/#propdef-quotes", + servo_restyle_damage="rebuild_and_reflow", +)} -${helpers.predefined_type("-moz-image-region", - "ClipRectOrAuto", - "computed::ClipRectOrAuto::auto()", - animation_value_type="ComputedValue", - products="gecko", - boxed=True, - spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-image-region)")} +${helpers.predefined_type( + "-moz-image-region", + "ClipRectOrAuto", + "computed::ClipRectOrAuto::auto()", + animation_value_type="ComputedValue", + products="gecko", + boxed=True, + spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-image-region)", +)}
--- a/servo/components/style/properties/longhands/outline.mako.rs +++ b/servo/components/style/properties/longhands/outline.mako.rs @@ -24,29 +24,39 @@ "outline-style", "OutlineStyle", "computed::OutlineStyle::none()", initial_specified_value="specified::OutlineStyle::none()", animation_value_type="discrete", spec="https://drafts.csswg.org/css-ui/#propdef-outline-style", )} -${helpers.predefined_type("outline-width", - "BorderSideWidth", - "::values::computed::NonNegativeLength::new(3.)", - initial_specified_value="specified::BorderSideWidth::Medium", - computed_type="::values::computed::NonNegativeLength", - animation_value_type="NonNegativeLength", - spec="https://drafts.csswg.org/css-ui/#propdef-outline-width")} +${helpers.predefined_type( + "outline-width", + "BorderSideWidth", + "::values::computed::NonNegativeLength::new(3.)", + initial_specified_value="specified::BorderSideWidth::Medium", + computed_type="::values::computed::NonNegativeLength", + animation_value_type="NonNegativeLength", + spec="https://drafts.csswg.org/css-ui/#propdef-outline-width", +)} // The -moz-outline-radius-* properties are non-standard and not on a standards track. % for corner in ["topleft", "topright", "bottomright", "bottomleft"]: - ${helpers.predefined_type("-moz-outline-radius-" + corner, "BorderCornerRadius", + ${helpers.predefined_type( + "-moz-outline-radius-" + corner, + "BorderCornerRadius", "computed::BorderCornerRadius::zero()", products="gecko", boxed=True, animation_value_type="BorderCornerRadius", - spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-outline-radius)")} + spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-outline-radius)", + )} % endfor -${helpers.predefined_type("outline-offset", "Length", "::values::computed::Length::new(0.)", - products="servo gecko", animation_value_type="ComputedValue", - spec="https://drafts.csswg.org/css-ui/#propdef-outline-offset")} +${helpers.predefined_type( + "outline-offset", + "Length", + "::values::computed::Length::new(0.)", + products="servo gecko", + animation_value_type="ComputedValue", + spec="https://drafts.csswg.org/css-ui/#propdef-outline-offset", +)}
--- a/servo/components/style/properties/longhands/position.mako.rs +++ b/servo/components/style/properties/longhands/position.mako.rs @@ -63,147 +63,184 @@ macro_rules! impl_align_conversions { flags="CREATES_STACKING_CONTEXT", animation_value_type="ComputedValue", )} // CSS Flexible Box Layout Module Level 1 // http://www.w3.org/TR/css3-flexbox/ // Flex container properties -${helpers.single_keyword("flex-direction", "row row-reverse column column-reverse", - spec="https://drafts.csswg.org/css-flexbox/#flex-direction-property", - extra_prefixes="webkit", - animation_value_type="discrete", - servo_restyle_damage = "reflow")} +${helpers.single_keyword( + "flex-direction", + "row row-reverse column column-reverse", + spec="https://drafts.csswg.org/css-flexbox/#flex-direction-property", + extra_prefixes="webkit", + animation_value_type="discrete", + servo_restyle_damage = "reflow", +)} -${helpers.single_keyword("flex-wrap", "nowrap wrap wrap-reverse", - spec="https://drafts.csswg.org/css-flexbox/#flex-wrap-property", - extra_prefixes="webkit", - animation_value_type="discrete", - servo_restyle_damage = "reflow")} +${helpers.single_keyword( + "flex-wrap", + "nowrap wrap wrap-reverse", + spec="https://drafts.csswg.org/css-flexbox/#flex-wrap-property", + extra_prefixes="webkit", + animation_value_type="discrete", + servo_restyle_damage = "reflow", +)} % if product == "servo": // FIXME: Update Servo to support the same Syntax as Gecko. - ${helpers.single_keyword("justify-content", "flex-start stretch flex-end center space-between space-around", - extra_prefixes="webkit", - spec="https://drafts.csswg.org/css-align/#propdef-justify-content", - animation_value_type="discrete", - servo_restyle_damage = "reflow")} + ${helpers.single_keyword( + "justify-content", + "flex-start stretch flex-end center space-between space-around", + extra_prefixes="webkit", + spec="https://drafts.csswg.org/css-align/#propdef-justify-content", + animation_value_type="discrete", + servo_restyle_damage = "reflow", + )} % else: - ${helpers.predefined_type(name="justify-content", - type="JustifyContent", - initial_value="specified::JustifyContent(specified::ContentDistribution::normal())", - spec="https://drafts.csswg.org/css-align/#propdef-justify-content", - extra_prefixes="webkit", - animation_value_type="discrete", - servo_restyle_damage = "reflow")} + ${helpers.predefined_type( + "justify-content", + "JustifyContent", + "specified::JustifyContent(specified::ContentDistribution::normal())", + spec="https://drafts.csswg.org/css-align/#propdef-justify-content", + extra_prefixes="webkit", + animation_value_type="discrete", + servo_restyle_damage="reflow", + )} % endif % if product == "servo": // FIXME: Update Servo to support the same Syntax as Gecko. - ${helpers.single_keyword("align-content", "stretch flex-start flex-end center space-between space-around", - extra_prefixes="webkit", - spec="https://drafts.csswg.org/css-align/#propdef-align-content", - animation_value_type="discrete", - servo_restyle_damage = "reflow")} + ${helpers.single_keyword( + "align-content", + "stretch flex-start flex-end center space-between space-around", + extra_prefixes="webkit", + spec="https://drafts.csswg.org/css-align/#propdef-align-content", + animation_value_type="discrete", + servo_restyle_damage="reflow", + )} - ${helpers.single_keyword("align-items", - "stretch flex-start flex-end center baseline", - extra_prefixes="webkit", - spec="https://drafts.csswg.org/css-flexbox/#align-items-property", - animation_value_type="discrete", - servo_restyle_damage = "reflow")} + ${helpers.single_keyword( + "align-items", + "stretch flex-start flex-end center baseline", + extra_prefixes="webkit", + spec="https://drafts.csswg.org/css-flexbox/#align-items-property", + animation_value_type="discrete", + servo_restyle_damage="reflow", + )} % else: - ${helpers.predefined_type(name="align-content", - type="AlignContent", - initial_value="specified::AlignContent(specified::ContentDistribution::normal())", - spec="https://drafts.csswg.org/css-align/#propdef-align-content", - extra_prefixes="webkit", - animation_value_type="discrete", - servo_restyle_damage = "reflow")} + ${helpers.predefined_type( + "align-content", + "AlignContent", + "specified::AlignContent(specified::ContentDistribution::normal())", + spec="https://drafts.csswg.org/css-align/#propdef-align-content", + extra_prefixes="webkit", + animation_value_type="discrete", + servo_restyle_damage="reflow", + )} - ${helpers.predefined_type(name="align-items", - type="AlignItems", - initial_value="specified::AlignItems::normal()", - spec="https://drafts.csswg.org/css-align/#propdef-align-items", - extra_prefixes="webkit", - animation_value_type="discrete", - servo_restyle_damage = "reflow")} + ${helpers.predefined_type( + "align-items", + "AlignItems", + "specified::AlignItems::normal()", + spec="https://drafts.csswg.org/css-align/#propdef-align-items", + extra_prefixes="webkit", + animation_value_type="discrete", + servo_restyle_damage="reflow", + )} #[cfg(feature = "gecko")] impl_align_conversions!(::values::specified::align::AlignItems); ${helpers.predefined_type( - name="justify-items", - type="JustifyItems", - initial_value="computed::JustifyItems::legacy()", + "justify-items", + "JustifyItems", + "computed::JustifyItems::legacy()", spec="https://drafts.csswg.org/css-align/#propdef-justify-items", animation_value_type="discrete", )} #[cfg(feature = "gecko")] impl_align_conversions!(::values::specified::align::JustifyItems); % endif // Flex item properties -${helpers.predefined_type("flex-grow", "NonNegativeNumber", - "From::from(0.0)", - spec="https://drafts.csswg.org/css-flexbox/#flex-grow-property", - extra_prefixes="webkit", - animation_value_type="NonNegativeNumber", - servo_restyle_damage = "reflow")} +${helpers.predefined_type( + "flex-grow", + "NonNegativeNumber", + "From::from(0.0)", + spec="https://drafts.csswg.org/css-flexbox/#flex-grow-property", + extra_prefixes="webkit", + animation_value_type="NonNegativeNumber", + servo_restyle_damage="reflow", +)} -${helpers.predefined_type("flex-shrink", "NonNegativeNumber", - "From::from(1.0)", - spec="https://drafts.csswg.org/css-flexbox/#flex-shrink-property", - extra_prefixes="webkit", - animation_value_type="NonNegativeNumber", - servo_restyle_damage = "reflow")} +${helpers.predefined_type( + "flex-shrink", + "NonNegativeNumber", + "From::from(1.0)", + spec="https://drafts.csswg.org/css-flexbox/#flex-shrink-property", + extra_prefixes="webkit", + animation_value_type="NonNegativeNumber", + servo_restyle_damage = "reflow", +)} // https://drafts.csswg.org/css-align/#align-self-property % if product == "servo": // FIXME: Update Servo to support the same syntax as Gecko. - ${helpers.single_keyword("align-self", "auto stretch flex-start flex-end center baseline", - extra_prefixes="webkit", - spec="https://drafts.csswg.org/css-flexbox/#propdef-align-self", - animation_value_type="discrete", - servo_restyle_damage = "reflow")} + ${helpers.single_keyword( + "align-self", + "auto stretch flex-start flex-end center baseline", + extra_prefixes="webkit", + spec="https://drafts.csswg.org/css-flexbox/#propdef-align-self", + animation_value_type="discrete", + servo_restyle_damage = "reflow", + )} % else: - ${helpers.predefined_type(name="align-self", - type="AlignSelf", - initial_value="specified::AlignSelf(specified::SelfAlignment::auto())", - spec="https://drafts.csswg.org/css-align/#align-self-property", - extra_prefixes="webkit", - animation_value_type="discrete")} + ${helpers.predefined_type( + "align-self", + "AlignSelf", + "specified::AlignSelf(specified::SelfAlignment::auto())", + spec="https://drafts.csswg.org/css-align/#align-self-property", + extra_prefixes="webkit", + animation_value_type="discrete", + )} - ${helpers.predefined_type(name="justify-self", - type="JustifySelf", - initial_value="specified::JustifySelf(specified::SelfAlignment::auto())", - spec="https://drafts.csswg.org/css-align/#justify-self-property", - animation_value_type="discrete")} + ${helpers.predefined_type( + "justify-self", + "JustifySelf", + "specified::JustifySelf(specified::SelfAlignment::auto())", + spec="https://drafts.csswg.org/css-align/#justify-self-property", + animation_value_type="discrete", + )} #[cfg(feature = "gecko")] impl_align_conversions!(::values::specified::align::SelfAlignment); % endif // https://drafts.csswg.org/css-flexbox/#propdef-order -${helpers.predefined_type("order", "Integer", "0", - extra_prefixes="webkit", - animation_value_type="ComputedValue", - spec="https://drafts.csswg.org/css-flexbox/#order-property", - servo_restyle_damage = "reflow")} +${helpers.predefined_type( + "order", + "Integer", + "0", + extra_prefixes="webkit", + animation_value_type="ComputedValue", + spec="https://drafts.csswg.org/css-flexbox/#order-property", + servo_restyle_damage = "reflow", +)} ${helpers.predefined_type( "flex-basis", "FlexBasis", "computed::FlexBasis::auto()", spec="https://drafts.csswg.org/css-flexbox/#flex-basis-property", extra_prefixes="webkit", animation_value_type="FlexBasis", - servo_restyle_damage = "reflow" + servo_restyle_damage = "reflow", )} % for (size, logical) in ALL_SIZES: <% spec = "https://drafts.csswg.org/css-box/#propdef-%s" if logical: spec = "https://drafts.csswg.org/css-logical-props/#propdef-%s" %> @@ -223,163 +260,183 @@ macro_rules! impl_align_conversions { "computed::MozLength::auto()", parse_function, logical=logical, logical_group="size", allow_quirks=not logical, spec=spec % size, animation_value_type="MozLength", flags="GETCS_NEEDS_LAYOUT_FLUSH", - servo_restyle_damage="reflow" + servo_restyle_damage="reflow", )} // min-width, min-height, min-block-size, min-inline-size, ${helpers.predefined_type( "min-%s" % size, "MozLength", "computed::MozLength::auto()", parse_function, logical=logical, logical_group="min-size", allow_quirks=not logical, spec=spec % size, animation_value_type="MozLength", - servo_restyle_damage = "reflow" + servo_restyle_damage="reflow", )} ${helpers.predefined_type( "max-%s" % size, "MaxLength", "computed::MaxLength::none()", parse_function, logical=logical, logical_group="max-size", allow_quirks=not logical, spec=spec % size, animation_value_type="MaxLength", - servo_restyle_damage = "reflow" + servo_restyle_damage="reflow", )} % else: // servo versions (no keyword support) ${helpers.predefined_type( size, "LengthOrPercentageOrAuto", "computed::LengthOrPercentageOrAuto::Auto", "parse_non_negative", spec=spec % size, logical_group="size", allow_quirks=not logical, animation_value_type="ComputedValue", logical = logical, - servo_restyle_damage = "reflow", + servo_restyle_damage="reflow", )} ${helpers.predefined_type( "min-%s" % size, "LengthOrPercentage", "computed::LengthOrPercentage::Length(computed::Length::new(0.))", "parse_non_negative", spec=spec % ("min-%s" % size), logical_group="min-size", animation_value_type="ComputedValue", logical=logical, allow_quirks=not logical, - servo_restyle_damage = "reflow", + servo_restyle_damage="reflow", )} ${helpers.predefined_type( "max-%s" % size, "LengthOrPercentageOrNone", "computed::LengthOrPercentageOrNone::None", "parse_non_negative", spec=spec % ("max-%s" % size), logical_group="max-size", animation_value_type="ComputedValue", logical=logical, allow_quirks=not logical, - servo_restyle_damage = "reflow", + servo_restyle_damage="reflow", )} % endif % endfor -${helpers.single_keyword("box-sizing", - "content-box border-box", - extra_prefixes="moz:layout.css.prefixes.box-sizing webkit", - spec="https://drafts.csswg.org/css-ui/#propdef-box-sizing", - gecko_enum_prefix="StyleBoxSizing", - custom_consts={ "content-box": "Content", "border-box": "Border" }, - animation_value_type="discrete", - servo_restyle_damage = "reflow")} +${helpers.single_keyword( + "box-sizing", + "content-box border-box", + extra_prefixes="moz:layout.css.prefixes.box-sizing webkit", + spec="https://drafts.csswg.org/css-ui/#propdef-box-sizing", + gecko_enum_prefix="StyleBoxSizing", + custom_consts={ "content-box": "Content", "border-box": "Border" }, + animation_value_type="discrete", + servo_restyle_damage = "reflow", +)} -${helpers.single_keyword("object-fit", "fill contain cover none scale-down", - products="gecko", animation_value_type="discrete", - spec="https://drafts.csswg.org/css-images/#propdef-object-fit")} +${helpers.single_keyword( + "object-fit", + "fill contain cover none scale-down", + products="gecko", + animation_value_type="discrete", + spec="https://drafts.csswg.org/css-images/#propdef-object-fit", +)} -${helpers.predefined_type("object-position", - "Position", - "computed::Position::zero()", - products="gecko", - boxed=True, - spec="https://drafts.csswg.org/css-images-3/#the-object-position", - animation_value_type="ComputedValue")} +${helpers.predefined_type( + "object-position", + "Position", + "computed::Position::zero()", + products="gecko", + boxed=True, + spec="https://drafts.csswg.org/css-images-3/#the-object-position", + animation_value_type="ComputedValue", +)} % for kind in ["row", "column"]: % for range in ["start", "end"]: - ${helpers.predefined_type("grid-%s-%s" % (kind, range), - "GridLine", - "Default::default()", - animation_value_type="discrete", - spec="https://drafts.csswg.org/css-grid/#propdef-grid-%s-%s" % (kind, range), - products="gecko", - boxed=True)} + ${helpers.predefined_type( + "grid-%s-%s" % (kind, range), + "GridLine", + "Default::default()", + animation_value_type="discrete", + spec="https://drafts.csswg.org/css-grid/#propdef-grid-%s-%s" % (kind, range), + products="gecko", + boxed=True, + )} % endfor // NOTE: According to the spec, this should handle multiple values of `<track-size>`, // but gecko supports only a single value - ${helpers.predefined_type("grid-auto-%ss" % kind, - "TrackSize", - "Default::default()", - animation_value_type="discrete", - spec="https://drafts.csswg.org/css-grid/#propdef-grid-auto-%ss" % kind, - products="gecko", - boxed=True)} + ${helpers.predefined_type( + "grid-auto-%ss" % kind, + "TrackSize", + "Default::default()", + animation_value_type="discrete", + spec="https://drafts.csswg.org/css-grid/#propdef-grid-auto-%ss" % kind, + products="gecko", + boxed=True, + )} ${helpers.predefined_type( "grid-template-%ss" % kind, "GridTemplateComponent", "specified::GenericGridTemplateComponent::None", products="gecko", spec="https://drafts.csswg.org/css-grid/#propdef-grid-template-%ss" % kind, boxed=True, flags="GETCS_NEEDS_LAYOUT_FLUSH", - animation_value_type="discrete" + animation_value_type="discrete", )} % endfor -${helpers.predefined_type("grid-auto-flow", - "GridAutoFlow", - initial_value="computed::GridAutoFlow::row()", - products="gecko", - animation_value_type="discrete", - spec="https://drafts.csswg.org/css-grid/#propdef-grid-auto-flow")} +${helpers.predefined_type( + "grid-auto-flow", + "GridAutoFlow", + "computed::GridAutoFlow::row()", + products="gecko", + animation_value_type="discrete", + spec="https://drafts.csswg.org/css-grid/#propdef-grid-auto-flow", +)} -${helpers.predefined_type("grid-template-areas", - "GridTemplateAreas", - initial_value="computed::GridTemplateAreas::none()", - products="gecko", - animation_value_type="discrete", - spec="https://drafts.csswg.org/css-grid/#propdef-grid-template-areas")} +${helpers.predefined_type( + "grid-template-areas", + "GridTemplateAreas", + "computed::GridTemplateAreas::none()", + products="gecko", + animation_value_type="discrete", + spec="https://drafts.csswg.org/css-grid/#propdef-grid-template-areas", +)} -${helpers.predefined_type("column-gap", - "length::NonNegativeLengthOrPercentageOrNormal", - "Either::Second(Normal)", - alias="grid-column-gap" if product == "gecko" else "", - extra_prefixes="moz", - servo_pref="layout.columns.enabled", - spec="https://drafts.csswg.org/css-align-3/#propdef-column-gap", - animation_value_type="NonNegativeLengthOrPercentageOrNormal", - servo_restyle_damage = "reflow")} +${helpers.predefined_type( + "column-gap", + "length::NonNegativeLengthOrPercentageOrNormal", + "Either::Second(Normal)", + alias="grid-column-gap" if product == "gecko" else "", + extra_prefixes="moz", + servo_pref="layout.columns.enabled", + spec="https://drafts.csswg.org/css-align-3/#propdef-column-gap", + animation_value_type="NonNegativeLengthOrPercentageOrNormal", + servo_restyle_damage="reflow", +)} // no need for -moz- prefixed alias for this property -${helpers.predefined_type("row-gap", - "length::NonNegativeLengthOrPercentageOrNormal", - "Either::Second(Normal)", - alias="grid-row-gap", - products="gecko", - spec="https://drafts.csswg.org/css-align-3/#propdef-row-gap", - animation_value_type="NonNegativeLengthOrPercentageOrNormal", - servo_restyle_damage = "reflow")} +${helpers.predefined_type( + "row-gap", + "length::NonNegativeLengthOrPercentageOrNormal", + "Either::Second(Normal)", + alias="grid-row-gap", + products="gecko", + spec="https://drafts.csswg.org/css-align-3/#propdef-row-gap", + animation_value_type="NonNegativeLengthOrPercentageOrNormal", + servo_restyle_damage="reflow", +)}
--- a/servo/components/style/properties/longhands/svg.mako.rs +++ b/servo/components/style/properties/longhands/svg.mako.rs @@ -1,90 +1,111 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ <%namespace name="helpers" file="/helpers.mako.rs" /> <% data.new_style_struct("SVG", inherited=False, gecko_name="SVGReset") %> -${helpers.single_keyword("dominant-baseline", - """auto use-script no-change reset-size ideographic alphabetic hanging - mathematical central middle text-after-edge text-before-edge""", - products="gecko", - animation_value_type="discrete", - spec="https://www.w3.org/TR/SVG11/text.html#DominantBaselineProperty")} +${helpers.single_keyword( + "dominant-baseline", + """auto use-script no-change reset-size ideographic alphabetic hanging + mathematical central middle text-after-edge text-before-edge""", + products="gecko", + animation_value_type="discrete", + spec="https://www.w3.org/TR/SVG11/text.html#DominantBaselineProperty", +)} -${helpers.single_keyword("vector-effect", "none non-scaling-stroke", - products="gecko", animation_value_type="discrete", - spec="https://www.w3.org/TR/SVGTiny12/painting.html#VectorEffectProperty")} +${helpers.single_keyword( + "vector-effect", + "none non-scaling-stroke", + products="gecko", + animation_value_type="discrete", + spec="https://www.w3.org/TR/SVGTiny12/painting.html#VectorEffectProperty", +)} // Section 13 - Gradients and Patterns ${helpers.predefined_type( "stop-color", "Color", "RGBA::new(0, 0, 0, 255).into()", products="gecko", animation_value_type="AnimatedRGBA", spec="https://www.w3.org/TR/SVGTiny12/painting.html#StopColorProperty", )} -${helpers.predefined_type("stop-opacity", "Opacity", "1.0", - products="gecko", - animation_value_type="ComputedValue", - spec="https://www.w3.org/TR/SVGTiny12/painting.html#propdef-stop-opacity")} +${helpers.predefined_type( + "stop-opacity", + "Opacity", + "1.0", + products="gecko", + animation_value_type="ComputedValue", + spec="https://www.w3.org/TR/SVGTiny12/painting.html#propdef-stop-opacity", +)} // Section 15 - Filter Effects ${helpers.predefined_type( "flood-color", "Color", "RGBA::new(0, 0, 0, 255).into()", products="gecko", animation_value_type="AnimatedColor", spec="https://www.w3.org/TR/SVG/filters.html#FloodColorProperty", )} -${helpers.predefined_type("flood-opacity", "Opacity", - "1.0", products="gecko", animation_value_type="ComputedValue", - spec="https://www.w3.org/TR/SVG/filters.html#FloodOpacityProperty")} +${helpers.predefined_type( + "flood-opacity", + "Opacity", + "1.0", + products="gecko", + animation_value_type="ComputedValue", + spec="https://www.w3.org/TR/SVG/filters.html#FloodOpacityProperty", +)} ${helpers.predefined_type( "lighting-color", "Color", "RGBA::new(255, 255, 255, 255).into()", products="gecko", animation_value_type="AnimatedColor", spec="https://www.w3.org/TR/SVG/filters.html#LightingColorProperty", )} // CSS Masking Module Level 1 // https://drafts.fxtf.org/css-masking -${helpers.single_keyword("mask-type", "luminance alpha", - products="gecko", animation_value_type="discrete", - spec="https://drafts.fxtf.org/css-masking/#propdef-mask-type")} +${helpers.single_keyword( + "mask-type", + "luminance alpha", + products="gecko", + animation_value_type="discrete", + spec="https://drafts.fxtf.org/css-masking/#propdef-mask-type", +)} ${helpers.predefined_type( "clip-path", "basic_shape::ClippingShape", "generics::basic_shape::ShapeSource::None", products="gecko", boxed=True, animation_value_type="ComputedValue", flags="CREATES_STACKING_CONTEXT", spec="https://drafts.fxtf.org/css-masking/#propdef-clip-path", )} -${helpers.single_keyword("mask-mode", - "match-source alpha luminance", - vector=True, - products="gecko", - animation_value_type="discrete", - spec="https://drafts.fxtf.org/css-masking/#propdef-mask-mode")} +${helpers.single_keyword( + "mask-mode", + "match-source alpha luminance", + vector=True, + products="gecko", + animation_value_type="discrete", + spec="https://drafts.fxtf.org/css-masking/#propdef-mask-mode", +)} ${helpers.predefined_type( "mask-repeat", "BackgroundRepeat", "computed::BackgroundRepeat::repeat()", initial_specified_value="specified::BackgroundRepeat::repeat()", products="gecko", extra_prefixes="webkit", @@ -92,19 +113,19 @@ spec="https://drafts.fxtf.org/css-masking/#propdef-mask-repeat", vector=True, )} % for (axis, direction) in [("x", "Horizontal"), ("y", "Vertical")]: ${helpers.predefined_type( "mask-position-" + axis, "position::" + direction + "Position", + "computed::LengthOrPercentage::zero()", products="gecko", extra_prefixes="webkit", - initial_value="computed::LengthOrPercentage::zero()", initial_specified_value="specified::PositionComponent::Center", spec="https://drafts.fxtf.org/css-masking/#propdef-mask-position", animation_value_type="ComputedValue", vector_animation_type="repeatable_list", vector=True, )} % endfor @@ -142,25 +163,30 @@ products="gecko", extra_prefixes="webkit", spec="https://drafts.fxtf.org/css-masking/#propdef-mask-size", animation_value_type="MaskSizeList", vector=True, vector_animation_type="repeatable_list", )} -${helpers.single_keyword("mask-composite", - "add subtract intersect exclude", - vector=True, - products="gecko", - extra_prefixes="webkit", - animation_value_type="discrete", - spec="https://drafts.fxtf.org/css-masking/#propdef-mask-composite")} +${helpers.single_keyword( + "mask-composite", + "add subtract intersect exclude", + vector=True, + products="gecko", + extra_prefixes="webkit", + animation_value_type="discrete", + spec="https://drafts.fxtf.org/css-masking/#propdef-mask-composite", +)} -${helpers.predefined_type("mask-image", "ImageLayer", - initial_value="Either::First(None_)", +${helpers.predefined_type( + "mask-image", + "ImageLayer", + "Either::First(None_)", initial_specified_value="Either::First(None_)", spec="https://drafts.fxtf.org/css-masking/#propdef-mask-image", vector=True, products="gecko", extra_prefixes="webkit", animation_value_type="discrete", - flags="CREATES_STACKING_CONTEXT")} + flags="CREATES_STACKING_CONTEXT", +)}
--- a/servo/components/style/properties/longhands/table.mako.rs +++ b/servo/components/style/properties/longhands/table.mako.rs @@ -1,20 +1,26 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ <%namespace name="helpers" file="/helpers.mako.rs" /> <% data.new_style_struct("Table", inherited=False) %> -${helpers.single_keyword("table-layout", "auto fixed", - gecko_ffi_name="mLayoutStrategy", animation_value_type="discrete", - spec="https://drafts.csswg.org/css-tables/#propdef-table-layout", - servo_restyle_damage = "reflow")} +${helpers.single_keyword( + "table-layout", + "auto fixed", + gecko_ffi_name="mLayoutStrategy", + animation_value_type="discrete", + spec="https://drafts.csswg.org/css-tables/#propdef-table-layout", + servo_restyle_damage="reflow", +)} -${helpers.predefined_type("-x-span", - "XSpan", - "computed::XSpan(1)", - products="gecko", - spec="Internal-only (for `<col span>` pres attr)", - animation_value_type="none", - enabled_in="")} +${helpers.predefined_type( + "-x-span", + "XSpan", + "computed::XSpan(1)", + products="gecko", + spec="Internal-only (for `<col span>` pres attr)", + animation_value_type="none", + enabled_in="", +)}
--- a/servo/components/style/properties/longhands/text.mako.rs +++ b/servo/components/style/properties/longhands/text.mako.rs @@ -1,54 +1,64 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ <%namespace name="helpers" file="/helpers.mako.rs" /> <% from data import Method %> -<% data.new_style_struct("Text", - inherited=False, - gecko_name="TextReset", - additional_methods=[Method("has_underline", "bool"), - Method("has_overline", "bool"), - Method("has_line_through", "bool")]) %> +<% data.new_style_struct( + "Text", + inherited=False, + gecko_name="TextReset", + additional_methods=[ + Method("has_underline", "bool"), + Method("has_overline", "bool"), + Method("has_line_through", "bool"), + ] +) %> -${helpers.predefined_type("text-overflow", - "TextOverflow", - "computed::TextOverflow::get_initial_value()", - animation_value_type="discrete", - boxed=True, - flags="APPLIES_TO_PLACEHOLDER", - spec="https://drafts.csswg.org/css-ui/#propdef-text-overflow", - servo_restyle_damage="rebuild_and_reflow")} +${helpers.predefined_type( + "text-overflow", + "TextOverflow", + "computed::TextOverflow::get_initial_value()", + animation_value_type="discrete", + boxed=True, + flags="APPLIES_TO_PLACEHOLDER", + spec="https://drafts.csswg.org/css-ui/#propdef-text-overflow", + servo_restyle_damage="rebuild_and_reflow", +)} ${helpers.single_keyword( "unicode-bidi", "normal embed isolate bidi-override isolate-override plaintext", animation_value_type="none", spec="https://drafts.csswg.org/css-writing-modes/#propdef-unicode-bidi", servo_restyle_damage="rebuild_and_reflow", )} -${helpers.predefined_type("text-decoration-line", - "TextDecorationLine", - "specified::TextDecorationLine::none()", - initial_specified_value="specified::TextDecorationLine::none()", - animation_value_type="discrete", - flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER", - spec="https://drafts.csswg.org/css-text-decor/#propdef-text-decoration-line", - servo_restyle_damage="rebuild_and_reflow")} +${helpers.predefined_type( + "text-decoration-line", + "TextDecorationLine", + "specified::TextDecorationLine::none()", + initial_specified_value="specified::TextDecorationLine::none()", + animation_value_type="discrete", + flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER", + spec="https://drafts.csswg.org/css-text-decor/#propdef-text-decoration-line", + servo_restyle_damage="rebuild_and_reflow", +)} -${helpers.single_keyword("text-decoration-style", - "solid double dotted dashed wavy -moz-none", - products="gecko", - animation_value_type="discrete", - flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER", - spec="https://drafts.csswg.org/css-text-decor/#propdef-text-decoration-style")} +${helpers.single_keyword( + "text-decoration-style", + "solid double dotted dashed wavy -moz-none", + products="gecko", + animation_value_type="discrete", + flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER", + spec="https://drafts.csswg.org/css-text-decor/#propdef-text-decoration-style", +)} ${helpers.predefined_type( "text-decoration-color", "Color", "computed_value::T::currentcolor()", initial_specified_value="specified::Color::currentcolor()", products="gecko", animation_value_type="AnimatedColor", @@ -61,9 +71,10 @@ "initial-letter", "InitialLetter", "computed::InitialLetter::normal()", initial_specified_value="specified::InitialLetter::normal()", animation_value_type="discrete", products="gecko", flags="APPLIES_TO_FIRST_LETTER", gecko_pref="layout.css.initial-letter.enabled", - spec="https://drafts.csswg.org/css-inline/#sizing-drop-initials")} + spec="https://drafts.csswg.org/css-inline/#sizing-drop-initials", +)}
--- a/servo/components/style/properties/longhands/ui.mako.rs +++ b/servo/components/style/properties/longhands/ui.mako.rs @@ -6,56 +6,70 @@ <% from data import Method %> // CSS Basic User Interface Module Level 1 // https://drafts.csswg.org/css-ui-3/ <% data.new_style_struct("UI", inherited=False, gecko_name="UIReset") %> // TODO spec says that UAs should not support this // we should probably remove from gecko (https://bugzilla.mozilla.org/show_bug.cgi?id=1328331) -${helpers.single_keyword("ime-mode", "auto normal active disabled inactive", - products="gecko", gecko_ffi_name="mIMEMode", - animation_value_type="discrete", - spec="https://drafts.csswg.org/css-ui/#input-method-editor")} +${helpers.single_keyword( + "ime-mode", + "auto normal active disabled inactive", + products="gecko", + gecko_ffi_name="mIMEMode", + animation_value_type="discrete", + spec="https://drafts.csswg.org/css-ui/#input-method-editor", +)} ${helpers.single_keyword( "scrollbar-width", "auto thin none", products="gecko", gecko_enum_prefix="StyleScrollbarWidth", animation_value_type="discrete", gecko_pref="layout.css.scrollbar-width.enabled", enabled_in="chrome", spec="https://drafts.csswg.org/css-scrollbars-1/#scrollbar-width" )} -${helpers.single_keyword("-moz-user-select", "auto text none all element elements" + - " toggle tri-state -moz-all -moz-text", - products="gecko", - alias="-webkit-user-select", - gecko_ffi_name="mUserSelect", - gecko_enum_prefix="StyleUserSelect", - gecko_strip_moz_prefix=False, - aliases="-moz-none=none", - animation_value_type="discrete", - spec="https://drafts.csswg.org/css-ui-4/#propdef-user-select")} +${helpers.single_keyword( + "-moz-user-select", + "auto text none all element elements toggle tri-state -moz-all -moz-text", + products="gecko", + alias="-webkit-user-select", + gecko_ffi_name="mUserSelect", + gecko_enum_prefix="StyleUserSelect", + gecko_strip_moz_prefix=False, + aliases="-moz-none=none", + animation_value_type="discrete", + spec="https://drafts.csswg.org/css-ui-4/#propdef-user-select", +)} // TODO(emilio): This probably should be hidden from content. -${helpers.single_keyword("-moz-window-dragging", "default drag no-drag", products="gecko", - gecko_ffi_name="mWindowDragging", - gecko_enum_prefix="StyleWindowDragging", - animation_value_type="discrete", - spec="None (Nonstandard Firefox-only property)")} +${helpers.single_keyword( + "-moz-window-dragging", + "default drag no-drag", + products="gecko", + gecko_ffi_name="mWindowDragging", + gecko_enum_prefix="StyleWindowDragging", + animation_value_type="discrete", + spec="None (Nonstandard Firefox-only property)", +)} -${helpers.single_keyword("-moz-window-shadow", "none default menu tooltip sheet", products="gecko", - gecko_ffi_name="mWindowShadow", - gecko_constant_prefix="NS_STYLE_WINDOW_SHADOW", - animation_value_type="discrete", - enabled_in="chrome", - spec="None (Nonstandard internal property)")} +${helpers.single_keyword( + "-moz-window-shadow", + "none default menu tooltip sheet", + products="gecko", + gecko_ffi_name="mWindowShadow", + gecko_constant_prefix="NS_STYLE_WINDOW_SHADOW", + animation_value_type="discrete", + enabled_in="chrome", + spec="None (Nonstandard internal property)", +)} ${helpers.predefined_type( "-moz-window-opacity", "Opacity", "1.0", products="gecko", gecko_ffi_name="mWindowOpacity", animation_value_type="ComputedValue", @@ -84,14 +98,16 @@ products="gecko", boxed=True, flags="GETCS_NEEDS_LAYOUT_FLUSH", spec="None (Nonstandard internal property)", enabled_in="chrome", )} // TODO(emilio): Probably also should be hidden from content. -${helpers.predefined_type("-moz-force-broken-image-icon", - "MozForceBrokenImageIcon", - "computed::MozForceBrokenImageIcon::false_value()", - animation_value_type="discrete", - products="gecko", - spec="None (Nonstandard Firefox-only property)")} +${helpers.predefined_type( + "-moz-force-broken-image-icon", + "MozForceBrokenImageIcon", + "computed::MozForceBrokenImageIcon::false_value()", + animation_value_type="discrete", + products="gecko", + spec="None (Nonstandard Firefox-only property)", +)}
--- a/servo/components/style/properties/longhands/xul.mako.rs +++ b/servo/components/style/properties/longhands/xul.mako.rs @@ -3,56 +3,84 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ <%namespace name="helpers" file="/helpers.mako.rs" /> <% from data import Method %> // Non-standard properties that Gecko uses for XUL elements. <% data.new_style_struct("XUL", inherited=False) %> -${helpers.single_keyword("-moz-box-align", "stretch start center baseline end", - products="gecko", gecko_ffi_name="mBoxAlign", - gecko_enum_prefix="StyleBoxAlign", - animation_value_type="discrete", - alias="-webkit-box-align", - spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/box-align)")} +${helpers.single_keyword( + "-moz-box-align", + "stretch start center baseline end", + products="gecko", + gecko_ffi_name="mBoxAlign", + gecko_enum_prefix="StyleBoxAlign", + animation_value_type="discrete", + alias="-webkit-box-align", + spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/box-align)", +)} -${helpers.single_keyword("-moz-box-direction", "normal reverse", - products="gecko", gecko_ffi_name="mBoxDirection", - gecko_enum_prefix="StyleBoxDirection", - animation_value_type="discrete", - alias="-webkit-box-direction", - spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/box-direction)")} +${helpers.single_keyword( + "-moz-box-direction", + "normal reverse", + products="gecko", + gecko_ffi_name="mBoxDirection", + gecko_enum_prefix="StyleBoxDirection", + animation_value_type="discrete", + alias="-webkit-box-direction", + spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/box-direction)", +)} -${helpers.predefined_type("-moz-box-flex", "NonNegativeNumber", "From::from(0.)", - products="gecko", gecko_ffi_name="mBoxFlex", - animation_value_type="NonNegativeNumber", - alias="-webkit-box-flex", - spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/box-flex)")} +${helpers.predefined_type( + "-moz-box-flex", + "NonNegativeNumber", + "From::from(0.)", + products="gecko", + gecko_ffi_name="mBoxFlex", + animation_value_type="NonNegativeNumber", + alias="-webkit-box-flex", + spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/box-flex)", +)} -${helpers.single_keyword("-moz-box-orient", "horizontal vertical", - products="gecko", gecko_ffi_name="mBoxOrient", - extra_gecko_aliases="inline-axis=horizontal block-axis=vertical", - gecko_enum_prefix="StyleBoxOrient", - animation_value_type="discrete", - alias="-webkit-box-orient", - spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/box-orient)")} +${helpers.single_keyword( + "-moz-box-orient", + "horizontal vertical", + products="gecko", + gecko_ffi_name="mBoxOrient", + extra_gecko_aliases="inline-axis=horizontal block-axis=vertical", + gecko_enum_prefix="StyleBoxOrient", + animation_value_type="discrete", + alias="-webkit-box-orient", + spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/box-orient)", +)} + +${helpers.single_keyword( + "-moz-box-pack", + "start center end justify", + products="gecko", gecko_ffi_name="mBoxPack", + gecko_enum_prefix="StyleBoxPack", + animation_value_type="discrete", + alias="-webkit-box-pack", + spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/box-pack)", +)} -${helpers.single_keyword("-moz-box-pack", "start center end justify", - products="gecko", gecko_ffi_name="mBoxPack", - gecko_enum_prefix="StyleBoxPack", - animation_value_type="discrete", - alias="-webkit-box-pack", - spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/box-pack)")} +${helpers.single_keyword( + "-moz-stack-sizing", + "stretch-to-fit ignore ignore-horizontal ignore-vertical", + products="gecko", + gecko_ffi_name="mStackSizing", + gecko_enum_prefix="StyleStackSizing", + animation_value_type="discrete", + spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-stack-sizing)", +)} -${helpers.single_keyword("-moz-stack-sizing", "stretch-to-fit ignore ignore-horizontal ignore-vertical", - products="gecko", gecko_ffi_name="mStackSizing", - gecko_enum_prefix="StyleStackSizing", - animation_value_type="discrete", - spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-stack-sizing)")} - -${helpers.predefined_type("-moz-box-ordinal-group", "Integer", "0", - parse_method="parse_non_negative", - products="gecko", - alias="-webkit-box-ordinal-group", - gecko_ffi_name="mBoxOrdinal", - animation_value_type="discrete", - spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-box-ordinal-group)")} +${helpers.predefined_type( + "-moz-box-ordinal-group", + "Integer", + "0", + parse_method="parse_non_negative", + products="gecko", + alias="-webkit-box-ordinal-group", + gecko_ffi_name="mBoxOrdinal", + animation_value_type="discrete", + spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-box-ordinal-group)", +)}