style: Don't use lazy_static for media feature parsing.

This used to be needed when destructors in statics were not allowed, but
we can get rid of it nowadays.

Differential Revision: https://phabricator.services.mozilla.com/D78109
This commit is contained in:
Emilio Cobos Álvarez 2020-06-03 19:28:16 +02:00
parent 332aec212c
commit 69c7077b3d

View file

@ -538,225 +538,223 @@ macro_rules! system_metric_feature {
}}; }};
} }
lazy_static! { /// Adding new media features requires (1) adding the new feature to this
/// Adding new media features requires (1) adding the new feature to this /// array, with appropriate entries (and potentially any new code needed
/// array, with appropriate entries (and potentially any new code needed /// to support new types in these entries and (2) ensuring that either
/// to support new types in these entries and (2) ensuring that either /// nsPresContext::MediaFeatureValuesChanged is called when the value that
/// nsPresContext::MediaFeatureValuesChanged is called when the value that /// would be returned by the evaluator function could change.
/// would be returned by the evaluator function could change. pub static MEDIA_FEATURES: [MediaFeatureDescription; 53] = [
pub static ref MEDIA_FEATURES: [MediaFeatureDescription; 53] = [ feature!(
feature!( atom!("width"),
atom!("width"), AllowsRanges::Yes,
AllowsRanges::Yes, Evaluator::Length(eval_width),
Evaluator::Length(eval_width), ParsingRequirements::empty(),
ParsingRequirements::empty(), ),
), feature!(
feature!( atom!("height"),
atom!("height"), AllowsRanges::Yes,
AllowsRanges::Yes, Evaluator::Length(eval_height),
Evaluator::Length(eval_height), ParsingRequirements::empty(),
ParsingRequirements::empty(), ),
), feature!(
feature!( atom!("aspect-ratio"),
atom!("aspect-ratio"), AllowsRanges::Yes,
AllowsRanges::Yes, Evaluator::NumberRatio(eval_aspect_ratio),
Evaluator::NumberRatio(eval_aspect_ratio), ParsingRequirements::empty(),
ParsingRequirements::empty(), ),
), feature!(
feature!( atom!("orientation"),
atom!("orientation"), AllowsRanges::No,
AllowsRanges::No, keyword_evaluator!(eval_orientation, Orientation),
keyword_evaluator!(eval_orientation, Orientation), ParsingRequirements::empty(),
ParsingRequirements::empty(), ),
), feature!(
feature!( atom!("device-width"),
atom!("device-width"), AllowsRanges::Yes,
AllowsRanges::Yes, Evaluator::Length(eval_device_width),
Evaluator::Length(eval_device_width), ParsingRequirements::empty(),
ParsingRequirements::empty(), ),
), feature!(
feature!( atom!("device-height"),
atom!("device-height"), AllowsRanges::Yes,
AllowsRanges::Yes, Evaluator::Length(eval_device_height),
Evaluator::Length(eval_device_height), ParsingRequirements::empty(),
ParsingRequirements::empty(), ),
), feature!(
feature!( atom!("device-aspect-ratio"),
atom!("device-aspect-ratio"), AllowsRanges::Yes,
AllowsRanges::Yes, Evaluator::NumberRatio(eval_device_aspect_ratio),
Evaluator::NumberRatio(eval_device_aspect_ratio), ParsingRequirements::empty(),
ParsingRequirements::empty(), ),
), feature!(
feature!( atom!("-moz-device-orientation"),
atom!("-moz-device-orientation"), AllowsRanges::No,
AllowsRanges::No, keyword_evaluator!(eval_device_orientation, Orientation),
keyword_evaluator!(eval_device_orientation, Orientation), ParsingRequirements::empty(),
ParsingRequirements::empty(), ),
), // Webkit extensions that we support for de-facto web compatibility.
// Webkit extensions that we support for de-facto web compatibility. // -webkit-{min|max}-device-pixel-ratio (controlled with its own pref):
// -webkit-{min|max}-device-pixel-ratio (controlled with its own pref): feature!(
feature!( atom!("device-pixel-ratio"),
atom!("device-pixel-ratio"), AllowsRanges::Yes,
AllowsRanges::Yes, Evaluator::Float(eval_device_pixel_ratio),
Evaluator::Float(eval_device_pixel_ratio), ParsingRequirements::WEBKIT_PREFIX,
ParsingRequirements::WEBKIT_PREFIX, ),
), // -webkit-transform-3d.
// -webkit-transform-3d. feature!(
feature!( atom!("transform-3d"),
atom!("transform-3d"), AllowsRanges::No,
AllowsRanges::No, Evaluator::BoolInteger(eval_transform_3d),
Evaluator::BoolInteger(eval_transform_3d), ParsingRequirements::WEBKIT_PREFIX,
ParsingRequirements::WEBKIT_PREFIX, ),
), feature!(
feature!( atom!("-moz-device-pixel-ratio"),
atom!("-moz-device-pixel-ratio"), AllowsRanges::Yes,
AllowsRanges::Yes, Evaluator::Float(eval_device_pixel_ratio),
Evaluator::Float(eval_device_pixel_ratio), ParsingRequirements::empty(),
ParsingRequirements::empty(), ),
), feature!(
feature!( atom!("resolution"),
atom!("resolution"), AllowsRanges::Yes,
AllowsRanges::Yes, Evaluator::Resolution(eval_resolution),
Evaluator::Resolution(eval_resolution), ParsingRequirements::empty(),
ParsingRequirements::empty(), ),
), feature!(
feature!( atom!("display-mode"),
atom!("display-mode"), AllowsRanges::No,
AllowsRanges::No, keyword_evaluator!(eval_display_mode, DisplayMode),
keyword_evaluator!(eval_display_mode, DisplayMode), ParsingRequirements::empty(),
ParsingRequirements::empty(), ),
), feature!(
feature!( atom!("grid"),
atom!("grid"), AllowsRanges::No,
AllowsRanges::No, Evaluator::BoolInteger(eval_grid),
Evaluator::BoolInteger(eval_grid), ParsingRequirements::empty(),
ParsingRequirements::empty(), ),
), feature!(
feature!( atom!("scan"),
atom!("scan"), AllowsRanges::No,
AllowsRanges::No, keyword_evaluator!(eval_scan, Scan),
keyword_evaluator!(eval_scan, Scan), ParsingRequirements::empty(),
ParsingRequirements::empty(), ),
), feature!(
feature!( atom!("color"),
atom!("color"), AllowsRanges::Yes,
AllowsRanges::Yes, Evaluator::Integer(eval_color),
Evaluator::Integer(eval_color), ParsingRequirements::empty(),
ParsingRequirements::empty(), ),
), feature!(
feature!( atom!("color-index"),
atom!("color-index"), AllowsRanges::Yes,
AllowsRanges::Yes, Evaluator::Integer(eval_color_index),
Evaluator::Integer(eval_color_index), ParsingRequirements::empty(),
ParsingRequirements::empty(), ),
), feature!(
feature!( atom!("monochrome"),
atom!("monochrome"), AllowsRanges::Yes,
AllowsRanges::Yes, Evaluator::Integer(eval_monochrome),
Evaluator::Integer(eval_monochrome), ParsingRequirements::empty(),
ParsingRequirements::empty(), ),
), feature!(
feature!( atom!("prefers-reduced-motion"),
atom!("prefers-reduced-motion"), AllowsRanges::No,
AllowsRanges::No, keyword_evaluator!(eval_prefers_reduced_motion, PrefersReducedMotion),
keyword_evaluator!(eval_prefers_reduced_motion, PrefersReducedMotion), ParsingRequirements::empty(),
ParsingRequirements::empty(), ),
), feature!(
feature!( atom!("overflow-block"),
atom!("overflow-block"), AllowsRanges::No,
AllowsRanges::No, keyword_evaluator!(eval_overflow_block, OverflowBlock),
keyword_evaluator!(eval_overflow_block, OverflowBlock), ParsingRequirements::empty(),
ParsingRequirements::empty(), ),
), feature!(
feature!( atom!("overflow-inline"),
atom!("overflow-inline"), AllowsRanges::No,
AllowsRanges::No, keyword_evaluator!(eval_overflow_inline, OverflowInline),
keyword_evaluator!(eval_overflow_inline, OverflowInline), ParsingRequirements::empty(),
ParsingRequirements::empty(), ),
), feature!(
feature!( atom!("prefers-color-scheme"),
atom!("prefers-color-scheme"), AllowsRanges::No,
AllowsRanges::No, keyword_evaluator!(eval_prefers_color_scheme, PrefersColorScheme),
keyword_evaluator!(eval_prefers_color_scheme, PrefersColorScheme), ParsingRequirements::empty(),
ParsingRequirements::empty(), ),
), feature!(
feature!( atom!("pointer"),
atom!("pointer"), AllowsRanges::No,
AllowsRanges::No, keyword_evaluator!(eval_pointer, Pointer),
keyword_evaluator!(eval_pointer, Pointer), ParsingRequirements::empty(),
ParsingRequirements::empty(), ),
), feature!(
feature!( atom!("any-pointer"),
atom!("any-pointer"), AllowsRanges::No,
AllowsRanges::No, keyword_evaluator!(eval_any_pointer, Pointer),
keyword_evaluator!(eval_any_pointer, Pointer), ParsingRequirements::empty(),
ParsingRequirements::empty(), ),
), feature!(
feature!( atom!("hover"),
atom!("hover"), AllowsRanges::No,
AllowsRanges::No, keyword_evaluator!(eval_hover, Hover),
keyword_evaluator!(eval_hover, Hover), ParsingRequirements::empty(),
ParsingRequirements::empty(), ),
), feature!(
feature!( atom!("any-hover"),
atom!("any-hover"), AllowsRanges::No,
AllowsRanges::No, keyword_evaluator!(eval_any_hover, Hover),
keyword_evaluator!(eval_any_hover, Hover), ParsingRequirements::empty(),
ParsingRequirements::empty(), ),
),
// Internal -moz-is-glyph media feature: applies only inside SVG glyphs. // Internal -moz-is-glyph media feature: applies only inside SVG glyphs.
// Internal because it is really only useful in the user agent anyway // Internal because it is really only useful in the user agent anyway
// and therefore not worth standardizing. // and therefore not worth standardizing.
feature!( feature!(
atom!("-moz-is-glyph"), atom!("-moz-is-glyph"),
AllowsRanges::No, AllowsRanges::No,
Evaluator::BoolInteger(eval_moz_is_glyph), Evaluator::BoolInteger(eval_moz_is_glyph),
ParsingRequirements::CHROME_AND_UA_ONLY, ParsingRequirements::CHROME_AND_UA_ONLY,
), ),
feature!( feature!(
atom!("-moz-is-resource-document"), atom!("-moz-is-resource-document"),
AllowsRanges::No, AllowsRanges::No,
Evaluator::BoolInteger(eval_moz_is_resource_document), Evaluator::BoolInteger(eval_moz_is_resource_document),
ParsingRequirements::CHROME_AND_UA_ONLY, ParsingRequirements::CHROME_AND_UA_ONLY,
), ),
feature!( feature!(
atom!("-moz-os-version"), atom!("-moz-os-version"),
AllowsRanges::No, AllowsRanges::No,
Evaluator::Ident(eval_moz_os_version), Evaluator::Ident(eval_moz_os_version),
ParsingRequirements::CHROME_AND_UA_ONLY, ParsingRequirements::CHROME_AND_UA_ONLY,
), ),
system_metric_feature!(atom!("-moz-scrollbar-start-backward")), system_metric_feature!(atom!("-moz-scrollbar-start-backward")),
system_metric_feature!(atom!("-moz-scrollbar-start-forward")), system_metric_feature!(atom!("-moz-scrollbar-start-forward")),
system_metric_feature!(atom!("-moz-scrollbar-end-backward")), system_metric_feature!(atom!("-moz-scrollbar-end-backward")),
system_metric_feature!(atom!("-moz-scrollbar-end-forward")), system_metric_feature!(atom!("-moz-scrollbar-end-forward")),
system_metric_feature!(atom!("-moz-scrollbar-thumb-proportional")), system_metric_feature!(atom!("-moz-scrollbar-thumb-proportional")),
system_metric_feature!(atom!("-moz-overlay-scrollbars")), system_metric_feature!(atom!("-moz-overlay-scrollbars")),
system_metric_feature!(atom!("-moz-windows-default-theme")), system_metric_feature!(atom!("-moz-windows-default-theme")),
system_metric_feature!(atom!("-moz-mac-graphite-theme")), system_metric_feature!(atom!("-moz-mac-graphite-theme")),
system_metric_feature!(atom!("-moz-mac-yosemite-theme")), system_metric_feature!(atom!("-moz-mac-yosemite-theme")),
system_metric_feature!(atom!("-moz-windows-accent-color-in-titlebar")), system_metric_feature!(atom!("-moz-windows-accent-color-in-titlebar")),
system_metric_feature!(atom!("-moz-windows-compositor")), system_metric_feature!(atom!("-moz-windows-compositor")),
system_metric_feature!(atom!("-moz-windows-classic")), system_metric_feature!(atom!("-moz-windows-classic")),
system_metric_feature!(atom!("-moz-windows-glass")), system_metric_feature!(atom!("-moz-windows-glass")),
system_metric_feature!(atom!("-moz-menubar-drag")), system_metric_feature!(atom!("-moz-menubar-drag")),
system_metric_feature!(atom!("-moz-swipe-animation-enabled")), system_metric_feature!(atom!("-moz-swipe-animation-enabled")),
system_metric_feature!(atom!("-moz-gtk-csd-available")), system_metric_feature!(atom!("-moz-gtk-csd-available")),
system_metric_feature!(atom!("-moz-gtk-csd-hide-titlebar-by-default")), system_metric_feature!(atom!("-moz-gtk-csd-hide-titlebar-by-default")),
system_metric_feature!(atom!("-moz-gtk-csd-transparent-background")), system_metric_feature!(atom!("-moz-gtk-csd-transparent-background")),
system_metric_feature!(atom!("-moz-gtk-csd-minimize-button")), system_metric_feature!(atom!("-moz-gtk-csd-minimize-button")),
system_metric_feature!(atom!("-moz-gtk-csd-maximize-button")), system_metric_feature!(atom!("-moz-gtk-csd-maximize-button")),
system_metric_feature!(atom!("-moz-gtk-csd-close-button")), system_metric_feature!(atom!("-moz-gtk-csd-close-button")),
system_metric_feature!(atom!("-moz-gtk-csd-reversed-placement")), system_metric_feature!(atom!("-moz-gtk-csd-reversed-placement")),
system_metric_feature!(atom!("-moz-system-dark-theme")), system_metric_feature!(atom!("-moz-system-dark-theme")),
// This is the only system-metric media feature that's accessible to // This is the only system-metric media feature that's accessible to
// content as of today. // content as of today.
// FIXME(emilio): Restrict (or remove?) when bug 1035774 lands. // FIXME(emilio): Restrict (or remove?) when bug 1035774 lands.
feature!( feature!(
atom!("-moz-touch-enabled"), atom!("-moz-touch-enabled"),
AllowsRanges::No, AllowsRanges::No,
Evaluator::BoolInteger(eval_moz_touch_enabled), Evaluator::BoolInteger(eval_moz_touch_enabled),
ParsingRequirements::empty(), ParsingRequirements::empty(),
), ),
]; ];
}