aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/style/Cargo.toml1
-rw-r--r--tests/unit/style/lib.rs2
-rw-r--r--tests/unit/style/owning_handle.rs34
-rw-r--r--tests/unit/style/stylesheets.rs6
-rw-r--r--tests/unit/style/stylist.rs40
5 files changed, 25 insertions, 58 deletions
diff --git a/tests/unit/style/Cargo.toml b/tests/unit/style/Cargo.toml
index 98838676937..7939e617342 100644
--- a/tests/unit/style/Cargo.toml
+++ b/tests/unit/style/Cargo.toml
@@ -17,7 +17,6 @@ app_units = "0.4"
cssparser = "0.12"
euclid = "0.11"
html5ever-atoms = "0.2"
-owning_ref = "0.2.2"
parking_lot = "0.3"
rayon = "0.6"
rustc-serialize = "0.3"
diff --git a/tests/unit/style/lib.rs b/tests/unit/style/lib.rs
index 9d7cdcae651..887de470ffa 100644
--- a/tests/unit/style/lib.rs
+++ b/tests/unit/style/lib.rs
@@ -9,7 +9,6 @@ extern crate app_units;
extern crate cssparser;
extern crate euclid;
#[macro_use] extern crate html5ever_atoms;
-extern crate owning_ref;
extern crate parking_lot;
extern crate rayon;
extern crate rustc_serialize;
@@ -26,7 +25,6 @@ mod attr;
mod keyframes;
mod logical_geometry;
mod media_queries;
-mod owning_handle;
mod parsing;
mod properties;
mod rule_tree;
diff --git a/tests/unit/style/owning_handle.rs b/tests/unit/style/owning_handle.rs
deleted file mode 100644
index cf792ef9605..00000000000
--- a/tests/unit/style/owning_handle.rs
+++ /dev/null
@@ -1,34 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-use owning_ref::RcRef;
-use std::cell::RefCell;
-use std::rc::Rc;
-use std::sync::{Arc, RwLock};
-use style::owning_handle::OwningHandle;
-
-#[test]
-fn owning_handle() {
- use std::cell::RefCell;
- let cell = Rc::new(RefCell::new(2));
- let cell_ref = RcRef::new(cell);
- let mut handle = OwningHandle::new(cell_ref, |x| unsafe { x.as_ref() }.unwrap().borrow_mut());
- assert_eq!(*handle, 2);
- *handle = 3;
- assert_eq!(*handle, 3);
-}
-
-#[test]
-fn nested() {
- let result = {
- let complex = Rc::new(RefCell::new(Arc::new(RwLock::new("someString"))));
- let curr = RcRef::new(complex);
- let curr = OwningHandle::new(curr, |x| unsafe { x.as_ref() }.unwrap().borrow_mut());
- let mut curr = OwningHandle::new(curr, |x| unsafe { x.as_ref() }.unwrap().try_write().unwrap());
- assert_eq!(*curr, "someString");
- *curr = "someOtherString";
- curr
- };
- assert_eq!(*result, "someOtherString");
-}
diff --git a/tests/unit/style/stylesheets.rs b/tests/unit/style/stylesheets.rs
index 99ec3676236..2bcb9b58a77 100644
--- a/tests/unit/style/stylesheets.rs
+++ b/tests/unit/style/stylesheets.rs
@@ -81,7 +81,7 @@ fn test_parse_stylesheet() {
prefix: None,
url: NsAtom::from("http://www.w3.org/1999/xhtml")
}))),
- CssRule::Style(Arc::new(RwLock::new(StyleRule {
+ CssRule::Style(Arc::new(stylesheet.shared_lock.wrap(StyleRule {
selectors: SelectorList(vec![
Selector {
complex_selector: Arc::new(ComplexSelector {
@@ -117,7 +117,7 @@ fn test_parse_stylesheet() {
Importance::Important),
]))),
}))),
- CssRule::Style(Arc::new(RwLock::new(StyleRule {
+ CssRule::Style(Arc::new(stylesheet.shared_lock.wrap(StyleRule {
selectors: SelectorList(vec![
Selector {
complex_selector: Arc::new(ComplexSelector {
@@ -159,7 +159,7 @@ fn test_parse_stylesheet() {
Importance::Normal),
]))),
}))),
- CssRule::Style(Arc::new(RwLock::new(StyleRule {
+ CssRule::Style(Arc::new(stylesheet.shared_lock.wrap(StyleRule {
selectors: SelectorList(vec![
Selector {
complex_selector: Arc::new(ComplexSelector {
diff --git a/tests/unit/style/stylist.rs b/tests/unit/style/stylist.rs
index ab04f2e5dd5..34a7feff965 100644
--- a/tests/unit/style/stylist.rs
+++ b/tests/unit/style/stylist.rs
@@ -11,17 +11,19 @@ use style::properties::{PropertyDeclarationBlock, PropertyDeclaration};
use style::properties::{longhands, Importance};
use style::rule_tree::CascadeLevel;
use style::selector_parser::SelectorParser;
+use style::shared_lock::SharedRwLock;
use style::stylesheets::StyleRule;
use style::stylist::{Rule, SelectorMap};
use style::thread_state;
/// Helper method to get some Rules from selector strings.
/// Each sublist of the result contains the Rules for one StyleRule.
-fn get_mock_rules(css_selectors: &[&str]) -> Vec<Vec<Rule>> {
- css_selectors.iter().enumerate().map(|(i, selectors)| {
+fn get_mock_rules(css_selectors: &[&str]) -> (Vec<Vec<Rule>>, SharedRwLock) {
+ let shared_lock = SharedRwLock::new();
+ (css_selectors.iter().enumerate().map(|(i, selectors)| {
let selectors = SelectorParser::parse_author_origin_no_namespace(selectors).unwrap();
- let rule = Arc::new(RwLock::new(StyleRule {
+ let locked = Arc::new(shared_lock.wrap(StyleRule {
selectors: selectors,
block: Arc::new(RwLock::new(PropertyDeclarationBlock::with_one(
PropertyDeclaration::Display(
@@ -30,21 +32,22 @@ fn get_mock_rules(css_selectors: &[&str]) -> Vec<Vec<Rule>> {
))),
}));
- let guard = rule.read();
- guard.selectors.0.iter().map(|s| {
+ let guard = shared_lock.read();
+ let rule = locked.read_with(&guard);
+ rule.selectors.0.iter().map(|s| {
Rule {
selector: s.complex_selector.clone(),
- style_rule: rule.clone(),
+ style_rule: locked.clone(),
specificity: s.specificity,
source_order: i,
}
}).collect()
- }).collect()
+ }).collect(), shared_lock)
}
-fn get_mock_map(selectors: &[&str]) -> SelectorMap {
+fn get_mock_map(selectors: &[&str]) -> (SelectorMap, SharedRwLock) {
let mut map = SelectorMap::new();
- let selector_rules = get_mock_rules(selectors);
+ let (selector_rules, shared_lock) = get_mock_rules(selectors);
for rules in selector_rules.into_iter() {
for rule in rules.into_iter() {
@@ -52,12 +55,12 @@ fn get_mock_map(selectors: &[&str]) -> SelectorMap {
}
}
- map
+ (map, shared_lock)
}
#[test]
fn test_rule_ordering_same_specificity() {
- let rules_list = get_mock_rules(&["a.intro", "img.sidebar"]);
+ let (rules_list, _) = get_mock_rules(&["a.intro", "img.sidebar"]);
let a = &rules_list[0][0];
let b = &rules_list[1][0];
assert!((a.specificity, a.source_order) < ((b.specificity, b.source_order)),
@@ -67,21 +70,21 @@ fn test_rule_ordering_same_specificity() {
#[test]
fn test_get_id_name() {
- let rules_list = get_mock_rules(&[".intro", "#top"]);
+ let (rules_list, _) = get_mock_rules(&[".intro", "#top"]);
assert_eq!(SelectorMap::get_id_name(&rules_list[0][0]), None);
assert_eq!(SelectorMap::get_id_name(&rules_list[1][0]), Some(Atom::from("top")));
}
#[test]
fn test_get_class_name() {
- let rules_list = get_mock_rules(&[".intro.foo", "#top"]);
+ let (rules_list, _) = get_mock_rules(&[".intro.foo", "#top"]);
assert_eq!(SelectorMap::get_class_name(&rules_list[0][0]), Some(Atom::from("intro")));
assert_eq!(SelectorMap::get_class_name(&rules_list[1][0]), None);
}
#[test]
fn test_get_local_name() {
- let rules_list = get_mock_rules(&["img.foo", "#top", "IMG", "ImG"]);
+ let (rules_list, _) = get_mock_rules(&["img.foo", "#top", "IMG", "ImG"]);
let check = |i: usize, names: Option<(&str, &str)>| {
assert!(SelectorMap::get_local_name(&rules_list[i][0])
== names.map(|(name, lower_name)| LocalNameSelector {
@@ -96,7 +99,7 @@ fn test_get_local_name() {
#[test]
fn test_insert() {
- let rules_list = get_mock_rules(&[".intro.foo", "#top"]);
+ let (rules_list, _) = get_mock_rules(&[".intro.foo", "#top"]);
let mut selector_map = SelectorMap::new();
selector_map.insert(rules_list[1][0].clone());
assert_eq!(1, selector_map.id_hash.get(&Atom::from("top")).unwrap()[0].source_order);
@@ -108,10 +111,11 @@ fn test_insert() {
#[test]
fn test_get_universal_rules() {
thread_state::initialize(thread_state::LAYOUT);
- let map = get_mock_map(&["*|*", "#foo > *|*", ".klass", "#id"]);
+ let (map, shared_lock) = get_mock_map(&["*|*", "#foo > *|*", ".klass", "#id"]);
- let decls = map.get_universal_rules(CascadeLevel::UserNormal,
- CascadeLevel::UserImportant);
+ let guard = shared_lock.read();
+ let decls = map.get_universal_rules(
+ &guard, CascadeLevel::UserNormal, CascadeLevel::UserImportant);
assert_eq!(decls.len(), 1);
}