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,7 +43,8 @@
needs_context=False, needs_context=False,
)} )}
${helpers.predefined_type("border-%s-width" % side_name, ${helpers.predefined_type(
"border-%s-width" % side_name,
"BorderSideWidth", "BorderSideWidth",
"::values::computed::NonNegativeLength::new(3.)", "::values::computed::NonNegativeLength::new(3.)",
computed_type="::values::computed::NonNegativeLength", computed_type="::values::computed::NonNegativeLength",
@ -51,9 +52,10 @@
spec=maybe_logical_spec(side, "width"), spec=maybe_logical_spec(side, "width"),
animation_value_type="NonNegativeLength", animation_value_type="NonNegativeLength",
logical=is_logical, logical=is_logical,
flags="APPLIES_TO_FIRST_LETTER", flags="APPLIES_TO_FIRST_LETTER GETCS_NEEDS_LAYOUT_FLUSH",
allow_quirks=not is_logical, allow_quirks=not is_logical,
servo_restyle_damage = "reflow rebuild_and_reflow_inline")} 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(
"transform",
"Transform",
"generics::transform::Transform::none()", "generics::transform::Transform::none()",
extra_prefixes=transform_extra_prefixes, extra_prefixes=transform_extra_prefixes,
animation_value_type="ComputedValue", animation_value_type="ComputedValue",
gecko_ffi_name="mSpecifiedTransform", gecko_ffi_name="mSpecifiedTransform",
flags="CREATES_STACKING_CONTEXT FIXPOS_CB", flags="CREATES_STACKING_CONTEXT FIXPOS_CB GETCS_NEEDS_LAYOUT_FLUSH",
spec="https://drafts.csswg.org/css-transforms/#propdef-transform", 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", ${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(
"translate",
"Translate",
"generics::transform::Translate::None", "generics::transform::Translate::None",
animation_value_type="ComputedValue", animation_value_type="ComputedValue",
boxed=True, boxed=True,
flags="CREATES_STACKING_CONTEXT FIXPOS_CB", flags="CREATES_STACKING_CONTEXT FIXPOS_CB GETCS_NEEDS_LAYOUT_FLUSH",
gecko_pref="layout.css.individual-transform.enabled", gecko_pref="layout.css.individual-transform.enabled",
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"
)}
// 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(
"perspective-origin",
"position::Position", "position::Position",
"computed::position::Position::center()", "computed::position::Position::center()",
boxed=True, boxed=True,
extra_prefixes=transform_extra_prefixes, extra_prefixes=transform_extra_prefixes,
spec="https://drafts.csswg.org/css-transforms-2/#perspective-origin-property", spec="https://drafts.csswg.org/css-transforms-2/#perspective-origin-property",
flags="GETCS_NEEDS_LAYOUT_FLUSH",
animation_value_type="ComputedValue", animation_value_type="ComputedValue",
servo_restyle_damage = "reflow_out_of_flow")} 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(
"transform-origin",
"TransformOrigin", "TransformOrigin",
"computed::TransformOrigin::initial_value()", "computed::TransformOrigin::initial_value()",
animation_value_type="ComputedValue", animation_value_type="ComputedValue",
extra_prefixes=transform_extra_prefixes, extra_prefixes=transform_extra_prefixes,
gecko_ffi_name="mTransformOrigin", gecko_ffi_name="mTransformOrigin",
boxed=True, boxed=True,
flags="GETCS_NEEDS_LAYOUT_FLUSH",
spec="https://drafts.csswg.org/css-transforms/#transform-origin-property", 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", ${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(
"line-height",
"LineHeight", "LineHeight",
"computed::LineHeight::normal()", "computed::LineHeight::normal()",
animation_value_type="LineHeight", animation_value_type="LineHeight",
flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER", flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE \
APPLIES_TO_PLACEHOLDER GETCS_NEEDS_LAYOUT_FLUSH",
spec="https://drafts.csswg.org/css2/visudet.html#propdef-line-height", spec="https://drafts.csswg.org/css2/visudet.html#propdef-line-height",
servo_restyle_damage = "reflow")} 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(
"margin-%s" % side[0],
"LengthOrPercentageOrAuto",
"computed::LengthOrPercentageOrAuto::Length(computed::Length::new(0.))", "computed::LengthOrPercentageOrAuto::Length(computed::Length::new(0.))",
alias=maybe_moz_logical_alias(product, side, "-moz-margin-%s"), alias=maybe_moz_logical_alias(product, side, "-moz-margin-%s"),
allow_quirks=not side[1], allow_quirks=not side[1],
animation_value_type="ComputedValue", logical = side[1], spec = spec, animation_value_type="ComputedValue",
flags="APPLIES_TO_FIRST_LETTER", logical=side[1],
spec=spec,
flags="APPLIES_TO_FIRST_LETTER GETCS_NEEDS_LAYOUT_FLUSH",
allowed_in_page_rule=True, allowed_in_page_rule=True,
servo_restyle_damage = "reflow")} 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(
"padding-%s" % side[0],
"NonNegativeLengthOrPercentage",
"computed::NonNegativeLengthOrPercentage::zero()", "computed::NonNegativeLengthOrPercentage::zero()",
alias=maybe_moz_logical_alias(product, side, "-moz-padding-%s"), alias=maybe_moz_logical_alias(product, side, "-moz-padding-%s"),
animation_value_type="NonNegativeLengthOrPercentage", animation_value_type="NonNegativeLengthOrPercentage",
logical=side[1], logical=side[1],
spec=spec, spec=spec,
flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_PLACEHOLDER", flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_PLACEHOLDER GETCS_NEEDS_LAYOUT_FLUSH",
allow_quirks=not side[1], allow_quirks=not side[1],
servo_restyle_damage = "reflow rebuild_and_reflow_inline")} 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(
side,
"LengthOrPercentageOrAuto",
"computed::LengthOrPercentageOrAuto::Auto", "computed::LengthOrPercentageOrAuto::Auto",
spec="https://www.w3.org/TR/CSS2/visuren.html#propdef-%s" % side, spec="https://www.w3.org/TR/CSS2/visuren.html#propdef-%s" % side,
flags="GETCS_NEEDS_LAYOUT_FLUSH",
animation_value_type="ComputedValue", animation_value_type="ComputedValue",
allow_quirks=True, servo_restyle_damage = "reflow_out_of_flow")} 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(
"offset-%s" % side,
"LengthOrPercentageOrAuto",
"computed::LengthOrPercentageOrAuto::Auto", "computed::LengthOrPercentageOrAuto::Auto",
spec="https://drafts.csswg.org/css-logical-props/#propdef-offset-%s" % side, spec="https://drafts.csswg.org/css-logical-props/#propdef-offset-%s" % side,
animation_value_type="ComputedValue", logical=True)} flags="GETCS_NEEDS_LAYOUT_FLUSH",
animation_value_type="ComputedValue",
logical=True,
)}
% endfor % endfor
#[cfg(feature = "gecko")] #[cfg(feature = "gecko")]
@ -213,6 +223,7 @@ ${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",
flags="GETCS_NEEDS_LAYOUT_FLUSH",
servo_restyle_damage="reflow" servo_restyle_damage="reflow"
)} )}
// min-width, min-height, min-block-size, min-inline-size, // min-width, min-height, min-block-size, min-inline-size,
@ -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(
"grid-template-%ss" % kind,
"GridTemplateComponent", "GridTemplateComponent",
"specified::GenericGridTemplateComponent::None", "specified::GenericGridTemplateComponent::None",
products="gecko", products="gecko",
spec="https://drafts.csswg.org/css-grid/#propdef-grid-template-%ss" % kind, spec="https://drafts.csswg.org/css-grid/#propdef-grid-template-%ss" % kind,
boxed=True, boxed=True,
animation_value_type="discrete")} 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(
"-moz-window-transform",
"Transform",
"generics::transform::Transform::none()", "generics::transform::Transform::none()",
products="gecko", gecko_ffi_name="mSpecifiedWindowTransform", products="gecko",
gecko_ffi_name="mSpecifiedWindowTransform",
flags="GETCS_NEEDS_LAYOUT_FLUSH",
animation_value_type="ComputedValue", animation_value_type="ComputedValue",
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-origin", ${helpers.predefined_type(
"-moz-window-transform-origin",
"TransformOrigin", "TransformOrigin",
"computed::TransformOrigin::initial_value()", "computed::TransformOrigin::initial_value()",
animation_value_type="ComputedValue", animation_value_type="ComputedValue",
gecko_ffi_name="mWindowTransformOrigin", gecko_ffi_name="mWindowTransformOrigin",
products="gecko", products="gecko",
boxed=True, boxed=True,
spec="None (Nonstandard internal property)")} 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;
} }
} }