<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[196079] trunk/LayoutTests/imported/w3c</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/196079">196079</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2016-02-03 13:54:36 -0800 (Wed, 03 Feb 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Re-sync W3C DOM web-platform-tests
https://bugs.webkit.org/show_bug.cgi?id=153831

Reviewed by Darin Adler.

Re-sync W3C DOM web-platform-tests from:
https://github.com/w3c/web-platform-tests/tree/master/dom

* web-platform-tests/dom/collections/domstringmap-supported-property-names-expected.txt: Added.
* web-platform-tests/dom/collections/domstringmap-supported-property-names.html: Added.
* web-platform-tests/dom/collections/namednodemap-supported-property-names-expected.txt: Added.
* web-platform-tests/dom/collections/namednodemap-supported-property-names.html: Added.
* web-platform-tests/dom/collections/w3c-import.log:
* web-platform-tests/dom/events/Event-dispatch-propagation-stopped-expected.txt: Added.
* web-platform-tests/dom/events/Event-dispatch-propagation-stopped.html: Added.
* web-platform-tests/dom/events/w3c-import.log:
* web-platform-tests/dom/historical-expected.txt:
* web-platform-tests/dom/historical.html:
* web-platform-tests/dom/interface-objects-expected.txt:
* web-platform-tests/dom/interface-objects.html:
* web-platform-tests/dom/interfaces-expected.txt:
* web-platform-tests/dom/interfaces.html:
* web-platform-tests/dom/nodes/DOMImplementation-createDocument-expected.txt:
* web-platform-tests/dom/nodes/DOMImplementation-createDocument.html:
* web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.html: Added.
* web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.svg: Added.
* web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.xhtml: Added.
* web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.xml: Added.
* web-platform-tests/dom/nodes/Element-classlist-expected.txt:
* web-platform-tests/dom/nodes/Element-classlist.html:
* web-platform-tests/dom/nodes/Node-contains-xhtml-expected.txt: Added.
* web-platform-tests/dom/nodes/Node-contains-xhtml.xhtml: Added.
* web-platform-tests/dom/nodes/Node-isEqualNode-expected.txt:
* web-platform-tests/dom/nodes/Node-isEqualNode-xhtml-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-expected.txt.
* web-platform-tests/dom/nodes/Node-isEqualNode-xhtml.xhtml: Renamed from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode.xhtml.
* web-platform-tests/dom/nodes/Node-isEqualNode.html: Added.
* web-platform-tests/dom/nodes/attributes-expected.txt:
* web-platform-tests/dom/nodes/attributes.html:
* web-platform-tests/dom/nodes/w3c-import.log:
* web-platform-tests/dom/ranges/Range-constructor-expected.txt: Added.
* web-platform-tests/dom/ranges/Range-constructor.html: Added.
* web-platform-tests/dom/ranges/w3c-import.log:
* web-platform-tests/dom/w3c-import.log:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsimportedw3cChangeLog">trunk/LayoutTests/imported/w3c/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomcollectionsw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomhistoricalexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/historical-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomhistoricalhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/historical.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdominterfaceobjectsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interface-objects-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdominterfaceobjectshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interface-objects.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdominterfacesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdominterfaceshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDOMImplementationcreateDocumentexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocument-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDOMImplementationcreateDocumenthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocument.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementclasslistexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-classlist-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementclasslisthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-classlist.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeisEqualNodeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesattributesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/attributes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesattributeshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/attributes.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/w3c-import.log</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomcollectionsdomstringmapsupportedpropertynamesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/domstringmap-supported-property-names-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomcollectionsdomstringmapsupportedpropertynameshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/domstringmap-supported-property-names.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomcollectionsnamednodemapsupportedpropertynamesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/namednodemap-supported-property-names-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomcollectionsnamednodemapsupportedpropertynameshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/namednodemap-supported-property-names.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchpropagationstoppedexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-propagation-stopped-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchpropagationstoppedhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-propagation-stopped.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodecontainsxhtmlexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains-xhtml-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodecontainsxhtmlxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains-xhtml.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeisEqualNodexhtmlexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-xhtml-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeisEqualNodexhtmlxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-xhtml.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeisEqualNodehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeconstructorexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-constructor-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeconstructorhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-constructor.html</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeisEqualNodexhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode.xhtml</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (196078 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog        2016-02-03 21:26:33 UTC (rev 196078)
+++ trunk/LayoutTests/imported/w3c/ChangeLog        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -1,3 +1,49 @@
</span><ins>+2016-02-03  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Re-sync W3C DOM web-platform-tests
+        https://bugs.webkit.org/show_bug.cgi?id=153831
+
+        Reviewed by Darin Adler.
+
+        Re-sync W3C DOM web-platform-tests from:
+        https://github.com/w3c/web-platform-tests/tree/master/dom
+
+        * web-platform-tests/dom/collections/domstringmap-supported-property-names-expected.txt: Added.
+        * web-platform-tests/dom/collections/domstringmap-supported-property-names.html: Added.
+        * web-platform-tests/dom/collections/namednodemap-supported-property-names-expected.txt: Added.
+        * web-platform-tests/dom/collections/namednodemap-supported-property-names.html: Added.
+        * web-platform-tests/dom/collections/w3c-import.log:
+        * web-platform-tests/dom/events/Event-dispatch-propagation-stopped-expected.txt: Added.
+        * web-platform-tests/dom/events/Event-dispatch-propagation-stopped.html: Added.
+        * web-platform-tests/dom/events/w3c-import.log:
+        * web-platform-tests/dom/historical-expected.txt:
+        * web-platform-tests/dom/historical.html:
+        * web-platform-tests/dom/interface-objects-expected.txt:
+        * web-platform-tests/dom/interface-objects.html:
+        * web-platform-tests/dom/interfaces-expected.txt:
+        * web-platform-tests/dom/interfaces.html:
+        * web-platform-tests/dom/nodes/DOMImplementation-createDocument-expected.txt:
+        * web-platform-tests/dom/nodes/DOMImplementation-createDocument.html:
+        * web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.html: Added.
+        * web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.svg: Added.
+        * web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.xhtml: Added.
+        * web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.xml: Added.
+        * web-platform-tests/dom/nodes/Element-classlist-expected.txt:
+        * web-platform-tests/dom/nodes/Element-classlist.html:
+        * web-platform-tests/dom/nodes/Node-contains-xhtml-expected.txt: Added.
+        * web-platform-tests/dom/nodes/Node-contains-xhtml.xhtml: Added.
+        * web-platform-tests/dom/nodes/Node-isEqualNode-expected.txt:
+        * web-platform-tests/dom/nodes/Node-isEqualNode-xhtml-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-expected.txt.
+        * web-platform-tests/dom/nodes/Node-isEqualNode-xhtml.xhtml: Renamed from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode.xhtml.
+        * web-platform-tests/dom/nodes/Node-isEqualNode.html: Added.
+        * web-platform-tests/dom/nodes/attributes-expected.txt:
+        * web-platform-tests/dom/nodes/attributes.html:
+        * web-platform-tests/dom/nodes/w3c-import.log:
+        * web-platform-tests/dom/ranges/Range-constructor-expected.txt: Added.
+        * web-platform-tests/dom/ranges/Range-constructor.html: Added.
+        * web-platform-tests/dom/ranges/w3c-import.log:
+        * web-platform-tests/dom/w3c-import.log:
+
</ins><span class="cx"> 2016-02-01  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Native Bindings Descriptors are Incomplete
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomcollectionsdomstringmapsupportedpropertynamesexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/domstringmap-supported-property-names-expected.txt (0 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/domstringmap-supported-property-names-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/domstringmap-supported-property-names-expected.txt        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+Simple
+Simple
+John Doe
+Jane Doe
+Jim Doe
+
+PASS Object.getOwnPropertyNames on DOMStringMap, empty data attribute 
+PASS Object.getOwnPropertyNames on DOMStringMap, data attribute trailing hyphen 
+PASS Object.getOwnPropertyNames on DOMStringMap, multiple data attributes 
+PASS Object.getOwnPropertyNames on DOMStringMap, attribute set on dataset in JS 
+PASS Object.getOwnPropertyNames on DOMStringMap, attribute set on element in JS 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomcollectionsdomstringmapsupportedpropertynameshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/domstringmap-supported-property-names.html (0 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/domstringmap-supported-property-names.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/domstringmap-supported-property-names.html        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -0,0 +1,54 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;DOMStringMap Test: Supported property names&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+
+&lt;div id=&quot;edge1&quot; data-=&quot;012&quot;&gt;Simple&lt;/div&gt;
+
+&lt;div id=&quot;edge2&quot; data-id-=&quot;012&quot;&gt;Simple&lt;/div&gt;
+
+&lt;div id=&quot;user&quot; data-id=&quot;1234567890&quot; data-user=&quot;johndoe&quot; data-date-of-birth&gt;
+    John Doe
+&lt;/div&gt;
+
+&lt;div id=&quot;user2&quot; data-unique-id=&quot;1234567890&quot;&gt; Jane Doe &lt;/div&gt;
+
+&lt;div id=&quot;user3&quot; data-unique-id=&quot;4324324241&quot;&gt; Jim Doe &lt;/div&gt;
+
+&lt;script&gt;
+
+test(function() {
+    var element = document.querySelector('#edge1');
+    assert_array_equals(Object.getOwnPropertyNames(element.dataset),
+        [&quot;&quot;]);
+}, &quot;Object.getOwnPropertyNames on DOMStringMap, empty data attribute&quot;);
+
+test(function() {
+    var element = document.querySelector('#edge2');
+    assert_array_equals(Object.getOwnPropertyNames(element.dataset),
+        [&quot;id-&quot;]);
+}, &quot;Object.getOwnPropertyNames on DOMStringMap, data attribute trailing hyphen&quot;);
+
+test(function() {
+    var element = document.querySelector('#user');
+    assert_array_equals(Object.getOwnPropertyNames(element.dataset),
+        ['id', 'user', 'dateOfBirth']);
+}, &quot;Object.getOwnPropertyNames on DOMStringMap, multiple data attributes&quot;);
+
+test(function() {
+    var element = document.querySelector('#user2');
+    element.dataset.middleName = &quot;mark&quot;;
+    assert_array_equals(Object.getOwnPropertyNames(element.dataset),
+        ['uniqueId', 'middleName']);
+}, &quot;Object.getOwnPropertyNames on DOMStringMap, attribute set on dataset in JS&quot;);
+
+test(function() {
+    var element = document.querySelector('#user3');
+    element.setAttribute(&quot;data-age&quot;, 30);
+    assert_array_equals(Object.getOwnPropertyNames(element.dataset),
+        ['uniqueId', 'age']);
+}, &quot;Object.getOwnPropertyNames on DOMStringMap, attribute set on element in JS&quot;);
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomcollectionsnamednodemapsupportedpropertynamesexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/namednodemap-supported-property-names-expected.txt (0 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/namednodemap-supported-property-names-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/namednodemap-supported-property-names-expected.txt        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+Simple
+
+
+FAIL Object.getOwnPropertyNames on NamedNodeMap assert_array_equals: lengths differ, expected 4 got 3
+FAIL Object.getOwnPropertyNames on NamedNodeMap of input assert_array_equals: lengths differ, expected 8 got 5
+FAIL Object.getOwnPropertyNames on NamedNodeMap after attribute removal assert_array_equals: lengths differ, expected 6 got 4
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomcollectionsnamednodemapsupportedpropertynameshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/namednodemap-supported-property-names.html (0 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/namednodemap-supported-property-names.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/namednodemap-supported-property-names.html        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;NamedNodeMap Test: Supported property names&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;div id=&quot;simple&quot; class=&quot;fancy&quot;&gt;Simple&lt;/div&gt;
+&lt;input id=&quot;result&quot; type=&quot;text&quot; value=&quot;&quot; width=&quot;200px&quot;&gt;
+&lt;script&gt;
+
+test(function() {
+    var elt = document.querySelector('#simple');
+    assert_array_equals(Object.getOwnPropertyNames(elt.attributes),
+        ['0','1','id','class']);
+}, &quot;Object.getOwnPropertyNames on NamedNodeMap&quot;);
+
+test(function() {
+    var result = document.getElementById(&quot;result&quot;);
+    assert_array_equals(Object.getOwnPropertyNames(result.attributes),
+        ['0','1','2','3','id','type','value','width']);
+}, &quot;Object.getOwnPropertyNames on NamedNodeMap of input&quot;);
+
+test(function() {
+    var result = document.getElementById(&quot;result&quot;);
+    result.removeAttribute(&quot;width&quot;);
+    assert_array_equals(Object.getOwnPropertyNames(result.attributes),
+        ['0','1','2','id','type','value']);
+}, &quot;Object.getOwnPropertyNames on NamedNodeMap after attribute removal&quot;);
+
+&lt;/script&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomcollectionsw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/w3c-import.log (196078 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/w3c-import.log        2016-02-03 21:26:33 UTC (rev 196078)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/w3c-import.log        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -17,3 +17,5 @@
</span><span class="cx"> List of files:
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/collections/HTMLCollection-empty-name.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/collections/HTMLCollection-supported-property-names.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/dom/collections/domstringmap-supported-property-names.html
+/LayoutTests/imported/w3c/web-platform-tests/dom/collections/namednodemap-supported-property-names.html
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchpropagationstoppedexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-propagation-stopped-expected.txt (0 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-propagation-stopped-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-propagation-stopped-expected.txt        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS  Calling stopPropagation() prior to dispatchEvent()  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchpropagationstoppedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-propagation-stopped.html (0 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-propagation-stopped.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-propagation-stopped.html        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -0,0 +1,59 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt; Calling stopPropagation() prior to dispatchEvent() &lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+
+&lt;table id=&quot;table&quot; border=&quot;1&quot; style=&quot;display: none&quot;&gt;
+    &lt;tbody id=&quot;table-body&quot;&gt;
+    &lt;tr id=&quot;table-row&quot;&gt;
+        &lt;td id=&quot;table-cell&quot;&gt;Shady Grove&lt;/td&gt;
+        &lt;td&gt;Aeolian&lt;/td&gt;
+    &lt;/tr&gt;
+    &lt;tr id=&quot;parent&quot;&gt;
+        &lt;td id=&quot;target&quot;&gt;Over the river, Charlie&lt;/td&gt;
+        &lt;td&gt;Dorian&lt;/td&gt;
+    &lt;/tr&gt;
+    &lt;/tbody&gt;
+&lt;/table&gt;
+
+&lt;script&gt;
+test(function() {
+    var event = &quot;foo&quot;;
+    var target = document.getElementById(&quot;target&quot;);
+    var parent = document.getElementById(&quot;parent&quot;);
+    var tbody = document.getElementById(&quot;table-body&quot;);
+    var table = document.getElementById(&quot;table&quot;);
+    var body = document.body;
+    var html = document.documentElement;
+    var current_targets = [window, document, html, body, table, tbody, parent, target];
+    var expected_targets = [];
+    var actual_targets = [];
+    var expected_phases = [];
+    var actual_phases = [];
+
+    var test_event = function(evt) {
+        actual_targets.push(evt.currentTarget);
+        actual_phases.push(evt.eventPhase);
+    };
+
+    for (var i = 0; i &lt; current_targets.length; ++i) {
+        current_targets[i].addEventListener(event, test_event, true);
+        current_targets[i].addEventListener(event, test_event, false);
+    }
+
+    var evt = document.createEvent(&quot;Event&quot;);
+    evt.initEvent(event, true, true);
+    evt.stopPropagation();
+    target.dispatchEvent(evt);
+
+    assert_array_equals(actual_targets, expected_targets, &quot;actual_targets&quot;);
+    assert_array_equals(actual_phases, expected_phases, &quot;actual_phases&quot;);
+});
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/w3c-import.log (196078 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/w3c-import.log        2016-02-03 21:26:33 UTC (rev 196078)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/w3c-import.log        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -21,6 +21,7 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-bubbles-false.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-handlers-changed.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-omitted-capture.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-propagation-stopped.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-redispatch.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-reenter.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-target-moved.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomhistoricalexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/historical-expected.txt (196078 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/historical-expected.txt        2016-02-03 21:26:33 UTC (rev 196078)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/historical-expected.txt        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -7,6 +7,7 @@
</span><span class="cx"> PASS Historical DOM features must be removed: DOMImplementationSource 
</span><span class="cx"> PASS Historical DOM features must be removed: DOMLocator 
</span><span class="cx"> PASS Historical DOM features must be removed: DOMObject 
</span><ins>+FAIL Historical DOM features must be removed: DOMSettableTokenList assert_equals: expected (undefined) undefined but got (object) object &quot;[object DOMSettableTokenListConstructor]&quot;
</ins><span class="cx"> PASS Historical DOM features must be removed: DOMUserData 
</span><span class="cx"> PASS Historical DOM features must be removed: Entity 
</span><span class="cx"> PASS Historical DOM features must be removed: EntityReference 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomhistoricalhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/historical.html (196078 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/historical.html        2016-02-03 21:26:33 UTC (rev 196078)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/historical.html        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -18,6 +18,7 @@
</span><span class="cx">   &quot;DOMImplementationSource&quot;,
</span><span class="cx">   &quot;DOMLocator&quot;,
</span><span class="cx">   &quot;DOMObject&quot;,
</span><ins>+  &quot;DOMSettableTokenList&quot;,
</ins><span class="cx">   &quot;DOMUserData&quot;,
</span><span class="cx">   &quot;Entity&quot;,
</span><span class="cx">   &quot;EntityReference&quot;,
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdominterfaceobjectsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interface-objects-expected.txt (196078 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interface-objects-expected.txt        2016-02-03 21:26:33 UTC (rev 196078)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interface-objects-expected.txt        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -19,7 +19,5 @@
</span><span class="cx"> PASS Should be able to delete NodeFilter. 
</span><span class="cx"> PASS Should be able to delete NodeList. 
</span><span class="cx"> PASS Should be able to delete HTMLCollection. 
</span><del>-PASS Should be able to delete DOMStringList. 
</del><span class="cx"> PASS Should be able to delete DOMTokenList. 
</span><del>-PASS Should be able to delete DOMSettableTokenList. 
</del><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdominterfaceobjectshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interface-objects.html (196078 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interface-objects.html        2016-02-03 21:26:33 UTC (rev 196078)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interface-objects.html        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -31,9 +31,7 @@
</span><span class="cx">   &quot;NodeFilter&quot;,
</span><span class="cx">   &quot;NodeList&quot;,
</span><span class="cx">   &quot;HTMLCollection&quot;,
</span><del>-  &quot;DOMStringList&quot;,
-  &quot;DOMTokenList&quot;,
-  &quot;DOMSettableTokenList&quot;
</del><ins>+  &quot;DOMTokenList&quot;
</ins><span class="cx"> ];
</span><span class="cx"> test(function() {
</span><span class="cx">   for (var p in window) {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdominterfacesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt (196078 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt        2016-02-03 21:26:33 UTC (rev 196078)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -707,7 +707,7 @@
</span><span class="cx"> PASS Element interface: attribute tagName 
</span><span class="cx"> PASS Element interface: attribute id 
</span><span class="cx"> PASS Element interface: attribute className 
</span><del>-PASS Element interface: attribute classList 
</del><ins>+FAIL Element interface: attribute classList assert_equals: setter must be function for PutForwards, Replaceable, or non-readonly attributes expected &quot;function&quot; but got &quot;undefined&quot;
</ins><span class="cx"> PASS Element interface: operation hasAttributes() 
</span><span class="cx"> PASS Element interface: attribute attributes 
</span><span class="cx"> FAIL Element interface: operation getAttribute(DOMString) assert_equals: property has wrong .length expected 1 but got 0
</span><span class="lines">@@ -1557,6 +1557,9 @@
</span><span class="cx"> PASS DOMTokenList interface: operation add(DOMString) 
</span><span class="cx"> PASS DOMTokenList interface: operation remove(DOMString) 
</span><span class="cx"> PASS DOMTokenList interface: operation toggle(DOMString,boolean) 
</span><ins>+FAIL DOMTokenList interface: operation replace(DOMString,DOMString) assert_own_property: interface prototype object missing non-static operation expected property &quot;replace&quot; missing
+FAIL DOMTokenList interface: operation supports(DOMString) assert_own_property: interface prototype object missing non-static operation expected property &quot;supports&quot; missing
+FAIL DOMTokenList interface: attribute value assert_true: The prototype object must have a property &quot;value&quot; expected true got false
</ins><span class="cx"> FAIL DOMTokenList interface: stringifier assert_true: property is not enumerable expected true got false
</span><span class="cx"> PASS DOMTokenList must be primary interface of document.body.classList 
</span><span class="cx"> PASS Stringification of document.body.classList 
</span><span class="lines">@@ -1571,10 +1574,9 @@
</span><span class="cx"> PASS DOMTokenList interface: calling remove(DOMString) on document.body.classList with too few arguments must throw TypeError 
</span><span class="cx"> PASS DOMTokenList interface: document.body.classList must inherit property &quot;toggle&quot; with the proper type (5) 
</span><span class="cx"> PASS DOMTokenList interface: calling toggle(DOMString,boolean) on document.body.classList with too few arguments must throw TypeError 
</span><del>-FAIL DOMSettableTokenList interface: existence and properties of interface object assert_equals: class string of DOMSettableTokenList expected &quot;[object Function]&quot; but got &quot;[object DOMSettableTokenListConstructor]&quot;
-PASS DOMSettableTokenList interface object length 
-PASS DOMSettableTokenList interface object name 
-PASS DOMSettableTokenList interface: existence and properties of interface prototype object 
-PASS DOMSettableTokenList interface: existence and properties of interface prototype object's &quot;constructor&quot; property 
-PASS DOMSettableTokenList interface: attribute value 
</del><ins>+FAIL DOMTokenList interface: document.body.classList must inherit property &quot;replace&quot; with the proper type (6) assert_inherits: property &quot;replace&quot; not found in prototype chain
+FAIL DOMTokenList interface: calling replace(DOMString,DOMString) on document.body.classList with too few arguments must throw TypeError assert_inherits: property &quot;replace&quot; not found in prototype chain
+FAIL DOMTokenList interface: document.body.classList must inherit property &quot;supports&quot; with the proper type (7) assert_inherits: property &quot;supports&quot; not found in prototype chain
+FAIL DOMTokenList interface: calling supports(DOMString) on document.body.classList with too few arguments must throw TypeError assert_inherits: property &quot;supports&quot; not found in prototype chain
+FAIL DOMTokenList interface: document.body.classList must inherit property &quot;value&quot; with the proper type (8) assert_inherits: property &quot;value&quot; not found in prototype chain
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdominterfaceshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces.html (196078 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces.html        2016-02-03 21:26:33 UTC (rev 196078)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces.html        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -283,7 +283,7 @@
</span><span class="cx"> 
</span><span class="cx">            attribute DOMString id;
</span><span class="cx">            attribute DOMString className;
</span><del>-  [SameObject] readonly attribute DOMTokenList classList;
</del><ins>+  [SameObject, PutForwards=value] readonly attribute DOMTokenList classList;
</ins><span class="cx"> 
</span><span class="cx">   boolean hasAttributes();
</span><span class="cx">   [SameObject] readonly attribute NamedNodeMap attributes;
</span><span class="lines">@@ -460,13 +460,12 @@
</span><span class="cx">   void add(DOMString... tokens);
</span><span class="cx">   void remove(DOMString... tokens);
</span><span class="cx">   boolean toggle(DOMString token, optional boolean force);
</span><ins>+  void replace(DOMString token, DOMString newToken);
+  boolean supports(DOMString token);
+           attribute DOMString value;
</ins><span class="cx">   stringifier;
</span><span class="cx"> //  iterable&lt;DOMString&gt;;
</span><span class="cx"> };
</span><del>-
-interface DOMSettableTokenList : DOMTokenList {
-            attribute DOMString value;
-};
</del><span class="cx"> &lt;/script&gt;
</span><span class="cx"> &lt;script&gt;
</span><span class="cx"> &quot;use strict&quot;;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDOMImplementationcreateDocumentexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocument-expected.txt (196078 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocument-expected.txt        2016-02-03 21:26:33 UTC (rev 196078)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocument-expected.txt        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -337,4 +337,6 @@
</span><span class="cx"> PASS createDocument test 178: &quot;foo&quot;,&quot;bar&quot;,DocumentType node,null 
</span><span class="cx"> PASS createDocument test 178: metadata for &quot;foo&quot;,&quot;bar&quot;,DocumentType node 
</span><span class="cx"> PASS createDocument test 178: characterSet aliases for &quot;foo&quot;,&quot;bar&quot;,DocumentType node 
</span><ins>+FAIL createDocument with missing arguments assert_throws: createDocument() should throw function &quot;function () {
+    document.implementation.createDocument(...&quot; did not throw
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDOMImplementationcreateDocumenthtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocument.html (196078 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocument.html        2016-02-03 21:26:33 UTC (rev 196078)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocument.html        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -120,4 +120,14 @@
</span><span class="cx">     }
</span><span class="cx">   })
</span><span class="cx"> })
</span><ins>+
+test(function() {
+  assert_throws(new TypeError(), function() {
+    document.implementation.createDocument()
+  }, &quot;createDocument() should throw&quot;)
+
+  assert_throws(new TypeError(), function() {
+    document.implementation.createDocument('')
+  }, &quot;createDocument('') should throw&quot;)
+}, &quot;createDocument with missing arguments&quot;);
</ins><span class="cx"> &lt;/script&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementclasslistexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-classlist-expected.txt (196078 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-classlist-expected.txt        2016-02-03 21:26:33 UTC (rev 196078)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-classlist-expected.txt        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -62,5 +62,5 @@
</span><span class="cx"> PASS classList.add should treat \n as a space 
</span><span class="cx"> PASS classList.add should treat \f as a space 
</span><span class="cx"> PASS classList.length must be read-only 
</span><del>-PASS classList must be read-only 
</del><ins>+FAIL classList must have [PutForwards=value] assert_equals: expected 2 but got 1
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementclasslisthtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-classlist.html (196078 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-classlist.html        2016-02-03 21:26:33 UTC (rev 196078)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-classlist.html        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -290,15 +290,13 @@
</span><span class="cx">   assert_false(failed,'an error was thrown');
</span><span class="cx"> }, 'classList.length must be read-only');
</span><span class="cx"> test(function () {
</span><del>-  var failed = false, realList = secondelem.classList;
-  try {
-    secondelem.classList = '';
-  } catch(e) {
-    failed = e;
-  }
</del><ins>+  var realList = secondelem.classList;
+  secondelem.classList = 'foo bar';
</ins><span class="cx">   assert_equals(secondelem.classList,realList);
</span><del>-  assert_false(failed,'an error was thrown');
-}, 'classList must be read-only');
</del><ins>+  assert_equals(secondelem.classList.length,2);
+  assert_equals(secondelem.classList[0],'foo');
+  assert_equals(secondelem.classList[1],'bar');
+}, 'classList must have [PutForwards=value]');
</ins><span class="cx">     &lt;/script&gt;
</span><span class="cx">   &lt;/head&gt;
</span><span class="cx">   &lt;body&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodecontainsxhtmlexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains-xhtml-expected.txt (0 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains-xhtml-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains-xhtml-expected.txt        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+ Link text
+
+FAIL Should throw TypeError if the arguments are wrong. assert_throws: function &quot;function () {
+    document.contains();
+  }&quot; did not throw
+PASS contains(null) should be false 
+PASS document.contains 
+PASS contains with a button 
+PASS contains with a text node 
+PASS contains with a processing instruction 
+FAIL contains with a document fragment NotSupportedError: DOM Exception 9
+PASS contaibs with another document 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodecontainsxhtmlxhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains-xhtml.xhtml (0 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains-xhtml.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains-xhtml.xhtml        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -0,0 +1,83 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+&lt;head&gt;
+&lt;title&gt;Node.nodeName&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Olli Pettay&quot; href=&quot;mailto:Olli@Pettay.fi&quot;/&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Ms2ger&quot; href=&quot;mailto:Ms2ger@gmail.com&quot;/&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;log&quot;/&gt;
+&lt;div id=&quot;test&quot;&gt;
+  &lt;input type=&quot;button&quot; id=&quot;testbutton&quot;/&gt;
+  &lt;a id=&quot;link&quot;&gt;Link text&lt;/a&gt;
+&lt;/div&gt;
+&lt;script&gt;
+&lt;![CDATA[
+test(function() {
+  assert_throws(new TypeError(), function() {
+    document.contains();
+  });
+  assert_throws(new TypeError(), function() {
+    document.contains(9);
+  });
+}, &quot;Should throw TypeError if the arguments are wrong.&quot;);
+
+test(function() {
+  assert_equals(document.contains(null), false, &quot;Document shouldn't contain null.&quot;);
+}, &quot;contains(null) should be false&quot;);
+
+test(function() {
+  assert_equals(document.contains(document), true, &quot;Document should contain itself!&quot;);
+  assert_equals(document.contains(document.createElement(&quot;foo&quot;)), false, &quot;Document shouldn't contain element which is't in the document&quot;);
+  assert_equals(document.contains(document.createTextNode(&quot;foo&quot;)), false, &quot;Document shouldn't contain text node which is't in the document&quot;);
+}, &quot;document.contains&quot;);
+
+test(function() {
+  var tb = document.getElementById(&quot;testbutton&quot;);
+  assert_equals(tb.contains(tb), true, &quot;Element should contain itself.&quot;)
+  assert_equals(document.contains(tb), true, &quot;Document should contain element in it!&quot;);
+  assert_equals(document.documentElement.contains(tb), true, &quot;Element should contain element in it!&quot;);
+}, &quot;contains with a button&quot;);
+
+test(function() {
+  var link = document.getElementById(&quot;link&quot;);
+  var text = link.firstChild;
+  assert_equals(document.contains(text), true, &quot;Document should contain a text node in it.&quot;);
+  assert_equals(link.contains(text), true, &quot;Element should contain a text node in it.&quot;);
+  assert_equals(text.contains(text), true, &quot;Text node should contain itself.&quot;);
+  assert_equals(text.contains(link), false, &quot;text node shouldn't contain its parent.&quot;);
+}, &quot;contains with a text node&quot;);
+
+test(function() {
+  var pi = document.createProcessingInstruction(&quot;adf&quot;, &quot;asd&quot;);
+  assert_equals(pi.contains(document), false, &quot;Processing instruction shouldn't contain document&quot;);
+  assert_equals(document.contains(pi), false, &quot;Document shouldn't contain newly created processing instruction&quot;);
+  document.documentElement.appendChild(pi);
+  document.contains(pi, true, &quot;Document should contain processing instruction&quot;);
+}, &quot;contains with a processing instruction&quot;);
+
+test(function() {
+  if (&quot;createContextualFragment&quot; in document.createRange()) {
+    var df = document.createRange().createContextualFragment(&quot;&lt;div&gt;foo&lt;/div&gt;&quot;);
+    assert_equals(df.contains(df.firstChild), true, &quot;Document fragment should contain its child&quot;);
+    assert_equals(df.contains(df.firstChild.firstChild), true,
+       &quot;Document fragment should contain its descendant&quot;);
+    assert_equals(df.contains(df), true, &quot;Document fragment should contain itself.&quot;);
+  }
+}, &quot;contains with a document fragment&quot;);
+
+test(function() {
+  var d = document.implementation.createHTMLDocument(&quot;&quot;);
+  assert_equals(document.contains(d), false,
+     &quot;Document shouldn't contain another document.&quot;);
+  assert_equals(document.contains(d.createElement(&quot;div&quot;)), false,
+     &quot;Document shouldn't contain an element from another document.&quot;);
+  assert_equals(document.contains(d.documentElement), false,
+     &quot;Document shouldn't contain an element from another document.&quot;);
+}, &quot;contaibs with another document&quot;);
+]]&gt;
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeisEqualNodeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-expected.txt (196078 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-expected.txt        2016-02-03 21:26:33 UTC (rev 196078)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-expected.txt        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -1,17 +1,11 @@
</span><del>- 
</del><span class="cx"> 
</span><del>-PASS Node.isEqualNode 
-PASS Node.isEqualNode 1 
-PASS Node.isEqualNode 2 
-PASS Node.isEqualNode 3 
-PASS Node.isEqualNode 4 
-PASS Node.isEqualNode 5 
-PASS Node.isEqualNode 6 
-PASS isEqualNode should return true when the attributes are in a different order 
-PASS isEqualNode should return true if elements have same namespace, prefix, and local name 
-PASS isEqualNode should return false if elements have different namespace 
-PASS isEqualNode should return false if elements have different prefix 
-PASS isEqualNode should return false if elements have different local name 
-PASS isEqualNode should return true when the attributes have different prefixes 
-PASS isEqualNode should return true when only the internal subsets of DocumentTypes differ. 
</del><ins>+PASS doctypes should be compared on name, public ID, and system ID 
+PASS elements should be compared on namespace, namespace prefix, local name, and number of attributes 
+PASS elements should be compared on attribute namespace, local name, and value 
+PASS processing instructions should be compared on target and data 
+PASS text nodes should be compared on data 
+PASS comments should be compared on data 
+PASS document fragments should not be compared based on properties 
+FAIL documents should not be compared based on properties assert_true: default HTML documents, created different ways expected true got false
+PASS node equality testing should test descendant equality too 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeisEqualNodexhtmlexpectedtxtfromrev196078trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeisEqualNodeexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-xhtml-expected.txt (from rev 196078, trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-expected.txt) (0 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-xhtml-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-xhtml-expected.txt        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+ 
+
+PASS Node.isEqualNode 
+PASS Node.isEqualNode 1 
+PASS Node.isEqualNode 2 
+PASS Node.isEqualNode 3 
+PASS Node.isEqualNode 4 
+PASS Node.isEqualNode 5 
+PASS Node.isEqualNode 6 
+PASS isEqualNode should return true when the attributes are in a different order 
+PASS isEqualNode should return true if elements have same namespace, prefix, and local name 
+PASS isEqualNode should return false if elements have different namespace 
+PASS isEqualNode should return false if elements have different prefix 
+PASS isEqualNode should return false if elements have different local name 
+PASS isEqualNode should return true when the attributes have different prefixes 
+PASS isEqualNode should return true when only the internal subsets of DocumentTypes differ. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeisEqualNodexhtmlxhtmlfromrev196078trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeisEqualNodexhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-xhtml.xhtml (from rev 196078, trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode.xhtml) (0 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-xhtml.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-xhtml.xhtml        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -0,0 +1,84 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+&lt;head&gt;
+&lt;title&gt;Node.isEqualNode&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;log&quot;/&gt;
+&lt;script&gt;
+function testNullHandling(node) {
+  test(function() {
+    assert_false(node.isEqualNode(null))
+    assert_false(node.isEqualNode(undefined))
+  })
+}
+[
+  document.createElement(&quot;foo&quot;),
+  document.createTextNode(&quot;foo&quot;),
+  document.createProcessingInstruction(&quot;foo&quot;, &quot;bar&quot;),
+  document.createComment(&quot;foo&quot;),
+  document,
+  document.implementation.createDocumentType(&quot;html&quot;, &quot;&quot;, &quot;&quot;),
+  document.createDocumentFragment()
+].forEach(testNullHandling)
+
+test(function() {
+  var a = document.createElement(&quot;foo&quot;)
+  a.setAttribute(&quot;a&quot;, &quot;bar&quot;)
+  a.setAttribute(&quot;b&quot;, &quot;baz&quot;)
+  var b = document.createElement(&quot;foo&quot;)
+  b.setAttribute(&quot;b&quot;, &quot;baz&quot;)
+  b.setAttribute(&quot;a&quot;, &quot;bar&quot;)
+  assert_true(a.isEqualNode(b))
+}, &quot;isEqualNode should return true when the attributes are in a different order&quot;)
+
+test(function() {
+  var a = document.createElementNS(&quot;ns&quot;, &quot;prefix:foo&quot;)
+  var b = document.createElementNS(&quot;ns&quot;, &quot;prefix:foo&quot;)
+  assert_true(a.isEqualNode(b))
+}, &quot;isEqualNode should return true if elements have same namespace, prefix, and local name&quot;)
+
+test(function() {
+  var a = document.createElementNS(&quot;ns1&quot;, &quot;prefix:foo&quot;)
+  var b = document.createElementNS(&quot;ns2&quot;, &quot;prefix:foo&quot;)
+  assert_false(a.isEqualNode(b))
+}, &quot;isEqualNode should return false if elements have different namespace&quot;)
+
+test(function() {
+  var a = document.createElementNS(&quot;ns&quot;, &quot;prefix1:foo&quot;)
+  var b = document.createElementNS(&quot;ns&quot;, &quot;prefix2:foo&quot;)
+  assert_false(a.isEqualNode(b))
+}, &quot;isEqualNode should return false if elements have different prefix&quot;)
+
+test(function() {
+  var a = document.createElementNS(&quot;ns&quot;, &quot;prefix:foo1&quot;)
+  var b = document.createElementNS(&quot;ns&quot;, &quot;prefix:foo2&quot;)
+  assert_false(a.isEqualNode(b))
+}, &quot;isEqualNode should return false if elements have different local name&quot;)
+
+test(function() {
+  var a = document.createElement(&quot;foo&quot;)
+  a.setAttributeNS(&quot;ns&quot;, &quot;x:a&quot;, &quot;bar&quot;)
+  var b = document.createElement(&quot;foo&quot;)
+  b.setAttributeNS(&quot;ns&quot;, &quot;y:a&quot;, &quot;bar&quot;)
+  assert_true(a.isEqualNode(b))
+}, &quot;isEqualNode should return true when the attributes have different prefixes&quot;)
+var internalSubset = async_test(&quot;isEqualNode should return true when only the internal subsets of DocumentTypes differ.&quot;)
+var wait = 2;
+function iframeLoaded() {
+  if (!--wait) {
+    internalSubset.step(function() {
+      var doc1 = document.getElementById(&quot;subset1&quot;).contentDocument
+      var doc2 = document.getElementById(&quot;subset2&quot;).contentDocument
+      assert_true(doc1.doctype.isEqualNode(doc2.doctype), &quot;doc1.doctype.isEqualNode(doc2.doctype)&quot;)
+      assert_true(doc1.isEqualNode(doc2), &quot;doc1.isEqualNode(doc2)&quot;)
+    })
+    internalSubset.done()
+  }
+}
+&lt;/script&gt;
+&lt;iframe id=&quot;subset1&quot; onload=&quot;iframeLoaded()&quot; src=&quot;Node-isEqualNode-iframe1.xml&quot; /&gt;
+&lt;iframe id=&quot;subset2&quot; onload=&quot;iframeLoaded()&quot; src=&quot;Node-isEqualNode-iframe2.xml&quot; /&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeisEqualNodehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode.html (0 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode.html        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -0,0 +1,161 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;Node.prototype.isEqualNode&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-node-isequalnode&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+&quot;use strict&quot;;
+
+test(function() {
+
+  var doctype1 = document.implementation.createDocumentType(&quot;qualifiedName&quot;, &quot;publicId&quot;, &quot;systemId&quot;);
+  var doctype2 = document.implementation.createDocumentType(&quot;qualifiedName&quot;, &quot;publicId&quot;, &quot;systemId&quot;);
+  var doctype3 = document.implementation.createDocumentType(&quot;qualifiedName2&quot;, &quot;publicId&quot;, &quot;systemId&quot;);
+  var doctype4 = document.implementation.createDocumentType(&quot;qualifiedName&quot;, &quot;publicId2&quot;, &quot;systemId&quot;);
+  var doctype5 = document.implementation.createDocumentType(&quot;qualifiedName&quot;, &quot;publicId&quot;, &quot;systemId3&quot;);
+
+  assert_true(doctype1.isEqualNode(doctype1), &quot;self-comparison&quot;);
+  assert_true(doctype1.isEqualNode(doctype2), &quot;same properties&quot;);
+  assert_false(doctype1.isEqualNode(doctype3), &quot;different name&quot;);
+  assert_false(doctype1.isEqualNode(doctype4), &quot;different public ID&quot;);
+  assert_false(doctype1.isEqualNode(doctype5), &quot;different system ID&quot;);
+
+}, &quot;doctypes should be compared on name, public ID, and system ID&quot;);
+
+test(function() {
+
+  var element1 = document.createElementNS(&quot;namespace&quot;, &quot;prefix:localName&quot;);
+  var element2 = document.createElementNS(&quot;namespace&quot;, &quot;prefix:localName&quot;);
+  var element3 = document.createElementNS(&quot;namespace2&quot;, &quot;prefix:localName&quot;);
+  var element4 = document.createElementNS(&quot;namespace&quot;, &quot;prefix2:localName&quot;);
+  var element5 = document.createElementNS(&quot;namespace&quot;, &quot;prefix:localName2&quot;);
+
+  var element6 = document.createElementNS(&quot;namespace&quot;, &quot;prefix:localName&quot;);
+  element6.setAttribute(&quot;foo&quot;, &quot;bar&quot;);
+
+  assert_true(element1.isEqualNode(element1), &quot;self-comparison&quot;);
+  assert_true(element1.isEqualNode(element2), &quot;same properties&quot;);
+  assert_false(element1.isEqualNode(element3), &quot;different namespace&quot;);
+  assert_false(element1.isEqualNode(element4), &quot;different prefix&quot;);
+  assert_false(element1.isEqualNode(element5), &quot;different local name&quot;);
+  assert_false(element1.isEqualNode(element6), &quot;different number of attributes&quot;);
+
+}, &quot;elements should be compared on namespace, namespace prefix, local name, and number of attributes&quot;);
+
+test(function() {
+
+  var element1 = document.createElement(&quot;element&quot;);
+  element1.setAttributeNS(&quot;namespace&quot;, &quot;prefix:localName&quot;, &quot;value&quot;);
+
+  var element2 = document.createElement(&quot;element&quot;);
+  element2.setAttributeNS(&quot;namespace&quot;, &quot;prefix:localName&quot;, &quot;value&quot;);
+
+  var element3 = document.createElement(&quot;element&quot;);
+  element3.setAttributeNS(&quot;namespace2&quot;, &quot;prefix:localName&quot;, &quot;value&quot;);
+
+  var element4 = document.createElement(&quot;element&quot;);
+  element4.setAttributeNS(&quot;namespace&quot;, &quot;prefix2:localName&quot;, &quot;value&quot;);
+
+  var element5 = document.createElement(&quot;element&quot;);
+  element5.setAttributeNS(&quot;namespace&quot;, &quot;prefix:localName2&quot;, &quot;value&quot;);
+
+  var element6 = document.createElement(&quot;element&quot;);
+  element6.setAttributeNS(&quot;namespace&quot;, &quot;prefix:localName&quot;, &quot;value2&quot;);
+
+  assert_true(element1.isEqualNode(element1), &quot;self-comparison&quot;);
+  assert_true(element1.isEqualNode(element2), &quot;attribute with same properties&quot;);
+  assert_false(element1.isEqualNode(element3), &quot;attribute with different namespace&quot;);
+  assert_true(element1.isEqualNode(element4), &quot;attribute with different prefix&quot;);
+  assert_false(element1.isEqualNode(element5), &quot;attribute with different local name&quot;);
+  assert_false(element1.isEqualNode(element6), &quot;attribute with different value&quot;);
+
+}, &quot;elements should be compared on attribute namespace, local name, and value&quot;);
+
+test(function() {
+
+  var pi1 = document.createProcessingInstruction(&quot;target&quot;, &quot;data&quot;);
+  var pi2 = document.createProcessingInstruction(&quot;target&quot;, &quot;data&quot;);
+  var pi3 = document.createProcessingInstruction(&quot;target2&quot;, &quot;data&quot;);
+  var pi4 = document.createProcessingInstruction(&quot;target&quot;, &quot;data2&quot;);
+
+  assert_true(pi1.isEqualNode(pi1), &quot;self-comparison&quot;);
+  assert_true(pi1.isEqualNode(pi2), &quot;same properties&quot;);
+  assert_false(pi1.isEqualNode(pi3), &quot;different target&quot;);
+  assert_false(pi1.isEqualNode(pi4), &quot;different data&quot;);
+
+}, &quot;processing instructions should be compared on target and data&quot;);
+
+test(function() {
+
+  var text1 = document.createTextNode(&quot;data&quot;);
+  var text2 = document.createTextNode(&quot;data&quot;);
+  var text3 = document.createTextNode(&quot;data2&quot;);
+
+  assert_true(text1.isEqualNode(text1), &quot;self-comparison&quot;);
+  assert_true(text1.isEqualNode(text2), &quot;same properties&quot;);
+  assert_false(text1.isEqualNode(text3), &quot;different data&quot;);
+
+}, &quot;text nodes should be compared on data&quot;);
+
+test(function() {
+
+  var comment1 = document.createComment(&quot;data&quot;);
+  var comment2 = document.createComment(&quot;data&quot;);
+  var comment3 = document.createComment(&quot;data2&quot;);
+
+  assert_true(comment1.isEqualNode(comment1), &quot;self-comparison&quot;);
+  assert_true(comment1.isEqualNode(comment2), &quot;same properties&quot;);
+  assert_false(comment1.isEqualNode(comment3), &quot;different data&quot;);
+
+}, &quot;comments should be compared on data&quot;);
+
+test(function() {
+
+  var documentFragment1 = document.createDocumentFragment();
+  var documentFragment2 = document.createDocumentFragment();
+
+  assert_true(documentFragment1.isEqualNode(documentFragment1), &quot;self-comparison&quot;);
+  assert_true(documentFragment1.isEqualNode(documentFragment2), &quot;same properties&quot;);
+
+}, &quot;document fragments should not be compared based on properties&quot;);
+
+test(function() {
+
+  var document1 = document.implementation.createDocument(&quot;&quot;, &quot;&quot;);
+  var document2 = document.implementation.createDocument(&quot;&quot;, &quot;&quot;);
+
+  assert_true(document1.isEqualNode(document1), &quot;self-comparison&quot;);
+  assert_true(document1.isEqualNode(document2), &quot;another empty XML document&quot;);
+
+  var htmlDoctype = document.implementation.createDocumentType(&quot;html&quot;, &quot;&quot;, &quot;&quot;);
+  var document3 = document.implementation.createDocument(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;html&quot;, htmlDoctype);
+  document3.documentElement.appendChild(document3.createElement(&quot;head&quot;));
+  document3.documentElement.appendChild(document3.createElement(&quot;body&quot;));
+  var document4 = document.implementation.createHTMLDocument();
+  assert_true(document3.isEqualNode(document4), &quot;default HTML documents, created different ways&quot;);
+
+}, &quot;documents should not be compared based on properties&quot;);
+
+test(function() {
+
+  testDeepEquality(function() { return document.createElement(&quot;foo&quot;) });
+  testDeepEquality(function() { return document.createDocumentFragment() });
+  testDeepEquality(function() { return document.implementation.createDocument(&quot;&quot;, &quot;&quot;) });
+  testDeepEquality(function() { return document.implementation.createHTMLDocument() });
+
+  function testDeepEquality(parentFactory) {
+    // Some ad-hoc tests of deep equality
+
+    var parentA = parentFactory();
+    var parentB = parentFactory();
+
+    parentA.appendChild(document.createComment(&quot;data&quot;));
+    assert_false(parentA.isEqualNode(parentB));
+    parentB.appendChild(document.createComment(&quot;data&quot;));
+    assert_true(parentA.isEqualNode(parentB));
+  }
+
+}, &quot;node equality testing should test descendant equality too&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeisEqualNodexhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode.xhtml (196078 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode.xhtml        2016-02-03 21:26:33 UTC (rev 196078)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode.xhtml        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -1,84 +0,0 @@
</span><del>-&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
-&lt;head&gt;
-&lt;title&gt;Node.isEqualNode&lt;/title&gt;
-&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
-&lt;/head&gt;
-&lt;body&gt;
-&lt;div id=&quot;log&quot;/&gt;
-&lt;script&gt;
-function testNullHandling(node) {
-  test(function() {
-    assert_false(node.isEqualNode(null))
-    assert_false(node.isEqualNode(undefined))
-  })
-}
-[
-  document.createElement(&quot;foo&quot;),
-  document.createTextNode(&quot;foo&quot;),
-  document.createProcessingInstruction(&quot;foo&quot;, &quot;bar&quot;),
-  document.createComment(&quot;foo&quot;),
-  document,
-  document.implementation.createDocumentType(&quot;html&quot;, &quot;&quot;, &quot;&quot;),
-  document.createDocumentFragment()
-].forEach(testNullHandling)
-
-test(function() {
-  var a = document.createElement(&quot;foo&quot;)
-  a.setAttribute(&quot;a&quot;, &quot;bar&quot;)
-  a.setAttribute(&quot;b&quot;, &quot;baz&quot;)
-  var b = document.createElement(&quot;foo&quot;)
-  b.setAttribute(&quot;b&quot;, &quot;baz&quot;)
-  b.setAttribute(&quot;a&quot;, &quot;bar&quot;)
-  assert_true(a.isEqualNode(b))
-}, &quot;isEqualNode should return true when the attributes are in a different order&quot;)
-
-test(function() {
-  var a = document.createElementNS(&quot;ns&quot;, &quot;prefix:foo&quot;)
-  var b = document.createElementNS(&quot;ns&quot;, &quot;prefix:foo&quot;)
-  assert_true(a.isEqualNode(b))
-}, &quot;isEqualNode should return true if elements have same namespace, prefix, and local name&quot;)
-
-test(function() {
-  var a = document.createElementNS(&quot;ns1&quot;, &quot;prefix:foo&quot;)
-  var b = document.createElementNS(&quot;ns2&quot;, &quot;prefix:foo&quot;)
-  assert_false(a.isEqualNode(b))
-}, &quot;isEqualNode should return false if elements have different namespace&quot;)
-
-test(function() {
-  var a = document.createElementNS(&quot;ns&quot;, &quot;prefix1:foo&quot;)
-  var b = document.createElementNS(&quot;ns&quot;, &quot;prefix2:foo&quot;)
-  assert_false(a.isEqualNode(b))
-}, &quot;isEqualNode should return false if elements have different prefix&quot;)
-
-test(function() {
-  var a = document.createElementNS(&quot;ns&quot;, &quot;prefix:foo1&quot;)
-  var b = document.createElementNS(&quot;ns&quot;, &quot;prefix:foo2&quot;)
-  assert_false(a.isEqualNode(b))
-}, &quot;isEqualNode should return false if elements have different local name&quot;)
-
-test(function() {
-  var a = document.createElement(&quot;foo&quot;)
-  a.setAttributeNS(&quot;ns&quot;, &quot;x:a&quot;, &quot;bar&quot;)
-  var b = document.createElement(&quot;foo&quot;)
-  b.setAttributeNS(&quot;ns&quot;, &quot;y:a&quot;, &quot;bar&quot;)
-  assert_true(a.isEqualNode(b))
-}, &quot;isEqualNode should return true when the attributes have different prefixes&quot;)
-var internalSubset = async_test(&quot;isEqualNode should return true when only the internal subsets of DocumentTypes differ.&quot;)
-var wait = 2;
-function iframeLoaded() {
-  if (!--wait) {
-    internalSubset.step(function() {
-      var doc1 = document.getElementById(&quot;subset1&quot;).contentDocument
-      var doc2 = document.getElementById(&quot;subset2&quot;).contentDocument
-      assert_true(doc1.doctype.isEqualNode(doc2.doctype), &quot;doc1.doctype.isEqualNode(doc2.doctype)&quot;)
-      assert_true(doc1.isEqualNode(doc2), &quot;doc1.isEqualNode(doc2)&quot;)
-    })
-    internalSubset.done()
-  }
-}
-&lt;/script&gt;
-&lt;iframe id=&quot;subset1&quot; onload=&quot;iframeLoaded()&quot; src=&quot;Node-isEqualNode-iframe1.xml&quot; /&gt;
-&lt;iframe id=&quot;subset2&quot; onload=&quot;iframeLoaded()&quot; src=&quot;Node-isEqualNode-iframe2.xml&quot; /&gt;
-&lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesattributesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/attributes-expected.txt (196078 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/attributes-expected.txt        2016-02-03 21:26:33 UTC (rev 196078)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/attributes-expected.txt        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> 
</span><del>-FAIL AttrExodus assert_false: expected false got true
</del><ins>+FAIL AttrExodus assert_false: should not be a Node expected false got true
</ins><span class="cx"> PASS When qualifiedName does not match the Name production, an INVALID_CHARACTER_ERR exception is to be thrown. (setAttribute) 
</span><span class="cx"> PASS setAttribute should lowercase its name argument (upper case attribute) 
</span><span class="cx"> PASS setAttribute should lowercase its name argument (mixed case attribute) 
</span><span class="lines">@@ -39,11 +39,19 @@
</span><span class="cx"> PASS Basic functionality of getAttributeNode/getAttributeNodeNS 
</span><span class="cx"> PASS Basic functionality of setAttributeNode 
</span><span class="cx"> PASS Basic functionality of setAttributeNodeNS 
</span><ins>+FAIL If attr’s element is neither null nor element, throw an InUseAttributeError. Test bug: unrecognized DOMException code &quot;INUSE_ATTRIBUTE_ERR&quot; passed to assert_throws()
+PASS Replacing an attr by itself 
</ins><span class="cx"> PASS Basic functionality of removeAttributeNode 
</span><span class="cx"> FAIL setAttributeNode on bound attribute should throw InUseAttributeError Test bug: unrecognized DOMException code &quot;INUSE_ATTRIBUTE_ERR&quot; passed to assert_throws()
</span><ins>+PASS setAttributeNode, if it fires mutation events, should fire one with the new node when resetting an existing attribute 
+PASS setAttributeNode, if it fires mutation events, should fire one with the new node when resetting an existing attribute (outer shell) 
+PASS setAttributeNode called with an Attr that has the same name as an existing one should not change attribute order 
</ins><span class="cx"> FAIL getAttributeNames tests el.getAttributeNames is not a function. (In 'el.getAttributeNames()', 'el.getAttributeNames' is undefined)
</span><span class="cx"> FAIL Own property correctness with basic attributes assert_array_equals: lengths differ, expected 2 got 3
</span><span class="cx"> FAIL Own property correctness with non-namespaced attribute before same-name namespaced one assert_array_equals: lengths differ, expected 3 got 4
</span><span class="cx"> FAIL Own property correctness with namespaced attribute before same-name non-namespaced one assert_array_equals: lengths differ, expected 3 got 4
</span><span class="cx"> FAIL Own property correctness with two namespaced attributes with the same name-with-prefix assert_array_equals: lengths differ, expected 3 got 4
</span><ins>+FAIL Own property names should only include all-lowercase qualified names for an HTML element in an HTML document assert_array_equals: lengths differ, expected 8 got 7
+FAIL Own property names should include all qualified names for a non-HTML element in an HTML document assert_array_equals: lengths differ, expected 12 got 7
+FAIL Own property names should include all qualified names for an HTML element in a non-HTML document assert_array_equals: lengths differ, expected 12 got 7
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesattributeshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/attributes.html (196078 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/attributes.html        2016-02-03 21:26:33 UTC (rev 196078)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/attributes.html        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -19,12 +19,17 @@
</span><span class="cx"> test(function() {
</span><span class="cx">   document.body.setAttribute(&quot;abc&quot;, &quot;pass&quot;)
</span><span class="cx">   var attr = document.body.attributes[0]
</span><del>-  assert_true(attr instanceof Attr)
-  assert_false(attr instanceof Node)
-  assert_throws(new TypeError(), function() { attr.appendChild(document.createTextNode(&quot;fail&quot;)) })
-  assert_throws(new TypeError(), function() { attr.appendChild(null) })
</del><ins>+  assert_true(attr instanceof Attr, &quot;should be an Attr&quot;)
+  assert_false(attr instanceof Node, &quot;should not be a Node&quot;)
+  var removed_members = [
+    &quot;appendChild&quot;,
+    &quot;insertBefore&quot;,
+    &quot;childNodes&quot;,
+  ]
+  removed_members.forEach(function(m) {
+    assert_false(m in attr, m + &quot; should not be supported&quot;)
+  })
</ins><span class="cx">   assert_equals(attr.value, &quot;pass&quot;)
</span><del>-  assert_false(&quot;childNodes&quot; in attr, &quot;Should not have childNodes&quot;)
</del><span class="cx"> }, &quot;AttrExodus&quot;)
</span><span class="cx"> 
</span><span class="cx"> // setAttribute exhaustive tests
</span><span class="lines">@@ -442,6 +447,26 @@
</span><span class="cx"> }, &quot;Basic functionality of setAttributeNodeNS&quot;)
</span><span class="cx"> 
</span><span class="cx"> test(function() {
</span><ins>+  var el = document.createElement(&quot;div&quot;);
+  var other = document.createElement(&quot;div&quot;);
+  attr = document.createAttribute(&quot;foo&quot;);
+  assert_equals(el.setAttributeNode(attr), null);
+  assert_equals(attr.ownerElement, el);
+  assert_throws(&quot;INUSE_ATTRIBUTE_ERR&quot;,
+                  function() { other.setAttributeNode(attr) },
+                  &quot;Attribute already associated with el&quot;)
+}, &quot;If attr’s element is neither null nor element, throw an InUseAttributeError.&quot;);
+
+test(function() {
+  var el = document.createElement(&quot;div&quot;);
+  attr = document.createAttribute(&quot;foo&quot;);
+  assert_equals(el.setAttributeNode(attr), null);
+  el.setAttribute(&quot;bar&quot;, &quot;qux&quot;);
+  assert_equals(el.setAttributeNode(attr), attr);
+  assert_equals(el.attributes[0], attr);
+}, &quot;Replacing an attr by itself&quot;);
+
+test(function() {
</ins><span class="cx">   var el = document.createElement(&quot;div&quot;)
</span><span class="cx">   el.setAttribute(&quot;foo&quot;, &quot;bar&quot;)
</span><span class="cx">   var attrNode = el.getAttributeNode(&quot;foo&quot;);
</span><span class="lines">@@ -460,6 +485,60 @@
</span><span class="cx">   assert_throws(&quot;INUSE_ATTRIBUTE_ERR&quot;, function(){el2.setAttributeNode(attrNode)});
</span><span class="cx"> }, &quot;setAttributeNode on bound attribute should throw InUseAttributeError&quot;)
</span><span class="cx"> 
</span><ins>+// Have to use an async_test to see what a DOMAttrModified listener sees,
+// because otherwise the event dispatch code will swallow our exceptions.  And
+// we want to make sure this test always happens, even when no mutation events
+// run.
+var setAttributeNode_mutation_test = async_test(&quot;setAttributeNode, if it fires mutation events, should fire one with the new node when resetting an existing attribute&quot;);
+
+test(function(){
+  var el = document.createElement(&quot;div&quot;)
+  var attrNode1 = document.createAttribute(&quot;foo&quot;);
+  attrNode1.value = &quot;bar&quot;;
+  el.setAttributeNode(attrNode1);
+  var attrNode2 = document.createAttribute(&quot;foo&quot;);
+  attrNode2.value = &quot;baz&quot;;
+
+  el.addEventListener(&quot;DOMAttrModified&quot;, function(e) {
+    // If this never gets called, that's OK, I guess.  But if it gets called, it
+    // better represent a single modification with attrNode2 as the relatedNode.
+    // We have to do an inner test() call here, because otherwise the exceptions
+    // our asserts trigger will get swallowed by the event dispatch code.
+    setAttributeNode_mutation_test.step(function() {
+      assert_equals(e.attrName, &quot;foo&quot;);
+      assert_equals(e.attrChange, MutationEvent.MODIFICATION);
+      assert_equals(e.prevValue, &quot;bar&quot;);
+      assert_equals(e.newValue, &quot;baz&quot;);
+      assert_equals(e.relatedNode, attrNode2);
+    });
+  });
+
+  var oldNode = el.setAttributeNode(attrNode2);
+  assert_equals(oldNode, attrNode1,
+                &quot;Must return the old attr node from a setAttributeNode call&quot;);
+}, &quot;setAttributeNode, if it fires mutation events, should fire one with the new node when resetting an existing attribute (outer shell)&quot;);
+setAttributeNode_mutation_test.done();
+
+test(function(){
+  var el = document.createElement(&quot;div&quot;)
+  el.setAttribute(&quot;a&quot;, &quot;b&quot;);
+  el.setAttribute(&quot;c&quot;, &quot;d&quot;);
+
+  assert_array_equals(Array.prototype.map.call(el.attributes, function(a) { return a.name }),
+                      [&quot;a&quot;, &quot;c&quot;]);
+  assert_array_equals(Array.prototype.map.call(el.attributes, function(a) { return a.value }),
+                      [&quot;b&quot;, &quot;d&quot;]);
+
+  var attrNode = document.createAttribute(&quot;a&quot;);
+  attrNode.value = &quot;e&quot;;
+  el.setAttributeNode(attrNode);
+
+  assert_array_equals(Array.prototype.map.call(el.attributes, function(a) { return a.name }),
+                      [&quot;a&quot;, &quot;c&quot;]);
+  assert_array_equals(Array.prototype.map.call(el.attributes, function(a) { return a.value }),
+                      [&quot;e&quot;, &quot;d&quot;]);
+}, &quot;setAttributeNode called with an Attr that has the same name as an existing one should not change attribute order&quot;);
+
</ins><span class="cx"> test(function() {
</span><span class="cx">   var el = document.createElement(&quot;div&quot;);
</span><span class="cx">   el.setAttribute(&quot;foo&quot;, &quot;bar&quot;);
</span><span class="lines">@@ -532,6 +611,10 @@
</span><span class="cx">                       [&quot;0&quot;, &quot;1&quot;, &quot;2&quot;])
</span><span class="cx">   assert_array_equals(Object.getOwnPropertyNames(el.attributes),
</span><span class="cx">                       [&quot;0&quot;, &quot;1&quot;, &quot;2&quot;, &quot;a&quot;, &quot;b&quot;])
</span><ins>+  for (var propName of Object.getOwnPropertyNames(el.attributes)) {
+    assert_true(el.attributes[propName] instanceof Attr,
+                &quot;el.attributes has an Attr for property name &quot; + propName);
+  }
</ins><span class="cx"> }, &quot;Own property correctness with non-namespaced attribute before same-name namespaced one&quot;);
</span><span class="cx"> 
</span><span class="cx"> test(function() {
</span><span class="lines">@@ -545,6 +628,10 @@
</span><span class="cx">                       [&quot;0&quot;, &quot;1&quot;, &quot;2&quot;])
</span><span class="cx">   assert_array_equals(Object.getOwnPropertyNames(el.attributes),
</span><span class="cx">                       [&quot;0&quot;, &quot;1&quot;, &quot;2&quot;, &quot;a&quot;, &quot;b&quot;])
</span><ins>+  for (var propName of Object.getOwnPropertyNames(el.attributes)) {
+    assert_true(el.attributes[propName] instanceof Attr,
+                &quot;el.attributes has an Attr for property name &quot; + propName);
+  }
</ins><span class="cx"> }, &quot;Own property correctness with namespaced attribute before same-name non-namespaced one&quot;);
</span><span class="cx"> 
</span><span class="cx"> test(function() {
</span><span class="lines">@@ -558,5 +645,59 @@
</span><span class="cx">                       [&quot;0&quot;, &quot;1&quot;, &quot;2&quot;])
</span><span class="cx">   assert_array_equals(Object.getOwnPropertyNames(el.attributes),
</span><span class="cx">                       [&quot;0&quot;, &quot;1&quot;, &quot;2&quot;, &quot;a:b&quot;, &quot;c:d&quot;])
</span><ins>+  for (var propName of Object.getOwnPropertyNames(el.attributes)) {
+    assert_true(el.attributes[propName] instanceof Attr,
+                &quot;el.attributes has an Attr for property name &quot; + propName);
+  }
</ins><span class="cx"> }, &quot;Own property correctness with two namespaced attributes with the same name-with-prefix&quot;);
</span><ins>+
+test(function() {
+  var el = document.createElement(&quot;div&quot;);
+  el.setAttributeNS(&quot;foo&quot;, &quot;A:B&quot;, &quot;&quot;);
+  el.setAttributeNS(&quot;bar&quot;, &quot;c:D&quot;, &quot;&quot;);
+  el.setAttributeNS(&quot;baz&quot;, &quot;e:F&quot;, &quot;&quot;);
+  el.setAttributeNS(&quot;qux&quot;, &quot;g:h&quot;, &quot;&quot;);
+  el.setAttributeNS(&quot;&quot;, &quot;I&quot;, &quot;&quot;);
+  el.setAttributeNS(&quot;&quot;, &quot;j&quot;, &quot;&quot;);
+  assert_array_equals(Object.getOwnPropertyNames(el.attributes),
+                      [&quot;0&quot;, &quot;1&quot;, &quot;2&quot;, &quot;3&quot;, &quot;4&quot;, &quot;5&quot;, &quot;g:h&quot;, &quot;j&quot;])
+  for (var propName of Object.getOwnPropertyNames(el.attributes)) {
+    assert_true(el.attributes[propName] instanceof Attr,
+                &quot;el.attributes has an Attr for property name &quot; + propName);
+  }
+}, &quot;Own property names should only include all-lowercase qualified names for an HTML element in an HTML document&quot;);
+
+test(function() {
+  var el = document.createElementNS(&quot;&quot;, &quot;div&quot;);
+  el.setAttributeNS(&quot;foo&quot;, &quot;A:B&quot;, &quot;&quot;);
+  el.setAttributeNS(&quot;bar&quot;, &quot;c:D&quot;, &quot;&quot;);
+  el.setAttributeNS(&quot;baz&quot;, &quot;e:F&quot;, &quot;&quot;);
+  el.setAttributeNS(&quot;qux&quot;, &quot;g:h&quot;, &quot;&quot;);
+  el.setAttributeNS(&quot;&quot;, &quot;I&quot;, &quot;&quot;);
+  el.setAttributeNS(&quot;&quot;, &quot;j&quot;, &quot;&quot;);
+  assert_array_equals(Object.getOwnPropertyNames(el.attributes),
+                      [&quot;0&quot;, &quot;1&quot;, &quot;2&quot;, &quot;3&quot;, &quot;4&quot;, &quot;5&quot;, &quot;A:B&quot;, &quot;c:D&quot;, &quot;e:F&quot;, &quot;g:h&quot;, &quot;I&quot;, &quot;j&quot;])
+  for (var propName of Object.getOwnPropertyNames(el.attributes)) {
+    assert_true(el.attributes[propName] instanceof Attr,
+                &quot;el.attributes has an Attr for property name &quot; + propName);
+  }
+}, &quot;Own property names should include all qualified names for a non-HTML element in an HTML document&quot;);
+
+test(function() {
+  var doc = document.implementation.createDocument(null, &quot;&quot;);
+  assert_equals(doc.contentType, &quot;application/xml&quot;);
+  var el = doc.createElementNS(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;div&quot;);
+  el.setAttributeNS(&quot;foo&quot;, &quot;A:B&quot;, &quot;&quot;);
+  el.setAttributeNS(&quot;bar&quot;, &quot;c:D&quot;, &quot;&quot;);
+  el.setAttributeNS(&quot;baz&quot;, &quot;e:F&quot;, &quot;&quot;);
+  el.setAttributeNS(&quot;qux&quot;, &quot;g:h&quot;, &quot;&quot;);
+  el.setAttributeNS(&quot;&quot;, &quot;I&quot;, &quot;&quot;);
+  el.setAttributeNS(&quot;&quot;, &quot;j&quot;, &quot;&quot;);
+  assert_array_equals(Object.getOwnPropertyNames(el.attributes),
+                      [&quot;0&quot;, &quot;1&quot;, &quot;2&quot;, &quot;3&quot;, &quot;4&quot;, &quot;5&quot;, &quot;A:B&quot;, &quot;c:D&quot;, &quot;e:F&quot;, &quot;g:h&quot;, &quot;I&quot;, &quot;j&quot;])
+  for (var propName of Object.getOwnPropertyNames(el.attributes)) {
+    assert_true(el.attributes[propName] instanceof Attr,
+                &quot;el.attributes has an Attr for property name &quot; + propName);
+  }
+}, &quot;Own property names should include all qualified names for an HTML element in a non-HTML document&quot;);
</ins><span class="cx"> &lt;/script&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/w3c-import.log (196078 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/w3c-import.log        2016-02-03 21:26:33 UTC (rev 196078)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/w3c-import.log        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -114,9 +114,11 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-compareDocumentPosition.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-constants.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains.xml
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-insertBefore.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-iframe1.xml
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-iframe2.xml
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode.xhtml
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-lookupNamespaceURI.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-lookupPrefix.xhtml
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeconstructorexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-constructor-expected.txt (0 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-constructor-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-constructor-expected.txt        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Range constructor test 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeconstructorhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-constructor.html (0 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-constructor.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-constructor.html        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Range constructor test&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+
+test(function() {
+    var range = new Range();
+    assert_equals(range.startContainer, document, &quot;startContainer&quot;);
+    assert_equals(range.endContainer, document, &quot;endContainer&quot;);
+    assert_equals(range.startOffset, 0, &quot;startOffset&quot;);
+    assert_equals(range.endOffset, 0, &quot;endOffset&quot;);
+    assert_true(range.collapsed, &quot;collapsed&quot;);
+    assert_equals(range.commonAncestorContainer, document,
+                  &quot;commonAncestorContainer&quot;);
+});
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/w3c-import.log (196078 => 196079)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/w3c-import.log        2016-02-03 21:26:33 UTC (rev 196078)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/w3c-import.log        2016-02-03 21:54:36 UTC (rev 196079)
</span><span class="lines">@@ -24,6 +24,7 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-compareBoundaryPoints.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-comparePoint-2.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-comparePoint.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-constructor.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-deleteContents.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-detach.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-extractContents.html
</span></span></pre>
</div>
</div>

</body>
</html>