Attr nodes are not cloned properly
authorcdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 2 Apr 2019 03:14:50 +0000 (03:14 +0000)
committercdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 2 Apr 2019 03:14:50 +0000 (03:14 +0000)
https://bugs.webkit.org/show_bug.cgi?id=196466

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline WPT test now that one more check is passing.

* web-platform-tests/dom/nodes/Document-importNode-expected.txt:

Source/WebCore:

Attr nodes are not cloned properly according to:
- https://dom.spec.whatwg.org/#concept-node-clone

A cloned Attr node should retain its prefix and namespace.

Both Gecko and Blink agree with the DOM specification here.

No new tests, rebaselined existing test.

* dom/Document.cpp:
(WebCore::Document::importNode):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@243734 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-importNode-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/dom/Document.cpp

index b5166d5..66de0cc 100644 (file)
@@ -1,5 +1,16 @@
 2019-04-01  Chris Dumez  <cdumez@apple.com>
 
+        Attr nodes are not cloned properly
+        https://bugs.webkit.org/show_bug.cgi?id=196466
+
+        Reviewed by Ryosuke Niwa.
+
+        Rebaseline WPT test now that one more check is passing.
+
+        * web-platform-tests/dom/nodes/Document-importNode-expected.txt:
+
+2019-04-01  Chris Dumez  <cdumez@apple.com>
+
         Support "noreferrer" for window.open()
         https://bugs.webkit.org/show_bug.cgi?id=194533
 
index ab03b06..7d06794 100644 (file)
@@ -3,5 +3,5 @@ PASS No 'deep' argument.
 PASS Undefined 'deep' argument. 
 PASS True 'deep' argument. 
 PASS False 'deep' argument. 
-FAIL Import an Attr node with namespace/prefix correctly. assert_equals: expected (string) "p" but got (object) null
+PASS Import an Attr node with namespace/prefix correctly. 
 
index e4b0587..b41c14b 100644 (file)
@@ -1,3 +1,22 @@
+2019-04-01  Chris Dumez  <cdumez@apple.com>
+
+        Attr nodes are not cloned properly
+        https://bugs.webkit.org/show_bug.cgi?id=196466
+
+        Reviewed by Ryosuke Niwa.
+
+        Attr nodes are not cloned properly according to:
+        - https://dom.spec.whatwg.org/#concept-node-clone
+
+        A cloned Attr node should retain its prefix and namespace.
+
+        Both Gecko and Blink agree with the DOM specification here.
+
+        No new tests, rebaselined existing test.
+
+        * dom/Document.cpp:
+        (WebCore::Document::importNode):
+
 2019-04-01  Said Abou-Hallawa  <sabouhallawa@apple.com>
 
         Remove the SVG tear off objects for SVGMatrix, SVGTransfrom, SVGTransformList and SVGAnimatedTransformList
index bd16ed2..4c40929 100644 (file)
@@ -988,10 +988,10 @@ ExceptionOr<Ref<Node>> Document::importNode(Node& nodeToImport, bool deep)
     case COMMENT_NODE:
         return nodeToImport.cloneNodeInternal(document(), deep ? CloningOperation::Everything : CloningOperation::OnlySelf);
 
-    case ATTRIBUTE_NODE:
-        // FIXME: This will "Attr::normalize" child nodes of Attr.
-        return Ref<Node> { Attr::create(*this, QualifiedName(nullAtom(), downcast<Attr>(nodeToImport).name(), nullAtom()), downcast<Attr>(nodeToImport).value()) };
-
+    case ATTRIBUTE_NODE: {
+        auto& attribute = downcast<Attr>(nodeToImport);
+        return Ref<Node> { Attr::create(*this, attribute.qualifiedName(), attribute.value()) };
+    }
     case DOCUMENT_NODE: // Can't import a document into another document.
     case DOCUMENT_TYPE_NODE: // FIXME: Support cloning a DocumentType node per DOM4.
         break;