mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Auto merge of #17501 - jyc:Text-children_changed, r=emilio
Have CharacterData call children_changed on its parent when data is set. **Can't run WPT on my computer, so pushing here to run tests 😢** Have CharacterData.SetData call children_changed on its parent when data is set (if it is a Text node) so that HTMLStyleElement parents can re-parse. Add variant ChildrenMutation::Text for it to use as the mutation. This fixes an issue where an empty <style> element's data is set but the style is not updated. An HTMLStyleElement parent re-parses in its children_changed implementation. <!-- Please describe your changes on the following line: --> --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [X] These changes are part of a series to fix #17182 (github issue number if applicable). <!-- Either: --> - [ ] There are tests for these changes OR - [ ] These changes do not require tests because _____ <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/17501) <!-- Reviewable:end -->
This commit is contained in:
commit
559c0d1d90
8 changed files with 24 additions and 301 deletions
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
use dom::bindings::cell::DOMRefCell;
|
use dom::bindings::cell::DOMRefCell;
|
||||||
use dom::bindings::codegen::Bindings::CharacterDataBinding::CharacterDataMethods;
|
use dom::bindings::codegen::Bindings::CharacterDataBinding::CharacterDataMethods;
|
||||||
|
use dom::bindings::codegen::Bindings::NodeBinding::NodeBinding::NodeMethods;
|
||||||
use dom::bindings::codegen::Bindings::ProcessingInstructionBinding::ProcessingInstructionMethods;
|
use dom::bindings::codegen::Bindings::ProcessingInstructionBinding::ProcessingInstructionMethods;
|
||||||
use dom::bindings::codegen::InheritTypes::{CharacterDataTypeId, NodeTypeId};
|
use dom::bindings::codegen::InheritTypes::{CharacterDataTypeId, NodeTypeId};
|
||||||
use dom::bindings::codegen::UnionTypes::NodeOrString;
|
use dom::bindings::codegen::UnionTypes::NodeOrString;
|
||||||
|
@ -16,9 +17,10 @@ use dom::bindings::str::DOMString;
|
||||||
use dom::comment::Comment;
|
use dom::comment::Comment;
|
||||||
use dom::document::Document;
|
use dom::document::Document;
|
||||||
use dom::element::Element;
|
use dom::element::Element;
|
||||||
use dom::node::{Node, NodeDamage};
|
use dom::node::{ChildrenMutation, Node, NodeDamage};
|
||||||
use dom::processinginstruction::ProcessingInstruction;
|
use dom::processinginstruction::ProcessingInstruction;
|
||||||
use dom::text::Text;
|
use dom::text::Text;
|
||||||
|
use dom::virtualmethods::vtable_for;
|
||||||
use dom_struct::dom_struct;
|
use dom_struct::dom_struct;
|
||||||
use servo_config::opts;
|
use servo_config::opts;
|
||||||
use std::cell::Ref;
|
use std::cell::Ref;
|
||||||
|
@ -85,6 +87,16 @@ impl CharacterDataMethods for CharacterData {
|
||||||
self.content_changed();
|
self.content_changed();
|
||||||
let node = self.upcast::<Node>();
|
let node = self.upcast::<Node>();
|
||||||
node.ranges().replace_code_units(node, 0, old_length, new_length);
|
node.ranges().replace_code_units(node, 0, old_length, new_length);
|
||||||
|
|
||||||
|
// If this is a Text node, we might need to re-parse (say, if our parent
|
||||||
|
// is a <style> element.) We don't need to if this is a Comment or
|
||||||
|
// ProcessingInstruction.
|
||||||
|
if let Some(_) = self.downcast::<Text>() {
|
||||||
|
if let Some(parent_node) = node.GetParentNode() {
|
||||||
|
let mutation = ChildrenMutation::ChangeText;
|
||||||
|
vtable_for(&parent_node).children_changed(&mutation);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://dom.spec.whatwg.org/#dom-characterdata-length
|
// https://dom.spec.whatwg.org/#dom-characterdata-length
|
||||||
|
|
|
@ -2490,6 +2490,11 @@ pub enum ChildrenMutation<'a> {
|
||||||
next: Option<&'a Node>,
|
next: Option<&'a Node>,
|
||||||
},
|
},
|
||||||
ReplaceAll { removed: &'a [&'a Node], added: &'a [&'a Node] },
|
ReplaceAll { removed: &'a [&'a Node], added: &'a [&'a Node] },
|
||||||
|
/// Mutation for when a Text node's data is modified.
|
||||||
|
/// This doesn't change the structure of the list, which is what the other
|
||||||
|
/// variants' fields are stored for at the moment, so this can just have no
|
||||||
|
/// fields.
|
||||||
|
ChangeText,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> ChildrenMutation<'a> {
|
impl<'a> ChildrenMutation<'a> {
|
||||||
|
@ -2541,6 +2546,9 @@ impl<'a> ChildrenMutation<'a> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get the child that follows the added or removed children.
|
/// Get the child that follows the added or removed children.
|
||||||
|
/// Currently only used when this mutation might force us to
|
||||||
|
/// restyle later children (see HAS_SLOW_SELECTOR_LATER_SIBLINGS and
|
||||||
|
/// Element's implementation of VirtualMethods::children_changed).
|
||||||
pub fn next_child(&self) -> Option<&Node> {
|
pub fn next_child(&self) -> Option<&Node> {
|
||||||
match *self {
|
match *self {
|
||||||
ChildrenMutation::Append { .. } => None,
|
ChildrenMutation::Append { .. } => None,
|
||||||
|
@ -2548,6 +2556,7 @@ impl<'a> ChildrenMutation<'a> {
|
||||||
ChildrenMutation::Prepend { next, .. } => Some(next),
|
ChildrenMutation::Prepend { next, .. } => Some(next),
|
||||||
ChildrenMutation::Replace { next, .. } => next,
|
ChildrenMutation::Replace { next, .. } => next,
|
||||||
ChildrenMutation::ReplaceAll { .. } => None,
|
ChildrenMutation::ReplaceAll { .. } => None,
|
||||||
|
ChildrenMutation::ChangeText => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2585,6 +2594,7 @@ impl<'a> ChildrenMutation<'a> {
|
||||||
|
|
||||||
ChildrenMutation::Replace { prev: None, next: None, .. } => unreachable!(),
|
ChildrenMutation::Replace { prev: None, next: None, .. } => unreachable!(),
|
||||||
ChildrenMutation::ReplaceAll { .. } => None,
|
ChildrenMutation::ReplaceAll { .. } => None,
|
||||||
|
ChildrenMutation::ChangeText => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -279,6 +279,7 @@ impl ChildrenList {
|
||||||
self.last_index.set(middle as u32);
|
self.last_index.set(middle as u32);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
ChildrenMutation::ChangeText => {},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,71 +0,0 @@
|
||||||
[test_variable_legal_values.htm]
|
|
||||||
type: testharness
|
|
||||||
[percentage]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[number]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[length]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[time]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[function]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[nested_function]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[parentheses]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[braces]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[brackets]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[at_keyword_unknown]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[at_keyword_known]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[at_keyword_unknown_and_block]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[at_keyword_known_and_block]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[unbalanced_close_bracket_at_toplevel]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[unbalanced_close_paren_at_toplevel]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[unbalanced_close_bracket_in_something_balanced]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[unbalanced_close_paren_in_something_balanced]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[unbalanced_close_brace_in_something_balanced]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[CDO_at_top_level]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[CDC_at_top_level]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[semicolon_not_at_top_level_value_unused]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[CDO_not_at_top_level_value_unused]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[CDC_not_at_top_level_value_unused]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -3,24 +3,6 @@
|
||||||
[:nth-child serialization produces canonical form]
|
[:nth-child serialization produces canonical form]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[single universal selector shows '*' when serialized.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[single type (simple) selector in the sequence of simple selectors that is not a universal selector]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[single class (simple) selector in the sequence of simple selectors that is not a universal selector]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[single id (simple) selector in the sequence of simple selectors that is not a universal selector]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[single pseudo (simple) selector which does not accept arguments in the sequence of simple selectors that is not a universal selector]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[single pseudo (simple) selector "lang" which accepts arguments in the sequence of simple selectors that is not a universal selector]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[single pseudo (simple) selector "nth-child" which accepts arguments in the sequence of simple selectors that is not a universal selector]
|
[single pseudo (simple) selector "nth-child" which accepts arguments in the sequence of simple selectors that is not a universal selector]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -32,7 +14,3 @@
|
||||||
|
|
||||||
[single pseudo (simple) selector ":nth-last-of-type" which accepts arguments in the sequence of simple selectors that is not a universal selector]
|
[single pseudo (simple) selector ":nth-last-of-type" which accepts arguments in the sequence of simple selectors that is not a universal selector]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[single pseudo (simple) selector ":not" which accepts arguments in the sequence of simple selectors that is not a universal selector]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -1,59 +1,11 @@
|
||||||
[serialize-namespaced-type-selectors.htm]
|
[serialize-namespaced-type-selectors.htm]
|
||||||
type: testharness
|
type: testharness
|
||||||
[Simple type selector]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Type selector without a namespace]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Type selector with any namespace]
|
[Type selector with any namespace]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Universal selector]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Universal selector without a namespace]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Universal selector in any namespace]
|
[Universal selector in any namespace]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Type selector with namespace]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Universal selector with namespace]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Simple type selector followed by class]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Simple type selector followed by id]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Simple type selector followed by pseudo class]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Simple type selector followed by pseudo element]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Simple type selector followed by atttribute selector]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Type selector without a namespace followed by class]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Type selector without a namespace followed by id]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Type selector without a namespace followed by pseudo class]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Type selector without a namespace followed by pseudo element]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Type selector without a namespace followed by attribute selector]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Type selector with any namespace followed by class]
|
[Type selector with any namespace followed by class]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -84,21 +36,6 @@
|
||||||
[Universal selector followed by attribute selector]
|
[Universal selector followed by attribute selector]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Universal selector without a namespace followed by class]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Universal selector without a namespace followed by id]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Universal selector without a namespace followed by pseudo class]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Universal selector without a namespace followed by pseudo element]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Universal selector without a namespace followed by attribute selector]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Universal selector in any namespace followed by class]
|
[Universal selector in any namespace followed by class]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -114,36 +51,6 @@
|
||||||
[Universal selector in any namespace followed by attribute selector]
|
[Universal selector in any namespace followed by attribute selector]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Type selector with namespace followed by class]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Type selector with namespace followed by id]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Type selector with namespace followed by pseudo class]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Type selector with namespace followed by pseudo element]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Type selector with namespace followed by attribute selector]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Universal selector with namespace followed by class]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Universal selector with namespace followed by id]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Universal selector with namespace followed by pseudo class]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Universal selector with namespace followed by pseudo element]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Universal selector with namespace followed by attribute selector]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Type selector with namespace equal to default namespace]
|
[Type selector with namespace equal to default namespace]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -3,24 +3,6 @@
|
||||||
[:nth-child serialization produces canonical form]
|
[:nth-child serialization produces canonical form]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[single universal selector shows '*' when serialized.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[single type (simple) selector in the sequence of simple selectors that is not a universal selector]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[single class (simple) selector in the sequence of simple selectors that is not a universal selector]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[single id (simple) selector in the sequence of simple selectors that is not a universal selector]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[single pseudo (simple) selector which does not accept arguments in the sequence of simple selectors that is not a universal selector]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[single pseudo (simple) selector "lang" which accepts arguments in the sequence of simple selectors that is not a universal selector]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[single pseudo (simple) selector "nth-child" which accepts arguments in the sequence of simple selectors that is not a universal selector]
|
[single pseudo (simple) selector "nth-child" which accepts arguments in the sequence of simple selectors that is not a universal selector]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -33,6 +15,3 @@
|
||||||
[single pseudo (simple) selector ":nth-last-of-type" which accepts arguments in the sequence of simple selectors that is not a universal selector]
|
[single pseudo (simple) selector ":nth-last-of-type" which accepts arguments in the sequence of simple selectors that is not a universal selector]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[single pseudo (simple) selector ":not" which accepts arguments in the sequence of simple selectors that is not a universal selector]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -1,59 +1,11 @@
|
||||||
[serialize-namespaced-type-selectors.html]
|
[serialize-namespaced-type-selectors.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
[Simple type selector]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Type selector without a namespace]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Type selector with any namespace]
|
[Type selector with any namespace]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Universal selector]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Universal selector without a namespace]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Universal selector in any namespace]
|
[Universal selector in any namespace]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Type selector with namespace]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Universal selector with namespace]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Simple type selector followed by class]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Simple type selector followed by id]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Simple type selector followed by pseudo class]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Simple type selector followed by pseudo element]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Simple type selector followed by atttribute selector]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Type selector without a namespace followed by class]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Type selector without a namespace followed by id]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Type selector without a namespace followed by pseudo class]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Type selector without a namespace followed by pseudo element]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Type selector without a namespace followed by attribute selector]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Type selector with any namespace followed by class]
|
[Type selector with any namespace followed by class]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -84,21 +36,6 @@
|
||||||
[Universal selector followed by attribute selector]
|
[Universal selector followed by attribute selector]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Universal selector without a namespace followed by class]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Universal selector without a namespace followed by id]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Universal selector without a namespace followed by pseudo class]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Universal selector without a namespace followed by pseudo element]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Universal selector without a namespace followed by attribute selector]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Universal selector in any namespace followed by class]
|
[Universal selector in any namespace followed by class]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -114,36 +51,6 @@
|
||||||
[Universal selector in any namespace followed by attribute selector]
|
[Universal selector in any namespace followed by attribute selector]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Type selector with namespace followed by class]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Type selector with namespace followed by id]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Type selector with namespace followed by pseudo class]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Type selector with namespace followed by pseudo element]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Type selector with namespace followed by attribute selector]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Universal selector with namespace followed by class]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Universal selector with namespace followed by id]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Universal selector with namespace followed by pseudo class]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Universal selector with namespace followed by pseudo element]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Universal selector with namespace followed by attribute selector]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Type selector with namespace equal to default namespace]
|
[Type selector with namespace equal to default namespace]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue