diff --git a/components/style/gecko_bindings/structs_debug.rs b/components/style/gecko_bindings/structs_debug.rs index 2fa43b82fcc..4cfdc5899ed 100644 --- a/components/style/gecko_bindings/structs_debug.rs +++ b/components/style/gecko_bindings/structs_debug.rs @@ -2596,17 +2596,17 @@ pub enum StyleDisplay { Contents = 24, WebkitBox = 25, WebkitInlineBox = 26, - Box = 27, - InlineBox = 28, - XulGrid = 29, - InlineXulGrid = 30, - XulGridGroup = 31, - XulGridLine = 32, - Stack = 33, - InlineStack = 34, - Deck = 35, - Groupbox = 36, - Popup = 37, + MozBox = 27, + MozInlineBox = 28, + MozGrid = 29, + MozInlineGrid = 30, + MozGridGroup = 31, + MozGridLine = 32, + MozStack = 33, + MozInlineStack = 34, + MozDeck = 35, + MozGroupbox = 36, + MozPopup = 37, } /** * A class for holding strong references to handle-managed objects. diff --git a/components/style/gecko_bindings/structs_release.rs b/components/style/gecko_bindings/structs_release.rs index 3d2bf88dbb7..11b1f6ea393 100644 --- a/components/style/gecko_bindings/structs_release.rs +++ b/components/style/gecko_bindings/structs_release.rs @@ -2570,17 +2570,17 @@ pub enum StyleDisplay { Contents = 24, WebkitBox = 25, WebkitInlineBox = 26, - Box = 27, - InlineBox = 28, - XulGrid = 29, - InlineXulGrid = 30, - XulGridGroup = 31, - XulGridLine = 32, - Stack = 33, - InlineStack = 34, - Deck = 35, - Groupbox = 36, - Popup = 37, + MozBox = 27, + MozInlineBox = 28, + MozGrid = 29, + MozInlineGrid = 30, + MozGridGroup = 31, + MozGridLine = 32, + MozStack = 33, + MozInlineStack = 34, + MozDeck = 35, + MozGroupbox = 36, + MozPopup = 37, } /** * A class for holding strong references to handle-managed objects. diff --git a/components/style/properties/data.py b/components/style/properties/data.py index afddf0f4bb7..cdf4560783b 100644 --- a/components/style/properties/data.py +++ b/components/style/properties/data.py @@ -28,7 +28,9 @@ def to_camel_case(ident): class Keyword(object): def __init__(self, name, values, gecko_constant_prefix=None, gecko_enum_prefix=None, custom_consts=None, - extra_gecko_values=None, extra_servo_values=None): + extra_gecko_values=None, extra_servo_values=None, + gecko_strip_moz_prefix=True, + gecko_inexhaustive=None): self.name = name self.values = values.split() if gecko_constant_prefix and gecko_enum_prefix: @@ -39,6 +41,8 @@ class Keyword(object): self.extra_gecko_values = (extra_gecko_values or "").split() self.extra_servo_values = (extra_servo_values or "").split() self.consts_map = {} if custom_consts is None else custom_consts + self.gecko_strip_moz_prefix = gecko_strip_moz_prefix + self.gecko_inexhaustive = gecko_inexhaustive or (gecko_enum_prefix is None) def gecko_values(self): return self.values + self.extra_gecko_values @@ -55,7 +59,7 @@ class Keyword(object): raise Exception("Bad product: " + product) def gecko_constant(self, value): - moz_stripped = value.replace("-moz-", '') + moz_stripped = value.replace("-moz-", '') if self.gecko_strip_moz_prefix else value parts = moz_stripped.split('-') if self.gecko_enum_prefix: parts = [p.title() for p in parts] diff --git a/components/style/properties/gecko.mako.rs b/components/style/properties/gecko.mako.rs index a9afd64c5b0..00be40d30a9 100644 --- a/components/style/properties/gecko.mako.rs +++ b/components/style/properties/gecko.mako.rs @@ -255,7 +255,9 @@ def set_gecko_property(ffi_name, expr): % for value in keyword.values_for('gecko'): structs::${keyword.gecko_constant(value)} => Keyword::${to_rust_ident(value)}, % endfor + % if keyword.gecko_inexhaustive: x => panic!("Found unexpected value in style struct for ${ident} property: {:?}", x), + % endif } } @@ -1026,8 +1028,13 @@ fn static_assert() { <% display_keyword = Keyword("display", "inline block inline-block table inline-table table-row-group " + "table-header-group table-footer-group table-row table-column-group " + "table-column table-cell table-caption list-item flex none " + - "-moz-box -moz-inline-box", - gecko_enum_prefix="StyleDisplay") %> + "inline-flex grid inline-grid ruby ruby-base ruby-base-container " + + "ruby-text ruby-text-container contents -webkit-box -webkit-inline-box " + + "-moz-box -moz-inline-box -moz-grid -moz-inline-grid -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) %> ${impl_keyword('display', 'mDisplay', display_keyword, True)} // overflow-y is implemented as a newtype of overflow-x, so we need special handling. diff --git a/components/style/properties/helpers.mako.rs b/components/style/properties/helpers.mako.rs index 4fdbeda88c8..5d58fd6db5c 100644 --- a/components/style/properties/helpers.mako.rs +++ b/components/style/properties/helpers.mako.rs @@ -329,7 +329,7 @@ keyword_kwargs = {a: kwargs.pop(a, None) for a in [ 'gecko_constant_prefix', 'gecko_enum_prefix', 'extra_gecko_values', 'extra_servo_values', - 'custom_consts', + 'custom_consts', 'gecko_inexhaustive', ]} %> diff --git a/components/style/properties/longhand/border.mako.rs b/components/style/properties/longhand/border.mako.rs index c4ccfeb032f..0393064d532 100644 --- a/components/style/properties/longhand/border.mako.rs +++ b/components/style/properties/longhand/border.mako.rs @@ -58,11 +58,13 @@ ${helpers.single_keyword("box-decoration-break", "slice clone", gecko_enum_prefix="StyleBoxDecorationBreak", + gecko_inexhaustive=True, products="gecko", animatable=False)} ${helpers.single_keyword("-moz-float-edge", "content-box margin-box", gecko_ffi_name="mFloatEdge", gecko_enum_prefix="StyleFloatEdge", + gecko_inexhaustive=True, products="gecko", animatable=False)} diff --git a/components/style/properties/longhand/box.mako.rs b/components/style/properties/longhand/box.mako.rs index c48d4948376..818ed9316e1 100644 --- a/components/style/properties/longhand/box.mako.rs +++ b/components/style/properties/longhand/box.mako.rs @@ -22,7 +22,11 @@ none """.split() if product == "gecko": - values += "-moz-box -moz-inline-box".split() + values += """inline-flex grid inline-grid ruby ruby-base ruby-base-container + ruby-text ruby-text-container contents -webkit-box -webkit-inline-box + -moz-box -moz-inline-box -moz-grid -moz-inline-grid -moz-grid-group + -moz-grid-line -moz-stack -moz-inline-stack -moz-deck -moz-popup + -moz-groupbox""".split() %> pub use self::computed_value::T as SpecifiedValue; use values::computed::ComputedValueAsSpecified; @@ -92,6 +96,7 @@ ${helpers.single_keyword("position", "static absolute relative fixed", animatable="False" need_clone="True" gecko_enum_prefix="StyleFloat" + gecko_inexhaustive="True" gecko_ffi_name="mFloat"> use values::NoViewportPercentage; impl NoViewportPercentage for SpecifiedValue {} diff --git a/components/style/properties/longhand/inherited_svg.mako.rs b/components/style/properties/longhand/inherited_svg.mako.rs index 8bff77f9c37..6a0b00eced9 100644 --- a/components/style/properties/longhand/inherited_svg.mako.rs +++ b/components/style/properties/longhand/inherited_svg.mako.rs @@ -35,6 +35,7 @@ ${helpers.predefined_type("fill-opacity", "Opacity", "1.0", ${helpers.single_keyword("fill-rule", "nonzero evenodd", gecko_enum_prefix="StyleFillRule", + gecko_inexhaustive=True, products="gecko", animatable=False)} ${helpers.single_keyword("shape-rendering", @@ -60,4 +61,5 @@ ${helpers.predefined_type("stroke-opacity", "Opacity", "1.0", ${helpers.single_keyword("clip-rule", "nonzero evenodd", products="gecko", gecko_enum_prefix="StyleFillRule", + gecko_inexhaustive=True, animatable=False)} diff --git a/components/style/properties/longhand/pointing.mako.rs b/components/style/properties/longhand/pointing.mako.rs index d5306f376a9..412e2fe080c 100644 --- a/components/style/properties/longhand/pointing.mako.rs +++ b/components/style/properties/longhand/pointing.mako.rs @@ -151,15 +151,18 @@ ${helpers.single_keyword("pointer-events", "auto none", animatable=False)} ${helpers.single_keyword("-moz-user-input", "none enabled disabled", products="gecko", gecko_ffi_name="mUserInput", gecko_enum_prefix="StyleUserInput", + gecko_inexhaustive=True, animatable=False)} ${helpers.single_keyword("-moz-user-modify", "read-only read-write write-only", products="gecko", gecko_ffi_name="mUserModify", gecko_enum_prefix="StyleUserModify", + gecko_inexhaustive=True, animatable=False)} ${helpers.single_keyword("-moz-user-focus", "ignore normal select-after select-before select-menu select-same select-all none", products="gecko", gecko_ffi_name="mUserFocus", gecko_enum_prefix="StyleUserFocus", + gecko_inexhaustive=True, animatable=False)} diff --git a/components/style/properties/longhand/ui.mako.rs b/components/style/properties/longhand/ui.mako.rs index f815c1d8518..cd537677f6f 100644 --- a/components/style/properties/longhand/ui.mako.rs +++ b/components/style/properties/longhand/ui.mako.rs @@ -16,4 +16,5 @@ ${helpers.single_keyword("ime-mode", "normal auto active disabled inactive", ${helpers.single_keyword("-moz-user-select", "auto text none all", products="gecko", gecko_ffi_name="mUserSelect", gecko_enum_prefix="StyleUserSelect", + gecko_inexhaustive=True, animatable=False)} diff --git a/components/style/properties/longhand/xul.mako.rs b/components/style/properties/longhand/xul.mako.rs index 23c1da1246b..bc64308a115 100644 --- a/components/style/properties/longhand/xul.mako.rs +++ b/components/style/properties/longhand/xul.mako.rs @@ -11,6 +11,7 @@ ${helpers.single_keyword("-moz-box-align", "stretch start center baseline end", products="gecko", gecko_ffi_name="mBoxAlign", gecko_enum_prefix="StyleBoxAlign", + gecko_inexhaustive=True, animatable=False)} ${helpers.predefined_type("-moz-box-flex", "Number", "0.0", "parse_non_negative",