mirror of
https://github.com/servo/servo.git
synced 2025-08-04 13:10:20 +01:00
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
This commit is contained in:
parent
d85ee09bc7
commit
973918967f
14 changed files with 145 additions and 47 deletions
|
@ -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"
|
||||
|
|
|
@ -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)]
|
||||
|
|
|
@ -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<A: JSTraceable, B: JSTraceable, C: JSTraceable> 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<T>);
|
||||
|
|
|
@ -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<JS<NamedNodeMap>>,
|
||||
class_list: MutNullableHeap<JS<DOMTokenList>>,
|
||||
state: Cell<ElementState>,
|
||||
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<Element> {
|
||||
|
@ -583,6 +587,14 @@ impl LayoutElementHelpers for LayoutJS<Element> {
|
|||
(*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::<Node>().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::<Element>() {
|
||||
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<Element> {
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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<Root<Node>> {
|
||||
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::<Element>()).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::<Element>()).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::<Element>()) {
|
||||
// Before the first element: Return the first following element.
|
||||
next.inclusively_following_siblings().filter(|node| node.is::<Element>()).next()
|
||||
} else if next.inclusively_following_siblings().all(|node| !node.is::<Element>()) {
|
||||
// After the last element: Return the last preceding element.
|
||||
prev.inclusively_preceding_siblings().filter(|node| node.is::<Element>()).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
|
||||
|
|
14
components/servo/Cargo.lock
generated
14
components/servo/Cargo.lock
generated
|
@ -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)",
|
||||
|
|
12
ports/cef/Cargo.lock
generated
12
ports/cef/Cargo.lock
generated
|
@ -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)",
|
||||
|
|
10
ports/geckolib/Cargo.lock
generated
10
ports/geckolib/Cargo.lock
generated
|
@ -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)",
|
||||
|
|
12
ports/gonk/Cargo.lock
generated
12
ports/gonk/Cargo.lock
generated
|
@ -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)",
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
[transform-stacking-003.htm]
|
||||
type: reftest
|
||||
disabled: https://github.com/servo/servo/issues/9303
|
|
@ -1,3 +0,0 @@
|
|||
[transform-stacking-004.htm]
|
||||
type: reftest
|
||||
disabled: https://github.com/servo/servo/issues/9448
|
|
@ -1,3 +0,0 @@
|
|||
[last_of_type_pseudo_a.html]
|
||||
type: reftest
|
||||
disabled: https://github.com/servo/servo/issues/8191
|
|
@ -1,3 +0,0 @@
|
|||
[nth_last_of_type_pseudo_a.html]
|
||||
type: reftest
|
||||
disabled: https://github.com/servo/servo/issues/9063
|
Loading…
Add table
Add a link
Reference in a new issue