aboutsummaryrefslogtreecommitdiffstats
path: root/components/style
diff options
context:
space:
mode:
authorOriol Brufau <obrufau@igalia.com>2023-11-21 22:51:51 +0100
committerMartin Robinson <mrobinson@igalia.com>2023-11-24 08:57:14 +0100
commit68cbe6833d1201ef43c679c5a42192593486a430 (patch)
tree18f5c5865ff53236d0d12b7ab5428a1d9422b9b2 /components/style
parent672815818848a9687ad7320f97aa6b4787825e9a (diff)
downloadservo-68cbe6833d1201ef43c679c5a42192593486a430.tar.gz
servo-68cbe6833d1201ef43c679c5a42192593486a430.zip
Further changes required by Servo
Diffstat (limited to 'components/style')
-rw-r--r--components/style/stylesheets/stylesheet.rs23
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),
}
}