mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
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:
parent
cfffff33a0
commit
bc81f09833
8 changed files with 152 additions and 98 deletions
|
@ -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',
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue