<!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>[207541] trunk/Source</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/207541">207541</a></dd>
<dt>Author</dt> <dd>darin@apple.com</dd>
<dt>Date</dt> <dd>2016-10-19 09:57:31 -0700 (Wed, 19 Oct 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Move XPath from ExceptionCode to Exception
https://bugs.webkit.org/show_bug.cgi?id=163656

Reviewed by Chris Dumez.

Source/WebCore:

* dom/Document.cpp:
(WebCore::Document::createExpression): Use ExceptionOr.
(WebCore::Document::createNSResolver): Return Ref.
(WebCore::Document::evaluate): Use ExceptionOr.
* dom/Document.h: Updated for above changes.
* dom/Document.idl: Use non-legacy exceptions for the functions above.

* inspector/InspectorNodeFinder.cpp:
(WebCore::InspectorNodeFinder::searchUsingXPath): Call XPath functions
with new interface.

* xml/DOMParser.cpp:
(WebCore::DOMParser::DOMParser): Marked inline.
(WebCore::DOMParser::create): Moved here from header.
(WebCore::DOMParser::parseFromString): Use ExceptionOr.
* xml/DOMParser.h: Updated for above changes.
* xml/DOMParser.idl: Use non-legacy exception.

* xml/XPathEvaluator.cpp:
(WebCore::XPathEvaluator::createExpression): Use ExceptionOr.
(WebCore::XPathEvaluator::evaluate): Ditto.
* xml/XPathEvaluator.h: Updated for above changes.
* xml/XPathEvaluator.idl: Use non-legacy exceptions.

* xml/XPathExpression.cpp:
(WebCore::XPathExpression::createExpression): Use ExceptionOr.
(WebCore::XPathExpression::evaluate): Ditto.
* xml/XPathExpression.h: Updated for above changes.
* xml/XPathExpression.idl: Use non-legacy exceptions.

* xml/XPathGrammar.y: Added include of XPathStep.h.

* xml/XPathParser.cpp:
(WebCore::XPath::Parser::Parser): Initialize three scalar data members
in the class definition rather than here.
(WebCore::XPath::Parser::parseStatement): Use ExceptionOr.
* xml/XPathParser.h: Updated for above changes.

* xml/XPathResult.cpp:
(WebCore::XPathResult::XPathResult): Use a reference rather than a
pointer for the document. Alao initialize two scalar data members
in the class definition rather than here.
(WebCore::XPathResult::convertTo): Use ExceptionOr.
(WebCore::XPathResult::numberValue): Ditto.
(WebCore::XPathResult::stringValue): Ditto.
(WebCore::XPathResult::booleanValue): Ditto.
(WebCore::XPathResult::singleNodeValue): Ditto.
(WebCore::XPathResult::snapshotLength): Ditto.
(WebCore::XPathResult::iterateNext): Ditto.
(WebCore::XPathResult::snapshotItem): Ditto.
* xml/XPathResult.h: Updated for the changes above.
* xml/XPathResult.idl: Use non-legacy exceptions.

Source/WebKit/mac:

* DOM/DOMDocument.mm:
(wrap): Added. Helper function for wrapping a resolver.
(-[DOMDocument createExpression:resolver:]): Use raiseOnDOMError.
(-[DOMDocument evaluate:contextNode:resolver:type:inResult:]): Ditto.
* DOM/DOMXPathExpression.mm:
(-[DOMXPathExpression evaluate:type:inResult:]): Ditto.
* DOM/DOMXPathResult.mm:
(-[DOMXPathResult numberValue]): Ditto.
(-[DOMXPathResult stringValue]): Ditto.
(-[DOMXPathResult booleanValue]): Ditto.
(-[DOMXPathResult singleNodeValue]): Ditto.
(-[DOMXPathResult snapshotLength]): Ditto.
(-[DOMXPathResult iterateNext]): Ditto.
(-[DOMXPathResult snapshotItem:]): Ditto.

Source/WebKit2:

* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocument.cpp:
(webkit_dom_document_create_expression): Use ExceptionOr.
(webkit_dom_document_evaluate): Ditto.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathExpression.cpp:
(webkit_dom_xpath_expression_evaluate): Ditto.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathResult.cpp:
(webkit_dom_xpath_result_iterate_next): Ditto.
(webkit_dom_xpath_result_snapshot_item): Ditto.
(webkit_dom_xpath_result_get_number_value): Ditto.
(webkit_dom_xpath_result_get_string_value): Ditto.
(webkit_dom_xpath_result_get_boolean_value): Ditto.
(webkit_dom_xpath_result_get_single_node_value): Ditto.
(webkit_dom_xpath_result_get_snapshot_length): Ditto.</pre>

<h3>Modified Paths</h3>
<ul>
<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="#trunkSourceWebCoreinspectorInspectorNodeFindercpp">trunk/Source/WebCore/inspector/InspectorNodeFinder.cpp</a></li>
<li><a href="#trunkSourceWebCorexmlDOMParsercpp">trunk/Source/WebCore/xml/DOMParser.cpp</a></li>
<li><a href="#trunkSourceWebCorexmlDOMParserh">trunk/Source/WebCore/xml/DOMParser.h</a></li>
<li><a href="#trunkSourceWebCorexmlDOMParseridl">trunk/Source/WebCore/xml/DOMParser.idl</a></li>
<li><a href="#trunkSourceWebCorexmlXPathEvaluatorcpp">trunk/Source/WebCore/xml/XPathEvaluator.cpp</a></li>
<li><a href="#trunkSourceWebCorexmlXPathEvaluatorh">trunk/Source/WebCore/xml/XPathEvaluator.h</a></li>
<li><a href="#trunkSourceWebCorexmlXPathEvaluatoridl">trunk/Source/WebCore/xml/XPathEvaluator.idl</a></li>
<li><a href="#trunkSourceWebCorexmlXPathExpressioncpp">trunk/Source/WebCore/xml/XPathExpression.cpp</a></li>
<li><a href="#trunkSourceWebCorexmlXPathExpressionh">trunk/Source/WebCore/xml/XPathExpression.h</a></li>
<li><a href="#trunkSourceWebCorexmlXPathExpressionidl">trunk/Source/WebCore/xml/XPathExpression.idl</a></li>
<li><a href="#trunkSourceWebCorexmlXPathGrammary">trunk/Source/WebCore/xml/XPathGrammar.y</a></li>
<li><a href="#trunkSourceWebCorexmlXPathParsercpp">trunk/Source/WebCore/xml/XPathParser.cpp</a></li>
<li><a href="#trunkSourceWebCorexmlXPathParserh">trunk/Source/WebCore/xml/XPathParser.h</a></li>
<li><a href="#trunkSourceWebCorexmlXPathResultcpp">trunk/Source/WebCore/xml/XPathResult.cpp</a></li>
<li><a href="#trunkSourceWebCorexmlXPathResulth">trunk/Source/WebCore/xml/XPathResult.h</a></li>
<li><a href="#trunkSourceWebCorexmlXPathResultidl">trunk/Source/WebCore/xml/XPathResult.idl</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMDocumentmm">trunk/Source/WebKit/mac/DOM/DOMDocument.mm</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMXPathExpressionmm">trunk/Source/WebKit/mac/DOM/DOMXPathExpression.mm</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMXPathResultmm">trunk/Source/WebKit/mac/DOM/DOMXPathResult.mm</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMDocumentcpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocument.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMXPathExpressioncpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathExpression.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMXPathResultcpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathResult.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebCore/ChangeLog        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -1,3 +1,63 @@
</span><ins>+2016-10-19  Darin Adler  &lt;darin@apple.com&gt;
+
+        Move XPath from ExceptionCode to Exception
+        https://bugs.webkit.org/show_bug.cgi?id=163656
+
+        Reviewed by Chris Dumez.
+
+        * dom/Document.cpp:
+        (WebCore::Document::createExpression): Use ExceptionOr.
+        (WebCore::Document::createNSResolver): Return Ref.
+        (WebCore::Document::evaluate): Use ExceptionOr.
+        * dom/Document.h: Updated for above changes.
+        * dom/Document.idl: Use non-legacy exceptions for the functions above.
+
+        * inspector/InspectorNodeFinder.cpp:
+        (WebCore::InspectorNodeFinder::searchUsingXPath): Call XPath functions
+        with new interface.
+
+        * xml/DOMParser.cpp:
+        (WebCore::DOMParser::DOMParser): Marked inline.
+        (WebCore::DOMParser::create): Moved here from header.
+        (WebCore::DOMParser::parseFromString): Use ExceptionOr.
+        * xml/DOMParser.h: Updated for above changes.
+        * xml/DOMParser.idl: Use non-legacy exception.
+
+        * xml/XPathEvaluator.cpp:
+        (WebCore::XPathEvaluator::createExpression): Use ExceptionOr.
+        (WebCore::XPathEvaluator::evaluate): Ditto.
+        * xml/XPathEvaluator.h: Updated for above changes.
+        * xml/XPathEvaluator.idl: Use non-legacy exceptions.
+
+        * xml/XPathExpression.cpp:
+        (WebCore::XPathExpression::createExpression): Use ExceptionOr.
+        (WebCore::XPathExpression::evaluate): Ditto.
+        * xml/XPathExpression.h: Updated for above changes.
+        * xml/XPathExpression.idl: Use non-legacy exceptions.
+
+        * xml/XPathGrammar.y: Added include of XPathStep.h.
+
+        * xml/XPathParser.cpp:
+        (WebCore::XPath::Parser::Parser): Initialize three scalar data members
+        in the class definition rather than here.
+        (WebCore::XPath::Parser::parseStatement): Use ExceptionOr.
+        * xml/XPathParser.h: Updated for above changes.
+
+        * xml/XPathResult.cpp:
+        (WebCore::XPathResult::XPathResult): Use a reference rather than a
+        pointer for the document. Alao initialize two scalar data members
+        in the class definition rather than here.
+        (WebCore::XPathResult::convertTo): Use ExceptionOr.
+        (WebCore::XPathResult::numberValue): Ditto.
+        (WebCore::XPathResult::stringValue): Ditto.
+        (WebCore::XPathResult::booleanValue): Ditto.
+        (WebCore::XPathResult::singleNodeValue): Ditto.
+        (WebCore::XPathResult::snapshotLength): Ditto.
+        (WebCore::XPathResult::iterateNext): Ditto.
+        (WebCore::XPathResult::snapshotItem): Ditto.
+        * xml/XPathResult.h: Updated for the changes above.
+        * xml/XPathResult.idl: Use non-legacy exceptions.
+
</ins><span class="cx"> 2016-10-19  Nan Wang  &lt;n_wang@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         AX: [Mac] Meter element should use AXValueDescription to descrbe the status of the value
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.cpp (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.cpp        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebCore/dom/Document.cpp        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -5117,14 +5117,14 @@
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-RefPtr&lt;XPathExpression&gt; Document::createExpression(const String&amp; expression, RefPtr&lt;XPathNSResolver&gt;&amp;&amp; resolver, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Ref&lt;XPathExpression&gt;&gt; Document::createExpression(const String&amp; expression, RefPtr&lt;XPathNSResolver&gt;&amp;&amp; resolver)
</ins><span class="cx"> {
</span><span class="cx">     if (!m_xpathEvaluator)
</span><span class="cx">         m_xpathEvaluator = XPathEvaluator::create();
</span><del>-    return m_xpathEvaluator-&gt;createExpression(expression, WTFMove(resolver), ec);
</del><ins>+    return m_xpathEvaluator-&gt;createExpression(expression, WTFMove(resolver));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;XPathNSResolver&gt; Document::createNSResolver(Node* nodeResolver)
</del><ins>+Ref&lt;XPathNSResolver&gt; Document::createNSResolver(Node* nodeResolver)
</ins><span class="cx"> {
</span><span class="cx">     if (!m_xpathEvaluator)
</span><span class="cx">         m_xpathEvaluator = XPathEvaluator::create();
</span><span class="lines">@@ -5131,11 +5131,11 @@
</span><span class="cx">     return m_xpathEvaluator-&gt;createNSResolver(nodeResolver);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;XPathResult&gt; Document::evaluate(const String&amp; expression, Node* contextNode, RefPtr&lt;XPathNSResolver&gt;&amp;&amp; resolver, unsigned short type, XPathResult* result, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Ref&lt;XPathResult&gt;&gt; Document::evaluate(const String&amp; expression, Node* contextNode, RefPtr&lt;XPathNSResolver&gt;&amp;&amp; resolver, unsigned short type, XPathResult* result)
</ins><span class="cx"> {
</span><span class="cx">     if (!m_xpathEvaluator)
</span><span class="cx">         m_xpathEvaluator = XPathEvaluator::create();
</span><del>-    return m_xpathEvaluator-&gt;evaluate(expression, contextNode, WTFMove(resolver), type, result, ec);
</del><ins>+    return m_xpathEvaluator-&gt;evaluate(expression, contextNode, WTFMove(resolver), type, result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static bool shouldInheritSecurityOriginFromOwner(const URL&amp; url)
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.h (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.h        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebCore/dom/Document.h        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx"> #include &quot;ContainerNode.h&quot;
</span><span class="cx"> #include &quot;DocumentEventQueue.h&quot;
</span><span class="cx"> #include &quot;DocumentTiming.h&quot;
</span><ins>+#include &quot;ExceptionOr.h&quot;
</ins><span class="cx"> #include &quot;FocusDirection.h&quot;
</span><span class="cx"> #include &quot;FontSelectorClient.h&quot;
</span><span class="cx"> #include &quot;MediaProducer.h&quot;
</span><span class="lines">@@ -943,9 +944,9 @@
</span><span class="cx">     uint64_t domTreeVersion() const { return m_domTreeVersion; }
</span><span class="cx"> 
</span><span class="cx">     // XPathEvaluator methods
</span><del>-    WEBCORE_EXPORT RefPtr&lt;XPathExpression&gt; createExpression(const String&amp; expression, RefPtr&lt;XPathNSResolver&gt;&amp;&amp;, ExceptionCode&amp;);
-    WEBCORE_EXPORT RefPtr&lt;XPathNSResolver&gt; createNSResolver(Node* nodeResolver);
-    WEBCORE_EXPORT RefPtr&lt;XPathResult&gt; evaluate(const String&amp; expression, Node* contextNode, RefPtr&lt;XPathNSResolver&gt;&amp;&amp;, unsigned short type, XPathResult*, ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;Ref&lt;XPathExpression&gt;&gt; createExpression(const String&amp; expression, RefPtr&lt;XPathNSResolver&gt;&amp;&amp;);
+    WEBCORE_EXPORT Ref&lt;XPathNSResolver&gt; createNSResolver(Node* nodeResolver);
+    WEBCORE_EXPORT ExceptionOr&lt;Ref&lt;XPathResult&gt;&gt; evaluate(const String&amp; expression, Node* contextNode, RefPtr&lt;XPathNSResolver&gt;&amp;&amp;, unsigned short type, XPathResult*);
</ins><span class="cx"> 
</span><span class="cx">     enum PendingSheetLayout { NoLayoutWithPendingSheets, DidLayoutWithPendingSheets, IgnoreLayoutWithPendingSheets };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.idl (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.idl        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebCore/dom/Document.idl        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -76,12 +76,11 @@
</span><span class="cx">     readonly attribute DOMString contentType;
</span><span class="cx"> 
</span><span class="cx">     // FIXME: Using &quot;undefined&quot; as default parameter value is wrong.
</span><del>-    [MayThrowLegacyException] XPathExpression createExpression(optional DOMString expression = &quot;undefined&quot;, optional XPathNSResolver? resolver);
</del><ins>+    [MayThrowException] XPathExpression createExpression(optional DOMString expression = &quot;undefined&quot;, optional XPathNSResolver? resolver);
</ins><span class="cx">     XPathNSResolver createNSResolver(Node? nodeResolver);
</span><span class="cx"> 
</span><span class="cx">     // FIXME: Using &quot;undefined&quot; as default parameter value is wrong.
</span><del>-    [MayThrowLegacyException] XPathResult evaluate(optional DOMString expression = &quot;undefined&quot;, optional Node? contextNode, optional XPathNSResolver? resolver,
-        optional unsigned short type = 0, optional XPathResult? inResult);
</del><ins>+    [MayThrowException] XPathResult evaluate(optional DOMString expression = &quot;undefined&quot;, optional Node? contextNode, optional XPathNSResolver? resolver, optional unsigned short type = 0, optional XPathResult? inResult);
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: The default value for the last parameter should be the empty string.
</span><span class="cx">     boolean execCommand(DOMString command, optional boolean userInterface = false, optional DOMString? value = null);
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorNodeFindercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorNodeFinder.cpp (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorNodeFinder.cpp        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebCore/inspector/InspectorNodeFinder.cpp        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -132,19 +132,21 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorNodeFinder::searchUsingXPath(Node* parentNode)
</span><span class="cx"> {
</span><del>-    ExceptionCode ec = 0;
-    RefPtr&lt;XPathResult&gt; result = parentNode-&gt;document().evaluate(m_whitespaceTrimmedQuery, parentNode, nullptr, XPathResult::ORDERED_NODE_SNAPSHOT_TYPE, nullptr, ec);
-    if (ec || !result)
</del><ins>+    auto evaluateResult = parentNode-&gt;document().evaluate(m_whitespaceTrimmedQuery, parentNode, nullptr, XPathResult::ORDERED_NODE_SNAPSHOT_TYPE, nullptr);
+    if (evaluateResult.hasException())
</ins><span class="cx">         return;
</span><ins>+    auto result = evaluateResult.releaseReturnValue();
</ins><span class="cx"> 
</span><del>-    unsigned long size = result-&gt;snapshotLength(ec);
-    if (ec)
</del><ins>+    auto snapshotLengthResult = result-&gt;snapshotLength();
+    if (snapshotLengthResult.hasException())
</ins><span class="cx">         return;
</span><ins>+    unsigned size = snapshotLengthResult.releaseReturnValue();
</ins><span class="cx"> 
</span><del>-    for (unsigned long i = 0; i &lt; size; ++i) {
-        Node* node = result-&gt;snapshotItem(i, ec);
-        if (ec)
</del><ins>+    for (unsigned i = 0; i &lt; size; ++i) {
+        auto snapshotItemResult = result-&gt;snapshotItem(i);
+        if (snapshotItemResult.hasException())
</ins><span class="cx">             return;
</span><ins>+        Node* node = snapshotItemResult.releaseReturnValue();
</ins><span class="cx"> 
</span><span class="cx">         if (is&lt;Attr&gt;(*node))
</span><span class="cx">             node = downcast&lt;Attr&gt;(*node).ownerElement();
</span></span></pre></div>
<a id="trunkSourceWebCorexmlDOMParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/DOMParser.cpp (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/DOMParser.cpp        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebCore/xml/DOMParser.cpp        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -21,27 +21,24 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;DOMImplementation.h&quot;
</span><span class="cx"> #include &quot;ExceptionCode.h&quot;
</span><del>-#include &lt;wtf/text/WTFString.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-DOMParser::DOMParser(Document&amp; contextDocument)
</del><ins>+inline DOMParser::DOMParser(Document&amp; contextDocument)
</ins><span class="cx">     : m_contextDocument(contextDocument.createWeakPtr())
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;Document&gt; DOMParser::parseFromString(const String&amp; string, const String&amp; contentType, ExceptionCode&amp; ec)
</del><ins>+Ref&lt;DOMParser&gt; DOMParser::create(Document&amp; contextDocument)
</ins><span class="cx"> {
</span><del>-    if (contentType != &quot;text/html&quot;
-        &amp;&amp; contentType != &quot;text/xml&quot;
-        &amp;&amp; contentType != &quot;application/xml&quot;
-        &amp;&amp; contentType != &quot;application/xhtml+xml&quot;
-        &amp;&amp; contentType != &quot;image/svg+xml&quot;) {
-        ec = TypeError;
-        return nullptr;
-    }
</del><ins>+    return adoptRef(*new DOMParser(contextDocument));
+}
</ins><span class="cx"> 
</span><del>-    Ref&lt;Document&gt; document = DOMImplementation::createDocument(contentType, nullptr, URL());
</del><ins>+ExceptionOr&lt;Ref&lt;Document&gt;&gt; DOMParser::parseFromString(const String&amp; string, const String&amp; contentType)
+{
+    if (contentType != &quot;text/html&quot; &amp;&amp; contentType != &quot;text/xml&quot; &amp;&amp; contentType != &quot;application/xml&quot; &amp;&amp; contentType != &quot;application/xhtml+xml&quot; &amp;&amp; contentType != &quot;image/svg+xml&quot;)
+        return Exception { TypeError };
+    auto document = DOMImplementation::createDocument(contentType, nullptr, URL { });
</ins><span class="cx">     if (m_contextDocument)
</span><span class="cx">         document-&gt;setContextDocument(*m_contextDocument.get());
</span><span class="cx">     document-&gt;setContent(string);
</span></span></pre></div>
<a id="trunkSourceWebCorexmlDOMParserh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/DOMParser.h (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/DOMParser.h        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebCore/xml/DOMParser.h        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- *  Copyright (C) 2003, 2006 Apple Inc.
</del><ins>+ *  Copyright (C) 2003, 2006 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  *  This library is free software; you can redistribute it and/or
</span><span class="cx">  *  modify it under the terms of the GNU Lesser General Public
</span><span class="lines">@@ -16,28 +16,20 @@
</span><span class="cx">  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef DOMParser_h
-#define DOMParser_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><del>-#include &lt;wtf/Forward.h&gt;
-#include &lt;wtf/RefCounted.h&gt;
-#include &lt;wtf/RefPtr.h&gt;
</del><ins>+#include &quot;ExceptionOr.h&quot;
</ins><span class="cx"> #include &lt;wtf/WeakPtr.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><del>-typedef int ExceptionCode;
</del><span class="cx"> 
</span><span class="cx"> class Document;
</span><span class="cx"> 
</span><span class="cx"> class DOMParser : public RefCounted&lt;DOMParser&gt; {
</span><span class="cx"> public:
</span><del>-    static Ref&lt;DOMParser&gt; create(Document&amp; contextDocument)
-    {
-        return adoptRef(*new DOMParser(contextDocument));
-    }
</del><ins>+    static Ref&lt;DOMParser&gt; create(Document&amp; contextDocument);
+    ExceptionOr&lt;Ref&lt;Document&gt;&gt; parseFromString(const String&amp;, const String&amp; contentType);
</ins><span class="cx"> 
</span><del>-    RefPtr&lt;Document&gt; parseFromString(const String&amp;, const String&amp; contentType, ExceptionCode&amp;);
-
</del><span class="cx"> private:
</span><span class="cx">     explicit DOMParser(Document&amp; contextDocument);
</span><span class="cx"> 
</span><span class="lines">@@ -45,5 +37,3 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }
</span><del>-
-#endif // XMLSerializer.h
</del></span></pre></div>
<a id="trunkSourceWebCorexmlDOMParseridl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/DOMParser.idl (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/DOMParser.idl        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebCore/xml/DOMParser.idl        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2006 Apple Inc.
</del><ins>+ * Copyright (C) 2006 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * This library is free software; you can redistribute it and/or
</span><span class="cx">  * modify it under the terms of the GNU Library General Public
</span><span class="lines">@@ -22,5 +22,5 @@
</span><span class="cx">     ConstructorCallWith=Document,
</span><span class="cx">     ImplementationLacksVTable,
</span><span class="cx"> ] interface DOMParser {
</span><del>-    [MayThrowLegacyException, NewObject] Document parseFromString(DOMString str, DOMString contentType);
</del><ins>+    [MayThrowException, NewObject] Document parseFromString(DOMString string, DOMString contentType);
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXPathEvaluatorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathEvaluator.cpp (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathEvaluator.cpp        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebCore/xml/XPathEvaluator.cpp        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -37,9 +37,9 @@
</span><span class="cx"> 
</span><span class="cx"> using namespace XPath;
</span><span class="cx"> 
</span><del>-RefPtr&lt;XPathExpression&gt; XPathEvaluator::createExpression(const String&amp; expression, RefPtr&lt;XPathNSResolver&gt;&amp;&amp; resolver, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Ref&lt;XPathExpression&gt;&gt; XPathEvaluator::createExpression(const String&amp; expression, RefPtr&lt;XPathNSResolver&gt;&amp;&amp; resolver)
</ins><span class="cx"> {
</span><del>-    return XPathExpression::createExpression(expression, WTFMove(resolver), ec);
</del><ins>+    return XPathExpression::createExpression(expression, WTFMove(resolver));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;XPathNSResolver&gt; XPathEvaluator::createNSResolver(Node* nodeResolver)
</span><span class="lines">@@ -47,19 +47,16 @@
</span><span class="cx">     return NativeXPathNSResolver::create(nodeResolver);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;XPathResult&gt; XPathEvaluator::evaluate(const String&amp; expression, Node* contextNode, RefPtr&lt;XPathNSResolver&gt;&amp;&amp; resolver, unsigned short type, XPathResult* result, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Ref&lt;XPathResult&gt;&gt; XPathEvaluator::evaluate(const String&amp; expression, Node* contextNode, RefPtr&lt;XPathNSResolver&gt;&amp;&amp; resolver, unsigned short type, XPathResult* result)
</ins><span class="cx"> {
</span><del>-    if (!isValidContextNode(contextNode)) {
-        ec = NOT_SUPPORTED_ERR;
-        return nullptr;
-    }
</del><ins>+    if (!isValidContextNode(contextNode))
+        return Exception { NOT_SUPPORTED_ERR };
</ins><span class="cx"> 
</span><del>-    ec = 0;
-    RefPtr&lt;XPathExpression&gt; expr = createExpression(expression, WTFMove(resolver), ec);
-    if (ec)
-        return nullptr;
-    
-    return expr-&gt;evaluate(contextNode, type, result, ec);
</del><ins>+    auto createResult = createExpression(expression, WTFMove(resolver));
+    if (createResult.hasException())
+        return createResult.releaseException();
+
+    return createResult.releaseReturnValue()-&gt;evaluate(contextNode, type, result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXPathEvaluatorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathEvaluator.h (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathEvaluator.h        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebCore/xml/XPathEvaluator.h        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright 2005 Frerich Raabe &lt;raabe@kde.org&gt;
</span><del>- * Copyright (C) 2006 Apple Inc.
</del><ins>+ * Copyright (C) 2006 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -24,35 +24,27 @@
</span><span class="cx">  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef XPathEvaluator_h
-#define XPathEvaluator_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><del>-#include &lt;wtf/Forward.h&gt;
-#include &lt;wtf/Ref.h&gt;
-#include &lt;wtf/RefCounted.h&gt;
</del><ins>+#include &quot;ExceptionOr.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-    typedef int ExceptionCode;
</del><ins>+class Node;
+class XPathExpression;
+class XPathNSResolver;
+class XPathResult;
</ins><span class="cx"> 
</span><del>-    class Node;
-    class XPathExpression;
-    class XPathNSResolver;
-    class XPathResult;
</del><ins>+class XPathEvaluator : public RefCounted&lt;XPathEvaluator&gt; {
+public:
+    static Ref&lt;XPathEvaluator&gt; create() { return adoptRef(*new XPathEvaluator); }
</ins><span class="cx"> 
</span><del>-    class XPathEvaluator : public RefCounted&lt;XPathEvaluator&gt; {
-    public:
-        static Ref&lt;XPathEvaluator&gt; create() { return adoptRef(*new XPathEvaluator); }
-        
-        RefPtr&lt;XPathExpression&gt; createExpression(const String&amp; expression, RefPtr&lt;XPathNSResolver&gt;&amp;&amp;, ExceptionCode&amp;);
-        Ref&lt;XPathNSResolver&gt; createNSResolver(Node* nodeResolver);
-        RefPtr&lt;XPathResult&gt; evaluate(const String&amp; expression, Node* contextNode,
-            RefPtr&lt;XPathNSResolver&gt;&amp;&amp;, unsigned short type, XPathResult*, ExceptionCode&amp;);
</del><ins>+    ExceptionOr&lt;Ref&lt;XPathExpression&gt;&gt; createExpression(const String&amp; expression, RefPtr&lt;XPathNSResolver&gt;&amp;&amp;);
+    Ref&lt;XPathNSResolver&gt; createNSResolver(Node* nodeResolver);
+    ExceptionOr&lt;Ref&lt;XPathResult&gt;&gt; evaluate(const String&amp; expression, Node* contextNode, RefPtr&lt;XPathNSResolver&gt;&amp;&amp;, unsigned short type, XPathResult*);
</ins><span class="cx"> 
</span><del>-    private:
-        XPathEvaluator() { }
-    };
</del><ins>+private:
+    XPathEvaluator() = default;
+};
</ins><span class="cx"> 
</span><span class="cx"> }
</span><del>-
-#endif // XPathEvaluator_h
</del></span></pre></div>
<a id="trunkSourceWebCorexmlXPathEvaluatoridl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathEvaluator.idl (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathEvaluator.idl        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebCore/xml/XPathEvaluator.idl        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2006 Apple Inc.
</del><ins>+ * Copyright (C) 2006 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * This library is free software; you can redistribute it and/or
</span><span class="cx">  * modify it under the terms of the GNU Library General Public
</span><span class="lines">@@ -22,14 +22,10 @@
</span><span class="cx">     ImplementationLacksVTable,
</span><span class="cx"> ] interface XPathEvaluator {
</span><span class="cx">     // FIXME: Using &quot;undefined&quot; as default parameter value is wrong.
</span><del>-    [MayThrowLegacyException] XPathExpression createExpression(optional DOMString expression = &quot;undefined&quot;, optional XPathNSResolver? resolver);
</del><ins>+    [MayThrowException] XPathExpression createExpression(optional DOMString expression = &quot;undefined&quot;, optional XPathNSResolver? resolver);
</ins><span class="cx"> 
</span><span class="cx">     XPathNSResolver createNSResolver(optional Node? nodeResolver);
</span><span class="cx"> 
</span><span class="cx">     // FIXME: Using &quot;undefined&quot; as default parameter value is wrong.
</span><del>-    [MayThrowLegacyException] XPathResult evaluate(optional DOMString expression = &quot;undefined&quot;,
-                         optional Node? contextNode,
-                         optional XPathNSResolver? resolver,
-                         optional unsigned short type = 0,
-                         optional XPathResult? inResult);
</del><ins>+    [MayThrowException] XPathResult evaluate(optional DOMString expression = &quot;undefined&quot;, optional Node? contextNode, optional XPathNSResolver? resolver, optional unsigned short type = 0, optional XPathResult? inResult);
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXPathExpressioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathExpression.cpp (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathExpression.cpp        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebCore/xml/XPathExpression.cpp        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -34,7 +34,6 @@
</span><span class="cx"> #include &quot;XPathParser.h&quot;
</span><span class="cx"> #include &quot;XPathResult.h&quot;
</span><span class="cx"> #include &quot;XPathUtil.h&quot;
</span><del>-#include &lt;wtf/text/WTFString.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -45,13 +44,13 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;XPathExpression&gt; XPathExpression::createExpression(const String&amp; expression, RefPtr&lt;XPathNSResolver&gt;&amp;&amp; resolver, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Ref&lt;XPathExpression&gt;&gt; XPathExpression::createExpression(const String&amp; expression, RefPtr&lt;XPathNSResolver&gt;&amp;&amp; resolver)
</ins><span class="cx"> {
</span><del>-    auto parsedExpression = Parser::parseStatement(expression, WTFMove(resolver), ec);
-    if (!parsedExpression)
-        return nullptr;
</del><ins>+    auto parseResult = Parser::parseStatement(expression, WTFMove(resolver));
+    if (parseResult.hasException())
+        return parseResult.releaseException();
</ins><span class="cx"> 
</span><del>-    return adoptRef(*new XPathExpression(WTFMove(parsedExpression)));
</del><ins>+    return adoptRef(*new XPathExpression(parseResult.releaseReturnValue()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> XPathExpression::~XPathExpression()
</span><span class="lines">@@ -58,12 +57,11 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;XPathResult&gt; XPathExpression::evaluate(Node* contextNode, unsigned short type, XPathResult*, ExceptionCode&amp; ec)
</del><ins>+// FIXME: Why does this take an XPathResult that it ignores?
+ExceptionOr&lt;Ref&lt;XPathResult&gt;&gt; XPathExpression::evaluate(Node* contextNode, unsigned short type, XPathResult*)
</ins><span class="cx"> {
</span><del>-    if (!isValidContextNode(contextNode)) {
-        ec = NOT_SUPPORTED_ERR;
-        return nullptr;
-    }
</del><ins>+    if (!isValidContextNode(contextNode))
+        return Exception { NOT_SUPPORTED_ERR };
</ins><span class="cx"> 
</span><span class="cx">     EvaluationContext&amp; evaluationContext = Expression::evaluationContext();
</span><span class="cx">     evaluationContext.node = contextNode;
</span><span class="lines">@@ -70,24 +68,22 @@
</span><span class="cx">     evaluationContext.size = 1;
</span><span class="cx">     evaluationContext.position = 1;
</span><span class="cx">     evaluationContext.hadTypeConversionError = false;
</span><del>-    RefPtr&lt;XPathResult&gt; result = XPathResult::create(&amp;contextNode-&gt;document(), m_topExpression-&gt;evaluate());
</del><ins>+    auto result = XPathResult::create(contextNode-&gt;document(), m_topExpression-&gt;evaluate());
</ins><span class="cx">     evaluationContext.node = nullptr; // Do not hold a reference to the context node, as this may prevent the whole document from being destroyed in time.
</span><span class="cx"> 
</span><span class="cx">     if (evaluationContext.hadTypeConversionError) {
</span><span class="cx">         // It is not specified what to do if type conversion fails while evaluating an expression, and INVALID_EXPRESSION_ERR is not exactly right
</span><span class="cx">         // when the failure happens in an otherwise valid expression because of a variable. But XPathEvaluator does not support variables, so it's close enough.
</span><del>-        ec = XPathException::INVALID_EXPRESSION_ERR;
-        return nullptr;
</del><ins>+        return Exception { XPathException::INVALID_EXPRESSION_ERR };
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (type != XPathResult::ANY_TYPE) {
</span><del>-        ec = 0;
-        result-&gt;convertTo(type, ec);
-        if (ec)
-            return nullptr;
</del><ins>+        auto convertToResult = result-&gt;convertTo(type);
+        if (convertToResult.hasException())
+            return convertToResult.releaseException();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return result;
</del><ins>+    return WTFMove(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXPathExpressionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathExpression.h (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathExpression.h        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebCore/xml/XPathExpression.h        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -26,8 +26,7 @@
</span><span class="cx"> 
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><del>-#include &lt;wtf/Forward.h&gt;
-#include &lt;wtf/RefCounted.h&gt;
</del><ins>+#include &quot;ExceptionOr.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -36,17 +35,15 @@
</span><span class="cx"> class XPathResult;
</span><span class="cx"> 
</span><span class="cx"> namespace XPath {
</span><del>-    class Expression;
</del><ins>+class Expression;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-using ExceptionCode = int;
-
</del><span class="cx"> class XPathExpression : public RefCounted&lt;XPathExpression&gt; {
</span><span class="cx"> public:
</span><del>-    static RefPtr&lt;XPathExpression&gt; createExpression(const String&amp; expression, RefPtr&lt;XPathNSResolver&gt;&amp;&amp;, ExceptionCode&amp;);
</del><ins>+    static ExceptionOr&lt;Ref&lt;XPathExpression&gt;&gt; createExpression(const String&amp; expression, RefPtr&lt;XPathNSResolver&gt;&amp;&amp;);
</ins><span class="cx">     WEBCORE_EXPORT ~XPathExpression();
</span><span class="cx"> 
</span><del>-    WEBCORE_EXPORT RefPtr&lt;XPathResult&gt; evaluate(Node* contextNode, unsigned short type, XPathResult*, ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;Ref&lt;XPathResult&gt;&gt; evaluate(Node* contextNode, unsigned short type, XPathResult*);
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     explicit XPathExpression(std::unique_ptr&lt;XPath::Expression&gt;);
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXPathExpressionidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathExpression.idl (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathExpression.idl        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebCore/xml/XPathExpression.idl        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -22,5 +22,5 @@
</span><span class="cx">     ExportToWrappedFunction,
</span><span class="cx">     ImplementationLacksVTable,
</span><span class="cx"> ] interface XPathExpression {
</span><del>-    [MayThrowLegacyException] XPathResult evaluate(optional Node? contextNode = null, optional unsigned short type = 0, optional XPathResult? inResult = null);
</del><ins>+    [MayThrowException] XPathResult evaluate(optional Node? contextNode = null, optional unsigned short type = 0, optional XPathResult? inResult = null);
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXPathGrammary"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathGrammar.y (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathGrammar.y        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebCore/xml/XPathGrammar.y        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx"> #include &quot;XPathFunctions.h&quot;
</span><span class="cx"> #include &quot;XPathParser.h&quot;
</span><span class="cx"> #include &quot;XPathPath.h&quot;
</span><ins>+#include &quot;XPathStep.h&quot;
</ins><span class="cx"> #include &quot;XPathVariableReference.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #if COMPILER(MSVC)
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXPathParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathParser.cpp (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathParser.cpp        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebCore/xml/XPathParser.cpp        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -33,6 +33,7 @@
</span><span class="cx"> #include &quot;XPathException.h&quot;
</span><span class="cx"> #include &quot;XPathNSResolver.h&quot;
</span><span class="cx"> #include &quot;XPathPath.h&quot;
</span><ins>+#include &quot;XPathStep.h&quot;
</ins><span class="cx"> #include &lt;wtf/NeverDestroyed.h&gt;
</span><span class="cx"> #include &lt;wtf/StdLibExtras.h&gt;
</span><span class="cx"> #include &lt;wtf/text/StringHash.h&gt;
</span><span class="lines">@@ -402,9 +403,6 @@
</span><span class="cx"> Parser::Parser(const String&amp; statement, RefPtr&lt;XPathNSResolver&gt;&amp;&amp; resolver)
</span><span class="cx">     : m_data(statement)
</span><span class="cx">     , m_resolver(WTFMove(resolver))
</span><del>-    , m_nextPos(0)
-    , m_lastTokenType(0)
-    , m_sawNamespaceError(false)
</del><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -452,25 +450,20 @@
</span><span class="cx">         localName = qualifiedName.substring(colon + 1);
</span><span class="cx">     } else
</span><span class="cx">         localName = qualifiedName;
</span><del>-
</del><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-std::unique_ptr&lt;Expression&gt; Parser::parseStatement(const String&amp; statement, RefPtr&lt;XPathNSResolver&gt;&amp;&amp; resolver, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;std::unique_ptr&lt;Expression&gt;&gt; Parser::parseStatement(const String&amp; statement, RefPtr&lt;XPathNSResolver&gt;&amp;&amp; resolver)
</ins><span class="cx"> {
</span><del>-    Parser parser(statement, WTFMove(resolver));
</del><ins>+    Parser parser { statement, WTFMove(resolver) };
</ins><span class="cx"> 
</span><span class="cx">     int parseError = xpathyyparse(parser);
</span><span class="cx"> 
</span><del>-    if (parser.m_sawNamespaceError) {
-        ec = NAMESPACE_ERR;
-        return nullptr;
-    }
</del><ins>+    if (parser.m_sawNamespaceError)
+        return Exception { NAMESPACE_ERR };
</ins><span class="cx"> 
</span><del>-    if (parseError) {
-        ec = XPathException::INVALID_EXPRESSION_ERR;
-        return nullptr;
-    }
</del><ins>+    if (parseError)
+        return Exception { XPathException::INVALID_EXPRESSION_ERR };
</ins><span class="cx"> 
</span><span class="cx">     return WTFMove(parser.m_result);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXPathParserh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathParser.h (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathParser.h        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebCore/xml/XPathParser.h        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -24,10 +24,9 @@
</span><span class="cx">  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef XPathParser_h
-#define XPathParser_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><del>-#include &quot;XPathStep.h&quot;
</del><ins>+#include &quot;ExceptionOr.h&quot;
</ins><span class="cx"> #include &quot;XPathPredicate.h&quot;
</span><span class="cx"> 
</span><span class="cx"> union YYSTYPE;
</span><span class="lines">@@ -34,54 +33,49 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-    typedef int ExceptionCode;
</del><ins>+class XPathNSResolver;
</ins><span class="cx"> 
</span><del>-    class XPathNSResolver;
</del><ins>+namespace XPath {
</ins><span class="cx"> 
</span><del>-    namespace XPath {
</del><ins>+class Parser {
+    WTF_MAKE_NONCOPYABLE(Parser);
+public:
+    static ExceptionOr&lt;std::unique_ptr&lt;Expression&gt;&gt; parseStatement(const String&amp; statement, RefPtr&lt;XPathNSResolver&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><del>-        class Parser {
-            WTF_MAKE_NONCOPYABLE(Parser);
-        public:
-            static std::unique_ptr&lt;Expression&gt; parseStatement(const String&amp; statement, RefPtr&lt;XPathNSResolver&gt;&amp;&amp;, ExceptionCode&amp;);
</del><ins>+    int lex(YYSTYPE&amp;);
+    bool expandQualifiedName(const String&amp; qualifiedName, String&amp; localName, String&amp; namespaceURI);
+    void setParseResult(std::unique_ptr&lt;Expression&gt;&amp;&amp; expression) { m_result = WTFMove(expression); }
</ins><span class="cx"> 
</span><del>-            int lex(YYSTYPE&amp;);
-            bool expandQualifiedName(const String&amp; qualifiedName, String&amp; localName, String&amp; namespaceURI);
-            void setParseResult(std::unique_ptr&lt;Expression&gt; expression) { m_result = WTFMove(expression); }
</del><ins>+private:
+    Parser(const String&amp;, RefPtr&lt;XPathNSResolver&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><del>-        private:
-            Parser(const String&amp;, RefPtr&lt;XPathNSResolver&gt;&amp;&amp;);
</del><ins>+    struct Token;
</ins><span class="cx"> 
</span><del>-            struct Token;
</del><ins>+    bool isBinaryOperatorContext() const;
</ins><span class="cx"> 
</span><del>-            bool isBinaryOperatorContext() const;
</del><ins>+    void skipWS();
+    Token makeTokenAndAdvance(int type, int advance = 1);
+    Token makeTokenAndAdvance(int type, NumericOp::Opcode, int advance = 1);
+    Token makeTokenAndAdvance(int type, EqTestOp::Opcode, int advance = 1);
+    char peekAheadHelper();
+    char peekCurHelper();
</ins><span class="cx"> 
</span><del>-            void skipWS();
-            Token makeTokenAndAdvance(int type, int advance = 1);
-            Token makeTokenAndAdvance(int type, NumericOp::Opcode, int advance = 1);
-            Token makeTokenAndAdvance(int type, EqTestOp::Opcode, int advance = 1);
-            char peekAheadHelper();
-            char peekCurHelper();
</del><ins>+    Token lexString();
+    Token lexNumber();
+    bool lexNCName(String&amp;);
+    bool lexQName(String&amp;);
</ins><span class="cx"> 
</span><del>-            Token lexString();
-            Token lexNumber();
-            bool lexNCName(String&amp;);
-            bool lexQName(String&amp;);
</del><ins>+    Token nextToken();
+    Token nextTokenInternal();
</ins><span class="cx"> 
</span><del>-            Token nextToken();
-            Token nextTokenInternal();
</del><ins>+    const String&amp; m_data;
+    RefPtr&lt;XPathNSResolver&gt; m_resolver;
</ins><span class="cx"> 
</span><del>-            const String&amp; m_data;
-            RefPtr&lt;XPathNSResolver&gt; m_resolver;
</del><ins>+    unsigned m_nextPos { 0 };
+    int m_lastTokenType { 0 };
</ins><span class="cx"> 
</span><del>-            unsigned m_nextPos;
-            int m_lastTokenType;
</del><ins>+    std::unique_ptr&lt;Expression&gt; m_result;
+    bool m_sawNamespaceError { false };
+};
</ins><span class="cx"> 
</span><del>-            std::unique_ptr&lt;Expression&gt; m_result;
-            bool m_sawNamespaceError;
-        };
-
-    }
-}
-
-#endif
</del><ins>+} }
</ins></span></pre></div>
<a id="trunkSourceWebCorexmlXPathResultcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathResult.cpp (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathResult.cpp        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebCore/xml/XPathResult.cpp        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -36,10 +36,8 @@
</span><span class="cx"> 
</span><span class="cx"> using namespace XPath;
</span><span class="cx"> 
</span><del>-XPathResult::XPathResult(Document* document, const Value&amp; value)
</del><ins>+XPathResult::XPathResult(Document&amp; document, const Value&amp; value)
</ins><span class="cx">     : m_value(value)
</span><del>-    , m_nodeSetPosition(0)
-    , m_domTreeVersion(0)
</del><span class="cx"> {
</span><span class="cx">     switch (m_value.type()) {
</span><span class="cx">         case Value::BooleanValue:
</span><span class="lines">@@ -55,8 +53,8 @@
</span><span class="cx">             m_resultType = UNORDERED_NODE_ITERATOR_TYPE;
</span><span class="cx">             m_nodeSetPosition = 0;
</span><span class="cx">             m_nodeSet = m_value.toNodeSet();
</span><del>-            m_document = document;
-            m_domTreeVersion = document-&gt;domTreeVersion();
</del><ins>+            m_document = &amp;document;
+            m_domTreeVersion = document.domTreeVersion();
</ins><span class="cx">             return;
</span><span class="cx">     }
</span><span class="cx">     ASSERT_NOT_REACHED();
</span><span class="lines">@@ -66,50 +64,45 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void XPathResult::convertTo(unsigned short type, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; XPathResult::convertTo(unsigned short type)
</ins><span class="cx"> {
</span><span class="cx">     switch (type) {
</span><del>-        case ANY_TYPE:
-            break;
-        case NUMBER_TYPE:
-            m_resultType = type;
-            m_value = m_value.toNumber();
-            break;
-        case STRING_TYPE:
-            m_resultType = type;
-            m_value = m_value.toString();
-            break;
-        case BOOLEAN_TYPE:
-            m_resultType = type;
-            m_value = m_value.toBoolean();
-            break;
-        case UNORDERED_NODE_ITERATOR_TYPE:
-        case UNORDERED_NODE_SNAPSHOT_TYPE:
-        case ANY_UNORDERED_NODE_TYPE:
-        case FIRST_ORDERED_NODE_TYPE: // This is correct - singleNodeValue() will take care of ordering.
-            if (!m_value.isNodeSet()) {
-                ec = XPathException::TYPE_ERR;
-                return;
-            }
-            m_resultType = type;
-            break;
-        case ORDERED_NODE_ITERATOR_TYPE:
-            if (!m_value.isNodeSet()) {
-                ec = XPathException::TYPE_ERR;
-                return;
-            }
-            m_nodeSet.sort();
-            m_resultType = type;
-            break;
-        case ORDERED_NODE_SNAPSHOT_TYPE:
-            if (!m_value.isNodeSet()) {
-                ec = XPathException::TYPE_ERR;
-                return;
-            }
-            m_value.toNodeSet().sort();
-            m_resultType = type;
-            break;
</del><ins>+    case ANY_TYPE:
+        break;
+    case NUMBER_TYPE:
+        m_resultType = type;
+        m_value = m_value.toNumber();
+        break;
+    case STRING_TYPE:
+        m_resultType = type;
+        m_value = m_value.toString();
+        break;
+    case BOOLEAN_TYPE:
+        m_resultType = type;
+        m_value = m_value.toBoolean();
+        break;
+    case UNORDERED_NODE_ITERATOR_TYPE:
+    case UNORDERED_NODE_SNAPSHOT_TYPE:
+    case ANY_UNORDERED_NODE_TYPE:
+    case FIRST_ORDERED_NODE_TYPE: // This is correct - singleNodeValue() will take care of ordering.
+        if (!m_value.isNodeSet())
+            return Exception { XPathException::TYPE_ERR };
+        m_resultType = type;
+        break;
+    case ORDERED_NODE_ITERATOR_TYPE:
+        if (!m_value.isNodeSet())
+            return Exception { XPathException::TYPE_ERR };
+        m_nodeSet.sort();
+        m_resultType = type;
+        break;
+    case ORDERED_NODE_SNAPSHOT_TYPE:
+        if (!m_value.isNodeSet())
+            return Exception { XPathException::TYPE_ERR };
+        m_value.toNodeSet().sort();
+        m_resultType = type;
+        break;
</ins><span class="cx">     }
</span><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> unsigned short XPathResult::resultType() const
</span><span class="lines">@@ -117,41 +110,33 @@
</span><span class="cx">     return m_resultType;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-double XPathResult::numberValue(ExceptionCode&amp; ec) const
</del><ins>+ExceptionOr&lt;double&gt; XPathResult::numberValue() const
</ins><span class="cx"> {
</span><del>-    if (resultType() != NUMBER_TYPE) {
-        ec = XPathException::TYPE_ERR;
-        return 0.0;
-    }
</del><ins>+    if (resultType() != NUMBER_TYPE)
+        return Exception { XPathException::TYPE_ERR };
</ins><span class="cx">     return m_value.toNumber();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String XPathResult::stringValue(ExceptionCode&amp; ec) const
</del><ins>+ExceptionOr&lt;String&gt; XPathResult::stringValue() const
</ins><span class="cx"> {
</span><del>-    if (resultType() != STRING_TYPE) {
-        ec = XPathException::TYPE_ERR;
-        return String();
-    }
</del><ins>+    if (resultType() != STRING_TYPE)
+        return Exception { XPathException::TYPE_ERR };
</ins><span class="cx">     return m_value.toString();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool XPathResult::booleanValue(ExceptionCode&amp; ec) const
</del><ins>+ExceptionOr&lt;bool&gt; XPathResult::booleanValue() const
</ins><span class="cx"> {
</span><del>-    if (resultType() != BOOLEAN_TYPE) {
-        ec = XPathException::TYPE_ERR;
-        return false;
-    }
</del><ins>+    if (resultType() != BOOLEAN_TYPE)
+        return Exception { XPathException::TYPE_ERR };
</ins><span class="cx">     return m_value.toBoolean();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Node* XPathResult::singleNodeValue(ExceptionCode&amp; ec) const
</del><ins>+ExceptionOr&lt;Node*&gt; XPathResult::singleNodeValue() const
</ins><span class="cx"> {
</span><del>-    if (resultType() != ANY_UNORDERED_NODE_TYPE &amp;&amp; resultType() != FIRST_ORDERED_NODE_TYPE) {
-        ec = XPathException::TYPE_ERR;
-        return 0;
-    }
-  
-    const NodeSet&amp; nodes = m_value.toNodeSet();
</del><ins>+    if (resultType() != ANY_UNORDERED_NODE_TYPE &amp;&amp; resultType() != FIRST_ORDERED_NODE_TYPE)
+        return Exception { XPathException::TYPE_ERR };
+
+    auto&amp; nodes = m_value.toNodeSet();
</ins><span class="cx">     if (resultType() == FIRST_ORDERED_NODE_TYPE)
</span><span class="cx">         return nodes.firstNode();
</span><span class="cx">     else
</span><span class="lines">@@ -167,49 +152,37 @@
</span><span class="cx">     return m_document-&gt;domTreeVersion() != m_domTreeVersion;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-unsigned XPathResult::snapshotLength(ExceptionCode&amp; ec) const
</del><ins>+ExceptionOr&lt;unsigned&gt; XPathResult::snapshotLength() const
</ins><span class="cx"> {
</span><del>-    if (resultType() != UNORDERED_NODE_SNAPSHOT_TYPE &amp;&amp; resultType() != ORDERED_NODE_SNAPSHOT_TYPE) {
-        ec = XPathException::TYPE_ERR;
-        return 0;
-    }
</del><ins>+    if (resultType() != UNORDERED_NODE_SNAPSHOT_TYPE &amp;&amp; resultType() != ORDERED_NODE_SNAPSHOT_TYPE)
+        return Exception { XPathException::TYPE_ERR };
</ins><span class="cx"> 
</span><span class="cx">     return m_value.toNodeSet().size();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Node* XPathResult::iterateNext(ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Node*&gt; XPathResult::iterateNext()
</ins><span class="cx"> {
</span><del>-    if (resultType() != UNORDERED_NODE_ITERATOR_TYPE &amp;&amp; resultType() != ORDERED_NODE_ITERATOR_TYPE) {
-        ec = XPathException::TYPE_ERR;
-        return 0;
-    }
-    
-    if (invalidIteratorState()) {
-        ec = INVALID_STATE_ERR;
-        return 0;
-    }
-    
-    if (m_nodeSetPosition + 1 &gt; m_nodeSet.size())
-        return 0;
</del><ins>+    if (resultType() != UNORDERED_NODE_ITERATOR_TYPE &amp;&amp; resultType() != ORDERED_NODE_ITERATOR_TYPE)
+        return Exception { XPathException::TYPE_ERR };
</ins><span class="cx"> 
</span><del>-    Node* node = m_nodeSet[m_nodeSetPosition];
-    
-    m_nodeSetPosition++;
</del><ins>+    if (invalidIteratorState())
+        return Exception { INVALID_STATE_ERR };
</ins><span class="cx"> 
</span><del>-    return node;
</del><ins>+    if (m_nodeSetPosition &gt;= m_nodeSet.size())
+        return nullptr;
+
+    return m_nodeSet[m_nodeSetPosition++];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-Node* XPathResult::snapshotItem(unsigned index, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Node*&gt; XPathResult::snapshotItem(unsigned index)
</ins><span class="cx"> {
</span><del>-    if (resultType() != UNORDERED_NODE_SNAPSHOT_TYPE &amp;&amp; resultType() != ORDERED_NODE_SNAPSHOT_TYPE) {
-        ec = XPathException::TYPE_ERR;
-        return 0;
-    }
-    
-    const NodeSet&amp; nodes = m_value.toNodeSet();
</del><ins>+    if (resultType() != UNORDERED_NODE_SNAPSHOT_TYPE &amp;&amp; resultType() != ORDERED_NODE_SNAPSHOT_TYPE)
+        return Exception { XPathException::TYPE_ERR };
+
+    auto&amp; nodes = m_value.toNodeSet();
</ins><span class="cx">     if (index &gt;= nodes.size())
</span><del>-        return 0;
-    
</del><ins>+        return nullptr;
+
</ins><span class="cx">     return nodes[index];
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXPathResulth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathResult.h (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathResult.h        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebCore/xml/XPathResult.h        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -26,60 +26,54 @@
</span><span class="cx"> 
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><ins>+#include &quot;ExceptionOr.h&quot;
</ins><span class="cx"> #include &quot;XPathValue.h&quot;
</span><del>-#include &lt;wtf/Forward.h&gt;
-#include &lt;wtf/RefCounted.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-    typedef int ExceptionCode;
</del><ins>+class XPathResult : public RefCounted&lt;XPathResult&gt; {
+public:
+    enum XPathResultType {
+        ANY_TYPE = 0,
+        NUMBER_TYPE = 1,
+        STRING_TYPE = 2,
+        BOOLEAN_TYPE = 3,
+        UNORDERED_NODE_ITERATOR_TYPE = 4,
+        ORDERED_NODE_ITERATOR_TYPE = 5,
+        UNORDERED_NODE_SNAPSHOT_TYPE = 6,
+        ORDERED_NODE_SNAPSHOT_TYPE = 7,
+        ANY_UNORDERED_NODE_TYPE = 8,
+        FIRST_ORDERED_NODE_TYPE = 9
+    };
</ins><span class="cx"> 
</span><del>-    class Document;
-    class Node;
</del><ins>+    static Ref&lt;XPathResult&gt; create(Document&amp; document, const XPath::Value&amp; value) { return adoptRef(*new XPathResult(document, value)); }
+    WEBCORE_EXPORT ~XPathResult();
</ins><span class="cx"> 
</span><del>-    class XPathResult : public RefCounted&lt;XPathResult&gt; {
-    public:
-        enum XPathResultType {
-            ANY_TYPE = 0,
-            NUMBER_TYPE = 1,
-            STRING_TYPE = 2,
-            BOOLEAN_TYPE = 3,
-            UNORDERED_NODE_ITERATOR_TYPE = 4,
-            ORDERED_NODE_ITERATOR_TYPE = 5,
-            UNORDERED_NODE_SNAPSHOT_TYPE = 6,
-            ORDERED_NODE_SNAPSHOT_TYPE = 7,
-            ANY_UNORDERED_NODE_TYPE = 8,
-            FIRST_ORDERED_NODE_TYPE = 9
-        };
-        
-        static Ref&lt;XPathResult&gt; create(Document* document, const XPath::Value&amp; value) { return adoptRef(*new XPathResult(document, value)); }
-        WEBCORE_EXPORT ~XPathResult();
-        
-        void convertTo(unsigned short type, ExceptionCode&amp;);
</del><ins>+    ExceptionOr&lt;void&gt; convertTo(unsigned short type);
</ins><span class="cx"> 
</span><del>-        WEBCORE_EXPORT unsigned short resultType() const;
</del><ins>+    WEBCORE_EXPORT unsigned short resultType() const;
</ins><span class="cx"> 
</span><del>-        WEBCORE_EXPORT double numberValue(ExceptionCode&amp;) const;
-        WEBCORE_EXPORT String stringValue(ExceptionCode&amp;) const;
-        WEBCORE_EXPORT bool booleanValue(ExceptionCode&amp;) const;
-        WEBCORE_EXPORT Node* singleNodeValue(ExceptionCode&amp;) const;
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;double&gt; numberValue() const;
+    WEBCORE_EXPORT ExceptionOr&lt;String&gt; stringValue() const;
+    WEBCORE_EXPORT ExceptionOr&lt;bool&gt; booleanValue() const;
+    WEBCORE_EXPORT ExceptionOr&lt;Node*&gt; singleNodeValue() const;
</ins><span class="cx"> 
</span><del>-        WEBCORE_EXPORT bool invalidIteratorState() const;
-        WEBCORE_EXPORT unsigned snapshotLength(ExceptionCode&amp;) const;
-        WEBCORE_EXPORT Node* iterateNext(ExceptionCode&amp;);
-        WEBCORE_EXPORT Node* snapshotItem(unsigned index, ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT bool invalidIteratorState() const;
+    WEBCORE_EXPORT ExceptionOr&lt;unsigned&gt; snapshotLength() const;
+    WEBCORE_EXPORT ExceptionOr&lt;Node*&gt; iterateNext();
+    WEBCORE_EXPORT ExceptionOr&lt;Node*&gt; snapshotItem(unsigned index);
</ins><span class="cx"> 
</span><del>-        const XPath::Value&amp; value() const { return m_value; }
</del><ins>+    const XPath::Value&amp; value() const { return m_value; }
</ins><span class="cx"> 
</span><del>-    private:
-        XPathResult(Document*, const XPath::Value&amp;);
-        
-        XPath::Value m_value;
-        unsigned m_nodeSetPosition;
-        XPath::NodeSet m_nodeSet; // FIXME: why duplicate the node set stored in m_value?
-        unsigned short m_resultType;
-        RefPtr&lt;Document&gt; m_document;
-        uint64_t m_domTreeVersion;
-    };
</del><ins>+private:
+    XPathResult(Document&amp;, const XPath::Value&amp;);
</ins><span class="cx"> 
</span><ins>+    XPath::Value m_value;
+    unsigned m_nodeSetPosition { 0 };
+    XPath::NodeSet m_nodeSet; // FIXME: why duplicate the node set stored in m_value?
+    unsigned short m_resultType;
+    RefPtr&lt;Document&gt; m_document;
+    uint64_t m_domTreeVersion { 0 };
+};
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXPathResultidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathResult.idl (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathResult.idl        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebCore/xml/XPathResult.idl        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -34,14 +34,14 @@
</span><span class="cx">     const unsigned short FIRST_ORDERED_NODE_TYPE = 9;
</span><span class="cx"> 
</span><span class="cx">     readonly attribute unsigned short resultType;
</span><del>-    [GetterMayThrowLegacyException] readonly attribute unrestricted double numberValue;
-    [GetterMayThrowLegacyException] readonly attribute DOMString stringValue;
-    [GetterMayThrowLegacyException] readonly attribute boolean booleanValue;
-    [GetterMayThrowLegacyException] readonly attribute Node singleNodeValue;
</del><ins>+    [GetterMayThrowException] readonly attribute unrestricted double numberValue;
+    [GetterMayThrowException] readonly attribute DOMString stringValue;
+    [GetterMayThrowException] readonly attribute boolean booleanValue;
+    [GetterMayThrowException] readonly attribute Node singleNodeValue;
</ins><span class="cx"> 
</span><span class="cx">     readonly attribute boolean invalidIteratorState;
</span><del>-    [GetterMayThrowLegacyException] readonly attribute unsigned long snapshotLength;
</del><ins>+    [GetterMayThrowException] readonly attribute unsigned long snapshotLength;
</ins><span class="cx"> 
</span><del>-    [MayThrowLegacyException] Node iterateNext();
-    [MayThrowLegacyException] Node snapshotItem(optional unsigned long index = 0);
</del><ins>+    [MayThrowException] Node iterateNext();
+    [MayThrowException] Node snapshotItem(optional unsigned long index = 0);
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/ChangeLog (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebKit/mac/ChangeLog        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -1,3 +1,25 @@
</span><ins>+2016-10-19  Darin Adler  &lt;darin@apple.com&gt;
+
+        Move XPath from ExceptionCode to Exception
+        https://bugs.webkit.org/show_bug.cgi?id=163656
+
+        Reviewed by Chris Dumez.
+
+        * DOM/DOMDocument.mm:
+        (wrap): Added. Helper function for wrapping a resolver.
+        (-[DOMDocument createExpression:resolver:]): Use raiseOnDOMError.
+        (-[DOMDocument evaluate:contextNode:resolver:type:inResult:]): Ditto.
+        * DOM/DOMXPathExpression.mm:
+        (-[DOMXPathExpression evaluate:type:inResult:]): Ditto.
+        * DOM/DOMXPathResult.mm:
+        (-[DOMXPathResult numberValue]): Ditto.
+        (-[DOMXPathResult stringValue]): Ditto.
+        (-[DOMXPathResult booleanValue]): Ditto.
+        (-[DOMXPathResult singleNodeValue]): Ditto.
+        (-[DOMXPathResult snapshotLength]): Ditto.
+        (-[DOMXPathResult iterateNext]): Ditto.
+        (-[DOMXPathResult snapshotItem:]): Ditto.
+
</ins><span class="cx"> 2016-10-18  Sam Weinig  &lt;sam@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Replace std::experimental::variant with WTF::Variant (or similar)
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMDocumentmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMDocument.mm (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMDocument.mm        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebKit/mac/DOM/DOMDocument.mm        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -612,23 +612,19 @@
</span><span class="cx">     return kit(WTF::getPtr(IMPL-&gt;getOverrideStyle(core(element), pseudoElement)));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static RefPtr&lt;WebCore::XPathNSResolver&gt; wrap(id &lt;DOMXPathNSResolver&gt; resolver)
+{
+    if (!resolver)
+        return nullptr;
+    if ([resolver isMemberOfClass:[DOMNativeXPathNSResolver class]])
+        return core(static_cast&lt;DOMNativeXPathNSResolver *&gt;(resolver));
+    return DOMCustomXPathNSResolver::create(resolver);
+}
+
</ins><span class="cx"> - (DOMXPathExpression *)createExpression:(NSString *)expression resolver:(id &lt;DOMXPathNSResolver&gt;)resolver
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::XPathNSResolver* nativeResolver = 0;
-    RefPtr&lt;WebCore::XPathNSResolver&gt; customResolver;
-    if (resolver) {
-        if ([resolver isMemberOfClass:[DOMNativeXPathNSResolver class]])
-            nativeResolver = core(static_cast&lt;DOMNativeXPathNSResolver *&gt;(resolver));
-        else {
-            customResolver = DOMCustomXPathNSResolver::create(resolver);
-            nativeResolver = WTF::getPtr(customResolver);
-        }
-    }
-    WebCore::ExceptionCode ec = 0;
-    DOMXPathExpression *result = kit(WTF::getPtr(IMPL-&gt;createExpression(expression, WTF::getPtr(nativeResolver), ec)));
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return kit(raiseOnDOMError(IMPL-&gt;createExpression(expression, wrap(resolver))).ptr());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (id &lt;DOMXPathNSResolver&gt;)createNSResolver:(DOMNode *)nodeResolver
</span><span class="lines">@@ -640,20 +636,7 @@
</span><span class="cx"> - (DOMXPathResult *)evaluate:(NSString *)expression contextNode:(DOMNode *)contextNode resolver:(id &lt;DOMXPathNSResolver&gt;)resolver type:(unsigned short)type inResult:(DOMXPathResult *)inResult
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::XPathNSResolver* nativeResolver = 0;
-    RefPtr&lt;WebCore::XPathNSResolver&gt; customResolver;
-    if (resolver) {
-        if ([resolver isMemberOfClass:[DOMNativeXPathNSResolver class]])
-            nativeResolver = core(static_cast&lt;DOMNativeXPathNSResolver *&gt;(resolver));
-        else {
-            customResolver = DOMCustomXPathNSResolver::create(resolver);
-            nativeResolver = WTF::getPtr(customResolver);
-        }
-    }
-    WebCore::ExceptionCode ec = 0;
-    DOMXPathResult *result = kit(WTF::getPtr(IMPL-&gt;evaluate(expression, core(contextNode), WTF::getPtr(nativeResolver), type, core(inResult), ec)));
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return kit(raiseOnDOMError(IMPL-&gt;evaluate(expression, core(contextNode), wrap(resolver), type, core(inResult))).ptr());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (BOOL)execCommand:(NSString *)command userInterface:(BOOL)userInterface value:(NSString *)value
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMXPathExpressionmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMXPathExpression.mm (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMXPathExpression.mm        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebKit/mac/DOM/DOMXPathExpression.mm        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -55,10 +55,7 @@
</span><span class="cx"> - (DOMXPathResult *)evaluate:(DOMNode *)contextNode type:(unsigned short)type inResult:(DOMXPathResult *)inResult
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    DOMXPathResult *result = kit(WTF::getPtr(IMPL-&gt;evaluate(core(contextNode), type, core(inResult), ec)));
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return kit(raiseOnDOMError(IMPL-&gt;evaluate(core(contextNode), type, core(inResult))).ptr());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMXPathResultmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMXPathResult.mm (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMXPathResult.mm        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebKit/mac/DOM/DOMXPathResult.mm        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -60,37 +60,25 @@
</span><span class="cx"> - (double)numberValue
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    double result = IMPL-&gt;numberValue(ec);
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return raiseOnDOMError(IMPL-&gt;numberValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (NSString *)stringValue
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    NSString *result = IMPL-&gt;stringValue(ec);
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return raiseOnDOMError(IMPL-&gt;stringValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (BOOL)booleanValue
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    BOOL result = IMPL-&gt;booleanValue(ec);
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return raiseOnDOMError(IMPL-&gt;booleanValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMNode *)singleNodeValue
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    DOMNode *result = kit(WTF::getPtr(IMPL-&gt;singleNodeValue(ec)));
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return kit(raiseOnDOMError(IMPL-&gt;singleNodeValue()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (BOOL)invalidIteratorState
</span><span class="lines">@@ -102,28 +90,19 @@
</span><span class="cx"> - (unsigned)snapshotLength
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    unsigned result = IMPL-&gt;snapshotLength(ec);
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return raiseOnDOMError(IMPL-&gt;snapshotLength());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMNode *)iterateNext
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    DOMNode *result = kit(WTF::getPtr(IMPL-&gt;iterateNext(ec)));
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return kit(raiseOnDOMError(IMPL-&gt;iterateNext()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMNode *)snapshotItem:(unsigned)index
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    DOMNode *result = kit(WTF::getPtr(IMPL-&gt;snapshotItem(index, ec)));
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return kit(raiseOnDOMError(IMPL-&gt;snapshotItem(index)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span><span class="lines">@@ -130,7 +109,7 @@
</span><span class="cx"> 
</span><span class="cx"> WebCore::XPathResult* core(DOMXPathResult *wrapper)
</span><span class="cx"> {
</span><del>-    return wrapper ? reinterpret_cast&lt;WebCore::XPathResult*&gt;(wrapper-&gt;_internal) : 0;
</del><ins>+    return wrapper ? reinterpret_cast&lt;WebCore::XPathResult*&gt;(wrapper-&gt;_internal) : nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> DOMXPathResult *kit(WebCore::XPathResult* value)
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebKit2/ChangeLog        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -1,3 +1,24 @@
</span><ins>+2016-10-19  Darin Adler  &lt;darin@apple.com&gt;
+
+        Move XPath from ExceptionCode to Exception
+        https://bugs.webkit.org/show_bug.cgi?id=163656
+
+        Reviewed by Chris Dumez.
+
+        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocument.cpp:
+        (webkit_dom_document_create_expression): Use ExceptionOr.
+        (webkit_dom_document_evaluate): Ditto.
+        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathExpression.cpp:
+        (webkit_dom_xpath_expression_evaluate): Ditto.
+        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathResult.cpp:
+        (webkit_dom_xpath_result_iterate_next): Ditto.
+        (webkit_dom_xpath_result_snapshot_item): Ditto.
+        (webkit_dom_xpath_result_get_number_value): Ditto.
+        (webkit_dom_xpath_result_get_string_value): Ditto.
+        (webkit_dom_xpath_result_get_boolean_value): Ditto.
+        (webkit_dom_xpath_result_get_single_node_value): Ditto.
+        (webkit_dom_xpath_result_get_snapshot_length): Ditto.
+
</ins><span class="cx"> 2016-10-19  Carlos Garcia Campos  &lt;cgarcia@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         NetworkSession: updatedRequest parameter of NetworkProcess::findPendingDownloadLocation is unused since r206988
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocument.cpp (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocument.cpp        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocument.cpp        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -1169,13 +1169,13 @@
</span><span class="cx">     WebCore::Document* item = WebKit::core(self);
</span><span class="cx">     WTF::String convertedExpression = WTF::String::fromUTF8(expression);
</span><span class="cx">     RefPtr&lt;WebCore::XPathNSResolver&gt; convertedResolver = WebKit::core(resolver);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    RefPtr&lt;WebCore::XPathExpression&gt; gobjectResult = WTF::getPtr(item-&gt;createExpression(convertedExpression, WTF::getPtr(convertedResolver), ec));
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;createExpression(convertedExpression, WTFMove(convertedResolver));
+    if (result.hasException()) {
+        WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx">         g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
</span><ins>+        return nullptr;
</ins><span class="cx">     }
</span><del>-    return WebKit::kit(gobjectResult.get());
</del><ins>+    return WebKit::kit(result.releaseReturnValue().ptr());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebKitDOMXPathNSResolver* webkit_dom_document_create_ns_resolver(WebKitDOMDocument* self, WebKitDOMNode* nodeResolver)
</span><span class="lines">@@ -1203,13 +1203,13 @@
</span><span class="cx">     WebCore::Node* convertedContextNode = WebKit::core(contextNode);
</span><span class="cx">     RefPtr&lt;WebCore::XPathNSResolver&gt; convertedResolver = WebKit::core(resolver);
</span><span class="cx">     WebCore::XPathResult* convertedInResult = WebKit::core(inResult);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    RefPtr&lt;WebCore::XPathResult&gt; gobjectResult = WTF::getPtr(item-&gt;evaluate(convertedExpression, convertedContextNode, WTF::getPtr(convertedResolver), type, convertedInResult, ec));
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;evaluate(convertedExpression, convertedContextNode, WTFMove(convertedResolver), type, convertedInResult);
+    if (result.hasException()) {
+        WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx">         g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
</span><ins>+        return nullptr;
</ins><span class="cx">     }
</span><del>-    return WebKit::kit(gobjectResult.get());
</del><ins>+    return WebKit::kit(result.releaseReturnValue().ptr());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> gboolean webkit_dom_document_exec_command(WebKitDOMDocument* self, const gchar* command, gboolean userInterface, const gchar* value)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMXPathExpressioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathExpression.cpp (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathExpression.cpp        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathExpression.cpp        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -114,12 +114,12 @@
</span><span class="cx">     WebCore::XPathExpression* item = WebKit::core(self);
</span><span class="cx">     WebCore::Node* convertedContextNode = WebKit::core(contextNode);
</span><span class="cx">     WebCore::XPathResult* convertedInResult = WebKit::core(inResult);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    RefPtr&lt;WebCore::XPathResult&gt; gobjectResult = WTF::getPtr(item-&gt;evaluate(convertedContextNode, type, convertedInResult, ec));
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;evaluate(convertedContextNode, type, convertedInResult);
+    if (result.hasException()) {
+        WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx">         g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
</span><ins>+        return nullptr;
</ins><span class="cx">     }
</span><del>-    return WebKit::kit(gobjectResult.get());
</del><ins>+    return WebKit::kit(result.releaseReturnValue().ptr());
</ins><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMXPathResultcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathResult.cpp (207540 => 207541)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathResult.cpp        2016-10-19 16:48:41 UTC (rev 207540)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathResult.cpp        2016-10-19 16:57:31 UTC (rev 207541)
</span><span class="lines">@@ -224,13 +224,13 @@
</span><span class="cx">     g_return_val_if_fail(WEBKIT_DOM_IS_XPATH_RESULT(self), 0);
</span><span class="cx">     g_return_val_if_fail(!error || !*error, 0);
</span><span class="cx">     WebCore::XPathResult* item = WebKit::core(self);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    RefPtr&lt;WebCore::Node&gt; gobjectResult = WTF::getPtr(item-&gt;iterateNext(ec));
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;iterateNext();
+    if (result.hasException()) {
+        WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx">         g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
</span><ins>+        return nullptr;
</ins><span class="cx">     }
</span><del>-    return WebKit::kit(gobjectResult.get());
</del><ins>+    return WebKit::kit(result.releaseReturnValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebKitDOMNode* webkit_dom_xpath_result_snapshot_item(WebKitDOMXPathResult* self, gulong index, GError** error)
</span><span class="lines">@@ -239,13 +239,13 @@
</span><span class="cx">     g_return_val_if_fail(WEBKIT_DOM_IS_XPATH_RESULT(self), 0);
</span><span class="cx">     g_return_val_if_fail(!error || !*error, 0);
</span><span class="cx">     WebCore::XPathResult* item = WebKit::core(self);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    RefPtr&lt;WebCore::Node&gt; gobjectResult = WTF::getPtr(item-&gt;snapshotItem(index, ec));
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;snapshotItem(index);
+    if (result.hasException()) {
+        WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx">         g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
</span><ins>+        return nullptr;
</ins><span class="cx">     }
</span><del>-    return WebKit::kit(gobjectResult.get());
</del><ins>+    return WebKit::kit(result.releaseReturnValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> gushort webkit_dom_xpath_result_get_result_type(WebKitDOMXPathResult* self)
</span><span class="lines">@@ -263,13 +263,13 @@
</span><span class="cx">     g_return_val_if_fail(WEBKIT_DOM_IS_XPATH_RESULT(self), 0);
</span><span class="cx">     g_return_val_if_fail(!error || !*error, 0);
</span><span class="cx">     WebCore::XPathResult* item = WebKit::core(self);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    gdouble result = item-&gt;numberValue(ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;numberValue();
+    if (result.hasException()) {
+        WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx">         g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
</span><ins>+        return 0;
</ins><span class="cx">     }
</span><del>-    return result;
</del><ins>+    return result.releaseReturnValue();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> gchar* webkit_dom_xpath_result_get_string_value(WebKitDOMXPathResult* self, GError** error)
</span><span class="lines">@@ -278,9 +278,10 @@
</span><span class="cx">     g_return_val_if_fail(WEBKIT_DOM_IS_XPATH_RESULT(self), 0);
</span><span class="cx">     g_return_val_if_fail(!error || !*error, 0);
</span><span class="cx">     WebCore::XPathResult* item = WebKit::core(self);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    gchar* result = convertToUTF8String(item-&gt;stringValue(ec));
-    return result;
</del><ins>+    auto result = item-&gt;stringValue();
+    if (result.hasException())
+        return nullptr;
+    return convertToUTF8String(result.releaseReturnValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> gboolean webkit_dom_xpath_result_get_boolean_value(WebKitDOMXPathResult* self, GError** error)
</span><span class="lines">@@ -289,13 +290,13 @@
</span><span class="cx">     g_return_val_if_fail(WEBKIT_DOM_IS_XPATH_RESULT(self), FALSE);
</span><span class="cx">     g_return_val_if_fail(!error || !*error, FALSE);
</span><span class="cx">     WebCore::XPathResult* item = WebKit::core(self);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    gboolean result = item-&gt;booleanValue(ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;booleanValue();
+    if (result.hasException()) {
+        WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx">         g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
</span><ins>+        return false;
</ins><span class="cx">     }
</span><del>-    return result;
</del><ins>+    return result.releaseReturnValue();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebKitDOMNode* webkit_dom_xpath_result_get_single_node_value(WebKitDOMXPathResult* self, GError** error)
</span><span class="lines">@@ -304,13 +305,13 @@
</span><span class="cx">     g_return_val_if_fail(WEBKIT_DOM_IS_XPATH_RESULT(self), 0);
</span><span class="cx">     g_return_val_if_fail(!error || !*error, 0);
</span><span class="cx">     WebCore::XPathResult* item = WebKit::core(self);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    RefPtr&lt;WebCore::Node&gt; gobjectResult = WTF::getPtr(item-&gt;singleNodeValue(ec));
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;singleNodeValue();
+    if (result.hasException()) {
+        WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx">         g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
</span><ins>+        return nullptr;
</ins><span class="cx">     }
</span><del>-    return WebKit::kit(gobjectResult.get());
</del><ins>+    return WebKit::kit(result.releaseReturnValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> gboolean webkit_dom_xpath_result_get_invalid_iterator_state(WebKitDOMXPathResult* self)
</span><span class="lines">@@ -328,12 +329,11 @@
</span><span class="cx">     g_return_val_if_fail(WEBKIT_DOM_IS_XPATH_RESULT(self), 0);
</span><span class="cx">     g_return_val_if_fail(!error || !*error, 0);
</span><span class="cx">     WebCore::XPathResult* item = WebKit::core(self);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    gulong result = item-&gt;snapshotLength(ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;snapshotLength();
+    if (result.hasException()) {
+        WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx">         g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
</span><span class="cx">     }
</span><del>-    return result;
</del><ins>+    return result.releaseReturnValue();
</ins><span class="cx"> }
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>