style: Add GETCS_NEEDS_LAYOUT_FLUSH flag in Servo side and propagate it to ServoCSSPropList.h.

Bug: 1454830
Reviewed-by: emilio
MozReview-Commit-ID: 5k08FWjobCg
This commit is contained in:
Xidorn Quan 2018-04-20 19:13:16 +10:00 committed by Emilio Cobos Álvarez
parent cfffff33a0
commit bc81f09833
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C
8 changed files with 152 additions and 98 deletions

View file

@ -43,17 +43,19 @@
needs_context=False, needs_context=False,
)} )}
${helpers.predefined_type("border-%s-width" % side_name, ${helpers.predefined_type(
"BorderSideWidth", "border-%s-width" % side_name,
"::values::computed::NonNegativeLength::new(3.)", "BorderSideWidth",
computed_type="::values::computed::NonNegativeLength", "::values::computed::NonNegativeLength::new(3.)",
alias=maybe_moz_logical_alias(product, side, "-moz-border-%s-width"), computed_type="::values::computed::NonNegativeLength",
spec=maybe_logical_spec(side, "width"), alias=maybe_moz_logical_alias(product, side, "-moz-border-%s-width"),
animation_value_type="NonNegativeLength", spec=maybe_logical_spec(side, "width"),
logical=is_logical, animation_value_type="NonNegativeLength",
flags="APPLIES_TO_FIRST_LETTER", logical=is_logical,
allow_quirks=not is_logical, flags="APPLIES_TO_FIRST_LETTER GETCS_NEEDS_LAYOUT_FLUSH",
servo_restyle_damage = "reflow rebuild_and_reflow_inline")} allow_quirks=not is_logical,
servo_restyle_damage="reflow rebuild_and_reflow_inline"
)}
% endfor % endfor
${helpers.gecko_keyword_conversion(Keyword('border-style', ${helpers.gecko_keyword_conversion(Keyword('border-style',

View file

@ -403,14 +403,17 @@ ${helpers.predefined_type(
<% transform_extra_prefixes = "moz:layout.css.prefixes.transforms webkit" %> <% transform_extra_prefixes = "moz:layout.css.prefixes.transforms webkit" %>
${helpers.predefined_type("transform", "Transform", ${helpers.predefined_type(
"generics::transform::Transform::none()", "transform",
extra_prefixes=transform_extra_prefixes, "Transform",
animation_value_type="ComputedValue", "generics::transform::Transform::none()",
gecko_ffi_name="mSpecifiedTransform", extra_prefixes=transform_extra_prefixes,
flags="CREATES_STACKING_CONTEXT FIXPOS_CB", animation_value_type="ComputedValue",
spec="https://drafts.csswg.org/css-transforms/#propdef-transform", gecko_ffi_name="mSpecifiedTransform",
servo_restyle_damage = "reflow_out_of_flow")} flags="CREATES_STACKING_CONTEXT FIXPOS_CB GETCS_NEEDS_LAYOUT_FLUSH",
spec="https://drafts.csswg.org/css-transforms/#propdef-transform",
servo_restyle_damage="reflow_out_of_flow"
)}
${helpers.predefined_type("rotate", "Rotate", ${helpers.predefined_type("rotate", "Rotate",
"generics::transform::Rotate::None", "generics::transform::Rotate::None",
@ -430,14 +433,17 @@ ${helpers.predefined_type("scale", "Scale",
spec="https://drafts.csswg.org/css-transforms-2/#individual-transforms", spec="https://drafts.csswg.org/css-transforms-2/#individual-transforms",
servo_restyle_damage = "reflow_out_of_flow")} servo_restyle_damage = "reflow_out_of_flow")}
${helpers.predefined_type("translate", "Translate", ${helpers.predefined_type(
"generics::transform::Translate::None", "translate",
animation_value_type="ComputedValue", "Translate",
boxed=True, "generics::transform::Translate::None",
flags="CREATES_STACKING_CONTEXT FIXPOS_CB", animation_value_type="ComputedValue",
gecko_pref="layout.css.individual-transform.enabled", boxed=True,
spec="https://drafts.csswg.org/css-transforms-2/#individual-transforms", flags="CREATES_STACKING_CONTEXT FIXPOS_CB GETCS_NEEDS_LAYOUT_FLUSH",
servo_restyle_damage = "reflow_out_of_flow")} gecko_pref="layout.css.individual-transform.enabled",
spec="https://drafts.csswg.org/css-transforms-2/#individual-transforms",
servo_restyle_damage="reflow_out_of_flow"
)}
// CSSOM View Module // CSSOM View Module
// https://www.w3.org/TR/cssom-view-1/ // https://www.w3.org/TR/cssom-view-1/
@ -529,14 +535,17 @@ ${helpers.predefined_type(
servo_restyle_damage = "reflow_out_of_flow", servo_restyle_damage = "reflow_out_of_flow",
)} )}
${helpers.predefined_type("perspective-origin", ${helpers.predefined_type(
"position::Position", "perspective-origin",
"computed::position::Position::center()", "position::Position",
boxed=True, "computed::position::Position::center()",
extra_prefixes=transform_extra_prefixes, boxed=True,
spec="https://drafts.csswg.org/css-transforms-2/#perspective-origin-property", extra_prefixes=transform_extra_prefixes,
animation_value_type="ComputedValue", spec="https://drafts.csswg.org/css-transforms-2/#perspective-origin-property",
servo_restyle_damage = "reflow_out_of_flow")} flags="GETCS_NEEDS_LAYOUT_FLUSH",
animation_value_type="ComputedValue",
servo_restyle_damage="reflow_out_of_flow"
)}
${helpers.single_keyword("backface-visibility", ${helpers.single_keyword("backface-visibility",
"visible hidden", "visible hidden",
@ -565,15 +574,18 @@ ${helpers.predefined_type(
servo_restyle_damage = "reflow_out_of_flow", servo_restyle_damage = "reflow_out_of_flow",
)} )}
${helpers.predefined_type("transform-origin", ${helpers.predefined_type(
"TransformOrigin", "transform-origin",
"computed::TransformOrigin::initial_value()", "TransformOrigin",
animation_value_type="ComputedValue", "computed::TransformOrigin::initial_value()",
extra_prefixes=transform_extra_prefixes, animation_value_type="ComputedValue",
gecko_ffi_name="mTransformOrigin", extra_prefixes=transform_extra_prefixes,
boxed=True, gecko_ffi_name="mTransformOrigin",
spec="https://drafts.csswg.org/css-transforms/#transform-origin-property", boxed=True,
servo_restyle_damage = "reflow_out_of_flow")} flags="GETCS_NEEDS_LAYOUT_FLUSH",
spec="https://drafts.csswg.org/css-transforms/#transform-origin-property",
servo_restyle_damage="reflow_out_of_flow"
)}
${helpers.predefined_type("contain", ${helpers.predefined_type("contain",
"Contain", "Contain",

View file

@ -6,13 +6,16 @@
<% from data import Keyword %> <% from data import Keyword %>
<% data.new_style_struct("InheritedText", inherited=True, gecko_name="Text") %> <% data.new_style_struct("InheritedText", inherited=True, gecko_name="Text") %>
${helpers.predefined_type("line-height", ${helpers.predefined_type(
"LineHeight", "line-height",
"computed::LineHeight::normal()", "LineHeight",
animation_value_type="LineHeight", "computed::LineHeight::normal()",
flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER", animation_value_type="LineHeight",
spec="https://drafts.csswg.org/css2/visudet.html#propdef-line-height", flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE \
servo_restyle_damage = "reflow")} 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 // CSS Text Module Level 3

View file

@ -12,12 +12,17 @@
if side[1]: if side[1]:
spec = "https://drafts.csswg.org/css-logical-props/#propdef-margin-%s" % side[1] spec = "https://drafts.csswg.org/css-logical-props/#propdef-margin-%s" % side[1]
%> %>
${helpers.predefined_type("margin-%s" % side[0], "LengthOrPercentageOrAuto", ${helpers.predefined_type(
"computed::LengthOrPercentageOrAuto::Length(computed::Length::new(0.))", "margin-%s" % side[0],
alias=maybe_moz_logical_alias(product, side, "-moz-margin-%s"), "LengthOrPercentageOrAuto",
allow_quirks=not side[1], "computed::LengthOrPercentageOrAuto::Length(computed::Length::new(0.))",
animation_value_type="ComputedValue", logical = side[1], spec = spec, alias=maybe_moz_logical_alias(product, side, "-moz-margin-%s"),
flags="APPLIES_TO_FIRST_LETTER", allow_quirks=not side[1],
allowed_in_page_rule=True, animation_value_type="ComputedValue",
servo_restyle_damage = "reflow")} logical=side[1],
spec=spec,
flags="APPLIES_TO_FIRST_LETTER GETCS_NEEDS_LAYOUT_FLUSH",
allowed_in_page_rule=True,
servo_restyle_damage="reflow"
)}
% endfor % endfor

View file

@ -14,13 +14,16 @@
if side[1]: if side[1]:
spec = "https://drafts.csswg.org/css-logical-props/#propdef-padding-%s" % side[1] spec = "https://drafts.csswg.org/css-logical-props/#propdef-padding-%s" % side[1]
%> %>
${helpers.predefined_type("padding-%s" % side[0], "NonNegativeLengthOrPercentage", ${helpers.predefined_type(
"computed::NonNegativeLengthOrPercentage::zero()", "padding-%s" % side[0],
alias=maybe_moz_logical_alias(product, side, "-moz-padding-%s"), "NonNegativeLengthOrPercentage",
animation_value_type="NonNegativeLengthOrPercentage", "computed::NonNegativeLengthOrPercentage::zero()",
logical = side[1], alias=maybe_moz_logical_alias(product, side, "-moz-padding-%s"),
spec = spec, animation_value_type="NonNegativeLengthOrPercentage",
flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_PLACEHOLDER", logical=side[1],
allow_quirks=not side[1], spec=spec,
servo_restyle_damage = "reflow rebuild_and_reflow_inline")} flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_PLACEHOLDER GETCS_NEEDS_LAYOUT_FLUSH",
allow_quirks=not side[1],
servo_restyle_damage="reflow rebuild_and_reflow_inline"
)}
% endfor % endfor

View file

@ -10,18 +10,28 @@
// "top" / "left" / "bottom" / "right" // "top" / "left" / "bottom" / "right"
% for side in PHYSICAL_SIDES: % for side in PHYSICAL_SIDES:
${helpers.predefined_type(side, "LengthOrPercentageOrAuto", ${helpers.predefined_type(
"computed::LengthOrPercentageOrAuto::Auto", side,
spec="https://www.w3.org/TR/CSS2/visuren.html#propdef-%s" % side, "LengthOrPercentageOrAuto",
animation_value_type="ComputedValue", "computed::LengthOrPercentageOrAuto::Auto",
allow_quirks=True, servo_restyle_damage = "reflow_out_of_flow")} spec="https://www.w3.org/TR/CSS2/visuren.html#propdef-%s" % side,
flags="GETCS_NEEDS_LAYOUT_FLUSH",
animation_value_type="ComputedValue",
allow_quirks=True,
servo_restyle_damage="reflow_out_of_flow"
)}
% endfor % endfor
// offset-* logical properties, map to "top" / "left" / "bottom" / "right" // offset-* logical properties, map to "top" / "left" / "bottom" / "right"
% for side in LOGICAL_SIDES: % for side in LOGICAL_SIDES:
${helpers.predefined_type("offset-%s" % side, "LengthOrPercentageOrAuto", ${helpers.predefined_type(
"computed::LengthOrPercentageOrAuto::Auto", "offset-%s" % side,
spec="https://drafts.csswg.org/css-logical-props/#propdef-offset-%s" % side, "LengthOrPercentageOrAuto",
animation_value_type="ComputedValue", logical=True)} "computed::LengthOrPercentageOrAuto::Auto",
spec="https://drafts.csswg.org/css-logical-props/#propdef-offset-%s" % side,
flags="GETCS_NEEDS_LAYOUT_FLUSH",
animation_value_type="ComputedValue",
logical=True,
)}
% endfor % endfor
#[cfg(feature = "gecko")] #[cfg(feature = "gecko")]
@ -213,7 +223,8 @@ ${helpers.predefined_type(
allow_quirks=not logical, allow_quirks=not logical,
spec=spec % size, spec=spec % size,
animation_value_type="MozLength", animation_value_type="MozLength",
servo_restyle_damage = "reflow" flags="GETCS_NEEDS_LAYOUT_FLUSH",
servo_restyle_damage="reflow"
)} )}
// min-width, min-height, min-block-size, min-inline-size, // min-width, min-height, min-block-size, min-inline-size,
${helpers.predefined_type( ${helpers.predefined_type(
@ -318,13 +329,16 @@ ${helpers.predefined_type("object-position",
products="gecko", products="gecko",
boxed=True)} boxed=True)}
${helpers.predefined_type("grid-template-%ss" % kind, ${helpers.predefined_type(
"GridTemplateComponent", "grid-template-%ss" % kind,
"specified::GenericGridTemplateComponent::None", "GridTemplateComponent",
products="gecko", "specified::GenericGridTemplateComponent::None",
spec="https://drafts.csswg.org/css-grid/#propdef-grid-template-%ss" % kind, products="gecko",
boxed=True, spec="https://drafts.csswg.org/css-grid/#propdef-grid-template-%ss" % kind,
animation_value_type="discrete")} boxed=True,
flags="GETCS_NEEDS_LAYOUT_FLUSH",
animation_value_type="discrete"
)}
% endfor % endfor

View file

@ -48,21 +48,29 @@ ${helpers.predefined_type("-moz-window-opacity", "Opacity", "1.0", products="gec
spec="None (Nonstandard internal property)")} spec="None (Nonstandard internal property)")}
// TODO(bug 1419695) This should be hidden from content. // TODO(bug 1419695) This should be hidden from content.
${helpers.predefined_type("-moz-window-transform", "Transform", ${helpers.predefined_type(
"generics::transform::Transform::none()", "-moz-window-transform",
products="gecko", gecko_ffi_name="mSpecifiedWindowTransform", "Transform",
animation_value_type="ComputedValue", "generics::transform::Transform::none()",
spec="None (Nonstandard internal property)")} products="gecko",
gecko_ffi_name="mSpecifiedWindowTransform",
flags="GETCS_NEEDS_LAYOUT_FLUSH",
animation_value_type="ComputedValue",
spec="None (Nonstandard internal property)"
)}
// TODO(bug 1419695) This should be hidden from content. // TODO(bug 1419695) This should be hidden from content.
${helpers.predefined_type("-moz-window-transform-origin", ${helpers.predefined_type(
"TransformOrigin", "-moz-window-transform-origin",
"computed::TransformOrigin::initial_value()", "TransformOrigin",
animation_value_type="ComputedValue", "computed::TransformOrigin::initial_value()",
gecko_ffi_name="mWindowTransformOrigin", animation_value_type="ComputedValue",
products="gecko", gecko_ffi_name="mWindowTransformOrigin",
boxed=True, products="gecko",
spec="None (Nonstandard internal property)")} boxed=True,
flags="GETCS_NEEDS_LAYOUT_FLUSH",
spec="None (Nonstandard internal property)"
)}
// TODO(emilio): Probably also should be hidden from content. // TODO(emilio): Probably also should be hidden from content.
${helpers.predefined_type("-moz-force-broken-image-icon", ${helpers.predefined_type("-moz-force-broken-image-icon",

View file

@ -781,6 +781,13 @@ bitflags! {
const APPLIES_TO_FIRST_LINE = 1 << 4; const APPLIES_TO_FIRST_LINE = 1 << 4;
/// This longhand property applies to ::placeholder. /// This longhand property applies to ::placeholder.
const APPLIES_TO_PLACEHOLDER = 1 << 5; const APPLIES_TO_PLACEHOLDER = 1 << 5;
/* The following flags are currently not used in Rust code, they
* only need to be listed in corresponding properties so that
* they can be checked in the C++ side via ServoCSSPropList.h. */
/// This property's getComputedStyle implementation requires layout
/// to be flushed.
const GETCS_NEEDS_LAYOUT_FLUSH = 0;
} }
} }