<!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 <darin@apple.com>
+
+ 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 <n_wang@apple.com>
</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<XPathExpression> Document::createExpression(const String& expression, RefPtr<XPathNSResolver>&& resolver, ExceptionCode& ec)
</del><ins>+ExceptionOr<Ref<XPathExpression>> Document::createExpression(const String& expression, RefPtr<XPathNSResolver>&& 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->createExpression(expression, WTFMove(resolver), ec);
</del><ins>+ return m_xpathEvaluator->createExpression(expression, WTFMove(resolver));
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-RefPtr<XPathNSResolver> Document::createNSResolver(Node* nodeResolver)
</del><ins>+Ref<XPathNSResolver> 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->createNSResolver(nodeResolver);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-RefPtr<XPathResult> Document::evaluate(const String& expression, Node* contextNode, RefPtr<XPathNSResolver>&& resolver, unsigned short type, XPathResult* result, ExceptionCode& ec)
</del><ins>+ExceptionOr<Ref<XPathResult>> Document::evaluate(const String& expression, Node* contextNode, RefPtr<XPathNSResolver>&& 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->evaluate(expression, contextNode, WTFMove(resolver), type, result, ec);
</del><ins>+ return m_xpathEvaluator->evaluate(expression, contextNode, WTFMove(resolver), type, result);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static bool shouldInheritSecurityOriginFromOwner(const URL& 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 "ContainerNode.h"
</span><span class="cx"> #include "DocumentEventQueue.h"
</span><span class="cx"> #include "DocumentTiming.h"
</span><ins>+#include "ExceptionOr.h"
</ins><span class="cx"> #include "FocusDirection.h"
</span><span class="cx"> #include "FontSelectorClient.h"
</span><span class="cx"> #include "MediaProducer.h"
</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<XPathExpression> createExpression(const String& expression, RefPtr<XPathNSResolver>&&, ExceptionCode&);
- WEBCORE_EXPORT RefPtr<XPathNSResolver> createNSResolver(Node* nodeResolver);
- WEBCORE_EXPORT RefPtr<XPathResult> evaluate(const String& expression, Node* contextNode, RefPtr<XPathNSResolver>&&, unsigned short type, XPathResult*, ExceptionCode&);
</del><ins>+ WEBCORE_EXPORT ExceptionOr<Ref<XPathExpression>> createExpression(const String& expression, RefPtr<XPathNSResolver>&&);
+ WEBCORE_EXPORT Ref<XPathNSResolver> createNSResolver(Node* nodeResolver);
+ WEBCORE_EXPORT ExceptionOr<Ref<XPathResult>> evaluate(const String& expression, Node* contextNode, RefPtr<XPathNSResolver>&&, 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 "undefined" as default parameter value is wrong.
</span><del>- [MayThrowLegacyException] XPathExpression createExpression(optional DOMString expression = "undefined", optional XPathNSResolver? resolver);
</del><ins>+ [MayThrowException] XPathExpression createExpression(optional DOMString expression = "undefined", optional XPathNSResolver? resolver);
</ins><span class="cx"> XPathNSResolver createNSResolver(Node? nodeResolver);
</span><span class="cx">
</span><span class="cx"> // FIXME: Using "undefined" as default parameter value is wrong.
</span><del>- [MayThrowLegacyException] XPathResult evaluate(optional DOMString expression = "undefined", optional Node? contextNode, optional XPathNSResolver? resolver,
- optional unsigned short type = 0, optional XPathResult? inResult);
</del><ins>+ [MayThrowException] XPathResult evaluate(optional DOMString expression = "undefined", 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<XPathResult> result = parentNode->document().evaluate(m_whitespaceTrimmedQuery, parentNode, nullptr, XPathResult::ORDERED_NODE_SNAPSHOT_TYPE, nullptr, ec);
- if (ec || !result)
</del><ins>+ auto evaluateResult = parentNode->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->snapshotLength(ec);
- if (ec)
</del><ins>+ auto snapshotLengthResult = result->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 < size; ++i) {
- Node* node = result->snapshotItem(i, ec);
- if (ec)
</del><ins>+ for (unsigned i = 0; i < size; ++i) {
+ auto snapshotItemResult = result->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<Attr>(*node))
</span><span class="cx"> node = downcast<Attr>(*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 "DOMImplementation.h"
</span><span class="cx"> #include "ExceptionCode.h"
</span><del>-#include <wtf/text/WTFString.h>
</del><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-DOMParser::DOMParser(Document& contextDocument)
</del><ins>+inline DOMParser::DOMParser(Document& contextDocument)
</ins><span class="cx"> : m_contextDocument(contextDocument.createWeakPtr())
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><del>-RefPtr<Document> DOMParser::parseFromString(const String& string, const String& contentType, ExceptionCode& ec)
</del><ins>+Ref<DOMParser> DOMParser::create(Document& contextDocument)
</ins><span class="cx"> {
</span><del>- if (contentType != "text/html"
- && contentType != "text/xml"
- && contentType != "application/xml"
- && contentType != "application/xhtml+xml"
- && contentType != "image/svg+xml") {
- ec = TypeError;
- return nullptr;
- }
</del><ins>+ return adoptRef(*new DOMParser(contextDocument));
+}
</ins><span class="cx">
</span><del>- Ref<Document> document = DOMImplementation::createDocument(contentType, nullptr, URL());
</del><ins>+ExceptionOr<Ref<Document>> DOMParser::parseFromString(const String& string, const String& contentType)
+{
+ if (contentType != "text/html" && contentType != "text/xml" && contentType != "application/xml" && contentType != "application/xhtml+xml" && contentType != "image/svg+xml")
+ return Exception { TypeError };
+ auto document = DOMImplementation::createDocument(contentType, nullptr, URL { });
</ins><span class="cx"> if (m_contextDocument)
</span><span class="cx"> document->setContextDocument(*m_contextDocument.get());
</span><span class="cx"> document->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 <wtf/Forward.h>
-#include <wtf/RefCounted.h>
-#include <wtf/RefPtr.h>
</del><ins>+#include "ExceptionOr.h"
</ins><span class="cx"> #include <wtf/WeakPtr.h>
</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<DOMParser> {
</span><span class="cx"> public:
</span><del>- static Ref<DOMParser> create(Document& contextDocument)
- {
- return adoptRef(*new DOMParser(contextDocument));
- }
</del><ins>+ static Ref<DOMParser> create(Document& contextDocument);
+ ExceptionOr<Ref<Document>> parseFromString(const String&, const String& contentType);
</ins><span class="cx">
</span><del>- RefPtr<Document> parseFromString(const String&, const String& contentType, ExceptionCode&);
-
</del><span class="cx"> private:
</span><span class="cx"> explicit DOMParser(Document& 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<XPathExpression> XPathEvaluator::createExpression(const String& expression, RefPtr<XPathNSResolver>&& resolver, ExceptionCode& ec)
</del><ins>+ExceptionOr<Ref<XPathExpression>> XPathEvaluator::createExpression(const String& expression, RefPtr<XPathNSResolver>&& 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<XPathNSResolver> 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<XPathResult> XPathEvaluator::evaluate(const String& expression, Node* contextNode, RefPtr<XPathNSResolver>&& resolver, unsigned short type, XPathResult* result, ExceptionCode& ec)
</del><ins>+ExceptionOr<Ref<XPathResult>> XPathEvaluator::evaluate(const String& expression, Node* contextNode, RefPtr<XPathNSResolver>&& 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<XPathExpression> expr = createExpression(expression, WTFMove(resolver), ec);
- if (ec)
- return nullptr;
-
- return expr->evaluate(contextNode, type, result, ec);
</del><ins>+ auto createResult = createExpression(expression, WTFMove(resolver));
+ if (createResult.hasException())
+ return createResult.releaseException();
+
+ return createResult.releaseReturnValue()->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 <raabe@kde.org>
</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 <wtf/Forward.h>
-#include <wtf/Ref.h>
-#include <wtf/RefCounted.h>
</del><ins>+#include "ExceptionOr.h"
</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<XPathEvaluator> {
+public:
+ static Ref<XPathEvaluator> create() { return adoptRef(*new XPathEvaluator); }
</ins><span class="cx">
</span><del>- class XPathEvaluator : public RefCounted<XPathEvaluator> {
- public:
- static Ref<XPathEvaluator> create() { return adoptRef(*new XPathEvaluator); }
-
- RefPtr<XPathExpression> createExpression(const String& expression, RefPtr<XPathNSResolver>&&, ExceptionCode&);
- Ref<XPathNSResolver> createNSResolver(Node* nodeResolver);
- RefPtr<XPathResult> evaluate(const String& expression, Node* contextNode,
- RefPtr<XPathNSResolver>&&, unsigned short type, XPathResult*, ExceptionCode&);
</del><ins>+ ExceptionOr<Ref<XPathExpression>> createExpression(const String& expression, RefPtr<XPathNSResolver>&&);
+ Ref<XPathNSResolver> createNSResolver(Node* nodeResolver);
+ ExceptionOr<Ref<XPathResult>> evaluate(const String& expression, Node* contextNode, RefPtr<XPathNSResolver>&&, 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 "undefined" as default parameter value is wrong.
</span><del>- [MayThrowLegacyException] XPathExpression createExpression(optional DOMString expression = "undefined", optional XPathNSResolver? resolver);
</del><ins>+ [MayThrowException] XPathExpression createExpression(optional DOMString expression = "undefined", 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 "undefined" as default parameter value is wrong.
</span><del>- [MayThrowLegacyException] XPathResult evaluate(optional DOMString expression = "undefined",
- optional Node? contextNode,
- optional XPathNSResolver? resolver,
- optional unsigned short type = 0,
- optional XPathResult? inResult);
</del><ins>+ [MayThrowException] XPathResult evaluate(optional DOMString expression = "undefined", 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 "XPathParser.h"
</span><span class="cx"> #include "XPathResult.h"
</span><span class="cx"> #include "XPathUtil.h"
</span><del>-#include <wtf/text/WTFString.h>
</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<XPathExpression> XPathExpression::createExpression(const String& expression, RefPtr<XPathNSResolver>&& resolver, ExceptionCode& ec)
</del><ins>+ExceptionOr<Ref<XPathExpression>> XPathExpression::createExpression(const String& expression, RefPtr<XPathNSResolver>&& 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<XPathResult> XPathExpression::evaluate(Node* contextNode, unsigned short type, XPathResult*, ExceptionCode& ec)
</del><ins>+// FIXME: Why does this take an XPathResult that it ignores?
+ExceptionOr<Ref<XPathResult>> 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& 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<XPathResult> result = XPathResult::create(&contextNode->document(), m_topExpression->evaluate());
</del><ins>+ auto result = XPathResult::create(contextNode->document(), m_topExpression->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->convertTo(type, ec);
- if (ec)
- return nullptr;
</del><ins>+ auto convertToResult = result->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 <wtf/Forward.h>
-#include <wtf/RefCounted.h>
</del><ins>+#include "ExceptionOr.h"
</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<XPathExpression> {
</span><span class="cx"> public:
</span><del>- static RefPtr<XPathExpression> createExpression(const String& expression, RefPtr<XPathNSResolver>&&, ExceptionCode&);
</del><ins>+ static ExceptionOr<Ref<XPathExpression>> createExpression(const String& expression, RefPtr<XPathNSResolver>&&);
</ins><span class="cx"> WEBCORE_EXPORT ~XPathExpression();
</span><span class="cx">
</span><del>- WEBCORE_EXPORT RefPtr<XPathResult> evaluate(Node* contextNode, unsigned short type, XPathResult*, ExceptionCode&);
</del><ins>+ WEBCORE_EXPORT ExceptionOr<Ref<XPathResult>> 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<XPath::Expression>);
</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 "XPathFunctions.h"
</span><span class="cx"> #include "XPathParser.h"
</span><span class="cx"> #include "XPathPath.h"
</span><ins>+#include "XPathStep.h"
</ins><span class="cx"> #include "XPathVariableReference.h"
</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 "XPathException.h"
</span><span class="cx"> #include "XPathNSResolver.h"
</span><span class="cx"> #include "XPathPath.h"
</span><ins>+#include "XPathStep.h"
</ins><span class="cx"> #include <wtf/NeverDestroyed.h>
</span><span class="cx"> #include <wtf/StdLibExtras.h>
</span><span class="cx"> #include <wtf/text/StringHash.h>
</span><span class="lines">@@ -402,9 +403,6 @@
</span><span class="cx"> Parser::Parser(const String& statement, RefPtr<XPathNSResolver>&& 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<Expression> Parser::parseStatement(const String& statement, RefPtr<XPathNSResolver>&& resolver, ExceptionCode& ec)
</del><ins>+ExceptionOr<std::unique_ptr<Expression>> Parser::parseStatement(const String& statement, RefPtr<XPathNSResolver>&& 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 "XPathStep.h"
</del><ins>+#include "ExceptionOr.h"
</ins><span class="cx"> #include "XPathPredicate.h"
</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<std::unique_ptr<Expression>> parseStatement(const String& statement, RefPtr<XPathNSResolver>&&);
</ins><span class="cx">
</span><del>- class Parser {
- WTF_MAKE_NONCOPYABLE(Parser);
- public:
- static std::unique_ptr<Expression> parseStatement(const String& statement, RefPtr<XPathNSResolver>&&, ExceptionCode&);
</del><ins>+ int lex(YYSTYPE&);
+ bool expandQualifiedName(const String& qualifiedName, String& localName, String& namespaceURI);
+ void setParseResult(std::unique_ptr<Expression>&& expression) { m_result = WTFMove(expression); }
</ins><span class="cx">
</span><del>- int lex(YYSTYPE&);
- bool expandQualifiedName(const String& qualifiedName, String& localName, String& namespaceURI);
- void setParseResult(std::unique_ptr<Expression> expression) { m_result = WTFMove(expression); }
</del><ins>+private:
+ Parser(const String&, RefPtr<XPathNSResolver>&&);
</ins><span class="cx">
</span><del>- private:
- Parser(const String&, RefPtr<XPathNSResolver>&&);
</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&);
+ bool lexQName(String&);
</ins><span class="cx">
</span><del>- Token lexString();
- Token lexNumber();
- bool lexNCName(String&);
- bool lexQName(String&);
</del><ins>+ Token nextToken();
+ Token nextTokenInternal();
</ins><span class="cx">
</span><del>- Token nextToken();
- Token nextTokenInternal();
</del><ins>+ const String& m_data;
+ RefPtr<XPathNSResolver> m_resolver;
</ins><span class="cx">
</span><del>- const String& m_data;
- RefPtr<XPathNSResolver> 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<Expression> m_result;
+ bool m_sawNamespaceError { false };
+};
</ins><span class="cx">
</span><del>- std::unique_ptr<Expression> 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& value)
</del><ins>+XPathResult::XPathResult(Document& document, const Value& 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->domTreeVersion();
</del><ins>+ m_document = &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& ec)
</del><ins>+ExceptionOr<void> 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& ec) const
</del><ins>+ExceptionOr<double> 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& ec) const
</del><ins>+ExceptionOr<String> 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& ec) const
</del><ins>+ExceptionOr<bool> 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& ec) const
</del><ins>+ExceptionOr<Node*> XPathResult::singleNodeValue() const
</ins><span class="cx"> {
</span><del>- if (resultType() != ANY_UNORDERED_NODE_TYPE && resultType() != FIRST_ORDERED_NODE_TYPE) {
- ec = XPathException::TYPE_ERR;
- return 0;
- }
-
- const NodeSet& nodes = m_value.toNodeSet();
</del><ins>+ if (resultType() != ANY_UNORDERED_NODE_TYPE && resultType() != FIRST_ORDERED_NODE_TYPE)
+ return Exception { XPathException::TYPE_ERR };
+
+ auto& 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->domTreeVersion() != m_domTreeVersion;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-unsigned XPathResult::snapshotLength(ExceptionCode& ec) const
</del><ins>+ExceptionOr<unsigned> XPathResult::snapshotLength() const
</ins><span class="cx"> {
</span><del>- if (resultType() != UNORDERED_NODE_SNAPSHOT_TYPE && resultType() != ORDERED_NODE_SNAPSHOT_TYPE) {
- ec = XPathException::TYPE_ERR;
- return 0;
- }
</del><ins>+ if (resultType() != UNORDERED_NODE_SNAPSHOT_TYPE && 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& ec)
</del><ins>+ExceptionOr<Node*> XPathResult::iterateNext()
</ins><span class="cx"> {
</span><del>- if (resultType() != UNORDERED_NODE_ITERATOR_TYPE && resultType() != ORDERED_NODE_ITERATOR_TYPE) {
- ec = XPathException::TYPE_ERR;
- return 0;
- }
-
- if (invalidIteratorState()) {
- ec = INVALID_STATE_ERR;
- return 0;
- }
-
- if (m_nodeSetPosition + 1 > m_nodeSet.size())
- return 0;
</del><ins>+ if (resultType() != UNORDERED_NODE_ITERATOR_TYPE && 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 >= 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& ec)
</del><ins>+ExceptionOr<Node*> XPathResult::snapshotItem(unsigned index)
</ins><span class="cx"> {
</span><del>- if (resultType() != UNORDERED_NODE_SNAPSHOT_TYPE && resultType() != ORDERED_NODE_SNAPSHOT_TYPE) {
- ec = XPathException::TYPE_ERR;
- return 0;
- }
-
- const NodeSet& nodes = m_value.toNodeSet();
</del><ins>+ if (resultType() != UNORDERED_NODE_SNAPSHOT_TYPE && resultType() != ORDERED_NODE_SNAPSHOT_TYPE)
+ return Exception { XPathException::TYPE_ERR };
+
+ auto& nodes = m_value.toNodeSet();
</ins><span class="cx"> if (index >= 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 "ExceptionOr.h"
</ins><span class="cx"> #include "XPathValue.h"
</span><del>-#include <wtf/Forward.h>
-#include <wtf/RefCounted.h>
</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<XPathResult> {
+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<XPathResult> create(Document& document, const XPath::Value& value) { return adoptRef(*new XPathResult(document, value)); }
+ WEBCORE_EXPORT ~XPathResult();
</ins><span class="cx">
</span><del>- class XPathResult : public RefCounted<XPathResult> {
- 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<XPathResult> create(Document* document, const XPath::Value& value) { return adoptRef(*new XPathResult(document, value)); }
- WEBCORE_EXPORT ~XPathResult();
-
- void convertTo(unsigned short type, ExceptionCode&);
</del><ins>+ ExceptionOr<void> 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&) const;
- WEBCORE_EXPORT String stringValue(ExceptionCode&) const;
- WEBCORE_EXPORT bool booleanValue(ExceptionCode&) const;
- WEBCORE_EXPORT Node* singleNodeValue(ExceptionCode&) const;
</del><ins>+ WEBCORE_EXPORT ExceptionOr<double> numberValue() const;
+ WEBCORE_EXPORT ExceptionOr<String> stringValue() const;
+ WEBCORE_EXPORT ExceptionOr<bool> booleanValue() const;
+ WEBCORE_EXPORT ExceptionOr<Node*> singleNodeValue() const;
</ins><span class="cx">
</span><del>- WEBCORE_EXPORT bool invalidIteratorState() const;
- WEBCORE_EXPORT unsigned snapshotLength(ExceptionCode&) const;
- WEBCORE_EXPORT Node* iterateNext(ExceptionCode&);
- WEBCORE_EXPORT Node* snapshotItem(unsigned index, ExceptionCode&);
</del><ins>+ WEBCORE_EXPORT bool invalidIteratorState() const;
+ WEBCORE_EXPORT ExceptionOr<unsigned> snapshotLength() const;
+ WEBCORE_EXPORT ExceptionOr<Node*> iterateNext();
+ WEBCORE_EXPORT ExceptionOr<Node*> snapshotItem(unsigned index);
</ins><span class="cx">
</span><del>- const XPath::Value& value() const { return m_value; }
</del><ins>+ const XPath::Value& value() const { return m_value; }
</ins><span class="cx">
</span><del>- private:
- XPathResult(Document*, const XPath::Value&);
-
- 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<Document> m_document;
- uint64_t m_domTreeVersion;
- };
</del><ins>+private:
+ XPathResult(Document&, const XPath::Value&);
</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<Document> 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 <darin@apple.com>
+
+ 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 <sam@webkit.org>
</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->getOverrideStyle(core(element), pseudoElement)));
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+static RefPtr<WebCore::XPathNSResolver> wrap(id <DOMXPathNSResolver> resolver)
+{
+ if (!resolver)
+ return nullptr;
+ if ([resolver isMemberOfClass:[DOMNativeXPathNSResolver class]])
+ return core(static_cast<DOMNativeXPathNSResolver *>(resolver));
+ return DOMCustomXPathNSResolver::create(resolver);
+}
+
</ins><span class="cx"> - (DOMXPathExpression *)createExpression:(NSString *)expression resolver:(id <DOMXPathNSResolver>)resolver
</span><span class="cx"> {
</span><span class="cx"> WebCore::JSMainThreadNullState state;
</span><del>- WebCore::XPathNSResolver* nativeResolver = 0;
- RefPtr<WebCore::XPathNSResolver> customResolver;
- if (resolver) {
- if ([resolver isMemberOfClass:[DOMNativeXPathNSResolver class]])
- nativeResolver = core(static_cast<DOMNativeXPathNSResolver *>(resolver));
- else {
- customResolver = DOMCustomXPathNSResolver::create(resolver);
- nativeResolver = WTF::getPtr(customResolver);
- }
- }
- WebCore::ExceptionCode ec = 0;
- DOMXPathExpression *result = kit(WTF::getPtr(IMPL->createExpression(expression, WTF::getPtr(nativeResolver), ec)));
- raiseOnDOMError(ec);
- return result;
</del><ins>+ return kit(raiseOnDOMError(IMPL->createExpression(expression, wrap(resolver))).ptr());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> - (id <DOMXPathNSResolver>)createNSResolver:(DOMNode *)nodeResolver
</span><span class="lines">@@ -640,20 +636,7 @@
</span><span class="cx"> - (DOMXPathResult *)evaluate:(NSString *)expression contextNode:(DOMNode *)contextNode resolver:(id <DOMXPathNSResolver>)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<WebCore::XPathNSResolver> customResolver;
- if (resolver) {
- if ([resolver isMemberOfClass:[DOMNativeXPathNSResolver class]])
- nativeResolver = core(static_cast<DOMNativeXPathNSResolver *>(resolver));
- else {
- customResolver = DOMCustomXPathNSResolver::create(resolver);
- nativeResolver = WTF::getPtr(customResolver);
- }
- }
- WebCore::ExceptionCode ec = 0;
- DOMXPathResult *result = kit(WTF::getPtr(IMPL->evaluate(expression, core(contextNode), WTF::getPtr(nativeResolver), type, core(inResult), ec)));
- raiseOnDOMError(ec);
- return result;
</del><ins>+ return kit(raiseOnDOMError(IMPL->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->evaluate(core(contextNode), type, core(inResult), ec)));
- raiseOnDOMError(ec);
- return result;
</del><ins>+ return kit(raiseOnDOMError(IMPL->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->numberValue(ec);
- raiseOnDOMError(ec);
- return result;
</del><ins>+ return raiseOnDOMError(IMPL->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->stringValue(ec);
- raiseOnDOMError(ec);
- return result;
</del><ins>+ return raiseOnDOMError(IMPL->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->booleanValue(ec);
- raiseOnDOMError(ec);
- return result;
</del><ins>+ return raiseOnDOMError(IMPL->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->singleNodeValue(ec)));
- raiseOnDOMError(ec);
- return result;
</del><ins>+ return kit(raiseOnDOMError(IMPL->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->snapshotLength(ec);
- raiseOnDOMError(ec);
- return result;
</del><ins>+ return raiseOnDOMError(IMPL->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->iterateNext(ec)));
- raiseOnDOMError(ec);
- return result;
</del><ins>+ return kit(raiseOnDOMError(IMPL->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->snapshotItem(index, ec)));
- raiseOnDOMError(ec);
- return result;
</del><ins>+ return kit(raiseOnDOMError(IMPL->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<WebCore::XPathResult*>(wrapper->_internal) : 0;
</del><ins>+ return wrapper ? reinterpret_cast<WebCore::XPathResult*>(wrapper->_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 <darin@apple.com>
+
+ 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 <cgarcia@igalia.com>
</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<WebCore::XPathNSResolver> convertedResolver = WebKit::core(resolver);
</span><del>- WebCore::ExceptionCode ec = 0;
- RefPtr<WebCore::XPathExpression> gobjectResult = WTF::getPtr(item->createExpression(convertedExpression, WTF::getPtr(convertedResolver), ec));
- if (ec) {
- WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+ auto result = item->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("WEBKIT_DOM"), 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<WebCore::XPathNSResolver> convertedResolver = WebKit::core(resolver);
</span><span class="cx"> WebCore::XPathResult* convertedInResult = WebKit::core(inResult);
</span><del>- WebCore::ExceptionCode ec = 0;
- RefPtr<WebCore::XPathResult> gobjectResult = WTF::getPtr(item->evaluate(convertedExpression, convertedContextNode, WTF::getPtr(convertedResolver), type, convertedInResult, ec));
- if (ec) {
- WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+ auto result = item->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("WEBKIT_DOM"), 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<WebCore::XPathResult> gobjectResult = WTF::getPtr(item->evaluate(convertedContextNode, type, convertedInResult, ec));
- if (ec) {
- WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+ auto result = item->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("WEBKIT_DOM"), 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<WebCore::Node> gobjectResult = WTF::getPtr(item->iterateNext(ec));
- if (ec) {
- WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+ auto result = item->iterateNext();
+ if (result.hasException()) {
+ WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx"> g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), 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<WebCore::Node> gobjectResult = WTF::getPtr(item->snapshotItem(index, ec));
- if (ec) {
- WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+ auto result = item->snapshotItem(index);
+ if (result.hasException()) {
+ WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx"> g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), 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->numberValue(ec);
- if (ec) {
- WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+ auto result = item->numberValue();
+ if (result.hasException()) {
+ WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx"> g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), 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->stringValue(ec));
- return result;
</del><ins>+ auto result = item->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->booleanValue(ec);
- if (ec) {
- WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+ auto result = item->booleanValue();
+ if (result.hasException()) {
+ WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx"> g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), 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<WebCore::Node> gobjectResult = WTF::getPtr(item->singleNodeValue(ec));
- if (ec) {
- WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+ auto result = item->singleNodeValue();
+ if (result.hasException()) {
+ WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx"> g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), 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->snapshotLength(ec);
- if (ec) {
- WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+ auto result = item->snapshotLength();
+ if (result.hasException()) {
+ WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx"> g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), 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>