diff --git a/components/style/properties/data.py b/components/style/properties/data.py index 559048913b6..dd07ddece32 100644 --- a/components/style/properties/data.py +++ b/components/style/properties/data.py @@ -483,6 +483,7 @@ class Longhand(Property): "LineBreak", "MasonryAutoFlow", "MozForceBrokenImageIcon", + "text::MozControlCharacterVisibility", "MozListReversed", "MathDepth", "MozScriptMinSize", diff --git a/components/style/properties/helpers.mako.rs b/components/style/properties/helpers.mako.rs index 74161793e4e..ecd714cebfc 100644 --- a/components/style/properties/helpers.mako.rs +++ b/components/style/properties/helpers.mako.rs @@ -707,8 +707,7 @@ <%def name="single_keyword(name, values, vector=False, - needs_conversion=False, gecko_pref_controlled_initial_value=None, - **kwargs)"> + needs_conversion=False, **kwargs)"> <% keyword_kwargs = {a: kwargs.pop(a, None) for a in [ 'gecko_constant_prefix', @@ -725,10 +724,13 @@ ]} %> - <%def name="inner_body(keyword, needs_conversion=False, - gecko_pref_controlled_initial_value=None)"> - <%def name="variants(variants)"> - % for variant in variants: + <%def name="inner_body(keyword, needs_conversion=False)"> + pub use self::computed_value::T as SpecifiedValue; + pub mod computed_value { + #[cfg_attr(feature = "servo", derive(Deserialize, Serialize))] + #[derive(Clone, Copy, Debug, Eq, FromPrimitive, MallocSizeOf, Parse, PartialEq, SpecifiedValueInfo, ToComputedValue, ToCss, ToResolvedValue, ToShmem)] + pub enum T { + % for variant in keyword.values_for(engine): <% aliases = [] for alias, v in keyword.aliases_for(engine).items(): @@ -740,31 +742,14 @@ % endif ${to_camel_case(variant)}, % endfor - - pub use self::computed_value::T as SpecifiedValue; - pub mod computed_value { - #[cfg_attr(feature = "servo", derive(Deserialize, Serialize))] - #[derive(Clone, Copy, Debug, Eq, FromPrimitive, MallocSizeOf, Parse, PartialEq, SpecifiedValueInfo, ToComputedValue, ToCss, ToResolvedValue, ToShmem)] - pub enum T { - ${variants(data.longhands_by_name[name].keyword.values_for(engine))} } } #[inline] pub fn get_initial_value() -> computed_value::T { - % if engine == "gecko" and gecko_pref_controlled_initial_value: - if static_prefs::pref!("${gecko_pref_controlled_initial_value.split('=')[0]}") { - return computed_value::T::${to_camel_case(gecko_pref_controlled_initial_value.split('=')[1])}; - } - % endif computed_value::T::${to_camel_case(values.split()[0])} } #[inline] pub fn get_initial_specified_value() -> SpecifiedValue { - % if engine == "gecko" and gecko_pref_controlled_initial_value: - if static_prefs::pref!("${gecko_pref_controlled_initial_value.split('=')[0]}") { - return SpecifiedValue::${to_camel_case(gecko_pref_controlled_initial_value.split('=')[1])}; - } - % endif SpecifiedValue::${to_camel_case(values.split()[0])} } #[inline] @@ -790,8 +775,7 @@ % else: <%call expr="longhand(name, keyword=Keyword(name, values, **keyword_kwargs), **kwargs)"> ${inner_body(Keyword(name, values, **keyword_kwargs), - needs_conversion=needs_conversion, - gecko_pref_controlled_initial_value=gecko_pref_controlled_initial_value)} + needs_conversion=needs_conversion)} % if caller: ${caller.body()} % endif diff --git a/components/style/properties/longhands/inherited_text.mako.rs b/components/style/properties/longhands/inherited_text.mako.rs index b0407054ddd..246e7ff36a6 100644 --- a/components/style/properties/longhands/inherited_text.mako.rs +++ b/components/style/properties/longhands/inherited_text.mako.rs @@ -331,15 +331,13 @@ ${helpers.single_keyword( servo_restyle_damage="rebuild_and_reflow", )} -${helpers.single_keyword( +${helpers.predefined_type( "-moz-control-character-visibility", - "hidden visible", + "text::MozControlCharacterVisibility", + "Default::default()", engines="gecko", - gecko_enum_prefix="StyleControlCharacterVisibility", - gecko_pref_controlled_initial_value="layout.css.control-characters.visible=visible", animation_value_type="none", - gecko_ffi_name="mControlCharacterVisibility", - spec="Nonstandard", + spec="Nonstandard" )} // text underline offset diff --git a/components/style/values/computed/text.rs b/components/style/values/computed/text.rs index c0331643fa7..b42dfb488a3 100644 --- a/components/style/values/computed/text.rs +++ b/components/style/values/computed/text.rs @@ -18,7 +18,7 @@ use crate::Zero; use std::fmt::{self, Write}; use style_traits::{CssWriter, ToCss}; -pub use crate::values::specified::text::{TextAlignLast, TextUnderlinePosition}; +pub use crate::values::specified::text::{TextAlignLast, TextUnderlinePosition, MozControlCharacterVisibility}; pub use crate::values::specified::{LineBreak, OverflowWrap, RubyPosition, WordBreak}; pub use crate::values::specified::{TextDecorationLine, TextEmphasisPosition}; pub use crate::values::specified::{TextDecorationSkipInk, TextJustify, TextTransform}; diff --git a/components/style/values/specified/text.rs b/components/style/values/specified/text.rs index 7af55b81258..629eafd6417 100644 --- a/components/style/values/specified/text.rs +++ b/components/style/values/specified/text.rs @@ -1028,6 +1028,39 @@ pub enum TextJustify { InterCharacter, } +/// Values for the `-moz-control-character-visibility` CSS property. +#[repr(u8)] +#[derive( + Clone, + Copy, + Debug, + Eq, + MallocSizeOf, + Parse, + PartialEq, + SpecifiedValueInfo, + ToComputedValue, + ToCss, + ToResolvedValue, + ToShmem, +)] +#[allow(missing_docs)] +pub enum MozControlCharacterVisibility { + Hidden, + Visible, +} + +impl Default for MozControlCharacterVisibility { + fn default() -> Self { + if static_prefs::pref!("layout.css.control-characters.visible") { + Self::Visible + } else { + Self::Hidden + } + } +} + + /// Values for the `line-break` property. #[repr(u8)] #[derive(