<!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>[208145] 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/208145">208145</a></dd>
<dt>Author</dt> <dd>darin@apple.com</dd>
<dt>Date</dt> <dd>2016-10-31 08:54:51 -0700 (Mon, 31 Oct 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Move ChildNode and ParentNode from ExceptionCode to Exception, add support for ExceptionOr&lt;T&amp;&gt;
https://bugs.webkit.org/show_bug.cgi?id=164214

Reviewed by Alex Christensen.

Source/WebCore:

* Modules/fetch/FetchRequest.cpp:
(WebCore::FetchRequest::initializeOptions): Use FetchHeaders&amp; instead of
Ref&lt;FetchHeaders&gt; for return value.
(WebCore::FetchRequest::initializeWith): Ditto.
* Modules/fetch/FetchRequest.h: Updated for above.

* Modules/mediasource/MediaSource.cpp:
(WebCore::MediaSource::addSourceBuffer): Use SourceBuffer&amp; instead of
SourceBuffer* for return value.
* Modules/mediasource/MediaSource.h: Updated for above.

* bindings/js/JSDOMBinding.h: Added overloads of checkSecurityForNode so
it works with a function returning a reference.

* css/CSSPrimitiveValue.cpp:
(WebCore::CSSPrimitiveValue::getCounterValue): Use Counter&amp; instead of
Counter* for return value.
(WebCore::CSSPrimitiveValue::getRectValue): Use Rect&amp; instead of
Rect* for return value.
* css/CSSPrimitiveValue.h: Updated for above.

* dom/ChildNode.idl: Use non-legacy exceptions.

* dom/ContainerNode.cpp:
(WebCore::ContainerNode::querySelector): Use ExceptionOr.
(WebCore::ContainerNode::querySelectorAll): Ditto.
(WebCore::ContainerNode::append): Ditto.
(WebCore::ContainerNode::prepend): Ditto.
* dom/ContainerNode.h: Updated for above.

* dom/Document.cpp:
(WebCore::Document::selectorQueryForString): Use ExceptionOr.
* dom/Document.h: Updated for above.

* dom/Element.cpp:
(WebCore::Element::attachShadow): Return ShadowRoot&amp; instead of
Ref&lt;ShadowRoot&gt; since the shadow root is owned by the element, not
the caller.
(WebCore::Element::matches): Updated for change to make the
selectorQueryForString function use ExceptionOr.
(WebCore::Element::closest): Ditto.
(WebCore::contextNodeForInsertion): Return ContainerNode&amp; instead of
ContainerNode*.
(WebCore::contextElementForInsertion): Updated for above.
* dom/Element.h: Updated for above.
* dom/Element.idl: Changed return type for closest and for
insertAdjacentElement to be nullable since both can return null.

* dom/ExceptionOr.h: Added a specialization for ExceptionOr&lt;T&amp;&gt;.

* dom/Node.cpp:
(WebCore::Node::convertNodesOrStringsIntoNode): Use ExceptionOr.
(WebCore::Node::before): Ditto.
(WebCore::Node::after): Ditto.
(WebCore::Node::replaceWith): Ditto.
* dom/Node.h: Updated for above changes.

* dom/ParentNode.idl: Use non-legacy exceptions.

* dom/SelectorQuery.cpp:
(WebCore::SelectorDataList::queryAll): Changed return type to Ref.
(WebCore::SelectorQueryCache::add): Use ExceptionOr.
* dom/SelectorQuery.h: Updated for above changes.

* html/HTMLFrameOwnerElement.cpp:
(WebCore::HTMLFrameOwnerElement::getSVGDocument): Return
Document&amp; instead of Document*.
* html/HTMLFrameOwnerElement.h: Updated for above change.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::addTextTrack): Return TextTrack&amp;
instead of Ref&lt;TextTrack&gt;.
* html/HTMLMediaElement.h: Updated for above.

* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::partOfSnapshotOverlay):
Updated for new exceptions.
* inspector/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::querySelector): Ditto.
(WebCore::InspectorDOMAgent::querySelectorAll): Ditto.
(WebCore::InspectorDOMAgent::performSearch): Ditto.
(WebCore::InspectorDOMAgent::highlightSelector): Ditto.

* inspector/InspectorNodeFinder.cpp:
(WebCore::InspectorNodeFinder::performSearch): Put a null check
here so callers don't have to do it. Pass references to the
individual functions since the pointer can't be null.
(WebCore::InspectorNodeFinder::searchUsingDOMTreeTraversal):
Updated to use reference and streamlined code a bit, using
containsIgnoringASCIICase instead of findIgnoringCase.
(WebCore::InspectorNodeFinder::matchesAttribute): Ditto.
(WebCore::InspectorNodeFinder::matchesElement): Ditto.
(WebCore::InspectorNodeFinder::searchUsingXPath): Ditto.
(WebCore::InspectorNodeFinder::searchUsingCSSSelectors): Ditto.
Also updated  for new exceptions in querySelectorAll.
* inspector/InspectorNodeFinder.h: Updated for above.

* page/Crypto.cpp:
(WebCore::Crypto::webkitSubtle): Return WebKitSubtleCrypto&amp;
insetad of WebKitSubtleCrypto*.
* page/Crypto.h: Updated for above.

* testing/Internals.h: Removed declarations for functions already
removed: ensureShadowRoot and createShadowRoot.

Source/WebKit/mac:

* DOM/DOMCSSPrimitiveValue.mm:
(-[DOMCSSPrimitiveValue getCounterValue]): Updated since return value
is a reference now.
(-[DOMCSSPrimitiveValue getRectValue]): Ditto.

* DOM/DOMDocument.mm:
(-[DOMDocument querySelector:]): Updated exception handling.
(-[DOMDocument querySelectorAll:]): Ditto.
* DOM/DOMDocumentFragment.mm:
(-[DOMDocumentFragment querySelector:]): Ditto.
(-[DOMDocumentFragment querySelectorAll:]): Ditto.
* DOM/DOMElement.mm:
(-[DOMElement querySelector:]): Ditto.
(-[DOMElement querySelectorAll:]): Ditto.

Source/WebKit2:

* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocument.cpp:
(webkit_dom_document_query_selector): Updated exception handling.
(webkit_dom_document_query_selector_all): Ditto.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentFragment.cpp:
(webkit_dom_document_fragment_query_selector): Ditto.
(webkit_dom_document_fragment_query_selector_all): Ditto.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp:
(webkit_dom_element_query_selector): Ditto.
(webkit_dom_element_query_selector_all): Ditto.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulesfetchFetchRequestcpp">trunk/Source/WebCore/Modules/fetch/FetchRequest.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesfetchFetchRequesth">trunk/Source/WebCore/Modules/fetch/FetchRequest.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediasourceMediaSourcecpp">trunk/Source/WebCore/Modules/mediasource/MediaSource.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediasourceMediaSourceh">trunk/Source/WebCore/Modules/mediasource/MediaSource.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMBindingh">trunk/Source/WebCore/bindings/js/JSDOMBinding.h</a></li>
<li><a href="#trunkSourceWebCorecssCSSPrimitiveValuecpp">trunk/Source/WebCore/css/CSSPrimitiveValue.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSPrimitiveValueh">trunk/Source/WebCore/css/CSSPrimitiveValue.h</a></li>
<li><a href="#trunkSourceWebCoredomChildNodeidl">trunk/Source/WebCore/dom/ChildNode.idl</a></li>
<li><a href="#trunkSourceWebCoredomContainerNodecpp">trunk/Source/WebCore/dom/ContainerNode.cpp</a></li>
<li><a href="#trunkSourceWebCoredomContainerNodeh">trunk/Source/WebCore/dom/ContainerNode.h</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="#trunkSourceWebCoredomElementcpp">trunk/Source/WebCore/dom/Element.cpp</a></li>
<li><a href="#trunkSourceWebCoredomElementh">trunk/Source/WebCore/dom/Element.h</a></li>
<li><a href="#trunkSourceWebCoredomElementidl">trunk/Source/WebCore/dom/Element.idl</a></li>
<li><a href="#trunkSourceWebCoredomExceptionOrh">trunk/Source/WebCore/dom/ExceptionOr.h</a></li>
<li><a href="#trunkSourceWebCoredomNodecpp">trunk/Source/WebCore/dom/Node.cpp</a></li>
<li><a href="#trunkSourceWebCoredomNodeh">trunk/Source/WebCore/dom/Node.h</a></li>
<li><a href="#trunkSourceWebCoredomParentNodeidl">trunk/Source/WebCore/dom/ParentNode.idl</a></li>
<li><a href="#trunkSourceWebCoredomSelectorQuerycpp">trunk/Source/WebCore/dom/SelectorQuery.cpp</a></li>
<li><a href="#trunkSourceWebCoredomSelectorQueryh">trunk/Source/WebCore/dom/SelectorQuery.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFrameOwnerElementcpp">trunk/Source/WebCore/html/HTMLFrameOwnerElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFrameOwnerElementh">trunk/Source/WebCore/html/HTMLFrameOwnerElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementcpp">trunk/Source/WebCore/html/HTMLMediaElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementh">trunk/Source/WebCore/html/HTMLMediaElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLPlugInImageElementcpp">trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorDOMAgentcpp">trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorNodeFindercpp">trunk/Source/WebCore/inspector/InspectorNodeFinder.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorNodeFinderh">trunk/Source/WebCore/inspector/InspectorNodeFinder.h</a></li>
<li><a href="#trunkSourceWebCorepageCryptocpp">trunk/Source/WebCore/page/Crypto.cpp</a></li>
<li><a href="#trunkSourceWebCorepageCryptoh">trunk/Source/WebCore/page/Crypto.h</a></li>
<li><a href="#trunkSourceWebCoretestingInternalsh">trunk/Source/WebCore/testing/Internals.h</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMCSSPrimitiveValuemm">trunk/Source/WebKit/mac/DOM/DOMCSSPrimitiveValue.mm</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMDocumentmm">trunk/Source/WebKit/mac/DOM/DOMDocument.mm</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMDocumentFragmentmm">trunk/Source/WebKit/mac/DOM/DOMDocumentFragment.mm</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMElementmm">trunk/Source/WebKit/mac/DOM/DOMElement.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="#trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMDocumentFragmentcpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentFragment.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMElementcpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/ChangeLog        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -1,5 +1,117 @@
</span><span class="cx"> 2016-10-31  Darin Adler  &lt;darin@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Move ChildNode and ParentNode from ExceptionCode to Exception, add support for ExceptionOr&lt;T&amp;&gt;
+        https://bugs.webkit.org/show_bug.cgi?id=164214
+
+        Reviewed by Alex Christensen.
+
+        * Modules/fetch/FetchRequest.cpp:
+        (WebCore::FetchRequest::initializeOptions): Use FetchHeaders&amp; instead of
+        Ref&lt;FetchHeaders&gt; for return value.
+        (WebCore::FetchRequest::initializeWith): Ditto.
+        * Modules/fetch/FetchRequest.h: Updated for above.
+
+        * Modules/mediasource/MediaSource.cpp:
+        (WebCore::MediaSource::addSourceBuffer): Use SourceBuffer&amp; instead of
+        SourceBuffer* for return value.
+        * Modules/mediasource/MediaSource.h: Updated for above.
+
+        * bindings/js/JSDOMBinding.h: Added overloads of checkSecurityForNode so
+        it works with a function returning a reference.
+
+        * css/CSSPrimitiveValue.cpp:
+        (WebCore::CSSPrimitiveValue::getCounterValue): Use Counter&amp; instead of
+        Counter* for return value.
+        (WebCore::CSSPrimitiveValue::getRectValue): Use Rect&amp; instead of
+        Rect* for return value.
+        * css/CSSPrimitiveValue.h: Updated for above.
+
+        * dom/ChildNode.idl: Use non-legacy exceptions.
+
+        * dom/ContainerNode.cpp:
+        (WebCore::ContainerNode::querySelector): Use ExceptionOr.
+        (WebCore::ContainerNode::querySelectorAll): Ditto.
+        (WebCore::ContainerNode::append): Ditto.
+        (WebCore::ContainerNode::prepend): Ditto.
+        * dom/ContainerNode.h: Updated for above.
+
+        * dom/Document.cpp:
+        (WebCore::Document::selectorQueryForString): Use ExceptionOr.
+        * dom/Document.h: Updated for above.
+
+        * dom/Element.cpp:
+        (WebCore::Element::attachShadow): Return ShadowRoot&amp; instead of
+        Ref&lt;ShadowRoot&gt; since the shadow root is owned by the element, not
+        the caller.
+        (WebCore::Element::matches): Updated for change to make the
+        selectorQueryForString function use ExceptionOr.
+        (WebCore::Element::closest): Ditto.
+        (WebCore::contextNodeForInsertion): Return ContainerNode&amp; instead of
+        ContainerNode*.
+        (WebCore::contextElementForInsertion): Updated for above.
+        * dom/Element.h: Updated for above.
+        * dom/Element.idl: Changed return type for closest and for
+        insertAdjacentElement to be nullable since both can return null.
+
+        * dom/ExceptionOr.h: Added a specialization for ExceptionOr&lt;T&amp;&gt;.
+
+        * dom/Node.cpp:
+        (WebCore::Node::convertNodesOrStringsIntoNode): Use ExceptionOr.
+        (WebCore::Node::before): Ditto.
+        (WebCore::Node::after): Ditto.
+        (WebCore::Node::replaceWith): Ditto.
+        * dom/Node.h: Updated for above changes.
+
+        * dom/ParentNode.idl: Use non-legacy exceptions.
+
+        * dom/SelectorQuery.cpp:
+        (WebCore::SelectorDataList::queryAll): Changed return type to Ref.
+        (WebCore::SelectorQueryCache::add): Use ExceptionOr.
+        * dom/SelectorQuery.h: Updated for above changes.
+
+        * html/HTMLFrameOwnerElement.cpp:
+        (WebCore::HTMLFrameOwnerElement::getSVGDocument): Return
+        Document&amp; instead of Document*.
+        * html/HTMLFrameOwnerElement.h: Updated for above change.
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::addTextTrack): Return TextTrack&amp;
+        instead of Ref&lt;TextTrack&gt;.
+        * html/HTMLMediaElement.h: Updated for above.
+
+        * html/HTMLPlugInImageElement.cpp:
+        (WebCore::HTMLPlugInImageElement::partOfSnapshotOverlay):
+        Updated for new exceptions.
+        * inspector/InspectorDOMAgent.cpp:
+        (WebCore::InspectorDOMAgent::querySelector): Ditto.
+        (WebCore::InspectorDOMAgent::querySelectorAll): Ditto.
+        (WebCore::InspectorDOMAgent::performSearch): Ditto.
+        (WebCore::InspectorDOMAgent::highlightSelector): Ditto.
+
+        * inspector/InspectorNodeFinder.cpp:
+        (WebCore::InspectorNodeFinder::performSearch): Put a null check
+        here so callers don't have to do it. Pass references to the
+        individual functions since the pointer can't be null.
+        (WebCore::InspectorNodeFinder::searchUsingDOMTreeTraversal):
+        Updated to use reference and streamlined code a bit, using
+        containsIgnoringASCIICase instead of findIgnoringCase.
+        (WebCore::InspectorNodeFinder::matchesAttribute): Ditto.
+        (WebCore::InspectorNodeFinder::matchesElement): Ditto.
+        (WebCore::InspectorNodeFinder::searchUsingXPath): Ditto.
+        (WebCore::InspectorNodeFinder::searchUsingCSSSelectors): Ditto.
+        Also updated  for new exceptions in querySelectorAll.
+        * inspector/InspectorNodeFinder.h: Updated for above.
+
+        * page/Crypto.cpp:
+        (WebCore::Crypto::webkitSubtle): Return WebKitSubtleCrypto&amp;
+        insetad of WebKitSubtleCrypto*.
+        * page/Crypto.h: Updated for above.
+
+        * testing/Internals.h: Removed declarations for functions already
+        removed: ensureShadowRoot and createShadowRoot.
+
+2016-10-31  Darin Adler  &lt;darin@apple.com&gt;
+
</ins><span class="cx">         Convert Document from ExceptionCode to Exception
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=164212
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesfetchFetchRequestcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/fetch/FetchRequest.cpp (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/fetch/FetchRequest.cpp        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/Modules/fetch/FetchRequest.cpp        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -221,7 +221,7 @@
</span><span class="cx">     return internalRequest.request.httpMethod() != &quot;GET&quot; &amp;&amp; internalRequest.request.httpMethod() != &quot;HEAD&quot;;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ExceptionOr&lt;Ref&lt;FetchHeaders&gt;&gt; FetchRequest::initializeOptions(const Dictionary&amp; init)
</del><ins>+ExceptionOr&lt;FetchHeaders&amp;&gt; FetchRequest::initializeOptions(const Dictionary&amp; init)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(scriptExecutionContext());
</span><span class="cx"> 
</span><span class="lines">@@ -237,10 +237,10 @@
</span><span class="cx">             return Exception { TypeError, ASCIILiteral(&quot;There cannot be an integrity in no-cors mode.&quot;) };
</span><span class="cx">         m_headers-&gt;setGuard(FetchHeaders::Guard::RequestNoCors);
</span><span class="cx">     }
</span><del>-    return m_headers.copyRef();
</del><ins>+    return m_headers.get();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-ExceptionOr&lt;Ref&lt;FetchHeaders&gt;&gt; FetchRequest::initializeWith(const String&amp; url, const Dictionary&amp; init)
</del><ins>+ExceptionOr&lt;FetchHeaders&amp;&gt; FetchRequest::initializeWith(const String&amp; url, const Dictionary&amp; init)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(scriptExecutionContext());
</span><span class="cx">     // FIXME: Tighten the URL parsing algorithm according https://url.spec.whatwg.org/#concept-url-parser.
</span><span class="lines">@@ -256,7 +256,7 @@
</span><span class="cx">     return initializeOptions(init);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ExceptionOr&lt;Ref&lt;FetchHeaders&gt;&gt; FetchRequest::initializeWith(FetchRequest&amp; input, const Dictionary&amp; init)
</del><ins>+ExceptionOr&lt;FetchHeaders&amp;&gt; FetchRequest::initializeWith(FetchRequest&amp; input, const Dictionary&amp; init)
</ins><span class="cx"> {
</span><span class="cx">     if (input.isDisturbedOrLocked())
</span><span class="cx">         return Exception {TypeError, ASCIILiteral(&quot;Request input is disturbed or locked.&quot;) };
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesfetchFetchRequesth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/fetch/FetchRequest.h (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/fetch/FetchRequest.h        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/Modules/fetch/FetchRequest.h        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -45,8 +45,8 @@
</span><span class="cx"> public:
</span><span class="cx">     static Ref&lt;FetchRequest&gt; create(ScriptExecutionContext&amp; context) { return adoptRef(*new FetchRequest(context, Nullopt, FetchHeaders::create(FetchHeaders::Guard::Request), { })); }
</span><span class="cx"> 
</span><del>-    ExceptionOr&lt;Ref&lt;FetchHeaders&gt;&gt; initializeWith(FetchRequest&amp;, const Dictionary&amp;);
-    ExceptionOr&lt;Ref&lt;FetchHeaders&gt;&gt; initializeWith(const String&amp;, const Dictionary&amp;);
</del><ins>+    ExceptionOr&lt;FetchHeaders&amp;&gt; initializeWith(FetchRequest&amp;, const Dictionary&amp;);
+    ExceptionOr&lt;FetchHeaders&amp;&gt; initializeWith(const String&amp;, const Dictionary&amp;);
</ins><span class="cx">     ExceptionOr&lt;void&gt; setBody(JSC::ExecState&amp;, JSC::JSValue, FetchRequest*);
</span><span class="cx"> 
</span><span class="cx">     const String&amp; method() const { return m_internalRequest.request.httpMethod(); }
</span><span class="lines">@@ -95,7 +95,7 @@
</span><span class="cx"> private:
</span><span class="cx">     FetchRequest(ScriptExecutionContext&amp;, Optional&lt;FetchBody&gt;&amp;&amp;, Ref&lt;FetchHeaders&gt;&amp;&amp;, InternalRequest&amp;&amp;);
</span><span class="cx"> 
</span><del>-    ExceptionOr&lt;Ref&lt;FetchHeaders&gt;&gt; initializeOptions(const Dictionary&amp;);
</del><ins>+    ExceptionOr&lt;FetchHeaders&amp;&gt; initializeOptions(const Dictionary&amp;);
</ins><span class="cx"> 
</span><span class="cx">     const char* activeDOMObjectName() const final;
</span><span class="cx">     bool canSuspendForDocumentSuspension() const final;
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediasourceMediaSourcecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediasource/MediaSource.cpp (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediasource/MediaSource.cpp        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/Modules/mediasource/MediaSource.cpp        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -622,7 +622,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ExceptionOr&lt;SourceBuffer*&gt; MediaSource::addSourceBuffer(const String&amp; type)
</del><ins>+ExceptionOr&lt;SourceBuffer&amp;&gt; MediaSource::addSourceBuffer(const String&amp; type)
</ins><span class="cx"> {
</span><span class="cx">     LOG(MediaSource, &quot;MediaSource::addSourceBuffer(%s) %p&quot;, type.ascii().data(), this);
</span><span class="cx"> 
</span><span class="lines">@@ -668,7 +668,7 @@
</span><span class="cx">     // ↳ Set the mode attribute on the new object to &quot;segments&quot;.
</span><span class="cx">     buffer-&gt;setMode(shouldGenerateTimestamps ? SourceBuffer::AppendMode::Sequence : SourceBuffer::AppendMode::Segments);
</span><span class="cx"> 
</span><del>-    SourceBuffer* result = buffer.ptr();
</del><ins>+    auto&amp; result = buffer.get();
</ins><span class="cx"> 
</span><span class="cx">     // 8. Add the new object to sourceBuffers and fire a addsourcebuffer on that object.
</span><span class="cx">     m_sourceBuffers-&gt;add(WTFMove(buffer));
</span><span class="lines">@@ -675,7 +675,7 @@
</span><span class="cx">     regenerateActiveSourceBuffers();
</span><span class="cx"> 
</span><span class="cx">     // 9. Return the new object to the caller.
</span><del>-    return WTFMove(result);
</del><ins>+    return result;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ExceptionOr&lt;void&gt; MediaSource::removeSourceBuffer(SourceBuffer&amp; buffer)
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediasourceMediaSourceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediasource/MediaSource.h (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediasource/MediaSource.h        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/Modules/mediasource/MediaSource.h        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -89,7 +89,7 @@
</span><span class="cx"> 
</span><span class="cx">     SourceBufferList* sourceBuffers() { return m_sourceBuffers.get(); }
</span><span class="cx">     SourceBufferList* activeSourceBuffers() { return m_activeSourceBuffers.get(); }
</span><del>-    ExceptionOr&lt;SourceBuffer*&gt; addSourceBuffer(const String&amp; type);
</del><ins>+    ExceptionOr&lt;SourceBuffer&amp;&gt; addSourceBuffer(const String&amp; type);
</ins><span class="cx">     ExceptionOr&lt;void&gt; removeSourceBuffer(SourceBuffer&amp;);
</span><span class="cx">     static bool isTypeSupported(const String&amp; type);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMBinding.h (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -285,8 +285,10 @@
</span><span class="cx"> 
</span><span class="cx"> enum SecurityReportingOption { DoNotReportSecurityError, LogSecurityError, ThrowSecurityError };
</span><span class="cx"> namespace BindingSecurity {
</span><ins>+    template&lt;typename T&gt; T* checkSecurityForNode(JSC::ExecState&amp;, T&amp;);
</ins><span class="cx">     template&lt;typename T&gt; T* checkSecurityForNode(JSC::ExecState&amp;, T*);
</span><span class="cx">     template&lt;typename T&gt; ExceptionOr&lt;T*&gt; checkSecurityForNode(JSC::ExecState&amp;, ExceptionOr&lt;T*&gt;&amp;&amp;);
</span><ins>+    template&lt;typename T&gt; ExceptionOr&lt;T*&gt; checkSecurityForNode(JSC::ExecState&amp;, ExceptionOr&lt;T&amp;&gt;&amp;&amp;);
</ins><span class="cx">     bool shouldAllowAccessToDOMWindow(JSC::ExecState*, DOMWindow&amp;, SecurityReportingOption = LogSecurityError);
</span><span class="cx">     bool shouldAllowAccessToDOMWindow(JSC::ExecState&amp;, DOMWindow&amp;, String&amp; message);
</span><span class="cx">     bool shouldAllowAccessToFrame(JSC::ExecState*, Frame*, SecurityReportingOption = LogSecurityError);
</span><span class="lines">@@ -774,6 +776,11 @@
</span><span class="cx">     return toJSNewlyCreated(&amp;state, &amp;globalObject, value.releaseReturnValue());
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+template&lt;typename T&gt; inline T* BindingSecurity::checkSecurityForNode(JSC::ExecState&amp; state, T&amp; node)
+{
+    return shouldAllowAccessToNode(state, &amp;node) ? &amp;node : nullptr;
+}
+
</ins><span class="cx"> template&lt;typename T&gt; inline T* BindingSecurity::checkSecurityForNode(JSC::ExecState&amp; state, T* node)
</span><span class="cx"> {
</span><span class="cx">     return shouldAllowAccessToNode(state, node) ? node : nullptr;
</span><span class="lines">@@ -782,8 +789,15 @@
</span><span class="cx"> template&lt;typename T&gt; inline ExceptionOr&lt;T*&gt; BindingSecurity::checkSecurityForNode(JSC::ExecState&amp; state, ExceptionOr&lt;T*&gt;&amp;&amp; value)
</span><span class="cx"> {
</span><span class="cx">     if (value.hasException())
</span><del>-        return WTFMove(value);
</del><ins>+        return value.releaseException();
</ins><span class="cx">     return checkSecurityForNode(state, value.releaseReturnValue());
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+template&lt;typename T&gt; inline ExceptionOr&lt;T*&gt; BindingSecurity::checkSecurityForNode(JSC::ExecState&amp; state, ExceptionOr&lt;T&amp;&gt;&amp;&amp; value)
+{
+    if (value.hasException())
+        return value.releaseException();
+    return checkSecurityForNode(state, value.releaseReturnValue());
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSPrimitiveValuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSPrimitiveValue.cpp (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSPrimitiveValue.cpp        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/css/CSSPrimitiveValue.cpp        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -962,18 +962,18 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ExceptionOr&lt;Counter*&gt; CSSPrimitiveValue::getCounterValue() const
</del><ins>+ExceptionOr&lt;Counter&amp;&gt; CSSPrimitiveValue::getCounterValue() const
</ins><span class="cx"> {
</span><span class="cx">     if (m_primitiveUnitType != CSS_COUNTER)
</span><span class="cx">         return Exception { INVALID_ACCESS_ERR };
</span><del>-    return m_value.counter;
</del><ins>+    return *m_value.counter;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-ExceptionOr&lt;Rect*&gt; CSSPrimitiveValue::getRectValue() const
</del><ins>+ExceptionOr&lt;Rect&amp;&gt; CSSPrimitiveValue::getRectValue() const
</ins><span class="cx"> {
</span><span class="cx">     if (m_primitiveUnitType != CSS_RECT)
</span><span class="cx">         return Exception { INVALID_ACCESS_ERR };
</span><del>-    return m_value.rect;
</del><ins>+    return *m_value.rect;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ExceptionOr&lt;Ref&lt;RGBColor&gt;&gt; CSSPrimitiveValue::getRGBColorValue() const
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSPrimitiveValueh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSPrimitiveValue.h (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSPrimitiveValue.h        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/css/CSSPrimitiveValue.h        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -251,8 +251,8 @@
</span><span class="cx">     WEBCORE_EXPORT ExceptionOr&lt;float&gt; getFloatValue(unsigned short unitType) const;
</span><span class="cx">     WEBCORE_EXPORT ExceptionOr&lt;void&gt; setStringValue(unsigned short stringType, const String&amp; stringValue);
</span><span class="cx">     WEBCORE_EXPORT ExceptionOr&lt;String&gt; getStringValue() const;
</span><del>-    WEBCORE_EXPORT ExceptionOr&lt;Counter*&gt; getCounterValue() const;
-    WEBCORE_EXPORT ExceptionOr&lt;Rect*&gt; getRectValue() const;
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;Counter&amp;&gt; getCounterValue() const;
+    WEBCORE_EXPORT ExceptionOr&lt;Rect&amp;&gt; getRectValue() const;
</ins><span class="cx">     WEBCORE_EXPORT ExceptionOr&lt;Ref&lt;RGBColor&gt;&gt; getRGBColorValue() const;
</span><span class="cx"> 
</span><span class="cx">     double computeDegrees() const;
</span></span></pre></div>
<a id="trunkSourceWebCoredomChildNodeidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ChildNode.idl (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ChildNode.idl        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/dom/ChildNode.idl        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -22,8 +22,8 @@
</span><span class="cx"> [
</span><span class="cx">     NoInterfaceObject,
</span><span class="cx"> ] interface ChildNode {
</span><del>-    [CEReactions, Unscopable, MayThrowLegacyException] void before((Node or DOMString)... nodes);
-    [CEReactions, Unscopable, MayThrowLegacyException] void after((Node or DOMString)... nodes);
-    [CEReactions, Unscopable, MayThrowLegacyException] void replaceWith((Node or DOMString)... nodes);
</del><ins>+    [CEReactions, Unscopable, MayThrowException] void before((Node or DOMString)... nodes);
+    [CEReactions, Unscopable, MayThrowException] void after((Node or DOMString)... nodes);
+    [CEReactions, Unscopable, MayThrowException] void replaceWith((Node or DOMString)... nodes);
</ins><span class="cx">     [CEReactions, Unscopable, MayThrowException] void remove();
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoredomContainerNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ContainerNode.cpp (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ContainerNode.cpp        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/dom/ContainerNode.cpp        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -809,18 +809,20 @@
</span><span class="cx">     dispatchChildInsertionEvents(child);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Element* ContainerNode::querySelector(const String&amp; selectors, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Element*&gt; ContainerNode::querySelector(const String&amp; selectors)
</ins><span class="cx"> {
</span><del>-    if (SelectorQuery* selectorQuery = document().selectorQueryForString(selectors, ec))
-        return selectorQuery-&gt;queryFirst(*this);
-    return nullptr;
</del><ins>+    auto query = document().selectorQueryForString(selectors);
+    if (query.hasException())
+        return query.releaseException();
+    return query.releaseReturnValue().queryFirst(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;NodeList&gt; ContainerNode::querySelectorAll(const String&amp; selectors, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Ref&lt;NodeList&gt;&gt; ContainerNode::querySelectorAll(const String&amp; selectors)
</ins><span class="cx"> {
</span><del>-    if (SelectorQuery* selectorQuery = document().selectorQueryForString(selectors, ec))
-        return selectorQuery-&gt;queryAll(*this);
-    return nullptr;
</del><ins>+    auto query = document().selectorQueryForString(selectors);
+    if (query.hasException())
+        return query.releaseException();
+    return query.releaseReturnValue().queryAll(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;HTMLCollection&gt; ContainerNode::getElementsByTagName(const AtomicString&amp; qualifiedName)
</span><span class="lines">@@ -878,22 +880,38 @@
</span><span class="cx">     return std::distance(children.begin(), children.end());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ContainerNode::append(Vector&lt;NodeOrString&gt;&amp;&amp; nodeOrStringVector, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; ContainerNode::append(Vector&lt;NodeOrString&gt;&amp;&amp; vector)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;Node&gt; node = convertNodesOrStringsIntoNode(WTFMove(nodeOrStringVector), ec);
-    if (ec || !node)
-        return;
</del><ins>+    auto result = convertNodesOrStringsIntoNode(WTFMove(vector));
+    if (result.hasException())
+        return result.releaseException();
</ins><span class="cx"> 
</span><ins>+    auto node = result.releaseReturnValue();
+    if (!node)
+        return { };
+
+    ExceptionCode ec = 0;
</ins><span class="cx">     appendChild(*node, ec);
</span><ins>+    if (ec)
+        return Exception { ec };
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ContainerNode::prepend(Vector&lt;NodeOrString&gt;&amp;&amp; nodeOrStringVector, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; ContainerNode::prepend(Vector&lt;NodeOrString&gt;&amp;&amp; vector)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;Node&gt; node = convertNodesOrStringsIntoNode(WTFMove(nodeOrStringVector), ec);
-    if (ec || !node)
-        return;
</del><ins>+    auto result = convertNodesOrStringsIntoNode(WTFMove(vector));
+    if (result.hasException())
+        return result.releaseException();
</ins><span class="cx"> 
</span><ins>+    auto node = result.releaseReturnValue();
+    if (!node)
+        return { };
+
+    ExceptionCode ec = 0;
</ins><span class="cx">     insertBefore(*node, firstChild(), ec);
</span><ins>+    if (ec)
+        return Exception { ec };
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> HTMLCollection* ContainerNode::cachedHTMLCollection(CollectionType type)
</span></span></pre></div>
<a id="trunkSourceWebCoredomContainerNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ContainerNode.h (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ContainerNode.h        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/dom/ContainerNode.h        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -86,8 +86,8 @@
</span><span class="cx">     // This gives the area within which events may get handled by a hander registered on this node.
</span><span class="cx">     virtual LayoutRect absoluteEventHandlerBounds(bool&amp; /* includesFixedPositionElements */) { return LayoutRect(); }
</span><span class="cx"> 
</span><del>-    WEBCORE_EXPORT Element* querySelector(const String&amp; selectors, ExceptionCode&amp;);
-    WEBCORE_EXPORT RefPtr&lt;NodeList&gt; querySelectorAll(const String&amp; selectors, ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;Element*&gt; querySelector(const String&amp; selectors);
+    WEBCORE_EXPORT ExceptionOr&lt;Ref&lt;NodeList&gt;&gt; querySelectorAll(const String&amp; selectors);
</ins><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT Ref&lt;HTMLCollection&gt; getElementsByTagName(const AtomicString&amp;);
</span><span class="cx">     WEBCORE_EXPORT Ref&lt;HTMLCollection&gt; getElementsByTagNameNS(const AtomicString&amp; namespaceURI, const AtomicString&amp; localName);
</span><span class="lines">@@ -100,8 +100,8 @@
</span><span class="cx">     WEBCORE_EXPORT Element* firstElementChild() const;
</span><span class="cx">     WEBCORE_EXPORT Element* lastElementChild() const;
</span><span class="cx">     WEBCORE_EXPORT unsigned childElementCount() const;
</span><del>-    void append(Vector&lt;NodeOrString&gt;&amp;&amp;, ExceptionCode&amp;);
-    void prepend(Vector&lt;NodeOrString&gt;&amp;&amp;, ExceptionCode&amp;);
</del><ins>+    ExceptionOr&lt;void&gt; append(Vector&lt;NodeOrString&gt;&amp;&amp;);
+    ExceptionOr&lt;void&gt; prepend(Vector&lt;NodeOrString&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx">     bool ensurePreInsertionValidity(Node&amp; newChild, Node* refChild, ExceptionCode&amp;);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.cpp (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.cpp        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/dom/Document.cpp        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -762,16 +762,13 @@
</span><span class="cx">     return m_imagesByUsemap.getElementByCaseFoldedUsemap(name, *this);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-SelectorQuery* Document::selectorQueryForString(const String&amp; selectorString, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;SelectorQuery&amp;&gt; Document::selectorQueryForString(const String&amp; selectorString)
</ins><span class="cx"> {
</span><del>-    if (selectorString.isEmpty()) {
-        ec = SYNTAX_ERR;
-        return nullptr;
-    }
-
</del><ins>+    if (selectorString.isEmpty())
+        return Exception { SYNTAX_ERR };
</ins><span class="cx">     if (!m_selectorQueryCache)
</span><span class="cx">         m_selectorQueryCache = std::make_unique&lt;SelectorQueryCache&gt;();
</span><del>-    return m_selectorQueryCache-&gt;add(selectorString, *this, ec);
</del><ins>+    return m_selectorQueryCache-&gt;add(selectorString, *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Document::clearSelectorQueryCache()
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.h (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.h        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/dom/Document.h        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -347,7 +347,7 @@
</span><span class="cx">     void removeImageElementByCaseFoldedUsemap(const AtomicStringImpl&amp;, HTMLImageElement&amp;);
</span><span class="cx">     HTMLImageElement* imageElementByCaseFoldedUsemap(const AtomicStringImpl&amp;) const;
</span><span class="cx"> 
</span><del>-    SelectorQuery* selectorQueryForString(const String&amp;, ExceptionCode&amp;);
</del><ins>+    ExceptionOr&lt;SelectorQuery&amp;&gt; selectorQueryForString(const String&amp;);
</ins><span class="cx">     void clearSelectorQueryCache();
</span><span class="cx"> 
</span><span class="cx">     // DOM methods &amp; attributes for Document
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.cpp (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.cpp        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/dom/Element.cpp        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -1832,7 +1832,7 @@
</span><span class="cx">     return tagNames.get().contains(localName) || Document::validateCustomElementName(localName) == CustomElementNameValidationStatus::Valid;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ExceptionOr&lt;Ref&lt;ShadowRoot&gt;&gt; Element::attachShadow(const ShadowRootInit&amp; init)
</del><ins>+ExceptionOr&lt;ShadowRoot&amp;&gt; Element::attachShadow(const ShadowRootInit&amp; init)
</ins><span class="cx"> {
</span><span class="cx">     if (!canAttachAuthorShadowRoot(*this))
</span><span class="cx">         return Exception { NOT_SUPPORTED_ERR };
</span><span class="lines">@@ -1841,8 +1841,9 @@
</span><span class="cx">     if (init.mode == ShadowRootMode::UserAgent)
</span><span class="cx">         return Exception { TypeError };
</span><span class="cx">     auto shadow = ShadowRoot::create(document(), init.mode);
</span><del>-    addShadowRoot(shadow.copyRef());
-    return WTFMove(shadow);
</del><ins>+    auto&amp; result = shadow.get();
+    addShadowRoot(WTFMove(shadow));
+    return result;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ShadowRoot* Element::shadowRootForBindings(JSC::ExecState&amp; state) const
</span><span class="lines">@@ -2952,22 +2953,18 @@
</span><span class="cx"> 
</span><span class="cx"> ExceptionOr&lt;bool&gt; Element::matches(const String&amp; selector)
</span><span class="cx"> {
</span><del>-    ExceptionCode ec = 0;
-    auto* query = document().selectorQueryForString(selector, ec);
-    if (ec)
-        return Exception { ec };
-    return query &amp;&amp; query-&gt;matches(*this);
</del><ins>+    auto query = document().selectorQueryForString(selector);
+    if (query.hasException())
+        return query.releaseException();
+    return query.releaseReturnValue().matches(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ExceptionOr&lt;Element*&gt; Element::closest(const String&amp; selector)
</span><span class="cx"> {
</span><del>-    ExceptionCode ec = 0;
-    auto* query = document().selectorQueryForString(selector, ec);
-    if (ec)
-        return Exception { ec };
-    if (!query)
-        return nullptr;
-    return query-&gt;closest(*this);
</del><ins>+    auto query = document().selectorQueryForString(selector);
+    if (query.hasException())
+        return query.releaseException();
+    return query.releaseReturnValue().closest(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool Element::shouldAppearIndeterminate() const
</span><span class="lines">@@ -3707,16 +3704,16 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // Step 1 of https://w3c.github.io/DOM-Parsing/#dom-element-insertadjacenthtml.
</span><del>-static ExceptionOr&lt;ContainerNode*&gt; contextNodeForInsertion(const String&amp; where, Element&amp; element)
</del><ins>+static ExceptionOr&lt;ContainerNode&amp;&gt; contextNodeForInsertion(const String&amp; where, Element&amp; element)
</ins><span class="cx"> {
</span><span class="cx">     if (equalLettersIgnoringASCIICase(where, &quot;beforebegin&quot;) || equalLettersIgnoringASCIICase(where, &quot;afterend&quot;)) {
</span><span class="cx">         auto* parent = element.parentNode();
</span><span class="cx">         if (!parent || is&lt;Document&gt;(*parent))
</span><span class="cx">             return Exception { NO_MODIFICATION_ALLOWED_ERR };
</span><del>-        return parent;
</del><ins>+        return *parent;
</ins><span class="cx">     }
</span><span class="cx">     if (equalLettersIgnoringASCIICase(where, &quot;afterbegin&quot;) || equalLettersIgnoringASCIICase(where, &quot;beforeend&quot;))
</span><del>-        return &amp;element;
</del><ins>+        return element;
</ins><span class="cx">     return Exception { SYNTAX_ERR };
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -3726,7 +3723,7 @@
</span><span class="cx">     auto contextNodeResult = contextNodeForInsertion(where, element);
</span><span class="cx">     if (contextNodeResult.hasException())
</span><span class="cx">         return contextNodeResult.releaseException();
</span><del>-    auto&amp; contextNode = *contextNodeResult.releaseReturnValue();
</del><ins>+    auto&amp; contextNode = contextNodeResult.releaseReturnValue();
</ins><span class="cx">     if (!is&lt;Element&gt;(contextNode) || (contextNode.document().isHTMLDocument() &amp;&amp; is&lt;HTMLHtmlElement&gt;(contextNode)))
</span><span class="cx">         return Ref&lt;Element&gt; { HTMLBodyElement::create(contextNode.document()) };
</span><span class="cx">     return Ref&lt;Element&gt; { downcast&lt;Element&gt;(contextNode) };
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.h (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.h        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/dom/Element.h        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -273,7 +273,7 @@
</span><span class="cx">     struct ShadowRootInit {
</span><span class="cx">         ShadowRootMode mode;
</span><span class="cx">     };
</span><del>-    ExceptionOr&lt;Ref&lt;ShadowRoot&gt;&gt; attachShadow(const ShadowRootInit&amp;);
</del><ins>+    ExceptionOr&lt;ShadowRoot&amp;&gt; attachShadow(const ShadowRootInit&amp;);
</ins><span class="cx"> 
</span><span class="cx">     ShadowRoot* userAgentShadowRoot() const;
</span><span class="cx">     WEBCORE_EXPORT ShadowRoot&amp; ensureUserAgentShadowRoot();
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.idl (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.idl        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/dom/Element.idl        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -104,7 +104,7 @@
</span><span class="cx">     [PutForwards=value] readonly attribute DOMTokenList classList;
</span><span class="cx"> 
</span><span class="cx">     [MayThrowException] boolean matches(DOMString selectors);
</span><del>-    [MayThrowException] Element closest(DOMString selectors);
</del><ins>+    [MayThrowException] Element? closest(DOMString selectors);
</ins><span class="cx">     [ImplementedAs=matches, MayThrowException] boolean webkitMatchesSelector(DOMString selectors);
</span><span class="cx"> 
</span><span class="cx">     // CSSOM View Module API
</span><span class="lines">@@ -124,7 +124,7 @@
</span><span class="cx">     [CEReactions, Reflect] attribute DOMString uiactions;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    [CEReactions, MayThrowException] Element insertAdjacentElement(DOMString where, Element element);
</del><ins>+    [CEReactions, MayThrowException] Element? insertAdjacentElement(DOMString where, Element element);
</ins><span class="cx">     [CEReactions, MayThrowException] void insertAdjacentHTML(DOMString where, DOMString html);
</span><span class="cx">     [MayThrowException] void insertAdjacentText(DOMString where, DOMString text);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomExceptionOrh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ExceptionOr.h (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ExceptionOr.h        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/dom/ExceptionOr.h        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -46,6 +46,19 @@
</span><span class="cx">     Variant&lt;Exception, ReturnType&gt; m_value;
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+template&lt;typename ReturnReferenceType&gt; class ExceptionOr&lt;ReturnReferenceType&amp;&gt; {
+public:
+    ExceptionOr(Exception&amp;&amp;);
+    ExceptionOr(ReturnReferenceType&amp;);
+
+    bool hasException() const;
+    Exception&amp;&amp; releaseException();
+    ReturnReferenceType&amp; releaseReturnValue();
+
+private:
+    ExceptionOr&lt;ReturnReferenceType*&gt; m_value;
+};
+
</ins><span class="cx"> template&lt;&gt; class ExceptionOr&lt;void&gt; {
</span><span class="cx"> public:
</span><span class="cx">     ExceptionOr(Exception&amp;&amp;);
</span><span class="lines">@@ -88,6 +101,31 @@
</span><span class="cx">     return WTF::get&lt;ReturnType&gt;(WTFMove(m_value));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+template&lt;typename ReturnReferenceType&gt; inline ExceptionOr&lt;ReturnReferenceType&amp;&gt;::ExceptionOr(Exception&amp;&amp; exception)
+    : m_value(WTFMove(exception))
+{
+}
+
+template&lt;typename ReturnReferenceType&gt; inline ExceptionOr&lt;ReturnReferenceType&amp;&gt;::ExceptionOr(ReturnReferenceType&amp; returnValue)
+    : m_value(&amp;returnValue)
+{
+}
+
+template&lt;typename ReturnReferenceType&gt; inline bool ExceptionOr&lt;ReturnReferenceType&amp;&gt;::hasException() const
+{
+    return m_value.hasException();
+}
+
+template&lt;typename ReturnReferenceType&gt; inline Exception&amp;&amp; ExceptionOr&lt;ReturnReferenceType&amp;&gt;::releaseException()
+{
+    return m_value.releaseException();
+}
+
+template&lt;typename ReturnReferenceType&gt; inline ReturnReferenceType&amp; ExceptionOr&lt;ReturnReferenceType&amp;&gt;::releaseReturnValue()
+{
+    return *m_value.releaseReturnValue();
+}
+
</ins><span class="cx"> inline ExceptionOr&lt;void&gt;::ExceptionOr(Exception&amp;&amp; exception)
</span><span class="cx">     : m_exception(WTFMove(exception))
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Node.cpp (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Node.cpp        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/dom/Node.cpp        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -466,7 +466,7 @@
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;Node&gt; Node::convertNodesOrStringsIntoNode(Vector&lt;NodeOrString&gt;&amp;&amp; nodeOrStringVector, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;RefPtr&lt;Node&gt;&gt; Node::convertNodesOrStringsIntoNode(Vector&lt;NodeOrString&gt;&amp;&amp; nodeOrStringVector)
</ins><span class="cx"> {
</span><span class="cx">     if (nodeOrStringVector.isEmpty())
</span><span class="cx">         return nullptr;
</span><span class="lines">@@ -481,28 +481,33 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (nodes.size() == 1)
</span><del>-        return WTFMove(nodes.first());
</del><ins>+        return RefPtr&lt;Node&gt; { WTFMove(nodes.first()) };
</ins><span class="cx"> 
</span><span class="cx">     auto nodeToReturn = DocumentFragment::create(document());
</span><span class="cx">     for (auto&amp; node : nodes) {
</span><del>-        if (!nodeToReturn-&gt;appendChild(node, ec))
-            return nullptr;
</del><ins>+        ExceptionCode ec = 0;
+        nodeToReturn-&gt;appendChild(node, ec);
+        if (ec)
+            return Exception { ec };
</ins><span class="cx">     }
</span><del>-    return WTFMove(nodeToReturn);
</del><ins>+    return RefPtr&lt;Node&gt; { WTFMove(nodeToReturn) };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Node::before(Vector&lt;NodeOrString&gt;&amp;&amp; nodeOrStringVector, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; Node::before(Vector&lt;NodeOrString&gt;&amp;&amp; nodeOrStringVector)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;ContainerNode&gt; parent = parentNode();
</span><span class="cx">     if (!parent)
</span><del>-        return;
</del><ins>+        return { };
</ins><span class="cx"> 
</span><span class="cx">     auto nodeSet = nodeSetPreTransformedFromNodeOrStringVector(nodeOrStringVector);
</span><span class="cx">     auto viablePreviousSibling = firstPrecedingSiblingNotInNodeSet(*this, nodeSet);
</span><span class="cx"> 
</span><del>-    auto node = convertNodesOrStringsIntoNode(WTFMove(nodeOrStringVector), ec);
-    if (ec || !node)
-        return;
</del><ins>+    auto result = convertNodesOrStringsIntoNode(WTFMove(nodeOrStringVector));
+    if (result.hasException())
+        return result.releaseException();
+    auto node = result.releaseReturnValue();
+    if (!node)
+        return { };
</ins><span class="cx"> 
</span><span class="cx">     if (viablePreviousSibling)
</span><span class="cx">         viablePreviousSibling = viablePreviousSibling-&gt;nextSibling();
</span><span class="lines">@@ -509,45 +514,65 @@
</span><span class="cx">     else
</span><span class="cx">         viablePreviousSibling = parent-&gt;firstChild();
</span><span class="cx"> 
</span><ins>+    ExceptionCode ec = 0;
</ins><span class="cx">     parent-&gt;insertBefore(*node, viablePreviousSibling.get(), ec);
</span><ins>+    if (ec)
+        return Exception { ec };
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Node::after(Vector&lt;NodeOrString&gt;&amp;&amp; nodeOrStringVector, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; Node::after(Vector&lt;NodeOrString&gt;&amp;&amp; nodeOrStringVector)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;ContainerNode&gt; parent = parentNode();
</span><span class="cx">     if (!parent)
</span><del>-        return;
</del><ins>+        return { };
</ins><span class="cx"> 
</span><span class="cx">     auto nodeSet = nodeSetPreTransformedFromNodeOrStringVector(nodeOrStringVector);
</span><span class="cx">     auto viableNextSibling = firstFollowingSiblingNotInNodeSet(*this, nodeSet);
</span><span class="cx"> 
</span><del>-    auto node = convertNodesOrStringsIntoNode(WTFMove(nodeOrStringVector), ec);
-    if (ec || !node)
-        return;
</del><ins>+    auto result = convertNodesOrStringsIntoNode(WTFMove(nodeOrStringVector));
+    if (result.hasException())
+        return result.releaseException();
+    auto node = result.releaseReturnValue();
+    if (!node)
+        return { };
</ins><span class="cx"> 
</span><ins>+    ExceptionCode ec = 0;
</ins><span class="cx">     parent-&gt;insertBefore(*node, viableNextSibling.get(), ec);
</span><ins>+    if (ec)
+        return Exception { ec };
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Node::replaceWith(Vector&lt;NodeOrString&gt;&amp;&amp; nodeOrStringVector, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; Node::replaceWith(Vector&lt;NodeOrString&gt;&amp;&amp; nodeOrStringVector)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;ContainerNode&gt; parent = parentNode();
</span><span class="cx">     if (!parent)
</span><del>-        return;
</del><ins>+        return { };
</ins><span class="cx"> 
</span><span class="cx">     auto nodeSet = nodeSetPreTransformedFromNodeOrStringVector(nodeOrStringVector);
</span><span class="cx">     auto viableNextSibling = firstFollowingSiblingNotInNodeSet(*this, nodeSet);
</span><span class="cx"> 
</span><del>-    auto node = convertNodesOrStringsIntoNode(WTFMove(nodeOrStringVector), ec);
-    if (ec)
-        return;
</del><ins>+    auto result = convertNodesOrStringsIntoNode(WTFMove(nodeOrStringVector));
+    if (result.hasException())
+        return result.releaseException();
+    auto node = result.releaseReturnValue();
</ins><span class="cx"> 
</span><span class="cx">     if (parentNode() == parent) {
</span><del>-        if (node)
</del><ins>+        if (node) {
+            ExceptionCode ec = 0;
</ins><span class="cx">             parent-&gt;replaceChild(*node, *this, ec);
</span><del>-        else
</del><ins>+            if (ec)
+                return Exception { ec };
+        } else
</ins><span class="cx">             parent-&gt;removeChild(*this);
</span><del>-    } else if (node)
</del><ins>+    } else if (node) {
+        ExceptionCode ec = 0;
</ins><span class="cx">         parent-&gt;insertBefore(*node, viableNextSibling.get(), ec);
</span><ins>+        if (ec)
+            return Exception { ec };
+    }
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ExceptionOr&lt;void&gt; Node::remove()
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Node.h (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Node.h        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/dom/Node.h        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -193,9 +193,9 @@
</span><span class="cx">     WEBCORE_EXPORT Element* nextElementSibling() const;
</span><span class="cx"> 
</span><span class="cx">     // From the ChildNode - https://dom.spec.whatwg.org/#childnode
</span><del>-    void before(Vector&lt;NodeOrString&gt;&amp;&amp;, ExceptionCode&amp;);
-    void after(Vector&lt;NodeOrString&gt;&amp;&amp;, ExceptionCode&amp;);
-    void replaceWith(Vector&lt;NodeOrString&gt;&amp;&amp;, ExceptionCode&amp;);
</del><ins>+    ExceptionOr&lt;void&gt; before(Vector&lt;NodeOrString&gt;&amp;&amp;);
+    ExceptionOr&lt;void&gt; after(Vector&lt;NodeOrString&gt;&amp;&amp;);
+    ExceptionOr&lt;void&gt; replaceWith(Vector&lt;NodeOrString&gt;&amp;&amp;);
</ins><span class="cx">     WEBCORE_EXPORT ExceptionOr&lt;void&gt; remove();
</span><span class="cx"> 
</span><span class="cx">     // Other methods (not part of DOM)
</span><span class="lines">@@ -652,7 +652,7 @@
</span><span class="cx">     void invalidateStyle(Style::Validity, Style::InvalidationMode = Style::InvalidationMode::Normal);
</span><span class="cx">     void updateAncestorsForStyleRecalc();
</span><span class="cx"> 
</span><del>-    RefPtr&lt;Node&gt; convertNodesOrStringsIntoNode(Vector&lt;NodeOrString&gt;&amp;&amp;, ExceptionCode&amp;);
</del><ins>+    ExceptionOr&lt;RefPtr&lt;Node&gt;&gt; convertNodesOrStringsIntoNode(Vector&lt;NodeOrString&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     virtual PseudoId customPseudoId() const
</span></span></pre></div>
<a id="trunkSourceWebCoredomParentNodeidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ParentNode.idl (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ParentNode.idl        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/dom/ParentNode.idl        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -33,11 +33,11 @@
</span><span class="cx">     readonly attribute Element lastElementChild;
</span><span class="cx">     readonly attribute unsigned long childElementCount;
</span><span class="cx"> 
</span><del>-    [CEReactions, Unscopable, MayThrowLegacyException] void prepend((Node or DOMString)... nodes);
-    [CEReactions, Unscopable, MayThrowLegacyException] void append((Node or DOMString)... nodes);
</del><ins>+    [CEReactions, Unscopable, MayThrowException] void prepend((Node or DOMString)... nodes);
+    [CEReactions, Unscopable, MayThrowException] void append((Node or DOMString)... nodes);
</ins><span class="cx"> 
</span><span class="cx">     // [Unscopable] Element? query(DOMString relativeSelectors);
</span><span class="cx">     // [NewObject, Unscopable] Elements queryAll(DOMString relativeSelectors);
</span><del>-    [MayThrowLegacyException] Element querySelector(DOMString selectors);
-    [MayThrowLegacyException, NewObject] NodeList querySelectorAll(DOMString selectors);
</del><ins>+    [MayThrowException] Element querySelector(DOMString selectors);
+    [MayThrowException, NewObject] NodeList querySelectorAll(DOMString selectors);
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoredomSelectorQuerycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/SelectorQuery.cpp (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/SelectorQuery.cpp        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/dom/SelectorQuery.cpp        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -169,7 +169,7 @@
</span><span class="cx">     ALWAYS_INLINE static void appendOutputForElement(OutputType&amp; output, Element* element) { ASSERT(element); output.append(*element); }
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-RefPtr&lt;NodeList&gt; SelectorDataList::queryAll(ContainerNode&amp; rootNode) const
</del><ins>+Ref&lt;NodeList&gt; SelectorDataList::queryAll(ContainerNode&amp; rootNode) const
</ins><span class="cx"> {
</span><span class="cx">     Vector&lt;Ref&lt;Element&gt;&gt; result;
</span><span class="cx">     execute&lt;AllElementExtractorSelectorQueryTrait&gt;(rootNode, result);
</span><span class="lines">@@ -616,31 +616,27 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-SelectorQuery* SelectorQueryCache::add(const String&amp; selectors, Document&amp; document, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;SelectorQuery&amp;&gt; SelectorQueryCache::add(const String&amp; selectors, Document&amp; document)
</ins><span class="cx"> {
</span><span class="cx">     auto it = m_entries.find(selectors);
</span><span class="cx">     if (it != m_entries.end())
</span><del>-        return it-&gt;value.get();
</del><ins>+        return *it-&gt;value;
</ins><span class="cx"> 
</span><span class="cx">     CSSParser parser(document);
</span><span class="cx">     CSSSelectorList selectorList;
</span><span class="cx">     parser.parseSelector(selectors, selectorList);
</span><span class="cx"> 
</span><del>-    if (!selectorList.first() || selectorList.hasInvalidSelector()) {
-        ec = SYNTAX_ERR;
-        return nullptr;
-    }
</del><ins>+    if (!selectorList.first() || selectorList.hasInvalidSelector())
+        return Exception { SYNTAX_ERR };
</ins><span class="cx"> 
</span><del>-    if (selectorList.selectorsNeedNamespaceResolution()) {
-        ec = SYNTAX_ERR;
-        return nullptr;
-    }
</del><ins>+    if (selectorList.selectorsNeedNamespaceResolution())
+        return Exception { SYNTAX_ERR };
</ins><span class="cx"> 
</span><span class="cx">     const int maximumSelectorQueryCacheSize = 256;
</span><span class="cx">     if (m_entries.size() == maximumSelectorQueryCacheSize)
</span><span class="cx">         m_entries.remove(m_entries.begin());
</span><span class="cx"> 
</span><del>-    return m_entries.add(selectors, std::make_unique&lt;SelectorQuery&gt;(WTFMove(selectorList))).iterator-&gt;value.get();
</del><ins>+    return *m_entries.add(selectors, std::make_unique&lt;SelectorQuery&gt;(WTFMove(selectorList))).iterator-&gt;value;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoredomSelectorQueryh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/SelectorQuery.h (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/SelectorQuery.h        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/dom/SelectorQuery.h        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -23,10 +23,10 @@
</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 SelectorQuery_h
-#define SelectorQuery_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #include &quot;CSSSelectorList.h&quot;
</span><ins>+#include &quot;ExceptionOr.h&quot;
</ins><span class="cx"> #include &quot;NodeList.h&quot;
</span><span class="cx"> #include &quot;SelectorCompiler.h&quot;
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="lines">@@ -36,14 +36,10 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-typedef int ExceptionCode;
-    
</del><span class="cx"> class CSSSelector;
</span><span class="cx"> class ContainerNode;
</span><span class="cx"> class Document;
</span><span class="cx"> class Element;
</span><del>-class Node;
-class NodeList;
</del><span class="cx"> 
</span><span class="cx"> class SelectorDataList {
</span><span class="cx"> public:
</span><span class="lines">@@ -50,7 +46,7 @@
</span><span class="cx">     explicit SelectorDataList(const CSSSelectorList&amp;);
</span><span class="cx">     bool matches(Element&amp;) const;
</span><span class="cx">     Element* closest(Element&amp;) const;
</span><del>-    RefPtr&lt;NodeList&gt; queryAll(ContainerNode&amp; rootNode) const;
</del><ins>+    Ref&lt;NodeList&gt; queryAll(ContainerNode&amp; rootNode) const;
</ins><span class="cx">     Element* queryFirst(ContainerNode&amp; rootNode) const;
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="lines">@@ -120,7 +116,7 @@
</span><span class="cx">     explicit SelectorQuery(CSSSelectorList&amp;&amp;);
</span><span class="cx">     bool matches(Element&amp;) const;
</span><span class="cx">     Element* closest(Element&amp;) const;
</span><del>-    RefPtr&lt;NodeList&gt; queryAll(ContainerNode&amp; rootNode) const;
</del><ins>+    Ref&lt;NodeList&gt; queryAll(ContainerNode&amp; rootNode) const;
</ins><span class="cx">     Element* queryFirst(ContainerNode&amp; rootNode) const;
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="lines">@@ -130,10 +126,8 @@
</span><span class="cx"> 
</span><span class="cx"> class SelectorQueryCache {
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><del>-
</del><span class="cx"> public:
</span><del>-    SelectorQuery* add(const String&amp;, Document&amp;, ExceptionCode&amp;);
-
</del><ins>+    ExceptionOr&lt;SelectorQuery&amp;&gt; add(const String&amp;, Document&amp;);
</ins><span class="cx"> private:
</span><span class="cx">     HashMap&lt;String, std::unique_ptr&lt;SelectorQuery&gt;&gt; m_entries;
</span><span class="cx"> };
</span><span class="lines">@@ -148,7 +142,7 @@
</span><span class="cx">     return m_selectors.closest(element);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline RefPtr&lt;NodeList&gt; SelectorQuery::queryAll(ContainerNode&amp; rootNode) const
</del><ins>+inline Ref&lt;NodeList&gt; SelectorQuery::queryAll(ContainerNode&amp; rootNode) const
</ins><span class="cx"> {
</span><span class="cx">     return m_selectors.queryAll(rootNode);
</span><span class="cx"> }
</span><span class="lines">@@ -159,5 +153,3 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span><del>-
-#endif
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFrameOwnerElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFrameOwnerElement.cpp (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFrameOwnerElement.cpp        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/html/HTMLFrameOwnerElement.cpp        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -112,11 +112,11 @@
</span><span class="cx">     return m_contentFrame &amp;&amp; HTMLElement::isKeyboardFocusable(event);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ExceptionOr&lt;Document*&gt; HTMLFrameOwnerElement::getSVGDocument() const
</del><ins>+ExceptionOr&lt;Document&amp;&gt; HTMLFrameOwnerElement::getSVGDocument() const
</ins><span class="cx"> {
</span><span class="cx">     auto* document = contentDocument();
</span><span class="cx">     if (is&lt;SVGDocument&gt;(document))
</span><del>-        return document;
</del><ins>+        return *document;
</ins><span class="cx">     // Spec: http://www.w3.org/TR/SVG/struct.html#InterfaceGetSVGDocument
</span><span class="cx">     return Exception { NOT_SUPPORTED_ERR };
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFrameOwnerElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFrameOwnerElement.h (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFrameOwnerElement.h        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/html/HTMLFrameOwnerElement.h        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -49,7 +49,7 @@
</span><span class="cx">     // RenderElement when using fallback content.
</span><span class="cx">     RenderWidget* renderWidget() const;
</span><span class="cx"> 
</span><del>-    ExceptionOr&lt;Document*&gt; getSVGDocument() const;
</del><ins>+    ExceptionOr&lt;Document&amp;&gt; getSVGDocument() const;
</ins><span class="cx"> 
</span><span class="cx">     virtual ScrollbarMode scrollingMode() const { return ScrollbarAuto; }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.cpp        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -3594,7 +3594,7 @@
</span><span class="cx">         removeVideoTrack(*m_videoTracks-&gt;lastItem());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ExceptionOr&lt;Ref&lt;TextTrack&gt;&gt; HTMLMediaElement::addTextTrack(const String&amp; kind, const String&amp; label, const String&amp; language)
</del><ins>+ExceptionOr&lt;TextTrack&amp;&gt; HTMLMediaElement::addTextTrack(const String&amp; kind, const String&amp; label, const String&amp; language)
</ins><span class="cx"> {
</span><span class="cx">     // 4.8.10.12.4 Text track API
</span><span class="cx">     // The addTextTrack(kind, label, language) method of media elements, when invoked, must run the following steps:
</span><span class="lines">@@ -3609,21 +3609,22 @@
</span><span class="cx"> 
</span><span class="cx">     // 5. Create a new text track corresponding to the new object, and set its text track kind to kind, its text 
</span><span class="cx">     // track label to label, its text track language to language...
</span><del>-    auto textTrack = TextTrack::create(ActiveDOMObject::scriptExecutionContext(), this, kind, emptyString(), label, language);
</del><ins>+    auto track = TextTrack::create(ActiveDOMObject::scriptExecutionContext(), this, kind, emptyString(), label, language);
+    auto&amp; trackReference = track.get();
</ins><span class="cx"> 
</span><span class="cx">     // Note, due to side effects when changing track parameters, we have to
</span><span class="cx">     // first append the track to the text track list.
</span><span class="cx"> 
</span><span class="cx">     // 6. Add the new text track to the media element's list of text tracks.
</span><del>-    addTextTrack(textTrack.copyRef());
</del><ins>+    addTextTrack(WTFMove(track));
</ins><span class="cx"> 
</span><span class="cx">     // ... its text track readiness state to the text track loaded state ...
</span><del>-    textTrack-&gt;setReadinessState(TextTrack::Loaded);
</del><ins>+    trackReference.setReadinessState(TextTrack::Loaded);
</ins><span class="cx"> 
</span><span class="cx">     // ... its text track mode to the text track hidden mode, and its text track list of cues to an empty list ...
</span><del>-    textTrack-&gt;setMode(TextTrack::Mode::Hidden);
</del><ins>+    trackReference.setMode(TextTrack::Mode::Hidden);
</ins><span class="cx"> 
</span><del>-    return WTFMove(textTrack);
</del><ins>+    return trackReference;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> AudioTrackList&amp; HTMLMediaElement::audioTracks()
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.h (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.h        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/html/HTMLMediaElement.h        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -277,7 +277,7 @@
</span><span class="cx">     double percentLoaded() const;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(VIDEO_TRACK)
</span><del>-    ExceptionOr&lt;Ref&lt;TextTrack&gt;&gt; addTextTrack(const String&amp; kind, const String&amp; label, const String&amp; language);
</del><ins>+    ExceptionOr&lt;TextTrack&amp;&gt; addTextTrack(const String&amp; kind, const String&amp; label, const String&amp; language);
</ins><span class="cx"> 
</span><span class="cx">     AudioTrackList&amp; audioTracks();
</span><span class="cx">     TextTrackList&amp; textTracks();
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLPlugInImageElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -429,8 +429,13 @@
</span><span class="cx">     ShadowRoot* shadow = userAgentShadowRoot();
</span><span class="cx">     if (!shadow)
</span><span class="cx">         return false;
</span><del>-    RefPtr&lt;Element&gt; snapshotLabel = shadow-&gt;querySelector(selector.get(), ASSERT_NO_EXCEPTION);
-    return node &amp;&amp; snapshotLabel &amp;&amp; (node == snapshotLabel.get() || node-&gt;isDescendantOf(snapshotLabel.get()));
</del><ins>+    if (!node)
+        return false;
+    auto queryResult = shadow-&gt;querySelector(selector.get());
+    if (queryResult.hasException())
+        return false;
+    auto* snapshotLabel = queryResult.releaseReturnValue();
+    return snapshotLabel &amp;&amp; snapshotLabel-&gt;contains(node);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLPlugInImageElement::removeSnapshotTimerFired()
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorDOMAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -533,15 +533,14 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
-    RefPtr&lt;Element&gt; element = downcast&lt;ContainerNode&gt;(*node).querySelector(selectors, ec);
-    if (ec) {
</del><ins>+    auto queryResult = downcast&lt;ContainerNode&gt;(*node).querySelector(selectors);
+    if (queryResult.hasException()) {
</ins><span class="cx">         errorString = ASCIILiteral(&quot;DOM Error while querying&quot;);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (element)
-        *elementId = pushNodePathToFrontend(element.get());
</del><ins>+    if (auto* element = queryResult.releaseReturnValue())
+        *elementId = pushNodePathToFrontend(element);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorDOMAgent::querySelectorAll(ErrorString&amp; errorString, int nodeId, const String&amp; selectors, RefPtr&lt;Inspector::Protocol::Array&lt;int&gt;&gt;&amp; result)
</span><span class="lines">@@ -554,15 +553,14 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
-    RefPtr&lt;NodeList&gt; nodes = downcast&lt;ContainerNode&gt;(*node).querySelectorAll(selectors, ec);
-    if (ec) {
</del><ins>+    auto queryResult = downcast&lt;ContainerNode&gt;(*node).querySelectorAll(selectors);
+    if (queryResult.hasException()) {
</ins><span class="cx">         errorString = ASCIILiteral(&quot;DOM Error while querying&quot;);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    auto nodes = queryResult.releaseReturnValue();
</ins><span class="cx">     result = Inspector::Protocol::Array&lt;int&gt;::create();
</span><del>-
</del><span class="cx">     for (unsigned i = 0; i &lt; nodes-&gt;length(); ++i)
</span><span class="cx">         result-&gt;addItem(pushNodePathToFrontend(nodes-&gt;item(i)));
</span><span class="cx"> }
</span><span class="lines">@@ -905,7 +903,7 @@
</span><span class="cx">             }
</span><span class="cx">             finder.performSearch(node);
</span><span class="cx">         }
</span><del>-    } else if (m_document) {
</del><ins>+    } else {
</ins><span class="cx">         // There's no need to iterate the frames tree because
</span><span class="cx">         // the search helper will go inside the frame owner elements.
</span><span class="cx">         finder.performSearch(m_document.get());
</span><span class="lines">@@ -1115,19 +1113,18 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
-    RefPtr&lt;NodeList&gt; nodes = document-&gt;querySelectorAll(selectorString, ec);
</del><ins>+    auto queryResult = document-&gt;querySelectorAll(selectorString);
</ins><span class="cx">     // FIXME: &lt;https://webkit.org/b/146161&gt; Web Inspector: DOM.highlightSelector should work for &quot;a:visited&quot;
</span><del>-    if (ec) {
</del><ins>+    if (queryResult.hasException()) {
</ins><span class="cx">         errorString = ASCIILiteral(&quot;DOM Error while querying&quot;);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    std::unique_ptr&lt;HighlightConfig&gt; highlightConfig = highlightConfigFromInspectorObject(errorString, &amp;highlightInspectorObject);
</del><ins>+    auto highlightConfig = highlightConfigFromInspectorObject(errorString, &amp;highlightInspectorObject);
</ins><span class="cx">     if (!highlightConfig)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_overlay-&gt;highlightNodeList(WTFMove(nodes), *highlightConfig);
</del><ins>+    m_overlay-&gt;highlightNodeList(queryResult.releaseReturnValue(), *highlightConfig);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorDOMAgent::highlightNode(ErrorString&amp; errorString, const InspectorObject&amp; highlightInspectorObject, const int* nodeId, const String* objectId)
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorNodeFindercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorNodeFinder.cpp (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorNodeFinder.cpp        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/inspector/InspectorNodeFinder.cpp        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -65,38 +65,33 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorNodeFinder::performSearch(Node* parentNode)
</span><span class="cx"> {
</span><del>-    searchUsingXPath(parentNode);
-    searchUsingCSSSelectors(parentNode);
</del><ins>+    if (!parentNode)
+        return;
</ins><span class="cx"> 
</span><ins>+    searchUsingXPath(*parentNode);
+    searchUsingCSSSelectors(*parentNode);
+
</ins><span class="cx">     // Keep the DOM tree traversal last. This way iframe content will come after their parents.
</span><del>-    searchUsingDOMTreeTraversal(parentNode);
</del><ins>+    searchUsingDOMTreeTraversal(*parentNode);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorNodeFinder::searchUsingDOMTreeTraversal(Node* parentNode)
</del><ins>+void InspectorNodeFinder::searchUsingDOMTreeTraversal(Node&amp; parentNode)
</ins><span class="cx"> {
</span><span class="cx">     // Manual plain text search.
</span><del>-    for (auto* node = parentNode; node; node = NodeTraversal::next(*node, parentNode)) {
</del><ins>+    for (auto* node = &amp;parentNode; node; node = NodeTraversal::next(*node, &amp;parentNode)) {
</ins><span class="cx">         switch (node-&gt;nodeType()) {
</span><span class="cx">         case Node::TEXT_NODE:
</span><span class="cx">         case Node::COMMENT_NODE:
</span><del>-        case Node::CDATA_SECTION_NODE: {
-            if (node-&gt;nodeValue().findIgnoringCase(m_whitespaceTrimmedQuery) != notFound)
</del><ins>+        case Node::CDATA_SECTION_NODE:
+            if (node-&gt;nodeValue().containsIgnoringASCIICase(m_whitespaceTrimmedQuery))
</ins><span class="cx">                 m_results.add(node);
</span><span class="cx">             break;
</span><del>-        }
-        case Node::ELEMENT_NODE: {
</del><ins>+        case Node::ELEMENT_NODE:
</ins><span class="cx">             if (matchesElement(downcast&lt;Element&gt;(*node)))
</span><span class="cx">                 m_results.add(node);
</span><del>-
-            // Search inside frame elements.
-            if (is&lt;HTMLFrameOwnerElement&gt;(*node)) {
-                HTMLFrameOwnerElement&amp; frameOwner = downcast&lt;HTMLFrameOwnerElement&gt;(*node);
-                if (Document* document = frameOwner.contentDocument())
-                    performSearch(document);
-            }
-
</del><ins>+            if (is&lt;HTMLFrameOwnerElement&gt;(downcast&lt;Element&gt;(*node)))
+                performSearch(downcast&lt;HTMLFrameOwnerElement&gt;(*node).contentDocument());
</ins><span class="cx">             break;
</span><del>-        }
</del><span class="cx">         default:
</span><span class="cx">             break;
</span><span class="cx">         }
</span><span class="lines">@@ -105,15 +100,15 @@
</span><span class="cx"> 
</span><span class="cx"> bool InspectorNodeFinder::matchesAttribute(const Attribute&amp; attribute)
</span><span class="cx"> {
</span><del>-    if (attribute.localName().string().findIgnoringCase(m_whitespaceTrimmedQuery) != notFound)
</del><ins>+    if (attribute.localName().string().containsIgnoringASCIICase(m_whitespaceTrimmedQuery))
</ins><span class="cx">         return true;
</span><del>-    return m_exactAttributeMatch ? attribute.value() == m_attributeQuery : attribute.value().string().findIgnoringCase(m_attributeQuery) != notFound;
</del><ins>+    return m_exactAttributeMatch ? attribute.value() == m_attributeQuery : attribute.value().string().containsIgnoringASCIICase(m_attributeQuery);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool InspectorNodeFinder::matchesElement(const Element&amp; element)
</span><span class="cx"> {
</span><span class="cx">     String nodeName = element.nodeName();
</span><del>-    if ((!m_startTagFound &amp;&amp; !m_endTagFound &amp;&amp; (nodeName.findIgnoringCase(m_tagNameQuery) != notFound))
</del><ins>+    if ((!m_startTagFound &amp;&amp; !m_endTagFound &amp;&amp; nodeName.containsIgnoringASCIICase(m_tagNameQuery))
</ins><span class="cx">         || (m_startTagFound &amp;&amp; m_endTagFound &amp;&amp; equalIgnoringASCIICase(nodeName, m_tagNameQuery))
</span><span class="cx">         || (m_startTagFound &amp;&amp; !m_endTagFound &amp;&amp; nodeName.startsWith(m_tagNameQuery, false))
</span><span class="cx">         || (!m_startTagFound &amp;&amp; m_endTagFound &amp;&amp; nodeName.endsWith(m_tagNameQuery, false)))
</span><span class="lines">@@ -130,9 +125,9 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorNodeFinder::searchUsingXPath(Node* parentNode)
</del><ins>+void InspectorNodeFinder::searchUsingXPath(Node&amp; parentNode)
</ins><span class="cx"> {
</span><del>-    auto evaluateResult = parentNode-&gt;document().evaluate(m_whitespaceTrimmedQuery, parentNode, nullptr, XPathResult::ORDERED_NODE_SNAPSHOT_TYPE, nullptr);
</del><ins>+    auto evaluateResult = parentNode.document().evaluate(m_whitespaceTrimmedQuery, &amp;parentNode, nullptr, XPathResult::ORDERED_NODE_SNAPSHOT_TYPE, nullptr);
</ins><span class="cx">     if (evaluateResult.hasException())
</span><span class="cx">         return;
</span><span class="cx">     auto result = evaluateResult.releaseReturnValue();
</span><span class="lines">@@ -152,22 +147,21 @@
</span><span class="cx">             node = downcast&lt;Attr&gt;(*node).ownerElement();
</span><span class="cx"> 
</span><span class="cx">         // XPath can get out of the context node that we pass as the starting point to evaluate, so we need to filter for just the nodes we care about.
</span><del>-        if (node == parentNode || node-&gt;isDescendantOf(parentNode))
</del><ins>+        if (parentNode.contains(node))
</ins><span class="cx">             m_results.add(node);
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorNodeFinder::searchUsingCSSSelectors(Node* parentNode)
</del><ins>+void InspectorNodeFinder::searchUsingCSSSelectors(Node&amp; parentNode)
</ins><span class="cx"> {
</span><del>-    ASSERT(parentNode);
-    if (!is&lt;ContainerNode&gt;(*parentNode))
</del><ins>+    if (!is&lt;ContainerNode&gt;(parentNode))
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
-    RefPtr&lt;NodeList&gt; nodeList = downcast&lt;ContainerNode&gt;(*parentNode).querySelectorAll(m_whitespaceTrimmedQuery, ec);
-    if (ec || !nodeList)
</del><ins>+    auto queryResult = downcast&lt;ContainerNode&gt;(parentNode).querySelectorAll(m_whitespaceTrimmedQuery);
+    if (queryResult.hasException())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><ins>+    auto nodeList = queryResult.releaseReturnValue();
</ins><span class="cx">     unsigned size = nodeList-&gt;length();
</span><span class="cx">     for (unsigned i = 0; i &lt; size; ++i)
</span><span class="cx">         m_results.add(nodeList-&gt;item(i));
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorNodeFinderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorNodeFinder.h (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorNodeFinder.h        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/inspector/InspectorNodeFinder.h        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -49,9 +49,9 @@
</span><span class="cx">     bool matchesAttribute(const Attribute&amp;);
</span><span class="cx">     bool matchesElement(const Element&amp;);
</span><span class="cx"> 
</span><del>-    void searchUsingDOMTreeTraversal(Node*);
-    void searchUsingXPath(Node*);
-    void searchUsingCSSSelectors(Node*);
</del><ins>+    void searchUsingDOMTreeTraversal(Node&amp;);
+    void searchUsingXPath(Node&amp;);
+    void searchUsingCSSSelectors(Node&amp;);
</ins><span class="cx"> 
</span><span class="cx">     bool m_startTagFound;
</span><span class="cx">     bool m_endTagFound;
</span></span></pre></div>
<a id="trunkSourceWebCorepageCryptocpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Crypto.cpp (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Crypto.cpp        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/page/Crypto.cpp        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -69,7 +69,7 @@
</span><span class="cx">     return m_subtle;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ExceptionOr&lt;WebKitSubtleCrypto*&gt; Crypto::webkitSubtle()
</del><ins>+ExceptionOr&lt;WebKitSubtleCrypto&amp;&gt; Crypto::webkitSubtle()
</ins><span class="cx"> {
</span><span class="cx">     if (!isMainThread())
</span><span class="cx">         return Exception { NOT_SUPPORTED_ERR };
</span><span class="lines">@@ -77,7 +77,7 @@
</span><span class="cx">     if (!m_webkitSubtle)
</span><span class="cx">         m_webkitSubtle = WebKitSubtleCrypto::create(*downcast&lt;Document&gt;(scriptExecutionContext()));
</span><span class="cx"> 
</span><del>-    return m_webkitSubtle.get();
</del><ins>+    return *m_webkitSubtle;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCorepageCryptoh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Crypto.h (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Crypto.h        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/page/Crypto.h        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -52,7 +52,7 @@
</span><span class="cx">     SubtleCrypto&amp; subtle();
</span><span class="cx"> 
</span><span class="cx">     // Will be deprecated.
</span><del>-    ExceptionOr&lt;WebKitSubtleCrypto*&gt; webkitSubtle();
</del><ins>+    ExceptionOr&lt;WebKitSubtleCrypto&amp;&gt; webkitSubtle();
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> private:
</span></span></pre></div>
<a id="trunkSourceWebCoretestingInternalsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/Internals.h (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/Internals.h        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebCore/testing/Internals.h        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -109,9 +109,7 @@
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;CSSComputedStyleDeclaration&gt; computedStyleIncludingVisitedInfo(Element&amp;) const;
</span><span class="cx"> 
</span><del>-    ExceptionOr&lt;Node*&gt; ensureShadowRoot(Element&amp; host);
</del><span class="cx">     Node* ensureUserAgentShadowRoot(Element&amp; host);
</span><del>-    ExceptionOr&lt;Node*&gt; createShadowRoot(Element&amp; host);
</del><span class="cx">     Node* shadowRoot(Element&amp; host);
</span><span class="cx">     ExceptionOr&lt;String&gt; shadowRootType(const Node&amp;) const;
</span><span class="cx">     String shadowPseudoId(Element&amp;);
</span></span></pre></div>
<a id="trunkSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/ChangeLog (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebKit/mac/ChangeLog        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -1,5 +1,27 @@
</span><span class="cx"> 2016-10-31  Darin Adler  &lt;darin@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Move ChildNode and ParentNode from ExceptionCode to Exception, add support for ExceptionOr&lt;T&amp;&gt;
+        https://bugs.webkit.org/show_bug.cgi?id=164214
+
+        Reviewed by Alex Christensen.
+
+        * DOM/DOMCSSPrimitiveValue.mm:
+        (-[DOMCSSPrimitiveValue getCounterValue]): Updated since return value
+        is a reference now.
+        (-[DOMCSSPrimitiveValue getRectValue]): Ditto.
+
+        * DOM/DOMDocument.mm:
+        (-[DOMDocument querySelector:]): Updated exception handling.
+        (-[DOMDocument querySelectorAll:]): Ditto.
+        * DOM/DOMDocumentFragment.mm:
+        (-[DOMDocumentFragment querySelector:]): Ditto.
+        (-[DOMDocumentFragment querySelectorAll:]): Ditto.
+        * DOM/DOMElement.mm:
+        (-[DOMElement querySelector:]): Ditto.
+        (-[DOMElement querySelectorAll:]): Ditto.
+
+2016-10-31  Darin Adler  &lt;darin@apple.com&gt;
+
</ins><span class="cx">         Convert Document from ExceptionCode to Exception
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=164212
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMCSSPrimitiveValuemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMCSSPrimitiveValue.mm (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMCSSPrimitiveValue.mm        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebKit/mac/DOM/DOMCSSPrimitiveValue.mm        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -78,13 +78,13 @@
</span><span class="cx"> - (DOMCounter *)getCounterValue
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    return kit(raiseOnDOMError(IMPL-&gt;getCounterValue()));
</del><ins>+    return kit(&amp;raiseOnDOMError(IMPL-&gt;getCounterValue()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMRect *)getRectValue
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    return kit(raiseOnDOMError(IMPL-&gt;getRectValue()));
</del><ins>+    return kit(&amp;raiseOnDOMError(IMPL-&gt;getRectValue()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMRGBColor *)getRGBColorValue
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMDocumentmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMDocument.mm (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMDocument.mm        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebKit/mac/DOM/DOMDocument.mm        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -744,19 +744,13 @@
</span><span class="cx"> - (DOMElement *)querySelector:(NSString *)selectors
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    DOMElement *result = kit(WTF::getPtr(IMPL-&gt;querySelector(selectors, ec)));
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return kit(raiseOnDOMError(IMPL-&gt;querySelector(selectors)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMNodeList *)querySelectorAll:(NSString *)selectors
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    DOMNodeList *result = kit(WTF::getPtr(IMPL-&gt;querySelectorAll(selectors, ec)));
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return kit(raiseOnDOMError(IMPL-&gt;querySelectorAll(selectors)).ptr());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMDocumentFragmentmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMDocumentFragment.mm (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMDocumentFragment.mm        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebKit/mac/DOM/DOMDocumentFragment.mm        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -78,19 +78,13 @@
</span><span class="cx"> - (DOMElement *)querySelector:(NSString *)selectors
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    DOMElement *result = kit(WTF::getPtr(IMPL-&gt;querySelector(selectors, ec)));
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return kit(raiseOnDOMError(IMPL-&gt;querySelector(selectors)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMNodeList *)querySelectorAll:(NSString *)selectors
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    DOMNodeList *result = kit(WTF::getPtr(IMPL-&gt;querySelectorAll(selectors, ec)));
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return kit(raiseOnDOMError(IMPL-&gt;querySelectorAll(selectors)).ptr());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMElementmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMElement.mm (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMElement.mm        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebKit/mac/DOM/DOMElement.mm        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -472,19 +472,13 @@
</span><span class="cx"> - (DOMElement *)querySelector:(NSString *)selectors
</span><span class="cx"> {
</span><span class="cx">     JSMainThreadNullState state;
</span><del>-    ExceptionCode ec = 0;
-    DOMElement *result = kit(unwrap(*self).querySelector(selectors, ec));
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return kit(raiseOnDOMError(unwrap(*self).querySelector(selectors)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMNodeList *)querySelectorAll:(NSString *)selectors
</span><span class="cx"> {
</span><span class="cx">     JSMainThreadNullState state;
</span><del>-    ExceptionCode ec = 0;
-    DOMNodeList *result = kit(unwrap(*self).querySelectorAll(selectors, ec).get());
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return kit(raiseOnDOMError(unwrap(*self).querySelectorAll(selectors)).ptr());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebKit2/ChangeLog        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -1,5 +1,22 @@
</span><span class="cx"> 2016-10-31  Darin Adler  &lt;darin@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Move ChildNode and ParentNode from ExceptionCode to Exception, add support for ExceptionOr&lt;T&amp;&gt;
+        https://bugs.webkit.org/show_bug.cgi?id=164214
+
+        Reviewed by Alex Christensen.
+
+        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocument.cpp:
+        (webkit_dom_document_query_selector): Updated exception handling.
+        (webkit_dom_document_query_selector_all): Ditto.
+        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentFragment.cpp:
+        (webkit_dom_document_fragment_query_selector): Ditto.
+        (webkit_dom_document_fragment_query_selector_all): Ditto.
+        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp:
+        (webkit_dom_element_query_selector): Ditto.
+        (webkit_dom_element_query_selector_all): Ditto.
+
+2016-10-31  Darin Adler  &lt;darin@apple.com&gt;
+
</ins><span class="cx">         Convert Document from ExceptionCode to Exception
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=164212
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocument.cpp (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocument.cpp        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocument.cpp        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -1386,13 +1386,13 @@
</span><span class="cx">     g_return_val_if_fail(!error || !*error, 0);
</span><span class="cx">     WebCore::Document* item = WebKit::core(self);
</span><span class="cx">     WTF::String convertedSelectors = WTF::String::fromUTF8(selectors);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    RefPtr&lt;WebCore::Element&gt; gobjectResult = WTF::getPtr(item-&gt;querySelector(convertedSelectors, ec));
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;querySelector(convertedSelectors);
+    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"> WebKitDOMNodeList* webkit_dom_document_query_selector_all(WebKitDOMDocument* self, const gchar* selectors, GError** error)
</span><span class="lines">@@ -1403,13 +1403,13 @@
</span><span class="cx">     g_return_val_if_fail(!error || !*error, 0);
</span><span class="cx">     WebCore::Document* item = WebKit::core(self);
</span><span class="cx">     WTF::String convertedSelectors = WTF::String::fromUTF8(selectors);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    RefPtr&lt;WebCore::NodeList&gt; gobjectResult = WTF::getPtr(item-&gt;querySelectorAll(convertedSelectors, ec));
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;querySelectorAll(convertedSelectors);
+    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"> WebKitDOMDocumentType* webkit_dom_document_get_doctype(WebKitDOMDocument* self)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMDocumentFragmentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentFragment.cpp (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentFragment.cpp        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentFragment.cpp        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -199,13 +199,13 @@
</span><span class="cx">     g_return_val_if_fail(!error || !*error, 0);
</span><span class="cx">     WebCore::DocumentFragment* item = WebKit::core(self);
</span><span class="cx">     WTF::String convertedSelectors = WTF::String::fromUTF8(selectors);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    RefPtr&lt;WebCore::Element&gt; gobjectResult = WTF::getPtr(item-&gt;querySelector(convertedSelectors, ec));
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;querySelector(convertedSelectors);
+    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"> WebKitDOMNodeList* webkit_dom_document_fragment_query_selector_all(WebKitDOMDocumentFragment* self, const gchar* selectors, GError** error)
</span><span class="lines">@@ -216,13 +216,13 @@
</span><span class="cx">     g_return_val_if_fail(!error || !*error, 0);
</span><span class="cx">     WebCore::DocumentFragment* item = WebKit::core(self);
</span><span class="cx">     WTF::String convertedSelectors = WTF::String::fromUTF8(selectors);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    RefPtr&lt;WebCore::NodeList&gt; gobjectResult = WTF::getPtr(item-&gt;querySelectorAll(convertedSelectors, ec));
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;querySelectorAll(convertedSelectors);
+    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"> WebKitDOMHTMLCollection* webkit_dom_document_fragment_get_children(WebKitDOMDocumentFragment* self)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp (208144 => 208145)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp        2016-10-31 15:49:34 UTC (rev 208144)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp        2016-10-31 15:54:51 UTC (rev 208145)
</span><span class="lines">@@ -998,13 +998,13 @@
</span><span class="cx">     g_return_val_if_fail(!error || !*error, 0);
</span><span class="cx">     WebCore::Element* item = WebKit::core(self);
</span><span class="cx">     WTF::String convertedSelectors = WTF::String::fromUTF8(selectors);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    RefPtr&lt;WebCore::Element&gt; gobjectResult = WTF::getPtr(item-&gt;querySelector(convertedSelectors, ec));
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;querySelector(convertedSelectors);
+    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"> WebKitDOMNodeList* webkit_dom_element_query_selector_all(WebKitDOMElement* self, const gchar* selectors, GError** error)
</span><span class="lines">@@ -1015,13 +1015,13 @@
</span><span class="cx">     g_return_val_if_fail(!error || !*error, 0);
</span><span class="cx">     WebCore::Element* item = WebKit::core(self);
</span><span class="cx">     WTF::String convertedSelectors = WTF::String::fromUTF8(selectors);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    RefPtr&lt;WebCore::NodeList&gt; gobjectResult = WTF::getPtr(item-&gt;querySelectorAll(convertedSelectors, ec));
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;querySelectorAll(convertedSelectors);
+    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"> gchar* webkit_dom_element_get_tag_name(WebKitDOMElement* self)
</span></span></pre>
</div>
</div>

</body>
</html>