<!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>[208135] trunk</title>
</head>
<body>

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

<h3>Log Message</h3>
<pre>Move Element, NamedNodeMap, and DOMStringMap from ExceptionCode to Exception
https://bugs.webkit.org/show_bug.cgi?id=164206

Reviewed by Chris Dumez.

Source/WebCore:

* bindings/js/JSDOMStringMapCustom.cpp:
(WebCore::JSDOMStringMap::getOwnPropertyNames): Use modern for loop, and
updates since the names function now returns a vector.
(WebCore::JSDOMStringMap::putDelegate): Use propagateException. Also return
true any time an exception is raised. Since true tells the caller to return
without doing any work, we always want to return that on an exception.
* dom/DatasetDOMStringMap.cpp:
(WebCore::DatasetDOMStringMap::names): Renamed from getNames and made this
return a Vector instead of populating a passed-in vector.
(WebCore::DatasetDOMStringMap::setItem): Use ExceptionOr.
* dom/DatasetDOMStringMap.h: Updated for above.

* dom/Document.cpp:
(WebCore::Document::adoptNode): Updated to use ExceptionOr for
removeAttributeNode. Changed to use remove rather than removeChild for
better clarity.

* dom/Element.cpp:
(WebCore::Element::setAttribute): Use ExceptionOr.
(WebCore::Element::createShadowRoot): Deleted. Unused.
(WebCore::Element::attachShadow): Use ExceptionOr.
(WebCore::Element::shadowRootForBindings): Tweaked a bit.
(WebCore::Element::userAgentShadowRoot): Removed unneeded if statemment.
(WebCore::Element::ensureUserAgentShadowRoot): Tweaked a bit.
(WebCore::Element::setAttributeNode): Use ExceptionOr.
(WebCore::Element::setAttributeNodeNS): Ditto.
(WebCore::Element::removeAttributeNode): Ditto.
(WebCore::Element::parseAttributeName): Ditto. Also changed return result
to be a QualifiedName instead of using an out argument.
(WebCore::Element::setAttributeNS): Ditto.
(WebCore::Element::mergeWithNextTextNode): Ditto.
(WebCore::Element::setOuterHTML): Ditto.
(WebCore::Element::setInnerHTML): Ditto.
(WebCore::Element::matches): Ditto.
(WebCore::Element::closest): Ditto.
(WebCore::Element::insertAdjacent): Ditto.
(WebCore::Element::insertAdjacentElement): Ditto.
(WebCore::contextNodeForInsertion): Ditto.
(WebCore::contextElementForInsertion): Added. Helper for the
insertAdjacentHTML function to eliminate a local variable.
(WebCore::Element::insertAdjacentHTML): Use ExceptionOr.
(WebCore::Element::insertAdjacentText): Ditto.
* dom/Element.h: Updated for above.
* dom/Element.idl: Use non-legacy exceptions.

* dom/NamedNodeMap.cpp:
(WebCore::NamedNodeMap::removeNamedItem): Use ExceptionOr.
(WebCore::NamedNodeMap::supportedPropertyNames): Updated to check
which strings should be removed without copying the strings.
(WebCore::NamedNodeMap::removeNamedItemNS): Use ExceptionOr.
(WebCore::NamedNodeMap::setNamedItem): Ditto. Removed overload for
legacy bindings; move that to the bindings themselves.
* dom/NamedNodeMap.h: Updated for above.
* dom/NamedNodeMap.idl: Use non-legacy exceptions.

* html/HTMLElement.cpp:
(WebCore::HTMLElement::setOuterText): Updated since mergeWithNextTextNode
now uses ExceptionOr.

* inspector/DOMEditor.cpp: Updated to use ExceptionOr.

* inspector/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::toErrorString): Added an overload for
Exception.
(WebCore::InspectorDOMAgent::setAttributesAsText): Updated to use ExceptionOr.
* inspector/InspectorDOMAgent.h: Updated for above.

* inspector/InspectorStyleSheet.cpp:
(WebCore::InspectorStyleSheetForInlineStyle::setStyleText): Updated to
use the correct version of setAttribute; there was never a risk that there
would be an exception, but now that's clearer.

* testing/Internals.cpp:
(WebCore::Internals::ensureShadowRoot): Deleted. Was unused.
(WebCore::Internals::createShadowRoot): Ditto.
* testing/Internals.idl: Updated for above.

* xml/parser/XMLDocumentParserLibxml2.cpp:
(WebCore::handleNamespaceAttributes): Use updated parseAttributeName,
which uses ExceptionOr and a return value instead of an out argument.
(WebCore::handleElementAttributes): Ditto.

Source/WebKit/mac:

* DOM/DOMElement.mm:
(-[DOMElement setInnerHTML:]): Updated exception handling.
(-[DOMElement setOuterHTML:]): Ditto.
(-[DOMElement setAttribute:value:]): Ditto.
(-[DOMElement setAttributeNode:]): Ditto.
(-[DOMElement removeAttributeNode:]): Ditto.
(-[DOMElement setAttributeNS:qualifiedName:value:]): Ditto.
(-[DOMElement setAttributeNodeNS:]): Ditto.
(-[DOMElement matches:]): Ditto.
(-[DOMElement closest:]): Ditto.
(-[DOMElement webkitMatchesSelector:]): Ditto.
* DOM/DOMHTMLElement.mm:
(-[DOMHTMLElement insertAdjacentElement:element:]): Ditto.
(-[DOMHTMLElement insertAdjacentHTML:html:]): Ditto.
(-[DOMHTMLElement insertAdjacentText:text:]): Ditto.
* DOM/DOMNamedNodeMap.mm:
(-[DOMNamedNodeMap setNamedItem:]): Ditto.
(-[DOMNamedNodeMap removeNamedItem:]): Ditto.
(-[DOMNamedNodeMap setNamedItemNS:]): Ditto.
(-[DOMNamedNodeMap removeNamedItemNS:localName:]): Ditto.

Source/WebKit/win:

* DOMCoreClasses.cpp:
(DOMElement::setAttribute): Updated exception handling.
* DOMHTMLClasses.cpp:
(DOMHTMLElement::setInnerHTML): Ditto.

Source/WebKit2:

* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNamedNodeMap.cpp:
(webkit_dom_named_node_map_set_named_item): Updated exception handling.
(webkit_dom_named_node_map_remove_named_item): Ditto.
(webkit_dom_named_node_map_set_named_item_ns): Ditto.
(webkit_dom_named_node_map_remove_named_item_ns): Ditto.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp:
(webkit_dom_element_set_attribute): Ditto.
(webkit_dom_element_set_attribute_node): Ditto.
(webkit_dom_element_remove_attribute_node): Ditto.
(webkit_dom_element_set_attribute_ns): Ditto.
(webkit_dom_element_set_attribute_node_ns): Ditto.
(webkit_dom_element_matches): Ditto.
(webkit_dom_element_closest): Ditto.
(webkit_dom_element_webkit_matches_selector): Ditto.
(webkit_dom_element_insert_adjacent_element): Ditto.
(webkit_dom_element_insert_adjacent_html): Ditto.
(webkit_dom_element_insert_adjacent_text): Ditto.
(webkit_dom_element_set_inner_html): Ditto.
(webkit_dom_element_set_outer_html): Ditto.
* WebProcess/InjectedBundle/API/mac/WKDOMElement.mm:
(-[WKDOMElement setAttribute:value:]): Ditto.

LayoutTests:

* fast/dom/resources/shadow-test-driver.js: Deleted. Unused.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSCSSStyleDeclarationCustomcpp">trunk/Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMStringMapCustomcpp">trunk/Source/WebCore/bindings/js/JSDOMStringMapCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSStorageCustomcpp">trunk/Source/WebCore/bindings/js/JSStorageCustom.cpp</a></li>
<li><a href="#trunkSourceWebCoredomDatasetDOMStringMapcpp">trunk/Source/WebCore/dom/DatasetDOMStringMap.cpp</a></li>
<li><a href="#trunkSourceWebCoredomDatasetDOMStringMaph">trunk/Source/WebCore/dom/DatasetDOMStringMap.h</a></li>
<li><a href="#trunkSourceWebCoredomDocumentcpp">trunk/Source/WebCore/dom/Document.cpp</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="#trunkSourceWebCoredomNamedNodeMapcpp">trunk/Source/WebCore/dom/NamedNodeMap.cpp</a></li>
<li><a href="#trunkSourceWebCoredomNamedNodeMaph">trunk/Source/WebCore/dom/NamedNodeMap.h</a></li>
<li><a href="#trunkSourceWebCoredomNamedNodeMapidl">trunk/Source/WebCore/dom/NamedNodeMap.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLElementcpp">trunk/Source/WebCore/html/HTMLElement.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorDOMEditorcpp">trunk/Source/WebCore/inspector/DOMEditor.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorDOMAgentcpp">trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorDOMAgenth">trunk/Source/WebCore/inspector/InspectorDOMAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorStyleSheetcpp">trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp</a></li>
<li><a href="#trunkSourceWebCoretestingInternalscpp">trunk/Source/WebCore/testing/Internals.cpp</a></li>
<li><a href="#trunkSourceWebCoretestingInternalsidl">trunk/Source/WebCore/testing/Internals.idl</a></li>
<li><a href="#trunkSourceWebCorexmlparserXMLDocumentParserLibxml2cpp">trunk/Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMElementmm">trunk/Source/WebKit/mac/DOM/DOMElement.mm</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMHTMLElementmm">trunk/Source/WebKit/mac/DOM/DOMHTMLElement.mm</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMNamedNodeMapmm">trunk/Source/WebKit/mac/DOM/DOMNamedNodeMap.mm</a></li>
<li><a href="#trunkSourceWebKitwinChangeLog">trunk/Source/WebKit/win/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitwinDOMCoreClassescpp">trunk/Source/WebKit/win/DOMCoreClasses.cpp</a></li>
<li><a href="#trunkSourceWebKitwinDOMHTMLClassescpp">trunk/Source/WebKit/win/DOMHTMLClasses.cpp</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMElementcpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMNamedNodeMapcpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNamedNodeMap.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPImacWKDOMElementmm">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMElement.mm</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastdomresourcesshadowtestdriverjs">trunk/LayoutTests/fast/dom/resources/shadow-test-driver.js</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/LayoutTests/ChangeLog        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -1,3 +1,12 @@
</span><ins>+2016-10-30  Darin Adler  &lt;darin@apple.com&gt;
+
+        Move Element, NamedNodeMap, and DOMStringMap from ExceptionCode to Exception
+        https://bugs.webkit.org/show_bug.cgi?id=164206
+
+        Reviewed by Chris Dumez.
+
+        * fast/dom/resources/shadow-test-driver.js: Deleted. Unused.
+
</ins><span class="cx"> 2016-10-30  Frederic Wang  &lt;fwang@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Use HarfBuzz ot-math API to parse the OpenType MATH table
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomresourcesshadowtestdriverjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/dom/resources/shadow-test-driver.js (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/resources/shadow-test-driver.js        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/LayoutTests/fast/dom/resources/shadow-test-driver.js        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -1,158 +0,0 @@
</span><del>-//
-// shadow-test-driver.js
-//
-// To use shadow-test-driver.js, you should have
-//   &lt;div id=&quot;actual-container&quot;&gt;&lt;/div&gt;
-//   &lt;div id=&quot;expect-container&quot;&gt;&lt;/div&gt;
-//   &lt;pre id=&quot;console&quot;&gt;&lt;/pre&gt;
-// in your body.
-//
-// Then, define test functions having one argument 'callIfDone'.
-// callIfDone should be called when your test function finished.
-//
-// In body.onload, call doTest(testFuncs) where testFuncs is an array of test functions.
-//
-// See content-element-move.html as an example.
-//
-
-function log(message) {
-    document.getElementById('console').innerHTML += (message + &quot;\n&quot;);
-}
-
-function removeAllChildren(elem) {
-    while (elem.firstChild)
-        elem.removeChild(elem.firstChild);
-}
-
-function cleanUp() {
-    removeAllChildren(document.getElementById('actual-container'));
-    removeAllChildren(document.getElementById('expect-container'));
-}
-
-function removeContainerLines(text) {
-    var lines = text.split('\n');
-    lines.splice(0, 2);
-    return lines.join('\n');
-}
-
-function check() {
-    var expectContainer = document.getElementById('expect-container');
-    var actualContainer = document.getElementById('actual-container');
-    var originalDisplayValue = actualContainer.style.display;
-    actualContainer.style.display = 'none';
-    expectContainer.offsetLeft;
-    var refContainerRenderTree = internals.elementRenderTreeAsText(expectContainer);
-    var refRenderTree = removeContainerLines(refContainerRenderTree);
-    actualContainer.style.display = originalDisplayValue;
-
-    originalDisplayValue = expectContainer.style.display;
-    expectContainer.style.display = 'none';
-    actualContainer.offsetLeft;
-    var targetContainerRenderTree = internals.elementRenderTreeAsText(actualContainer);
-    var targetRenderTree = removeContainerLines(targetContainerRenderTree);
-    expectContainer.style.display = originalDisplayValue;
-
-    if (targetRenderTree == refRenderTree)
-        log(&quot;PASS&quot;);
-    else {
-        log(&quot;FAIL&quot;);
-        log(&quot;Expected: &quot;);
-        log(refRenderTree);
-        log(&quot;Actual: &quot;);
-        log(targetRenderTree);
-    }
-}
-
-function createSpanWithText(text, className) {
-    var span = document.createElement('span');
-    span.appendChild(document.createTextNode(text));
-    if (className)
-        span.className = className;
-    return span;
-}
-
-function createContentWithSelect(select, fallbackText) {
-    var content = internals.createContentElement();
-    content.setAttribute('select', select);
-    if (fallbackText)
-        content.appendChild(createSpanWithText(fallbackText));
-
-    return content;
-}
-
-function createContentWithText(fallbackText) {
-    var content = internals.createContentElement();
-    if (fallbackText)
-        content.innerHTML = fallbackText;
-
-    return content;
-}
-
-function appendShadow(target, select) {
-    var root = internals.ensureShadowRoot(target);
-
-    var content = internals.createContentElement();
-    content.setAttribute('select', select);
-    content.appendChild(createSpanWithText(&quot;FALLBACK&quot;));
-
-    root.appendChild(document.createTextNode(&quot;{SHADOW: &quot;));
-    root.appendChild(content);
-    root.appendChild(document.createTextNode(&quot;}&quot;));
-}
-
-function appendShadowDeep(target, select) {
-    var root = internals.ensureShadowRoot(target);
-
-    var child = document.createElement(&quot;span&quot;);
-    {
-        var content = internals.createContentElement();
-        content.setAttribute('select', select);
-        content.appendChild(createSpanWithText(&quot;FALLBACK&quot;));
-
-        child.appendChild(document.createTextNode(&quot;{INNER: &quot;));
-        child.appendChild(content);
-        child.appendChild(document.createTextNode(&quot;}&quot;));
-    }
-
-    root.appendChild(document.createTextNode(&quot;{SHADOW: &quot;));
-    root.appendChild(child);
-    root.appendChild(document.createTextNode(&quot;}&quot;));
-}
-
-function doTestIfLeft(restTests) {
-    var test = restTests.shift();
-    if (test == null)
-        return doneTest();
-
-    var callIfDone = function() {
-        setTimeout(function() {
-            check();
-            cleanUp();
-            doTestIfLeft(restTests);
-        }, 0);
-    };
-
-    log(test.name);
-    test(callIfDone);
-}
-
-function doneTest() {
-    log(&quot;TEST COMPLETED&quot;);
-    if (window.tearDownOnce)
-        window.tearDownOnce();
-    testRunner.notifyDone();
-}
-
-// A test driver. Call this body.onload.
-function doTest(tests) {
-    if (window.setUpOnce)
-        window.setUpOnce();
-
-    if (window.testRunner) {
-        testRunner.waitUntilDone();
-        testRunner.dumpAsText();
-    }
-
-    cleanUp();
-    doTestIfLeft(tests);
-}
</del></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebCore/ChangeLog        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -1,3 +1,92 @@
</span><ins>+2016-10-30  Darin Adler  &lt;darin@apple.com&gt;
+
+        Move Element, NamedNodeMap, and DOMStringMap from ExceptionCode to Exception
+        https://bugs.webkit.org/show_bug.cgi?id=164206
+
+        Reviewed by Chris Dumez.
+
+        * bindings/js/JSDOMStringMapCustom.cpp:
+        (WebCore::JSDOMStringMap::getOwnPropertyNames): Use modern for loop, and
+        updates since the names function now returns a vector.
+        (WebCore::JSDOMStringMap::putDelegate): Use propagateException. Also return
+        true any time an exception is raised. Since true tells the caller to return
+        without doing any work, we always want to return that on an exception.
+        * dom/DatasetDOMStringMap.cpp:
+        (WebCore::DatasetDOMStringMap::names): Renamed from getNames and made this
+        return a Vector instead of populating a passed-in vector.
+        (WebCore::DatasetDOMStringMap::setItem): Use ExceptionOr.
+        * dom/DatasetDOMStringMap.h: Updated for above.
+
+        * dom/Document.cpp:
+        (WebCore::Document::adoptNode): Updated to use ExceptionOr for
+        removeAttributeNode. Changed to use remove rather than removeChild for
+        better clarity.
+
+        * dom/Element.cpp:
+        (WebCore::Element::setAttribute): Use ExceptionOr.
+        (WebCore::Element::createShadowRoot): Deleted. Unused.
+        (WebCore::Element::attachShadow): Use ExceptionOr.
+        (WebCore::Element::shadowRootForBindings): Tweaked a bit.
+        (WebCore::Element::userAgentShadowRoot): Removed unneeded if statemment.
+        (WebCore::Element::ensureUserAgentShadowRoot): Tweaked a bit.
+        (WebCore::Element::setAttributeNode): Use ExceptionOr.
+        (WebCore::Element::setAttributeNodeNS): Ditto.
+        (WebCore::Element::removeAttributeNode): Ditto.
+        (WebCore::Element::parseAttributeName): Ditto. Also changed return result
+        to be a QualifiedName instead of using an out argument.
+        (WebCore::Element::setAttributeNS): Ditto.
+        (WebCore::Element::mergeWithNextTextNode): Ditto.
+        (WebCore::Element::setOuterHTML): Ditto.
+        (WebCore::Element::setInnerHTML): Ditto.
+        (WebCore::Element::matches): Ditto.
+        (WebCore::Element::closest): Ditto.
+        (WebCore::Element::insertAdjacent): Ditto.
+        (WebCore::Element::insertAdjacentElement): Ditto.
+        (WebCore::contextNodeForInsertion): Ditto.
+        (WebCore::contextElementForInsertion): Added. Helper for the
+        insertAdjacentHTML function to eliminate a local variable.
+        (WebCore::Element::insertAdjacentHTML): Use ExceptionOr.
+        (WebCore::Element::insertAdjacentText): Ditto.
+        * dom/Element.h: Updated for above.
+        * dom/Element.idl: Use non-legacy exceptions.
+
+        * dom/NamedNodeMap.cpp:
+        (WebCore::NamedNodeMap::removeNamedItem): Use ExceptionOr.
+        (WebCore::NamedNodeMap::supportedPropertyNames): Updated to check
+        which strings should be removed without copying the strings.
+        (WebCore::NamedNodeMap::removeNamedItemNS): Use ExceptionOr.
+        (WebCore::NamedNodeMap::setNamedItem): Ditto. Removed overload for
+        legacy bindings; move that to the bindings themselves.
+        * dom/NamedNodeMap.h: Updated for above.
+        * dom/NamedNodeMap.idl: Use non-legacy exceptions.
+
+        * html/HTMLElement.cpp:
+        (WebCore::HTMLElement::setOuterText): Updated since mergeWithNextTextNode
+        now uses ExceptionOr.
+
+        * inspector/DOMEditor.cpp: Updated to use ExceptionOr.
+
+        * inspector/InspectorDOMAgent.cpp:
+        (WebCore::InspectorDOMAgent::toErrorString): Added an overload for
+        Exception.
+        (WebCore::InspectorDOMAgent::setAttributesAsText): Updated to use ExceptionOr.
+        * inspector/InspectorDOMAgent.h: Updated for above.
+
+        * inspector/InspectorStyleSheet.cpp:
+        (WebCore::InspectorStyleSheetForInlineStyle::setStyleText): Updated to
+        use the correct version of setAttribute; there was never a risk that there
+        would be an exception, but now that's clearer.
+
+        * testing/Internals.cpp:
+        (WebCore::Internals::ensureShadowRoot): Deleted. Was unused.
+        (WebCore::Internals::createShadowRoot): Ditto.
+        * testing/Internals.idl: Updated for above.
+
+        * xml/parser/XMLDocumentParserLibxml2.cpp:
+        (WebCore::handleNamespaceAttributes): Use updated parseAttributeName,
+        which uses ExceptionOr and a return value instead of an out argument.
+        (WebCore::handleElementAttributes): Ditto.
+
</ins><span class="cx"> 2016-10-30  Sam Weinig  &lt;sam@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         [WebIDL] Restructure IDLParser structs to better match modern WebIDL concepts
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSCSSStyleDeclarationCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -342,7 +342,7 @@
</span><span class="cx">     auto setPropertyInternalResult = wrapped().setPropertyInternal(propertyInfo.propertyID, propertyValue, important);
</span><span class="cx">     if (setPropertyInternalResult.hasException()) {
</span><span class="cx">         propagateException(*state, setPropertyInternalResult.releaseException());
</span><del>-        return false;
</del><ins>+        return true;
</ins><span class="cx">     }
</span><span class="cx">     putResult = setPropertyInternalResult.releaseReturnValue();
</span><span class="cx">     return true;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMStringMapCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMStringMapCustom.cpp (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMStringMapCustom.cpp        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebCore/bindings/js/JSDOMStringMapCustom.cpp        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-bool JSDOMStringMap::getOwnPropertySlotDelegate(ExecState* exec, PropertyName propertyName, PropertySlot&amp; slot)
</del><ins>+bool JSDOMStringMap::getOwnPropertySlotDelegate(ExecState* state, PropertyName propertyName, PropertySlot&amp; slot)
</ins><span class="cx"> {
</span><span class="cx">     if (propertyName.isSymbol())
</span><span class="cx">         return false;
</span><span class="lines">@@ -44,44 +44,38 @@
</span><span class="cx">     bool nameIsValid;
</span><span class="cx">     const AtomicString&amp; item = wrapped().item(propertyNameToString(propertyName), nameIsValid);
</span><span class="cx">     if (nameIsValid) {
</span><del>-        slot.setValue(this, 0, toJS&lt;IDLDOMString&gt;(*exec, item));
</del><ins>+        slot.setValue(this, 0, toJS&lt;IDLDOMString&gt;(*state, item));
</ins><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JSDOMStringMap::getOwnPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray&amp; propertyNames, EnumerationMode mode)
</del><ins>+void JSDOMStringMap::getOwnPropertyNames(JSObject* object, ExecState* state, PropertyNameArray&amp; propertyNames, EnumerationMode mode)
</ins><span class="cx"> {
</span><del>-    JSDOMStringMap* thisObject = jsCast&lt;JSDOMStringMap*&gt;(object);
-    Vector&lt;String&gt; names;
-    thisObject-&gt;wrapped().getNames(names);
-    size_t length = names.size();
-    for (size_t i = 0; i &lt; length; ++i)
-        propertyNames.add(Identifier::fromString(exec, names[i]));
-
-    Base::getOwnPropertyNames(thisObject, exec, propertyNames, mode);
</del><ins>+    for (auto&amp; name : jsCast&lt;JSDOMStringMap*&gt;(object)-&gt;wrapped().names())
+        propertyNames.add(Identifier::fromString(state, name));
+    Base::getOwnPropertyNames(object, state, propertyNames, mode);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool JSDOMStringMap::deleteProperty(JSCell* cell, ExecState* exec, PropertyName propertyName)
</del><ins>+bool JSDOMStringMap::deleteProperty(JSCell* cell, ExecState* state, PropertyName propertyName)
</ins><span class="cx"> {
</span><span class="cx"> #if ENABLE(CUSTOM_ELEMENTS)
</span><span class="cx">     CustomElementReactionStack customElementReactionStack;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    JSDOMStringMap* thisObject = jsCast&lt;JSDOMStringMap*&gt;(cell);
</del><span class="cx">     if (propertyName.isSymbol())
</span><del>-        return Base::deleteProperty(thisObject, exec, propertyName);
-    return thisObject-&gt;wrapped().deleteItem(propertyNameToString(propertyName));
</del><ins>+        return Base::deleteProperty(cell, state, propertyName);
+    return jsCast&lt;JSDOMStringMap*&gt;(cell)-&gt;wrapped().deleteItem(propertyNameToString(propertyName));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool JSDOMStringMap::deletePropertyByIndex(JSCell* cell, ExecState* exec, unsigned index)
</del><ins>+bool JSDOMStringMap::deletePropertyByIndex(JSCell* cell, ExecState* state, unsigned index)
</ins><span class="cx"> {
</span><del>-    return deleteProperty(cell, exec, Identifier::from(exec, index));
</del><ins>+    return deleteProperty(cell, state, Identifier::from(state, index));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool JSDOMStringMap::putDelegate(ExecState* exec, PropertyName propertyName, JSValue value, PutPropertySlot&amp;, bool&amp; putResult)
</del><ins>+bool JSDOMStringMap::putDelegate(ExecState* state, PropertyName propertyName, JSValue value, PutPropertySlot&amp;, bool&amp; putResult)
</ins><span class="cx"> {
</span><del>-    VM&amp; vm = exec-&gt;vm();
</del><ins>+    VM&amp; vm = state-&gt;vm();
</ins><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     if (propertyName.isSymbol())
</span><span class="lines">@@ -91,14 +85,17 @@
</span><span class="cx">     CustomElementReactionStack customElementReactionStack;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    String stringValue = value.toString(exec)-&gt;value(exec);
-    RETURN_IF_EXCEPTION(scope, false);
</del><ins>+    String stringValue = value.toWTFString(state);
+    RETURN_IF_EXCEPTION(scope, true);
</ins><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
-    wrapped().setItem(propertyNameToString(propertyName), stringValue, ec);
-    setDOMException(exec, ec);
-    putResult = !ec;
-    return !ec;
</del><ins>+    auto result = wrapped().setItem(propertyNameToString(propertyName), WTFMove(stringValue));
+    if (result.hasException()) {
+        propagateException(*state, scope, result.releaseException());
+        return true;
+    }
+
+    putResult = true;
+    return true;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSStorageCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSStorageCustom.cpp (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSStorageCustom.cpp        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebCore/bindings/js/JSStorageCustom.cpp        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -111,7 +111,7 @@
</span><span class="cx">     // Only perform the custom put if the object doesn't have a native property by this name.
</span><span class="cx">     // Since hasProperty() would end up calling canGetItemsForName() and be fooled, we need to check
</span><span class="cx">     // the native property slots manually.
</span><del>-    PropertySlot slot(this, PropertySlot::InternalMethodType::GetOwnProperty);
</del><ins>+    PropertySlot slot { this, PropertySlot::InternalMethodType::GetOwnProperty };
</ins><span class="cx"> 
</span><span class="cx">     JSValue prototype = this-&gt;getPrototypeDirect();
</span><span class="cx">     if (prototype.isObject() &amp;&amp; asObject(prototype)-&gt;getPropertySlot(state, propertyName, slot))
</span><span class="lines">@@ -120,19 +120,16 @@
</span><span class="cx">     if (propertyName.isSymbol())
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    String stringValue = value.toString(state)-&gt;value(state);
-    if (UNLIKELY(scope.exception())) {
-        // The return value indicates whether putDelegate() should handle the put operation (which
-        // if true, tells the caller not to execute the generic put). It does not indicate whether
-        // putDelegate() did successfully complete the operation or not (which it didn't in this
-        // case due to the exception).
-        putResult = false;
</del><ins>+    String stringValue = value.toWTFString(state);
+    RETURN_IF_EXCEPTION(scope, true);
+
+    auto setItemResult = wrapped().setItem(propertyNameToString(propertyName), stringValue);
+    if (setItemResult.hasException()) {
+        propagateException(*state, scope, setItemResult.releaseException());
</ins><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    auto setItemResult = wrapped().setItem(propertyNameToString(propertyName), stringValue);
-    putResult = !setItemResult.hasException();
-    propagateException(*state, scope, WTFMove(setItemResult));
</del><ins>+    putResult = true;
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomDatasetDOMStringMapcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/DatasetDOMStringMap.cpp (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/DatasetDOMStringMap.cpp        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebCore/dom/DatasetDOMStringMap.cpp        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -31,7 +31,6 @@
</span><span class="cx"> #include &lt;wtf/ASCIICType.h&gt;
</span><span class="cx"> #include &lt;wtf/text/AtomicString.h&gt;
</span><span class="cx"> #include &lt;wtf/text/StringBuilder.h&gt;
</span><del>-#include &lt;wtf/text/WTFString.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -152,18 +151,21 @@
</span><span class="cx">     m_element.deref();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void DatasetDOMStringMap::getNames(Vector&lt;String&gt;&amp; names)
</del><ins>+Vector&lt;String&gt; DatasetDOMStringMap::names() const
</ins><span class="cx"> {
</span><del>-    if (!m_element.hasAttributes())
-        return;
</del><ins>+    Vector&lt;String&gt; names;
</ins><span class="cx"> 
</span><del>-    for (const Attribute&amp; attribute : m_element.attributesIterator()) {
-        if (isValidAttributeName(attribute.localName()))
-            names.append(convertAttributeNameToPropertyName(attribute.localName()));
</del><ins>+    if (m_element.hasAttributes()) {
+        for (auto&amp; attribute : m_element.attributesIterator()) {
+            if (isValidAttributeName(attribute.localName()))
+                names.append(convertAttributeNameToPropertyName(attribute.localName()));
+        }
</ins><span class="cx">     }
</span><ins>+
+    return names;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-const AtomicString&amp; DatasetDOMStringMap::item(const String&amp; propertyName, bool&amp; isValid)
</del><ins>+const AtomicString&amp; DatasetDOMStringMap::item(const String&amp; propertyName, bool&amp; isValid) const
</ins><span class="cx"> {
</span><span class="cx">     isValid = false;
</span><span class="cx">     if (m_element.hasAttributes()) {
</span><span class="lines">@@ -191,14 +193,11 @@
</span><span class="cx">     return nullAtom;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void DatasetDOMStringMap::setItem(const String&amp; name, const String&amp; value, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; DatasetDOMStringMap::setItem(const String&amp; name, const String&amp; value)
</ins><span class="cx"> {
</span><del>-    if (!isValidPropertyName(name)) {
-        ec = SYNTAX_ERR;
-        return;
-    }
-
-    m_element.setAttribute(convertPropertyNameToAttributeName(name), value, ec);
</del><ins>+    if (!isValidPropertyName(name))
+        return Exception { SYNTAX_ERR };
+    return m_element.setAttribute(convertPropertyNameToAttributeName(name), value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool DatasetDOMStringMap::deleteItem(const String&amp; name)
</span></span></pre></div>
<a id="trunkSourceWebCoredomDatasetDOMStringMaph"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/DatasetDOMStringMap.h (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/DatasetDOMStringMap.h        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebCore/dom/DatasetDOMStringMap.h        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -23,21 +23,17 @@
</span><span class="cx">  * THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef DatasetDOMStringMap_h
-#define DatasetDOMStringMap_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><ins>+#include &quot;ExceptionOr.h&quot;
</ins><span class="cx"> #include &quot;ScriptWrappable.h&quot;
</span><del>-#include &lt;wtf/Forward.h&gt;
-#include &lt;wtf/Noncopyable.h&gt;
-#include &lt;wtf/Vector.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class Element;
</span><del>-typedef int ExceptionCode;
</del><span class="cx"> 
</span><span class="cx"> class DatasetDOMStringMap final : public ScriptWrappable {
</span><del>-    WTF_MAKE_NONCOPYABLE(DatasetDOMStringMap); WTF_MAKE_FAST_ALLOCATED;
</del><ins>+    WTF_MAKE_FAST_ALLOCATED;
</ins><span class="cx"> public:
</span><span class="cx">     explicit DatasetDOMStringMap(Element&amp; element)
</span><span class="cx">         : m_element(element)
</span><span class="lines">@@ -47,9 +43,9 @@
</span><span class="cx">     void ref();
</span><span class="cx">     void deref();
</span><span class="cx"> 
</span><del>-    void getNames(Vector&lt;String&gt;&amp;);
-    const AtomicString&amp; item(const String&amp; name, bool&amp; isValid);
-    void setItem(const String&amp; name, const String&amp; value, ExceptionCode&amp;);
</del><ins>+    Vector&lt;String&gt; names() const;
+    const AtomicString&amp; item(const String&amp; name, bool&amp; isValid) const;
+    ExceptionOr&lt;void&gt; setItem(const String&amp; name, const String&amp; value);
</ins><span class="cx">     bool deleteItem(const String&amp; name);
</span><span class="cx"> 
</span><span class="cx">     Element&amp; element() { return m_element; }
</span><span class="lines">@@ -59,5 +55,3 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><del>-
-#endif // DatasetDOMStringMap_h
</del></span></pre></div>
<a id="trunkSourceWebCoredomDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.cpp (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.cpp        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebCore/dom/Document.cpp        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -1013,10 +1013,15 @@
</span><span class="cx">     case DOCUMENT_NODE:
</span><span class="cx">         ec = NOT_SUPPORTED_ERR;
</span><span class="cx">         return nullptr;
</span><del>-    case ATTRIBUTE_NODE: {                   
</del><ins>+    case ATTRIBUTE_NODE: {
</ins><span class="cx">         auto&amp; attr = downcast&lt;Attr&gt;(source);
</span><del>-        if (attr.ownerElement())
-            attr.ownerElement()-&gt;removeAttributeNode(attr, ec);
</del><ins>+        if (auto* element = attr.ownerElement()) {
+            auto result = element-&gt;removeAttributeNode(attr);
+            if (result.hasException()) {
+                ec = result.releaseException().code();
+                // FIXME: Why fall through here instead of returning early?
+            }
+        }
</ins><span class="cx">         break;
</span><span class="cx">     }       
</span><span class="cx">     default:
</span><span class="lines">@@ -1032,10 +1037,10 @@
</span><span class="cx">                 return nullptr;
</span><span class="cx">             }
</span><span class="cx">         }
</span><del>-        if (source.parentNode()) {
-            source.parentNode()-&gt;removeChild(source, ec);
-            if (ec)
-                return nullptr;
</del><ins>+        auto result = source.remove();
+        if (result.hasException()) {
+            ec = result.releaseException().code();
+            return nullptr;
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.cpp (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.cpp        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebCore/dom/Element.cpp        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -1217,19 +1217,18 @@
</span><span class="cx">     return getAttribute(QualifiedName(nullAtom, localName, namespaceURI));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Element::setAttribute(const AtomicString&amp; localName, const AtomicString&amp; value, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; Element::setAttribute(const AtomicString&amp; localName, const AtomicString&amp; value)
</ins><span class="cx"> {
</span><del>-    if (!Document::isValidName(localName)) {
-        ec = INVALID_CHARACTER_ERR;
-        return;
-    }
</del><ins>+    if (!Document::isValidName(localName))
+        return Exception { INVALID_CHARACTER_ERR };
</ins><span class="cx"> 
</span><span class="cx">     synchronizeAttribute(localName);
</span><del>-    const AtomicString&amp; caseAdjustedLocalName = shouldIgnoreAttributeCase(*this) ? localName.convertToASCIILowercase() : localName;
</del><ins>+    auto caseAdjustedLocalName = shouldIgnoreAttributeCase(*this) ? localName.convertToASCIILowercase() : localName;
+    unsigned index = elementData() ? elementData()-&gt;findAttributeIndexByName(caseAdjustedLocalName, false) : ElementData::attributeNotFound;
+    auto name = index != ElementData::attributeNotFound ? attributeAt(index).name() : QualifiedName { nullAtom, caseAdjustedLocalName, nullAtom };
+    setAttributeInternal(index, name, value, NotInSynchronizationOfLazyAttribute);
</ins><span class="cx"> 
</span><del>-    unsigned index = elementData() ? elementData()-&gt;findAttributeIndexByName(caseAdjustedLocalName, false) : ElementData::attributeNotFound;
-    const QualifiedName&amp; qName = index != ElementData::attributeNotFound ? attributeAt(index).name() : QualifiedName(nullAtom, caseAdjustedLocalName, nullAtom);
-    setAttributeInternal(index, qName, value, NotInSynchronizationOfLazyAttribute);
</del><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Element::setAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="lines">@@ -1756,12 +1755,11 @@
</span><span class="cx">     return hasRareData() ? elementRareData()-&gt;shadowRoot() : nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-
</del><span class="cx"> void Element::addShadowRoot(Ref&lt;ShadowRoot&gt;&amp;&amp; newShadowRoot)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!shadowRoot());
</span><span class="cx"> 
</span><del>-    ShadowRoot&amp; shadowRoot = newShadowRoot.get();
</del><ins>+    ShadowRoot&amp; shadowRoot = newShadowRoot;
</ins><span class="cx">     ensureElementRareData().setShadowRoot(WTFMove(newShadowRoot));
</span><span class="cx"> 
</span><span class="cx">     shadowRoot.setHost(this);
</span><span class="lines">@@ -1785,6 +1783,7 @@
</span><span class="cx">     RefPtr&lt;ShadowRoot&gt; oldRoot = shadowRoot();
</span><span class="cx">     if (!oldRoot)
</span><span class="cx">         return;
</span><ins>+
</ins><span class="cx">     InspectorInstrumentation::willPopShadowRoot(*this, *oldRoot);
</span><span class="cx">     document().removeFocusedNodeOfSubtree(oldRoot.get());
</span><span class="cx"> 
</span><span class="lines">@@ -1798,16 +1797,6 @@
</span><span class="cx">     notifyChildNodeRemoved(*this, *oldRoot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ShadowRoot* Element::createShadowRoot(ExceptionCode&amp; ec)
-{
-    if (alwaysCreateUserAgentShadowRoot())
-        return &amp;ensureUserAgentShadowRoot();
-
-    ec = HIERARCHY_REQUEST_ERR;
-    return nullptr;
-}
-
-
</del><span class="cx"> static bool canAttachAuthorShadowRoot(const Element&amp; element)
</span><span class="cx"> {
</span><span class="cx">     static NeverDestroyed&lt;HashSet&lt;AtomicString&gt;&gt; tagNames = [] {
</span><span class="lines">@@ -1843,23 +1832,14 @@
</span><span class="cx">     return tagNames.get().contains(localName) || Document::validateCustomElementName(localName) == CustomElementNameValidationStatus::Valid;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;ShadowRoot&gt; Element::attachShadow(const ShadowRootInit&amp; init, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Ref&lt;ShadowRoot&gt;&gt; Element::attachShadow(const ShadowRootInit&amp; init)
</ins><span class="cx"> {
</span><del>-    if (!canAttachAuthorShadowRoot(*this)) {
-        ec = NOT_SUPPORTED_ERR;
-        return nullptr;
-    }
-
-    if (shadowRoot()) {
-        ec = INVALID_STATE_ERR;
-        return nullptr;
-    }
-
-    if (init.mode == ShadowRootMode::UserAgent) {
-        ec = TypeError;
-        return nullptr;
-    }
-
</del><ins>+    if (!canAttachAuthorShadowRoot(*this))
+        return Exception { NOT_SUPPORTED_ERR };
+    if (shadowRoot())
+        return Exception { INVALID_STATE_ERR };
+    if (init.mode == ShadowRootMode::UserAgent)
+        return Exception { TypeError };
</ins><span class="cx">     auto shadow = ShadowRoot::create(document(), init.mode);
</span><span class="cx">     addShadowRoot(shadow.copyRef());
</span><span class="cx">     return WTFMove(shadow);
</span><span class="lines">@@ -1867,38 +1847,32 @@
</span><span class="cx"> 
</span><span class="cx"> ShadowRoot* Element::shadowRootForBindings(JSC::ExecState&amp; state) const
</span><span class="cx"> {
</span><del>-    ShadowRoot* root = shadowRoot();
-    if (!root)
</del><ins>+    auto* shadow = shadowRoot();
+    if (!shadow)
</ins><span class="cx">         return nullptr;
</span><del>-
-    if (root-&gt;mode() != ShadowRootMode::Open) {
-        if (!JSC::jsCast&lt;JSDOMGlobalObject*&gt;(state.lexicalGlobalObject())-&gt;world().shadowRootIsAlwaysOpen())
-            return nullptr;
-    }
-    return root;
</del><ins>+    if (shadow-&gt;mode() == ShadowRootMode::Open)
+        return shadow;
+    if (JSC::jsCast&lt;JSDOMGlobalObject*&gt;(state.lexicalGlobalObject())-&gt;world().shadowRootIsAlwaysOpen())
+        return shadow;
+    return nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-
</del><span class="cx"> ShadowRoot* Element::userAgentShadowRoot() const
</span><span class="cx"> {
</span><del>-    if (ShadowRoot* shadowRoot = this-&gt;shadowRoot()) {
-        ASSERT(shadowRoot-&gt;mode() == ShadowRootMode::UserAgent);
-        return shadowRoot;
-    }
-    return nullptr;
</del><ins>+    ASSERT(!shadowRoot() || shadowRoot()-&gt;mode() == ShadowRootMode::UserAgent);
+    return shadowRoot();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ShadowRoot&amp; Element::ensureUserAgentShadowRoot()
</span><span class="cx"> {
</span><del>-    ShadowRoot* shadowRoot = userAgentShadowRoot();
-    if (!shadowRoot) {
-        addShadowRoot(ShadowRoot::create(document(), ShadowRootMode::UserAgent));
-        shadowRoot = userAgentShadowRoot();
-    }
-    return *shadowRoot;
</del><ins>+    if (auto* shadow = userAgentShadowRoot())
+        return *shadow;
+    auto newShadow = ShadowRoot::create(document(), ShadowRootMode::UserAgent);
+    ShadowRoot&amp; shadow = newShadow;
+    addShadowRoot(WTFMove(newShadow));
+    return shadow;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-    
</del><span class="cx"> #if ENABLE(CUSTOM_ELEMENTS)
</span><span class="cx"> 
</span><span class="cx"> void Element::setIsDefinedCustomElement(JSCustomElementInterface&amp; elementInterface)
</span><span class="lines">@@ -1953,7 +1927,6 @@
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-
</del><span class="cx"> const AtomicString&amp; Element::shadowPseudoId() const
</span><span class="cx"> {
</span><span class="cx">     return pseudo();
</span><span class="lines">@@ -2159,24 +2132,24 @@
</span><span class="cx">     return *attrNodeListForElement(*this);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;Attr&gt; Element::setAttributeNode(Attr&amp; attrNode, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;RefPtr&lt;Attr&gt;&gt; Element::setAttributeNode(Attr&amp; attrNode)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;Attr&gt; oldAttrNode = attrIfExists(attrNode.qualifiedName().localName(), shouldIgnoreAttributeCase(*this));
</span><span class="cx">     if (oldAttrNode.get() == &amp;attrNode)
</span><del>-        return &amp;attrNode; // This Attr is already attached to the element.
</del><ins>+        return WTFMove(oldAttrNode);
</ins><span class="cx"> 
</span><span class="cx">     // INUSE_ATTRIBUTE_ERR: Raised if node is an Attr that is already an attribute of another Element object.
</span><span class="cx">     // The DOM user must explicitly clone Attr nodes to re-use them in other elements.
</span><del>-    if (attrNode.ownerElement() &amp;&amp; attrNode.ownerElement() != this) {
-        ec = INUSE_ATTRIBUTE_ERR;
-        return nullptr;
-    }
</del><ins>+    if (attrNode.ownerElement() &amp;&amp; attrNode.ownerElement() != this)
+        return Exception { INUSE_ATTRIBUTE_ERR };
</ins><span class="cx"> 
</span><span class="cx">     synchronizeAllAttributes();
</span><del>-    UniqueElementData&amp; elementData = ensureUniqueElementData();
</del><ins>+    auto&amp; elementData = ensureUniqueElementData();
</ins><span class="cx"> 
</span><del>-    unsigned existingAttributeIndex = elementData.findAttributeIndexByName(attrNode.qualifiedName().localName(), shouldIgnoreAttributeCase(*this));
-    if (existingAttributeIndex != ElementData::attributeNotFound) {
</del><ins>+    auto existingAttributeIndex = elementData.findAttributeIndexByName(attrNode.qualifiedName().localName(), shouldIgnoreAttributeCase(*this));
+    if (existingAttributeIndex == ElementData::attributeNotFound)
+        setAttributeInternal(elementData.findAttributeIndexByName(attrNode.qualifiedName()), attrNode.qualifiedName(), attrNode.value(), NotInSynchronizationOfLazyAttribute);
+    else {
</ins><span class="cx">         const Attribute&amp; attribute = attributeAt(existingAttributeIndex);
</span><span class="cx">         if (oldAttrNode)
</span><span class="cx">             detachAttrNodeFromElementWithValue(oldAttrNode.get(), attribute.value());
</span><span class="lines">@@ -2187,12 +2160,8 @@
</span><span class="cx">             setAttributeInternal(existingAttributeIndex, attrNode.qualifiedName(), attrNode.value(), NotInSynchronizationOfLazyAttribute);
</span><span class="cx">         else {
</span><span class="cx">             removeAttributeInternal(existingAttributeIndex, NotInSynchronizationOfLazyAttribute);
</span><del>-            unsigned existingAttributeIndexForFullQualifiedName = elementData.findAttributeIndexByName(attrNode.qualifiedName());
-            setAttributeInternal(existingAttributeIndexForFullQualifiedName, attrNode.qualifiedName(), attrNode.value(), NotInSynchronizationOfLazyAttribute);
</del><ins>+            setAttributeInternal(elementData.findAttributeIndexByName(attrNode.qualifiedName()), attrNode.qualifiedName(), attrNode.value(), NotInSynchronizationOfLazyAttribute);
</ins><span class="cx">         }
</span><del>-    } else {
-        unsigned existingAttributeIndexForFullQualifiedName = elementData.findAttributeIndexByName(attrNode.qualifiedName());
-        setAttributeInternal(existingAttributeIndexForFullQualifiedName, attrNode.qualifiedName(), attrNode.value(), NotInSynchronizationOfLazyAttribute);
</del><span class="cx">     }
</span><span class="cx">     if (attrNode.ownerElement() != this) {
</span><span class="cx">         attrNode.attachToElement(this);
</span><span class="lines">@@ -2199,26 +2168,24 @@
</span><span class="cx">         treeScope().adoptIfNeeded(&amp;attrNode);
</span><span class="cx">         ensureAttrNodeListForElement(*this).append(&amp;attrNode);
</span><span class="cx">     }
</span><del>-    return oldAttrNode;
</del><ins>+    return WTFMove(oldAttrNode);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;Attr&gt; Element::setAttributeNodeNS(Attr&amp; attrNode, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;RefPtr&lt;Attr&gt;&gt; Element::setAttributeNodeNS(Attr&amp; attrNode)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;Attr&gt; oldAttrNode = attrIfExists(attrNode.qualifiedName());
</span><span class="cx">     if (oldAttrNode.get() == &amp;attrNode)
</span><del>-        return &amp;attrNode; // This Attr is already attached to the element.
</del><ins>+        return WTFMove(oldAttrNode);
</ins><span class="cx"> 
</span><span class="cx">     // INUSE_ATTRIBUTE_ERR: Raised if node is an Attr that is already an attribute of another Element object.
</span><span class="cx">     // The DOM user must explicitly clone Attr nodes to re-use them in other elements.
</span><del>-    if (attrNode.ownerElement() &amp;&amp; attrNode.ownerElement() != this) {
-        ec = INUSE_ATTRIBUTE_ERR;
-        return nullptr;
-    }
</del><ins>+    if (attrNode.ownerElement() &amp;&amp; attrNode.ownerElement() != this)
+        return Exception { INUSE_ATTRIBUTE_ERR };
</ins><span class="cx"> 
</span><span class="cx">     synchronizeAllAttributes();
</span><del>-    UniqueElementData&amp; elementData = ensureUniqueElementData();
</del><ins>+    auto&amp; elementData = ensureUniqueElementData();
</ins><span class="cx"> 
</span><del>-    unsigned index = elementData.findAttributeIndexByName(attrNode.qualifiedName());
</del><ins>+    auto index = elementData.findAttributeIndexByName(attrNode.qualifiedName());
</ins><span class="cx">     if (index != ElementData::attributeNotFound) {
</span><span class="cx">         if (oldAttrNode)
</span><span class="cx">             detachAttrNodeFromElementWithValue(oldAttrNode.get(), elementData.attributeAt(index).value());
</span><span class="lines">@@ -2232,62 +2199,56 @@
</span><span class="cx">     treeScope().adoptIfNeeded(&amp;attrNode);
</span><span class="cx">     ensureAttrNodeListForElement(*this).append(&amp;attrNode);
</span><span class="cx"> 
</span><del>-    return oldAttrNode;
</del><ins>+    return WTFMove(oldAttrNode);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;Attr&gt; Element::removeAttributeNode(Attr&amp; attr, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Ref&lt;Attr&gt;&gt; Element::removeAttributeNode(Attr&amp; attr)
</ins><span class="cx"> {
</span><del>-    if (attr.ownerElement() != this) {
-        ec = NOT_FOUND_ERR;
-        return nullptr;
-    }
</del><ins>+    if (attr.ownerElement() != this)
+        return Exception { NOT_FOUND_ERR };
</ins><span class="cx"> 
</span><span class="cx">     ASSERT(&amp;document() == &amp;attr.document());
</span><span class="cx"> 
</span><span class="cx">     synchronizeAllAttributes();
</span><span class="cx"> 
</span><del>-    if (!m_elementData) {
-        ec = NOT_FOUND_ERR;
-        return nullptr;
-    }
</del><ins>+    if (!m_elementData)
+        return Exception { NOT_FOUND_ERR };
</ins><span class="cx"> 
</span><del>-    unsigned existingAttributeIndex = m_elementData-&gt;findAttributeIndexByName(attr.qualifiedName());
</del><ins>+    auto existingAttributeIndex = m_elementData-&gt;findAttributeIndexByName(attr.qualifiedName());
+    if (existingAttributeIndex == ElementData::attributeNotFound)
+        return Exception { NOT_FOUND_ERR };
</ins><span class="cx"> 
</span><del>-    if (existingAttributeIndex == ElementData::attributeNotFound) {
-        ec = NOT_FOUND_ERR;
-        return nullptr;
-    }
</del><ins>+    Ref&lt;Attr&gt; oldAttrNode { attr };
</ins><span class="cx"> 
</span><del>-    RefPtr&lt;Attr&gt; attrNode = &amp;attr;
</del><span class="cx">     detachAttrNodeFromElementWithValue(&amp;attr, m_elementData-&gt;attributeAt(existingAttributeIndex).value());
</span><span class="cx">     removeAttributeInternal(existingAttributeIndex, NotInSynchronizationOfLazyAttribute);
</span><del>-    return attrNode;
</del><ins>+
+    return WTFMove(oldAttrNode);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool Element::parseAttributeName(QualifiedName&amp; out, const AtomicString&amp; namespaceURI, const AtomicString&amp; qualifiedName, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;QualifiedName&gt; Element::parseAttributeName(const AtomicString&amp; namespaceURI, const AtomicString&amp; qualifiedName)
</ins><span class="cx"> {
</span><ins>+    ExceptionCode ec = 0;
</ins><span class="cx">     String prefix, localName;
</span><span class="cx">     if (!Document::parseQualifiedName(qualifiedName, prefix, localName, ec))
</span><del>-        return false;
</del><ins>+        return Exception { ec };
</ins><span class="cx">     ASSERT(!ec);
</span><span class="cx"> 
</span><del>-    QualifiedName qName(prefix, localName, namespaceURI);
</del><ins>+    QualifiedName result { prefix, localName, namespaceURI };
</ins><span class="cx"> 
</span><del>-    if (!Document::hasValidNamespaceForAttributes(qName)) {
-        ec = NAMESPACE_ERR;
-        return false;
-    }
</del><ins>+    if (!Document::hasValidNamespaceForAttributes(result))
+        return Exception { NAMESPACE_ERR };
</ins><span class="cx"> 
</span><del>-    out = qName;
-    return true;
</del><ins>+    return WTFMove(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Element::setAttributeNS(const AtomicString&amp; namespaceURI, const AtomicString&amp; qualifiedName, const AtomicString&amp; value, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; Element::setAttributeNS(const AtomicString&amp; namespaceURI, const AtomicString&amp; qualifiedName, const AtomicString&amp; value)
</ins><span class="cx"> {
</span><del>-    QualifiedName parsedName = anyName;
-    if (!parseAttributeName(parsedName, namespaceURI, qualifiedName, ec))
-        return;
-    setAttribute(parsedName, value);
</del><ins>+    auto result = parseAttributeName(namespaceURI, qualifiedName);
+    if (result.hasException())
+        return result.releaseException();
+    setAttribute(result.releaseReturnValue(), value);
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Element::removeAttributeInternal(unsigned index, SynchronizationOfLazyAttribute inSynchronizationOfLazyAttribute)
</span><span class="lines">@@ -2555,17 +2516,14 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Element::mergeWithNextTextNode(Text&amp; node, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; Element::mergeWithNextTextNode(Text&amp; node)
</ins><span class="cx"> {
</span><span class="cx">     auto* next = node.nextSibling();
</span><span class="cx">     if (!is&lt;Text&gt;(next))
</span><del>-        return;
</del><ins>+        return { };
</ins><span class="cx">     Ref&lt;Text&gt; textNext { downcast&lt;Text&gt;(*next) };
</span><del>-
</del><span class="cx">     node.appendData(textNext-&gt;data());
</span><del>-    auto result = textNext-&gt;remove();
-    if (result.hasException())
-        ec = result.releaseException().code();
</del><ins>+    return textNext-&gt;remove();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String Element::innerHTML() const
</span><span class="lines">@@ -2578,39 +2536,45 @@
</span><span class="cx">     return createMarkup(*this);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Element::setOuterHTML(const String&amp; html, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; Element::setOuterHTML(const String&amp; html)
</ins><span class="cx"> {
</span><del>-    Element* p = parentElement();
-    if (!is&lt;HTMLElement&gt;(p)) {
-        ec = NO_MODIFICATION_ALLOWED_ERR;
-        return;
-    }
-    RefPtr&lt;HTMLElement&gt; parent = downcast&lt;HTMLElement&gt;(p);
</del><ins>+    auto* parentElement = this-&gt;parentElement();
+    if (!is&lt;HTMLElement&gt;(parentElement))
+        return Exception { NO_MODIFICATION_ALLOWED_ERR };
+
+    Ref&lt;HTMLElement&gt; parent = downcast&lt;HTMLElement&gt;(*parentElement);
</ins><span class="cx">     RefPtr&lt;Node&gt; prev = previousSibling();
</span><span class="cx">     RefPtr&lt;Node&gt; next = nextSibling();
</span><span class="cx"> 
</span><del>-    auto fragment = createFragmentForInnerOuterHTML(*parent, html, AllowScriptingContent);
-    if (fragment.hasException()) {
-        ec = fragment.releaseException().code();
-        return;
-    }
-    
</del><ins>+    auto fragment = createFragmentForInnerOuterHTML(parent, html, AllowScriptingContent);
+    if (fragment.hasException())
+        return fragment.releaseException();
+
+    ExceptionCode ec = 0;
</ins><span class="cx">     parent-&gt;replaceChild(fragment.releaseReturnValue().get(), *this, ec);
</span><ins>+    if (ec)
+        return Exception { ec };
+
</ins><span class="cx">     RefPtr&lt;Node&gt; node = next ? next-&gt;previousSibling() : nullptr;
</span><del>-    if (!ec &amp;&amp; is&lt;Text&gt;(node.get()))
-        mergeWithNextTextNode(downcast&lt;Text&gt;(*node), ec);
-    if (!ec &amp;&amp; is&lt;Text&gt;(prev.get()))
-        mergeWithNextTextNode(downcast&lt;Text&gt;(*prev), ec);
</del><ins>+    if (is&lt;Text&gt;(node.get())) {
+        auto result = mergeWithNextTextNode(downcast&lt;Text&gt;(*node));
+        if (result.hasException())
+            return result.releaseException();
+    }
+    if (is&lt;Text&gt;(prev.get())) {
+        auto result = mergeWithNextTextNode(downcast&lt;Text&gt;(*prev));
+        if (result.hasException())
+            return result.releaseException();
+    }
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void Element::setInnerHTML(const String&amp; html, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; Element::setInnerHTML(const String&amp; html)
</ins><span class="cx"> {
</span><span class="cx">     auto fragment = createFragmentForInnerOuterHTML(*this, html, AllowScriptingContent);
</span><del>-    if (fragment.hasException()) {
-        ec = fragment.releaseException().code();
-        return;
-    }
</del><ins>+    if (fragment.hasException())
+        return fragment.releaseException();
</ins><span class="cx"> 
</span><span class="cx">     ContainerNode* container;
</span><span class="cx">     if (!is&lt;HTMLTemplateElement&gt;(*this))
</span><span class="lines">@@ -2618,9 +2582,7 @@
</span><span class="cx">     else
</span><span class="cx">         container = &amp;downcast&lt;HTMLTemplateElement&gt;(*this).content();
</span><span class="cx"> 
</span><del>-    auto result = replaceChildrenWithFragment(*container, fragment.releaseReturnValue());
-    if (result.hasException())
-        ec = fragment.releaseException().code();
</del><ins>+    return replaceChildrenWithFragment(*container, fragment.releaseReturnValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String Element::innerText()
</span><span class="lines">@@ -2993,18 +2955,24 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool Element::matches(const String&amp; selector, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;bool&gt; Element::matches(const String&amp; selector)
</ins><span class="cx"> {
</span><del>-    SelectorQuery* selectorQuery = document().selectorQueryForString(selector, ec);
-    return selectorQuery &amp;&amp; selectorQuery-&gt;matches(*this);
</del><ins>+    ExceptionCode ec = 0;
+    auto* query = document().selectorQueryForString(selector, ec);
+    if (ec)
+        return Exception { ec };
+    return query &amp;&amp; query-&gt;matches(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-Element* Element::closest(const String&amp; selector, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Element*&gt; Element::closest(const String&amp; selector)
</ins><span class="cx"> {
</span><del>-    SelectorQuery* selectorQuery = document().selectorQueryForString(selector, ec);
-    if (selectorQuery)
-        return selectorQuery-&gt;closest(*this);
-    return nullptr;
</del><ins>+    ExceptionCode ec = 0;
+    auto* query = document().selectorQueryForString(selector, ec);
+    if (ec)
+        return Exception { ec };
+    if (!query)
+        return nullptr;
+    return query-&gt;closest(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool Element::shouldAppearIndeterminate() const
</span><span class="lines">@@ -3079,6 +3047,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INDIE_UI)
</span><ins>+
</ins><span class="cx"> void Element::setUIActions(const AtomicString&amp; actions)
</span><span class="cx"> {
</span><span class="cx">     setAttribute(uiactionsAttr, actions);
</span><span class="lines">@@ -3088,6 +3057,7 @@
</span><span class="cx"> {
</span><span class="cx">     return getAttribute(uiactionsAttr);
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> bool Element::childShouldCreateRenderer(const Node&amp; child) const
</span><span class="lines">@@ -3683,7 +3653,7 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Node* Element::insertAdjacent(const String&amp; where, Ref&lt;Node&gt;&amp;&amp; newChild, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Node*&gt; Element::insertAdjacent(const String&amp; where, Ref&lt;Node&gt;&amp;&amp; newChild)
</ins><span class="cx"> {
</span><span class="cx">     // In Internet Explorer if the element has no parent and where is &quot;beforeBegin&quot; or &quot;afterEnd&quot;,
</span><span class="cx">     // a document fragment is created and the elements appended in the correct order. This document
</span><span class="lines">@@ -3693,76 +3663,104 @@
</span><span class="cx">     // Opera also appears to disallow such usage.
</span><span class="cx"> 
</span><span class="cx">     if (equalLettersIgnoringASCIICase(where, &quot;beforebegin&quot;)) {
</span><del>-        ContainerNode* parent = this-&gt;parentNode();
-        return (parent &amp;&amp; parent-&gt;insertBefore(newChild, this, ec)) ? newChild.ptr() : nullptr;
</del><ins>+        auto* parent = this-&gt;parentNode();
+        if (!parent)
+            return nullptr;
+        ExceptionCode ec = 0;
+        bool success = parent-&gt;insertBefore(newChild, this, ec);
+        if (ec)
+            return Exception { ec };
+        return success ? newChild.ptr() : nullptr;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (equalLettersIgnoringASCIICase(where, &quot;afterbegin&quot;))
-        return insertBefore(newChild, firstChild(), ec) ? newChild.ptr() : nullptr;
</del><ins>+    if (equalLettersIgnoringASCIICase(where, &quot;afterbegin&quot;)) {
+        ExceptionCode ec = 0;
+        bool success = insertBefore(newChild, firstChild(), ec);
+        if (ec)
+            return Exception { ec };
+        return success ? newChild.ptr() : nullptr;
+    }
</ins><span class="cx"> 
</span><del>-    if (equalLettersIgnoringASCIICase(where, &quot;beforeend&quot;))
-        return appendChild(newChild, ec) ? newChild.ptr() : nullptr;
</del><ins>+    if (equalLettersIgnoringASCIICase(where, &quot;beforeend&quot;)) {
+        ExceptionCode ec = 0;
+        bool success = appendChild(newChild, ec);
+        if (ec)
+            return Exception { ec };
+        return success ? newChild.ptr() : nullptr;
+    }
</ins><span class="cx"> 
</span><span class="cx">     if (equalLettersIgnoringASCIICase(where, &quot;afterend&quot;)) {
</span><del>-        ContainerNode* parent = this-&gt;parentNode();
-        return (parent &amp;&amp; parent-&gt;insertBefore(newChild, nextSibling(), ec)) ? newChild.ptr() : nullptr;
</del><ins>+        auto* parent = this-&gt;parentNode();
+        if (!parent)
+            return nullptr;
+        ExceptionCode ec = 0;
+        bool success = parent-&gt;insertBefore(newChild, nextSibling(), ec);
+        if (ec)
+            return Exception { ec };
+        return success ? newChild.ptr() : nullptr;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ec = SYNTAX_ERR;
-    return nullptr;
</del><ins>+    return Exception { SYNTAX_ERR };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-Element* Element::insertAdjacentElement(const String&amp; where, Element&amp; newChild, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Element*&gt; Element::insertAdjacentElement(const String&amp; where, Element&amp; newChild)
</ins><span class="cx"> {
</span><del>-    Node* returnValue = insertAdjacent(where, newChild, ec);
-    ASSERT_WITH_SECURITY_IMPLICATION(!returnValue || is&lt;Element&gt;(*returnValue));
-    return downcast&lt;Element&gt;(returnValue);
</del><ins>+    auto result = insertAdjacent(where, newChild);
+    if (result.hasException())
+        return result.releaseException();
+    return downcast&lt;Element&gt;(result.releaseReturnValue());
</ins><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 ContainerNode* contextNodeForInsertion(const String&amp; where, Element* element, ExceptionCode&amp; ec)
</del><ins>+static ExceptionOr&lt;ContainerNode*&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><del>-        auto* parent = element-&gt;parentNode();
-        if (!parent || is&lt;Document&gt;(*parent)) {
-            ec = NO_MODIFICATION_ALLOWED_ERR;
-            return nullptr;
-        }
</del><ins>+        auto* parent = element.parentNode();
+        if (!parent || is&lt;Document&gt;(*parent))
+            return Exception { NO_MODIFICATION_ALLOWED_ERR };
</ins><span class="cx">         return parent;
</span><span class="cx">     }
</span><span class="cx">     if (equalLettersIgnoringASCIICase(where, &quot;afterbegin&quot;) || equalLettersIgnoringASCIICase(where, &quot;beforeend&quot;))
</span><del>-        return element;
-    ec =  SYNTAX_ERR;
-    return nullptr;
</del><ins>+        return &amp;element;
+    return Exception { SYNTAX_ERR };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+// Step 2 of https://w3c.github.io/DOM-Parsing/#dom-element-insertadjacenthtml.
+static ExceptionOr&lt;Ref&lt;Element&gt;&gt; contextElementForInsertion(const String&amp; where, Element&amp; element)
+{
+    auto contextNodeResult = contextNodeForInsertion(where, element);
+    if (contextNodeResult.hasException())
+        return contextNodeResult.releaseException();
+    auto&amp; contextNode = *contextNodeResult.releaseReturnValue();
+    if (!is&lt;Element&gt;(contextNode) || (contextNode.document().isHTMLDocument() &amp;&amp; is&lt;HTMLHtmlElement&gt;(contextNode)))
+        return Ref&lt;Element&gt; { HTMLBodyElement::create(contextNode.document()) };
+    return Ref&lt;Element&gt; { downcast&lt;Element&gt;(contextNode) };
+}
+
</ins><span class="cx"> // https://w3c.github.io/DOM-Parsing/#dom-element-insertadjacenthtml
</span><del>-void Element::insertAdjacentHTML(const String&amp; where, const String&amp; markup, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; Element::insertAdjacentHTML(const String&amp; where, const String&amp; markup)
</ins><span class="cx"> {
</span><del>-    // Step 1.
-    auto* contextNode = contextNodeForInsertion(where, this, ec);
-    if (!contextNode)
-        return;
-    RefPtr&lt;Element&gt; contextElement;
-    // Step 2.
-    if (!is&lt;Element&gt;(*contextNode)
-        || (contextNode-&gt;document().isHTMLDocument() &amp;&amp; is&lt;HTMLHtmlElement&gt;(*contextNode))) {
-        contextElement = HTMLBodyElement::create(contextNode-&gt;document());
-    } else
-        contextElement = downcast&lt;Element&gt;(contextNode);
</del><ins>+    // Steps 1 and 2.
+    auto contextElement = contextElementForInsertion(where, *this);
+    if (contextElement.hasException())
+        return contextElement.releaseException();
</ins><span class="cx">     // Step 3.
</span><del>-    auto fragment = createFragmentForInnerOuterHTML(*contextElement, markup, AllowScriptingContent);
-    if (fragment.hasException()) {
-        ec = fragment.releaseException().code();
-        return;
-    }
</del><ins>+    auto fragment = createFragmentForInnerOuterHTML(contextElement.releaseReturnValue(), markup, AllowScriptingContent);
+    if (fragment.hasException())
+        return fragment.releaseException();
</ins><span class="cx">     // Step 4.
</span><del>-    insertAdjacent(where, fragment.releaseReturnValue(), ec);
</del><ins>+    auto result = insertAdjacent(where, fragment.releaseReturnValue());
+    if (result.hasException())
+        return result.releaseException();
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Element::insertAdjacentText(const String&amp; where, const String&amp; text, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; Element::insertAdjacentText(const String&amp; where, const String&amp; text)
</ins><span class="cx"> {
</span><del>-    insertAdjacent(where, document().createTextNode(text), ec);
</del><ins>+    auto result = insertAdjacent(where, document().createTextNode(text));
+    if (result.hasException())
+        return result.releaseException();
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.h (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.h        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebCore/dom/Element.h        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -22,8 +22,7 @@
</span><span class="cx">  *
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef Element_h
-#define Element_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #include &quot;AXTextStateChangeIntent.h&quot;
</span><span class="cx"> #include &quot;Document.h&quot;
</span><span class="lines">@@ -112,9 +111,9 @@
</span><span class="cx">     WEBCORE_EXPORT const AtomicString&amp; getAttribute(const AtomicString&amp; name) const;
</span><span class="cx">     WEBCORE_EXPORT const AtomicString&amp; getAttributeNS(const AtomicString&amp; namespaceURI, const AtomicString&amp; localName) const;
</span><span class="cx"> 
</span><del>-    WEBCORE_EXPORT void setAttribute(const AtomicString&amp; name, const AtomicString&amp; value, ExceptionCode&amp;);
-    static bool parseAttributeName(QualifiedName&amp;, const AtomicString&amp; namespaceURI, const AtomicString&amp; qualifiedName, ExceptionCode&amp;);
-    WEBCORE_EXPORT void setAttributeNS(const AtomicString&amp; namespaceURI, const AtomicString&amp; qualifiedName, const AtomicString&amp; value, ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; setAttribute(const AtomicString&amp; name, const AtomicString&amp; value);
+    static ExceptionOr&lt;QualifiedName&gt; parseAttributeName(const AtomicString&amp; namespaceURI, const AtomicString&amp; qualifiedName);
+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; setAttributeNS(const AtomicString&amp; namespaceURI, const AtomicString&amp; qualifiedName, const AtomicString&amp; value);
</ins><span class="cx"> 
</span><span class="cx">     const AtomicString&amp; getIdAttribute() const;
</span><span class="cx">     void setIdAttribute(const AtomicString&amp;);
</span><span class="lines">@@ -190,9 +189,9 @@
</span><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT RefPtr&lt;Attr&gt; getAttributeNode(const AtomicString&amp; name);
</span><span class="cx">     WEBCORE_EXPORT RefPtr&lt;Attr&gt; getAttributeNodeNS(const AtomicString&amp; namespaceURI, const AtomicString&amp; localName);
</span><del>-    WEBCORE_EXPORT RefPtr&lt;Attr&gt; setAttributeNode(Attr&amp;, ExceptionCode&amp;);
-    WEBCORE_EXPORT RefPtr&lt;Attr&gt; setAttributeNodeNS(Attr&amp;, ExceptionCode&amp;);
-    WEBCORE_EXPORT RefPtr&lt;Attr&gt; removeAttributeNode(Attr&amp;, ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;RefPtr&lt;Attr&gt;&gt; setAttributeNode(Attr&amp;);
+    WEBCORE_EXPORT ExceptionOr&lt;RefPtr&lt;Attr&gt;&gt; setAttributeNodeNS(Attr&amp;);
+    WEBCORE_EXPORT ExceptionOr&lt;Ref&lt;Attr&gt;&gt; removeAttributeNode(Attr&amp;);
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;Attr&gt; attrIfExists(const QualifiedName&amp;);
</span><span class="cx">     RefPtr&lt;Attr&gt; attrIfExists(const AtomicString&amp; localName, bool shouldIgnoreAttributeCase);
</span><span class="lines">@@ -269,15 +268,13 @@
</span><span class="cx">     virtual bool rendererIsNeeded(const RenderStyle&amp;);
</span><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT ShadowRoot* shadowRoot() const;
</span><del>-    WEBCORE_EXPORT ShadowRoot* createShadowRoot(ExceptionCode&amp;);
</del><ins>+    ShadowRoot* shadowRootForBindings(JSC::ExecState&amp;) const;
</ins><span class="cx"> 
</span><span class="cx">     struct ShadowRootInit {
</span><span class="cx">         ShadowRootMode mode;
</span><span class="cx">     };
</span><ins>+    ExceptionOr&lt;Ref&lt;ShadowRoot&gt;&gt; attachShadow(const ShadowRootInit&amp;);
</ins><span class="cx"> 
</span><del>-    ShadowRoot* shadowRootForBindings(JSC::ExecState&amp;) const;
-    RefPtr&lt;ShadowRoot&gt; attachShadow(const ShadowRootInit&amp;, ExceptionCode&amp;);
-
</del><span class="cx">     ShadowRoot* userAgentShadowRoot() const;
</span><span class="cx">     WEBCORE_EXPORT ShadowRoot&amp; ensureUserAgentShadowRoot();
</span><span class="cx"> 
</span><span class="lines">@@ -315,9 +312,9 @@
</span><span class="cx">     WEBCORE_EXPORT void setTabIndex(int);
</span><span class="cx">     virtual Element* focusDelegate();
</span><span class="cx"> 
</span><del>-    WEBCORE_EXPORT Element* insertAdjacentElement(const String&amp; where, Element&amp; newChild, ExceptionCode&amp;);
-    WEBCORE_EXPORT void insertAdjacentHTML(const String&amp; where, const String&amp; html, ExceptionCode&amp;);
-    WEBCORE_EXPORT void insertAdjacentText(const String&amp; where, const String&amp; text, ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;Element*&gt; insertAdjacentElement(const String&amp; where, Element&amp; newChild);
+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; insertAdjacentHTML(const String&amp; where, const String&amp; html);
+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; insertAdjacentText(const String&amp; where, const String&amp; text);
</ins><span class="cx"> 
</span><span class="cx">     bool ieForbidsInsertHTML() const;
</span><span class="cx"> 
</span><span class="lines">@@ -380,8 +377,8 @@
</span><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT String innerHTML() const;
</span><span class="cx">     WEBCORE_EXPORT String outerHTML() const;
</span><del>-    WEBCORE_EXPORT void setInnerHTML(const String&amp;, ExceptionCode&amp;);
-    WEBCORE_EXPORT void setOuterHTML(const String&amp;, ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; setInnerHTML(const String&amp;);
+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; setOuterHTML(const String&amp;);
</ins><span class="cx">     WEBCORE_EXPORT String innerText();
</span><span class="cx">     WEBCORE_EXPORT String outerText();
</span><span class="cx">  
</span><span class="lines">@@ -429,8 +426,8 @@
</span><span class="cx">     virtual bool matchesReadWritePseudoClass() const;
</span><span class="cx">     virtual bool matchesIndeterminatePseudoClass() const;
</span><span class="cx">     virtual bool matchesDefaultPseudoClass() const;
</span><del>-    WEBCORE_EXPORT bool matches(const String&amp; selectors, ExceptionCode&amp;);
-    WEBCORE_EXPORT Element* closest(const String&amp; selectors, ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;bool&gt; matches(const String&amp; selectors);
+    WEBCORE_EXPORT ExceptionOr&lt;Element*&gt; closest(const String&amp; selectors);
</ins><span class="cx">     virtual bool shouldAppearIndeterminate() const;
</span><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT DOMTokenList&amp; classList();
</span><span class="lines">@@ -601,7 +598,7 @@
</span><span class="cx"> 
</span><span class="cx">     void addShadowRoot(Ref&lt;ShadowRoot&gt;&amp;&amp;);
</span><span class="cx"> 
</span><del>-    static void mergeWithNextTextNode(Text&amp; node, ExceptionCode&amp;);
</del><ins>+    static ExceptionOr&lt;void&gt; mergeWithNextTextNode(Text&amp;);
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     bool isTextNode() const;
</span><span class="lines">@@ -639,7 +636,7 @@
</span><span class="cx">     void updateIdForDocument(HTMLDocument&amp;, const AtomicString&amp; oldId, const AtomicString&amp; newId, HTMLDocumentNamedItemMapsUpdatingCondition);
</span><span class="cx">     void updateLabel(TreeScope&amp;, const AtomicString&amp; oldForAttributeValue, const AtomicString&amp; newForAttributeValue);
</span><span class="cx"> 
</span><del>-    Node* insertAdjacent(const String&amp; where, Ref&lt;Node&gt;&amp;&amp; newChild, ExceptionCode&amp;);
</del><ins>+    ExceptionOr&lt;Node*&gt; insertAdjacent(const String&amp; where, Ref&lt;Node&gt;&amp;&amp; newChild);
</ins><span class="cx"> 
</span><span class="cx">     void scrollByUnits(int units, ScrollGranularity);
</span><span class="cx"> 
</span><span class="lines">@@ -838,5 +835,3 @@
</span><span class="cx"> SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::Element)
</span><span class="cx">     static bool isType(const WebCore::Node&amp; node) { return node.isElementNode(); }
</span><span class="cx"> SPECIALIZE_TYPE_TRAITS_END()
</span><del>-
-#endif
</del></span></pre></div>
<a id="trunkSourceWebCoredomElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.idl (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.idl        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebCore/dom/Element.idl        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -28,13 +28,13 @@
</span><span class="cx"> 
</span><span class="cx">     DOMString? getAttribute(DOMString name);
</span><span class="cx"> 
</span><del>-    [CEReactions, MayThrowLegacyException] void setAttribute(DOMString name, DOMString value);
</del><ins>+    [CEReactions, MayThrowException] void setAttribute(DOMString name, DOMString value);
</ins><span class="cx"> 
</span><span class="cx">     [CEReactions] void removeAttribute(DOMString name);
</span><span class="cx">     Attr? getAttributeNode(DOMString name);
</span><span class="cx"> 
</span><del>-    [CEReactions, MayThrowLegacyException] Attr? setAttributeNode(Attr newAttr);
-    [CEReactions, MayThrowLegacyException] Attr removeAttributeNode(Attr oldAttr);
</del><ins>+    [CEReactions, MayThrowException] Attr? setAttributeNode(Attr newAttr);
+    [CEReactions, MayThrowException] Attr removeAttributeNode(Attr oldAttr);
</ins><span class="cx"> 
</span><span class="cx">     HTMLCollection getElementsByTagName(DOMString name);
</span><span class="cx"> 
</span><span class="lines">@@ -43,13 +43,13 @@
</span><span class="cx"> 
</span><span class="cx">     DOMString? getAttributeNS(DOMString? namespaceURI, DOMString localName);
</span><span class="cx"> 
</span><del>-    [CEReactions, MayThrowLegacyException] void setAttributeNS(DOMString? namespaceURI, DOMString qualifiedName, DOMString value);
</del><ins>+    [CEReactions, MayThrowException] void setAttributeNS(DOMString? namespaceURI, DOMString qualifiedName, DOMString value);
</ins><span class="cx">     [CEReactions] void removeAttributeNS(DOMString? namespaceURI, DOMString localName);
</span><span class="cx"> 
</span><span class="cx">     HTMLCollection getElementsByTagNameNS(DOMString? namespaceURI, DOMString localName);
</span><span class="cx"> 
</span><span class="cx">     Attr? getAttributeNodeNS(DOMString? namespaceURI, DOMString localName);
</span><del>-    [CEReactions, MayThrowLegacyException] Attr? setAttributeNodeNS(Attr newAttr);
</del><ins>+    [CEReactions, MayThrowException] Attr? setAttributeNodeNS(Attr newAttr);
</ins><span class="cx">     boolean hasAttribute(DOMString name);
</span><span class="cx"> 
</span><span class="cx">     boolean hasAttributeNS(DOMString? namespaceURI, DOMString localName);
</span><span class="lines">@@ -97,15 +97,15 @@
</span><span class="cx">     sequence&lt;DOMString&gt; getAttributeNames();
</span><span class="cx"> 
</span><span class="cx">     HTMLCollection getElementsByClassName(DOMString name);
</span><del>-    [CEReactions, TreatNullAs=EmptyString, SetterMayThrowLegacyException] attribute DOMString innerHTML;
-    [CEReactions, TreatNullAs=EmptyString, SetterMayThrowLegacyException] attribute DOMString outerHTML;
</del><ins>+    [CEReactions, TreatNullAs=EmptyString, SetterMayThrowException] attribute DOMString innerHTML;
+    [CEReactions, TreatNullAs=EmptyString, SetterMayThrowException] attribute DOMString outerHTML;
</ins><span class="cx"> 
</span><span class="cx">     [CEReactions, Reflect=class] attribute DOMString className;
</span><span class="cx">     [PutForwards=value] readonly attribute DOMTokenList classList;
</span><span class="cx"> 
</span><del>-    [MayThrowLegacyException] boolean matches(DOMString selectors);
-    [MayThrowLegacyException] Element closest(DOMString selectors);    
-    [ImplementedAs=matches, MayThrowLegacyException] boolean webkitMatchesSelector(DOMString selectors);
</del><ins>+    [MayThrowException] boolean matches(DOMString selectors);
+    [MayThrowException] Element closest(DOMString selectors);
+    [ImplementedAs=matches, MayThrowException] boolean webkitMatchesSelector(DOMString selectors);
</ins><span class="cx"> 
</span><span class="cx">     // CSSOM View Module API
</span><span class="cx">     ClientRectList getClientRects();
</span><span class="lines">@@ -124,9 +124,9 @@
</span><span class="cx">     [CEReactions, Reflect] attribute DOMString uiactions;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    [CEReactions, MayThrowLegacyException] Element insertAdjacentElement(DOMString where, Element element);
-    [CEReactions, MayThrowLegacyException] void insertAdjacentHTML(DOMString where, DOMString html);
-    [MayThrowLegacyException] void insertAdjacentText(DOMString where, DOMString text);
</del><ins>+    [CEReactions, MayThrowException] Element insertAdjacentElement(DOMString where, Element element);
+    [CEReactions, MayThrowException] void insertAdjacentHTML(DOMString where, DOMString html);
+    [MayThrowException] void insertAdjacentText(DOMString where, DOMString text);
</ins><span class="cx"> 
</span><span class="cx">     [Conditional=POINTER_LOCK] void requestPointerLock();
</span><span class="cx"> 
</span><span class="lines">@@ -135,7 +135,7 @@
</span><span class="cx">     [Conditional=CSS_REGIONS] sequence&lt;Range&gt; webkitGetRegionFlowRanges();
</span><span class="cx"> 
</span><span class="cx">     // Shadow DOM API
</span><del>-    [EnabledAtRuntime=ShadowDOM, MayThrowLegacyException] ShadowRoot attachShadow(ShadowRootInit init);
</del><ins>+    [EnabledAtRuntime=ShadowDOM, MayThrowException] ShadowRoot attachShadow(ShadowRootInit init);
</ins><span class="cx">     [EnabledAtRuntime=ShadowDOM, ImplementedAs=shadowRootForBindings, CallWith=ScriptState] readonly attribute ShadowRoot shadowRoot;
</span><span class="cx">     [CEReactions, EnabledAtRuntime=ShadowDOM, Reflect] attribute DOMString slot;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomNamedNodeMapcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/NamedNodeMap.cpp (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/NamedNodeMap.cpp        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebCore/dom/NamedNodeMap.cpp        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -26,7 +26,6 @@
</span><span class="cx"> #include &quot;NamedNodeMap.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;Attr.h&quot;
</span><del>-#include &quot;Element.h&quot;
</del><span class="cx"> #include &quot;ExceptionCode.h&quot;
</span><span class="cx"> #include &quot;HTMLDocument.h&quot;
</span><span class="cx"> #include &quot;HTMLElement.h&quot;
</span><span class="lines">@@ -55,55 +54,50 @@
</span><span class="cx">     return m_element.getAttributeNodeNS(namespaceURI, localName);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;Attr&gt; NamedNodeMap::removeNamedItem(const AtomicString&amp; name, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Ref&lt;Attr&gt;&gt; NamedNodeMap::removeNamedItem(const AtomicString&amp; name)
</ins><span class="cx"> {
</span><del>-    unsigned index = m_element.hasAttributes() ? m_element.findAttributeIndexByName(name, shouldIgnoreAttributeCase(m_element)) : ElementData::attributeNotFound;
-    if (index == ElementData::attributeNotFound) {
-        ec = NOT_FOUND_ERR;
-        return nullptr;
-    }
</del><ins>+    if (!m_element.hasAttributes())
+        return Exception { NOT_FOUND_ERR };
+    auto index = m_element.findAttributeIndexByName(name, shouldIgnoreAttributeCase(m_element));
+    if (index == ElementData::attributeNotFound)
+        return Exception { NOT_FOUND_ERR };
</ins><span class="cx">     return m_element.detachAttribute(index);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Vector&lt;String&gt; NamedNodeMap::supportedPropertyNames()
</del><ins>+Vector&lt;String&gt; NamedNodeMap::supportedPropertyNames() const
</ins><span class="cx"> {
</span><span class="cx">     Vector&lt;String&gt; names = m_element.getAttributeNames();
</span><span class="cx">     if (is&lt;HTMLElement&gt;(m_element) &amp;&amp; is&lt;HTMLDocument&gt;(m_element.document())) {
</span><span class="cx">         names.removeAllMatching([](String&amp; name) {
</span><del>-            return name.convertToASCIILowercase() != name;
</del><ins>+            for (auto character : StringView { name }.codeUnits()) {
+                if (isASCIIUpper(character))
+                    return true;
+            }
+            return false;
</ins><span class="cx">         });
</span><span class="cx">     }
</span><span class="cx">     return names;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;Attr&gt; NamedNodeMap::removeNamedItemNS(const AtomicString&amp; namespaceURI, const AtomicString&amp; localName, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Ref&lt;Attr&gt;&gt; NamedNodeMap::removeNamedItemNS(const AtomicString&amp; namespaceURI, const AtomicString&amp; localName)
</ins><span class="cx"> {
</span><del>-    unsigned index = m_element.hasAttributes() ? m_element.findAttributeIndexByName(QualifiedName(nullAtom, localName, namespaceURI)) : ElementData::attributeNotFound;
-    if (index == ElementData::attributeNotFound) {
-        ec = NOT_FOUND_ERR;
-        return nullptr;
-    }
</del><ins>+    if (!m_element.hasAttributes())
+        return Exception { NOT_FOUND_ERR };
+    auto index = m_element.findAttributeIndexByName(QualifiedName { nullAtom, localName, namespaceURI });
+    if (index == ElementData::attributeNotFound)
+        return Exception { NOT_FOUND_ERR };
</ins><span class="cx">     return m_element.detachAttribute(index);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;Attr&gt; NamedNodeMap::setNamedItem(Attr&amp; attr, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;RefPtr&lt;Attr&gt;&gt; NamedNodeMap::setNamedItem(Attr&amp; attr)
</ins><span class="cx"> {
</span><del>-    return m_element.setAttributeNode(attr, ec);
</del><ins>+    return m_element.setAttributeNode(attr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;Attr&gt; NamedNodeMap::setNamedItem(Node&amp; node, ExceptionCode&amp; ec)
-{
-    if (!is&lt;Attr&gt;(node)) {
-        ec = TypeError;
-        return nullptr;
-    }
-    return setNamedItem(downcast&lt;Attr&gt;(node), ec);
-}
-
</del><span class="cx"> RefPtr&lt;Attr&gt; NamedNodeMap::item(unsigned index) const
</span><span class="cx"> {
</span><span class="cx">     if (index &gt;= length())
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx">     return m_element.ensureAttr(m_element.attributeAt(index).name());
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomNamedNodeMaph"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/NamedNodeMap.h (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/NamedNodeMap.h        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebCore/dom/NamedNodeMap.h        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -24,40 +24,37 @@
</span><span class="cx"> 
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><del>-#include &quot;Attr.h&quot;
</del><ins>+#include &quot;ExceptionOr.h&quot;
+#include &quot;ScriptWrappable.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><ins>+class Attr;
+class Element;
+
</ins><span class="cx"> class NamedNodeMap : public ScriptWrappable {
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><del>-    friend class Element;
</del><span class="cx"> public:
</span><span class="cx">     explicit NamedNodeMap(Element&amp; element)
</span><span class="cx">         : m_element(element)
</span><span class="cx">     {
</span><del>-        // Only supports NamedNodeMaps with Element associated, DocumentType.entities and DocumentType.notations are not supported yet.
</del><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT void ref();
</span><span class="cx">     WEBCORE_EXPORT void deref();
</span><span class="cx"> 
</span><del>-    // Public DOM interface.
-
</del><ins>+    WEBCORE_EXPORT unsigned length() const;
+    WEBCORE_EXPORT RefPtr&lt;Attr&gt; item(unsigned index) const;
</ins><span class="cx">     WEBCORE_EXPORT RefPtr&lt;Attr&gt; getNamedItem(const AtomicString&amp;) const;
</span><del>-    WEBCORE_EXPORT RefPtr&lt;Attr&gt; removeNamedItem(const AtomicString&amp; name, ExceptionCode&amp;);
-    Vector&lt;String&gt; supportedPropertyNames();
-
</del><span class="cx">     WEBCORE_EXPORT RefPtr&lt;Attr&gt; getNamedItemNS(const AtomicString&amp; namespaceURI, const AtomicString&amp; localName) const;
</span><del>-    WEBCORE_EXPORT RefPtr&lt;Attr&gt; removeNamedItemNS(const AtomicString&amp; namespaceURI, const AtomicString&amp; localName, ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;RefPtr&lt;Attr&gt;&gt; setNamedItem(Attr&amp;);
+    WEBCORE_EXPORT ExceptionOr&lt;Ref&lt;Attr&gt;&gt; removeNamedItem(const AtomicString&amp; name);
+    WEBCORE_EXPORT ExceptionOr&lt;Ref&lt;Attr&gt;&gt; removeNamedItemNS(const AtomicString&amp; namespaceURI, const AtomicString&amp; localName);
</ins><span class="cx"> 
</span><del>-    RefPtr&lt;Attr&gt; setNamedItem(Attr&amp;, ExceptionCode&amp;);
-    WEBCORE_EXPORT RefPtr&lt;Attr&gt; setNamedItem(Node&amp;, ExceptionCode&amp;); // for legacy bindings.
</del><ins>+    Vector&lt;String&gt; supportedPropertyNames() const;
</ins><span class="cx"> 
</span><del>-    WEBCORE_EXPORT RefPtr&lt;Attr&gt; item(unsigned index) const;
-    WEBCORE_EXPORT unsigned length() const;
</del><ins>+    Element&amp; element() { return m_element; }
</ins><span class="cx"> 
</span><del>-    Element&amp; element() const { return m_element; }
-
</del><span class="cx"> private:
</span><span class="cx">     Element&amp; m_element;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoredomNamedNodeMapidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/NamedNodeMap.idl (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/NamedNodeMap.idl        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebCore/dom/NamedNodeMap.idl        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -24,12 +24,11 @@
</span><span class="cx">     ImplementationLacksVTable,
</span><span class="cx"> ] interface NamedNodeMap {
</span><span class="cx">     readonly attribute unsigned long length;
</span><del>-
</del><ins>+    getter Attr? item(unsigned long index);
</ins><span class="cx">     getter Attr? getNamedItem(DOMString name);
</span><del>-    [CEReactions, MayThrowLegacyException] Attr? setNamedItem(Attr attr);
-    [CEReactions, MayThrowLegacyException] Attr removeNamedItem(DOMString name);
-    getter Attr? item(unsigned long index);
</del><span class="cx">     Attr? getNamedItemNS(DOMString? namespaceURI, DOMString localName);
</span><del>-    [CEReactions, MayThrowLegacyException, ImplementedAs=setNamedItem] Attr? setNamedItemNS(Attr attr);
-    [CEReactions, MayThrowLegacyException] Attr removeNamedItemNS(DOMString? namespaceURI, DOMString localName);
</del><ins>+    [CEReactions, MayThrowException] Attr? setNamedItem(Attr attr);
+    [CEReactions, MayThrowException, ImplementedAs=setNamedItem] Attr? setNamedItemNS(Attr attr);
+    [CEReactions, MayThrowException] Attr removeNamedItem(DOMString name);
+    [CEReactions, MayThrowException] Attr removeNamedItemNS(DOMString? namespaceURI, DOMString localName);
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLElement.cpp (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLElement.cpp        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebCore/html/HTMLElement.cpp        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -584,16 +584,14 @@
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;Node&gt; node = next ? next-&gt;previousSibling() : nullptr;
</span><span class="cx">     if (is&lt;Text&gt;(node.get())) {
</span><del>-        ExceptionCode ec = 0;
-        mergeWithNextTextNode(downcast&lt;Text&gt;(*node), ec);
-        if (ec)
-            return Exception { ec };
</del><ins>+        auto result = mergeWithNextTextNode(downcast&lt;Text&gt;(*node));
+        if (result.hasException())
+            return result.releaseException();
</ins><span class="cx">     }
</span><span class="cx">     if (is&lt;Text&gt;(prev.get())) {
</span><del>-        ExceptionCode ec = 0;
-        mergeWithNextTextNode(downcast&lt;Text&gt;(*prev), ec);
-        if (ec)
-            return Exception { ec };
</del><ins>+        auto result = mergeWithNextTextNode(downcast&lt;Text&gt;(*prev));
+        if (result.hasException())
+            return result.releaseException();
</ins><span class="cx">     }
</span><span class="cx">     return { };
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorDOMEditorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/DOMEditor.cpp (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/DOMEditor.cpp        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebCore/inspector/DOMEditor.cpp        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -138,7 +138,9 @@
</span><span class="cx"> 
</span><span class="cx">     bool undo(ExceptionCode&amp; ec) override
</span><span class="cx">     {
</span><del>-        m_element-&gt;setAttribute(m_name, m_value, ec);
</del><ins>+        auto result = m_element-&gt;setAttribute(m_name, m_value);
+        if (result.hasException())
+            ec = result.releaseException().code();
</ins><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -176,9 +178,11 @@
</span><span class="cx"> 
</span><span class="cx">     bool undo(ExceptionCode&amp; ec) override
</span><span class="cx">     {
</span><del>-        if (m_hadAttribute)
-            m_element-&gt;setAttribute(m_name, m_oldValue, ec);
-        else
</del><ins>+        if (m_hadAttribute) {
+            auto result = m_element-&gt;setAttribute(m_name, m_oldValue);
+            if (result.hasException())
+                ec = result.releaseException().code();
+        } else
</ins><span class="cx">             m_element-&gt;removeAttribute(m_name);
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="lines">@@ -185,7 +189,9 @@
</span><span class="cx"> 
</span><span class="cx">     bool redo(ExceptionCode&amp; ec) override
</span><span class="cx">     {
</span><del>-        m_element-&gt;setAttribute(m_name, m_value, ec);
</del><ins>+        auto result = m_element-&gt;setAttribute(m_name, m_value);
+        if (result.hasException())
+            ec = result.releaseException().code();
</ins><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorDOMAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -198,7 +198,7 @@
</span><span class="cx">     m_elements.clear();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String InspectorDOMAgent::toErrorString(const ExceptionCode&amp; ec)
</del><ins>+String InspectorDOMAgent::toErrorString(ExceptionCode ec)
</ins><span class="cx"> {
</span><span class="cx">     if (ec) {
</span><span class="cx">         ExceptionCodeDescription description(ec);
</span><span class="lines">@@ -207,6 +207,11 @@
</span><span class="cx">     return emptyString();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+String InspectorDOMAgent::toErrorString(Exception&amp;&amp; exception)
+{
+    return ExceptionCodeDescription { exception.code() }.name;
+}
+
</ins><span class="cx"> InspectorDOMAgent::InspectorDOMAgent(WebAgentContext&amp; context, InspectorPageAgent* pageAgent, InspectorOverlay* overlay)
</span><span class="cx">     : InspectorAgentBase(ASCIILiteral(&quot;DOM&quot;), context)
</span><span class="cx">     , m_injectedScriptManager(context.injectedScriptManager)
</span><span class="lines">@@ -660,11 +665,10 @@
</span><span class="cx">     if (!element)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    RefPtr&lt;HTMLElement&gt; parsedElement = createHTMLElement(element-&gt;document(), spanTag);
-    ExceptionCode ec = 0;
-    parsedElement.get()-&gt;setInnerHTML(&quot;&lt;span &quot; + text + &quot;&gt;&lt;/span&gt;&quot;, ec);
-    if (ec) {
-        errorString = toErrorString(ec);
</del><ins>+    auto parsedElement = createHTMLElement(element-&gt;document(), spanTag);
+    auto result = parsedElement.get().setInnerHTML(&quot;&lt;span &quot; + text + &quot;&gt;&lt;/span&gt;&quot;);
+    if (result.hasException()) {
+        errorString = toErrorString(result.releaseException());
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorDOMAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorDOMAgent.h (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorDOMAgent.h        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebCore/inspector/InspectorDOMAgent.h        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -60,6 +60,7 @@
</span><span class="cx"> class Document;
</span><span class="cx"> class Element;
</span><span class="cx"> class Event;
</span><ins>+class Exception;
</ins><span class="cx"> class FloatQuad;
</span><span class="cx"> class Frame;
</span><span class="cx"> class InspectorHistory;
</span><span class="lines">@@ -107,7 +108,8 @@
</span><span class="cx">     InspectorDOMAgent(WebAgentContext&amp;, InspectorPageAgent*, InspectorOverlay*);
</span><span class="cx">     virtual ~InspectorDOMAgent();
</span><span class="cx"> 
</span><del>-    static String toErrorString(const ExceptionCode&amp;);
</del><ins>+    static String toErrorString(ExceptionCode);
+    static String toErrorString(Exception&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx">     void didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*) override;
</span><span class="cx">     void willDestroyFrontendAndBackend(Inspector::DisconnectReason) override;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorStyleSheetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -1301,13 +1301,15 @@
</span><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         InspectorCSSAgent::InlineStyleOverrideScope overrideScope(m_element-&gt;document());
</span><del>-        m_element-&gt;setAttribute(&quot;style&quot;, text, ec);
</del><ins>+        m_element-&gt;setAttribute(HTMLNames::styleAttr, text);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     m_styleText = text;
</span><span class="cx">     m_isStyleTextValid = true;
</span><span class="cx">     m_ruleSourceData = nullptr;
</span><del>-    return !ec;
</del><ins>+
+    ec = 0;
+    return true;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> std::unique_ptr&lt;Vector&lt;size_t&gt;&gt; InspectorStyleSheetForInlineStyle::lineEndings() const
</span></span></pre></div>
<a id="trunkSourceWebCoretestingInternalscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/Internals.cpp (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/Internals.cpp        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebCore/testing/Internals.cpp        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -780,32 +780,11 @@
</span><span class="cx">     return CSSComputedStyleDeclaration::create(element, allowVisitedStyle);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ExceptionOr&lt;Node*&gt; Internals::ensureShadowRoot(Element&amp; host)
-{
-    if (ShadowRoot* shadowRoot = host.shadowRoot())
-        return shadowRoot;
-
-    ExceptionCode ec = 0;
-    auto result = host.createShadowRoot(ec);
-    if (ec)
-        return Exception { ec };
-    return result;
-}
-
</del><span class="cx"> Node* Internals::ensureUserAgentShadowRoot(Element&amp; host)
</span><span class="cx"> {
</span><span class="cx">     return &amp;host.ensureUserAgentShadowRoot();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ExceptionOr&lt;Node*&gt; Internals::createShadowRoot(Element&amp; host)
-{
-    ExceptionCode ec = 0;
-    auto result = host.createShadowRoot(ec);
-    if (ec)
-        return Exception { ec };
-    return result;
-}
-
</del><span class="cx"> Node* Internals::shadowRoot(Element&amp; host)
</span><span class="cx"> {
</span><span class="cx">     return host.shadowRoot();
</span></span></pre></div>
<a id="trunkSourceWebCoretestingInternalsidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/Internals.idl (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/Internals.idl        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebCore/testing/Internals.idl        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -100,9 +100,7 @@
</span><span class="cx"> 
</span><span class="cx">     CSSStyleDeclaration computedStyleIncludingVisitedInfo(Element element);
</span><span class="cx"> 
</span><del>-    [MayThrowException] Node ensureShadowRoot(Element host);
</del><span class="cx">     Node ensureUserAgentShadowRoot(Element host);
</span><del>-    [MayThrowException] Node createShadowRoot(Element host);
</del><span class="cx">     Node shadowRoot(Element host);
</span><span class="cx"> 
</span><span class="cx">     [MayThrowException] DOMString shadowRootType(Node root);
</span></span></pre></div>
<a id="trunkSourceWebCorexmlparserXMLDocumentParserLibxml2cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -739,11 +739,13 @@
</span><span class="cx">         if (namespaces[i].prefix)
</span><span class="cx">             namespaceQName = &quot;xmlns:&quot; + toString(namespaces[i].prefix);
</span><span class="cx"> 
</span><del>-        QualifiedName parsedName = anyName;
-        if (!Element::parseAttributeName(parsedName, XMLNSNames::xmlnsNamespaceURI, namespaceQName, ec))
</del><ins>+        auto result = Element::parseAttributeName(XMLNSNames::xmlnsNamespaceURI, namespaceQName);
+        if (result.hasException()) {
+            ec = result.releaseException().code();
</ins><span class="cx">             return;
</span><del>-        
-        prefixedAttributes.append(Attribute(parsedName, namespaceURI));
</del><ins>+        }
+
+        prefixedAttributes.append(Attribute(result.releaseReturnValue(), namespaceURI));
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -766,11 +768,13 @@
</span><span class="cx">         AtomicString attrURI = attrPrefix.isEmpty() ? nullAtom : toAtomicString(attributes[i].uri);
</span><span class="cx">         AtomicString attrQName = attrPrefix.isEmpty() ? toAtomicString(attributes[i].localname) : attrPrefix + &quot;:&quot; + toString(attributes[i].localname);
</span><span class="cx"> 
</span><del>-        QualifiedName parsedName = anyName;
-        if (!Element::parseAttributeName(parsedName, attrURI, attrQName, ec))
</del><ins>+        auto result = Element::parseAttributeName(attrURI, attrQName);
+        if (result.hasException()) {
+            ec = result.releaseException().code();
</ins><span class="cx">             return;
</span><ins>+        }
</ins><span class="cx"> 
</span><del>-        prefixedAttributes.append(Attribute(parsedName, attrValue));
</del><ins>+        prefixedAttributes.append(Attribute(result.releaseReturnValue(), attrValue));
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/ChangeLog (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebKit/mac/ChangeLog        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -1,3 +1,31 @@
</span><ins>+2016-10-30  Darin Adler  &lt;darin@apple.com&gt;
+
+        Move Element, NamedNodeMap, and DOMStringMap from ExceptionCode to Exception
+        https://bugs.webkit.org/show_bug.cgi?id=164206
+
+        Reviewed by Chris Dumez.
+
+        * DOM/DOMElement.mm:
+        (-[DOMElement setInnerHTML:]): Updated exception handling.
+        (-[DOMElement setOuterHTML:]): Ditto.
+        (-[DOMElement setAttribute:value:]): Ditto.
+        (-[DOMElement setAttributeNode:]): Ditto.
+        (-[DOMElement removeAttributeNode:]): Ditto.
+        (-[DOMElement setAttributeNS:qualifiedName:value:]): Ditto.
+        (-[DOMElement setAttributeNodeNS:]): Ditto.
+        (-[DOMElement matches:]): Ditto.
+        (-[DOMElement closest:]): Ditto.
+        (-[DOMElement webkitMatchesSelector:]): Ditto.
+        * DOM/DOMHTMLElement.mm:
+        (-[DOMHTMLElement insertAdjacentElement:element:]): Ditto.
+        (-[DOMHTMLElement insertAdjacentHTML:html:]): Ditto.
+        (-[DOMHTMLElement insertAdjacentText:text:]): Ditto.
+        * DOM/DOMNamedNodeMap.mm:
+        (-[DOMNamedNodeMap setNamedItem:]): Ditto.
+        (-[DOMNamedNodeMap removeNamedItem:]): Ditto.
+        (-[DOMNamedNodeMap setNamedItemNS:]): Ditto.
+        (-[DOMNamedNodeMap removeNamedItemNS:localName:]): Ditto.
+
</ins><span class="cx"> 2016-10-29  Darin Adler  &lt;darin@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Convert more of DOM from ExceptionCode to Exception
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMElementmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMElement.mm (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMElement.mm        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebKit/mac/DOM/DOMElement.mm        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -177,9 +177,7 @@
</span><span class="cx"> - (void)setInnerHTML:(NSString *)newInnerHTML
</span><span class="cx"> {
</span><span class="cx">     JSMainThreadNullState state;
</span><del>-    ExceptionCode ec = 0;
-    unwrap(*self).setInnerHTML(newInnerHTML, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(unwrap(*self).setInnerHTML(newInnerHTML));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (NSString *)outerHTML
</span><span class="lines">@@ -191,9 +189,7 @@
</span><span class="cx"> - (void)setOuterHTML:(NSString *)newOuterHTML
</span><span class="cx"> {
</span><span class="cx">     JSMainThreadNullState state;
</span><del>-    ExceptionCode ec = 0;
-    unwrap(*self).setOuterHTML(newOuterHTML, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(unwrap(*self).setOuterHTML(newOuterHTML));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (NSString *)className
</span><span class="lines">@@ -285,9 +281,7 @@
</span><span class="cx"> - (void)setAttribute:(NSString *)name value:(NSString *)value
</span><span class="cx"> {
</span><span class="cx">     JSMainThreadNullState state;
</span><del>-    ExceptionCode ec = 0;
-    unwrap(*self).setAttribute(name, value, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(unwrap(*self).setAttribute(name, value));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)removeAttribute:(NSString *)name
</span><span class="lines">@@ -307,10 +301,7 @@
</span><span class="cx">     JSMainThreadNullState state;
</span><span class="cx">     if (!newAttr)
</span><span class="cx">         raiseTypeErrorException();
</span><del>-    ExceptionCode ec = 0;
-    DOMAttr *result = kit(unwrap(*self).setAttributeNode(*core(newAttr), ec).get());
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return kit(raiseOnDOMError(unwrap(*self).setAttributeNode(*core(newAttr))).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMAttr *)removeAttributeNode:(DOMAttr *)oldAttr
</span><span class="lines">@@ -318,10 +309,7 @@
</span><span class="cx">     JSMainThreadNullState state;
</span><span class="cx">     if (!oldAttr)
</span><span class="cx">         raiseTypeErrorException();
</span><del>-    ExceptionCode ec = 0;
-    DOMAttr *result = kit(unwrap(*self).removeAttributeNode(*core(oldAttr), ec).get());
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return kit(raiseOnDOMError(unwrap(*self).removeAttributeNode(*core(oldAttr))).ptr());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMNodeList *)getElementsByTagName:(NSString *)name
</span><span class="lines">@@ -343,9 +331,7 @@
</span><span class="cx"> - (void)setAttributeNS:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName value:(NSString *)value
</span><span class="cx"> {
</span><span class="cx">     JSMainThreadNullState state;
</span><del>-    ExceptionCode ec = 0;
-    unwrap(*self).setAttributeNS(namespaceURI, qualifiedName, value, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(unwrap(*self).setAttributeNS(namespaceURI, qualifiedName, value));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)removeAttributeNS:(NSString *)namespaceURI localName:(NSString *)localName
</span><span class="lines">@@ -375,10 +361,7 @@
</span><span class="cx">     JSMainThreadNullState state;
</span><span class="cx">     if (!newAttr)
</span><span class="cx">         raiseTypeErrorException();
</span><del>-    ExceptionCode ec = 0;
-    DOMAttr *result = kit(unwrap(*self).setAttributeNodeNS(*core(newAttr), ec).get());
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return kit(raiseOnDOMError(unwrap(*self).setAttributeNodeNS(*core(newAttr))).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (BOOL)hasAttribute:(NSString *)name
</span><span class="lines">@@ -439,28 +422,19 @@
</span><span class="cx"> - (BOOL)matches:(NSString *)selectors
</span><span class="cx"> {
</span><span class="cx">     JSMainThreadNullState state;
</span><del>-    ExceptionCode ec = 0;
-    BOOL result = unwrap(*self).matches(selectors, ec);
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return raiseOnDOMError(unwrap(*self).matches(selectors));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMElement *)closest:(NSString *)selectors
</span><span class="cx"> {
</span><span class="cx">     JSMainThreadNullState state;
</span><del>-    ExceptionCode ec = 0;
-    DOMElement *result = kit(unwrap(*self).closest(selectors, ec));
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return kit(raiseOnDOMError(unwrap(*self).closest(selectors)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (BOOL)webkitMatchesSelector:(NSString *)selectors
</span><span class="cx"> {
</span><span class="cx">     JSMainThreadNullState state;
</span><del>-    ExceptionCode ec = 0;
-    BOOL result = unwrap(*self).matches(selectors, ec);
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return raiseOnDOMError(unwrap(*self).matches(selectors));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(FULLSCREEN_API)
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMHTMLElementmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMHTMLElement.mm (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMHTMLElement.mm        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebKit/mac/DOM/DOMHTMLElement.mm        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -235,26 +235,19 @@
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="cx">     if (!element)
</span><span class="cx">         raiseTypeErrorException();
</span><del>-    WebCore::ExceptionCode ec = 0;
-    DOMElement *result = kit(WTF::getPtr(IMPL-&gt;insertAdjacentElement(where, *core(element), ec)));
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return kit(raiseOnDOMError(IMPL-&gt;insertAdjacentElement(where, *core(element))));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)insertAdjacentHTML:(NSString *)where html:(NSString *)html
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    IMPL-&gt;insertAdjacentHTML(where, html, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(IMPL-&gt;insertAdjacentHTML(where, html));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)insertAdjacentText:(NSString *)where text:(NSString *)text
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    IMPL-&gt;insertAdjacentText(where, text, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(IMPL-&gt;insertAdjacentText(where, text));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)click
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMNamedNodeMapmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMNamedNodeMap.mm (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMNamedNodeMap.mm        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebKit/mac/DOM/DOMNamedNodeMap.mm        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -68,19 +68,16 @@
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="cx">     if (!node)
</span><span class="cx">         raiseTypeErrorException();
</span><del>-    WebCore::ExceptionCode ec = 0;
-    DOMNode *result = kit(WTF::getPtr(IMPL-&gt;setNamedItem(*core(node), ec)));
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    auto&amp; coreNode = *core(node);
+    if (!is&lt;WebCore::Attr&gt;(coreNode))
+        raiseTypeErrorException();
+    return kit(raiseOnDOMError(IMPL-&gt;setNamedItem(downcast&lt;WebCore::Attr&gt;(coreNode))).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMNode *)removeNamedItem:(NSString *)name
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    DOMNode *result = kit(WTF::getPtr(IMPL-&gt;removeNamedItem(name, ec)));
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return kit(raiseOnDOMError(IMPL-&gt;removeNamedItem(name)).ptr());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMNode *)item:(unsigned)index
</span><span class="lines">@@ -97,22 +94,13 @@
</span><span class="cx"> 
</span><span class="cx"> - (DOMNode *)setNamedItemNS:(DOMNode *)node
</span><span class="cx"> {
</span><del>-    WebCore::JSMainThreadNullState state;
-    if (!node)
-        raiseTypeErrorException();
-    WebCore::ExceptionCode ec = 0;
-    DOMNode *result = kit(WTF::getPtr(IMPL-&gt;setNamedItem(*core(node), ec)));
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return [self setNamedItem:node];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMNode *)removeNamedItemNS:(NSString *)namespaceURI localName:(NSString *)localName
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    DOMNode *result = kit(WTF::getPtr(IMPL-&gt;removeNamedItemNS(namespaceURI, localName, ec)));
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return kit(raiseOnDOMError(IMPL-&gt;removeNamedItemNS(namespaceURI, localName)).ptr());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebKitwinChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/ChangeLog (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/ChangeLog        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebKit/win/ChangeLog        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2016-10-30  Darin Adler  &lt;darin@apple.com&gt;
+
+        Move Element, NamedNodeMap, and DOMStringMap from ExceptionCode to Exception
+        https://bugs.webkit.org/show_bug.cgi?id=164206
+
+        Reviewed by Chris Dumez.
+
+        * DOMCoreClasses.cpp:
+        (DOMElement::setAttribute): Updated exception handling.
+        * DOMHTMLClasses.cpp:
+        (DOMHTMLElement::setInnerHTML): Ditto.
+
</ins><span class="cx"> 2016-10-30  Brent Fulgham  &lt;bfulgham@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed build fix (Direct2D)
</span></span></pre></div>
<a id="trunkSourceWebKitwinDOMCoreClassescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/DOMCoreClasses.cpp (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/DOMCoreClasses.cpp        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebKit/win/DOMCoreClasses.cpp        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -31,6 +31,7 @@
</span><span class="cx"> #include &quot;DOMHTMLClasses.h&quot;
</span><span class="cx"> #include &quot;WebKitGraphics.h&quot;
</span><span class="cx"> 
</span><ins>+#include &lt;WebCore/Attr.h&gt;
</ins><span class="cx"> #include &lt;WebCore/BString.h&gt;
</span><span class="cx"> #include &lt;WebCore/COMPtr.h&gt;
</span><span class="cx"> #include &lt;WebCore/DOMWindow.h&gt;
</span><span class="lines">@@ -1070,9 +1071,8 @@
</span><span class="cx"> 
</span><span class="cx">     WTF::String nameString(name, SysStringLen(name));
</span><span class="cx">     WTF::String valueString(value, SysStringLen(value));
</span><del>-    WebCore::ExceptionCode ec = 0;
-    m_element-&gt;setAttribute(nameString, valueString, ec);
-    return ec ? E_FAIL : S_OK;
</del><ins>+    auto result = m_element-&gt;setAttribute(nameString, valueString);
+    return result.hasException() ? E_FAIL : S_OK;
</ins><span class="cx"> }
</span><span class="cx">     
</span><span class="cx"> HRESULT DOMElement::removeAttribute(_In_ BSTR /*name*/)
</span></span></pre></div>
<a id="trunkSourceWebKitwinDOMHTMLClassescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/DOMHTMLClasses.cpp (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/DOMHTMLClasses.cpp        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebKit/win/DOMHTMLClasses.cpp        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -514,8 +514,7 @@
</span><span class="cx">     ASSERT(is&lt;HTMLElement&gt;(m_element));
</span><span class="cx">     HTMLElement* htmlElement = downcast&lt;HTMLElement&gt;(m_element);
</span><span class="cx">     String htmlString(html, SysStringLen(html));
</span><del>-    ExceptionCode ec = 0;
-    htmlElement-&gt;setInnerHTML(htmlString, ec);
</del><ins>+    htmlElement-&gt;setInnerHTML(htmlString);
</ins><span class="cx">     return S_OK;
</span><span class="cx"> }
</span><span class="cx">         
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebKit2/ChangeLog        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -1,3 +1,32 @@
</span><ins>+2016-10-30  Darin Adler  &lt;darin@apple.com&gt;
+
+        Move Element, NamedNodeMap, and DOMStringMap from ExceptionCode to Exception
+        https://bugs.webkit.org/show_bug.cgi?id=164206
+
+        Reviewed by Chris Dumez.
+
+        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNamedNodeMap.cpp:
+        (webkit_dom_named_node_map_set_named_item): Updated exception handling.
+        (webkit_dom_named_node_map_remove_named_item): Ditto.
+        (webkit_dom_named_node_map_set_named_item_ns): Ditto.
+        (webkit_dom_named_node_map_remove_named_item_ns): Ditto.
+        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp:
+        (webkit_dom_element_set_attribute): Ditto.
+        (webkit_dom_element_set_attribute_node): Ditto.
+        (webkit_dom_element_remove_attribute_node): Ditto.
+        (webkit_dom_element_set_attribute_ns): Ditto.
+        (webkit_dom_element_set_attribute_node_ns): Ditto.
+        (webkit_dom_element_matches): Ditto.
+        (webkit_dom_element_closest): Ditto.
+        (webkit_dom_element_webkit_matches_selector): Ditto.
+        (webkit_dom_element_insert_adjacent_element): Ditto.
+        (webkit_dom_element_insert_adjacent_html): Ditto.
+        (webkit_dom_element_insert_adjacent_text): Ditto.
+        (webkit_dom_element_set_inner_html): Ditto.
+        (webkit_dom_element_set_outer_html): Ditto.
+        * WebProcess/InjectedBundle/API/mac/WKDOMElement.mm:
+        (-[WKDOMElement setAttribute:value:]): Ditto.
+
</ins><span class="cx"> 2016-10-30  Yusuke Suzuki  &lt;utatane.tea@gmail.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [DOM] Introduce WebCore::jsDynamicDowncast
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -613,10 +613,9 @@
</span><span class="cx">     WebCore::Element* item = WebKit::core(self);
</span><span class="cx">     WTF::String convertedName = WTF::String::fromUTF8(name);
</span><span class="cx">     WTF::String convertedValue = WTF::String::fromUTF8(value);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    item-&gt;setAttribute(convertedName, convertedValue, ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;setAttribute(convertedName, convertedValue);
+    if (result.hasException()) {
+        WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx">         g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -650,13 +649,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">     WebCore::Attr* convertedNewAttr = WebKit::core(newAttr);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    RefPtr&lt;WebCore::Attr&gt; gobjectResult = WTF::getPtr(item-&gt;setAttributeNode(*convertedNewAttr, ec));
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;setAttributeNode(*convertedNewAttr);
+    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().get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebKitDOMAttr* webkit_dom_element_remove_attribute_node(WebKitDOMElement* self, WebKitDOMAttr* oldAttr, GError** error)
</span><span class="lines">@@ -667,13 +666,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">     WebCore::Attr* convertedOldAttr = WebKit::core(oldAttr);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    RefPtr&lt;WebCore::Attr&gt; gobjectResult = WTF::getPtr(item-&gt;removeAttributeNode(*convertedOldAttr, ec));
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;removeAttributeNode(*convertedOldAttr);
+    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_element_get_elements_by_tag_name_as_html_collection(WebKitDOMElement* self, const gchar* name)
</span><span class="lines">@@ -720,10 +719,9 @@
</span><span class="cx">     WTF::String convertedNamespaceURI = WTF::String::fromUTF8(namespaceURI);
</span><span class="cx">     WTF::String convertedQualifiedName = WTF::String::fromUTF8(qualifiedName);
</span><span class="cx">     WTF::String convertedValue = WTF::String::fromUTF8(value);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    item-&gt;setAttributeNS(convertedNamespaceURI, convertedQualifiedName, convertedValue, ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;setAttributeNS(convertedNamespaceURI, convertedQualifiedName, convertedValue);
+    if (result.hasException()) {
+        WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx">         g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -774,13 +772,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">     WebCore::Attr* convertedNewAttr = WebKit::core(newAttr);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    RefPtr&lt;WebCore::Attr&gt; gobjectResult = WTF::getPtr(item-&gt;setAttributeNodeNS(*convertedNewAttr, ec));
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;setAttributeNodeNS(*convertedNewAttr);
+    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().get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> gboolean webkit_dom_element_has_attribute(WebKitDOMElement* self, const gchar* name)
</span><span class="lines">@@ -874,13 +872,13 @@
</span><span class="cx">     g_return_val_if_fail(!error || !*error, FALSE);
</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;
-    gboolean result = item-&gt;matches(convertedSelectors, ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;matches(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 false;
</ins><span class="cx">     }
</span><del>-    return result;
</del><ins>+    return result.releaseReturnValue();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebKitDOMElement* webkit_dom_element_closest(WebKitDOMElement* self, const gchar* selectors, GError** error)
</span><span class="lines">@@ -891,30 +889,18 @@
</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;closest(convertedSelectors, ec));
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;closest(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"> gboolean webkit_dom_element_webkit_matches_selector(WebKitDOMElement* self, const gchar* selectors, GError** error)
</span><span class="cx"> {
</span><del>-    WebCore::JSMainThreadNullState state;
-    g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(self), FALSE);
-    g_return_val_if_fail(selectors, FALSE);
-    g_return_val_if_fail(!error || !*error, FALSE);
-    WebCore::Element* item = WebKit::core(self);
-    WTF::String convertedSelectors = WTF::String::fromUTF8(selectors);
-    WebCore::ExceptionCode ec = 0;
-    gboolean result = item-&gt;matches(convertedSelectors, ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
-        g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
-    }
-    return result;
</del><ins>+    return webkit_dom_element_matches(self, selectors, error);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void webkit_dom_element_webkit_request_fullscreen(WebKitDOMElement* self)
</span><span class="lines">@@ -935,13 +921,13 @@
</span><span class="cx">     WebCore::Element* item = WebKit::core(self);
</span><span class="cx">     WTF::String convertedWhere = WTF::String::fromUTF8(where);
</span><span class="cx">     WebCore::Element* convertedElement = WebKit::core(element);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    RefPtr&lt;WebCore::Element&gt; gobjectResult = WTF::getPtr(item-&gt;insertAdjacentElement(convertedWhere, *convertedElement, ec));
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;insertAdjacentElement(convertedWhere, *convertedElement);
+    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"> void webkit_dom_element_insert_adjacent_html(WebKitDOMElement* self, const gchar* where, const gchar* html, GError** error)
</span><span class="lines">@@ -954,10 +940,9 @@
</span><span class="cx">     WebCore::Element* item = WebKit::core(self);
</span><span class="cx">     WTF::String convertedWhere = WTF::String::fromUTF8(where);
</span><span class="cx">     WTF::String convertedHtml = WTF::String::fromUTF8(html);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    item-&gt;insertAdjacentHTML(convertedWhere, convertedHtml, ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;insertAdjacentHTML(convertedWhere, convertedHtml);
+    if (result.hasException()) {
+        WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx">         g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -972,10 +957,9 @@
</span><span class="cx">     WebCore::Element* item = WebKit::core(self);
</span><span class="cx">     WTF::String convertedWhere = WTF::String::fromUTF8(where);
</span><span class="cx">     WTF::String convertedText = WTF::String::fromUTF8(text);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    item-&gt;insertAdjacentText(convertedWhere, convertedText, ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;insertAdjacentText(convertedWhere, convertedText);
+    if (result.hasException()) {
+        WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx">         g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -1263,10 +1247,9 @@
</span><span class="cx">     g_return_if_fail(!error || !*error);
</span><span class="cx">     WebCore::Element* item = WebKit::core(self);
</span><span class="cx">     WTF::String convertedValue = WTF::String::fromUTF8(value);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    item-&gt;setInnerHTML(convertedValue, ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;setInnerHTML(convertedValue);
+    if (result.hasException()) {
+        WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx">         g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -1288,10 +1271,9 @@
</span><span class="cx">     g_return_if_fail(!error || !*error);
</span><span class="cx">     WebCore::Element* item = WebKit::core(self);
</span><span class="cx">     WTF::String convertedValue = WTF::String::fromUTF8(value);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    item-&gt;setOuterHTML(convertedValue, ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;setOuterHTML(convertedValue);
+    if (result.hasException()) {
+        WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx">         g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
</span><span class="cx">     }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMNamedNodeMapcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNamedNodeMap.cpp (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNamedNodeMap.cpp        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNamedNodeMap.cpp        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -20,16 +20,17 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;WebKitDOMNamedNodeMap.h&quot;
</span><span class="cx"> 
</span><ins>+#include &quot;ConvertToUTF8String.h&quot;
+#include &quot;DOMObjectCache.h&quot;
+#include &quot;WebKitDOMNamedNodeMapPrivate.h&quot;
+#include &quot;WebKitDOMNodePrivate.h&quot;
+#include &quot;WebKitDOMPrivate.h&quot;
+#include &lt;WebCore/Attr.h&gt;
</ins><span class="cx"> #include &lt;WebCore/CSSImportRule.h&gt;
</span><del>-#include &quot;DOMObjectCache.h&quot;
</del><span class="cx"> #include &lt;WebCore/Document.h&gt;
</span><span class="cx"> #include &lt;WebCore/ExceptionCode.h&gt;
</span><span class="cx"> #include &lt;WebCore/ExceptionCodeDescription.h&gt;
</span><span class="cx"> #include &lt;WebCore/JSMainThreadExecState.h&gt;
</span><del>-#include &quot;WebKitDOMNamedNodeMapPrivate.h&quot;
-#include &quot;WebKitDOMNodePrivate.h&quot;
-#include &quot;WebKitDOMPrivate.h&quot;
-#include &quot;ConvertToUTF8String.h&quot;
</del><span class="cx"> #include &lt;wtf/GetPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -152,13 +153,18 @@
</span><span class="cx">     g_return_val_if_fail(!error || !*error, 0);
</span><span class="cx">     WebCore::NamedNodeMap* item = WebKit::core(self);
</span><span class="cx">     WebCore::Node* convertedNode = WebKit::core(node);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    RefPtr&lt;WebCore::Node&gt; gobjectResult = WTF::getPtr(item-&gt;setNamedItem(*convertedNode, ec));
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    if (!is&lt;WebCore::Attr&gt;(*convertedNode)) {
+        WebCore::ExceptionCodeDescription ecdesc(WebCore::TypeError);
</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>+    auto result = item-&gt;setNamedItem(downcast&lt;WebCore::Attr&gt;(*convertedNode));
+    if (result.hasException()) {
+        WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
+        g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
+        return nullptr;
+    }
+    return WebKit::kit(result.releaseReturnValue().get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebKitDOMNode* webkit_dom_named_node_map_remove_named_item(WebKitDOMNamedNodeMap* self, const gchar* name, GError** error)
</span><span class="lines">@@ -169,13 +175,13 @@
</span><span class="cx">     g_return_val_if_fail(!error || !*error, 0);
</span><span class="cx">     WebCore::NamedNodeMap* item = WebKit::core(self);
</span><span class="cx">     WTF::String convertedName = WTF::String::fromUTF8(name);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    RefPtr&lt;WebCore::Node&gt; gobjectResult = WTF::getPtr(item-&gt;removeNamedItem(convertedName, ec));
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;removeNamedItem(convertedName);
+    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"> WebKitDOMNode* webkit_dom_named_node_map_item(WebKitDOMNamedNodeMap* self, gulong index)
</span><span class="lines">@@ -202,19 +208,7 @@
</span><span class="cx"> 
</span><span class="cx"> WebKitDOMNode* webkit_dom_named_node_map_set_named_item_ns(WebKitDOMNamedNodeMap* self, WebKitDOMNode* node, GError** error)
</span><span class="cx"> {
</span><del>-    WebCore::JSMainThreadNullState state;
-    g_return_val_if_fail(WEBKIT_DOM_IS_NAMED_NODE_MAP(self), 0);
-    g_return_val_if_fail(WEBKIT_DOM_IS_NODE(node), 0);
-    g_return_val_if_fail(!error || !*error, 0);
-    WebCore::NamedNodeMap* item = WebKit::core(self);
-    WebCore::Node* convertedNode = WebKit::core(node);
-    WebCore::ExceptionCode ec = 0;
-    RefPtr&lt;WebCore::Node&gt; gobjectResult = WTF::getPtr(item-&gt;setNamedItem(*convertedNode, ec));
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
-        g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
-    }
-    return WebKit::kit(gobjectResult.get());
</del><ins>+    return webkit_dom_named_node_map_set_named_item(self, node, error);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebKitDOMNode* webkit_dom_named_node_map_remove_named_item_ns(WebKitDOMNamedNodeMap* self, const gchar* namespaceURI, const gchar* localName, GError** error)
</span><span class="lines">@@ -227,13 +221,13 @@
</span><span class="cx">     WebCore::NamedNodeMap* item = WebKit::core(self);
</span><span class="cx">     WTF::String convertedNamespaceURI = WTF::String::fromUTF8(namespaceURI);
</span><span class="cx">     WTF::String convertedLocalName = WTF::String::fromUTF8(localName);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    RefPtr&lt;WebCore::Node&gt; gobjectResult = WTF::getPtr(item-&gt;removeNamedItemNS(convertedNamespaceURI, convertedLocalName, ec));
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;removeNamedItemNS(convertedNamespaceURI, convertedLocalName);
+    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"> gulong webkit_dom_named_node_map_get_length(WebKitDOMNamedNodeMap* self)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleAPImacWKDOMElementmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMElement.mm (208134 => 208135)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMElement.mm        2016-10-30 22:35:00 UTC (rev 208134)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMElement.mm        2016-10-30 22:36:07 UTC (rev 208135)
</span><span class="lines">@@ -45,9 +45,7 @@
</span><span class="cx"> 
</span><span class="cx"> - (void)setAttribute:(NSString *)name value:(NSString *)value
</span><span class="cx"> {
</span><del>-    // FIXME: Do something about the exception.
-    WebCore::ExceptionCode ec;
-    downcast&lt;WebCore::Element&gt;(*_impl).setAttribute(name, value, ec);
</del><ins>+    downcast&lt;WebCore::Element&gt;(*_impl).setAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (NSString *)tagName
</span></span></pre>
</div>
</div>

</body>
</html>