<!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>[189765] trunk</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/189765">189765</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2015-09-14 17:30:03 -0700 (Mon, 14 Sep 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Document.createNodeIterator(null) / Document.createTreeWalker(null) should throw a TypeError
https://bugs.webkit.org/show_bug.cgi?id=149126
&lt;rdar://problem/22564891&gt;

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C test now that a new check is passing.

* web-platform-tests/dom/traversal/TreeWalker-basic-expected.txt:

Source/WebCore:

Document.createNodeIterator(null) / Document.createTreeWalker(null)
should throw a TypeError:
https://dom.spec.whatwg.org/#interface-document

This is because the parameter is not nullable and Web IDL says we
should throw a TypeError in this case.

Firefox and Chrome throw an exception in this case. This patch
aligns our behavior with the specification and other major browsers.

No new tests, already covered by existing W3C test.

* dom/Document.cpp:
(WebCore::Document::createNodeIterator):
(WebCore::Document::createTreeWalker):
* dom/Document.h:
* dom/Document.idl:
* dom/NodeIterator.cpp:
(WebCore::NodeIterator::NodeIterator):
* dom/NodeIterator.h:
(WebCore::NodeIterator::create):
* dom/Traversal.cpp:
(WebCore::NodeIteratorBase::NodeIteratorBase):
* dom/Traversal.h:
* dom/TreeWalker.cpp:
(WebCore::TreeWalker::TreeWalker):
* dom/TreeWalker.h:
(WebCore::TreeWalker::create):

LayoutTests:

Update existing tests to add test coverage for this case.

* fast/dom/createNodeIterator-parameters-expected.txt:
* fast/dom/createNodeIterator-parameters.html:
* fast/dom/createTreeWalker-parameters-expected.txt:
* fast/dom/createTreeWalker-parameters.html:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsfastdomcreateNodeIteratorparametersexpectedtxt">trunk/LayoutTests/fast/dom/createNodeIterator-parameters-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomcreateNodeIteratorparametershtml">trunk/LayoutTests/fast/dom/createNodeIterator-parameters.html</a></li>
<li><a href="#trunkLayoutTestsfastdomcreateTreeWalkerparametersexpectedtxt">trunk/LayoutTests/fast/dom/createTreeWalker-parameters-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomcreateTreeWalkerparametershtml">trunk/LayoutTests/fast/dom/createTreeWalker-parameters.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cChangeLog">trunk/LayoutTests/imported/w3c/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkerbasicexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-basic-expected.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoredomDocumentcpp">trunk/Source/WebCore/dom/Document.cpp</a></li>
<li><a href="#trunkSourceWebCoredomDocumenth">trunk/Source/WebCore/dom/Document.h</a></li>
<li><a href="#trunkSourceWebCoredomDocumentidl">trunk/Source/WebCore/dom/Document.idl</a></li>
<li><a href="#trunkSourceWebCoredomNodeIteratorcpp">trunk/Source/WebCore/dom/NodeIterator.cpp</a></li>
<li><a href="#trunkSourceWebCoredomNodeIteratorh">trunk/Source/WebCore/dom/NodeIterator.h</a></li>
<li><a href="#trunkSourceWebCoredomTraversalcpp">trunk/Source/WebCore/dom/Traversal.cpp</a></li>
<li><a href="#trunkSourceWebCoredomTraversalh">trunk/Source/WebCore/dom/Traversal.h</a></li>
<li><a href="#trunkSourceWebCoredomTreeWalkercpp">trunk/Source/WebCore/dom/TreeWalker.cpp</a></li>
<li><a href="#trunkSourceWebCoredomTreeWalkerh">trunk/Source/WebCore/dom/TreeWalker.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (189764 => 189765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2015-09-15 00:29:00 UTC (rev 189764)
+++ trunk/LayoutTests/ChangeLog        2015-09-15 00:30:03 UTC (rev 189765)
</span><span class="lines">@@ -1,5 +1,20 @@
</span><span class="cx"> 2015-09-14  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Document.createNodeIterator(null) / Document.createTreeWalker(null) should throw a TypeError
+        https://bugs.webkit.org/show_bug.cgi?id=149126
+        &lt;rdar://problem/22564891&gt;
+
+        Reviewed by Ryosuke Niwa.
+
+        Update existing tests to add test coverage for this case.
+
+        * fast/dom/createNodeIterator-parameters-expected.txt:
+        * fast/dom/createNodeIterator-parameters.html:
+        * fast/dom/createTreeWalker-parameters-expected.txt:
+        * fast/dom/createTreeWalker-parameters.html:
+
+2015-09-14  Chris Dumez  &lt;cdumez@apple.com&gt;
+
</ins><span class="cx">         window.HTMLDetailsElement should exist
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=149139
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomcreateNodeIteratorparametersexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/createNodeIterator-parameters-expected.txt (189764 => 189765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/createNodeIterator-parameters-expected.txt        2015-09-15 00:29:00 UTC (rev 189764)
+++ trunk/LayoutTests/fast/dom/createNodeIterator-parameters-expected.txt        2015-09-15 00:30:03 UTC (rev 189765)
</span><span class="lines">@@ -3,9 +3,12 @@
</span><span class="cx"> On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-* No parameters
</del><ins>+No parameters
</ins><span class="cx"> PASS document.createNodeIterator() threw exception TypeError: Not enough arguments.
</span><span class="cx"> 
</span><ins>+Null root node
+PASS document.createNodeIterator(null) threw exception TypeError: Type error.
+
</ins><span class="cx"> Default parameters
</span><span class="cx"> iterator = document.createNodeIterator(document)
</span><span class="cx"> PASS iterator.root is document
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomcreateNodeIteratorparametershtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/createNodeIterator-parameters.html (189764 => 189765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/createNodeIterator-parameters.html        2015-09-15 00:29:00 UTC (rev 189764)
+++ trunk/LayoutTests/fast/dom/createNodeIterator-parameters.html        2015-09-15 00:30:03 UTC (rev 189765)
</span><span class="lines">@@ -5,9 +5,13 @@
</span><span class="cx"> &lt;script&gt;
</span><span class="cx"> description(&quot;Tests parameters of document.createNodeIterator() API.&quot;);
</span><span class="cx"> 
</span><del>-debug(&quot;* No parameters&quot;);
</del><ins>+debug(&quot;No parameters&quot;);
</ins><span class="cx"> shouldThrow(&quot;document.createNodeIterator()&quot;, &quot;'TypeError: Not enough arguments'&quot;);
</span><span class="cx"> 
</span><ins>+debug(&quot;&quot;)
+debug(&quot;Null root node&quot;);
+shouldThrow(&quot;document.createNodeIterator(null)&quot;, &quot;'TypeError: Type error'&quot;);
+
</ins><span class="cx"> debug(&quot;&quot;);
</span><span class="cx"> debug(&quot;Default parameters&quot;);
</span><span class="cx"> evalAndLog(&quot;iterator = document.createNodeIterator(document)&quot;);
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomcreateTreeWalkerparametersexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/createTreeWalker-parameters-expected.txt (189764 => 189765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/createTreeWalker-parameters-expected.txt        2015-09-15 00:29:00 UTC (rev 189764)
+++ trunk/LayoutTests/fast/dom/createTreeWalker-parameters-expected.txt        2015-09-15 00:30:03 UTC (rev 189765)
</span><span class="lines">@@ -3,9 +3,12 @@
</span><span class="cx"> On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-* No parameters
</del><ins>+No parameters
</ins><span class="cx"> PASS document.createTreeWalker() threw exception TypeError: Not enough arguments.
</span><span class="cx"> 
</span><ins>+Null root node
+PASS document.createTreeWalker(null) threw exception TypeError: Type error.
+
</ins><span class="cx"> Default parameters
</span><span class="cx"> walker = document.createTreeWalker(document)
</span><span class="cx"> PASS walker.root is document
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomcreateTreeWalkerparametershtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/createTreeWalker-parameters.html (189764 => 189765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/createTreeWalker-parameters.html        2015-09-15 00:29:00 UTC (rev 189764)
+++ trunk/LayoutTests/fast/dom/createTreeWalker-parameters.html        2015-09-15 00:30:03 UTC (rev 189765)
</span><span class="lines">@@ -5,9 +5,13 @@
</span><span class="cx"> &lt;script&gt;
</span><span class="cx"> description(&quot;Tests parameters of document.createTreeWalker() API.&quot;);
</span><span class="cx"> 
</span><del>-debug(&quot;* No parameters&quot;);
</del><ins>+debug(&quot;No parameters&quot;);
</ins><span class="cx"> shouldThrow(&quot;document.createTreeWalker()&quot;, &quot;'TypeError: Not enough arguments'&quot;);
</span><span class="cx"> 
</span><ins>+debug(&quot;&quot;)
+debug(&quot;Null root node&quot;);
+shouldThrow(&quot;document.createTreeWalker(null)&quot;, &quot;'TypeError: Type error'&quot;);
+
</ins><span class="cx"> debug(&quot;&quot;);
</span><span class="cx"> debug(&quot;Default parameters&quot;);
</span><span class="cx"> evalAndLog(&quot;walker = document.createTreeWalker(document)&quot;);
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (189764 => 189765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog        2015-09-15 00:29:00 UTC (rev 189764)
+++ trunk/LayoutTests/imported/w3c/ChangeLog        2015-09-15 00:30:03 UTC (rev 189765)
</span><span class="lines">@@ -1,5 +1,17 @@
</span><span class="cx"> 2015-09-14  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Document.createNodeIterator(null) / Document.createTreeWalker(null) should throw a TypeError
+        https://bugs.webkit.org/show_bug.cgi?id=149126
+        &lt;rdar://problem/22564891&gt;
+
+        Reviewed by Ryosuke Niwa.
+
+        Rebaseline W3C test now that a new check is passing.
+
+        * web-platform-tests/dom/traversal/TreeWalker-basic-expected.txt:
+
+2015-09-14  Chris Dumez  &lt;cdumez@apple.com&gt;
+
</ins><span class="cx">         window.HTMLDetailsElement should exist
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=149139
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkerbasicexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-basic-expected.txt (189764 => 189765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-basic-expected.txt        2015-09-15 00:29:00 UTC (rev 189764)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-basic-expected.txt        2015-09-15 00:30:03 UTC (rev 189765)
</span><span class="lines">@@ -4,7 +4,7 @@
</span><span class="cx"> PASS Construct a TreeWalker by document.createTreeWalker(root). 
</span><span class="cx"> PASS Construct a TreeWalker by document.createTreeWalker(root, null, null). 
</span><span class="cx"> FAIL Construct a TreeWalker by document.createTreeWalker(root, undefined, undefined). assert_equals: whatToShow expected 4294967295 but got 0
</span><del>-FAIL Give an invalid root node to document.createTreeWalker(). assert_throws: function &quot;function () { document.createTreeWalker(null); }&quot; did not throw
</del><ins>+PASS Give an invalid root node to document.createTreeWalker(). 
</ins><span class="cx"> PASS Walk over nodes. 
</span><span class="cx"> PASS Optional arguments to createTreeWalker should be optional (3 passed, null). 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (189764 => 189765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-09-15 00:29:00 UTC (rev 189764)
+++ trunk/Source/WebCore/ChangeLog        2015-09-15 00:30:03 UTC (rev 189765)
</span><span class="lines">@@ -1,3 +1,40 @@
</span><ins>+2015-09-14  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Document.createNodeIterator(null) / Document.createTreeWalker(null) should throw a TypeError
+        https://bugs.webkit.org/show_bug.cgi?id=149126
+        &lt;rdar://problem/22564891&gt;
+
+        Reviewed by Ryosuke Niwa.
+
+        Document.createNodeIterator(null) / Document.createTreeWalker(null)
+        should throw a TypeError:
+        https://dom.spec.whatwg.org/#interface-document
+
+        This is because the parameter is not nullable and Web IDL says we
+        should throw a TypeError in this case.
+
+        Firefox and Chrome throw an exception in this case. This patch
+        aligns our behavior with the specification and other major browsers.
+
+        No new tests, already covered by existing W3C test.
+
+        * dom/Document.cpp:
+        (WebCore::Document::createNodeIterator):
+        (WebCore::Document::createTreeWalker):
+        * dom/Document.h:
+        * dom/Document.idl:
+        * dom/NodeIterator.cpp:
+        (WebCore::NodeIterator::NodeIterator):
+        * dom/NodeIterator.h:
+        (WebCore::NodeIterator::create):
+        * dom/Traversal.cpp:
+        (WebCore::NodeIteratorBase::NodeIteratorBase):
+        * dom/Traversal.h:
+        * dom/TreeWalker.cpp:
+        (WebCore::TreeWalker::TreeWalker):
+        * dom/TreeWalker.h:
+        (WebCore::TreeWalker::create):
+
</ins><span class="cx"> 2015-09-14  Alex Christensen  &lt;achristensen@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Fix Windows clean build after r189746
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.cpp (189764 => 189765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.cpp        2015-09-15 00:29:00 UTC (rev 189764)
+++ trunk/Source/WebCore/dom/Document.cpp        2015-09-15 00:30:03 UTC (rev 189765)
</span><span class="lines">@@ -1720,16 +1720,54 @@
</span><span class="cx">     return Range::create(*this);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;NodeIterator&gt; Document::createNodeIterator(Node* root, unsigned long whatToShow, PassRefPtr&lt;NodeFilter&gt; filter, bool expandEntityReferences)
</del><ins>+RefPtr&lt;NodeIterator&gt; Document::createNodeIterator(Node* root, unsigned long whatToShow, RefPtr&lt;NodeFilter&gt;&amp;&amp; filter, bool expandEntityReferences, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><del>-    return NodeIterator::create(root, whatToShow, filter, expandEntityReferences);
</del><ins>+    if (!root) {
+        ec = TypeError;
+        return nullptr;
+    }
+    return NodeIterator::create(root, whatToShow, WTF::move(filter), expandEntityReferences);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;TreeWalker&gt; Document::createTreeWalker(Node* root, unsigned long whatToShow, PassRefPtr&lt;NodeFilter&gt; filter, bool expandEntityReferences)
</del><ins>+RefPtr&lt;NodeIterator&gt; Document::createNodeIterator(Node* root, unsigned long whatToShow, RefPtr&lt;NodeFilter&gt;&amp;&amp; filter, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><del>-    return TreeWalker::create(root, whatToShow, filter, expandEntityReferences);
</del><ins>+    return createNodeIterator(root, whatToShow, WTF::move(filter), false, ec);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+RefPtr&lt;NodeIterator&gt; Document::createNodeIterator(Node* root, unsigned long whatToShow, ExceptionCode&amp; ec)
+{
+    return createNodeIterator(root, whatToShow, nullptr, false, ec);
+}
+
+RefPtr&lt;NodeIterator&gt; Document::createNodeIterator(Node* root, ExceptionCode&amp; ec)
+{
+    return createNodeIterator(root, 0xFFFFFFFF, nullptr, false, ec);
+}
+
+RefPtr&lt;TreeWalker&gt; Document::createTreeWalker(Node* root, unsigned long whatToShow, RefPtr&lt;NodeFilter&gt;&amp;&amp; filter, bool expandEntityReferences, ExceptionCode&amp; ec)
+{
+    if (!root) {
+        ec = TypeError;
+        return nullptr;
+    }
+    return TreeWalker::create(root, whatToShow, WTF::move(filter), expandEntityReferences);
+}
+
+RefPtr&lt;TreeWalker&gt; Document::createTreeWalker(Node* root, unsigned long whatToShow, RefPtr&lt;NodeFilter&gt;&amp;&amp; filter, ExceptionCode&amp; ec)
+{
+    return createTreeWalker(root, whatToShow, WTF::move(filter), false, ec);
+}
+
+RefPtr&lt;TreeWalker&gt; Document::createTreeWalker(Node* root, unsigned long whatToShow, ExceptionCode&amp; ec)
+{
+    return createTreeWalker(root, whatToShow, nullptr, false, ec);
+}
+
+RefPtr&lt;TreeWalker&gt; Document::createTreeWalker(Node* root, ExceptionCode&amp; ec)
+{
+    return createTreeWalker(root, 0xFFFFFFFF, nullptr, false, ec);
+}
+
</ins><span class="cx"> void Document::scheduleForcedStyleRecalc()
</span><span class="cx"> {
</span><span class="cx">     m_pendingStyleRecalcShouldForce = true;
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.h (189764 => 189765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.h        2015-09-15 00:29:00 UTC (rev 189764)
+++ trunk/Source/WebCore/dom/Document.h        2015-09-15 00:30:03 UTC (rev 189765)
</span><span class="lines">@@ -533,9 +533,15 @@
</span><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT Ref&lt;Range&gt; createRange();
</span><span class="cx"> 
</span><del>-    RefPtr&lt;NodeIterator&gt; createNodeIterator(Node* root, unsigned long whatToShow = 0xFFFFFFFF, PassRefPtr&lt;NodeFilter&gt; = nullptr, bool expandEntityReferences = false);
</del><ins>+    RefPtr&lt;NodeIterator&gt; createNodeIterator(Node* root, unsigned long whatToShow, RefPtr&lt;NodeFilter&gt;&amp;&amp;, bool expandEntityReferences, ExceptionCode&amp;);
+    RefPtr&lt;NodeIterator&gt; createNodeIterator(Node* root, unsigned long whatToShow, RefPtr&lt;NodeFilter&gt;&amp;&amp;, ExceptionCode&amp;);
+    RefPtr&lt;NodeIterator&gt; createNodeIterator(Node* root, unsigned long whatToShow, ExceptionCode&amp;);
+    RefPtr&lt;NodeIterator&gt; createNodeIterator(Node* root, ExceptionCode&amp;);
</ins><span class="cx"> 
</span><del>-    RefPtr&lt;TreeWalker&gt; createTreeWalker(Node* root, unsigned long whatToShow = 0xFFFFFFFF, PassRefPtr&lt;NodeFilter&gt; = nullptr, bool expandEntityReferences = false);
</del><ins>+    RefPtr&lt;TreeWalker&gt; createTreeWalker(Node* root, unsigned long whatToShow, RefPtr&lt;NodeFilter&gt;&amp;&amp;, bool expandEntityReferences, ExceptionCode&amp;);
+    RefPtr&lt;TreeWalker&gt; createTreeWalker(Node* root, unsigned long whatToShow, RefPtr&lt;NodeFilter&gt;&amp;&amp;, ExceptionCode&amp;);
+    RefPtr&lt;TreeWalker&gt; createTreeWalker(Node* root, unsigned long whatToShow, ExceptionCode&amp;);
+    RefPtr&lt;TreeWalker&gt; createTreeWalker(Node* root, ExceptionCode&amp;);
</ins><span class="cx"> 
</span><span class="cx">     // Special support for editing
</span><span class="cx">     Ref&lt;CSSStyleDeclaration&gt; createCSSStyleDeclaration();
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.idl (189764 => 189765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.idl        2015-09-15 00:29:00 UTC (rev 189764)
+++ trunk/Source/WebCore/dom/Document.idl        2015-09-15 00:30:03 UTC (rev 189765)
</span><span class="lines">@@ -92,11 +92,11 @@
</span><span class="cx"> 
</span><span class="cx">     // DOM Level 2 Tranversal and Range (DocumentTraversal interface)
</span><span class="cx"> 
</span><del>-    [ObjCLegacyUnnamedParameters] NodeIterator createNodeIterator(Node root,
</del><ins>+    [ObjCLegacyUnnamedParameters, RaisesException] NodeIterator createNodeIterator(Node root,
</ins><span class="cx">         optional unsigned long whatToShow,
</span><span class="cx">         optional NodeFilter? filter,
</span><span class="cx">         optional boolean expandEntityReferences);
</span><del>-    [ObjCLegacyUnnamedParameters] TreeWalker createTreeWalker(Node root,
</del><ins>+    [ObjCLegacyUnnamedParameters, RaisesException] TreeWalker createTreeWalker(Node root,
</ins><span class="cx">         optional unsigned long whatToShow,
</span><span class="cx">         optional NodeFilter? filter,
</span><span class="cx">         optional boolean expandEntityReferences);
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodeIteratorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/NodeIterator.cpp (189764 => 189765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/NodeIterator.cpp        2015-09-15 00:29:00 UTC (rev 189764)
+++ trunk/Source/WebCore/dom/NodeIterator.cpp        2015-09-15 00:30:03 UTC (rev 189765)
</span><span class="lines">@@ -76,8 +76,8 @@
</span><span class="cx">     return node;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-NodeIterator::NodeIterator(PassRefPtr&lt;Node&gt; rootNode, unsigned long whatToShow, PassRefPtr&lt;NodeFilter&gt; filter, bool expandEntityReferences)
-    : NodeIteratorBase(rootNode, whatToShow, filter, expandEntityReferences)
</del><ins>+NodeIterator::NodeIterator(PassRefPtr&lt;Node&gt; rootNode, unsigned long whatToShow, RefPtr&lt;NodeFilter&gt;&amp;&amp; filter, bool expandEntityReferences)
+    : NodeIteratorBase(rootNode, whatToShow, WTF::move(filter), expandEntityReferences)
</ins><span class="cx">     , m_referenceNode(root(), true)
</span><span class="cx"> {
</span><span class="cx">     root()-&gt;document().attachNodeIterator(this);
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodeIteratorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/NodeIterator.h (189764 => 189765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/NodeIterator.h        2015-09-15 00:29:00 UTC (rev 189764)
+++ trunk/Source/WebCore/dom/NodeIterator.h        2015-09-15 00:30:03 UTC (rev 189765)
</span><span class="lines">@@ -37,9 +37,9 @@
</span><span class="cx"> 
</span><span class="cx">     class NodeIterator : public ScriptWrappable, public RefCounted&lt;NodeIterator&gt;, public NodeIteratorBase {
</span><span class="cx">     public:
</span><del>-        static Ref&lt;NodeIterator&gt; create(PassRefPtr&lt;Node&gt; rootNode, unsigned long whatToShow, PassRefPtr&lt;NodeFilter&gt; filter, bool expandEntityReferences)
</del><ins>+        static Ref&lt;NodeIterator&gt; create(PassRefPtr&lt;Node&gt; rootNode, unsigned long whatToShow, RefPtr&lt;NodeFilter&gt;&amp;&amp; filter, bool expandEntityReferences)
</ins><span class="cx">         {
</span><del>-            return adoptRef(*new NodeIterator(rootNode, whatToShow, filter, expandEntityReferences));
</del><ins>+            return adoptRef(*new NodeIterator(rootNode, whatToShow, WTF::move(filter), expandEntityReferences));
</ins><span class="cx">         }
</span><span class="cx">         ~NodeIterator();
</span><span class="cx"> 
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx">         void nodeWillBeRemoved(Node&amp;);
</span><span class="cx"> 
</span><span class="cx">     private:
</span><del>-        NodeIterator(PassRefPtr&lt;Node&gt;, unsigned long whatToShow, PassRefPtr&lt;NodeFilter&gt;, bool expandEntityReferences);
</del><ins>+        NodeIterator(PassRefPtr&lt;Node&gt;, unsigned long whatToShow, RefPtr&lt;NodeFilter&gt;&amp;&amp;, bool expandEntityReferences);
</ins><span class="cx"> 
</span><span class="cx">         struct NodePointer {
</span><span class="cx">             RefPtr&lt;Node&gt; node;
</span></span></pre></div>
<a id="trunkSourceWebCoredomTraversalcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Traversal.cpp (189764 => 189765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Traversal.cpp        2015-09-15 00:29:00 UTC (rev 189764)
+++ trunk/Source/WebCore/dom/Traversal.cpp        2015-09-15 00:30:03 UTC (rev 189765)
</span><span class="lines">@@ -30,10 +30,10 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-NodeIteratorBase::NodeIteratorBase(PassRefPtr&lt;Node&gt; rootNode, unsigned long whatToShow, PassRefPtr&lt;NodeFilter&gt; nodeFilter, bool expandEntityReferences)
</del><ins>+NodeIteratorBase::NodeIteratorBase(PassRefPtr&lt;Node&gt; rootNode, unsigned long whatToShow, RefPtr&lt;NodeFilter&gt;&amp;&amp; nodeFilter, bool expandEntityReferences)
</ins><span class="cx">     : m_root(rootNode)
</span><span class="cx">     , m_whatToShow(whatToShow)
</span><del>-    , m_filter(nodeFilter)
</del><ins>+    , m_filter(WTF::move(nodeFilter))
</ins><span class="cx">     , m_expandEntityReferences(expandEntityReferences)
</span><span class="cx"> {
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoredomTraversalh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Traversal.h (189764 => 189765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Traversal.h        2015-09-15 00:29:00 UTC (rev 189764)
+++ trunk/Source/WebCore/dom/Traversal.h        2015-09-15 00:30:03 UTC (rev 189765)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx">         bool expandEntityReferences() const { return m_expandEntityReferences; }
</span><span class="cx"> 
</span><span class="cx">     protected:
</span><del>-        NodeIteratorBase(PassRefPtr&lt;Node&gt;, unsigned long whatToShow, PassRefPtr&lt;NodeFilter&gt;, bool expandEntityReferences);
</del><ins>+        NodeIteratorBase(PassRefPtr&lt;Node&gt;, unsigned long whatToShow, RefPtr&lt;NodeFilter&gt;&amp;&amp;, bool expandEntityReferences);
</ins><span class="cx">         short acceptNode(Node*) const;
</span><span class="cx"> 
</span><span class="cx">     private:
</span></span></pre></div>
<a id="trunkSourceWebCoredomTreeWalkercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/TreeWalker.cpp (189764 => 189765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/TreeWalker.cpp        2015-09-15 00:29:00 UTC (rev 189764)
+++ trunk/Source/WebCore/dom/TreeWalker.cpp        2015-09-15 00:30:03 UTC (rev 189765)
</span><span class="lines">@@ -33,8 +33,8 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-TreeWalker::TreeWalker(PassRefPtr&lt;Node&gt; rootNode, unsigned long whatToShow, PassRefPtr&lt;NodeFilter&gt; filter, bool expandEntityReferences)
-    : NodeIteratorBase(rootNode, whatToShow, filter, expandEntityReferences)
</del><ins>+TreeWalker::TreeWalker(PassRefPtr&lt;Node&gt; rootNode, unsigned long whatToShow, RefPtr&lt;NodeFilter&gt;&amp;&amp; filter, bool expandEntityReferences)
+    : NodeIteratorBase(rootNode, whatToShow, WTF::move(filter), expandEntityReferences)
</ins><span class="cx">     , m_current(root())
</span><span class="cx"> {
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoredomTreeWalkerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/TreeWalker.h (189764 => 189765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/TreeWalker.h        2015-09-15 00:29:00 UTC (rev 189764)
+++ trunk/Source/WebCore/dom/TreeWalker.h        2015-09-15 00:30:03 UTC (rev 189765)
</span><span class="lines">@@ -37,9 +37,9 @@
</span><span class="cx"> 
</span><span class="cx">     class TreeWalker : public ScriptWrappable, public RefCounted&lt;TreeWalker&gt;, public NodeIteratorBase {
</span><span class="cx">     public:
</span><del>-        static Ref&lt;TreeWalker&gt; create(PassRefPtr&lt;Node&gt; rootNode, unsigned long whatToShow, PassRefPtr&lt;NodeFilter&gt; filter, bool expandEntityReferences)
</del><ins>+        static Ref&lt;TreeWalker&gt; create(PassRefPtr&lt;Node&gt; rootNode, unsigned long whatToShow, RefPtr&lt;NodeFilter&gt;&amp;&amp; filter, bool expandEntityReferences)
</ins><span class="cx">         {
</span><del>-            return adoptRef(*new TreeWalker(rootNode, whatToShow, filter, expandEntityReferences));
</del><ins>+            return adoptRef(*new TreeWalker(rootNode, whatToShow, WTF::move(filter), expandEntityReferences));
</ins><span class="cx">         }                            
</span><span class="cx"> 
</span><span class="cx">         Node* currentNode() const { return m_current.get(); }
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx">         Node* nextNode();
</span><span class="cx"> 
</span><span class="cx">     private:
</span><del>-        TreeWalker(PassRefPtr&lt;Node&gt;, unsigned long whatToShow, PassRefPtr&lt;NodeFilter&gt;, bool expandEntityReferences);
</del><ins>+        TreeWalker(PassRefPtr&lt;Node&gt;, unsigned long whatToShow, RefPtr&lt;NodeFilter&gt;&amp;&amp;, bool expandEntityReferences);
</ins><span class="cx">         
</span><span class="cx">         Node* setCurrent(PassRefPtr&lt;Node&gt;);
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>