From 973918967f606d723fb7b71e14d682b16fa50e9d Mon Sep 17 00:00:00 2001 From: Matt Brubeck Date: Fri, 19 Feb 2016 17:05:38 -0800 Subject: [PATCH] Dirty elements whose selectors are affected by sibling changes This fixes incremental layout of nodes that match pseudo-class selectors such as :first-child, :nth-child, :last-child, :first-of-type, etc. * Fixes #8191 * Fixes #9063 * Fixes #9303 * Fixes #9448 This code is based on the following flags from Gecko: https://hg.mozilla.org/mozilla-central/file/e1cf617a1f28/dom/base/nsINode.h#l134 --- components/layout/Cargo.toml | 2 +- components/layout/wrapper.rs | 6 +- components/script/dom/bindings/trace.rs | 4 +- components/script/dom/element.rs | 64 ++++++++++++++++++- components/script/dom/node.rs | 48 ++++++++++++++ components/servo/Cargo.lock | 14 ++-- ports/cef/Cargo.lock | 12 ++-- ports/geckolib/Cargo.lock | 10 +-- ports/gonk/Cargo.lock | 12 ++-- tests/unit/script/size_of.rs | 8 +-- .../html/transform-stacking-003.htm.ini | 3 - .../html/transform-stacking-004.htm.ini | 3 - .../meta/css/last_of_type_pseudo_a.html.ini | 3 - .../css/nth_last_of_type_pseudo_a.html.ini | 3 - 14 files changed, 145 insertions(+), 47 deletions(-) delete mode 100644 tests/wpt/metadata-css/css-transforms-1_dev/html/transform-stacking-003.htm.ini delete mode 100644 tests/wpt/metadata-css/css-transforms-1_dev/html/transform-stacking-004.htm.ini delete mode 100644 tests/wpt/mozilla/meta/css/last_of_type_pseudo_a.html.ini delete mode 100644 tests/wpt/mozilla/meta/css/nth_last_of_type_pseudo_a.html.ini diff --git a/components/layout/Cargo.toml b/components/layout/Cargo.toml index e58cac00aa5..4cc5b177b46 100644 --- a/components/layout/Cargo.toml +++ b/components/layout/Cargo.toml @@ -70,7 +70,7 @@ heapsize_plugin = "0.1.2" libc = "0.2" log = "0.3" rustc-serialize = "0.3" -selectors = {version = "0.5", features = ["heap_size"]} +selectors = {version = "0.5.1", features = ["heap_size"]} serde = "0.6" serde_json = "0.6" serde_macros = "0.6" diff --git a/components/layout/wrapper.rs b/components/layout/wrapper.rs index 3174bed38a4..8188577b0b0 100644 --- a/components/layout/wrapper.rs +++ b/components/layout/wrapper.rs @@ -53,7 +53,7 @@ use script::dom::node::{CAN_BE_FRAGMENTED, HAS_CHANGED, HAS_DIRTY_DESCENDANTS, I use script::dom::node::{LayoutNodeHelpers, Node, OpaqueStyleAndLayoutData}; use script::dom::text::Text; use script::layout_interface::TrustedNodeAddress; -use selectors::matching::DeclarationBlock; +use selectors::matching::{DeclarationBlock, ElementFlags}; use selectors::parser::{AttrSelector, NamespaceConstraint}; use smallvec::VecLike; use std::borrow::ToOwned; @@ -604,6 +604,10 @@ impl<'le> ::selectors::Element for ServoLayoutElement<'le> { self.element.html_element_in_html_document_for_layout() } } + + fn insert_flags(&self, flags: ElementFlags) { + self.element.insert_atomic_flags(flags); + } } #[derive(Copy, PartialEq, Clone)] diff --git a/components/script/dom/bindings/trace.rs b/components/script/dom/bindings/trace.rs index f892b1f955b..a318ca00cb5 100644 --- a/components/script/dom/bindings/trace.rs +++ b/components/script/dom/bindings/trace.rs @@ -79,7 +79,7 @@ use std::mem; use std::ops::{Deref, DerefMut}; use std::rc::Rc; use std::sync::Arc; -use std::sync::atomic::AtomicBool; +use std::sync::atomic::{AtomicBool, AtomicUsize}; use std::sync::mpsc::{Receiver, Sender}; use string_cache::{Atom, Namespace, QualName}; use style::attr::{AttrIdentifier, AttrValue}; @@ -265,7 +265,7 @@ impl JSTraceable for (A, B, C) { } } -no_jsmanaged_fields!(bool, f32, f64, String, Url, AtomicBool, Uuid); +no_jsmanaged_fields!(bool, f32, f64, String, Url, AtomicBool, AtomicUsize, Uuid); no_jsmanaged_fields!(usize, u8, u16, u32, u64); no_jsmanaged_fields!(isize, i8, i16, i32, i64); no_jsmanaged_fields!(Sender); diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index 3cdf3f6ba43..60ed7338e9e 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -54,7 +54,7 @@ use dom::htmltablesectionelement::{HTMLTableSectionElement, HTMLTableSectionElem use dom::htmltemplateelement::HTMLTemplateElement; use dom::htmltextareaelement::{HTMLTextAreaElement, LayoutHTMLTextAreaElementHelpers}; use dom::namednodemap::NamedNodeMap; -use dom::node::{CLICK_IN_PROGRESS, LayoutNodeHelpers, Node}; +use dom::node::{CLICK_IN_PROGRESS, ChildrenMutation, LayoutNodeHelpers, Node}; use dom::node::{NodeDamage, SEQUENTIALLY_FOCUSABLE, UnbindContext}; use dom::node::{document_from_node, window_from_node}; use dom::nodelist::NodeList; @@ -65,7 +65,8 @@ use html5ever::serialize::SerializeOpts; use html5ever::serialize::TraversalScope; use html5ever::serialize::TraversalScope::{ChildrenOnly, IncludeNode}; use html5ever::tree_builder::{LimitedQuirks, NoQuirks, Quirks}; -use selectors::matching::{DeclarationBlock, matches}; +use selectors::matching::{DeclarationBlock, ElementFlags, matches}; +use selectors::matching::{HAS_SLOW_SELECTOR, HAS_EDGE_CHILD_SELECTOR, HAS_SLOW_SELECTOR_LATER_SIBLINGS}; use selectors::matching::{common_style_affecting_attributes, rare_style_affecting_attributes}; use selectors::parser::{AttrSelector, NamespaceConstraint, parse_author_origin_selector_list_from_str}; use smallvec::VecLike; @@ -75,6 +76,7 @@ use std::cell::{Cell, Ref}; use std::default::Default; use std::mem; use std::sync::Arc; +use std::sync::atomic::{AtomicUsize, Ordering}; use string_cache::{Atom, Namespace, QualName}; use style::element_state::*; use style::error_reporting::ParseErrorReporter; @@ -102,6 +104,7 @@ pub struct Element { attr_list: MutNullableHeap>, class_list: MutNullableHeap>, state: Cell, + atomic_flags: AtomicElementFlags, } #[derive(PartialEq, HeapSizeOf)] @@ -143,6 +146,7 @@ impl Element { attr_list: Default::default(), class_list: Default::default(), state: Cell::new(state), + atomic_flags: AtomicElementFlags::new(), } } @@ -229,8 +233,8 @@ pub trait LayoutElementHelpers { fn namespace(&self) -> &Namespace; fn get_checked_state_for_layout(&self) -> bool; fn get_indeterminate_state_for_layout(&self) -> bool; - fn get_state_for_layout(&self) -> ElementState; + fn insert_atomic_flags(&self, flags: ElementFlags); } impl LayoutElementHelpers for LayoutJS { @@ -583,6 +587,14 @@ impl LayoutElementHelpers for LayoutJS { (*self.unsafe_get()).state.get() } } + + #[inline] + #[allow(unsafe_code)] + fn insert_atomic_flags(&self, flags: ElementFlags) { + unsafe { + (*self.unsafe_get()).atomic_flags.insert(flags); + } + } } #[derive(PartialEq, Eq, Copy, Clone, HeapSizeOf)] @@ -1687,6 +1699,33 @@ impl VirtualMethods for Element { doc.unregister_named_element(self, value.clone()); } } + + fn children_changed(&self, mutation: &ChildrenMutation) { + if let Some(ref s) = self.super_type() { + s.children_changed(mutation); + } + + let flags = self.atomic_flags.get(); + if flags.intersects(HAS_SLOW_SELECTOR) { + // All children of this node need to be restyled when any child changes. + self.upcast::().dirty(NodeDamage::OtherNodeDamage); + } else { + if flags.intersects(HAS_SLOW_SELECTOR_LATER_SIBLINGS) { + if let Some(next_child) = mutation.next_child() { + for child in next_child.inclusively_following_siblings() { + if child.is::() { + child.dirty(NodeDamage::OtherNodeDamage); + } + } + } + } + if flags.intersects(HAS_EDGE_CHILD_SELECTOR) { + if let Some(child) = mutation.modified_edge_element() { + child.dirty(NodeDamage::OtherNodeDamage); + } + } + } + } } impl<'a> ::selectors::Element for Root { @@ -2071,3 +2110,22 @@ impl<'a> AttributeMutation<'a> { } } } + +/// Thread-safe wrapper for ElementFlags set during selector matching +#[derive(JSTraceable, HeapSizeOf)] +struct AtomicElementFlags(AtomicUsize); + +impl AtomicElementFlags { + fn new() -> Self { + AtomicElementFlags(AtomicUsize::new(0)) + } + + fn get(&self) -> ElementFlags { + ElementFlags::from_bits_truncate(self.0.load(Ordering::Relaxed) as u8) + } + + fn insert(&self, flags: ElementFlags) { + self.0.fetch_or(flags.bits() as usize, Ordering::Relaxed); + } +} + diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index c2221408b13..f1ebf6f9965 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -2399,6 +2399,54 @@ impl<'a> ChildrenMutation<'a> { -> ChildrenMutation<'a> { ChildrenMutation::ReplaceAll { removed: removed, added: added } } + + /// Get the child that follows the added or removed children. + pub fn next_child(&self) -> Option<&Node> { + match *self { + ChildrenMutation::Append { .. } => None, + ChildrenMutation::Insert { next, .. } => Some(next), + ChildrenMutation::Prepend { next, .. } => Some(next), + ChildrenMutation::Replace { next, .. } => next, + ChildrenMutation::ReplaceAll { .. } => None, + } + } + + /// If nodes were added or removed at the start or end of a container, return any + /// previously-existing child whose ":first-child" or ":last-child" status *may* have changed. + /// + /// NOTE: This does not check whether the inserted/removed nodes were elements, so in some + /// cases it will return a false positive. This doesn't matter for correctness, because at + /// worst the returned element will be restyled unnecessarily. + pub fn modified_edge_element(&self) -> Option> { + match *self { + // Add/remove at start of container: Return the first following element. + ChildrenMutation::Prepend { next, .. } | + ChildrenMutation::Replace { prev: None, next: Some(next), .. } => { + next.inclusively_following_siblings().filter(|node| node.is::()).next() + } + // Add/remove at end of container: Return the last preceding element. + ChildrenMutation::Append { prev, .. } | + ChildrenMutation::Replace { prev: Some(prev), next: None, .. } => { + prev.inclusively_preceding_siblings().filter(|node| node.is::()).next() + } + // Insert or replace in the middle: + ChildrenMutation::Insert { prev, next, .. } | + ChildrenMutation::Replace { prev: Some(prev), next: Some(next), .. } => { + if prev.inclusively_preceding_siblings().all(|node| !node.is::()) { + // Before the first element: Return the first following element. + next.inclusively_following_siblings().filter(|node| node.is::()).next() + } else if next.inclusively_following_siblings().all(|node| !node.is::()) { + // After the last element: Return the last preceding element. + prev.inclusively_preceding_siblings().filter(|node| node.is::()).next() + } else { + None + } + } + + ChildrenMutation::Replace { prev: None, next: None, .. } => unreachable!(), + ChildrenMutation::ReplaceAll { .. } => None, + } + } } /// The context of the unbinding from a tree of a node when one of its diff --git a/components/servo/Cargo.lock b/components/servo/Cargo.lock index 8eaa580cf56..f6a542f4723 100644 --- a/components/servo/Cargo.lock +++ b/components/servo/Cargo.lock @@ -1011,7 +1011,7 @@ dependencies = [ "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "script 0.0.1", "script_traits 0.0.1", - "selectors 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1619,7 +1619,7 @@ dependencies = [ "ref_slice 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "script_traits 0.0.1", - "selectors 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1670,7 +1670,7 @@ dependencies = [ [[package]] name = "selectors" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1884,7 +1884,7 @@ dependencies = [ "num 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "plugins 0.0.1", "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", - "selectors 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1904,7 +1904,7 @@ dependencies = [ "euclid 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "plugins 0.0.1", - "selectors 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", "style 0.0.1", "style_traits 0.0.1", @@ -1925,7 +1925,7 @@ dependencies = [ "num 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "plugins 0.0.1", "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", - "selectors 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2088,7 +2088,7 @@ dependencies = [ "plugins 0.0.1", "rand 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", - "selectors 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/ports/cef/Cargo.lock b/ports/cef/Cargo.lock index 279a83c564b..e706ece5ca9 100644 --- a/ports/cef/Cargo.lock +++ b/ports/cef/Cargo.lock @@ -941,7 +941,7 @@ dependencies = [ "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "script 0.0.1", "script_traits 0.0.1", - "selectors 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1505,7 +1505,7 @@ dependencies = [ "ref_slice 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "script_traits 0.0.1", - "selectors 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1547,7 +1547,7 @@ dependencies = [ [[package]] name = "selectors" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1798,7 +1798,7 @@ dependencies = [ "num 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "plugins 0.0.1", "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", - "selectors 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1822,7 +1822,7 @@ dependencies = [ "num 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "plugins 0.0.1", "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", - "selectors 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1985,7 +1985,7 @@ dependencies = [ "plugins 0.0.1", "rand 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", - "selectors 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/ports/geckolib/Cargo.lock b/ports/geckolib/Cargo.lock index ce253cf884a..3a91617c19a 100644 --- a/ports/geckolib/Cargo.lock +++ b/ports/geckolib/Cargo.lock @@ -13,7 +13,7 @@ dependencies = [ "log 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "plugins 0.0.1", - "selectors 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", "style 0.0.1", @@ -352,7 +352,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "selectors" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -429,7 +429,7 @@ dependencies = [ "num 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "plugins 0.0.1", "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", - "selectors 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -453,7 +453,7 @@ dependencies = [ "num 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "plugins 0.0.1", "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", - "selectors 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -537,7 +537,7 @@ dependencies = [ "plugins 0.0.1", "rand 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", - "selectors 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/ports/gonk/Cargo.lock b/ports/gonk/Cargo.lock index a3c34aaf46f..ccbce4797dc 100644 --- a/ports/gonk/Cargo.lock +++ b/ports/gonk/Cargo.lock @@ -922,7 +922,7 @@ dependencies = [ "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "script 0.0.1", "script_traits 0.0.1", - "selectors 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1486,7 +1486,7 @@ dependencies = [ "ref_slice 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "script_traits 0.0.1", - "selectors 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1528,7 +1528,7 @@ dependencies = [ [[package]] name = "selectors" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1777,7 +1777,7 @@ dependencies = [ "num 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "plugins 0.0.1", "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", - "selectors 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1801,7 +1801,7 @@ dependencies = [ "num 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "plugins 0.0.1", "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", - "selectors 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1964,7 +1964,7 @@ dependencies = [ "plugins 0.0.1", "rand 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", - "selectors 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/tests/unit/script/size_of.rs b/tests/unit/script/size_of.rs index f760d610862..1550ca558d1 100644 --- a/tests/unit/script/size_of.rs +++ b/tests/unit/script/size_of.rs @@ -39,9 +39,9 @@ macro_rules! sizeof_checker ( // Update the sizes here sizeof_checker!(size_event_target, EventTarget, 40); sizeof_checker!(size_node, Node, 160); -sizeof_checker!(size_element, Element, 304); -sizeof_checker!(size_htmlelement, HTMLElement, 320); -sizeof_checker!(size_div, HTMLDivElement, 320); -sizeof_checker!(size_span, HTMLSpanElement, 320); +sizeof_checker!(size_element, Element, 312); +sizeof_checker!(size_htmlelement, HTMLElement, 328); +sizeof_checker!(size_div, HTMLDivElement, 328); +sizeof_checker!(size_span, HTMLSpanElement, 328); sizeof_checker!(size_text, Text, 192); sizeof_checker!(size_characterdata, CharacterData, 192); diff --git a/tests/wpt/metadata-css/css-transforms-1_dev/html/transform-stacking-003.htm.ini b/tests/wpt/metadata-css/css-transforms-1_dev/html/transform-stacking-003.htm.ini deleted file mode 100644 index 4c6d5b6268e..00000000000 --- a/tests/wpt/metadata-css/css-transforms-1_dev/html/transform-stacking-003.htm.ini +++ /dev/null @@ -1,3 +0,0 @@ -[transform-stacking-003.htm] - type: reftest - disabled: https://github.com/servo/servo/issues/9303 diff --git a/tests/wpt/metadata-css/css-transforms-1_dev/html/transform-stacking-004.htm.ini b/tests/wpt/metadata-css/css-transforms-1_dev/html/transform-stacking-004.htm.ini deleted file mode 100644 index a2120be469c..00000000000 --- a/tests/wpt/metadata-css/css-transforms-1_dev/html/transform-stacking-004.htm.ini +++ /dev/null @@ -1,3 +0,0 @@ -[transform-stacking-004.htm] - type: reftest - disabled: https://github.com/servo/servo/issues/9448 diff --git a/tests/wpt/mozilla/meta/css/last_of_type_pseudo_a.html.ini b/tests/wpt/mozilla/meta/css/last_of_type_pseudo_a.html.ini deleted file mode 100644 index d6ec5f81866..00000000000 --- a/tests/wpt/mozilla/meta/css/last_of_type_pseudo_a.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[last_of_type_pseudo_a.html] - type: reftest - disabled: https://github.com/servo/servo/issues/8191 diff --git a/tests/wpt/mozilla/meta/css/nth_last_of_type_pseudo_a.html.ini b/tests/wpt/mozilla/meta/css/nth_last_of_type_pseudo_a.html.ini deleted file mode 100644 index 6ca29977868..00000000000 --- a/tests/wpt/mozilla/meta/css/nth_last_of_type_pseudo_a.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[nth_last_of_type_pseudo_a.html] - type: reftest - disabled: https://github.com/servo/servo/issues/9063