aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/cssrulelist.rs
diff options
context:
space:
mode:
authorSimon Sapin <simon.sapin@exyr.org>2017-03-17 16:46:22 +0100
committerSimon Sapin <simon.sapin@exyr.org>2017-03-19 22:30:36 +0100
commitadb97d4cbefde92b3645619d826ce175a787a069 (patch)
treec202ff995b70d7fd4f8feac0a009a7b839c460ba /components/script/dom/cssrulelist.rs
parentf35b4e27b3e0b748e10662cfb6f18873258483b7 (diff)
downloadservo-adb97d4cbefde92b3645619d826ce175a787a069.tar.gz
servo-adb97d4cbefde92b3645619d826ce175a787a069.zip
Wrap most CSS rules in Locked<_> instead of RwLock<_>
Diffstat (limited to 'components/script/dom/cssrulelist.rs')
-rw-r--r--components/script/dom/cssrulelist.rs15
1 files changed, 7 insertions, 8 deletions
diff --git a/components/script/dom/cssrulelist.rs b/components/script/dom/cssrulelist.rs
index 6321296c785..bc77361b5ae 100644
--- a/components/script/dom/cssrulelist.rs
+++ b/components/script/dom/cssrulelist.rs
@@ -13,7 +13,6 @@ use dom::cssrule::CSSRule;
use dom::cssstylesheet::CSSStyleSheet;
use dom::window::Window;
use dom_struct::dom_struct;
-use parking_lot::RwLock;
use std::sync::Arc;
use style::shared_lock::Locked;
use style::stylesheets::{CssRules, KeyframesRule, RulesMutateError};
@@ -45,19 +44,19 @@ pub struct CSSRuleList {
pub enum RulesSource {
Rules(Arc<Locked<CssRules>>),
- Keyframes(Arc<RwLock<KeyframesRule>>),
+ Keyframes(Arc<Locked<KeyframesRule>>),
}
impl CSSRuleList {
#[allow(unrooted_must_root)]
pub fn new_inherited(parent_stylesheet: &CSSStyleSheet, rules: RulesSource) -> CSSRuleList {
+ let guard = parent_stylesheet.shared_lock().read();
let dom_rules = match rules {
RulesSource::Rules(ref rules) => {
- let guard = parent_stylesheet.shared_lock().read();
rules.read_with(&guard).0.iter().map(|_| MutNullableJS::new(None)).collect()
}
RulesSource::Keyframes(ref rules) => {
- rules.read().keyframes.iter().map(|_| MutNullableJS::new(None)).collect()
+ rules.read_with(&guard).keyframes.iter().map(|_| MutNullableJS::new(None)).collect()
}
};
@@ -104,10 +103,10 @@ impl CSSRuleList {
// In case of a keyframe rule, index must be valid.
pub fn remove_rule(&self, index: u32) -> ErrorResult {
let index = index as usize;
+ let mut guard = self.parent_stylesheet.shared_lock().write();
match self.rules {
RulesSource::Rules(ref css_rules) => {
- let mut guard = self.parent_stylesheet.shared_lock().write();
css_rules.write_with(&mut guard).remove_rule(index)?;
let mut dom_rules = self.dom_rules.borrow_mut();
dom_rules[index].get().map(|r| r.detach());
@@ -119,7 +118,7 @@ impl CSSRuleList {
let mut dom_rules = self.dom_rules.borrow_mut();
dom_rules[index].get().map(|r| r.detach());
dom_rules.remove(index);
- kf.write().keyframes.remove(index);
+ kf.write_with(&mut guard).keyframes.remove(index);
Ok(())
}
}
@@ -136,9 +135,9 @@ impl CSSRuleList {
self.dom_rules.borrow().get(idx as usize).map(|rule| {
rule.or_init(|| {
let parent_stylesheet = &self.parent_stylesheet;
+ let guard = parent_stylesheet.shared_lock().read();
match self.rules {
RulesSource::Rules(ref rules) => {
- let guard = parent_stylesheet.shared_lock().read();
CSSRule::new_specific(self.global().as_window(),
parent_stylesheet,
rules.read_with(&guard).0[idx as usize].clone())
@@ -146,7 +145,7 @@ impl CSSRuleList {
RulesSource::Keyframes(ref rules) => {
Root::upcast(CSSKeyframeRule::new(self.global().as_window(),
parent_stylesheet,
- rules.read()
+ rules.read_with(&guard)
.keyframes[idx as usize]
.clone()))
}