From e74b41cafece287a1b14f39aaffa57d37f649a1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Sat, 27 May 2023 16:22:35 +0200 Subject: [PATCH] style: Add support for chrome-only environment variables This bit is taken straight from D73454 (I reviewed it but I guess another pair of eyes is ok, it's really straight-forward). Co-authored-by: Nicklas Boman Differential Revision: https://phabricator.services.mozilla.com/D128679 --- components/style/custom_properties.rs | 11 ++++++++++- components/style/gecko/media_queries.rs | 6 ++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/components/style/custom_properties.rs b/components/style/custom_properties.rs index df3f9660dd4..a6908bb4cfa 100644 --- a/components/style/custom_properties.rs +++ b/components/style/custom_properties.rs @@ -71,10 +71,19 @@ static ENVIRONMENT_VARIABLES: [EnvironmentVariable; 4] = [ make_variable!(atom!("safe-area-inset-right"), get_safearea_inset_right), ]; +static CHROME_ENVIRONMENT_VARIABLES: [EnvironmentVariable; 0] = [ +]; + impl CssEnvironment { #[inline] fn get(&self, name: &Atom, device: &Device) -> Option { - let var = ENVIRONMENT_VARIABLES.iter().find(|var| var.name == *name)?; + if let Some(var) = ENVIRONMENT_VARIABLES.iter().find(|var| var.name == *name) { + return Some((var.evaluator)(device)); + } + if !device.is_chrome_document() { + return None; + } + let var = CHROME_ENVIRONMENT_VARIABLES.iter().find(|var| var.name == *name)?; Some((var.evaluator)(device)) } } diff --git a/components/style/gecko/media_queries.rs b/components/style/gecko/media_queries.rs index 2f5a9673d4c..2966363a8eb 100644 --- a/components/style/gecko/media_queries.rs +++ b/components/style/gecko/media_queries.rs @@ -439,4 +439,10 @@ impl Device { bindings::Gecko_IsSupportedImageMimeType(mime_type.as_ptr(), mime_type.len() as u32) } } + + /// Return whether the document is a chrome document. + #[inline] + pub fn is_chrome_document(&self) -> bool { + self.pref_sheet_prefs().mIsChrome + } }