aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/node.rs2
-rw-r--r--tests/wpt/metadata/dom/nodes/Node-isEqualNode.xhtml.ini5
-rw-r--r--tests/wpt/web-platform-tests/dom/nodes/Node-isEqualNode.xhtml24
3 files changed, 29 insertions, 2 deletions
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs
index 21c427d07b1..3fc51c10fff 100644
--- a/components/script/dom/node.rs
+++ b/components/script/dom/node.rs
@@ -2368,8 +2368,8 @@ impl<'a> NodeMethods for &'a Node {
fn is_equal_element(node: &Node, other: &Node) -> bool {
let element: &Element = ElementCast::to_ref(node).unwrap();
let other_element: &Element = ElementCast::to_ref(other).unwrap();
- // FIXME: namespace prefix
(*element.namespace() == *other_element.namespace()) &&
+ (*element.prefix() == *other_element.prefix()) &&
(*element.local_name() == *other_element.local_name()) &&
(element.attrs().len() == other_element.attrs().len())
}
diff --git a/tests/wpt/metadata/dom/nodes/Node-isEqualNode.xhtml.ini b/tests/wpt/metadata/dom/nodes/Node-isEqualNode.xhtml.ini
index 7109edb353f..9e796d48fd6 100644
--- a/tests/wpt/metadata/dom/nodes/Node-isEqualNode.xhtml.ini
+++ b/tests/wpt/metadata/dom/nodes/Node-isEqualNode.xhtml.ini
@@ -1,3 +1,6 @@
[Node-isEqualNode.xhtml]
type: testharness
- disabled: xml
+ expected: TIMEOUT
+ [isEqualNode should return true when only the internal subsets of DocumentTypes differ.]
+ expected: NOTRUN
+
diff --git a/tests/wpt/web-platform-tests/dom/nodes/Node-isEqualNode.xhtml b/tests/wpt/web-platform-tests/dom/nodes/Node-isEqualNode.xhtml
index d33406a74cf..47423473b69 100644
--- a/tests/wpt/web-platform-tests/dom/nodes/Node-isEqualNode.xhtml
+++ b/tests/wpt/web-platform-tests/dom/nodes/Node-isEqualNode.xhtml
@@ -34,6 +34,30 @@ test(function() {
}, "isEqualNode should return true when the attributes are in a different order")
test(function() {
+ var a = document.createElementNS("ns", "prefix:foo")
+ var b = document.createElementNS("ns", "prefix:foo")
+ assert_true(a.isEqualNode(b))
+}, "isEqualNode should return true if elements have same namespace, prefix, and local name")
+
+test(function() {
+ var a = document.createElementNS("ns1", "prefix:foo")
+ var b = document.createElementNS("ns2", "prefix:foo")
+ assert_false(a.isEqualNode(b))
+}, "isEqualNode should return false if elements have different namespace")
+
+test(function() {
+ var a = document.createElementNS("ns", "prefix1:foo")
+ var b = document.createElementNS("ns", "prefix2:foo")
+ assert_false(a.isEqualNode(b))
+}, "isEqualNode should return false if elements have different prefix")
+
+test(function() {
+ var a = document.createElementNS("ns", "prefix:foo1")
+ var b = document.createElementNS("ns", "prefix:foo2")
+ assert_false(a.isEqualNode(b))
+}, "isEqualNode should return false if elements have different local name")
+
+test(function() {
var a = document.createElement("foo")
a.setAttributeNS("ns", "x:a", "bar")
var b = document.createElement("foo")