diff --git a/components/style/gecko/media_features.rs b/components/style/gecko/media_features.rs index ce084c9d16b..e3de8dbfaaa 100644 --- a/components/style/gecko/media_features.rs +++ b/components/style/gecko/media_features.rs @@ -598,8 +598,7 @@ lazy_static! { atom!("device-pixel-ratio"), AllowsRanges::Yes, Evaluator::Float(eval_device_pixel_ratio), - ParsingRequirements::WEBKIT_PREFIX | - ParsingRequirements::WEBKIT_DEVICE_PIXEL_RATIO_PREF_ENABLED, + ParsingRequirements::WEBKIT_PREFIX, ), // -webkit-transform-3d. feature!( diff --git a/components/style/media_queries/media_feature.rs b/components/style/media_queries/media_feature.rs index c5251f7419f..a273e7f51be 100644 --- a/components/style/media_queries/media_feature.rs +++ b/components/style/media_queries/media_feature.rs @@ -123,9 +123,6 @@ bitflags! { const CHROME_AND_UA_ONLY = 1 << 0; /// The feature requires a -webkit- prefix. const WEBKIT_PREFIX = 1 << 1; - /// The feature requires the webkit-device-pixel-ratio preference to be - /// enabled. - const WEBKIT_DEVICE_PIXEL_RATIO_PREF_ENABLED = 1 << 2; } } diff --git a/components/style/media_queries/media_feature_expression.rs b/components/style/media_queries/media_feature_expression.rs index d4124450dc5..7fee093f86e 100644 --- a/components/style/media_queries/media_feature_expression.rs +++ b/components/style/media_queries/media_feature_expression.rs @@ -242,6 +242,16 @@ fn consume_operation_or_colon(input: &mut Parser) -> Result, () })) } +fn disabled_by_pref(feature: &Atom) -> bool { + if *feature == atom!("device-pixel-ratio") { + return !static_prefs::pref!("layout.css.prefixes.device-pixel-ratio-webkit"); + } + if *feature == atom!("-moz-touch-enabled") { + return !static_prefs::pref!("layout.css.moz-touch-enabled.enabled") + } + false +} + impl MediaFeatureExpression { fn new( feature_index: usize, @@ -301,11 +311,6 @@ impl MediaFeatureExpression { if starts_with_ignore_ascii_case(feature_name, "-webkit-") { feature_name = &feature_name[8..]; requirements.insert(ParsingRequirements::WEBKIT_PREFIX); - if static_prefs::pref!("layout.css.prefixes.device-pixel-ratio-webkit") { - requirements.insert( - ParsingRequirements::WEBKIT_DEVICE_PIXEL_RATIO_PREF_ENABLED, - ); - } } } @@ -320,6 +325,13 @@ impl MediaFeatureExpression { }; let atom = Atom::from(string_as_ascii_lowercase(feature_name)); + + if disabled_by_pref(&atom) { + return Err(location.new_custom_error( + StyleParseErrorKind::MediaQueryExpectedFeatureName(ident.clone()), + )); + } + match MEDIA_FEATURES .iter() .enumerate()