diff options
author | Oriol Brufau <obrufau@igalia.com> | 2023-11-21 22:51:51 +0100 |
---|---|---|
committer | Martin Robinson <mrobinson@igalia.com> | 2023-11-24 08:57:14 +0100 |
commit | 68cbe6833d1201ef43c679c5a42192593486a430 (patch) | |
tree | 18f5c5865ff53236d0d12b7ab5428a1d9422b9b2 /components/style | |
parent | 672815818848a9687ad7320f97aa6b4787825e9a (diff) | |
download | servo-68cbe6833d1201ef43c679c5a42192593486a430.tar.gz servo-68cbe6833d1201ef43c679c5a42192593486a430.zip |
Further changes required by Servo
Diffstat (limited to 'components/style')
-rw-r--r-- | components/style/stylesheets/stylesheet.rs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/components/style/stylesheets/stylesheet.rs b/components/style/stylesheets/stylesheet.rs index 2f0cbdcdfbb..3994e5cab68 100644 --- a/components/style/stylesheets/stylesheet.rs +++ b/components/style/stylesheets/stylesheet.rs @@ -218,6 +218,26 @@ macro_rules! rule_filter { use crate::stylesheets::CssRule; for rule in self.effective_rules(device, guard) { + if let CssRule::$variant(ref lock) = *rule { + let rule = lock.read_with(guard); + f(&rule) + } + } + } + )+ + } +} + +macro_rules! rule_filter_for_non_locked { + ($( $method: ident($variant:ident => $rule_type: ident), )+) => { + $( + #[allow(missing_docs)] + fn $method<F>(&self, device: &Device, guard: &SharedRwLockReadGuard, mut f: F) + where F: FnMut(&crate::stylesheets::$rule_type), + { + use crate::stylesheets::CssRule; + + for rule in self.effective_rules(device, guard) { if let CssRule::$variant(ref rule) = *rule { f(&rule) } @@ -283,6 +303,9 @@ pub trait StylesheetInDocument: ::std::fmt::Debug { rule_filter! { effective_font_face_rules(FontFace => FontFaceRule), + } + + rule_filter_for_non_locked! { effective_viewport_rules(Viewport => ViewportRule), } } |