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..95cd6409c37 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 } } @@ -1027,7 +1029,8 @@ fn static_assert() { "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") %> + gecko_enum_prefix="StyleDisplay", + gecko_inexhaustive=True) %> ${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..486105e33dd 100644 --- a/components/style/properties/longhand/box.mako.rs +++ b/components/style/properties/longhand/box.mako.rs @@ -92,6 +92,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",