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

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

<h3>Log Message</h3>
<pre>Move Node from ExceptionCode to ExceptionOr
https://bugs.webkit.org/show_bug.cgi?id=164515

Reviewed by Sam Weinig.

Source/WebCore:

* bindings/js/JSHTMLSelectElementCustom.cpp:
(WebCore::selectElementIndexSetter): Call remove instead of removeByIndex.
Was renamed now that there is no conflict.

* bindings/js/JSNodeCustom.cpp:
(WebCore::JSNode::insertBefore): Use ExceptionOr.
(WebCore::JSNode::replaceChild): Ditto.
(WebCore::JSNode::removeChild): Ditto.
(WebCore::JSNode::appendChild): Ditto.

* dom/Attr.cpp:
(WebCore::Attr::Attr): Take a reference.
(WebCore::Attr::create): Ditto.
(WebCore::Attr::createTextChild): Use a Ref.
(WebCore::Attr::setPrefix): Use ExceptionOr.
(WebCore::Attr::setNodeValue): Ditto.
(WebCore::Attr::attachToElement): Take a reference.
* dom/Attr.h: Updated for above. Also made setPrefix private.

* dom/CharacterData.cpp:
(WebCore::CharacterData::setNodeValue): Use ExceptionOr.
* dom/CharacterData.h: Updated for the above.

* dom/ContainerNode.cpp:
(WebCore::collectChildrenAndRemoveFromOldParent): Use ExceptionOr.
(WebCore::checkAcceptChild): Ditto.
(WebCore::checkAcceptChildGuaranteedNodeTypes): Ditto.
(WebCore::ContainerNode::ensurePreInsertionValidity): Ditto.
(WebCore::checkPreReplacementValidity): Ditto.
(WebCore::ContainerNode::insertBefore): Ditto.
(WebCore::ContainerNode::replaceChild): Ditto.
(WebCore::ContainerNode::removeChild): Ditto.
(WebCore::ContainerNode::appendChild): Ditto.
(WebCore::ContainerNode::appendChildWithoutPreInsertionValidityCheck): Ditto.
(WebCore::ContainerNode::cloneChildNodes): Ditto.
(WebCore::ContainerNode::append): Ditto.
(WebCore::ContainerNode::prepend): Ditto.
* dom/ContainerNode.h: Updated for above changes.

* dom/Document.cpp:
(WebCore::Document::setTitle): Removed unneeded ASSERT_NO_EXCEPTION.
(WebCore::Document::setBodyOrFrameset): Removed unneeded ignored
exception code.

* dom/Element.cpp:
(WebCore::Element::setPrefix): Use ExceptionOr.
(WebCore::Element::setAttributeNode): Updated for changes to Attr.
(WebCore::Element::setAttributeNodeNS): Ditto.
(WebCore::Element::setOuterHTML): Use ExceptionOr.
(WebCore::Element::ensureAttr): Updated for changes to Attr.
(WebCore::Element::insertAdjacent): Use ExceptionOr.
* dom/Element.h: Updated for above.

* dom/Node.cpp:
(WebCore::Node::setNodeValue): Use ExceptionOr.
(WebCore::Node::insertBefore): Ditto.
(WebCore::Node::replaceChild): Ditto.
(WebCore::Node::removeChild): Ditto.
(WebCore::Node::appendChild): Ditto.
(WebCore::Node::convertNodesOrStringsIntoNode): Ditto.
(WebCore::Node::before): Ditto.
(WebCore::Node::after): Ditto.
(WebCore::Node::replaceWith): Ditto.
(WebCore::Node::remove): Ditto.
(WebCore::Node::cloneNodeForBindings): Ditto.
(WebCore::Node::setPrefix): Ditto.
(WebCore::Node::checkSetPrefix): Ditto.
(WebCore::Node::setTextContent): Ditto.
* dom/Node.h: Updated for above.
* dom/Node.idl: Use non-legacy exceptions.

* dom/Range.cpp:
(WebCore::Range::processContents): Use ExceptionOr.
(WebCore::processContentsBetweenOffsets): Ditto.
(WebCore::processNodes): Ditto.
(WebCore::processAncestorsAndTheirSiblings): Ditto.
(WebCore::Range::insertNode): Ditto.
(WebCore::Range::surroundContents): Ditto.

* dom/Text.cpp:
(WebCore::Text::splitText): Use ExceptionOr.
(WebCore::Text::replaceWholeText): Removed unneeded IGNORE_EXCEPTION.

* editing/AppendNodeCommand.cpp:
(WebCore::AppendNodeCommand::doApply): Removed unneeded IGNORE_EXCEPTION.
* editing/CompositeEditCommand.cpp:
(WebCore::CompositeEditCommand::insertNewDefaultParagraphElementAt): Ditto.

* editing/EditorCommand.cpp:
(WebCore::executeInsertNode): Use ExceptionOr.

* editing/InsertNodeBeforeCommand.cpp:
(WebCore::InsertNodeBeforeCommand::doApply): Removed unneeded IGNORE_EXCEPTION.
* editing/MergeIdenticalElementsCommand.cpp:
(WebCore::MergeIdenticalElementsCommand::doApply): Ditto.
(WebCore::MergeIdenticalElementsCommand::doUnapply): Use ExceptionOr.

* editing/RemoveNodeCommand.cpp:
(WebCore::RemoveNodeCommand::doUnapply): Removed unneeded IGNORE_EXCEPTION.
* editing/ReplaceNodeWithSpanCommand.cpp:
(WebCore::swapInNodePreservingAttributesAndChildren): Removed unneeded
ASSERT_NO_EXCEPTION.
* editing/ReplaceSelectionCommand.cpp:
(WebCore::ReplacementFragment::removeNode): Ditto.
(WebCore::ReplacementFragment::insertNodeBefore): Ditto.
(WebCore::ReplacementFragment::insertFragmentForTestRendering): Ditto.
(WebCore::ReplacementFragment::restoreAndRemoveTestRenderingNodesToFragment): Ditto.
(WebCore::ReplaceSelectionCommand::insertAsListItems): Ditto.

* editing/SplitElementCommand.cpp:
(WebCore::SplitElementCommand::executeApply): Use ExceptionOr.
(WebCore::SplitElementCommand::doUnapply): Removed unneeded IGNORE_EXCEPTION.

* editing/SplitTextNodeCommand.cpp:
(WebCore::SplitTextNodeCommand::insertText1AndTrimText2): Use ExceptionOr.

* editing/WrapContentsInDummySpanCommand.cpp:
(WebCore::WrapContentsInDummySpanCommand::executeApply): Removed unneeded
IGNORE_EXCEPTION.
(WebCore::WrapContentsInDummySpanCommand::doUnapply): Ditto.

* editing/cocoa/EditorCocoa.mm:
(WebCore::Editor::styleForSelectionStart): Removed unneeded ASSERT_NO_EXCEPTION
and IGNORE_EXCEPTION.
* editing/htmlediting.cpp:
(WebCore::createTabSpanElement): Ditto.
* editing/markup.cpp:
(WebCore::fillContainerFromString): Ditto.
(WebCore::createFragmentFromText): Ditto.
(WebCore::removeElementFromFragmentPreservingChildren): Ditto.
(WebCore::replaceChildrenWithFragment): Use ExceptionOr.
(WebCore::replaceChildrenWithText): Ditto.

* editing/ios/EditorIOS.mm:
(WebCore::Editor::WebContentReader::addFragment): Removed unneeded exception
ignoring code.
(WebCore::Editor::setDictationPhrasesAsChildOfElement): Ditto.
(WebCore::Editor::setTextAsChildOfElement): Ditto.

* html/ColorInputType.cpp:
(WebCore::ColorInputType::createShadowSubtree): Removed unneeded
ASSERT_NO_EXCEPTION.

* html/FTPDirectoryDocument.cpp:
(WebCore::FTPDirectoryDocumentParser::appendEntry): Removed unneeded
IGNORE_EXCEPTION.
(WebCore::FTPDirectoryDocumentParser::createTDForFilename): Ditto.
(WebCore::FTPDirectoryDocumentParser::loadDocumentTemplate): Ditto.
(WebCore::FTPDirectoryDocumentParser::createBasicDocument): Ditto.
* html/FileInputType.cpp:
(WebCore::FileInputType::createShadowSubtree): Ditto.

* html/HTMLAnchorElement.cpp:
(WebCore::HTMLAnchorElement::setText): Removed unneeded ASSERT_NO_EXCEPTION.
* html/HTMLDetailsElement.cpp:
(WebCore::HTMLDetailsElement::didAddUserAgentShadowRoot): Ditto.

* html/HTMLElement.cpp:
(WebCore::HTMLElement::textToFragment): Use ExceptionOr.
(WebCore::HTMLElement::setOuterText): Ditto.

* html/HTMLKeygenElement.cpp:
(WebCore::HTMLKeygenElement::HTMLKeygenElement): Removed unneeded
ASSERT_NO_EXCEPTION and IGNORE_EXCEPTION.
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::createMediaControls): Ditto.
* html/HTMLMeterElement.cpp:
(WebCore::HTMLMeterElement::didAddUserAgentShadowRoot): Ditto.
* html/HTMLOptionElement.cpp:
(WebCore::HTMLOptionElement::createForJSConstructor): Use ExceptionOr.
(WebCore::HTMLOptionElement::setText): Removed unneeded
ASSERT_NO_EXCEPTION and IGNORE_EXCEPTION.

* html/HTMLOptionsCollection.cpp:
(WebCore::HTMLOptionsCollection::remove): Call remove, not removeByIndex,
since we were able to change the name.

* html/HTMLOutputElement.cpp:
(WebCore::HTMLOutputElement::setTextContentInternal): Removed unneeded
ASSERT_NO_EXCEPTION and IGNORE_EXCEPTION.
* html/HTMLProgressElement.cpp:
(WebCore::HTMLProgressElement::didAddUserAgentShadowRoot): Ditto.
* html/HTMLScriptElement.cpp:
(WebCore::HTMLScriptElement::setText): Ditto.

* html/HTMLSelectElement.cpp:
(WebCore::HTMLSelectElement::add): Use ExceptionOr.
(WebCore::HTMLSelectElement::remove): Renamed from removeByIndex since
there is no conflict with remove any more.
(WebCore::HTMLSelectElement::setOption): Call remove.
* html/HTMLSelectElement.h: Updated for above.
* html/HTMLSelectElement.idl: Got rid of ImplementedAs=removeByIndex.

* html/HTMLSummaryElement.cpp:
(WebCore::HTMLSummaryElement::didAddUserAgentShadowRoot): Removed unneeded
ASSERT_NO_EXCEPTION and IGNORE_EXCEPTION.
* html/HTMLTableElement.cpp:
(WebCore::HTMLTableElement::HTMLTableElement): Initialize data members in
class definition instead of here.
(WebCore::HTMLTableElement::caption): Simplified using childrenOfType.
(WebCore::HTMLTableElement::setCaption): Use ExceptionOr.
(WebCore::HTMLTableElement::setTHead): Ditto.
(WebCore::HTMLTableElement::setTFoot): Ditto.
(WebCore::HTMLTableElement::deleteTFoot): Removed unneeded ASSERT_NO_EXCEPTION
and IGNORE_EXCEPTION.
(WebCore::HTMLTableElement::createTBody): Ditto.
(WebCore::HTMLTableElement::deleteCaption): Ditto.
(WebCore::HTMLTableElement::insertRow): Use ExceptionOr.
* html/HTMLTableElement.h: Updated for above.

* html/HTMLTableRowElement.cpp:
(WebCore::HTMLTableRowElement::insertCell): Use ExceptionOr.
(WebCore::HTMLTableRowElement::deleteCell): Ditto.
* html/HTMLTableSectionElement.cpp:
(WebCore::HTMLTableSectionElement::insertRow): Ditto.
(WebCore::HTMLTableSectionElement::deleteRow): Ditto.

* html/HTMLTextAreaElement.cpp:
(WebCore::HTMLTextAreaElement::didAddUserAgentShadowRoot): Removed unneeded
ASSERT_NO_EXCEPTION and IGNORE_EXCEPTION.
(WebCore::HTMLTextAreaElement::setDefaultValue): Ditto.
(WebCore::HTMLTextAreaElement::updatePlaceholderText): Ditto.
* html/HTMLTextFormControlElement.cpp:
(WebCore::HTMLTextFormControlElement::setInnerTextValue): Ditto.
* html/HTMLTitleElement.cpp:
(WebCore::HTMLTitleElement::setText): Ditto.
* html/MediaDocument.cpp:
(WebCore::MediaDocumentParser::createDocumentStructure): Ditto.
(WebCore::MediaDocument::replaceMediaElementTimerFired): Ditto.
* html/PluginDocument.cpp:
(WebCore::PluginDocumentParser::createDocumentStructure): Ditto.
* html/RangeInputType.cpp:
(WebCore::RangeInputType::createShadowSubtree): Ditto.
* html/SearchInputType.cpp:
(WebCore::SearchInputType::createShadowSubtree): Ditto.
* html/TextFieldInputType.cpp:
(WebCore::TextFieldInputType::createShadowSubtree): Ditto.
(WebCore::TextFieldInputType::updatePlaceholderText): Ditto.
(WebCore::TextFieldInputType::createContainer): Ditto.
(WebCore::TextFieldInputType::createAutoFillButton): Ditto.
* html/ValidationMessage.cpp:
(WebCore::ValidationMessage::setMessageDOMAndStartTimer): Ditto.
(WebCore::ValidationMessage::buildBubbleTree): Ditto.
(WebCore::ValidationMessage::deleteBubbleTree): Ditto.
* html/shadow/MediaControlElements.cpp:
(WebCore::MediaControlTextTrackContainerElement::updateDisplay): Ditto.
* html/shadow/MediaControls.cpp:
(WebCore::MediaControls::createTextTrackDisplay): Ditto.

* html/shadow/MediaControlsApple.cpp:
(WebCore::MediaControlsApple::MediaControlsApple): Initialize data members
in class definition instead of here.
(WebCore::MediaControlsApple::tryCreateControls): Use ExceptionOr.
* html/shadow/MediaControlsApple.h: Updated for above.

* html/track/VTTCue.cpp:
(WebCore::VTTCue::copyWebVTTNodeToDOMTree): Removed unneeded ASSERT_NO_EXCEPTION
and IGNORE_EXCEPTION.
(WebCore::VTTCue::getDisplayTree): Ditto.
* html/track/VTTRegion.cpp:
(WebCore::VTTRegion::appendTextTrackCueBox): Ditto.

* inspector/DOMEditor.cpp: Use ExceptionOr in action classes.
(WebCore::DOMEditor::DOMEditor): Take a reference.
(WebCore::DOMEditor::insertBefore): Use ExceptionOr.
(WebCore::DOMEditor::removeChild): Ditto.
(WebCore::DOMEditor::setAttribute): Ditto.
(WebCore::DOMEditor::removeAttribute): Ditto.
(WebCore::DOMEditor::setOuterHTML): Ditto.
(WebCore::DOMEditor::replaceWholeText): Ditto.
(WebCore::DOMEditor::replaceChild): Ditto.
(WebCore::DOMEditor::setNodeValue): Ditto.
(WebCore::populateErrorString): Ditto.
* inspector/DOMEditor.h: Updated for above changes.

* inspector/DOMPatchSupport.cpp:
(WebCore::DOMPatchSupport::patchDocument): Updated to use references,
to use ExceptionOr, and to use a struct without a constructor for Digest.
(WebCore::DOMPatchSupport::DOMPatchSupport): Ditto.
(WebCore::DOMPatchSupport::patchNode): Ditto.
(WebCore::DOMPatchSupport::innerPatchNode): Ditto.
(WebCore::DOMPatchSupport::diff): Ditto.
(WebCore::DOMPatchSupport::innerPatchChildren): Ditto.
(WebCore::DOMPatchSupport::createDigest): Ditto.
(WebCore::DOMPatchSupport::insertBeforeAndMarkAsUsed): Ditto.
(WebCore::DOMPatchSupport::removeChildAndMoveToNew): Ditto.
(WebCore::DOMPatchSupport::markNodeAsUsed): Ditto.
* inspector/DOMPatchSupport.h: Updated for above.

* inspector/InspectorCSSAgent.cpp: Use ExceptionOr in the action classes.
(WebCore::InspectorCSSAgent::getStyleSheetText): Use ExceptionOr.
(WebCore::InspectorCSSAgent::setStyleSheetText): Ditto.
(WebCore::InspectorCSSAgent::setStyleText): Ditto.
(WebCore::InspectorCSSAgent::setRuleSelector): Ditto.
(WebCore::InspectorCSSAgent::createInspectorStyleSheetForDocument): Ditto.
(WebCore::InspectorCSSAgent::addRule): Ditto.
* inspector/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::didCreateFrontendAndBackend): Ditto.
(WebCore::InspectorDOMAgent::setAttributeValue): Ditto.
(WebCore::InspectorDOMAgent::setAttributesAsText): Ditto.
(WebCore::InspectorDOMAgent::removeAttribute): Ditto.
(WebCore::InspectorDOMAgent::setOuterHTML): Ditto.
(WebCore::InspectorDOMAgent::setNodeValue): Ditto.
(WebCore::InspectorDOMAgent::undo): Ditto.
(WebCore::InspectorDOMAgent::redo): Ditto.

* inspector/InspectorHistory.cpp:
(WebCore::InspectorHistory::Action::Action): Moved to header.
(WebCore::InspectorHistory::Action::~Action): Ditto.
(WebCore::InspectorHistory::Action::toString): Ditto.
(WebCore::InspectorHistory::Action::isUndoableStateMark): Ditto.
(WebCore::InspectorHistory::Action::mergeId): Ditto.
(WebCore::InspectorHistory::Action::merge): Ditto.
(WebCore::InspectorHistory::InspectorHistory): Deleted.
(WebCore::InspectorHistory::~InspectorHistory): Deleted.
(WebCore::InspectorHistory::perform): Updated exception handling.
(WebCore::InspectorHistory::markUndoableState): Ditto.
(WebCore::InspectorHistory::undo): Ditto.
(WebCore::InspectorHistory::redo): Ditto.
* inspector/InspectorHistory.h: Updated for above.

* inspector/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::setDocumentContent): Use reference.

* inspector/InspectorStyleSheet.cpp:
(WebCore::InspectorStyle::text): Use ExceptionOr and renamed from
getText since this now has a return value.
(WebCore::InspectorStyle::populateAllProperties): Updated for above.
(WebCore::InspectorStyle::setText): Use ExceptionOr.
(WebCore::InspectorStyleSheet::setText): Ditto.
(WebCore::InspectorStyleSheet::ruleSelector): Ditto.
(WebCore::InspectorStyleSheet::setRuleSelector): Ditto.
(WebCore::InspectorStyleSheet::addRule): Ditto.
(WebCore::InspectorStyleSheet::deleteRule): Ditto.
(WebCore::InspectorStyleSheet::buildObjectForStyleSheet): Ditto.
(WebCore::InspectorStyleSheet::buildObjectForStyle): Ditto.
(WebCore::InspectorStyleSheet::setStyleText): Ditto.
(WebCore::InspectorStyleSheet::text): Use ExceptionOr and renamed.
(WebCore::InspectorStyleSheet::checkPageStyleSheet): Deleted.
Just wrote this code inline in each place this was called since it's
just a single null check.
(WebCore::InspectorStyleSheetForInlineStyle::text): Use ExceptionOr
and renamed.
(WebCore::InspectorStyleSheetForInlineStyle::setStyleText): Ditto.
(WebCore::InspectorStyle::getText): Deleted.
* inspector/InspectorStyleSheet.h: Updated for above changes.

* page/DragController.cpp:
(WebCore::documentFragmentFromDragData): Removed unneeded
ASSERT_NO_EXCEPTION and IGNORE_EXCEPTION.
* page/ios/FrameIOS.mm:
(WebCore::Frame::initWithSimpleHTMLDocument): Ditto.
* svg/SVGTRefElement.cpp:
(WebCore::SVGTRefElement::updateReferencedText): Ditto.
(WebCore::SVGTRefElement::detachTarget): Ditto.
* xml/XMLTreeViewer.cpp:
(WebCore::XMLTreeViewer::transformDocumentToTreeView): Ditto.

Source/WebKit/mac:

* DOM/DOMHTMLSelectElement.mm:
(-[DOMHTMLSelectElement remove:]): Call remove instead of removeByIndex
now that it was renamed.
* DOM/DOMNode.mm:
(-[DOMNode setNodeValue:]): Updated exception handling.
(-[DOMNode setPrefix:]): Ditto.
(-[DOMNode setTextContent:]): Ditto.
(-[DOMNode insertBefore:refChild:]): Ditto.
(-[DOMNode replaceChild:oldChild:]): Ditto.
(-[DOMNode removeChild:]): Ditto.
(-[DOMNode appendChild:]): Ditto.
(-[DOMNode cloneNode:]): Ditto.

Source/WebKit/win:

* DOMCoreClasses.cpp:
(DOMNode::insertBefore): Update exception handling.
(DOMNode::removeChild): Ditto.

Source/WebKit2:

* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLSelectElement.cpp:
(webkit_dom_html_select_element_remove): Updated exception handling.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNode.cpp:
(webkit_dom_node_insert_before): Ditto.
(webkit_dom_node_replace_child): Ditto.
(webkit_dom_node_remove_child): Ditto.
(webkit_dom_node_append_child): Ditto.
(webkit_dom_node_clone_node_with_error): Ditto.
(webkit_dom_node_set_node_value): Ditto.
(webkit_dom_node_set_text_content): Ditto.
* WebProcess/InjectedBundle/API/mac/WKDOMNode.mm:
(-[WKDOMNode insertNode:before:]): Ditto.
(-[WKDOMNode appendChild:]): Ditto.
(-[WKDOMNode removeChild:]): Ditto.

* WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm:
(WebKit::PDFPlugin::PDFPlugin): Removed unneeded ASSERT_NO_EXCEPTION.
* WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm:
(WebKit::PDFPluginChoiceAnnotation::createAnnotationElement): Ditto.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSHTMLSelectElementCustomcpp">trunk/Source/WebCore/bindings/js/JSHTMLSelectElementCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSNodeCustomcpp">trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp</a></li>
<li><a href="#trunkSourceWebCoredomAttrcpp">trunk/Source/WebCore/dom/Attr.cpp</a></li>
<li><a href="#trunkSourceWebCoredomAttrh">trunk/Source/WebCore/dom/Attr.h</a></li>
<li><a href="#trunkSourceWebCoredomCharacterDatacpp">trunk/Source/WebCore/dom/CharacterData.cpp</a></li>
<li><a href="#trunkSourceWebCoredomCharacterDatah">trunk/Source/WebCore/dom/CharacterData.h</a></li>
<li><a href="#trunkSourceWebCoredomContainerNodecpp">trunk/Source/WebCore/dom/ContainerNode.cpp</a></li>
<li><a href="#trunkSourceWebCoredomContainerNodeh">trunk/Source/WebCore/dom/ContainerNode.h</a></li>
<li><a href="#trunkSourceWebCoredomDocumentcpp">trunk/Source/WebCore/dom/Document.cpp</a></li>
<li><a href="#trunkSourceWebCoredomElementcpp">trunk/Source/WebCore/dom/Element.cpp</a></li>
<li><a href="#trunkSourceWebCoredomElementh">trunk/Source/WebCore/dom/Element.h</a></li>
<li><a href="#trunkSourceWebCoredomNodecpp">trunk/Source/WebCore/dom/Node.cpp</a></li>
<li><a href="#trunkSourceWebCoredomNodeh">trunk/Source/WebCore/dom/Node.h</a></li>
<li><a href="#trunkSourceWebCoredomNodeidl">trunk/Source/WebCore/dom/Node.idl</a></li>
<li><a href="#trunkSourceWebCoredomRangecpp">trunk/Source/WebCore/dom/Range.cpp</a></li>
<li><a href="#trunkSourceWebCoredomTextcpp">trunk/Source/WebCore/dom/Text.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingAppendNodeCommandcpp">trunk/Source/WebCore/editing/AppendNodeCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingCompositeEditCommandcpp">trunk/Source/WebCore/editing/CompositeEditCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingEditorCommandcpp">trunk/Source/WebCore/editing/EditorCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingInsertNodeBeforeCommandcpp">trunk/Source/WebCore/editing/InsertNodeBeforeCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingMergeIdenticalElementsCommandcpp">trunk/Source/WebCore/editing/MergeIdenticalElementsCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingRemoveNodeCommandcpp">trunk/Source/WebCore/editing/RemoveNodeCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingReplaceNodeWithSpanCommandcpp">trunk/Source/WebCore/editing/ReplaceNodeWithSpanCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingReplaceSelectionCommandcpp">trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingSplitElementCommandcpp">trunk/Source/WebCore/editing/SplitElementCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingSplitTextNodeCommandcpp">trunk/Source/WebCore/editing/SplitTextNodeCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingWrapContentsInDummySpanCommandcpp">trunk/Source/WebCore/editing/WrapContentsInDummySpanCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingcocoaEditorCocoamm">trunk/Source/WebCore/editing/cocoa/EditorCocoa.mm</a></li>
<li><a href="#trunkSourceWebCoreeditinghtmleditingcpp">trunk/Source/WebCore/editing/htmlediting.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingiosEditorIOSmm">trunk/Source/WebCore/editing/ios/EditorIOS.mm</a></li>
<li><a href="#trunkSourceWebCoreeditingmarkupcpp">trunk/Source/WebCore/editing/markup.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlColorInputTypecpp">trunk/Source/WebCore/html/ColorInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlFTPDirectoryDocumentcpp">trunk/Source/WebCore/html/FTPDirectoryDocument.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlFileInputTypecpp">trunk/Source/WebCore/html/FileInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLAnchorElementcpp">trunk/Source/WebCore/html/HTMLAnchorElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLDetailsElementcpp">trunk/Source/WebCore/html/HTMLDetailsElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLElementcpp">trunk/Source/WebCore/html/HTMLElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLKeygenElementcpp">trunk/Source/WebCore/html/HTMLKeygenElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementcpp">trunk/Source/WebCore/html/HTMLMediaElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMeterElementcpp">trunk/Source/WebCore/html/HTMLMeterElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLOptionElementcpp">trunk/Source/WebCore/html/HTMLOptionElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLOptionsCollectioncpp">trunk/Source/WebCore/html/HTMLOptionsCollection.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLOutputElementcpp">trunk/Source/WebCore/html/HTMLOutputElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLProgressElementcpp">trunk/Source/WebCore/html/HTMLProgressElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLScriptElementcpp">trunk/Source/WebCore/html/HTMLScriptElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLSelectElementcpp">trunk/Source/WebCore/html/HTMLSelectElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLSelectElementh">trunk/Source/WebCore/html/HTMLSelectElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLSelectElementidl">trunk/Source/WebCore/html/HTMLSelectElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLSummaryElementcpp">trunk/Source/WebCore/html/HTMLSummaryElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableElementcpp">trunk/Source/WebCore/html/HTMLTableElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableElementh">trunk/Source/WebCore/html/HTMLTableElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableRowElementcpp">trunk/Source/WebCore/html/HTMLTableRowElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableSectionElementcpp">trunk/Source/WebCore/html/HTMLTableSectionElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTextAreaElementcpp">trunk/Source/WebCore/html/HTMLTextAreaElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTextFormControlElementcpp">trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTitleElementcpp">trunk/Source/WebCore/html/HTMLTitleElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlMediaDocumentcpp">trunk/Source/WebCore/html/MediaDocument.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlPluginDocumentcpp">trunk/Source/WebCore/html/PluginDocument.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlRangeInputTypecpp">trunk/Source/WebCore/html/RangeInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlSearchInputTypecpp">trunk/Source/WebCore/html/SearchInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlTextFieldInputTypecpp">trunk/Source/WebCore/html/TextFieldInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlValidationMessagecpp">trunk/Source/WebCore/html/ValidationMessage.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlshadowMediaControlElementscpp">trunk/Source/WebCore/html/shadow/MediaControlElements.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlshadowMediaControlscpp">trunk/Source/WebCore/html/shadow/MediaControls.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlshadowMediaControlsApplecpp">trunk/Source/WebCore/html/shadow/MediaControlsApple.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlshadowMediaControlsAppleh">trunk/Source/WebCore/html/shadow/MediaControlsApple.h</a></li>
<li><a href="#trunkSourceWebCorehtmltrackVTTCuecpp">trunk/Source/WebCore/html/track/VTTCue.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmltrackVTTRegioncpp">trunk/Source/WebCore/html/track/VTTRegion.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorDOMEditorcpp">trunk/Source/WebCore/inspector/DOMEditor.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorDOMEditorh">trunk/Source/WebCore/inspector/DOMEditor.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorDOMPatchSupportcpp">trunk/Source/WebCore/inspector/DOMPatchSupport.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorDOMPatchSupporth">trunk/Source/WebCore/inspector/DOMPatchSupport.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorCSSAgentcpp">trunk/Source/WebCore/inspector/InspectorCSSAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorDOMAgentcpp">trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorHistorycpp">trunk/Source/WebCore/inspector/InspectorHistory.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorHistoryh">trunk/Source/WebCore/inspector/InspectorHistory.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorPageAgentcpp">trunk/Source/WebCore/inspector/InspectorPageAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorStyleSheetcpp">trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorStyleSheeth">trunk/Source/WebCore/inspector/InspectorStyleSheet.h</a></li>
<li><a href="#trunkSourceWebCorepageDragControllercpp">trunk/Source/WebCore/page/DragController.cpp</a></li>
<li><a href="#trunkSourceWebCorepageiosFrameIOSmm">trunk/Source/WebCore/page/ios/FrameIOS.mm</a></li>
<li><a href="#trunkSourceWebCoresvgSVGTRefElementcpp">trunk/Source/WebCore/svg/SVGTRefElement.cpp</a></li>
<li><a href="#trunkSourceWebCorexmlXMLTreeViewercpp">trunk/Source/WebCore/xml/XMLTreeViewer.cpp</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMHTMLSelectElementmm">trunk/Source/WebKit/mac/DOM/DOMHTMLSelectElement.mm</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMNodemm">trunk/Source/WebKit/mac/DOM/DOMNode.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="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMDeprecatedcpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDeprecated.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMHTMLSelectElementcpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLSelectElement.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMNodecpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNode.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPImacWKDOMNodemm">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMNode.mm</a></li>
<li><a href="#trunkSourceWebKit2WebProcessPluginsPDFDeprecatedPDFPluginmm">trunk/Source/WebKit2/WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm</a></li>
<li><a href="#trunkSourceWebKit2WebProcessPluginsPDFPDFPluginChoiceAnnotationmm">trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/ChangeLog        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -1,3 +1,368 @@
</span><ins>+2016-11-11  Darin Adler  &lt;darin@apple.com&gt;
+
+        Move Node from ExceptionCode to ExceptionOr
+        https://bugs.webkit.org/show_bug.cgi?id=164515
+
+        Reviewed by Sam Weinig.
+
+        * bindings/js/JSHTMLSelectElementCustom.cpp:
+        (WebCore::selectElementIndexSetter): Call remove instead of removeByIndex.
+        Was renamed now that there is no conflict.
+
+        * bindings/js/JSNodeCustom.cpp:
+        (WebCore::JSNode::insertBefore): Use ExceptionOr.
+        (WebCore::JSNode::replaceChild): Ditto.
+        (WebCore::JSNode::removeChild): Ditto.
+        (WebCore::JSNode::appendChild): Ditto.
+
+        * dom/Attr.cpp:
+        (WebCore::Attr::Attr): Take a reference.
+        (WebCore::Attr::create): Ditto.
+        (WebCore::Attr::createTextChild): Use a Ref.
+        (WebCore::Attr::setPrefix): Use ExceptionOr.
+        (WebCore::Attr::setNodeValue): Ditto.
+        (WebCore::Attr::attachToElement): Take a reference.
+        * dom/Attr.h: Updated for above. Also made setPrefix private.
+
+        * dom/CharacterData.cpp:
+        (WebCore::CharacterData::setNodeValue): Use ExceptionOr.
+        * dom/CharacterData.h: Updated for the above.
+
+        * dom/ContainerNode.cpp:
+        (WebCore::collectChildrenAndRemoveFromOldParent): Use ExceptionOr.
+        (WebCore::checkAcceptChild): Ditto.
+        (WebCore::checkAcceptChildGuaranteedNodeTypes): Ditto.
+        (WebCore::ContainerNode::ensurePreInsertionValidity): Ditto.
+        (WebCore::checkPreReplacementValidity): Ditto.
+        (WebCore::ContainerNode::insertBefore): Ditto.
+        (WebCore::ContainerNode::replaceChild): Ditto.
+        (WebCore::ContainerNode::removeChild): Ditto.
+        (WebCore::ContainerNode::appendChild): Ditto.
+        (WebCore::ContainerNode::appendChildWithoutPreInsertionValidityCheck): Ditto.
+        (WebCore::ContainerNode::cloneChildNodes): Ditto.
+        (WebCore::ContainerNode::append): Ditto.
+        (WebCore::ContainerNode::prepend): Ditto.
+        * dom/ContainerNode.h: Updated for above changes.
+
+        * dom/Document.cpp:
+        (WebCore::Document::setTitle): Removed unneeded ASSERT_NO_EXCEPTION.
+        (WebCore::Document::setBodyOrFrameset): Removed unneeded ignored
+        exception code.
+
+        * dom/Element.cpp:
+        (WebCore::Element::setPrefix): Use ExceptionOr.
+        (WebCore::Element::setAttributeNode): Updated for changes to Attr.
+        (WebCore::Element::setAttributeNodeNS): Ditto.
+        (WebCore::Element::setOuterHTML): Use ExceptionOr.
+        (WebCore::Element::ensureAttr): Updated for changes to Attr.
+        (WebCore::Element::insertAdjacent): Use ExceptionOr.
+        * dom/Element.h: Updated for above.
+
+        * dom/Node.cpp:
+        (WebCore::Node::setNodeValue): Use ExceptionOr.
+        (WebCore::Node::insertBefore): Ditto.
+        (WebCore::Node::replaceChild): Ditto.
+        (WebCore::Node::removeChild): Ditto.
+        (WebCore::Node::appendChild): Ditto.
+        (WebCore::Node::convertNodesOrStringsIntoNode): Ditto.
+        (WebCore::Node::before): Ditto.
+        (WebCore::Node::after): Ditto.
+        (WebCore::Node::replaceWith): Ditto.
+        (WebCore::Node::remove): Ditto.
+        (WebCore::Node::cloneNodeForBindings): Ditto.
+        (WebCore::Node::setPrefix): Ditto.
+        (WebCore::Node::checkSetPrefix): Ditto.
+        (WebCore::Node::setTextContent): Ditto.
+        * dom/Node.h: Updated for above.
+        * dom/Node.idl: Use non-legacy exceptions.
+
+        * dom/Range.cpp:
+        (WebCore::Range::processContents): Use ExceptionOr.
+        (WebCore::processContentsBetweenOffsets): Ditto.
+        (WebCore::processNodes): Ditto.
+        (WebCore::processAncestorsAndTheirSiblings): Ditto.
+        (WebCore::Range::insertNode): Ditto.
+        (WebCore::Range::surroundContents): Ditto.
+
+        * dom/Text.cpp:
+        (WebCore::Text::splitText): Use ExceptionOr.
+        (WebCore::Text::replaceWholeText): Removed unneeded IGNORE_EXCEPTION.
+
+        * editing/AppendNodeCommand.cpp:
+        (WebCore::AppendNodeCommand::doApply): Removed unneeded IGNORE_EXCEPTION.
+        * editing/CompositeEditCommand.cpp:
+        (WebCore::CompositeEditCommand::insertNewDefaultParagraphElementAt): Ditto.
+
+        * editing/EditorCommand.cpp:
+        (WebCore::executeInsertNode): Use ExceptionOr.
+
+        * editing/InsertNodeBeforeCommand.cpp:
+        (WebCore::InsertNodeBeforeCommand::doApply): Removed unneeded IGNORE_EXCEPTION.
+        * editing/MergeIdenticalElementsCommand.cpp:
+        (WebCore::MergeIdenticalElementsCommand::doApply): Ditto.
+        (WebCore::MergeIdenticalElementsCommand::doUnapply): Use ExceptionOr.
+
+        * editing/RemoveNodeCommand.cpp:
+        (WebCore::RemoveNodeCommand::doUnapply): Removed unneeded IGNORE_EXCEPTION.
+        * editing/ReplaceNodeWithSpanCommand.cpp:
+        (WebCore::swapInNodePreservingAttributesAndChildren): Removed unneeded
+        ASSERT_NO_EXCEPTION.
+        * editing/ReplaceSelectionCommand.cpp:
+        (WebCore::ReplacementFragment::removeNode): Ditto.
+        (WebCore::ReplacementFragment::insertNodeBefore): Ditto.
+        (WebCore::ReplacementFragment::insertFragmentForTestRendering): Ditto.
+        (WebCore::ReplacementFragment::restoreAndRemoveTestRenderingNodesToFragment): Ditto.
+        (WebCore::ReplaceSelectionCommand::insertAsListItems): Ditto.
+
+        * editing/SplitElementCommand.cpp:
+        (WebCore::SplitElementCommand::executeApply): Use ExceptionOr.
+        (WebCore::SplitElementCommand::doUnapply): Removed unneeded IGNORE_EXCEPTION.
+
+        * editing/SplitTextNodeCommand.cpp:
+        (WebCore::SplitTextNodeCommand::insertText1AndTrimText2): Use ExceptionOr.
+
+        * editing/WrapContentsInDummySpanCommand.cpp:
+        (WebCore::WrapContentsInDummySpanCommand::executeApply): Removed unneeded
+        IGNORE_EXCEPTION.
+        (WebCore::WrapContentsInDummySpanCommand::doUnapply): Ditto.
+
+        * editing/cocoa/EditorCocoa.mm:
+        (WebCore::Editor::styleForSelectionStart): Removed unneeded ASSERT_NO_EXCEPTION
+        and IGNORE_EXCEPTION.
+        * editing/htmlediting.cpp:
+        (WebCore::createTabSpanElement): Ditto.
+        * editing/markup.cpp:
+        (WebCore::fillContainerFromString): Ditto.
+        (WebCore::createFragmentFromText): Ditto.
+        (WebCore::removeElementFromFragmentPreservingChildren): Ditto.
+        (WebCore::replaceChildrenWithFragment): Use ExceptionOr.
+        (WebCore::replaceChildrenWithText): Ditto.
+
+        * editing/ios/EditorIOS.mm:
+        (WebCore::Editor::WebContentReader::addFragment): Removed unneeded exception
+        ignoring code.
+        (WebCore::Editor::setDictationPhrasesAsChildOfElement): Ditto.
+        (WebCore::Editor::setTextAsChildOfElement): Ditto.
+
+        * html/ColorInputType.cpp:
+        (WebCore::ColorInputType::createShadowSubtree): Removed unneeded
+        ASSERT_NO_EXCEPTION.
+
+        * html/FTPDirectoryDocument.cpp:
+        (WebCore::FTPDirectoryDocumentParser::appendEntry): Removed unneeded
+        IGNORE_EXCEPTION.
+        (WebCore::FTPDirectoryDocumentParser::createTDForFilename): Ditto.
+        (WebCore::FTPDirectoryDocumentParser::loadDocumentTemplate): Ditto.
+        (WebCore::FTPDirectoryDocumentParser::createBasicDocument): Ditto.
+        * html/FileInputType.cpp:
+        (WebCore::FileInputType::createShadowSubtree): Ditto.
+
+        * html/HTMLAnchorElement.cpp:
+        (WebCore::HTMLAnchorElement::setText): Removed unneeded ASSERT_NO_EXCEPTION.
+        * html/HTMLDetailsElement.cpp:
+        (WebCore::HTMLDetailsElement::didAddUserAgentShadowRoot): Ditto.
+
+        * html/HTMLElement.cpp:
+        (WebCore::HTMLElement::textToFragment): Use ExceptionOr.
+        (WebCore::HTMLElement::setOuterText): Ditto.
+
+        * html/HTMLKeygenElement.cpp:
+        (WebCore::HTMLKeygenElement::HTMLKeygenElement): Removed unneeded
+        ASSERT_NO_EXCEPTION and IGNORE_EXCEPTION.
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::createMediaControls): Ditto.
+        * html/HTMLMeterElement.cpp:
+        (WebCore::HTMLMeterElement::didAddUserAgentShadowRoot): Ditto.
+        * html/HTMLOptionElement.cpp:
+        (WebCore::HTMLOptionElement::createForJSConstructor): Use ExceptionOr.
+        (WebCore::HTMLOptionElement::setText): Removed unneeded
+        ASSERT_NO_EXCEPTION and IGNORE_EXCEPTION.
+
+        * html/HTMLOptionsCollection.cpp:
+        (WebCore::HTMLOptionsCollection::remove): Call remove, not removeByIndex,
+        since we were able to change the name.
+
+        * html/HTMLOutputElement.cpp:
+        (WebCore::HTMLOutputElement::setTextContentInternal): Removed unneeded
+        ASSERT_NO_EXCEPTION and IGNORE_EXCEPTION.
+        * html/HTMLProgressElement.cpp:
+        (WebCore::HTMLProgressElement::didAddUserAgentShadowRoot): Ditto.
+        * html/HTMLScriptElement.cpp:
+        (WebCore::HTMLScriptElement::setText): Ditto.
+
+        * html/HTMLSelectElement.cpp:
+        (WebCore::HTMLSelectElement::add): Use ExceptionOr.
+        (WebCore::HTMLSelectElement::remove): Renamed from removeByIndex since
+        there is no conflict with remove any more.
+        (WebCore::HTMLSelectElement::setOption): Call remove.
+        * html/HTMLSelectElement.h: Updated for above.
+        * html/HTMLSelectElement.idl: Got rid of ImplementedAs=removeByIndex.
+
+        * html/HTMLSummaryElement.cpp:
+        (WebCore::HTMLSummaryElement::didAddUserAgentShadowRoot): Removed unneeded
+        ASSERT_NO_EXCEPTION and IGNORE_EXCEPTION.
+        * html/HTMLTableElement.cpp:
+        (WebCore::HTMLTableElement::HTMLTableElement): Initialize data members in
+        class definition instead of here.
+        (WebCore::HTMLTableElement::caption): Simplified using childrenOfType.
+        (WebCore::HTMLTableElement::setCaption): Use ExceptionOr.
+        (WebCore::HTMLTableElement::setTHead): Ditto.
+        (WebCore::HTMLTableElement::setTFoot): Ditto.
+        (WebCore::HTMLTableElement::deleteTFoot): Removed unneeded ASSERT_NO_EXCEPTION
+        and IGNORE_EXCEPTION.
+        (WebCore::HTMLTableElement::createTBody): Ditto.
+        (WebCore::HTMLTableElement::deleteCaption): Ditto.
+        (WebCore::HTMLTableElement::insertRow): Use ExceptionOr.
+        * html/HTMLTableElement.h: Updated for above.
+
+        * html/HTMLTableRowElement.cpp:
+        (WebCore::HTMLTableRowElement::insertCell): Use ExceptionOr.
+        (WebCore::HTMLTableRowElement::deleteCell): Ditto.
+        * html/HTMLTableSectionElement.cpp:
+        (WebCore::HTMLTableSectionElement::insertRow): Ditto.
+        (WebCore::HTMLTableSectionElement::deleteRow): Ditto.
+
+        * html/HTMLTextAreaElement.cpp:
+        (WebCore::HTMLTextAreaElement::didAddUserAgentShadowRoot): Removed unneeded
+        ASSERT_NO_EXCEPTION and IGNORE_EXCEPTION.
+        (WebCore::HTMLTextAreaElement::setDefaultValue): Ditto.
+        (WebCore::HTMLTextAreaElement::updatePlaceholderText): Ditto.
+        * html/HTMLTextFormControlElement.cpp:
+        (WebCore::HTMLTextFormControlElement::setInnerTextValue): Ditto.
+        * html/HTMLTitleElement.cpp:
+        (WebCore::HTMLTitleElement::setText): Ditto.
+        * html/MediaDocument.cpp:
+        (WebCore::MediaDocumentParser::createDocumentStructure): Ditto.
+        (WebCore::MediaDocument::replaceMediaElementTimerFired): Ditto.
+        * html/PluginDocument.cpp:
+        (WebCore::PluginDocumentParser::createDocumentStructure): Ditto.
+        * html/RangeInputType.cpp:
+        (WebCore::RangeInputType::createShadowSubtree): Ditto.
+        * html/SearchInputType.cpp:
+        (WebCore::SearchInputType::createShadowSubtree): Ditto.
+        * html/TextFieldInputType.cpp:
+        (WebCore::TextFieldInputType::createShadowSubtree): Ditto.
+        (WebCore::TextFieldInputType::updatePlaceholderText): Ditto.
+        (WebCore::TextFieldInputType::createContainer): Ditto.
+        (WebCore::TextFieldInputType::createAutoFillButton): Ditto.
+        * html/ValidationMessage.cpp:
+        (WebCore::ValidationMessage::setMessageDOMAndStartTimer): Ditto.
+        (WebCore::ValidationMessage::buildBubbleTree): Ditto.
+        (WebCore::ValidationMessage::deleteBubbleTree): Ditto.
+        * html/shadow/MediaControlElements.cpp:
+        (WebCore::MediaControlTextTrackContainerElement::updateDisplay): Ditto.
+        * html/shadow/MediaControls.cpp:
+        (WebCore::MediaControls::createTextTrackDisplay): Ditto.
+
+        * html/shadow/MediaControlsApple.cpp:
+        (WebCore::MediaControlsApple::MediaControlsApple): Initialize data members
+        in class definition instead of here.
+        (WebCore::MediaControlsApple::tryCreateControls): Use ExceptionOr.
+        * html/shadow/MediaControlsApple.h: Updated for above.
+
+        * html/track/VTTCue.cpp:
+        (WebCore::VTTCue::copyWebVTTNodeToDOMTree): Removed unneeded ASSERT_NO_EXCEPTION
+        and IGNORE_EXCEPTION.
+        (WebCore::VTTCue::getDisplayTree): Ditto.
+        * html/track/VTTRegion.cpp:
+        (WebCore::VTTRegion::appendTextTrackCueBox): Ditto.
+
+        * inspector/DOMEditor.cpp: Use ExceptionOr in action classes.
+        (WebCore::DOMEditor::DOMEditor): Take a reference.
+        (WebCore::DOMEditor::insertBefore): Use ExceptionOr.
+        (WebCore::DOMEditor::removeChild): Ditto.
+        (WebCore::DOMEditor::setAttribute): Ditto.
+        (WebCore::DOMEditor::removeAttribute): Ditto.
+        (WebCore::DOMEditor::setOuterHTML): Ditto.
+        (WebCore::DOMEditor::replaceWholeText): Ditto.
+        (WebCore::DOMEditor::replaceChild): Ditto.
+        (WebCore::DOMEditor::setNodeValue): Ditto.
+        (WebCore::populateErrorString): Ditto.
+        * inspector/DOMEditor.h: Updated for above changes.
+
+        * inspector/DOMPatchSupport.cpp:
+        (WebCore::DOMPatchSupport::patchDocument): Updated to use references,
+        to use ExceptionOr, and to use a struct without a constructor for Digest.
+        (WebCore::DOMPatchSupport::DOMPatchSupport): Ditto.
+        (WebCore::DOMPatchSupport::patchNode): Ditto.
+        (WebCore::DOMPatchSupport::innerPatchNode): Ditto.
+        (WebCore::DOMPatchSupport::diff): Ditto.
+        (WebCore::DOMPatchSupport::innerPatchChildren): Ditto.
+        (WebCore::DOMPatchSupport::createDigest): Ditto.
+        (WebCore::DOMPatchSupport::insertBeforeAndMarkAsUsed): Ditto.
+        (WebCore::DOMPatchSupport::removeChildAndMoveToNew): Ditto.
+        (WebCore::DOMPatchSupport::markNodeAsUsed): Ditto.
+        * inspector/DOMPatchSupport.h: Updated for above.
+
+        * inspector/InspectorCSSAgent.cpp: Use ExceptionOr in the action classes.
+        (WebCore::InspectorCSSAgent::getStyleSheetText): Use ExceptionOr.
+        (WebCore::InspectorCSSAgent::setStyleSheetText): Ditto.
+        (WebCore::InspectorCSSAgent::setStyleText): Ditto.
+        (WebCore::InspectorCSSAgent::setRuleSelector): Ditto.
+        (WebCore::InspectorCSSAgent::createInspectorStyleSheetForDocument): Ditto.
+        (WebCore::InspectorCSSAgent::addRule): Ditto.
+        * inspector/InspectorDOMAgent.cpp:
+        (WebCore::InspectorDOMAgent::didCreateFrontendAndBackend): Ditto.
+        (WebCore::InspectorDOMAgent::setAttributeValue): Ditto.
+        (WebCore::InspectorDOMAgent::setAttributesAsText): Ditto.
+        (WebCore::InspectorDOMAgent::removeAttribute): Ditto.
+        (WebCore::InspectorDOMAgent::setOuterHTML): Ditto.
+        (WebCore::InspectorDOMAgent::setNodeValue): Ditto.
+        (WebCore::InspectorDOMAgent::undo): Ditto.
+        (WebCore::InspectorDOMAgent::redo): Ditto.
+
+        * inspector/InspectorHistory.cpp:
+        (WebCore::InspectorHistory::Action::Action): Moved to header.
+        (WebCore::InspectorHistory::Action::~Action): Ditto.
+        (WebCore::InspectorHistory::Action::toString): Ditto.
+        (WebCore::InspectorHistory::Action::isUndoableStateMark): Ditto.
+        (WebCore::InspectorHistory::Action::mergeId): Ditto.
+        (WebCore::InspectorHistory::Action::merge): Ditto.
+        (WebCore::InspectorHistory::InspectorHistory): Deleted.
+        (WebCore::InspectorHistory::~InspectorHistory): Deleted.
+        (WebCore::InspectorHistory::perform): Updated exception handling.
+        (WebCore::InspectorHistory::markUndoableState): Ditto.
+        (WebCore::InspectorHistory::undo): Ditto.
+        (WebCore::InspectorHistory::redo): Ditto.
+        * inspector/InspectorHistory.h: Updated for above.
+
+        * inspector/InspectorPageAgent.cpp:
+        (WebCore::InspectorPageAgent::setDocumentContent): Use reference.
+
+        * inspector/InspectorStyleSheet.cpp:
+        (WebCore::InspectorStyle::text): Use ExceptionOr and renamed from
+        getText since this now has a return value.
+        (WebCore::InspectorStyle::populateAllProperties): Updated for above.
+        (WebCore::InspectorStyle::setText): Use ExceptionOr.
+        (WebCore::InspectorStyleSheet::setText): Ditto.
+        (WebCore::InspectorStyleSheet::ruleSelector): Ditto.
+        (WebCore::InspectorStyleSheet::setRuleSelector): Ditto.
+        (WebCore::InspectorStyleSheet::addRule): Ditto.
+        (WebCore::InspectorStyleSheet::deleteRule): Ditto.
+        (WebCore::InspectorStyleSheet::buildObjectForStyleSheet): Ditto.
+        (WebCore::InspectorStyleSheet::buildObjectForStyle): Ditto.
+        (WebCore::InspectorStyleSheet::setStyleText): Ditto.
+        (WebCore::InspectorStyleSheet::text): Use ExceptionOr and renamed.
+        (WebCore::InspectorStyleSheet::checkPageStyleSheet): Deleted.
+        Just wrote this code inline in each place this was called since it's
+        just a single null check.
+        (WebCore::InspectorStyleSheetForInlineStyle::text): Use ExceptionOr
+        and renamed.
+        (WebCore::InspectorStyleSheetForInlineStyle::setStyleText): Ditto.
+        (WebCore::InspectorStyle::getText): Deleted.
+        * inspector/InspectorStyleSheet.h: Updated for above changes.
+
+        * page/DragController.cpp:
+        (WebCore::documentFragmentFromDragData): Removed unneeded
+        ASSERT_NO_EXCEPTION and IGNORE_EXCEPTION.
+        * page/ios/FrameIOS.mm:
+        (WebCore::Frame::initWithSimpleHTMLDocument): Ditto.
+        * svg/SVGTRefElement.cpp:
+        (WebCore::SVGTRefElement::updateReferencedText): Ditto.
+        (WebCore::SVGTRefElement::detachTarget): Ditto.
+        * xml/XMLTreeViewer.cpp:
+        (WebCore::XMLTreeViewer::transformDocumentToTreeView): Ditto.
+
</ins><span class="cx"> 2016-11-10  Jiewen Tan  &lt;jiewen_tan@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Rename CryptoKeyUsage to CryptoKeyUsageBitmap and CryptoKey::Usage to CryptoKeyUsage
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSHTMLSelectElementCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSHTMLSelectElementCustom.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSHTMLSelectElementCustom.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/bindings/js/JSHTMLSelectElementCustom.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     if (value.isUndefinedOrNull()) {
</span><del>-        element.removeByIndex(index);
</del><ins>+        element.remove(index);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSNodeCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -123,13 +123,7 @@
</span><span class="cx">     if (UNLIKELY(!newChild))
</span><span class="cx">         return JSValue::decode(throwArgumentTypeError(state, scope, 0, &quot;node&quot;, &quot;Node&quot;, &quot;insertBefore&quot;, &quot;Node&quot;));
</span><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
-    if (UNLIKELY(!wrapped().insertBefore(*newChild, JSNode::toWrapped(state.uncheckedArgument(1)), ec))) {
-        setDOMException(&amp;state, ec);
-        return jsUndefined();
-    }
-
-    ASSERT(!ec);
</del><ins>+    propagateException(state, scope, wrapped().insertBefore(*newChild, JSNode::toWrapped(state.uncheckedArgument(1))));
</ins><span class="cx">     return newChildValue;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -150,13 +144,7 @@
</span><span class="cx">         return JSValue::decode(throwArgumentTypeError(state, scope, 1, &quot;child&quot;, &quot;Node&quot;, &quot;replaceChild&quot;, &quot;Node&quot;));
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
-    if (UNLIKELY(!wrapped().replaceChild(*newChild, *oldChild, ec))) {
-        setDOMException(&amp;state, ec);
-        return jsUndefined();
-    }
-
-    ASSERT(!ec);
</del><ins>+    propagateException(state, scope, wrapped().replaceChild(*newChild, *oldChild));
</ins><span class="cx">     return oldChildValue;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -170,13 +158,7 @@
</span><span class="cx">     if (UNLIKELY(!child))
</span><span class="cx">         return JSValue::decode(throwArgumentTypeError(state, scope, 0, &quot;child&quot;, &quot;Node&quot;, &quot;removeChild&quot;, &quot;Node&quot;));
</span><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
-    if (UNLIKELY(!wrapped().removeChild(*child, ec))) {
-        setDOMException(&amp;state, ec);
-        return jsUndefined();
-    }
-
-    ASSERT(!ec);
</del><ins>+    propagateException(state, scope, wrapped().removeChild(*child));
</ins><span class="cx">     return childValue;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -190,13 +172,7 @@
</span><span class="cx">     if (UNLIKELY(!newChild))
</span><span class="cx">         return JSValue::decode(throwArgumentTypeError(state, scope, 0, &quot;node&quot;, &quot;Node&quot;, &quot;appendChild&quot;, &quot;Node&quot;));
</span><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
-    if (UNLIKELY(!wrapped().appendChild(*newChild, ec))) {
-        setDOMException(&amp;state, ec);
-        return jsUndefined();
-    }
-
-    ASSERT(!ec);
</del><ins>+    propagateException(state, scope, wrapped().appendChild(*newChild));
</ins><span class="cx">     return newChildValue;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomAttrcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Attr.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Attr.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/dom/Attr.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -38,9 +38,9 @@
</span><span class="cx"> 
</span><span class="cx"> using namespace HTMLNames;
</span><span class="cx"> 
</span><del>-Attr::Attr(Element* element, const QualifiedName&amp; name)
-    : ContainerNode(element-&gt;document())
-    , m_element(element)
</del><ins>+Attr::Attr(Element&amp; element, const QualifiedName&amp; name)
+    : ContainerNode(element.document())
+    , m_element(&amp;element)
</ins><span class="cx">     , m_name(name)
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="lines">@@ -52,7 +52,7 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Ref&lt;Attr&gt; Attr::create(Element* element, const QualifiedName&amp; name)
</del><ins>+Ref&lt;Attr&gt; Attr::create(Element&amp; element, const QualifiedName&amp; name)
</ins><span class="cx"> {
</span><span class="cx">     Ref&lt;Attr&gt; attr = adoptRef(*new Attr(element, name));
</span><span class="cx">     attr-&gt;createTextChild();
</span><span class="lines">@@ -74,34 +74,31 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(refCount());
</span><span class="cx">     if (!value().isEmpty()) {
</span><del>-        RefPtr&lt;Text&gt; textNode = document().createTextNode(value().string());
</del><ins>+        auto textNode = document().createTextNode(value().string());
</ins><span class="cx"> 
</span><span class="cx">         // This does everything appendChild() would do in this situation (assuming m_ignoreChildrenChanged was set),
</span><span class="cx">         // but much more efficiently.
</span><span class="cx">         textNode-&gt;setParentNode(this);
</span><del>-        setFirstChild(textNode.get());
-        setLastChild(textNode.get());
</del><ins>+        setFirstChild(textNode.ptr());
+        setLastChild(textNode.ptr());
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Attr::setPrefix(const AtomicString&amp; prefix, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; Attr::setPrefix(const AtomicString&amp; prefix)
</ins><span class="cx"> {
</span><del>-    ec = 0;
-    checkSetPrefix(prefix, ec);
-    if (ec)
-        return;
</del><ins>+    auto result = checkSetPrefix(prefix);
+    if (result.hasException())
+        return result.releaseException();
</ins><span class="cx"> 
</span><del>-    if ((prefix == xmlnsAtom &amp;&amp; namespaceURI() != XMLNSNames::xmlnsNamespaceURI)
-        || static_cast&lt;Attr*&gt;(this)-&gt;qualifiedName() == xmlnsAtom) {
-        ec = NAMESPACE_ERR;
-        return;
-    }
</del><ins>+    if ((prefix == xmlnsAtom &amp;&amp; namespaceURI() != XMLNSNames::xmlnsNamespaceURI) || qualifiedName() == xmlnsAtom)
+        return Exception { NAMESPACE_ERR };
</ins><span class="cx"> 
</span><span class="cx">     const AtomicString&amp; newPrefix = prefix.isEmpty() ? nullAtom : prefix;
</span><del>-
</del><span class="cx">     if (m_element)
</span><span class="cx">         elementAttribute().setPrefix(newPrefix);
</span><span class="cx">     m_name.setPrefix(newPrefix);
</span><ins>+
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Attr::setValue(const AtomicString&amp; value)
</span><span class="lines">@@ -125,16 +122,15 @@
</span><span class="cx">     AtomicString oldValue = this-&gt;value();
</span><span class="cx">     if (m_element)
</span><span class="cx">         m_element-&gt;willModifyAttribute(qualifiedName(), oldValue, value);
</span><del>-
</del><span class="cx">     setValue(value);
</span><del>-
</del><span class="cx">     if (m_element)
</span><span class="cx">         m_element-&gt;didModifyAttribute(qualifiedName(), oldValue, value);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Attr::setNodeValue(const String&amp; v, ExceptionCode&amp;)
</del><ins>+ExceptionOr&lt;void&gt; Attr::setNodeValue(const String&amp; value)
</ins><span class="cx"> {
</span><del>-    setValueForBindings(v);
</del><ins>+    setValueForBindings(value);
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;Node&gt; Attr::cloneNodeInternal(Document&amp; targetDocument, CloningOperation)
</span><span class="lines">@@ -212,10 +208,10 @@
</span><span class="cx">     m_element = nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Attr::attachToElement(Element* element)
</del><ins>+void Attr::attachToElement(Element&amp; element)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(!m_element);
</span><del>-    m_element = element;
</del><ins>+    m_element = &amp;element;
</ins><span class="cx">     m_standaloneValue = nullAtom;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomAttrh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Attr.h (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Attr.h        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/dom/Attr.h        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx"> 
</span><span class="cx"> class Attr final : public ContainerNode {
</span><span class="cx"> public:
</span><del>-    static Ref&lt;Attr&gt; create(Element*, const QualifiedName&amp;);
</del><ins>+    static Ref&lt;Attr&gt; create(Element&amp;, const QualifiedName&amp;);
</ins><span class="cx">     static Ref&lt;Attr&gt; create(Document&amp;, const QualifiedName&amp;, const AtomicString&amp; value);
</span><span class="cx">     virtual ~Attr();
</span><span class="cx"> 
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT CSSStyleDeclaration* style();
</span><span class="cx"> 
</span><del>-    void attachToElement(Element*);
</del><ins>+    void attachToElement(Element&amp;);
</ins><span class="cx">     void detachFromElementWithValue(const AtomicString&amp;);
</span><span class="cx"> 
</span><span class="cx">     const AtomicString&amp; namespaceURI() const final { return m_name.namespaceURI(); }
</span><span class="lines">@@ -67,26 +67,27 @@
</span><span class="cx">     const AtomicString&amp; localName() const final { return m_name.localName(); }
</span><span class="cx">     const AtomicString&amp; prefix() const final { return m_name.prefix(); }
</span><span class="cx"> 
</span><del>-    void setPrefix(const AtomicString&amp;, ExceptionCode&amp;) final;
-
</del><span class="cx"> private:
</span><del>-    Attr(Element*, const QualifiedName&amp;);
</del><ins>+    Attr(Element&amp;, const QualifiedName&amp;);
</ins><span class="cx">     Attr(Document&amp;, const QualifiedName&amp;, const AtomicString&amp; value);
</span><span class="cx"> 
</span><span class="cx">     void createTextChild();
</span><span class="cx"> 
</span><del>-    String nodeName() const override { return name(); }
-    NodeType nodeType() const override { return ATTRIBUTE_NODE; }
</del><ins>+    String nodeName() const final { return name(); }
+    NodeType nodeType() const final { return ATTRIBUTE_NODE; }
</ins><span class="cx"> 
</span><del>-    String nodeValue() const override { return value(); }
-    void setNodeValue(const String&amp;, ExceptionCode&amp;) override;
-    Ref&lt;Node&gt; cloneNodeInternal(Document&amp;, CloningOperation) override;
</del><ins>+    String nodeValue() const final { return value(); }
+    ExceptionOr&lt;void&gt; setNodeValue(const String&amp;) final;
</ins><span class="cx"> 
</span><del>-    bool isAttributeNode() const override { return true; }
-    bool childTypeAllowed(NodeType) const override;
</del><ins>+    ExceptionOr&lt;void&gt; setPrefix(const AtomicString&amp;) final;
</ins><span class="cx"> 
</span><del>-    void childrenChanged(const ChildChange&amp;) override;
</del><ins>+    Ref&lt;Node&gt; cloneNodeInternal(Document&amp;, CloningOperation) final;
</ins><span class="cx"> 
</span><ins>+    bool isAttributeNode() const final { return true; }
+    bool childTypeAllowed(NodeType) const final;
+
+    void childrenChanged(const ChildChange&amp;) final;
+
</ins><span class="cx">     Attribute&amp; elementAttribute();
</span><span class="cx"> 
</span><span class="cx">     // Attr wraps either an element/name, or a name/value pair (when it's a standalone Node.)
</span></span></pre></div>
<a id="trunkSourceWebCoredomCharacterDatacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/CharacterData.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/CharacterData.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/dom/CharacterData.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -179,9 +179,10 @@
</span><span class="cx">     return m_data.containsOnlyWhitespace();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CharacterData::setNodeValue(const String&amp; nodeValue, ExceptionCode&amp;)
</del><ins>+ExceptionOr&lt;void&gt; CharacterData::setNodeValue(const String&amp; nodeValue)
</ins><span class="cx"> {
</span><span class="cx">     setData(nodeValue);
</span><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void CharacterData::setDataAndUpdate(const String&amp; newData, unsigned offsetOfReplacedData, unsigned oldLength, unsigned newLength)
</span></span></pre></div>
<a id="trunkSourceWebCoredomCharacterDatah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/CharacterData.h (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/CharacterData.h        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/dom/CharacterData.h        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -62,7 +62,7 @@
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     String nodeValue() const final;
</span><del>-    void setNodeValue(const String&amp;, ExceptionCode&amp;) final;
</del><ins>+    ExceptionOr&lt;void&gt; setNodeValue(const String&amp;) final;
</ins><span class="cx">     bool isCharacterDataNode() const final { return true; }
</span><span class="cx">     int maxCharacterOffset() const final;
</span><span class="cx">     bool offsetInCharacters() const final;
</span></span></pre></div>
<a id="trunkSourceWebCoredomContainerNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ContainerNode.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ContainerNode.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/dom/ContainerNode.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -74,17 +74,19 @@
</span><span class="cx"> unsigned NoEventDispatchAssertion::s_count = 0;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-static void collectChildrenAndRemoveFromOldParent(Node&amp; node, NodeVector&amp; nodes, ExceptionCode&amp; ec)
</del><ins>+static ExceptionOr&lt;void&gt; collectChildrenAndRemoveFromOldParent(Node&amp; node, NodeVector&amp; nodes)
</ins><span class="cx"> {
</span><span class="cx">     if (!is&lt;DocumentFragment&gt;(node)) {
</span><span class="cx">         nodes.append(node);
</span><del>-        if (ContainerNode* oldParent = node.parentNode())
-            oldParent-&gt;removeChild(node, ec);
-        return;
</del><ins>+        auto* oldParent = node.parentNode();
+        if (!oldParent)
+            return { };
+        return oldParent-&gt;removeChild(node);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     getChildNodes(node, nodes);
</span><span class="cx">     downcast&lt;DocumentFragment&gt;(node).removeChildren();
</span><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // FIXME: This function must get a new name.
</span><span class="lines">@@ -178,7 +180,7 @@
</span><span class="cx">         : newChild.contains(&amp;newParent);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline ExceptionCode checkAcceptChild(ContainerNode&amp; newParent, Node&amp; newChild, const Node* refChild, Document::AcceptChildOperation operation)
</del><ins>+static inline ExceptionOr&lt;void&gt; checkAcceptChild(ContainerNode&amp; newParent, Node&amp; newChild, const Node* refChild, Document::AcceptChildOperation operation)
</ins><span class="cx"> {
</span><span class="cx">     // Use common case fast path if possible.
</span><span class="cx">     if ((newChild.isElementNode() || newChild.isTextNode()) &amp;&amp; newParent.isElementNode()) {
</span><span class="lines">@@ -185,69 +187,63 @@
</span><span class="cx">         ASSERT(!newParent.isDocumentTypeNode());
</span><span class="cx">         ASSERT(isChildTypeAllowed(newParent, newChild));
</span><span class="cx">         if (containsConsideringHostElements(newChild, newParent))
</span><del>-            return HIERARCHY_REQUEST_ERR;
</del><ins>+            return Exception { HIERARCHY_REQUEST_ERR };
</ins><span class="cx">         if (operation == Document::AcceptChildOperation::InsertOrAdd &amp;&amp; refChild &amp;&amp; refChild-&gt;parentNode() != &amp;newParent)
</span><del>-            return NOT_FOUND_ERR;
-        return 0;
</del><ins>+            return Exception { NOT_FOUND_ERR };
+        return { };
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // This should never happen, but also protect release builds from tree corruption.
</span><span class="cx">     ASSERT(!newChild.isPseudoElement());
</span><span class="cx">     if (newChild.isPseudoElement())
</span><del>-        return HIERARCHY_REQUEST_ERR;
</del><ins>+        return Exception { HIERARCHY_REQUEST_ERR };
</ins><span class="cx"> 
</span><span class="cx">     if (containsConsideringHostElements(newChild, newParent))
</span><del>-        return HIERARCHY_REQUEST_ERR;
</del><ins>+        return Exception { HIERARCHY_REQUEST_ERR };
</ins><span class="cx"> 
</span><span class="cx">     if (operation == Document::AcceptChildOperation::InsertOrAdd &amp;&amp; refChild &amp;&amp; refChild-&gt;parentNode() != &amp;newParent)
</span><del>-        return NOT_FOUND_ERR;
</del><ins>+        return Exception { NOT_FOUND_ERR };
</ins><span class="cx"> 
</span><span class="cx">     if (is&lt;Document&gt;(newParent)) {
</span><span class="cx">         if (!downcast&lt;Document&gt;(newParent).canAcceptChild(newChild, refChild, operation))
</span><del>-            return HIERARCHY_REQUEST_ERR;
</del><ins>+            return Exception { HIERARCHY_REQUEST_ERR };
</ins><span class="cx">     } else if (!isChildTypeAllowed(newParent, newChild))
</span><del>-        return HIERARCHY_REQUEST_ERR;
</del><ins>+        return Exception { HIERARCHY_REQUEST_ERR };
</ins><span class="cx"> 
</span><del>-    return 0;
</del><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline bool checkAcceptChildGuaranteedNodeTypes(ContainerNode&amp; newParent, Node&amp; newChild, ExceptionCode&amp; ec)
</del><ins>+static inline ExceptionOr&lt;void&gt; checkAcceptChildGuaranteedNodeTypes(ContainerNode&amp; newParent, Node&amp; newChild)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(!newParent.isDocumentTypeNode());
</span><span class="cx">     ASSERT(isChildTypeAllowed(newParent, newChild));
</span><del>-    if (newChild.contains(&amp;newParent)) {
-        ec = HIERARCHY_REQUEST_ERR;
-        return false;
-    }
-
-    return true;
</del><ins>+    if (newChild.contains(&amp;newParent))
+        return Exception { HIERARCHY_REQUEST_ERR };
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity
</span><del>-bool ContainerNode::ensurePreInsertionValidity(Node&amp; newChild, Node* refChild, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; ContainerNode::ensurePreInsertionValidity(Node&amp; newChild, Node* refChild)
</ins><span class="cx"> {
</span><del>-    ec = checkAcceptChild(*this, newChild, refChild, Document::AcceptChildOperation::InsertOrAdd);
-    return !ec;
</del><ins>+    return checkAcceptChild(*this, newChild, refChild, Document::AcceptChildOperation::InsertOrAdd);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // https://dom.spec.whatwg.org/#concept-node-replace
</span><del>-static inline bool checkPreReplacementValidity(ContainerNode&amp; newParent, Node&amp; newChild, Node&amp; oldChild, ExceptionCode&amp; ec)
</del><ins>+static inline ExceptionOr&lt;void&gt; checkPreReplacementValidity(ContainerNode&amp; newParent, Node&amp; newChild, Node&amp; oldChild)
</ins><span class="cx"> {
</span><del>-    ec = checkAcceptChild(newParent, newChild, &amp;oldChild, Document::AcceptChildOperation::Replace);
-    return !ec;
</del><ins>+    return checkAcceptChild(newParent, newChild, &amp;oldChild, Document::AcceptChildOperation::Replace);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool ContainerNode::insertBefore(Node&amp; newChild, Node* refChild, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; ContainerNode::insertBefore(Node&amp; newChild, Node* refChild)
</ins><span class="cx"> {
</span><span class="cx">     // Check that this node is not &quot;floating&quot;.
</span><span class="cx">     // If it is, it can be deleted as a side effect of sending mutation events.
</span><span class="cx">     ASSERT(refCount() || parentOrShadowHostNode());
</span><span class="cx"> 
</span><del>-    ec = 0;
-
</del><span class="cx">     // Make sure adding the new child is OK.
</span><del>-    if (!ensurePreInsertionValidity(newChild, refChild, ec))
-        return false;
</del><ins>+    auto validityCheckResult = ensurePreInsertionValidity(newChild, refChild);
+    if (validityCheckResult.hasException())
+        return validityCheckResult.releaseException();
</ins><span class="cx"> 
</span><span class="cx">     if (refChild == &amp;newChild)
</span><span class="cx">         refChild = newChild.nextSibling();
</span><span class="lines">@@ -254,21 +250,22 @@
</span><span class="cx"> 
</span><span class="cx">     // insertBefore(node, null) is equivalent to appendChild(node)
</span><span class="cx">     if (!refChild)
</span><del>-        return appendChildWithoutPreInsertionValidityCheck(newChild, ec);
</del><ins>+        return appendChildWithoutPreInsertionValidityCheck(newChild);
</ins><span class="cx"> 
</span><span class="cx">     Ref&lt;ContainerNode&gt; protectedThis(*this);
</span><span class="cx">     Ref&lt;Node&gt; next(*refChild);
</span><span class="cx"> 
</span><span class="cx">     NodeVector targets;
</span><del>-    collectChildrenAndRemoveFromOldParent(newChild, targets, ec);
-    if (ec)
-        return false;
</del><ins>+    auto removeResult = collectChildrenAndRemoveFromOldParent(newChild, targets);
+    if (removeResult.hasException())
+        return removeResult.releaseException();
</ins><span class="cx">     if (targets.isEmpty())
</span><del>-        return true;
</del><ins>+        return { };
</ins><span class="cx"> 
</span><span class="cx">     // We need this extra check because collectChildrenAndRemoveFromOldParent() can fire mutation events.
</span><del>-    if (!checkAcceptChildGuaranteedNodeTypes(*this, newChild, ec))
-        return false;
</del><ins>+    auto checkAcceptResult = checkAcceptChildGuaranteedNodeTypes(*this, newChild);
+    if (checkAcceptResult.hasException())
+        return checkAcceptResult.releaseException();
</ins><span class="cx"> 
</span><span class="cx">     InspectorInstrumentation::willInsertDOMNode(document(), *this);
</span><span class="cx"> 
</span><span class="lines">@@ -291,7 +288,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     dispatchSubtreeModifiedEvent();
</span><del>-    return true;
</del><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ContainerNode::insertBeforeCommon(Node&amp; nextChild, Node&amp; newChild)
</span><span class="lines">@@ -383,7 +380,7 @@
</span><span class="cx">     notifyChildInserted(newChild, ChildChangeSourceParser);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool ContainerNode::replaceChild(Node&amp; newChild, Node&amp; oldChild, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; ContainerNode::replaceChild(Node&amp; newChild, Node&amp; oldChild)
</ins><span class="cx"> {
</span><span class="cx">     // Check that this node is not &quot;floating&quot;.
</span><span class="cx">     // If it is, it can be deleted as a side effect of sending mutation events.
</span><span class="lines">@@ -391,17 +388,14 @@
</span><span class="cx"> 
</span><span class="cx">     Ref&lt;ContainerNode&gt; protectedThis(*this);
</span><span class="cx"> 
</span><del>-    ec = 0;
-
</del><span class="cx">     // Make sure replacing the old child with the new is ok
</span><del>-    if (!checkPreReplacementValidity(*this, newChild, oldChild, ec))
-        return false;
</del><ins>+    auto validityResult = checkPreReplacementValidity(*this, newChild, oldChild);
+    if (validityResult.hasException())
+        return validityResult.releaseException();
</ins><span class="cx"> 
</span><span class="cx">     // NOT_FOUND_ERR: Raised if oldChild is not a child of this node.
</span><del>-    if (oldChild.parentNode() != this) {
-        ec = NOT_FOUND_ERR;
-        return false;
-    }
</del><ins>+    if (oldChild.parentNode() != this)
+        return Exception { NOT_FOUND_ERR };
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;Node&gt; refChild = oldChild.nextSibling();
</span><span class="cx">     if (refChild.get() == &amp;newChild)
</span><span class="lines">@@ -410,14 +404,15 @@
</span><span class="cx">     NodeVector targets;
</span><span class="cx">     {
</span><span class="cx">         ChildListMutationScope mutation(*this);
</span><del>-        collectChildrenAndRemoveFromOldParent(newChild, targets, ec);
-        if (ec)
-            return false;
</del><ins>+        auto collectResult = collectChildrenAndRemoveFromOldParent(newChild, targets);
+        if (collectResult.hasException())
+            return collectResult.releaseException();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    // Does this one more time because collectChildrenAndRemoveFromOldParent() fires a MutationEvent.
-    if (!checkPreReplacementValidity(*this, newChild, oldChild, ec))
-        return false;
</del><ins>+    // Do this one more time because collectChildrenAndRemoveFromOldParent() fires a MutationEvent.
+    validityResult = checkPreReplacementValidity(*this, newChild, oldChild);
+    if (validityResult.hasException())
+        return validityResult.releaseException();
</ins><span class="cx"> 
</span><span class="cx">     // Remove the node we're replacing.
</span><span class="cx">     Ref&lt;Node&gt; protectOldChild(oldChild);
</span><span class="lines">@@ -426,13 +421,14 @@
</span><span class="cx"> 
</span><span class="cx">     // If oldChild == newChild then oldChild no longer has a parent at this point.
</span><span class="cx">     if (oldChild.parentNode()) {
</span><del>-        removeChild(oldChild, ec);
-        if (ec)
-            return false;
</del><ins>+        auto removeResult = removeChild(oldChild);
+        if (removeResult.hasException())
+            return removeResult.releaseException();
</ins><span class="cx"> 
</span><span class="cx">         // Does this one more time because removeChild() fires a MutationEvent.
</span><del>-        if (!checkPreReplacementValidity(*this, newChild, oldChild, ec))
-            return false;
</del><ins>+        validityResult = checkPreReplacementValidity(*this, newChild, oldChild);
+        if (validityResult.hasException())
+            return validityResult.releaseException();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     InspectorInstrumentation::willInsertDOMNode(document(), *this);
</span><span class="lines">@@ -462,7 +458,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     dispatchSubtreeModifiedEvent();
</span><del>-    return true;
</del><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static void willRemoveChild(ContainerNode&amp; container, Node&amp; child)
</span><span class="lines">@@ -510,7 +506,7 @@
</span><span class="cx">     disconnectSubframesIfNeeded(*this, RootAndDescendants);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool ContainerNode::removeChild(Node&amp; oldChild, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; ContainerNode::removeChild(Node&amp; oldChild)
</ins><span class="cx"> {
</span><span class="cx">     // Check that this node is not &quot;floating&quot;.
</span><span class="cx">     // If it is, it can be deleted as a side effect of sending mutation events.
</span><span class="lines">@@ -518,13 +514,9 @@
</span><span class="cx"> 
</span><span class="cx">     Ref&lt;ContainerNode&gt; protectedThis(*this);
</span><span class="cx"> 
</span><del>-    ec = 0;
-
</del><span class="cx">     // NOT_FOUND_ERR: Raised if oldChild is not a child of this node.
</span><del>-    if (oldChild.parentNode() != this) {
-        ec = NOT_FOUND_ERR;
-        return false;
-    }
</del><ins>+    if (oldChild.parentNode() != this)
+        return Exception { NOT_FOUND_ERR };
</ins><span class="cx"> 
</span><span class="cx">     Ref&lt;Node&gt; child(oldChild);
</span><span class="cx"> 
</span><span class="lines">@@ -531,10 +523,8 @@
</span><span class="cx">     willRemoveChild(*this, child);
</span><span class="cx"> 
</span><span class="cx">     // Mutation events might have moved this child into a different parent.
</span><del>-    if (child-&gt;parentNode() != this) {
-        ec = NOT_FOUND_ERR;
-        return false;
-    }
</del><ins>+    if (child-&gt;parentNode() != this)
+        return Exception { NOT_FOUND_ERR };
</ins><span class="cx"> 
</span><span class="cx">     {
</span><span class="cx">         WidgetHierarchyUpdatesSuspensionScope suspendWidgetHierarchyUpdates;
</span><span class="lines">@@ -555,7 +545,7 @@
</span><span class="cx"> 
</span><span class="cx">     dispatchSubtreeModifiedEvent();
</span><span class="cx"> 
</span><del>-    return true;
</del><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ContainerNode::removeBetween(Node* previousChild, Node* nextChild, Node&amp; oldChild)
</span><span class="lines">@@ -639,36 +629,36 @@
</span><span class="cx">     dispatchSubtreeModifiedEvent();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool ContainerNode::appendChild(Node&amp; newChild, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; ContainerNode::appendChild(Node&amp; newChild)
</ins><span class="cx"> {
</span><span class="cx">     // Check that this node is not &quot;floating&quot;.
</span><span class="cx">     // If it is, it can be deleted as a side effect of sending mutation events.
</span><span class="cx">     ASSERT(refCount() || parentOrShadowHostNode());
</span><span class="cx"> 
</span><del>-    ec = 0;
-
</del><span class="cx">     // Make sure adding the new child is ok
</span><del>-    if (!ensurePreInsertionValidity(newChild, nullptr, ec))
-        return false;
</del><ins>+    auto validityCheckResult = ensurePreInsertionValidity(newChild, nullptr);
+    if (validityCheckResult.hasException())
+        return validityCheckResult.releaseException();
</ins><span class="cx"> 
</span><del>-    return appendChildWithoutPreInsertionValidityCheck(newChild, ec);
</del><ins>+    return appendChildWithoutPreInsertionValidityCheck(newChild);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool ContainerNode::appendChildWithoutPreInsertionValidityCheck(Node&amp; newChild, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; ContainerNode::appendChildWithoutPreInsertionValidityCheck(Node&amp; newChild)
</ins><span class="cx"> {
</span><span class="cx">     Ref&lt;ContainerNode&gt; protectedThis(*this);
</span><span class="cx"> 
</span><span class="cx">     NodeVector targets;
</span><del>-    collectChildrenAndRemoveFromOldParent(newChild, targets, ec);
-    if (ec)
-        return false;
</del><ins>+    auto removeResult = collectChildrenAndRemoveFromOldParent(newChild, targets);
+    if (removeResult.hasException())
+        return removeResult.releaseException();
</ins><span class="cx"> 
</span><span class="cx">     if (targets.isEmpty())
</span><del>-        return true;
</del><ins>+        return { };
</ins><span class="cx"> 
</span><span class="cx">     // We need this extra check because collectChildrenAndRemoveFromOldParent() can fire mutation events.
</span><del>-    if (!checkAcceptChildGuaranteedNodeTypes(*this, newChild, ec))
-        return false;
</del><ins>+    auto nodeTypeResult = checkAcceptChildGuaranteedNodeTypes(*this, newChild);
+    if (nodeTypeResult.hasException())
+        return nodeTypeResult.releaseException();
</ins><span class="cx"> 
</span><span class="cx">     InspectorInstrumentation::willInsertDOMNode(document(), *this);
</span><span class="cx"> 
</span><span class="lines">@@ -693,7 +683,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     dispatchSubtreeModifiedEvent();
</span><del>-    return true;
</del><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ContainerNode::parserAppendChild(Node&amp; newChild)
</span><span class="lines">@@ -731,9 +721,7 @@
</span><span class="cx">     Document&amp; targetDocument = clone.document();
</span><span class="cx">     for (Node* child = firstChild(); child &amp;&amp; !ec; child = child-&gt;nextSibling()) {
</span><span class="cx">         Ref&lt;Node&gt; clonedChild = child-&gt;cloneNodeInternal(targetDocument, CloningOperation::SelfWithTemplateContent);
</span><del>-        clone.appendChild(clonedChild, ec);
-
-        if (!ec &amp;&amp; is&lt;ContainerNode&gt;(*child))
</del><ins>+        if (!clone.appendChild(clonedChild).hasException() &amp;&amp; is&lt;ContainerNode&gt;(*child))
</ins><span class="cx">             downcast&lt;ContainerNode&gt;(*child).cloneChildNodes(downcast&lt;ContainerNode&gt;(clonedChild.get()));
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -890,11 +878,7 @@
</span><span class="cx">     if (!node)
</span><span class="cx">         return { };
</span><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
-    appendChild(*node, ec);
-    if (ec)
-        return Exception { ec };
-    return { };
</del><ins>+    return appendChild(*node);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ExceptionOr&lt;void&gt; ContainerNode::prepend(Vector&lt;NodeOrString&gt;&amp;&amp; vector)
</span><span class="lines">@@ -907,11 +891,7 @@
</span><span class="cx">     if (!node)
</span><span class="cx">         return { };
</span><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
-    insertBefore(*node, firstChild(), ec);
-    if (ec)
-        return Exception { ec };
-    return { };
</del><ins>+    return insertBefore(*node, firstChild());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> HTMLCollection* ContainerNode::cachedHTMLCollection(CollectionType type)
</span></span></pre></div>
<a id="trunkSourceWebCoredomContainerNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ContainerNode.h (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ContainerNode.h        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/dom/ContainerNode.h        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -50,10 +50,10 @@
</span><span class="cx">     WEBCORE_EXPORT unsigned countChildNodes() const;
</span><span class="cx">     WEBCORE_EXPORT Node* traverseToChildAt(unsigned) const;
</span><span class="cx"> 
</span><del>-    bool insertBefore(Node&amp; newChild, Node* refChild, ExceptionCode&amp; = ASSERT_NO_EXCEPTION);
-    bool replaceChild(Node&amp; newChild, Node&amp; oldChild, ExceptionCode&amp; = ASSERT_NO_EXCEPTION);
-    WEBCORE_EXPORT bool removeChild(Node&amp; child, ExceptionCode&amp; = ASSERT_NO_EXCEPTION);
-    WEBCORE_EXPORT bool appendChild(Node&amp; newChild, ExceptionCode&amp; = ASSERT_NO_EXCEPTION);
</del><ins>+    ExceptionOr&lt;void&gt; insertBefore(Node&amp; newChild, Node* refChild);
+    ExceptionOr&lt;void&gt; replaceChild(Node&amp; newChild, Node&amp; oldChild);
+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; removeChild(Node&amp; child);
+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; appendChild(Node&amp; newChild);
</ins><span class="cx"> 
</span><span class="cx">     // These methods are only used during parsing.
</span><span class="cx">     // They don't send DOM mutation events or handle reparenting.
</span><span class="lines">@@ -102,7 +102,7 @@
</span><span class="cx">     ExceptionOr&lt;void&gt; append(Vector&lt;NodeOrString&gt;&amp;&amp;);
</span><span class="cx">     ExceptionOr&lt;void&gt; prepend(Vector&lt;NodeOrString&gt;&amp;&amp;);
</span><span class="cx"> 
</span><del>-    bool ensurePreInsertionValidity(Node&amp; newChild, Node* refChild, ExceptionCode&amp;);
</del><ins>+    ExceptionOr&lt;void&gt; ensurePreInsertionValidity(Node&amp; newChild, Node* refChild);
</ins><span class="cx"> 
</span><span class="cx"> protected:
</span><span class="cx">     explicit ContainerNode(Document&amp;, ConstructionType = CreateContainer);
</span><span class="lines">@@ -117,7 +117,7 @@
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     void removeBetween(Node* previousChild, Node* nextChild, Node&amp; oldChild);
</span><del>-    bool appendChildWithoutPreInsertionValidityCheck(Node&amp;, ExceptionCode&amp;);
</del><ins>+    ExceptionOr&lt;void&gt; appendChildWithoutPreInsertionValidityCheck(Node&amp;);
</ins><span class="cx">     void insertBeforeCommon(Node&amp; nextChild, Node&amp; oldChild);
</span><span class="cx">     void appendChildCommon(Node&amp;);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/dom/Document.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -1552,9 +1552,9 @@
</span><span class="cx">     updateTitle(StringWithDirection(title, LTR));
</span><span class="cx"> 
</span><span class="cx">     if (is&lt;HTMLTitleElement&gt;(m_titleElement.get()))
</span><del>-        downcast&lt;HTMLTitleElement&gt;(*m_titleElement).setTextContent(title, ASSERT_NO_EXCEPTION);
</del><ins>+        downcast&lt;HTMLTitleElement&gt;(*m_titleElement).setTextContent(title);
</ins><span class="cx">     else if (is&lt;SVGTitleElement&gt;(m_titleElement.get()))
</span><del>-        downcast&lt;SVGTitleElement&gt;(*m_titleElement).setTextContent(title, ASSERT_NO_EXCEPTION);
</del><ins>+        downcast&lt;SVGTitleElement&gt;(*m_titleElement).setTextContent(title);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Document::updateTitleElement(Element* newTitleElement)
</span><span class="lines">@@ -2561,14 +2561,9 @@
</span><span class="cx">     if (!m_documentElement)
</span><span class="cx">         return Exception { HIERARCHY_REQUEST_ERR };
</span><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
</del><span class="cx">     if (currentBody)
</span><del>-        m_documentElement-&gt;replaceChild(*newBody, *currentBody, ec);
-    else
-        m_documentElement-&gt;appendChild(*newBody, ec);
-    if (ec)
-        return Exception { ec };
-    return { };
</del><ins>+        return m_documentElement-&gt;replaceChild(*newBody, *currentBody);
+    return m_documentElement-&gt;appendChild(*newBody);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Location* Document::location() const
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/dom/Element.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -1584,14 +1584,14 @@
</span><span class="cx">     return m_tagName.toString();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Element::setPrefix(const AtomicString&amp; prefix, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; Element::setPrefix(const AtomicString&amp; prefix)
</ins><span class="cx"> {
</span><del>-    ec = 0;
-    checkSetPrefix(prefix, ec);
-    if (ec)
-        return;
</del><ins>+    auto result = checkSetPrefix(prefix);
+    if (result.hasException())
+        return result.releaseException();
</ins><span class="cx"> 
</span><span class="cx">     m_tagName.setPrefix(prefix.isEmpty() ? nullAtom : prefix);
</span><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> const AtomicString&amp; Element::imageSourceURL() const
</span><span class="lines">@@ -2124,7 +2124,7 @@
</span><span class="cx"> 
</span><span class="cx"> ExceptionOr&lt;RefPtr&lt;Attr&gt;&gt; Element::setAttributeNode(Attr&amp; attrNode)
</span><span class="cx"> {
</span><del>-    RefPtr&lt;Attr&gt; oldAttrNode = attrIfExists(attrNode.qualifiedName().localName(), shouldIgnoreAttributeCase(*this));
</del><ins>+    RefPtr&lt;Attr&gt; oldAttrNode = attrIfExists(attrNode.localName(), shouldIgnoreAttributeCase(*this));
</ins><span class="cx">     if (oldAttrNode.get() == &amp;attrNode)
</span><span class="cx">         return WTFMove(oldAttrNode);
</span><span class="cx"> 
</span><span class="lines">@@ -2136,7 +2136,7 @@
</span><span class="cx">     synchronizeAllAttributes();
</span><span class="cx">     auto&amp; elementData = ensureUniqueElementData();
</span><span class="cx"> 
</span><del>-    auto existingAttributeIndex = elementData.findAttributeIndexByName(attrNode.qualifiedName().localName(), shouldIgnoreAttributeCase(*this));
</del><ins>+    auto existingAttributeIndex = elementData.findAttributeIndexByName(attrNode.localName(), shouldIgnoreAttributeCase(*this));
</ins><span class="cx">     if (existingAttributeIndex == ElementData::attributeNotFound)
</span><span class="cx">         setAttributeInternal(elementData.findAttributeIndexByName(attrNode.qualifiedName()), attrNode.qualifiedName(), attrNode.value(), NotInSynchronizationOfLazyAttribute);
</span><span class="cx">     else {
</span><span class="lines">@@ -2154,7 +2154,7 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx">     if (attrNode.ownerElement() != this) {
</span><del>-        attrNode.attachToElement(this);
</del><ins>+        attrNode.attachToElement(*this);
</ins><span class="cx">         treeScope().adoptIfNeeded(&amp;attrNode);
</span><span class="cx">         ensureAttrNodeListForElement(*this).append(&amp;attrNode);
</span><span class="cx">     }
</span><span class="lines">@@ -2185,7 +2185,7 @@
</span><span class="cx"> 
</span><span class="cx">     setAttributeInternal(index, attrNode.qualifiedName(), attrNode.value(), NotInSynchronizationOfLazyAttribute);
</span><span class="cx"> 
</span><del>-    attrNode.attachToElement(this);
</del><ins>+    attrNode.attachToElement(*this);
</ins><span class="cx">     treeScope().adoptIfNeeded(&amp;attrNode);
</span><span class="cx">     ensureAttrNodeListForElement(*this).append(&amp;attrNode);
</span><span class="cx"> 
</span><span class="lines">@@ -2535,10 +2535,9 @@
</span><span class="cx">     if (fragment.hasException())
</span><span class="cx">         return fragment.releaseException();
</span><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
-    parent-&gt;replaceChild(fragment.releaseReturnValue().get(), *this, ec);
-    if (ec)
-        return Exception { ec };
</del><ins>+    auto replaceResult = parent-&gt;replaceChild(fragment.releaseReturnValue().get(), *this);
+    if (replaceResult.hasException())
+        return replaceResult.releaseException();
</ins><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><span class="lines">@@ -3397,7 +3396,7 @@
</span><span class="cx">     auto&amp; attrNodeList = ensureAttrNodeListForElement(*this);
</span><span class="cx">     RefPtr&lt;Attr&gt; attrNode = findAttrNodeInList(attrNodeList, name);
</span><span class="cx">     if (!attrNode) {
</span><del>-        attrNode = Attr::create(this, name);
</del><ins>+        attrNode = Attr::create(*this, name);
</ins><span class="cx">         treeScope().adoptIfNeeded(attrNode.get());
</span><span class="cx">         attrNodeList.append(attrNode);
</span><span class="cx">     }
</span><span class="lines">@@ -3647,27 +3646,24 @@
</span><span class="cx">         auto* parent = this-&gt;parentNode();
</span><span class="cx">         if (!parent)
</span><span class="cx">             return nullptr;
</span><del>-        ExceptionCode ec = 0;
-        bool success = parent-&gt;insertBefore(newChild, this, ec);
-        if (ec)
-            return Exception { ec };
-        return success ? newChild.ptr() : nullptr;
</del><ins>+        auto result = parent-&gt;insertBefore(newChild, this);
+        if (result.hasException())
+            return result.releaseException();
+        return newChild.ptr();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (equalLettersIgnoringASCIICase(where, &quot;afterbegin&quot;)) {
</span><del>-        ExceptionCode ec = 0;
-        bool success = insertBefore(newChild, firstChild(), ec);
-        if (ec)
-            return Exception { ec };
-        return success ? newChild.ptr() : nullptr;
</del><ins>+        auto result = insertBefore(newChild, firstChild());
+        if (result.hasException())
+            return result.releaseException();
+        return newChild.ptr();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (equalLettersIgnoringASCIICase(where, &quot;beforeend&quot;)) {
</span><del>-        ExceptionCode ec = 0;
-        bool success = appendChild(newChild, ec);
-        if (ec)
-            return Exception { ec };
-        return success ? newChild.ptr() : nullptr;
</del><ins>+        auto result = appendChild(newChild);
+        if (result.hasException())
+            return result.releaseException();
+        return newChild.ptr();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (equalLettersIgnoringASCIICase(where, &quot;afterend&quot;)) {
</span><span class="lines">@@ -3674,11 +3670,10 @@
</span><span class="cx">         auto* parent = this-&gt;parentNode();
</span><span class="cx">         if (!parent)
</span><span class="cx">             return nullptr;
</span><del>-        ExceptionCode ec = 0;
-        bool success = parent-&gt;insertBefore(newChild, nextSibling(), ec);
-        if (ec)
-            return Exception { ec };
-        return success ? newChild.ptr() : nullptr;
</del><ins>+        auto result = parent-&gt;insertBefore(newChild, nextSibling());
+        if (result.hasException())
+            return result.releaseException();
+        return newChild.ptr();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return Exception { SYNTAX_ERR };
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.h (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.h        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/dom/Element.h        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -218,7 +218,7 @@
</span><span class="cx">     const AtomicString&amp; prefix() const final { return m_tagName.prefix(); }
</span><span class="cx">     const AtomicString&amp; namespaceURI() const final { return m_tagName.namespaceURI(); }
</span><span class="cx"> 
</span><del>-    void setPrefix(const AtomicString&amp;, ExceptionCode&amp;) final;
</del><ins>+    ExceptionOr&lt;void&gt; setPrefix(const AtomicString&amp;) final;
</ins><span class="cx"> 
</span><span class="cx">     String nodeName() const override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Node.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Node.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/dom/Node.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -361,9 +361,10 @@
</span><span class="cx">     return String();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Node::setNodeValue(const String&amp; /*nodeValue*/, ExceptionCode&amp;)
</del><ins>+ExceptionOr&lt;void&gt; Node::setNodeValue(const String&amp;)
</ins><span class="cx"> {
</span><span class="cx">     // By default, setting nodeValue has no effect.
</span><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RefPtr&lt;NodeList&gt; Node::childNodes()
</span><span class="lines">@@ -399,40 +400,32 @@
</span><span class="cx">     return ElementTraversal::nextSibling(*this);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool Node::insertBefore(Node&amp; newChild, Node* refChild, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; Node::insertBefore(Node&amp; newChild, Node* refChild)
</ins><span class="cx"> {
</span><del>-    if (!is&lt;ContainerNode&gt;(*this)) {
-        ec = HIERARCHY_REQUEST_ERR;
-        return false;
-    }
-    return downcast&lt;ContainerNode&gt;(*this).insertBefore(newChild, refChild, ec);
</del><ins>+    if (!is&lt;ContainerNode&gt;(*this))
+        return Exception { HIERARCHY_REQUEST_ERR };
+    return downcast&lt;ContainerNode&gt;(*this).insertBefore(newChild, refChild);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool Node::replaceChild(Node&amp; newChild, Node&amp; oldChild, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; Node::replaceChild(Node&amp; newChild, Node&amp; oldChild)
</ins><span class="cx"> {
</span><del>-    if (!is&lt;ContainerNode&gt;(*this)) {
-        ec = HIERARCHY_REQUEST_ERR;
-        return false;
-    }
-    return downcast&lt;ContainerNode&gt;(*this).replaceChild(newChild, oldChild, ec);
</del><ins>+    if (!is&lt;ContainerNode&gt;(*this))
+        return Exception { HIERARCHY_REQUEST_ERR };
+    return downcast&lt;ContainerNode&gt;(*this).replaceChild(newChild, oldChild);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool Node::removeChild(Node&amp; oldChild, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; Node::removeChild(Node&amp; oldChild)
</ins><span class="cx"> {
</span><del>-    if (!is&lt;ContainerNode&gt;(*this)) {
-        ec = NOT_FOUND_ERR;
-        return false;
-    }
-    return downcast&lt;ContainerNode&gt;(*this).removeChild(oldChild, ec);
</del><ins>+    if (!is&lt;ContainerNode&gt;(*this))
+        return Exception { NOT_FOUND_ERR };
+    return downcast&lt;ContainerNode&gt;(*this).removeChild(oldChild);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool Node::appendChild(Node&amp; newChild, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; Node::appendChild(Node&amp; newChild)
</ins><span class="cx"> {
</span><del>-    if (!is&lt;ContainerNode&gt;(*this)) {
-        ec = HIERARCHY_REQUEST_ERR;
-        return false;
-    }
-    return downcast&lt;ContainerNode&gt;(*this).appendChild(newChild, ec);
</del><ins>+    if (!is&lt;ContainerNode&gt;(*this))
+        return Exception { HIERARCHY_REQUEST_ERR };
+    return downcast&lt;ContainerNode&gt;(*this).appendChild(newChild);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static HashSet&lt;RefPtr&lt;Node&gt;&gt; nodeSetPreTransformedFromNodeOrStringVector(const Vector&lt;NodeOrString&gt;&amp; vector)
</span><span class="lines">@@ -485,10 +478,9 @@
</span><span class="cx"> 
</span><span class="cx">     auto nodeToReturn = DocumentFragment::create(document());
</span><span class="cx">     for (auto&amp; node : nodes) {
</span><del>-        ExceptionCode ec = 0;
-        nodeToReturn-&gt;appendChild(node, ec);
-        if (ec)
-            return Exception { ec };
</del><ins>+        auto appendResult = nodeToReturn-&gt;appendChild(node);
+        if (appendResult.hasException())
+            return appendResult.releaseException();
</ins><span class="cx">     }
</span><span class="cx">     return RefPtr&lt;Node&gt; { WTFMove(nodeToReturn) };
</span><span class="cx"> }
</span><span class="lines">@@ -514,11 +506,7 @@
</span><span class="cx">     else
</span><span class="cx">         viablePreviousSibling = parent-&gt;firstChild();
</span><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
-    parent-&gt;insertBefore(*node, viablePreviousSibling.get(), ec);
-    if (ec)
-        return Exception { ec };
-    return { };
</del><ins>+    return parent-&gt;insertBefore(*node, viablePreviousSibling.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ExceptionOr&lt;void&gt; Node::after(Vector&lt;NodeOrString&gt;&amp;&amp; nodeOrStringVector)
</span><span class="lines">@@ -537,11 +525,7 @@
</span><span class="cx">     if (!node)
</span><span class="cx">         return { };
</span><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
-    parent-&gt;insertBefore(*node, viableNextSibling.get(), ec);
-    if (ec)
-        return Exception { ec };
-    return { };
</del><ins>+    return parent-&gt;insertBefore(*node, viableNextSibling.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ExceptionOr&lt;void&gt; Node::replaceWith(Vector&lt;NodeOrString&gt;&amp;&amp; nodeOrStringVector)
</span><span class="lines">@@ -556,22 +540,15 @@
</span><span class="cx">     auto result = convertNodesOrStringsIntoNode(WTFMove(nodeOrStringVector));
</span><span class="cx">     if (result.hasException())
</span><span class="cx">         return result.releaseException();
</span><del>-    auto node = result.releaseReturnValue();
</del><span class="cx"> 
</span><span class="cx">     if (parentNode() == parent) {
</span><del>-        if (node) {
-            ExceptionCode ec = 0;
-            parent-&gt;replaceChild(*node, *this, ec);
-            if (ec)
-                return Exception { ec };
-        } else
-            parent-&gt;removeChild(*this);
-    } else if (node) {
-        ExceptionCode ec = 0;
-        parent-&gt;insertBefore(*node, viableNextSibling.get(), ec);
-        if (ec)
-            return Exception { ec };
</del><ins>+        if (auto node = result.releaseReturnValue())
+            return parent-&gt;replaceChild(*node, *this);
+        return parent-&gt;removeChild(*this);
</ins><span class="cx">     }
</span><ins>+
+    if (auto node = result.releaseReturnValue())
+        return parent-&gt;insertBefore(*node, viableNextSibling.get());
</ins><span class="cx">     return { };
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -580,11 +557,7 @@
</span><span class="cx">     auto* parent = parentNode();
</span><span class="cx">     if (!parent)
</span><span class="cx">         return { };
</span><del>-    ExceptionCode ec = 0;
-    parent-&gt;removeChild(*this, ec);
-    if (ec)
-        return Exception { ec };
-    return { };
</del><ins>+    return parent-&gt;removeChild(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Node::normalize()
</span><span class="lines">@@ -641,12 +614,10 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;Node&gt; Node::cloneNodeForBindings(bool deep, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Ref&lt;Node&gt;&gt; Node::cloneNodeForBindings(bool deep)
</ins><span class="cx"> {
</span><del>-    if (UNLIKELY(isShadowRoot())) {
-        ec = NOT_SUPPORTED_ERR;
-        return nullptr;
-    }
</del><ins>+    if (UNLIKELY(isShadowRoot()))
+        return Exception { NOT_SUPPORTED_ERR };
</ins><span class="cx">     return cloneNode(deep);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -656,12 +627,12 @@
</span><span class="cx">     return nullAtom;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Node::setPrefix(const AtomicString&amp; /*prefix*/, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; Node::setPrefix(const AtomicString&amp;)
</ins><span class="cx"> {
</span><span class="cx">     // The spec says that for nodes other than elements and attributes, prefix is always null.
</span><span class="cx">     // It does not say what to do when the user tries to set the prefix on another type of
</span><span class="cx">     // node, however Mozilla throws a NAMESPACE_ERR exception.
</span><del>-    ec = NAMESPACE_ERR;
</del><ins>+    return Exception { NAMESPACE_ERR };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> const AtomicString&amp; Node::localName() const
</span><span class="lines">@@ -919,25 +890,25 @@
</span><span class="cx">     rareData()-&gt;clearNodeLists();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Node::checkSetPrefix(const AtomicString&amp; prefix, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; Node::checkSetPrefix(const AtomicString&amp; prefix)
</ins><span class="cx"> {
</span><span class="cx">     // Perform error checking as required by spec for setting Node.prefix. Used by
</span><span class="cx">     // Element::setPrefix() and Attr::setPrefix()
</span><span class="cx"> 
</span><del>-    if (!prefix.isEmpty() &amp;&amp; !Document::isValidName(prefix)) {
-        ec = INVALID_CHARACTER_ERR;
-        return;
-    }
</del><ins>+    if (!prefix.isEmpty() &amp;&amp; !Document::isValidName(prefix))
+        return Exception { INVALID_CHARACTER_ERR };
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: Raise NAMESPACE_ERR if prefix is malformed per the Namespaces in XML specification.
</span><span class="cx"> 
</span><del>-    const AtomicString&amp; nodeNamespaceURI = namespaceURI();
-    if ((nodeNamespaceURI.isEmpty() &amp;&amp; !prefix.isEmpty())
-        || (prefix == xmlAtom &amp;&amp; nodeNamespaceURI != XMLNames::xmlNamespaceURI)) {
-        ec = NAMESPACE_ERR;
-        return;
-    }
</del><ins>+    auto&amp; namespaceURI = this-&gt;namespaceURI();
+    if (namespaceURI.isEmpty() &amp;&amp; !prefix.isEmpty())
+        return Exception { NAMESPACE_ERR };
+    if (prefix == xmlAtom &amp;&amp; namespaceURI != XMLNames::xmlNamespaceURI)
+        return Exception { NAMESPACE_ERR };
+
</ins><span class="cx">     // Attribute-specific checks are in Attr::setPrefix().
</span><ins>+
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool Node::isDescendantOf(const Node* other) const
</span><span class="lines">@@ -1502,7 +1473,7 @@
</span><span class="cx">     return isNullString ? String() : content.toString();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Node::setTextContent(const String&amp; text, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; Node::setTextContent(const String&amp; text)
</ins><span class="cx"> {           
</span><span class="cx">     switch (nodeType()) {
</span><span class="cx">     case ATTRIBUTE_NODE:
</span><span class="lines">@@ -1510,23 +1481,23 @@
</span><span class="cx">     case CDATA_SECTION_NODE:
</span><span class="cx">     case COMMENT_NODE:
</span><span class="cx">     case PROCESSING_INSTRUCTION_NODE:
</span><del>-        setNodeValue(text, ec);
-        return;
</del><ins>+        return setNodeValue(text);
</ins><span class="cx">     case ELEMENT_NODE:
</span><span class="cx">     case DOCUMENT_FRAGMENT_NODE: {
</span><span class="cx">         auto container = makeRef(downcast&lt;ContainerNode&gt;(*this));
</span><span class="cx">         ChildListMutationScope mutation(container);
</span><span class="cx">         container-&gt;removeChildren();
</span><del>-        if (!text.isEmpty())
-            container-&gt;appendChild(document().createTextNode(text), ec);
-        return;
</del><ins>+        if (text.isEmpty())
+            return { };
+        return container-&gt;appendChild(document().createTextNode(text));
</ins><span class="cx">     }
</span><span class="cx">     case DOCUMENT_NODE:
</span><span class="cx">     case DOCUMENT_TYPE_NODE:
</span><span class="cx">         // Do nothing.
</span><del>-        return;
</del><ins>+        return { };
</ins><span class="cx">     }
</span><span class="cx">     ASSERT_NOT_REACHED();
</span><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool Node::offsetInCharacters() const
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Node.h (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Node.h        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/dom/Node.h        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -127,7 +127,7 @@
</span><span class="cx">     bool hasTagName(const SVGQualifiedName&amp;) const;
</span><span class="cx">     virtual String nodeName() const = 0;
</span><span class="cx">     virtual String nodeValue() const;
</span><del>-    virtual void setNodeValue(const String&amp;, ExceptionCode&amp;);
</del><ins>+    virtual ExceptionOr&lt;void&gt; setNodeValue(const String&amp;);
</ins><span class="cx">     virtual NodeType nodeType() const = 0;
</span><span class="cx">     virtual size_t approximateMemoryCost() const { return sizeof(*this); }
</span><span class="cx">     ContainerNode* parentNode() const;
</span><span class="lines">@@ -151,13 +151,10 @@
</span><span class="cx">     
</span><span class="cx">     void getSubresourceURLs(ListHashSet&lt;URL&gt;&amp;) const;
</span><span class="cx"> 
</span><del>-    // These should all actually return a node, but this is only important for language bindings,
-    // which will already know and hold a ref on the right node to return. Returning bool allows
-    // these methods to be more efficient since they don't need to return a ref
-    WEBCORE_EXPORT bool insertBefore(Node&amp; newChild, Node* refChild, ExceptionCode&amp;);
-    WEBCORE_EXPORT bool replaceChild(Node&amp; newChild, Node&amp; oldChild, ExceptionCode&amp;);
-    WEBCORE_EXPORT bool removeChild(Node&amp; child, ExceptionCode&amp;);
-    WEBCORE_EXPORT bool appendChild(Node&amp; newChild, ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; insertBefore(Node&amp; newChild, Node* refChild);
+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; replaceChild(Node&amp; newChild, Node&amp; oldChild);
+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; removeChild(Node&amp; child);
+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; appendChild(Node&amp; newChild);
</ins><span class="cx"> 
</span><span class="cx">     bool hasChildNodes() const { return firstChild(); }
</span><span class="cx"> 
</span><span class="lines">@@ -168,12 +165,12 @@
</span><span class="cx">     };
</span><span class="cx">     virtual Ref&lt;Node&gt; cloneNodeInternal(Document&amp;, CloningOperation) = 0;
</span><span class="cx">     Ref&lt;Node&gt; cloneNode(bool deep) { return cloneNodeInternal(document(), deep ? CloningOperation::Everything : CloningOperation::OnlySelf); }
</span><del>-    WEBCORE_EXPORT RefPtr&lt;Node&gt; cloneNodeForBindings(bool deep, ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;Ref&lt;Node&gt;&gt; cloneNodeForBindings(bool deep);
</ins><span class="cx"> 
</span><span class="cx">     virtual const AtomicString&amp; localName() const;
</span><span class="cx">     virtual const AtomicString&amp; namespaceURI() const;
</span><span class="cx">     virtual const AtomicString&amp; prefix() const;
</span><del>-    virtual void setPrefix(const AtomicString&amp;, ExceptionCode&amp;);
</del><ins>+    virtual ExceptionOr&lt;void&gt; setPrefix(const AtomicString&amp;);
</ins><span class="cx">     WEBCORE_EXPORT void normalize();
</span><span class="cx"> 
</span><span class="cx">     bool isSameNode(Node* other) const { return this == other; }
</span><span class="lines">@@ -183,7 +180,7 @@
</span><span class="cx">     WEBCORE_EXPORT const AtomicString&amp; lookupNamespaceURI(const AtomicString&amp; prefix) const;
</span><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT String textContent(bool convertBRsToNewlines = false) const;
</span><del>-    WEBCORE_EXPORT void setTextContent(const String&amp;, ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; setTextContent(const String&amp;);
</ins><span class="cx">     
</span><span class="cx">     Node* lastDescendant() const;
</span><span class="cx">     Node* firstDescendant() const;
</span><span class="lines">@@ -387,7 +384,7 @@
</span><span class="cx">     unsigned countChildNodes() const;
</span><span class="cx">     Node* traverseToChildAt(unsigned) const;
</span><span class="cx"> 
</span><del>-    void checkSetPrefix(const AtomicString&amp; prefix, ExceptionCode&amp;);
</del><ins>+    ExceptionOr&lt;void&gt; checkSetPrefix(const AtomicString&amp; prefix);
</ins><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT bool isDescendantOf(const Node*) const;
</span><span class="cx">     bool isDescendantOrShadowDescendantOf(const Node*) const;
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodeidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Node.idl (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Node.idl        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/dom/Node.idl        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -25,8 +25,7 @@
</span><span class="cx">     JSCustomHeader,
</span><span class="cx">     JSCustomMarkFunction,
</span><span class="cx">     JSCustomPushEventHandlerScope,
</span><del>-] interface Node : EventTarget
- {
</del><ins>+] interface Node : EventTarget {
</ins><span class="cx">     // NodeType
</span><span class="cx">     const unsigned short ELEMENT_NODE = 1;
</span><span class="cx">     const unsigned short ATTRIBUTE_NODE = 2;
</span><span class="lines">@@ -43,8 +42,7 @@
</span><span class="cx"> 
</span><span class="cx">     readonly attribute DOMString nodeName;
</span><span class="cx"> 
</span><del>-    // FIXME: the spec says this can also raise on retrieval.
-    [CEReactions, SetterMayThrowLegacyException] attribute DOMString? nodeValue;
</del><ins>+    [CEReactions, SetterMayThrowException] attribute DOMString? nodeValue;
</ins><span class="cx"> 
</span><span class="cx">     [DOMJIT=Getter, CustomGetter] readonly attribute unsigned short nodeType;
</span><span class="cx">     [DOMJIT=Getter] readonly attribute Node? parentNode;
</span><span class="lines">@@ -55,21 +53,20 @@
</span><span class="cx">     [DOMJIT=Getter] readonly attribute Node? nextSibling;
</span><span class="cx">     [DOMJIT=Getter] readonly attribute Document? ownerDocument;
</span><span class="cx"> 
</span><del>-    [CEReactions, Custom, MayThrowLegacyException] Node insertBefore(Node newChild, Node? refChild);
-    [CEReactions, Custom, MayThrowLegacyException] Node replaceChild(Node newChild, Node oldChild);
-    [CEReactions, Custom, MayThrowLegacyException] Node removeChild(Node oldChild);
-    [CEReactions, Custom, MayThrowLegacyException] Node appendChild(Node newChild);
</del><ins>+    [CEReactions, Custom, MayThrowException] Node insertBefore(Node newChild, Node? refChild);
+    [CEReactions, Custom, MayThrowException] Node replaceChild(Node newChild, Node oldChild);
+    [CEReactions, Custom, MayThrowException] Node removeChild(Node oldChild);
+    [CEReactions, Custom, MayThrowException] Node appendChild(Node newChild);
</ins><span class="cx"> 
</span><span class="cx">     boolean hasChildNodes();
</span><span class="cx"> 
</span><del>-    [CEReactions, ImplementedAs=cloneNodeForBindings, MayThrowLegacyException, NewObject] Node cloneNode(optional boolean deep = false);
</del><ins>+    [CEReactions, ImplementedAs=cloneNodeForBindings, MayThrowException, NewObject] Node cloneNode(optional boolean deep = false);
</ins><span class="cx"> 
</span><span class="cx">     void normalize();
</span><span class="cx"> 
</span><span class="cx">     readonly attribute USVString baseURI;
</span><span class="cx"> 
</span><del>-    // FIXME: the spec says this can also raise on retrieval.
-    [CEReactions, SetterMayThrowLegacyException] attribute DOMString? textContent;
</del><ins>+    [CEReactions, SetterMayThrowException] attribute DOMString? textContent;
</ins><span class="cx"> 
</span><span class="cx">     boolean isSameNode(Node? other);
</span><span class="cx">     boolean isEqualNode(Node? other);
</span><span class="lines">@@ -97,5 +94,5 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> dictionary GetRootNodeOptions {
</span><del>-  boolean composed = false;
</del><ins>+    boolean composed = false;
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoredomRangecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Range.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Range.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/dom/Range.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -644,10 +644,9 @@
</span><span class="cx">     // (or just delete the stuff in between)
</span><span class="cx"> 
</span><span class="cx">     if ((action == Extract || action == Clone) &amp;&amp; leftContents) {
</span><del>-        ExceptionCode ec = 0;
-        fragment-&gt;appendChild(*leftContents, ec);
-        if (ec)
-            return Exception { ec };
</del><ins>+        auto result = fragment-&gt;appendChild(*leftContents);
+        if (result.hasException())
+            return result.releaseException();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (processStart) {
</span><span class="lines">@@ -660,10 +659,9 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if ((action == Extract || action == Clone) &amp;&amp; rightContents) {
</span><del>-        ExceptionCode ec = 0;
-        fragment-&gt;appendChild(*rightContents, ec);
-        if (ec)
-            return Exception { ec };
</del><ins>+        auto result = fragment-&gt;appendChild(*rightContents);
+        if (result.hasException())
+            return result.releaseException();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return WTFMove(fragment);
</span><span class="lines">@@ -705,10 +703,9 @@
</span><span class="cx">                 return deleteResult.releaseException();
</span><span class="cx">             if (fragment) {
</span><span class="cx">                 result = fragment;
</span><del>-                ExceptionCode ec = 0;
-                result-&gt;appendChild(characters, ec);
-                if (ec)
-                    return Exception { ec };
</del><ins>+                auto appendResult = result-&gt;appendChild(characters);
+                if (appendResult.hasException())
+                    return appendResult.releaseException();
</ins><span class="cx">             } else
</span><span class="cx">                 result = WTFMove(characters);
</span><span class="cx">         }
</span><span class="lines">@@ -727,10 +724,9 @@
</span><span class="cx">             processingInstruction-&gt;setData(processingInstruction-&gt;data().substring(startOffset, endOffset - startOffset));
</span><span class="cx">             if (fragment) {
</span><span class="cx">                 result = fragment;
</span><del>-                ExceptionCode ec = 0;
-                result-&gt;appendChild(processingInstruction, ec);
-                if (ec)
-                    return Exception { ec };
</del><ins>+                auto appendResult = result-&gt;appendChild(processingInstruction);
+                if (appendResult.hasException())
+                    return appendResult.releaseException();
</ins><span class="cx">             } else
</span><span class="cx">                 result = WTFMove(processingInstruction);
</span><span class="cx">         }
</span><span class="lines">@@ -777,24 +773,21 @@
</span><span class="cx">     for (auto&amp; node : nodes) {
</span><span class="cx">         switch (action) {
</span><span class="cx">         case Range::Delete: {
</span><del>-            ExceptionCode ec = 0;
-            oldContainer-&gt;removeChild(node, ec);
-            if (ec)
-                return Exception { ec };
</del><ins>+            auto result = oldContainer-&gt;removeChild(node);
+            if (result.hasException())
+                return result.releaseException();
</ins><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">         case Range::Extract: {
</span><del>-            ExceptionCode ec = 0;
-            newContainer-&gt;appendChild(node, ec); // will remove n from its parent
-            if (ec)
-                return Exception { ec };
</del><ins>+            auto result = newContainer-&gt;appendChild(node); // will remove node from its parent
+            if (result.hasException())
+                return result.releaseException();
</ins><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">         case Range::Clone: {
</span><del>-            ExceptionCode ec = 0;
-            newContainer-&gt;appendChild(node-&gt;cloneNode(true), ec);
-            if (ec)
-                return Exception { ec };
</del><ins>+            auto result = newContainer-&gt;appendChild(node-&gt;cloneNode(true));
+            if (result.hasException())
+                return result.releaseException();
</ins><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">         }
</span><span class="lines">@@ -818,10 +811,9 @@
</span><span class="cx">         if (action == Range::Extract || action == Range::Clone) {
</span><span class="cx">             auto clonedAncestor = ancestor-&gt;cloneNode(false); // Might have been removed already during mutation event.
</span><span class="cx">             if (clonedContainer) {
</span><del>-                ExceptionCode ec = 0;
-                clonedAncestor-&gt;appendChild(*clonedContainer, ec);
-                if (ec)
-                    return Exception { ec };
</del><ins>+                auto result = clonedAncestor-&gt;appendChild(*clonedContainer);
+                if (result.hasException())
+                    return result.releaseException();
</ins><span class="cx">             }
</span><span class="cx">             clonedContainer = WTFMove(clonedAncestor);
</span><span class="cx">         }
</span><span class="lines">@@ -839,36 +831,31 @@
</span><span class="cx">         for (auto&amp; child : nodes) {
</span><span class="cx">             switch (action) {
</span><span class="cx">             case Range::Delete: {
</span><del>-                ExceptionCode ec = 0;
-                ancestor-&gt;removeChild(child, ec);
-                if (ec)
-                    return Exception { ec };
</del><ins>+                auto result = ancestor-&gt;removeChild(child);
+                if (result.hasException())
+                    return result.releaseException();
</ins><span class="cx">                 break;
</span><span class="cx">             }
</span><span class="cx">             case Range::Extract: // will remove child from ancestor
</span><span class="cx">                 if (direction == ProcessContentsForward) {
</span><del>-                    ExceptionCode ec = 0;
-                    clonedContainer-&gt;appendChild(child, ec);
-                    if (ec)
-                        return Exception { ec };
</del><ins>+                    auto result = clonedContainer-&gt;appendChild(child);
+                    if (result.hasException())
+                        return result.releaseException();
</ins><span class="cx">                 } else {
</span><del>-                    ExceptionCode ec = 0;
-                    clonedContainer-&gt;insertBefore(child, clonedContainer-&gt;firstChild(), ec);
-                    if (ec)
-                        return Exception { ec };
</del><ins>+                    auto result = clonedContainer-&gt;insertBefore(child, clonedContainer-&gt;firstChild());
+                    if (result.hasException())
+                        return result.releaseException();
</ins><span class="cx">                 }
</span><span class="cx">                 break;
</span><span class="cx">             case Range::Clone:
</span><span class="cx">                 if (direction == ProcessContentsForward) {
</span><del>-                    ExceptionCode ec = 0;
-                    clonedContainer-&gt;appendChild(child-&gt;cloneNode(true), ec);
-                    if (ec)
-                        return Exception { ec };
</del><ins>+                    auto result = clonedContainer-&gt;appendChild(child-&gt;cloneNode(true));
+                    if (result.hasException())
+                        return result.releaseException();
</ins><span class="cx">                 } else {
</span><del>-                    ExceptionCode ec = 0;
-                    clonedContainer-&gt;insertBefore(child-&gt;cloneNode(true), clonedContainer-&gt;firstChild(), ec);
-                    if (ec)
-                        return Exception { ec };
</del><ins>+                    auto result = clonedContainer-&gt;insertBefore(child-&gt;cloneNode(true), clonedContainer-&gt;firstChild());
+                    if (result.hasException())
+                        return result.releaseException();
</ins><span class="cx">                 }
</span><span class="cx">                 break;
</span><span class="cx">             }
</span><span class="lines">@@ -914,9 +901,9 @@
</span><span class="cx"> 
</span><span class="cx">     Ref&lt;ContainerNode&gt; parent = downcast&lt;ContainerNode&gt;(*parentNode);
</span><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
-    if (!parent-&gt;ensurePreInsertionValidity(node, referenceNode.get(), ec))
-        return Exception { ec };
</del><ins>+    auto result = parent-&gt;ensurePreInsertionValidity(node, referenceNode.get());
+    if (result.hasException())
+        return result.releaseException();
</ins><span class="cx"> 
</span><span class="cx">     EventQueueScope scope;
</span><span class="cx">     if (startIsText) {
</span><span class="lines">@@ -939,9 +926,9 @@
</span><span class="cx">     else
</span><span class="cx">         ++newOffset;
</span><span class="cx"> 
</span><del>-    parent-&gt;insertBefore(node, referenceNode.get(), ec);
-    if (ec)
-        return Exception { ec };
</del><ins>+    auto insertResult = parent-&gt;insertBefore(node, referenceNode.get());
+    if (insertResult.hasException())
+        return insertResult.releaseException();
</ins><span class="cx"> 
</span><span class="cx">     if (collapsed())
</span><span class="cx">         return setEnd(WTFMove(parent), newOffset);
</span><span class="lines">@@ -1123,10 +1110,9 @@
</span><span class="cx"> 
</span><span class="cx">     // Step 4: If newParent has children, replace all with null within newParent.
</span><span class="cx">     while (auto* child = newParent.firstChild()) {
</span><del>-        ExceptionCode ec = 0;
-        downcast&lt;ContainerNode&gt;(newParent).removeChild(*child, ec);
-        if (ec)
-            return Exception { ec };
</del><ins>+        auto result = downcast&lt;ContainerNode&gt;(newParent).removeChild(*child);
+        if (result.hasException())
+            return result.releaseException();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Step 5: Insert newParent into context object.
</span><span class="lines">@@ -1135,10 +1121,9 @@
</span><span class="cx">         return insertResult.releaseException();
</span><span class="cx"> 
</span><span class="cx">     // Step 6: Append fragment to newParent.
</span><del>-    ExceptionCode ec = 0;
-    newParent.appendChild(fragment.releaseReturnValue(), ec);
-    if (ec)
-        return Exception { ec };
</del><ins>+    auto appendResult = newParent.appendChild(fragment.releaseReturnValue());
+    if (appendResult.hasException())
+        return appendResult.releaseException();
</ins><span class="cx"> 
</span><span class="cx">     // Step 7: Select newParent within context object.
</span><span class="cx">     return selectNode(newParent);
</span></span></pre></div>
<a id="trunkSourceWebCoredomTextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Text.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Text.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/dom/Text.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -68,11 +68,10 @@
</span><span class="cx"> 
</span><span class="cx">     dispatchModifiedEvent(oldData);
</span><span class="cx"> 
</span><del>-    if (parentNode()) {
-        ExceptionCode ec = 0;
-        parentNode()-&gt;insertBefore(newText, nextSibling(), ec);
-        if (ec)
-            return Exception { ec };
</del><ins>+    if (auto* parent = parentNode()) {
+        auto insertResult = parent-&gt;insertBefore(newText, nextSibling());
+        if (insertResult.hasException())
+            return insertResult.releaseException();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     document().textNodeSplit(this);
</span><span class="lines">@@ -131,7 +130,7 @@
</span><span class="cx">     for (RefPtr&lt;Node&gt; n = startText; n &amp;&amp; n != this &amp;&amp; n-&gt;isTextNode() &amp;&amp; n-&gt;parentNode() == parent;) {
</span><span class="cx">         Ref&lt;Node&gt; nodeToRemove(n.releaseNonNull());
</span><span class="cx">         n = nodeToRemove-&gt;nextSibling();
</span><del>-        parent-&gt;removeChild(WTFMove(nodeToRemove), IGNORE_EXCEPTION);
</del><ins>+        parent-&gt;removeChild(nodeToRemove);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (this != endText) {
</span><span class="lines">@@ -139,13 +138,13 @@
</span><span class="cx">         for (RefPtr&lt;Node&gt; n = nextSibling(); n &amp;&amp; n != onePastEndText &amp;&amp; n-&gt;isTextNode() &amp;&amp; n-&gt;parentNode() == parent;) {
</span><span class="cx">             Ref&lt;Node&gt; nodeToRemove(n.releaseNonNull());
</span><span class="cx">             n = nodeToRemove-&gt;nextSibling();
</span><del>-            parent-&gt;removeChild(WTFMove(nodeToRemove), IGNORE_EXCEPTION);
</del><ins>+            parent-&gt;removeChild(nodeToRemove);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (newText.isEmpty()) {
</span><span class="cx">         if (parent &amp;&amp; parentNode() == parent)
</span><del>-            parent-&gt;removeChild(*this, IGNORE_EXCEPTION);
</del><ins>+            parent-&gt;removeChild(*this);
</ins><span class="cx">         return nullptr;
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingAppendNodeCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/AppendNodeCommand.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/AppendNodeCommand.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/editing/AppendNodeCommand.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -51,7 +51,7 @@
</span><span class="cx">     if (!m_parent-&gt;hasEditableStyle() &amp;&amp; m_parent-&gt;renderer())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_parent-&gt;appendChild(m_node, IGNORE_EXCEPTION);
</del><ins>+    m_parent-&gt;appendChild(m_node);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void AppendNodeCommand::doUnapply()
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingCompositeEditCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/CompositeEditCommand.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/CompositeEditCommand.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/editing/CompositeEditCommand.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -1161,7 +1161,7 @@
</span><span class="cx"> Ref&lt;HTMLElement&gt; CompositeEditCommand::insertNewDefaultParagraphElementAt(const Position&amp; position)
</span><span class="cx"> {
</span><span class="cx">     auto paragraphElement = createDefaultParagraphElement(document());
</span><del>-    paragraphElement-&gt;appendChild(HTMLBRElement::create(document()), IGNORE_EXCEPTION);
</del><ins>+    paragraphElement-&gt;appendChild(HTMLBRElement::create(document()));
</ins><span class="cx">     insertNodeAt(paragraphElement.ptr(), position);
</span><span class="cx">     return paragraphElement;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingEditorCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/EditorCommand.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/EditorCommand.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/editing/EditorCommand.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -166,9 +166,7 @@
</span><span class="cx"> static bool executeInsertNode(Frame&amp; frame, Ref&lt;Node&gt;&amp;&amp; content)
</span><span class="cx"> {
</span><span class="cx">     auto fragment = DocumentFragment::create(*frame.document());
</span><del>-    ExceptionCode ec = 0;
-    fragment-&gt;appendChild(content, ec);
-    if (ec)
</del><ins>+    if (fragment-&gt;appendChild(content).hasException())
</ins><span class="cx">         return false;
</span><span class="cx">     return executeInsertFragment(frame, WTFMove(fragment));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingInsertNodeBeforeCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/InsertNodeBeforeCommand.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/InsertNodeBeforeCommand.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/editing/InsertNodeBeforeCommand.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -55,7 +55,7 @@
</span><span class="cx">         return;
</span><span class="cx">     ASSERT(isEditableNode(*parent));
</span><span class="cx"> 
</span><del>-    parent-&gt;insertBefore(*m_insertChild, m_refChild.get(), IGNORE_EXCEPTION);
</del><ins>+    parent-&gt;insertBefore(*m_insertChild, m_refChild.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InsertNodeBeforeCommand::doUnapply()
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingMergeIdenticalElementsCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/MergeIdenticalElementsCommand.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/MergeIdenticalElementsCommand.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/editing/MergeIdenticalElementsCommand.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -52,7 +52,7 @@
</span><span class="cx">         children.append(*child);
</span><span class="cx"> 
</span><span class="cx">     for (auto&amp; child : children)
</span><del>-        m_element2-&gt;insertBefore(child, m_atChild.get(), IGNORE_EXCEPTION);
</del><ins>+        m_element2-&gt;insertBefore(child, m_atChild.get());
</ins><span class="cx"> 
</span><span class="cx">     m_element1-&gt;remove();
</span><span class="cx"> }
</span><span class="lines">@@ -64,14 +64,11 @@
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;Node&gt; atChild = WTFMove(m_atChild);
</span><span class="cx"> 
</span><del>-    ContainerNode* parent = m_element2-&gt;parentNode();
</del><ins>+    auto* parent = m_element2-&gt;parentNode();
</ins><span class="cx">     if (!parent || !parent-&gt;hasEditableStyle())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
-
-    parent-&gt;insertBefore(*m_element1, m_element2.get(), ec);
-    if (ec)
</del><ins>+    if (parent-&gt;insertBefore(*m_element1, m_element2.get()).hasException())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     Vector&lt;Ref&lt;Node&gt;&gt; children;
</span><span class="lines">@@ -79,7 +76,7 @@
</span><span class="cx">         children.append(*child);
</span><span class="cx"> 
</span><span class="cx">     for (auto&amp; child : children)
</span><del>-        m_element1-&gt;appendChild(child, ec);
</del><ins>+        m_element1-&gt;appendChild(child);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #ifndef NDEBUG
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingRemoveNodeCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/RemoveNodeCommand.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/RemoveNodeCommand.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/editing/RemoveNodeCommand.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -62,7 +62,7 @@
</span><span class="cx">     if (!parent || !parent-&gt;hasEditableStyle())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    parent-&gt;insertBefore(m_node, refChild.get(), IGNORE_EXCEPTION);
</del><ins>+    parent-&gt;insertBefore(m_node, refChild.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #ifndef NDEBUG
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingReplaceNodeWithSpanCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/ReplaceNodeWithSpanCommand.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/ReplaceNodeWithSpanCommand.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/editing/ReplaceNodeWithSpanCommand.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -53,10 +53,10 @@
</span><span class="cx">     NodeVector children;
</span><span class="cx">     getChildNodes(nodeToReplace, children);
</span><span class="cx">     for (auto&amp; child : children)
</span><del>-        newNode.appendChild(child, ASSERT_NO_EXCEPTION);
</del><ins>+        newNode.appendChild(child);
</ins><span class="cx"> 
</span><del>-    parentNode-&gt;insertBefore(newNode, &amp;nodeToReplace, ASSERT_NO_EXCEPTION);
-    parentNode-&gt;removeChild(nodeToReplace, ASSERT_NO_EXCEPTION);
</del><ins>+    parentNode-&gt;insertBefore(newNode, &amp;nodeToReplace);
+    parentNode-&gt;removeChild(nodeToReplace);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ReplaceNodeWithSpanCommand::doApply()
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingReplaceSelectionCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -245,7 +245,7 @@
</span><span class="cx">     if (!parent)
</span><span class="cx">         return;
</span><span class="cx">     
</span><del>-    parent-&gt;removeChild(*node, ASSERT_NO_EXCEPTION);
</del><ins>+    parent-&gt;removeChild(*node);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ReplacementFragment::insertNodeBefore(PassRefPtr&lt;Node&gt; node, Node* refNode)
</span><span class="lines">@@ -257,7 +257,7 @@
</span><span class="cx">     if (!parent)
</span><span class="cx">         return;
</span><span class="cx">         
</span><del>-    parent-&gt;insertBefore(*node, refNode, ASSERT_NO_EXCEPTION);
</del><ins>+    parent-&gt;insertBefore(*node, refNode);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;HTMLElement&gt; ReplacementFragment::insertFragmentForTestRendering(Node* rootEditableElement)
</span><span class="lines">@@ -264,8 +264,8 @@
</span><span class="cx"> {
</span><span class="cx">     auto holder = createDefaultParagraphElement(document());
</span><span class="cx"> 
</span><del>-    holder-&gt;appendChild(*m_fragment, ASSERT_NO_EXCEPTION);
-    rootEditableElement-&gt;appendChild(holder, ASSERT_NO_EXCEPTION);
</del><ins>+    holder-&gt;appendChild(*m_fragment);
+    rootEditableElement-&gt;appendChild(holder);
</ins><span class="cx">     document().updateLayoutIgnorePendingStylesheets();
</span><span class="cx"> 
</span><span class="cx">     return holder;
</span><span class="lines">@@ -277,8 +277,8 @@
</span><span class="cx">         return;
</span><span class="cx">     
</span><span class="cx">     while (RefPtr&lt;Node&gt; node = holder-&gt;firstChild()) {
</span><del>-        holder-&gt;removeChild(*node, ASSERT_NO_EXCEPTION);
-        m_fragment-&gt;appendChild(*node, ASSERT_NO_EXCEPTION);
</del><ins>+        holder-&gt;removeChild(*node);
+        m_fragment-&gt;appendChild(*node);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     removeNode(holder);
</span><span class="lines">@@ -1484,7 +1484,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     while (RefPtr&lt;Node&gt; listItem = listElement-&gt;firstChild()) {
</span><del>-        listElement-&gt;removeChild(*listItem, ASSERT_NO_EXCEPTION);
</del><ins>+        listElement-&gt;removeChild(*listItem);
</ins><span class="cx">         if (isStart || isMiddle) {
</span><span class="cx">             insertNodeBefore(listItem, lastNode);
</span><span class="cx">             insertedNodes.respondToNodeInsertion(listItem.get());
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingSplitElementCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/SplitElementCommand.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/SplitElementCommand.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/editing/SplitElementCommand.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -50,14 +50,11 @@
</span><span class="cx">     Vector&lt;Ref&lt;Node&gt;&gt; children;
</span><span class="cx">     for (Node* node = m_element2-&gt;firstChild(); node != m_atChild; node = node-&gt;nextSibling())
</span><span class="cx">         children.append(*node);
</span><del>-    
-    ExceptionCode ec = 0;
-    
-    ContainerNode* parent = m_element2-&gt;parentNode();
</del><ins>+
+    auto* parent = m_element2-&gt;parentNode();
</ins><span class="cx">     if (!parent || !parent-&gt;hasEditableStyle())
</span><span class="cx">         return;
</span><del>-    parent-&gt;insertBefore(*m_element1, m_element2.get(), ec);
-    if (ec)
</del><ins>+    if (parent-&gt;insertBefore(*m_element1, m_element2.get()).hasException())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     // Delete id attribute from the second element because the same id cannot be used for more than one element
</span><span class="lines">@@ -64,7 +61,7 @@
</span><span class="cx">     m_element2-&gt;removeAttribute(HTMLNames::idAttr);
</span><span class="cx"> 
</span><span class="cx">     for (auto&amp; child : children)
</span><del>-        m_element1-&gt;appendChild(child, ec);
</del><ins>+        m_element1-&gt;appendChild(child);
</ins><span class="cx"> }
</span><span class="cx">     
</span><span class="cx"> void SplitElementCommand::doApply()
</span><span class="lines">@@ -86,7 +83,7 @@
</span><span class="cx">     RefPtr&lt;Node&gt; refChild = m_element2-&gt;firstChild();
</span><span class="cx"> 
</span><span class="cx">     for (auto&amp; child : children)
</span><del>-        m_element2-&gt;insertBefore(child, refChild.get(), IGNORE_EXCEPTION);
</del><ins>+        m_element2-&gt;insertBefore(child, refChild.get());
</ins><span class="cx"> 
</span><span class="cx">     // Recover the id attribute of the original element.
</span><span class="cx">     const AtomicString&amp; id = m_element1-&gt;getIdAttribute();
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingSplitTextNodeCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/SplitTextNodeCommand.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/SplitTextNodeCommand.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/editing/SplitTextNodeCommand.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -97,9 +97,7 @@
</span><span class="cx"> 
</span><span class="cx"> void SplitTextNodeCommand::insertText1AndTrimText2()
</span><span class="cx"> {
</span><del>-    ExceptionCode ec = 0;
-    m_text2-&gt;parentNode()-&gt;insertBefore(*m_text1, m_text2.get(), ec);
-    if (ec)
</del><ins>+    if (m_text2-&gt;parentNode()-&gt;insertBefore(*m_text1, m_text2.get()).hasException())
</ins><span class="cx">         return;
</span><span class="cx">     m_text2-&gt;deleteData(0, m_offset);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingWrapContentsInDummySpanCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/WrapContentsInDummySpanCommand.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/WrapContentsInDummySpanCommand.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/editing/WrapContentsInDummySpanCommand.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -44,9 +44,9 @@
</span><span class="cx">         children.append(*child);
</span><span class="cx"> 
</span><span class="cx">     for (auto&amp; child : children)
</span><del>-        m_dummySpan-&gt;appendChild(child, IGNORE_EXCEPTION);
</del><ins>+        m_dummySpan-&gt;appendChild(child);
</ins><span class="cx"> 
</span><del>-    m_element-&gt;appendChild(*m_dummySpan, IGNORE_EXCEPTION);
</del><ins>+    m_element-&gt;appendChild(*m_dummySpan);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WrapContentsInDummySpanCommand::doApply()
</span><span class="lines">@@ -66,7 +66,7 @@
</span><span class="cx">         children.append(*child);
</span><span class="cx"> 
</span><span class="cx">     for (auto&amp; child : children)
</span><del>-        m_element-&gt;appendChild(child, IGNORE_EXCEPTION);
</del><ins>+        m_element-&gt;appendChild(child);
</ins><span class="cx"> 
</span><span class="cx">     m_dummySpan-&gt;remove();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingcocoaEditorCocoamm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/cocoa/EditorCocoa.mm (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/cocoa/EditorCocoa.mm        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/editing/cocoa/EditorCocoa.mm        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -73,15 +73,11 @@
</span><span class="cx">     String styleText = typingStyle-&gt;style()-&gt;asText() + &quot; display: inline&quot;;
</span><span class="cx">     styleElement-&gt;setAttribute(HTMLNames::styleAttr, styleText);
</span><span class="cx"> 
</span><del>-    styleElement-&gt;appendChild(frame-&gt;document()-&gt;createEditingTextNode(emptyString()), ASSERT_NO_EXCEPTION);
</del><ins>+    styleElement-&gt;appendChild(frame-&gt;document()-&gt;createEditingTextNode(emptyString()));
</ins><span class="cx"> 
</span><del>-    ContainerNode* parentNode = position.deprecatedNode()-&gt;parentNode();
-
-    if (!parentNode-&gt;ensurePreInsertionValidity(styleElement.copyRef(), nullptr, IGNORE_EXCEPTION))
</del><ins>+    if (position.deprecatedNode()-&gt;parentNode()-&gt;appendChild(styleElement).hasException())
</ins><span class="cx">         return nullptr; 
</span><span class="cx"> 
</span><del>-    parentNode-&gt;appendChild(styleElement, ASSERT_NO_EXCEPTION);
-
</del><span class="cx">     nodeToRemove = styleElement.ptr();
</span><span class="cx"> 
</span><span class="cx">     frame-&gt;document()-&gt;updateStyleIfNeeded();
</span></span></pre></div>
<a id="trunkSourceWebCoreeditinghtmleditingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/htmlediting.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/htmlediting.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/editing/htmlediting.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -935,7 +935,7 @@
</span><span class="cx">     spanElement-&gt;setAttributeWithoutSynchronization(classAttr, AppleTabSpanClass);
</span><span class="cx">     spanElement-&gt;setAttribute(styleAttr, &quot;white-space:pre&quot;);
</span><span class="cx"> 
</span><del>-    spanElement-&gt;appendChild(tabTextNode, ASSERT_NO_EXCEPTION);
</del><ins>+    spanElement-&gt;appendChild(tabTextNode);
</ins><span class="cx"> 
</span><span class="cx">     return spanElement;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingiosEditorIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/ios/EditorIOS.mm (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/ios/EditorIOS.mm        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/editing/ios/EditorIOS.mm        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -375,10 +375,8 @@
</span><span class="cx"> void Editor::WebContentReader::addFragment(RefPtr&lt;DocumentFragment&gt;&amp;&amp; newFragment)
</span><span class="cx"> {
</span><span class="cx">     if (fragment) {
</span><del>-        if (newFragment &amp;&amp; newFragment-&gt;firstChild()) {
-            ExceptionCode ec;
-            fragment-&gt;appendChild(*newFragment-&gt;firstChild(), ec);
-        }
</del><ins>+        if (newFragment &amp;&amp; newFragment-&gt;firstChild())
+            fragment-&gt;appendChild(*newFragment-&gt;firstChild());
</ins><span class="cx">     } else
</span><span class="cx">         fragment = WTFMove(newFragment);
</span><span class="cx"> }
</span><span class="lines">@@ -635,7 +633,6 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ExceptionCode ec;
</del><span class="cx">     RefPtr&lt;Range&gt; context = document().createRange();
</span><span class="cx">     context-&gt;selectNodeContents(element);
</span><span class="cx"> 
</span><span class="lines">@@ -643,7 +640,7 @@
</span><span class="cx">     for (auto&amp; interpretations : dictationPhrases)
</span><span class="cx">         dictationPhrasesBuilder.append(interpretations[0]);
</span><span class="cx"> 
</span><del>-    element.appendChild(createFragmentFromText(*context, dictationPhrasesBuilder.toString()), ec);
</del><ins>+    element.appendChild(createFragmentFromText(*context, dictationPhrasesBuilder.toString()));
</ins><span class="cx"> 
</span><span class="cx">     // We need a layout in order to add markers below.
</span><span class="cx">     document().updateLayout();
</span><span class="lines">@@ -712,7 +709,6 @@
</span><span class="cx">         // FIXME: The element we're inserting into is often the body element. It seems strange to be removing it
</span><span class="cx">         // (even if it is only temporary). ReplaceSelectionCommand doesn't bother doing this when it inserts
</span><span class="cx">         // content, why should we here?
</span><del>-        ExceptionCode ec;
</del><span class="cx">         RefPtr&lt;Node&gt; parent = element.parentNode();
</span><span class="cx">         RefPtr&lt;Node&gt; siblingAfter = element.nextSibling();
</span><span class="cx">         if (parent)
</span><span class="lines">@@ -720,14 +716,14 @@
</span><span class="cx"> 
</span><span class="cx">         auto context = document().createRange();
</span><span class="cx">         context-&gt;selectNodeContents(element);
</span><del>-        element.appendChild(createFragmentFromText(context, text), ec);
</del><ins>+        element.appendChild(createFragmentFromText(context, text));
</ins><span class="cx"> 
</span><span class="cx">         // restore element to document
</span><span class="cx">         if (parent) {
</span><span class="cx">             if (siblingAfter)
</span><del>-                parent-&gt;insertBefore(element, siblingAfter.get(), ec);
</del><ins>+                parent-&gt;insertBefore(element, siblingAfter.get());
</ins><span class="cx">             else
</span><del>-                parent-&gt;appendChild(element, ec);
</del><ins>+                parent-&gt;appendChild(element);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingmarkupcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/markup.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/markup.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/editing/markup.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -710,7 +710,7 @@
</span><span class="cx">     Document&amp; document = paragraph.document();
</span><span class="cx"> 
</span><span class="cx">     if (string.isEmpty()) {
</span><del>-        paragraph.appendChild(createBlockPlaceholderElement(document), ASSERT_NO_EXCEPTION);
</del><ins>+        paragraph.appendChild(createBlockPlaceholderElement(document));
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -727,11 +727,11 @@
</span><span class="cx">         // append the non-tab textual part
</span><span class="cx">         if (!s.isEmpty()) {
</span><span class="cx">             if (!tabText.isEmpty()) {
</span><del>-                paragraph.appendChild(createTabSpanElement(document, tabText), ASSERT_NO_EXCEPTION);
</del><ins>+                paragraph.appendChild(createTabSpanElement(document, tabText));
</ins><span class="cx">                 tabText = emptyString();
</span><span class="cx">             }
</span><span class="cx">             Ref&lt;Node&gt; textNode = document.createTextNode(stringWithRebalancedWhitespace(s, first, i + 1 == numEntries));
</span><del>-            paragraph.appendChild(textNode, ASSERT_NO_EXCEPTION);
</del><ins>+            paragraph.appendChild(textNode);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         // there is a tab after every entry, except the last entry
</span><span class="lines">@@ -739,7 +739,7 @@
</span><span class="cx">         if (i + 1 != numEntries)
</span><span class="cx">             tabText.append('\t');
</span><span class="cx">         else if (!tabText.isEmpty())
</span><del>-            paragraph.appendChild(createTabSpanElement(document, tabText), ASSERT_NO_EXCEPTION);
</del><ins>+            paragraph.appendChild(createTabSpanElement(document, tabText));
</ins><span class="cx"> 
</span><span class="cx">         first = false;
</span><span class="cx">     }
</span><span class="lines">@@ -792,11 +792,11 @@
</span><span class="cx">     string.replace('\r', '\n');
</span><span class="cx"> 
</span><span class="cx">     if (contextPreservesNewline(context)) {
</span><del>-        fragment-&gt;appendChild(document.createTextNode(string), ASSERT_NO_EXCEPTION);
</del><ins>+        fragment-&gt;appendChild(document.createTextNode(string));
</ins><span class="cx">         if (string.endsWith('\n')) {
</span><span class="cx">             auto element = HTMLBRElement::create(document);
</span><span class="cx">             element-&gt;setAttributeWithoutSynchronization(classAttr, AppleInterchangeNewline);
</span><del>-            fragment-&gt;appendChild(element, ASSERT_NO_EXCEPTION);
</del><ins>+            fragment-&gt;appendChild(element);
</ins><span class="cx">         }
</span><span class="cx">         return fragment;
</span><span class="cx">     }
</span><span class="lines">@@ -838,7 +838,7 @@
</span><span class="cx">                 element = createDefaultParagraphElement(document);
</span><span class="cx">             fillContainerFromString(*element, s);
</span><span class="cx">         }
</span><del>-        fragment-&gt;appendChild(*element, ASSERT_NO_EXCEPTION);
</del><ins>+        fragment-&gt;appendChild(*element);
</ins><span class="cx">     }
</span><span class="cx">     return fragment;
</span><span class="cx"> }
</span><span class="lines">@@ -942,10 +942,10 @@
</span><span class="cx">     RefPtr&lt;Node&gt; nextChild;
</span><span class="cx">     for (RefPtr&lt;Node&gt; child = element.firstChild(); child; child = nextChild) {
</span><span class="cx">         nextChild = child-&gt;nextSibling();
</span><del>-        element.removeChild(*child, ASSERT_NO_EXCEPTION);
-        fragment.insertBefore(*child, &amp;element, ASSERT_NO_EXCEPTION);
</del><ins>+        element.removeChild(*child);
+        fragment.insertBefore(*child, &amp;element);
</ins><span class="cx">     }
</span><del>-    fragment.removeChild(element, ASSERT_NO_EXCEPTION);
</del><ins>+    fragment.removeChild(element);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ExceptionOr&lt;Ref&lt;DocumentFragment&gt;&gt; createContextualFragment(Element&amp; element, const String&amp; markup, ParserContentPolicy parserContentPolicy)
</span><span class="lines">@@ -1018,19 +1018,11 @@
</span><span class="cx">             return { };
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        ExceptionCode ec = 0;
-        containerNode-&gt;replaceChild(fragment, *containerChild, ec);
-        if (ec)
-            return Exception { ec };
-        return { };
</del><ins>+        return containerNode-&gt;replaceChild(fragment, *containerChild);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     containerNode-&gt;removeChildren();
</span><del>-    ExceptionCode ec = 0;
-    containerNode-&gt;appendChild(fragment, ec);
-    if (ec)
-        return Exception { ec };
-    return { };
</del><ins>+    return containerNode-&gt;appendChild(fragment);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ExceptionOr&lt;void&gt; replaceChildrenWithText(ContainerNode&amp; container, const String&amp; text)
</span><span class="lines">@@ -1045,20 +1037,11 @@
</span><span class="cx"> 
</span><span class="cx">     auto textNode = Text::create(containerNode-&gt;document(), text);
</span><span class="cx"> 
</span><del>-    if (hasOneChild(containerNode)) {
-        ExceptionCode ec = 0;
-        containerNode-&gt;replaceChild(textNode, *containerNode-&gt;firstChild(), ec);
-        if (ec)
-            return Exception { ec };
-        return { };
-    }
</del><ins>+    if (hasOneChild(containerNode))
+        return containerNode-&gt;replaceChild(textNode, *containerNode-&gt;firstChild());
</ins><span class="cx"> 
</span><span class="cx">     containerNode-&gt;removeChildren();
</span><del>-    ExceptionCode ec = 0;
-    containerNode-&gt;appendChild(textNode, ec);
-    if (ec)
-        return Exception { ec };
-    return { };
</del><ins>+    return containerNode-&gt;appendChild(textNode);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlColorInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/ColorInputType.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/ColorInputType.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/ColorInputType.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -127,8 +127,8 @@
</span><span class="cx">     wrapperElement-&gt;setPseudo(AtomicString(&quot;-webkit-color-swatch-wrapper&quot;, AtomicString::ConstructFromLiteral));
</span><span class="cx">     auto colorSwatch = HTMLDivElement::create(document);
</span><span class="cx">     colorSwatch-&gt;setPseudo(AtomicString(&quot;-webkit-color-swatch&quot;, AtomicString::ConstructFromLiteral));
</span><del>-    wrapperElement-&gt;appendChild(colorSwatch, ASSERT_NO_EXCEPTION);
-    element().userAgentShadowRoot()-&gt;appendChild(wrapperElement, ASSERT_NO_EXCEPTION);
</del><ins>+    wrapperElement-&gt;appendChild(colorSwatch);
+    element().userAgentShadowRoot()-&gt;appendChild(wrapperElement);
</ins><span class="cx">     
</span><span class="cx">     updateColorSwatch();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlFTPDirectoryDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/FTPDirectoryDocument.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/FTPDirectoryDocument.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/FTPDirectoryDocument.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -105,26 +105,26 @@
</span><span class="cx">     rowElement-&gt;setAttributeWithoutSynchronization(HTMLNames::classAttr, AtomicString(&quot;ftpDirectoryEntryRow&quot;, AtomicString::ConstructFromLiteral));
</span><span class="cx"> 
</span><span class="cx">     auto typeElement = document()-&gt;createElement(tdTag, false);
</span><del>-    typeElement-&gt;appendChild(Text::create(*document(), String(&amp;noBreakSpace, 1)), IGNORE_EXCEPTION);
</del><ins>+    typeElement-&gt;appendChild(Text::create(*document(), String(&amp;noBreakSpace, 1)));
</ins><span class="cx">     if (isDirectory)
</span><span class="cx">         typeElement-&gt;setAttributeWithoutSynchronization(HTMLNames::classAttr, AtomicString(&quot;ftpDirectoryIcon ftpDirectoryTypeDirectory&quot;, AtomicString::ConstructFromLiteral));
</span><span class="cx">     else
</span><span class="cx">         typeElement-&gt;setAttributeWithoutSynchronization(HTMLNames::classAttr, AtomicString(&quot;ftpDirectoryIcon ftpDirectoryTypeFile&quot;, AtomicString::ConstructFromLiteral));
</span><del>-    rowElement-&gt;appendChild(typeElement, IGNORE_EXCEPTION);
</del><ins>+    rowElement-&gt;appendChild(typeElement);
</ins><span class="cx"> 
</span><span class="cx">     auto nameElement = createTDForFilename(filename);
</span><span class="cx">     nameElement-&gt;setAttributeWithoutSynchronization(HTMLNames::classAttr, AtomicString(&quot;ftpDirectoryFileName&quot;, AtomicString::ConstructFromLiteral));
</span><del>-    rowElement-&gt;appendChild(nameElement, IGNORE_EXCEPTION);
</del><ins>+    rowElement-&gt;appendChild(nameElement);
</ins><span class="cx"> 
</span><span class="cx">     auto dateElement = document()-&gt;createElement(tdTag, false);
</span><del>-    dateElement-&gt;appendChild(Text::create(*document(), date), IGNORE_EXCEPTION);
</del><ins>+    dateElement-&gt;appendChild(Text::create(*document(), date));
</ins><span class="cx">     dateElement-&gt;setAttributeWithoutSynchronization(HTMLNames::classAttr, AtomicString(&quot;ftpDirectoryFileDate&quot;, AtomicString::ConstructFromLiteral));
</span><del>-    rowElement-&gt;appendChild(dateElement, IGNORE_EXCEPTION);
</del><ins>+    rowElement-&gt;appendChild(dateElement);
</ins><span class="cx"> 
</span><span class="cx">     auto sizeElement = document()-&gt;createElement(tdTag, false);
</span><del>-    sizeElement-&gt;appendChild(Text::create(*document(), size), IGNORE_EXCEPTION);
</del><ins>+    sizeElement-&gt;appendChild(Text::create(*document(), size));
</ins><span class="cx">     sizeElement-&gt;setAttributeWithoutSynchronization(HTMLNames::classAttr, AtomicString(&quot;ftpDirectoryFileSize&quot;, AtomicString::ConstructFromLiteral));
</span><del>-    rowElement-&gt;appendChild(sizeElement, IGNORE_EXCEPTION);
</del><ins>+    rowElement-&gt;appendChild(sizeElement);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;Element&gt; FTPDirectoryDocumentParser::createTDForFilename(const String&amp; filename)
</span><span class="lines">@@ -137,10 +137,10 @@
</span><span class="cx"> 
</span><span class="cx">     auto anchorElement = document()-&gt;createElement(aTag, false);
</span><span class="cx">     anchorElement-&gt;setAttributeWithoutSynchronization(HTMLNames::hrefAttr, fullURL);
</span><del>-    anchorElement-&gt;appendChild(Text::create(*document(), filename), IGNORE_EXCEPTION);
</del><ins>+    anchorElement-&gt;appendChild(Text::create(*document(), filename));
</ins><span class="cx"> 
</span><span class="cx">     Ref&lt;Element&gt; tdElement = document()-&gt;createElement(tdTag, false);
</span><del>-    tdElement-&gt;appendChild(anchorElement, IGNORE_EXCEPTION);
</del><ins>+    tdElement-&gt;appendChild(anchorElement);
</ins><span class="cx"> 
</span><span class="cx">     return tdElement;
</span><span class="cx"> }
</span><span class="lines">@@ -312,9 +312,9 @@
</span><span class="cx">     // If that fails for some reason, cram it on the end of the document as a last
</span><span class="cx">     // ditch effort
</span><span class="cx">     if (auto* body = document()-&gt;bodyOrFrameset())
</span><del>-        body-&gt;appendChild(*m_tableElement, IGNORE_EXCEPTION);
</del><ins>+        body-&gt;appendChild(*m_tableElement);
</ins><span class="cx">     else
</span><del>-        document()-&gt;appendChild(*m_tableElement, IGNORE_EXCEPTION);
</del><ins>+        document()-&gt;appendChild(*m_tableElement);
</ins><span class="cx"> 
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="lines">@@ -327,7 +327,7 @@
</span><span class="cx"> 
</span><span class="cx">     Ref&lt;Element&gt; bodyElement = document()-&gt;createElement(bodyTag, false);
</span><span class="cx"> 
</span><del>-    document()-&gt;appendChild(bodyElement, IGNORE_EXCEPTION);
</del><ins>+    document()-&gt;appendChild(bodyElement);
</ins><span class="cx"> 
</span><span class="cx">     auto tableElement = document()-&gt;createElement(tableTag, false);
</span><span class="cx">     m_tableElement = downcast&lt;HTMLTableElement&gt;(tableElement.ptr());
</span><span class="lines">@@ -334,7 +334,7 @@
</span><span class="cx">     m_tableElement-&gt;setAttributeWithoutSynchronization(HTMLNames::idAttr, AtomicString(&quot;ftpDirectoryTable&quot;, AtomicString::ConstructFromLiteral));
</span><span class="cx">     m_tableElement-&gt;setAttribute(HTMLNames::styleAttr, AtomicString(&quot;width:100%&quot;, AtomicString::ConstructFromLiteral));
</span><span class="cx"> 
</span><del>-    bodyElement-&gt;appendChild(tableElement, IGNORE_EXCEPTION);
</del><ins>+    bodyElement-&gt;appendChild(tableElement);
</ins><span class="cx"> 
</span><span class="cx">     document()-&gt;processViewport(&quot;width=device-width&quot;, ViewportArguments::ViewportMeta);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlFileInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/FileInputType.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/FileInputType.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/FileInputType.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -261,7 +261,7 @@
</span><span class="cx"> void FileInputType::createShadowSubtree()
</span><span class="cx"> {
</span><span class="cx">     ASSERT(element().shadowRoot());
</span><del>-    element().userAgentShadowRoot()-&gt;appendChild(element().multiple() ? UploadButtonElement::createForMultiple(element().document()): UploadButtonElement::create(element().document()), IGNORE_EXCEPTION);
</del><ins>+    element().userAgentShadowRoot()-&gt;appendChild(element().multiple() ? UploadButtonElement::createForMultiple(element().document()): UploadButtonElement::create(element().document()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void FileInputType::disabledAttributeChanged()
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLAnchorElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLAnchorElement.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLAnchorElement.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/HTMLAnchorElement.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -343,7 +343,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLAnchorElement::setText(const String&amp; text)
</span><span class="cx"> {
</span><del>-    setTextContent(text, ASSERT_NO_EXCEPTION);
</del><ins>+    setTextContent(text);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HTMLAnchorElement::isLiveLink() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLDetailsElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLDetailsElement.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLDetailsElement.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/HTMLDetailsElement.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -113,7 +113,7 @@
</span><span class="cx">     m_summarySlot = summarySlot.ptr();
</span><span class="cx"> 
</span><span class="cx">     auto defaultSummary = HTMLSummaryElement::create(summaryTag, document());
</span><del>-    defaultSummary-&gt;appendChild(Text::create(document(), defaultDetailsSummaryText()), ASSERT_NO_EXCEPTION);
</del><ins>+    defaultSummary-&gt;appendChild(Text::create(document(), defaultDetailsSummaryText()));
</ins><span class="cx">     m_defaultSummary = defaultSummary.ptr();
</span><span class="cx"> 
</span><span class="cx">     summarySlot-&gt;appendChild(defaultSummary);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLElement.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLElement.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/HTMLElement.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -449,17 +449,16 @@
</span><span class="cx">                 break;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        ExceptionCode ec = 0;
-        fragment-&gt;appendChild(Text::create(document(), text.substring(start, i - start)), ec);
-        if (ec)
-            return Exception { ec };
</del><ins>+        auto appendResult = fragment-&gt;appendChild(Text::create(document(), text.substring(start, i - start)));
+        if (appendResult.hasException())
+            return appendResult.releaseException();
</ins><span class="cx"> 
</span><span class="cx">         if (i == length)
</span><span class="cx">             break;
</span><span class="cx"> 
</span><del>-        fragment-&gt;appendChild(HTMLBRElement::create(document()), ec);
-        if (ec)
-            return Exception { ec };
</del><ins>+        appendResult = fragment-&gt;appendChild(HTMLBRElement::create(document()));
+        if (appendResult.hasException())
+            return appendResult.releaseException();
</ins><span class="cx"> 
</span><span class="cx">         // Make sure \r\n doesn't result in two line breaks.
</span><span class="cx">         if (c == '\r' &amp;&amp; i + 1 &lt; length &amp;&amp; text[i + 1] == '\n')
</span><span class="lines">@@ -577,10 +576,9 @@
</span><span class="cx">     if (!parentNode())
</span><span class="cx">         return Exception { HIERARCHY_REQUEST_ERR };
</span><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
-    parent-&gt;replaceChild(*newChild, *this, ec);
-    if (ec)
-        return Exception { ec };
</del><ins>+    auto replaceResult = parent-&gt;replaceChild(*newChild, *this);
+    if (replaceResult.hasException())
+        return replaceResult.releaseException();
</ins><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></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLKeygenElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLKeygenElement.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLKeygenElement.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/HTMLKeygenElement.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -77,11 +77,11 @@
</span><span class="cx">     auto select = KeygenSelectElement::create(document);
</span><span class="cx">     for (auto&amp; key : keys) {
</span><span class="cx">         auto option = HTMLOptionElement::create(document);
</span><del>-        select-&gt;appendChild(option, IGNORE_EXCEPTION);
-        option-&gt;appendChild(Text::create(document, key), IGNORE_EXCEPTION);
</del><ins>+        select-&gt;appendChild(option);
+        option-&gt;appendChild(Text::create(document, key));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ensureUserAgentShadowRoot().appendChild(select, IGNORE_EXCEPTION);
</del><ins>+    ensureUserAgentShadowRoot().appendChild(select);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;HTMLKeygenElement&gt; HTMLKeygenElement::create(const QualifiedName&amp; tagName, Document&amp; document, HTMLFormElement* form)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -5786,7 +5786,7 @@
</span><span class="cx">     if (isFullscreen())
</span><span class="cx">         mediaControls-&gt;enteredFullscreen();
</span><span class="cx"> 
</span><del>-    ensureUserAgentShadowRoot().appendChild(mediaControls, ASSERT_NO_EXCEPTION);
</del><ins>+    ensureUserAgentShadowRoot().appendChild(mediaControls);
</ins><span class="cx"> 
</span><span class="cx">     if (!controls() || !inDocument())
</span><span class="cx">         mediaControls-&gt;hide();
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMeterElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMeterElement.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMeterElement.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/HTMLMeterElement.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -231,7 +231,7 @@
</span><span class="cx">     static NeverDestroyed&lt;String&gt; shadowStyle(meterElementShadowUserAgentStyleSheet, String::ConstructFromLiteral);
</span><span class="cx"> 
</span><span class="cx">     auto style = HTMLStyleElement::create(HTMLNames::styleTag, document(), false);
</span><del>-    style-&gt;setTextContent(shadowStyle, IGNORE_EXCEPTION);
</del><ins>+    style-&gt;setTextContent(shadowStyle);
</ins><span class="cx">     root-&gt;appendChild(style);
</span><span class="cx"> 
</span><span class="cx">     // Pseudos are set to allow author styling.
</span><span class="lines">@@ -243,11 +243,11 @@
</span><span class="cx">     auto bar = HTMLDivElement::create(document());
</span><span class="cx">     bar-&gt;setIdAttribute(&quot;bar&quot;);
</span><span class="cx">     bar-&gt;setPseudo(&quot;-webkit-meter-bar&quot;);
</span><del>-    inner-&gt;appendChild(bar, ASSERT_NO_EXCEPTION);
</del><ins>+    inner-&gt;appendChild(bar);
</ins><span class="cx"> 
</span><span class="cx">     m_value = HTMLDivElement::create(document());
</span><span class="cx">     m_value-&gt;setIdAttribute(&quot;value&quot;);
</span><del>-    bar-&gt;appendChild(*m_value, ASSERT_NO_EXCEPTION);
</del><ins>+    bar-&gt;appendChild(*m_value);
</ins><span class="cx"> 
</span><span class="cx">     didElementStateChange();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLOptionElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLOptionElement.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLOptionElement.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/HTMLOptionElement.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -73,10 +73,9 @@
</span><span class="cx"> 
</span><span class="cx">     auto text = Text::create(document, data.isNull() ? emptyString() : data);
</span><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
-    element-&gt;appendChild(text, ec);
-    if (ec)
-        return Exception { ec };
</del><ins>+    auto appendResult = element-&gt;appendChild(text);
+    if (appendResult.hasException())
+        return appendResult.releaseException();
</ins><span class="cx"> 
</span><span class="cx">     if (!value.isNull())
</span><span class="cx">         element-&gt;setValue(value);
</span><span class="lines">@@ -127,7 +126,7 @@
</span><span class="cx">         downcast&lt;Text&gt;(*child).setData(text);
</span><span class="cx">     else {
</span><span class="cx">         removeChildren();
</span><del>-        appendChild(Text::create(document(), text), ASSERT_NO_EXCEPTION);
</del><ins>+        appendChild(Text::create(document(), text));
</ins><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     if (selectIsMenuList &amp;&amp; select-&gt;selectedIndex() != oldSelectedIndex)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLOptionsCollectioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLOptionsCollection.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLOptionsCollection.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/HTMLOptionsCollection.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLOptionsCollection::remove(int index)
</span><span class="cx"> {
</span><del>-    selectElement().removeByIndex(index);
</del><ins>+    selectElement().remove(index);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLOptionsCollection::remove(HTMLOptionElement&amp; option)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLOutputElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLOutputElement.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLOutputElement.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/HTMLOutputElement.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -138,7 +138,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!m_isSetTextContentInProgress);
</span><span class="cx">     m_isSetTextContentInProgress = true;
</span><del>-    setTextContent(value, IGNORE_EXCEPTION);
</del><ins>+    setTextContent(value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLProgressElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLProgressElement.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLProgressElement.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/HTMLProgressElement.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -148,9 +148,9 @@
</span><span class="cx">     auto value = ProgressValueElement::create(document());
</span><span class="cx">     m_value = value.ptr();
</span><span class="cx">     m_value-&gt;setWidthPercentage(HTMLProgressElement::IndeterminatePosition * 100);
</span><del>-    bar-&gt;appendChild(value, ASSERT_NO_EXCEPTION);
</del><ins>+    bar-&gt;appendChild(value);
</ins><span class="cx"> 
</span><del>-    inner-&gt;appendChild(bar, ASSERT_NO_EXCEPTION);
</del><ins>+    inner-&gt;appendChild(bar);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HTMLProgressElement::shouldAppearIndeterminate() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLScriptElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLScriptElement.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLScriptElement.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/HTMLScriptElement.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -82,7 +82,7 @@
</span><span class="cx"> // https://html.spec.whatwg.org/multipage/scripting.html#dom-script-text
</span><span class="cx"> void HTMLScriptElement::setText(const String&amp; value)
</span><span class="cx"> {
</span><del>-    setTextContent(value, ASSERT_NO_EXCEPTION);
</del><ins>+    setTextContent(value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLScriptElement::setAsync(bool async)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLSelectElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLSelectElement.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLSelectElement.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/HTMLSelectElement.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -233,14 +233,10 @@
</span><span class="cx">     );
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
-    insertBefore(toInsert, beforeElement, ec);
-    if (ec)
-        return Exception { ec };
-    return { };
</del><ins>+    return insertBefore(toInsert, beforeElement);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLSelectElement::removeByIndex(int optionIndex)
</del><ins>+void HTMLSelectElement::remove(int optionIndex)
</ins><span class="cx"> {
</span><span class="cx">     int listIndex = optionToListIndex(optionIndex);
</span><span class="cx">     if (listIndex &lt; 0)
</span><span class="lines">@@ -444,7 +440,7 @@
</span><span class="cx">         // Replace an existing entry?
</span><span class="cx">     } else if (diff &lt; 0) {
</span><span class="cx">         before = item(index + 1);
</span><del>-        removeByIndex(index);
</del><ins>+        remove(index);
</ins><span class="cx">     }
</span><span class="cx">     // Finally add the new element.
</span><span class="cx">     auto result = add(&amp;option, HTMLElementOrInt { before.get() });
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLSelectElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLSelectElement.h (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLSelectElement.h        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/HTMLSelectElement.h        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -57,7 +57,7 @@
</span><span class="cx"> 
</span><span class="cx">     using Node::remove;
</span><span class="cx">     ExceptionOr&lt;void&gt; remove(HTMLOptionElement&amp;);
</span><del>-    WEBCORE_EXPORT void removeByIndex(int); // Should be remove(int) but that conflicts with Node::remove(ExceptionCode&amp;).
</del><ins>+    WEBCORE_EXPORT void remove(int);
</ins><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT String value() const;
</span><span class="cx">     WEBCORE_EXPORT void setValue(const String&amp;);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLSelectElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLSelectElement.idl (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLSelectElement.idl        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/HTMLSelectElement.idl        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -43,9 +43,8 @@
</span><span class="cx">     [CEReactions, MayThrowException] void add((HTMLOptionElement or HTMLOptGroupElement) element, optional (HTMLElement or long)? before = null);
</span><span class="cx"> 
</span><span class="cx">     [MayThrowException] void remove(); // ChildNode overload
</span><del>-    // FIXME: This overload is not in the specification and was dropped in Blink.
-    [CEReactions] void remove(HTMLOptionElement option);
-    [CEReactions, ImplementedAs=removeByIndex] void remove(long index);
</del><ins>+    [CEReactions] void remove(HTMLOptionElement option); // FIXME: This overload is not in the specification and was dropped in Blink
+    [CEReactions] void remove(long index);
</ins><span class="cx"> 
</span><span class="cx">     readonly attribute HTMLCollection selectedOptions;
</span><span class="cx">     attribute long selectedIndex;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLSummaryElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLSummaryElement.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLSummaryElement.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/HTMLSummaryElement.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -57,7 +57,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLSummaryElement::didAddUserAgentShadowRoot(ShadowRoot* root)
</span><span class="cx"> {
</span><del>-    root-&gt;appendChild(DetailsMarkerControl::create(document()), ASSERT_NO_EXCEPTION);
</del><ins>+    root-&gt;appendChild(DetailsMarkerControl::create(document()));
</ins><span class="cx">     root-&gt;appendChild(HTMLSlotElement::create(slotTag, document()));
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableElement.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableElement.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/HTMLTableElement.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -50,11 +50,6 @@
</span><span class="cx"> 
</span><span class="cx"> HTMLTableElement::HTMLTableElement(const QualifiedName&amp; tagName, Document&amp; document)
</span><span class="cx">     : HTMLElement(tagName, document)
</span><del>-    , m_borderAttr(false)
-    , m_borderColorAttr(false)
-    , m_frameAttr(false)
-    , m_rulesAttr(UnsetRules)
-    , m_padding(1)
</del><span class="cx"> {
</span><span class="cx">     ASSERT(hasTagName(tableTag));
</span><span class="cx"> }
</span><span class="lines">@@ -71,23 +66,15 @@
</span><span class="cx"> 
</span><span class="cx"> HTMLTableCaptionElement* HTMLTableElement::caption() const
</span><span class="cx"> {
</span><del>-    for (Node* child = firstChild(); child; child = child-&gt;nextSibling()) {
-        if (is&lt;HTMLTableCaptionElement&gt;(*child))
-            return downcast&lt;HTMLTableCaptionElement&gt;(child);
-    }
-    return nullptr;
</del><ins>+    return childrenOfType&lt;HTMLTableCaptionElement&gt;(const_cast&lt;HTMLTableElement&amp;&gt;(*this)).first();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ExceptionOr&lt;void&gt; HTMLTableElement::setCaption(RefPtr&lt;HTMLTableCaptionElement&gt;&amp;&amp; newCaption)
</span><span class="cx"> {
</span><span class="cx">     deleteCaption();
</span><del>-    if (newCaption) {
-        ExceptionCode ec = 0;
-        insertBefore(*newCaption, firstChild(), ec);
-        if (ec)
-            return Exception { ec };
-    }
-    return { };
</del><ins>+    if (!newCaption)
+        return { };
+    return insertBefore(*newCaption, firstChild());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> HTMLTableSectionElement* HTMLTableElement::tHead() const
</span><span class="lines">@@ -105,7 +92,6 @@
</span><span class="cx">         return Exception { HIERARCHY_REQUEST_ERR };
</span><span class="cx"> 
</span><span class="cx">     deleteTHead();
</span><del>-
</del><span class="cx">     if (!newHead)
</span><span class="cx">         return { };
</span><span class="cx"> 
</span><span class="lines">@@ -115,11 +101,7 @@
</span><span class="cx">             break;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
-    insertBefore(*newHead, child, ec);
-    if (ec)
-        return Exception { ec };
-    return { };
</del><ins>+    return insertBefore(*newHead, child);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> HTMLTableSectionElement* HTMLTableElement::tFoot() const
</span><span class="lines">@@ -135,17 +117,10 @@
</span><span class="cx"> {
</span><span class="cx">     if (UNLIKELY(newFoot &amp;&amp; !newFoot-&gt;hasTagName(tfootTag)))
</span><span class="cx">         return Exception { HIERARCHY_REQUEST_ERR };
</span><del>-
</del><span class="cx">     deleteTFoot();
</span><del>-
</del><span class="cx">     if (!newFoot)
</span><span class="cx">         return { };
</span><del>-
-    ExceptionCode ec = 0;
-    appendChild(*newFoot, ec);
-    if (ec)
-        return Exception { ec };
-    return { };
</del><ins>+    return appendChild(*newFoot);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;HTMLTableSectionElement&gt; HTMLTableElement::createTHead()
</span><span class="lines">@@ -175,7 +150,7 @@
</span><span class="cx"> void HTMLTableElement::deleteTFoot()
</span><span class="cx"> {
</span><span class="cx">     if (auto* foot = tFoot())
</span><del>-        removeChild(*foot, IGNORE_EXCEPTION);
</del><ins>+        removeChild(*foot);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;HTMLTableSectionElement&gt; HTMLTableElement::createTBody()
</span><span class="lines">@@ -182,7 +157,7 @@
</span><span class="cx"> {
</span><span class="cx">     auto body = HTMLTableSectionElement::create(tbodyTag, document());
</span><span class="cx">     Node* referenceElement = lastBody() ? lastBody()-&gt;nextSibling() : nullptr;
</span><del>-    insertBefore(body, referenceElement, ASSERT_NO_EXCEPTION);
</del><ins>+    insertBefore(body, referenceElement);
</ins><span class="cx">     return body;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -198,7 +173,7 @@
</span><span class="cx"> void HTMLTableElement::deleteCaption()
</span><span class="cx"> {
</span><span class="cx">     if (auto* caption = this-&gt;caption())
</span><del>-        removeChild(*caption, IGNORE_EXCEPTION);
</del><ins>+        removeChild(*caption);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> HTMLTableSectionElement* HTMLTableElement::lastBody() const
</span><span class="lines">@@ -241,21 +216,19 @@
</span><span class="cx">         if (!parent) {
</span><span class="cx">             auto newBody = HTMLTableSectionElement::create(tbodyTag, document());
</span><span class="cx">             auto newRow = HTMLTableRowElement::create(document());
</span><del>-            ExceptionCode ec = 0;
-            newBody-&gt;appendChild(newRow, ec);
</del><ins>+            newBody-&gt;appendChild(newRow);
</ins><span class="cx">             // FIXME: Why ignore the exception if the first appendChild failed?
</span><del>-            appendChild(newBody, ec);
-            if (ec)
-                return Exception { ec };
</del><ins>+            auto result = appendChild(newBody);
+            if (result.hasException())
+                return result.releaseException();
</ins><span class="cx">             return Ref&lt;HTMLElement&gt; { WTFMove(newRow) };
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     auto newRow = HTMLTableRowElement::create(document());
</span><del>-    ExceptionCode ec = 0;
-    parent-&gt;insertBefore(newRow, row.get(), ec);
-    if (ec)
-        return Exception { ec };
</del><ins>+    auto result = parent-&gt;insertBefore(newRow, row.get());
+    if (result.hasException())
+        return result.releaseException();
</ins><span class="cx">     return Ref&lt;HTMLElement&gt; { WTFMove(newRow) };
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableElement.h (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableElement.h        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/HTMLTableElement.h        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -89,13 +89,11 @@
</span><span class="cx"> 
</span><span class="cx">     HTMLTableSectionElement* lastBody() const;
</span><span class="cx"> 
</span><del>-    bool m_borderAttr;          // Sets a precise border width and creates an outset border for the table and for its cells.
-    bool m_borderColorAttr;     // Overrides the outset border and makes it solid for the table and cells instead.
-    bool m_frameAttr;           // Implies a thin border width if no border is set and then a certain set of solid/hidden borders based off the value.
-    TableRules m_rulesAttr;     // Implies a thin border width, a collapsing border model, and all borders on the table becoming set to hidden (if frame/border
-                                // are present, to none otherwise).
-
-    unsigned short m_padding;
</del><ins>+    bool m_borderAttr { false }; // Sets a precise border width and creates an outset border for the table and for its cells.
+    bool m_borderColorAttr { false }; // Overrides the outset border and makes it solid for the table and cells instead.
+    bool m_frameAttr { false }; // Implies a thin border width if no border is set and then a certain set of solid/hidden borders based off the value.
+    TableRules m_rulesAttr { UnsetRules }; // Implies a thin border width, a collapsing border model, and all borders on the table becoming set to hidden (if frame/border are present, to none otherwise).
+    unsigned short m_padding { 1 };
</ins><span class="cx">     RefPtr&lt;StyleProperties&gt; m_sharedCellStyle;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableRowElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableRowElement.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableRowElement.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/HTMLTableRowElement.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -118,19 +118,13 @@
</span><span class="cx">     if (index &gt; numCells)
</span><span class="cx">         return Exception { INDEX_SIZE_ERR };
</span><span class="cx">     auto cell = HTMLTableCellElement::create(tdTag, document());
</span><del>-    ExceptionCode ec = 0;
</del><ins>+    ExceptionOr&lt;void&gt; result;
</ins><span class="cx">     if (index &lt; 0 || index &gt;= numCells)
</span><del>-        appendChild(cell, ec);
-    else {
-        Node* n;
-        if (index &lt; 1)
-            n = firstChild();
-        else
-            n = children-&gt;item(index);
-        insertBefore(cell, n, ec);
-    }
-    if (ec)
-        return Exception { ec };
</del><ins>+        result = appendChild(cell);
+    else
+        result = insertBefore(cell, index &lt; 1 ? firstChild() : children-&gt;item(index));
+    if (result.hasException())
+        return result.releaseException();
</ins><span class="cx">     return WTFMove(cell);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -145,11 +139,7 @@
</span><span class="cx">     }
</span><span class="cx">     if (index &lt; 0 || index &gt;= numCells)
</span><span class="cx">         return Exception { INDEX_SIZE_ERR };
</span><del>-    ExceptionCode ec = 0;
-    removeChild(*children-&gt;item(index), ec);
-    if (ec)
-        return Exception { ec };
-    return { };
</del><ins>+    return removeChild(*children-&gt;item(index));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;HTMLCollection&gt; HTMLTableRowElement::cells()
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableSectionElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableSectionElement.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableSectionElement.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/HTMLTableSectionElement.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -66,19 +66,13 @@
</span><span class="cx">     if (index &gt; numRows)
</span><span class="cx">         return Exception { INDEX_SIZE_ERR };
</span><span class="cx">     auto row = HTMLTableRowElement::create(trTag, document());
</span><del>-    ExceptionCode ec = 0;
</del><ins>+    ExceptionOr&lt;void&gt; result;
</ins><span class="cx">     if (numRows == index || index == -1)
</span><del>-        appendChild(row, ec);
-    else {
-        Node* n;
-        if (index &lt; 1)
-            n = firstChild();
-        else
-            n = children-&gt;item(index);
-        insertBefore(row, n, ec);
-    }
-    if (ec)
-        return Exception { ec };
</del><ins>+        result = appendChild(row);
+    else
+        result = insertBefore(row, index &lt; 1 ? firstChild() : children-&gt;item(index));
+    if (result.hasException())
+        return result.releaseException();
</ins><span class="cx">     return Ref&lt;HTMLElement&gt; { WTFMove(row) };
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -93,11 +87,7 @@
</span><span class="cx">     }
</span><span class="cx">     if (index &lt; 0 || index &gt;= numRows)
</span><span class="cx">         return Exception { INDEX_SIZE_ERR };
</span><del>-    ExceptionCode ec = 0;
-    removeChild(*children-&gt;item(index), ec);
-    if (ec)
-        return Exception { ec };
-    return { };
</del><ins>+    return removeChild(*children-&gt;item(index));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> int HTMLTableSectionElement::numRows() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTextAreaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTextAreaElement.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTextAreaElement.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/HTMLTextAreaElement.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -105,7 +105,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLTextAreaElement::didAddUserAgentShadowRoot(ShadowRoot* root)
</span><span class="cx"> {
</span><del>-    root-&gt;appendChild(TextControlInnerTextElement::create(document()), ASSERT_NO_EXCEPTION);
</del><ins>+    root-&gt;appendChild(TextControlInnerTextElement::create(document()));
</ins><span class="cx">     updateInnerTextElementEditability();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -416,7 +416,7 @@
</span><span class="cx">         textNodes.append(*textNode);
</span><span class="cx"> 
</span><span class="cx">     for (auto&amp; textNode : textNodes)
</span><del>-        removeChild(textNode.get(), IGNORE_EXCEPTION);
</del><ins>+        removeChild(textNode.get());
</ins><span class="cx"> 
</span><span class="cx">     // Normalize line endings.
</span><span class="cx">     String value = defaultValue;
</span><span class="lines">@@ -423,7 +423,7 @@
</span><span class="cx">     value.replace(&quot;\r\n&quot;, &quot;\n&quot;);
</span><span class="cx">     value.replace('\r', '\n');
</span><span class="cx"> 
</span><del>-    insertBefore(document().createTextNode(value), firstChild(), IGNORE_EXCEPTION);
</del><ins>+    insertBefore(document().createTextNode(value), firstChild());
</ins><span class="cx"> 
</span><span class="cx">     if (!m_isDirty)
</span><span class="cx">         setNonDirtyValue(value);
</span><span class="lines">@@ -546,7 +546,7 @@
</span><span class="cx">     String placeholderText = strippedPlaceholder();
</span><span class="cx">     if (placeholderText.isEmpty()) {
</span><span class="cx">         if (m_placeholder) {
</span><del>-            userAgentShadowRoot()-&gt;removeChild(*m_placeholder, ASSERT_NO_EXCEPTION);
</del><ins>+            userAgentShadowRoot()-&gt;removeChild(*m_placeholder);
</ins><span class="cx">             m_placeholder = nullptr;
</span><span class="cx">         }
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTextFormControlElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -560,7 +560,7 @@
</span><span class="cx">         innerText-&gt;setInnerText(value);
</span><span class="cx"> 
</span><span class="cx">         if (value.endsWith('\n') || value.endsWith('\r'))
</span><del>-            innerText-&gt;appendChild(HTMLBRElement::create(document()), ASSERT_NO_EXCEPTION);
</del><ins>+            innerText-&gt;appendChild(HTMLBRElement::create(document()));
</ins><span class="cx"> 
</span><span class="cx"> #if HAVE(ACCESSIBILITY) &amp;&amp; PLATFORM(COCOA)
</span><span class="cx">         if (textIsChanged &amp;&amp; renderer()) {
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTitleElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTitleElement.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTitleElement.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/HTMLTitleElement.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -94,7 +94,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLTitleElement::setText(const String&amp; value)
</span><span class="cx"> {
</span><del>-    setTextContent(value, ASSERT_NO_EXCEPTION);
</del><ins>+    setTextContent(value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlMediaDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/MediaDocument.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/MediaDocument.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/MediaDocument.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -81,7 +81,7 @@
</span><span class="cx"> void MediaDocumentParser::createDocumentStructure()
</span><span class="cx"> {
</span><span class="cx">     auto rootElement = document()-&gt;createElement(htmlTag, false);
</span><del>-    document()-&gt;appendChild(rootElement, IGNORE_EXCEPTION);
</del><ins>+    document()-&gt;appendChild(rootElement);
</ins><span class="cx">     document()-&gt;setCSSTarget(rootElement.ptr());
</span><span class="cx">     downcast&lt;HTMLHtmlElement&gt;(rootElement.get()).insertedByParser();
</span><span class="cx"> 
</span><span class="lines">@@ -90,16 +90,16 @@
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx">     auto headElement = document()-&gt;createElement(headTag, false);
</span><del>-    rootElement-&gt;appendChild(headElement, IGNORE_EXCEPTION);
</del><ins>+    rootElement-&gt;appendChild(headElement);
</ins><span class="cx"> 
</span><span class="cx">     auto metaElement = document()-&gt;createElement(metaTag, false);
</span><span class="cx">     metaElement-&gt;setAttributeWithoutSynchronization(nameAttr, AtomicString(&quot;viewport&quot;, AtomicString::ConstructFromLiteral));
</span><span class="cx">     metaElement-&gt;setAttributeWithoutSynchronization(contentAttr, AtomicString(&quot;width=device-width,initial-scale=1,user-scalable=no&quot;, AtomicString::ConstructFromLiteral));
</span><del>-    headElement-&gt;appendChild(metaElement, IGNORE_EXCEPTION);
</del><ins>+    headElement-&gt;appendChild(metaElement);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     auto body = document()-&gt;createElement(bodyTag, false);
</span><del>-    rootElement-&gt;appendChild(body, IGNORE_EXCEPTION);
</del><ins>+    rootElement-&gt;appendChild(body);
</ins><span class="cx"> 
</span><span class="cx">     auto mediaElement = document()-&gt;createElement(videoTag, false);
</span><span class="cx"> 
</span><span class="lines">@@ -123,8 +123,8 @@
</span><span class="cx">     if (DocumentLoader* loader = document()-&gt;loader())
</span><span class="cx">         source.setType(loader-&gt;responseMIMEType());
</span><span class="cx"> 
</span><del>-    m_mediaElement-&gt;appendChild(sourceElement, IGNORE_EXCEPTION);
-    body-&gt;appendChild(mediaElement, IGNORE_EXCEPTION);
</del><ins>+    m_mediaElement-&gt;appendChild(sourceElement);
+    body-&gt;appendChild(mediaElement);
</ins><span class="cx"> 
</span><span class="cx">     Frame* frame = document()-&gt;frame();
</span><span class="cx">     if (!frame)
</span><span class="lines">@@ -255,7 +255,7 @@
</span><span class="cx">         if (documentLoader)
</span><span class="cx">             embedElement.setAttributeWithoutSynchronization(typeAttr, documentLoader-&gt;writer().mimeType());
</span><span class="cx"> 
</span><del>-        videoElement-&gt;parentNode()-&gt;replaceChild(embedElement, *videoElement, IGNORE_EXCEPTION);
</del><ins>+        videoElement-&gt;parentNode()-&gt;replaceChild(embedElement, *videoElement);
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlPluginDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/PluginDocument.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/PluginDocument.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/PluginDocument.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -67,7 +67,7 @@
</span><span class="cx"> void PluginDocumentParser::createDocumentStructure()
</span><span class="cx"> {
</span><span class="cx">     auto rootElement = document()-&gt;createElement(htmlTag, false);
</span><del>-    document()-&gt;appendChild(rootElement, IGNORE_EXCEPTION);
</del><ins>+    document()-&gt;appendChild(rootElement);
</ins><span class="cx">     downcast&lt;HTMLHtmlElement&gt;(rootElement.get()).insertedByParser();
</span><span class="cx"> 
</span><span class="cx">     if (document()-&gt;frame())
</span><span class="lines">@@ -87,7 +87,7 @@
</span><span class="cx">     body-&gt;setAttribute(styleAttr, AtomicString(&quot;background-color: rgb(38,38,38)&quot;, AtomicString::ConstructFromLiteral));
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    rootElement-&gt;appendChild(body, IGNORE_EXCEPTION);
</del><ins>+    rootElement-&gt;appendChild(body);
</ins><span class="cx">         
</span><span class="cx">     auto embedElement = document()-&gt;createElement(embedTag, false);
</span><span class="cx">         
</span><span class="lines">@@ -105,7 +105,7 @@
</span><span class="cx"> 
</span><span class="cx">     downcast&lt;PluginDocument&gt;(*document()).setPluginElement(m_embedElement);
</span><span class="cx"> 
</span><del>-    body-&gt;appendChild(embedElement, IGNORE_EXCEPTION);
</del><ins>+    body-&gt;appendChild(embedElement);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void PluginDocumentParser::appendBytes(DocumentWriter&amp;, const char*, size_t)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlRangeInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/RangeInputType.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/RangeInputType.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/RangeInputType.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -255,10 +255,10 @@
</span><span class="cx">     Document&amp; document = element().document();
</span><span class="cx">     auto track = HTMLDivElement::create(document);
</span><span class="cx">     track-&gt;setPseudo(AtomicString(&quot;-webkit-slider-runnable-track&quot;, AtomicString::ConstructFromLiteral));
</span><del>-    track-&gt;appendChild(SliderThumbElement::create(document), IGNORE_EXCEPTION);
</del><ins>+    track-&gt;appendChild(SliderThumbElement::create(document));
</ins><span class="cx">     auto container = SliderContainerElement::create(document);
</span><del>-    container-&gt;appendChild(track, IGNORE_EXCEPTION);
-    element().userAgentShadowRoot()-&gt;appendChild(container, IGNORE_EXCEPTION);
</del><ins>+    container-&gt;appendChild(track);
+    element().userAgentShadowRoot()-&gt;appendChild(container);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> HTMLElement* RangeInputType::sliderTrackElement() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlSearchInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/SearchInputType.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/SearchInputType.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/SearchInputType.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -110,11 +110,11 @@
</span><span class="cx">     auto resultsButton = SearchFieldResultsButtonElement::create(element().document());
</span><span class="cx">     m_resultsButton = resultsButton.ptr();
</span><span class="cx">     updateResultButtonPseudoType(resultsButton.get(), element().maxResults());
</span><del>-    container-&gt;insertBefore(resultsButton, textWrapper, IGNORE_EXCEPTION);
</del><ins>+    container-&gt;insertBefore(resultsButton, textWrapper);
</ins><span class="cx"> 
</span><span class="cx">     auto cancelButton = SearchFieldCancelButtonElement::create(element().document());
</span><span class="cx">     m_cancelButton = cancelButton.ptr();
</span><del>-    container-&gt;insertBefore(cancelButton, textWrapper-&gt;nextSibling(), IGNORE_EXCEPTION);
</del><ins>+    container-&gt;insertBefore(cancelButton, textWrapper-&gt;nextSibling());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> HTMLElement* SearchInputType::resultsButtonElement() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlTextFieldInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/TextFieldInputType.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/TextFieldInputType.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/TextFieldInputType.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -270,7 +270,7 @@
</span><span class="cx">     m_innerText = TextControlInnerTextElement::create(document);
</span><span class="cx"> 
</span><span class="cx">     if (!createsContainer) {
</span><del>-        element().userAgentShadowRoot()-&gt;appendChild(*m_innerText, IGNORE_EXCEPTION);
</del><ins>+        element().userAgentShadowRoot()-&gt;appendChild(*m_innerText);
</ins><span class="cx">         updatePlaceholderText();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="lines">@@ -280,7 +280,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (shouldHaveSpinButton) {
</span><span class="cx">         m_innerSpinButton = SpinButtonElement::create(document, *this);
</span><del>-        m_container-&gt;appendChild(*m_innerSpinButton, IGNORE_EXCEPTION);
</del><ins>+        m_container-&gt;appendChild(*m_innerSpinButton);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (shouldHaveCapsLockIndicator) {
</span><span class="lines">@@ -290,7 +290,7 @@
</span><span class="cx">         bool shouldDrawCapsLockIndicator = this-&gt;shouldDrawCapsLockIndicator();
</span><span class="cx">         m_capsLockIndicator-&gt;setInlineStyleProperty(CSSPropertyDisplay, shouldDrawCapsLockIndicator ? CSSValueBlock : CSSValueNone, true);
</span><span class="cx"> 
</span><del>-        m_container-&gt;appendChild(*m_capsLockIndicator, IGNORE_EXCEPTION);
</del><ins>+        m_container-&gt;appendChild(*m_capsLockIndicator);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     updateAutoFillButton();
</span><span class="lines">@@ -500,7 +500,7 @@
</span><span class="cx">     String placeholderText = element().strippedPlaceholder();
</span><span class="cx">     if (placeholderText.isEmpty()) {
</span><span class="cx">         if (m_placeholder) {
</span><del>-            m_placeholder-&gt;parentNode()-&gt;removeChild(*m_placeholder, ASSERT_NO_EXCEPTION);
</del><ins>+            m_placeholder-&gt;parentNode()-&gt;removeChild(*m_placeholder);
</ins><span class="cx">             m_placeholder = nullptr;
</span><span class="cx">         }
</span><span class="cx">         return;
</span><span class="lines">@@ -507,7 +507,7 @@
</span><span class="cx">     }
</span><span class="cx">     if (!m_placeholder) {
</span><span class="cx">         m_placeholder = TextControlPlaceholderElement::create(element().document());
</span><del>-        element().userAgentShadowRoot()-&gt;insertBefore(*m_placeholder, m_container ? m_container.get() : innerTextElement(), ASSERT_NO_EXCEPTION);        
</del><ins>+        element().userAgentShadowRoot()-&gt;insertBefore(*m_placeholder, m_container ? m_container.get() : innerTextElement());
</ins><span class="cx">     }
</span><span class="cx">     m_placeholder-&gt;setInnerText(placeholderText);
</span><span class="cx"> }
</span><span class="lines">@@ -645,10 +645,10 @@
</span><span class="cx">     m_container-&gt;setPseudo(AtomicString(&quot;-webkit-textfield-decoration-container&quot;, AtomicString::ConstructFromLiteral));
</span><span class="cx"> 
</span><span class="cx">     m_innerBlock = TextControlInnerElement::create(element().document());
</span><del>-    m_innerBlock-&gt;appendChild(*m_innerText, IGNORE_EXCEPTION);
-    m_container-&gt;appendChild(*m_innerBlock, IGNORE_EXCEPTION);
</del><ins>+    m_innerBlock-&gt;appendChild(*m_innerText);
+    m_container-&gt;appendChild(*m_innerBlock);
</ins><span class="cx"> 
</span><del>-    element().userAgentShadowRoot()-&gt;appendChild(*m_container, IGNORE_EXCEPTION);
</del><ins>+    element().userAgentShadowRoot()-&gt;appendChild(*m_container);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void TextFieldInputType::createAutoFillButton(AutoFillButtonType autoFillButtonType)
</span><span class="lines">@@ -662,7 +662,7 @@
</span><span class="cx">     m_autoFillButton-&gt;setPseudo(autoFillButtonTypeToAutoFillButtonPseudoClassName(autoFillButtonType));
</span><span class="cx">     m_autoFillButton-&gt;setAttributeWithoutSynchronization(roleAttr, AtomicString(&quot;button&quot;, AtomicString::ConstructFromLiteral));
</span><span class="cx">     m_autoFillButton-&gt;setAttributeWithoutSynchronization(aria_labelAttr, autoFillButtonTypeToAccessibilityLabel(autoFillButtonType));
</span><del>-    m_container-&gt;appendChild(*m_autoFillButton, IGNORE_EXCEPTION);
</del><ins>+    m_container-&gt;appendChild(*m_autoFillButton);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void TextFieldInputType::updateAutoFillButton()
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlValidationMessagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/ValidationMessage.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/ValidationMessage.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/ValidationMessage.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -133,9 +133,9 @@
</span><span class="cx">     Document&amp; document = m_messageHeading-&gt;document();
</span><span class="cx">     for (unsigned i = 0; i &lt; lines.size(); ++i) {
</span><span class="cx">         if (i) {
</span><del>-            m_messageBody-&gt;appendChild(Text::create(document, lines[i]), ASSERT_NO_EXCEPTION);
</del><ins>+            m_messageBody-&gt;appendChild(Text::create(document, lines[i]));
</ins><span class="cx">             if (i &lt; lines.size() - 1)
</span><del>-                m_messageBody-&gt;appendChild(HTMLBRElement::create(document), ASSERT_NO_EXCEPTION);
</del><ins>+                m_messageBody-&gt;appendChild(HTMLBRElement::create(document));
</ins><span class="cx">         } else
</span><span class="cx">             m_messageHeading-&gt;setInnerText(lines[i]);
</span><span class="cx">     }
</span><span class="lines">@@ -188,7 +188,7 @@
</span><span class="cx">     // Need to force position:absolute because RenderMenuList doesn't assume it
</span><span class="cx">     // contains non-absolute or non-fixed renderers as children.
</span><span class="cx">     m_bubble-&gt;setInlineStyleProperty(CSSPropertyPosition, CSSValueAbsolute);
</span><del>-    shadowRoot.appendChild(*m_bubble, ASSERT_NO_EXCEPTION);
</del><ins>+    shadowRoot.appendChild(*m_bubble);
</ins><span class="cx">     document.updateLayout();
</span><span class="cx">     adjustBubblePosition(m_element-&gt;renderer()-&gt;absoluteBoundingBoxRect(), m_bubble.get());
</span><span class="cx"> 
</span><span class="lines">@@ -196,24 +196,24 @@
</span><span class="cx">     clipper-&gt;setPseudo(AtomicString(&quot;-webkit-validation-bubble-arrow-clipper&quot;, AtomicString::ConstructFromLiteral));
</span><span class="cx">     auto bubbleArrow = HTMLDivElement::create(document);
</span><span class="cx">     bubbleArrow-&gt;setPseudo(AtomicString(&quot;-webkit-validation-bubble-arrow&quot;, AtomicString::ConstructFromLiteral));
</span><del>-    clipper-&gt;appendChild(bubbleArrow, ASSERT_NO_EXCEPTION);
-    m_bubble-&gt;appendChild(clipper, ASSERT_NO_EXCEPTION);
</del><ins>+    clipper-&gt;appendChild(bubbleArrow);
+    m_bubble-&gt;appendChild(clipper);
</ins><span class="cx"> 
</span><span class="cx">     auto message = HTMLDivElement::create(document);
</span><span class="cx">     message-&gt;setPseudo(AtomicString(&quot;-webkit-validation-bubble-message&quot;, AtomicString::ConstructFromLiteral));
</span><span class="cx">     auto icon = HTMLDivElement::create(document);
</span><span class="cx">     icon-&gt;setPseudo(AtomicString(&quot;-webkit-validation-bubble-icon&quot;, AtomicString::ConstructFromLiteral));
</span><del>-    message-&gt;appendChild(icon, ASSERT_NO_EXCEPTION);
</del><ins>+    message-&gt;appendChild(icon);
</ins><span class="cx">     auto textBlock = HTMLDivElement::create(document);
</span><span class="cx">     textBlock-&gt;setPseudo(AtomicString(&quot;-webkit-validation-bubble-text-block&quot;, AtomicString::ConstructFromLiteral));
</span><span class="cx">     m_messageHeading = HTMLDivElement::create(document);
</span><span class="cx">     m_messageHeading-&gt;setPseudo(AtomicString(&quot;-webkit-validation-bubble-heading&quot;, AtomicString::ConstructFromLiteral));
</span><del>-    textBlock-&gt;appendChild(*m_messageHeading, ASSERT_NO_EXCEPTION);
</del><ins>+    textBlock-&gt;appendChild(*m_messageHeading);
</ins><span class="cx">     m_messageBody = HTMLDivElement::create(document);
</span><span class="cx">     m_messageBody-&gt;setPseudo(AtomicString(&quot;-webkit-validation-bubble-body&quot;, AtomicString::ConstructFromLiteral));
</span><del>-    textBlock-&gt;appendChild(*m_messageBody, ASSERT_NO_EXCEPTION);
-    message-&gt;appendChild(textBlock, ASSERT_NO_EXCEPTION);
-    m_bubble-&gt;appendChild(message, ASSERT_NO_EXCEPTION);
</del><ins>+    textBlock-&gt;appendChild(*m_messageBody);
+    message-&gt;appendChild(textBlock);
+    m_bubble-&gt;appendChild(message);
</ins><span class="cx"> 
</span><span class="cx">     setMessageDOMAndStartTimer();
</span><span class="cx"> 
</span><span class="lines">@@ -245,7 +245,7 @@
</span><span class="cx">     if (m_bubble) {
</span><span class="cx">         m_messageHeading = nullptr;
</span><span class="cx">         m_messageBody = nullptr;
</span><del>-        m_element-&gt;userAgentShadowRoot()-&gt;removeChild(*m_bubble, ASSERT_NO_EXCEPTION);
</del><ins>+        m_element-&gt;userAgentShadowRoot()-&gt;removeChild(*m_bubble);
</ins><span class="cx">         m_bubble = nullptr;
</span><span class="cx">     }
</span><span class="cx">     m_message = String();
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowMediaControlElementscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/MediaControlElements.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/MediaControlElements.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/shadow/MediaControlElements.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -1181,7 +1181,7 @@
</span><span class="cx">             // track cue region identifier, run the following substeps:
</span><span class="cx">             if (displayBox-&gt;hasChildNodes() &amp;&amp; !contains(displayBox.ptr())) {
</span><span class="cx">                 // Note: the display tree of a cue is removed when the active flag of the cue is unset.
</span><del>-                appendChild(displayBox, ASSERT_NO_EXCEPTION);
</del><ins>+                appendChild(displayBox);
</ins><span class="cx">                 cue-&gt;setFontSize(m_fontSize, m_videoDisplaySize.size(), m_fontSizeIsImportant);
</span><span class="cx">             }
</span><span class="cx">         } else {
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowMediaControlscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/MediaControls.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/MediaControls.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/shadow/MediaControls.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -378,6 +378,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(VIDEO_TRACK)
</span><ins>+
</ins><span class="cx"> void MediaControls::createTextTrackDisplay()
</span><span class="cx"> {
</span><span class="cx">     if (m_textDisplayContainer)
</span><span class="lines">@@ -390,7 +391,7 @@
</span><span class="cx">         m_textDisplayContainer-&gt;setMediaController(m_mediaController);
</span><span class="cx"> 
</span><span class="cx">     // Insert it before the first controller element so it always displays behind the controls.
</span><del>-    insertBefore(textDisplayContainer, m_panel, IGNORE_EXCEPTION);
</del><ins>+    insertBefore(textDisplayContainer, m_panel);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaControls::showTextTrackDisplay()
</span><span class="lines">@@ -421,6 +422,7 @@
</span><span class="cx">     if (m_textDisplayContainer)
</span><span class="cx">         m_textDisplayContainer-&gt;updateSizes(true);
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> void MediaControls::setSliderVolume()
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowMediaControlsApplecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/MediaControlsApple.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/MediaControlsApple.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/shadow/MediaControlsApple.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -40,20 +40,6 @@
</span><span class="cx"> 
</span><span class="cx"> MediaControlsApple::MediaControlsApple(Document&amp; document)
</span><span class="cx">     : MediaControls(document)
</span><del>-    , m_rewindButton(0)
-    , m_returnToRealTimeButton(0)
-    , m_statusDisplay(0)
-    , m_timeRemainingDisplay(0)
-    , m_timelineContainer(0)
-    , m_seekBackButton(0)
-    , m_seekForwardButton(0)
-    , m_closedCaptionsTrackList(0)
-    , m_closedCaptionsContainer(0)
-    , m_volumeSliderMuteButton(0)
-    , m_volumeSliderContainer(0)
-    , m_fullScreenMinVolumeButton(0)
-    , m_fullScreenVolumeSlider(0)
-    , m_fullScreenMaxVolumeButton(0)
</del><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -71,31 +57,25 @@
</span><span class="cx"> 
</span><span class="cx">     auto panel = MediaControlPanelElement::create(document);
</span><span class="cx"> 
</span><del>-    ExceptionCode ec;
-
</del><span class="cx">     auto rewindButton = MediaControlRewindButtonElement::create(document);
</span><span class="cx">     controls-&gt;m_rewindButton = rewindButton.ptr();
</span><del>-    panel-&gt;appendChild(rewindButton, ec);
-    if (ec)
</del><ins>+    if (panel-&gt;appendChild(rewindButton).hasException())
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     auto playButton = MediaControlPlayButtonElement::create(document);
</span><span class="cx">     controls-&gt;m_playButton = playButton.ptr();
</span><del>-    panel-&gt;appendChild(playButton, ec);
-    if (ec)
</del><ins>+    if (panel-&gt;appendChild(playButton).hasException())
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     auto returnToRealtimeButton = MediaControlReturnToRealtimeButtonElement::create(document);
</span><span class="cx">     controls-&gt;m_returnToRealTimeButton = returnToRealtimeButton.ptr();
</span><del>-    panel-&gt;appendChild(returnToRealtimeButton, ec);
-    if (ec)
</del><ins>+    if (panel-&gt;appendChild(returnToRealtimeButton).hasException())
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     if (document.page()-&gt;theme().usesMediaControlStatusDisplay()) {
</span><span class="cx">         auto statusDisplay = MediaControlStatusDisplayElement::create(document);
</span><span class="cx">         controls-&gt;m_statusDisplay = statusDisplay.ptr();
</span><del>-        panel-&gt;appendChild(statusDisplay, ec);
-        if (ec)
</del><ins>+        if (panel-&gt;appendChild(statusDisplay).hasException())
</ins><span class="cx">             return nullptr;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -103,39 +83,33 @@
</span><span class="cx"> 
</span><span class="cx">     auto currentTimeDisplay = MediaControlCurrentTimeDisplayElement::create(document);
</span><span class="cx">     controls-&gt;m_currentTimeDisplay = currentTimeDisplay.ptr();
</span><del>-    timelineContainer-&gt;appendChild(currentTimeDisplay, ec);
-    if (ec)
</del><ins>+    if (timelineContainer-&gt;appendChild(currentTimeDisplay).hasException())
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     auto timeline = MediaControlTimelineElement::create(document, controls.ptr());
</span><span class="cx">     controls-&gt;m_timeline = timeline.ptr();
</span><del>-    timelineContainer-&gt;appendChild(timeline, ec);
-    if (ec)
</del><ins>+    if (timelineContainer-&gt;appendChild(timeline).hasException())
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     auto timeRemainingDisplay = MediaControlTimeRemainingDisplayElement::create(document);
</span><span class="cx">     controls-&gt;m_timeRemainingDisplay = timeRemainingDisplay.ptr();
</span><del>-    timelineContainer-&gt;appendChild(timeRemainingDisplay, ec);
-    if (ec)
</del><ins>+    if (timelineContainer-&gt;appendChild(timeRemainingDisplay).hasException())
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     controls-&gt;m_timelineContainer = timelineContainer.ptr();
</span><del>-    panel-&gt;appendChild(timelineContainer, ec);
-    if (ec)
</del><ins>+    if (panel-&gt;appendChild(timelineContainer).hasException())
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     // FIXME: Only create when needed &lt;http://webkit.org/b/57163&gt;
</span><span class="cx">     auto seekBackButton = MediaControlSeekBackButtonElement::create(document);
</span><span class="cx">     controls-&gt;m_seekBackButton = seekBackButton.ptr();
</span><del>-    panel-&gt;appendChild(seekBackButton, ec);
-    if (ec)
</del><ins>+    if (panel-&gt;appendChild(seekBackButton).hasException())
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     // FIXME: Only create when needed &lt;http://webkit.org/b/57163&gt;
</span><span class="cx">     auto seekForwardButton = MediaControlSeekForwardButtonElement::create(document);
</span><span class="cx">     controls-&gt;m_seekForwardButton = seekForwardButton.ptr();
</span><del>-    panel-&gt;appendChild(seekForwardButton, ec);
-    if (ec)
</del><ins>+    if (panel-&gt;appendChild(seekForwardButton).hasException())
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     if (document.page()-&gt;theme().supportsClosedCaptioning()) {
</span><span class="lines">@@ -143,19 +117,16 @@
</span><span class="cx"> 
</span><span class="cx">         auto closedCaptionsTrackList = MediaControlClosedCaptionsTrackListElement::create(document, controls.ptr());
</span><span class="cx">         controls-&gt;m_closedCaptionsTrackList = closedCaptionsTrackList.ptr();
</span><del>-        closedCaptionsContainer-&gt;appendChild(closedCaptionsTrackList, ec);
-        if (ec)
</del><ins>+        if (closedCaptionsContainer-&gt;appendChild(closedCaptionsTrackList).hasException())
</ins><span class="cx">             return nullptr;
</span><span class="cx"> 
</span><span class="cx">         auto toggleClosedCaptionsButton = MediaControlToggleClosedCaptionsButtonElement::create(document, controls.ptr());
</span><span class="cx">         controls-&gt;m_toggleClosedCaptionsButton = toggleClosedCaptionsButton.ptr();
</span><del>-        panel-&gt;appendChild(toggleClosedCaptionsButton, ec);
-        if (ec)
</del><ins>+        if (panel-&gt;appendChild(toggleClosedCaptionsButton).hasException())
</ins><span class="cx">             return nullptr;
</span><span class="cx"> 
</span><span class="cx">         controls-&gt;m_closedCaptionsContainer = closedCaptionsContainer.ptr();
</span><del>-        controls-&gt;appendChild(closedCaptionsContainer, ec);
-        if (ec)
</del><ins>+        if (controls-&gt;appendChild(closedCaptionsContainer).hasException())
</ins><span class="cx">             return nullptr;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -162,7 +133,7 @@
</span><span class="cx">     // FIXME: Only create when needed &lt;http://webkit.org/b/57163&gt;
</span><span class="cx">     auto fullScreenButton = MediaControlFullscreenButtonElement::create(document);
</span><span class="cx">     controls-&gt;m_fullScreenButton = fullScreenButton.ptr();
</span><del>-    panel-&gt;appendChild(fullScreenButton, ec);
</del><ins>+    panel-&gt;appendChild(fullScreenButton);
</ins><span class="cx"> 
</span><span class="cx">     // The mute button and the slider element should be in the same div.
</span><span class="cx">     auto panelVolumeControlContainer = HTMLDivElement::create(document);
</span><span class="lines">@@ -172,8 +143,7 @@
</span><span class="cx"> 
</span><span class="cx">         auto slider = MediaControlPanelVolumeSliderElement::create(document);
</span><span class="cx">         controls-&gt;m_volumeSlider = slider.ptr();
</span><del>-        volumeSliderContainer-&gt;appendChild(slider, ec);
-        if (ec)
</del><ins>+        if (volumeSliderContainer-&gt;appendChild(slider).hasException())
</ins><span class="cx">             return nullptr;
</span><span class="cx"> 
</span><span class="cx">         // This is a duplicate mute button, which is visible in some ports at the bottom of the volume bar.
</span><span class="lines">@@ -180,49 +150,40 @@
</span><span class="cx">         // It's important only when the volume bar is displayed below the controls.
</span><span class="cx">         auto volumeSliderMuteButton = MediaControlVolumeSliderMuteButtonElement::create(document);
</span><span class="cx">         controls-&gt;m_volumeSliderMuteButton = volumeSliderMuteButton.ptr();
</span><del>-        volumeSliderContainer-&gt;appendChild(volumeSliderMuteButton, ec);
-
-        if (ec)
</del><ins>+        if (volumeSliderContainer-&gt;appendChild(volumeSliderMuteButton).hasException())
</ins><span class="cx">             return nullptr;
</span><span class="cx"> 
</span><span class="cx">         controls-&gt;m_volumeSliderContainer = volumeSliderContainer.ptr();
</span><del>-        panelVolumeControlContainer-&gt;appendChild(volumeSliderContainer, ec);
-        if (ec)
</del><ins>+        if (panelVolumeControlContainer-&gt;appendChild(volumeSliderContainer).hasException())
</ins><span class="cx">             return nullptr;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     auto panelMuteButton = MediaControlPanelMuteButtonElement::create(document, controls.ptr());
</span><span class="cx">     controls-&gt;m_panelMuteButton = panelMuteButton.ptr();
</span><del>-    panelVolumeControlContainer-&gt;appendChild(panelMuteButton, ec);
-    if (ec)
</del><ins>+    if (panelVolumeControlContainer-&gt;appendChild(panelMuteButton).hasException())
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><del>-    panel-&gt;appendChild(panelVolumeControlContainer, ec);
-    if (ec)
</del><ins>+    if (panel-&gt;appendChild(panelVolumeControlContainer).hasException())
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     // FIXME: Only create when needed &lt;http://webkit.org/b/57163&gt;
</span><span class="cx">     auto fullScreenMinVolumeButton = MediaControlFullscreenVolumeMinButtonElement::create(document);
</span><span class="cx">     controls-&gt;m_fullScreenMinVolumeButton = fullScreenMinVolumeButton.ptr();
</span><del>-    panel-&gt;appendChild(fullScreenMinVolumeButton, ec);
-    if (ec)
</del><ins>+    if (panel-&gt;appendChild(fullScreenMinVolumeButton).hasException())
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     auto fullScreenVolumeSlider = MediaControlFullscreenVolumeSliderElement::create(document);
</span><span class="cx">     controls-&gt;m_fullScreenVolumeSlider = fullScreenVolumeSlider.ptr();
</span><del>-    panel-&gt;appendChild(fullScreenVolumeSlider, ec);
-    if (ec)
</del><ins>+    if (panel-&gt;appendChild(fullScreenVolumeSlider).hasException())
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     auto fullScreenMaxVolumeButton = MediaControlFullscreenVolumeMaxButtonElement::create(document);
</span><span class="cx">     controls-&gt;m_fullScreenMaxVolumeButton = fullScreenMaxVolumeButton.ptr();
</span><del>-    panel-&gt;appendChild(fullScreenMaxVolumeButton, ec);
-    if (ec)
</del><ins>+    if (panel-&gt;appendChild(fullScreenMaxVolumeButton).hasException())
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     controls-&gt;m_panel = panel.ptr();
</span><del>-    controls-&gt;appendChild(panel, ec);
-    if (ec)
</del><ins>+    if (controls-&gt;appendChild(panel).hasException())
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     return WTFMove(controls);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowMediaControlsAppleh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/MediaControlsApple.h (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/MediaControlsApple.h        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/shadow/MediaControlsApple.h        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -100,20 +100,20 @@
</span><span class="cx">     void hideClosedCaptionTrackList();
</span><span class="cx">     void setFullscreenSliderVolume();
</span><span class="cx"> 
</span><del>-    MediaControlRewindButtonElement* m_rewindButton;
-    MediaControlReturnToRealtimeButtonElement* m_returnToRealTimeButton;
-    MediaControlStatusDisplayElement* m_statusDisplay;
-    MediaControlTimeRemainingDisplayElement* m_timeRemainingDisplay;
-    MediaControlTimelineContainerElement* m_timelineContainer;
-    MediaControlSeekBackButtonElement* m_seekBackButton;
-    MediaControlSeekForwardButtonElement* m_seekForwardButton;
-    MediaControlClosedCaptionsTrackListElement* m_closedCaptionsTrackList;
-    MediaControlClosedCaptionsContainerElement* m_closedCaptionsContainer;
-    MediaControlVolumeSliderMuteButtonElement* m_volumeSliderMuteButton;
-    MediaControlVolumeSliderContainerElement* m_volumeSliderContainer;
-    MediaControlFullscreenVolumeMinButtonElement* m_fullScreenMinVolumeButton;
-    MediaControlFullscreenVolumeSliderElement* m_fullScreenVolumeSlider;
-    MediaControlFullscreenVolumeMaxButtonElement* m_fullScreenMaxVolumeButton;
</del><ins>+    MediaControlRewindButtonElement* m_rewindButton { nullptr };
+    MediaControlReturnToRealtimeButtonElement* m_returnToRealTimeButton { nullptr };
+    MediaControlStatusDisplayElement* m_statusDisplay { nullptr };
+    MediaControlTimeRemainingDisplayElement* m_timeRemainingDisplay { nullptr };
+    MediaControlTimelineContainerElement* m_timelineContainer { nullptr };
+    MediaControlSeekBackButtonElement* m_seekBackButton { nullptr };
+    MediaControlSeekForwardButtonElement* m_seekForwardButton { nullptr };
+    MediaControlClosedCaptionsTrackListElement* m_closedCaptionsTrackList { nullptr };
+    MediaControlClosedCaptionsContainerElement* m_closedCaptionsContainer { nullptr };
+    MediaControlVolumeSliderMuteButtonElement* m_volumeSliderMuteButton { nullptr };
+    MediaControlVolumeSliderContainerElement* m_volumeSliderContainer { nullptr };
+    MediaControlFullscreenVolumeMinButtonElement* m_fullScreenMinVolumeButton { nullptr };
+    MediaControlFullscreenVolumeSliderElement* m_fullScreenVolumeSlider { nullptr };
+    MediaControlFullscreenVolumeMaxButtonElement* m_fullScreenMaxVolumeButton { nullptr };
</ins><span class="cx">     RefPtr&lt;MediaControlsAppleEventListener&gt; m_eventListener;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackVTTCuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/VTTCue.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/VTTCue.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/track/VTTCue.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -499,7 +499,7 @@
</span><span class="cx">             clonedNode = downcast&lt;WebVTTElement&gt;(*node).createEquivalentHTMLElement(ownerDocument());
</span><span class="cx">         else
</span><span class="cx">             clonedNode = node-&gt;cloneNode(false);
</span><del>-        parent-&gt;appendChild(*clonedNode, ASSERT_NO_EXCEPTION);
</del><ins>+        parent-&gt;appendChild(*clonedNode);
</ins><span class="cx">         if (is&lt;ContainerNode&gt;(*node))
</span><span class="cx">             copyWebVTTNodeToDOMTree(downcast&lt;ContainerNode&gt;(node), downcast&lt;ContainerNode&gt;(clonedNode.get()));
</span><span class="cx">     }
</span><span class="lines">@@ -814,8 +814,8 @@
</span><span class="cx">     m_cueHighlightBox-&gt;setPseudo(cueShadowPseudoId());
</span><span class="cx"> 
</span><span class="cx">     m_cueBackdropBox-&gt;setPseudo(cueBackdropShadowPseudoId());
</span><del>-    m_cueBackdropBox-&gt;appendChild(*m_cueHighlightBox, ASSERT_NO_EXCEPTION);
-    displayTree-&gt;appendChild(*m_cueBackdropBox, ASSERT_NO_EXCEPTION);
</del><ins>+    m_cueBackdropBox-&gt;appendChild(*m_cueHighlightBox);
+    displayTree-&gt;appendChild(*m_cueBackdropBox);
</ins><span class="cx"> 
</span><span class="cx">     // FIXME(BUG 79916): Runs of children of WebVTT Ruby Objects that are not
</span><span class="cx">     // WebVTT Ruby Text Objects must be wrapped in anonymous boxes whose
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackVTTRegioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/VTTRegion.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/VTTRegion.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/html/track/VTTRegion.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -291,7 +291,7 @@
</span><span class="cx">     if (m_cueContainer-&gt;contains(displayBox.ptr()))
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_cueContainer-&gt;appendChild(displayBox, ASSERT_NO_EXCEPTION);
</del><ins>+    m_cueContainer-&gt;appendChild(displayBox);
</ins><span class="cx">     displayLastTextTrackCueBox();
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorDOMEditorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/DOMEditor.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/DOMEditor.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/inspector/DOMEditor.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -44,30 +44,30 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class DOMEditor::RemoveChildAction : public InspectorHistory::Action {
</del><ins>+class DOMEditor::RemoveChildAction final : public InspectorHistory::Action {
</ins><span class="cx">     WTF_MAKE_NONCOPYABLE(RemoveChildAction);
</span><span class="cx"> public:
</span><span class="cx">     RemoveChildAction(Node&amp; parentNode, Node&amp; node)
</span><del>-        : InspectorHistory::Action(&quot;RemoveChild&quot;)
</del><ins>+        : Action(&quot;RemoveChild&quot;)
</ins><span class="cx">         , m_parentNode(parentNode)
</span><span class="cx">         , m_node(node)
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool perform(ExceptionCode&amp; ec) override
</del><ins>+    ExceptionOr&lt;void&gt; perform() final
</ins><span class="cx">     {
</span><span class="cx">         m_anchorNode = m_node-&gt;nextSibling();
</span><del>-        return redo(ec);
</del><ins>+        return redo();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool undo(ExceptionCode&amp; ec) override
</del><ins>+    ExceptionOr&lt;void&gt; undo() final
</ins><span class="cx">     {
</span><del>-        return m_parentNode-&gt;insertBefore(m_node, m_anchorNode.get(), ec);
</del><ins>+        return m_parentNode-&gt;insertBefore(m_node, m_anchorNode.get());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool redo(ExceptionCode&amp; ec) override
</del><ins>+    ExceptionOr&lt;void&gt; redo() final
</ins><span class="cx">     {
</span><del>-        return m_parentNode-&gt;removeChild(m_node, ec);
</del><ins>+        return m_parentNode-&gt;removeChild(m_node);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="lines">@@ -76,11 +76,10 @@
</span><span class="cx">     RefPtr&lt;Node&gt; m_anchorNode;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-class DOMEditor::InsertBeforeAction : public InspectorHistory::Action {
-    WTF_MAKE_NONCOPYABLE(InsertBeforeAction);
</del><ins>+class DOMEditor::InsertBeforeAction final : public InspectorHistory::Action {
</ins><span class="cx"> public:
</span><span class="cx">     InsertBeforeAction(Node&amp; parentNode, Ref&lt;Node&gt;&amp;&amp; node, Node* anchorNode)
</span><del>-        : InspectorHistory::Action(&quot;InsertBefore&quot;)
</del><ins>+        : Action(&quot;InsertBefore&quot;)
</ins><span class="cx">         , m_parentNode(parentNode)
</span><span class="cx">         , m_node(WTFMove(node))
</span><span class="cx">         , m_anchorNode(anchorNode)
</span><span class="lines">@@ -87,33 +86,38 @@
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool perform(ExceptionCode&amp; ec) override
</del><ins>+private:
+    ExceptionOr&lt;void&gt; perform() final
</ins><span class="cx">     {
</span><span class="cx">         if (m_node-&gt;parentNode()) {
</span><span class="cx">             m_removeChildAction = std::make_unique&lt;RemoveChildAction&gt;(*m_node-&gt;parentNode(), m_node);
</span><del>-            if (!m_removeChildAction-&gt;perform(ec))
-                return false;
</del><ins>+            auto result = m_removeChildAction-&gt;perform();
+            if (result.hasException())
+                return result.releaseException();
</ins><span class="cx">         }
</span><del>-        return m_parentNode-&gt;insertBefore(m_node, m_anchorNode.get(), ec);
</del><ins>+        return m_parentNode-&gt;insertBefore(m_node, m_anchorNode.get());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool undo(ExceptionCode&amp; ec) override
</del><ins>+    ExceptionOr&lt;void&gt; undo() final
</ins><span class="cx">     {
</span><del>-        if (!m_parentNode-&gt;removeChild(m_node, ec))
-            return false;
-        if (m_removeChildAction)
-            return m_removeChildAction-&gt;undo(ec);
-        return true;
</del><ins>+        auto result = m_parentNode-&gt;removeChild(m_node);
+        if (result.hasException())
+            return result.releaseException();
+        if (!m_removeChildAction)
+            return { };
+        return m_removeChildAction-&gt;undo();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool redo(ExceptionCode&amp; ec) override
</del><ins>+    ExceptionOr&lt;void&gt; redo() final
</ins><span class="cx">     {
</span><del>-        if (m_removeChildAction &amp;&amp; !m_removeChildAction-&gt;redo(ec))
-            return false;
-        return m_parentNode-&gt;insertBefore(m_node, m_anchorNode.get(), ec);
</del><ins>+        if (m_removeChildAction) {
+            auto result = m_removeChildAction-&gt;redo();
+            if (result.hasException())
+                return result.releaseException();
+        }
+        return m_parentNode-&gt;insertBefore(m_node, m_anchorNode.get());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-private:
</del><span class="cx">     Ref&lt;Node&gt; m_parentNode;
</span><span class="cx">     Ref&lt;Node&gt; m_node;
</span><span class="cx">     RefPtr&lt;Node&gt; m_anchorNode;
</span><span class="lines">@@ -120,175 +124,161 @@
</span><span class="cx">     std::unique_ptr&lt;RemoveChildAction&gt; m_removeChildAction;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-class DOMEditor::RemoveAttributeAction : public InspectorHistory::Action {
</del><ins>+class DOMEditor::RemoveAttributeAction final : public InspectorHistory::Action {
</ins><span class="cx">     WTF_MAKE_NONCOPYABLE(RemoveAttributeAction);
</span><span class="cx"> public:
</span><del>-    RemoveAttributeAction(Element* element, const String&amp; name)
-        : InspectorHistory::Action(&quot;RemoveAttribute&quot;)
</del><ins>+    RemoveAttributeAction(Element&amp; element, const String&amp; name)
+        : Action(&quot;RemoveAttribute&quot;)
</ins><span class="cx">         , m_element(element)
</span><span class="cx">         , m_name(name)
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool perform(ExceptionCode&amp; ec) override
</del><ins>+private:
+    ExceptionOr&lt;void&gt; perform() final
</ins><span class="cx">     {
</span><span class="cx">         m_value = m_element-&gt;getAttribute(m_name);
</span><del>-        return redo(ec);
</del><ins>+        return redo();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool undo(ExceptionCode&amp; ec) override
</del><ins>+    ExceptionOr&lt;void&gt; undo() final
</ins><span class="cx">     {
</span><del>-        auto result = m_element-&gt;setAttribute(m_name, m_value);
-        if (result.hasException())
-            ec = result.releaseException().code();
-        return true;
</del><ins>+        return m_element-&gt;setAttribute(m_name, m_value);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool redo(ExceptionCode&amp;) override
</del><ins>+    ExceptionOr&lt;void&gt; redo() final
</ins><span class="cx">     {
</span><span class="cx">         m_element-&gt;removeAttribute(m_name);
</span><del>-        return true;
</del><ins>+        return { };
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-private:
-    RefPtr&lt;Element&gt; m_element;
</del><ins>+    Ref&lt;Element&gt; m_element;
</ins><span class="cx">     String m_name;
</span><span class="cx">     String m_value;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-class DOMEditor::SetAttributeAction : public InspectorHistory::Action {
</del><ins>+class DOMEditor::SetAttributeAction final : public InspectorHistory::Action {
</ins><span class="cx">     WTF_MAKE_NONCOPYABLE(SetAttributeAction);
</span><span class="cx"> public:
</span><del>-    SetAttributeAction(Element* element, const String&amp; name, const String&amp; value)
-        : InspectorHistory::Action(&quot;SetAttribute&quot;)
</del><ins>+    SetAttributeAction(Element&amp; element, const AtomicString&amp; name, const AtomicString&amp; value)
+        : Action(&quot;SetAttribute&quot;)
</ins><span class="cx">         , m_element(element)
</span><span class="cx">         , m_name(name)
</span><span class="cx">         , m_value(value)
</span><del>-        , m_hadAttribute(false)
</del><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool perform(ExceptionCode&amp; ec) override
</del><ins>+private:
+    ExceptionOr&lt;void&gt; perform() final
</ins><span class="cx">     {
</span><del>-        m_hadAttribute = m_element-&gt;hasAttribute(m_name);
-        if (m_hadAttribute)
-            m_oldValue = m_element-&gt;getAttribute(m_name);
-        return redo(ec);
</del><ins>+        m_oldValue = m_element-&gt;getAttribute(m_name);
+        return redo();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool undo(ExceptionCode&amp; ec) override
</del><ins>+    ExceptionOr&lt;void&gt; undo() final
</ins><span class="cx">     {
</span><del>-        if (m_hadAttribute) {
-            auto result = m_element-&gt;setAttribute(m_name, m_oldValue);
-            if (result.hasException())
-                ec = result.releaseException().code();
-        } else
</del><ins>+        if (m_oldValue.isNull()) {
</ins><span class="cx">             m_element-&gt;removeAttribute(m_name);
</span><del>-        return true;
</del><ins>+            return { };
+        }
+        return m_element-&gt;setAttribute(m_name, m_oldValue);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool redo(ExceptionCode&amp; ec) override
</del><ins>+    ExceptionOr&lt;void&gt; redo() final
</ins><span class="cx">     {
</span><del>-        auto result = m_element-&gt;setAttribute(m_name, m_value);
-        if (result.hasException())
-            ec = result.releaseException().code();
-        return true;
</del><ins>+        return m_element-&gt;setAttribute(m_name, m_value);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-private:
-    RefPtr&lt;Element&gt; m_element;
-    String m_name;
-    String m_value;
-    bool m_hadAttribute;
-    String m_oldValue;
</del><ins>+    Ref&lt;Element&gt; m_element;
+    AtomicString m_name;
+    AtomicString m_value;
+    AtomicString m_oldValue;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><del>-class DOMEditor::SetOuterHTMLAction : public InspectorHistory::Action {
-    WTF_MAKE_NONCOPYABLE(SetOuterHTMLAction);
</del><ins>+class DOMEditor::SetOuterHTMLAction final : public InspectorHistory::Action {
</ins><span class="cx"> public:
</span><span class="cx">     SetOuterHTMLAction(Node&amp; node, const String&amp; html)
</span><del>-        : InspectorHistory::Action(&quot;SetOuterHTML&quot;)
</del><ins>+        : Action(&quot;SetOuterHTML&quot;)
</ins><span class="cx">         , m_node(node)
</span><span class="cx">         , m_nextSibling(node.nextSibling())
</span><span class="cx">         , m_html(html)
</span><del>-        , m_newNode(nullptr)
-        , m_history(std::make_unique&lt;InspectorHistory&gt;())
-        , m_domEditor(std::make_unique&lt;DOMEditor&gt;(m_history.get()))
</del><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool perform(ExceptionCode&amp; ec) override
</del><ins>+    Node* newNode() const
</ins><span class="cx">     {
</span><del>-        m_oldHTML = createMarkup(m_node.get());
-        DOMPatchSupport domPatchSupport(m_domEditor.get(), &amp;m_node-&gt;document());
-        m_newNode = domPatchSupport.patchNode(m_node.get(), m_html, ec);
-        return !ec;
</del><ins>+        return m_newNode.get();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool undo(ExceptionCode&amp; ec) override
</del><ins>+private:
+    ExceptionOr&lt;void&gt; perform() final
</ins><span class="cx">     {
</span><del>-        return m_history-&gt;undo(ec);
</del><ins>+        m_oldHTML = createMarkup(m_node.get());
+        auto result = DOMPatchSupport { m_domEditor, m_node-&gt;document() }.patchNode(m_node, m_html);
+        if (result.hasException())
+            return result.releaseException();
+        m_newNode = result.releaseReturnValue();
+        return { };
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool redo(ExceptionCode&amp; ec) override
</del><ins>+    ExceptionOr&lt;void&gt; undo() final
</ins><span class="cx">     {
</span><del>-        return m_history-&gt;redo(ec);
</del><ins>+        return m_history.undo();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    Node* newNode()
</del><ins>+    ExceptionOr&lt;void&gt; redo() final
</ins><span class="cx">     {
</span><del>-        return m_newNode;
</del><ins>+        return m_history.redo();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-private:
</del><span class="cx">     Ref&lt;Node&gt; m_node;
</span><span class="cx">     RefPtr&lt;Node&gt; m_nextSibling;
</span><span class="cx">     String m_html;
</span><span class="cx">     String m_oldHTML;
</span><del>-    Node* m_newNode;
-    std::unique_ptr&lt;InspectorHistory&gt; m_history;
-    std::unique_ptr&lt;DOMEditor&gt; m_domEditor;
</del><ins>+    RefPtr&lt;Node&gt; m_newNode { nullptr };
+    InspectorHistory m_history;
+    DOMEditor m_domEditor { m_history };
</ins><span class="cx"> };
</span><span class="cx"> 
</span><del>-class DOMEditor::ReplaceWholeTextAction : public InspectorHistory::Action {
</del><ins>+class DOMEditor::ReplaceWholeTextAction final : public InspectorHistory::Action {
</ins><span class="cx">     WTF_MAKE_NONCOPYABLE(ReplaceWholeTextAction);
</span><span class="cx"> public:
</span><del>-    ReplaceWholeTextAction(Text* textNode, const String&amp; text)
-        : InspectorHistory::Action(&quot;ReplaceWholeText&quot;)
</del><ins>+    ReplaceWholeTextAction(Text&amp; textNode, const String&amp; text)
+        : Action(&quot;ReplaceWholeText&quot;)
</ins><span class="cx">         , m_textNode(textNode)
</span><span class="cx">         , m_text(text)
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool perform(ExceptionCode&amp; ec) override
</del><ins>+private:
+    ExceptionOr&lt;void&gt; perform() final
</ins><span class="cx">     {
</span><span class="cx">         m_oldText = m_textNode-&gt;wholeText();
</span><del>-        return redo(ec);
</del><ins>+        return redo();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool undo(ExceptionCode&amp;) override
</del><ins>+    ExceptionOr&lt;void&gt; undo() final
</ins><span class="cx">     {
</span><span class="cx">         m_textNode-&gt;replaceWholeText(m_oldText);
</span><del>-        return true;
</del><ins>+        return { };
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool redo(ExceptionCode&amp;) override
</del><ins>+    ExceptionOr&lt;void&gt; redo() final
</ins><span class="cx">     {
</span><span class="cx">         m_textNode-&gt;replaceWholeText(m_text);
</span><del>-        return true;
</del><ins>+        return { };
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-private:
-    RefPtr&lt;Text&gt; m_textNode;
</del><ins>+    Ref&lt;Text&gt; m_textNode;
</ins><span class="cx">     String m_text;
</span><span class="cx">     String m_oldText;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-class DOMEditor::ReplaceChildNodeAction : public InspectorHistory::Action {
</del><ins>+class DOMEditor::ReplaceChildNodeAction final: public InspectorHistory::Action {
</ins><span class="cx">     WTF_MAKE_NONCOPYABLE(ReplaceChildNodeAction);
</span><span class="cx"> public:
</span><span class="cx">     ReplaceChildNodeAction(Node&amp; parentNode, Ref&lt;Node&gt;&amp;&amp; newNode, Node&amp; oldNode)
</span><del>-        : InspectorHistory::Action(&quot;ReplaceChildNode&quot;)
</del><ins>+        : Action(&quot;ReplaceChildNode&quot;)
</ins><span class="cx">         , m_parentNode(parentNode)
</span><span class="cx">         , m_newNode(WTFMove(newNode))
</span><span class="cx">         , m_oldNode(oldNode)
</span><span class="lines">@@ -295,164 +285,149 @@
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool perform(ExceptionCode&amp; ec) override
</del><ins>+private:
+    ExceptionOr&lt;void&gt; perform() final
</ins><span class="cx">     {
</span><del>-        return redo(ec);
</del><ins>+        return redo();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool undo(ExceptionCode&amp; ec) override
</del><ins>+    ExceptionOr&lt;void&gt; undo() final
</ins><span class="cx">     {
</span><del>-        return m_parentNode-&gt;replaceChild(m_oldNode, m_newNode.get(), ec);
</del><ins>+        return m_parentNode-&gt;replaceChild(m_oldNode, m_newNode);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool redo(ExceptionCode&amp; ec) override
</del><ins>+    ExceptionOr&lt;void&gt; redo() final
</ins><span class="cx">     {
</span><del>-        return m_parentNode-&gt;replaceChild(m_newNode, m_oldNode, ec);
</del><ins>+        return m_parentNode-&gt;replaceChild(m_newNode, m_oldNode);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-private:
</del><span class="cx">     Ref&lt;Node&gt; m_parentNode;
</span><span class="cx">     Ref&lt;Node&gt; m_newNode;
</span><span class="cx">     Ref&lt;Node&gt; m_oldNode;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-class DOMEditor::SetNodeValueAction : public InspectorHistory::Action {
</del><ins>+class DOMEditor::SetNodeValueAction final : public InspectorHistory::Action {
</ins><span class="cx">     WTF_MAKE_NONCOPYABLE(SetNodeValueAction);
</span><span class="cx"> public:
</span><del>-    SetNodeValueAction(Node* node, const String&amp; value)
-        : InspectorHistory::Action(&quot;SetNodeValue&quot;)
</del><ins>+    SetNodeValueAction(Node&amp; node, const String&amp; value)
+        : Action(&quot;SetNodeValue&quot;)
</ins><span class="cx">         , m_node(node)
</span><span class="cx">         , m_value(value)
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool perform(ExceptionCode&amp; ec) override
</del><ins>+private:
+    ExceptionOr&lt;void&gt; perform() final
</ins><span class="cx">     {
</span><span class="cx">         m_oldValue = m_node-&gt;nodeValue();
</span><del>-        return redo(ec);
</del><ins>+        return redo();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool undo(ExceptionCode&amp; ec) override
</del><ins>+    ExceptionOr&lt;void&gt; undo() final
</ins><span class="cx">     {
</span><del>-        m_node-&gt;setNodeValue(m_oldValue, ec);
-        return !ec;
</del><ins>+        return m_node-&gt;setNodeValue(m_oldValue);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool redo(ExceptionCode&amp; ec) override
</del><ins>+    ExceptionOr&lt;void&gt; redo() final
</ins><span class="cx">     {
</span><del>-        m_node-&gt;setNodeValue(m_value, ec);
-        return !ec;
</del><ins>+        return m_node-&gt;setNodeValue(m_value);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-private:
-    RefPtr&lt;Node&gt; m_node;
</del><ins>+    Ref&lt;Node&gt; m_node;
</ins><span class="cx">     String m_value;
</span><span class="cx">     String m_oldValue;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-DOMEditor::DOMEditor(InspectorHistory* history) : m_history(history) { }
</del><ins>+DOMEditor::DOMEditor(InspectorHistory&amp; history)
+    : m_history(history)
+{
+}
</ins><span class="cx"> 
</span><del>-DOMEditor::~DOMEditor() { }
</del><ins>+DOMEditor::~DOMEditor()
+{
+}
</ins><span class="cx"> 
</span><del>-bool DOMEditor::insertBefore(Node&amp; parentNode, Ref&lt;Node&gt;&amp;&amp; node, Node* anchorNode, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; DOMEditor::insertBefore(Node&amp; parentNode, Ref&lt;Node&gt;&amp;&amp; node, Node* anchorNode)
</ins><span class="cx"> {
</span><del>-    return m_history-&gt;perform(std::make_unique&lt;InsertBeforeAction&gt;(parentNode, WTFMove(node), anchorNode), ec);
</del><ins>+    return m_history.perform(std::make_unique&lt;InsertBeforeAction&gt;(parentNode, WTFMove(node), anchorNode));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool DOMEditor::removeChild(Node&amp; parentNode, Node&amp; node, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; DOMEditor::removeChild(Node&amp; parentNode, Node&amp; node)
</ins><span class="cx"> {
</span><del>-    return m_history-&gt;perform(std::make_unique&lt;RemoveChildAction&gt;(parentNode, node), ec);
</del><ins>+    return m_history.perform(std::make_unique&lt;RemoveChildAction&gt;(parentNode, node));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool DOMEditor::setAttribute(Element* element, const String&amp; name, const String&amp; value, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; DOMEditor::setAttribute(Element&amp; element, const String&amp; name, const String&amp; value)
</ins><span class="cx"> {
</span><del>-    return m_history-&gt;perform(std::make_unique&lt;SetAttributeAction&gt;(element, name, value), ec);
</del><ins>+    return m_history.perform(std::make_unique&lt;SetAttributeAction&gt;(element, name, value));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool DOMEditor::removeAttribute(Element* element, const String&amp; name, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; DOMEditor::removeAttribute(Element&amp; element, const String&amp; name)
</ins><span class="cx"> {
</span><del>-    return m_history-&gt;perform(std::make_unique&lt;RemoveAttributeAction&gt;(element, name), ec);
</del><ins>+    return m_history.perform(std::make_unique&lt;RemoveAttributeAction&gt;(element, name));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool DOMEditor::setOuterHTML(Node&amp; node, const String&amp; html, Node** newNode, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; DOMEditor::setOuterHTML(Node&amp; node, const String&amp; html, Node*&amp; newNode)
</ins><span class="cx"> {
</span><span class="cx">     auto action = std::make_unique&lt;SetOuterHTMLAction&gt;(node, html);
</span><del>-    SetOuterHTMLAction* rawAction = action.get();
-    bool result = m_history-&gt;perform(WTFMove(action), ec);
-    if (result)
-        *newNode = rawAction-&gt;newNode();
</del><ins>+    auto&amp; rawAction = *action;
+    auto result = m_history.perform(WTFMove(action));
+    if (!result.hasException())
+        newNode = rawAction.newNode();
</ins><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool DOMEditor::replaceWholeText(Text* textNode, const String&amp; text, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; DOMEditor::replaceWholeText(Text&amp; textNode, const String&amp; text)
</ins><span class="cx"> {
</span><del>-    return m_history-&gt;perform(std::make_unique&lt;ReplaceWholeTextAction&gt;(textNode, text), ec);
</del><ins>+    return m_history.perform(std::make_unique&lt;ReplaceWholeTextAction&gt;(textNode, text));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool DOMEditor::replaceChild(Node&amp; parentNode, Ref&lt;Node&gt;&amp;&amp; newNode, Node&amp; oldNode, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; DOMEditor::replaceChild(Node&amp; parentNode, Ref&lt;Node&gt;&amp;&amp; newNode, Node&amp; oldNode)
</ins><span class="cx"> {
</span><del>-    return m_history-&gt;perform(std::make_unique&lt;ReplaceChildNodeAction&gt;(parentNode, WTFMove(newNode), oldNode), ec);
</del><ins>+    return m_history.perform(std::make_unique&lt;ReplaceChildNodeAction&gt;(parentNode, WTFMove(newNode), oldNode));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool DOMEditor::setNodeValue(Node* node, const String&amp; value, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; DOMEditor::setNodeValue(Node&amp; node, const String&amp; value)
</ins><span class="cx"> {
</span><del>-    return m_history-&gt;perform(std::make_unique&lt;SetNodeValueAction&gt;(node, value), ec);
</del><ins>+    return m_history.perform(std::make_unique&lt;SetNodeValueAction&gt;(node, value));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static void populateErrorString(const ExceptionCode&amp; ec, ErrorString&amp; errorString)
</del><ins>+static bool populateErrorString(ExceptionOr&lt;void&gt;&amp;&amp; result, ErrorString&amp; errorString)
</ins><span class="cx"> {
</span><del>-    if (ec) {
-        ExceptionCodeDescription description(ec);
-        errorString = description.name;
-    }
</del><ins>+    if (!result.hasException())
+        return true;
+    errorString = ExceptionCodeDescription { result.releaseException().code() }.name;
+    return false;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool DOMEditor::insertBefore(Node&amp; parentNode, Ref&lt;Node&gt;&amp;&amp; node, Node* anchorNode, ErrorString&amp; errorString)
</span><span class="cx"> {
</span><del>-    ExceptionCode ec = 0;
-    bool result = insertBefore(parentNode, WTFMove(node), anchorNode, ec);
-    populateErrorString(ec, errorString);
-    return result;
</del><ins>+    return populateErrorString(insertBefore(parentNode, WTFMove(node), anchorNode), errorString);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool DOMEditor::removeChild(Node&amp; parentNode, Node&amp; node, ErrorString&amp; errorString)
</span><span class="cx"> {
</span><del>-    ExceptionCode ec = 0;
-    bool result = removeChild(parentNode, node, ec);
-    populateErrorString(ec, errorString);
-    return result;
</del><ins>+    return populateErrorString(removeChild(parentNode, node), errorString);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool DOMEditor::setAttribute(Element* element, const String&amp; name, const String&amp; value, ErrorString&amp; errorString)
</del><ins>+bool DOMEditor::setAttribute(Element&amp; element, const String&amp; name, const String&amp; value, ErrorString&amp; errorString)
</ins><span class="cx"> {
</span><del>-    ExceptionCode ec = 0;
-    bool result = setAttribute(element, name, value, ec);
-    populateErrorString(ec, errorString);
-    return result;
</del><ins>+    return populateErrorString(setAttribute(element, name, value), errorString);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool DOMEditor::removeAttribute(Element* element, const String&amp; name, ErrorString&amp; errorString)
</del><ins>+bool DOMEditor::removeAttribute(Element&amp; element, const String&amp; name, ErrorString&amp; errorString)
</ins><span class="cx"> {
</span><del>-    ExceptionCode ec = 0;
-    bool result = removeAttribute(element, name, ec);
-    populateErrorString(ec, errorString);
-    return result;
</del><ins>+    return populateErrorString(removeAttribute(element, name), errorString);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool DOMEditor::setOuterHTML(Node&amp; node, const String&amp; html, Node** newNode, ErrorString&amp; errorString)
</del><ins>+bool DOMEditor::setOuterHTML(Node&amp; node, const String&amp; html, Node*&amp; newNode, ErrorString&amp; errorString)
</ins><span class="cx"> {
</span><del>-    ExceptionCode ec = 0;
-    bool result = setOuterHTML(node, html, newNode, ec);
-    populateErrorString(ec, errorString);
-    return result;
</del><ins>+    return populateErrorString(setOuterHTML(node, html, newNode), errorString);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool DOMEditor::replaceWholeText(Text* textNode, const String&amp; text, ErrorString&amp; errorString)
</del><ins>+bool DOMEditor::replaceWholeText(Text&amp; textNode, const String&amp; text, ErrorString&amp; errorString)
</ins><span class="cx"> {
</span><del>-    ExceptionCode ec = 0;
-    bool result = replaceWholeText(textNode, text, ec);
-    populateErrorString(ec, errorString);
-    return result;
</del><ins>+    return populateErrorString(replaceWholeText(textNode, text), errorString);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorDOMEditorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/DOMEditor.h (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/DOMEditor.h        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/inspector/DOMEditor.h        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -30,10 +30,8 @@
</span><span class="cx"> 
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><del>-#include &quot;ExceptionCode.h&quot;
</del><ins>+#include &quot;ExceptionOr.h&quot;
</ins><span class="cx"> 
</span><del>-#include &lt;wtf/text/WTFString.h&gt;
-
</del><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class Element;
</span><span class="lines">@@ -46,37 +44,37 @@
</span><span class="cx"> class DOMEditor {
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(DOMEditor); WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    explicit DOMEditor(InspectorHistory*);
</del><ins>+    explicit DOMEditor(InspectorHistory&amp;);
</ins><span class="cx">     ~DOMEditor();
</span><span class="cx"> 
</span><del>-    bool insertBefore(Node&amp; parentNode, Ref&lt;Node&gt;&amp;&amp;, Node* anchorNode, ExceptionCode&amp;);
-    bool removeChild(Node&amp; parentNode, Node&amp;, ExceptionCode&amp;);
-    bool setAttribute(Element*, const String&amp; name, const String&amp; value, ExceptionCode&amp;);
-    bool removeAttribute(Element*, const String&amp; name, ExceptionCode&amp;);
-    bool setOuterHTML(Node&amp;, const String&amp; html, Node** newNode, ExceptionCode&amp;);
-    bool replaceWholeText(Text*, const String&amp; text, ExceptionCode&amp;);
-    bool replaceChild(Node&amp; parentNode, Ref&lt;Node&gt;&amp;&amp; newNode, Node&amp; oldNode, ExceptionCode&amp;);
-    bool setNodeValue(Node* parentNode, const String&amp; value, ExceptionCode&amp;);
</del><ins>+    ExceptionOr&lt;void&gt; insertBefore(Node&amp; parentNode, Ref&lt;Node&gt;&amp;&amp;, Node* anchorNode);
+    ExceptionOr&lt;void&gt; removeChild(Node&amp; parentNode, Node&amp;);
+    ExceptionOr&lt;void&gt; setAttribute(Element&amp;, const String&amp; name, const String&amp; value);
+    ExceptionOr&lt;void&gt; removeAttribute(Element&amp;, const String&amp; name);
+    ExceptionOr&lt;void&gt; setOuterHTML(Node&amp;, const String&amp; html, Node*&amp; newNode);
+    ExceptionOr&lt;void&gt; replaceWholeText(Text&amp;, const String&amp; text);
+    ExceptionOr&lt;void&gt; replaceChild(Node&amp; parentNode, Ref&lt;Node&gt;&amp;&amp; newNode, Node&amp; oldNode);
+    ExceptionOr&lt;void&gt; setNodeValue(Node&amp; parentNode, const String&amp; value);
</ins><span class="cx"> 
</span><span class="cx">     bool insertBefore(Node&amp; parentNode, Ref&lt;Node&gt;&amp;&amp;, Node* anchorNode, ErrorString&amp;);
</span><span class="cx">     bool removeChild(Node&amp; parentNode, Node&amp;, ErrorString&amp;);
</span><del>-    bool setAttribute(Element*, const String&amp; name, const String&amp; value, ErrorString&amp;);
-    bool removeAttribute(Element*, const String&amp; name, ErrorString&amp;);
-    bool setOuterHTML(Node&amp;, const String&amp; html, Node** newNode, ErrorString&amp;);
-    bool replaceWholeText(Text*, const String&amp; text, ErrorString&amp;);
</del><ins>+    bool setAttribute(Element&amp;, const String&amp; name, const String&amp; value, ErrorString&amp;);
+    bool removeAttribute(Element&amp;, const String&amp; name, ErrorString&amp;);
+    bool setOuterHTML(Node&amp;, const String&amp; html, Node*&amp; newNode, ErrorString&amp;);
+    bool replaceWholeText(Text&amp;, const String&amp; text, ErrorString&amp;);
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     class DOMAction;
</span><del>-    class RemoveChildAction;
</del><span class="cx">     class InsertBeforeAction;
</span><span class="cx">     class RemoveAttributeAction;
</span><ins>+    class RemoveChildAction;
+    class ReplaceChildNodeAction;
+    class ReplaceWholeTextAction;
</ins><span class="cx">     class SetAttributeAction;
</span><ins>+    class SetNodeValueAction;
</ins><span class="cx">     class SetOuterHTMLAction;
</span><del>-    class ReplaceWholeTextAction;
-    class ReplaceChildNodeAction;
-    class SetNodeValueAction;
</del><span class="cx"> 
</span><del>-    InspectorHistory* m_history;
</del><ins>+    InspectorHistory&amp; m_history;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorDOMPatchSupportcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/DOMPatchSupport.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/DOMPatchSupport.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/inspector/DOMPatchSupport.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -59,38 +59,34 @@
</span><span class="cx"> using HTMLNames::htmlTag;
</span><span class="cx"> 
</span><span class="cx"> struct DOMPatchSupport::Digest {
</span><del>-    explicit Digest(Node* node) : m_node(node) { }
-
-    String m_sha1;
-    String m_attrsSHA1;
-    Node* m_node;
-    Vector&lt;std::unique_ptr&lt;Digest&gt;&gt; m_children;
</del><ins>+    String sha1;
+    String attrsSHA1;
+    Node* node;
+    Vector&lt;std::unique_ptr&lt;Digest&gt;&gt; children;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><del>-void DOMPatchSupport::patchDocument(Document* document, const String&amp; markup)
</del><ins>+void DOMPatchSupport::patchDocument(Document&amp; document, const String&amp; markup)
</ins><span class="cx"> {
</span><span class="cx">     InspectorHistory history;
</span><del>-    DOMEditor domEditor(&amp;history);
-    DOMPatchSupport patchSupport(&amp;domEditor, document);
</del><ins>+    DOMEditor domEditor { history };
+    DOMPatchSupport patchSupport(domEditor, document);
</ins><span class="cx">     patchSupport.patchDocument(markup);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-DOMPatchSupport::DOMPatchSupport(DOMEditor* domEditor, Document* document)
</del><ins>+DOMPatchSupport::DOMPatchSupport(DOMEditor&amp; domEditor, Document&amp; document)
</ins><span class="cx">     : m_domEditor(domEditor)
</span><span class="cx">     , m_document(document)
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-DOMPatchSupport::~DOMPatchSupport() { }
-
</del><span class="cx"> void DOMPatchSupport::patchDocument(const String&amp; markup)
</span><span class="cx"> {
</span><span class="cx">     RefPtr&lt;Document&gt; newDocument;
</span><del>-    if (m_document-&gt;isHTMLDocument())
</del><ins>+    if (m_document.isHTMLDocument())
</ins><span class="cx">         newDocument = HTMLDocument::create(nullptr, URL());
</span><del>-    else if (m_document-&gt;isXHTMLDocument())
</del><ins>+    else if (m_document.isXHTMLDocument())
</ins><span class="cx">         newDocument = XMLDocument::createXHTML(nullptr, URL());
</span><del>-    else if (m_document-&gt;isSVGDocument())
</del><ins>+    else if (m_document.isSVGDocument())
</ins><span class="cx">         newDocument = XMLDocument::create(nullptr, URL());
</span><span class="cx"> 
</span><span class="cx">     ASSERT(newDocument);
</span><span class="lines">@@ -103,17 +99,17 @@
</span><span class="cx">     parser-&gt;finish();
</span><span class="cx">     parser-&gt;detach();
</span><span class="cx"> 
</span><del>-    std::unique_ptr&lt;Digest&gt; oldInfo = createDigest(m_document-&gt;documentElement(), nullptr);
-    std::unique_ptr&lt;Digest&gt; newInfo = createDigest(newDocument-&gt;documentElement(), &amp;m_unusedNodesMap);
</del><ins>+    std::unique_ptr&lt;Digest&gt; oldInfo = createDigest(*m_document.documentElement(), nullptr);
+    std::unique_ptr&lt;Digest&gt; newInfo = createDigest(*newDocument-&gt;documentElement(), &amp;m_unusedNodesMap);
</ins><span class="cx"> 
</span><del>-    if (!innerPatchNode(oldInfo.get(), newInfo.get(), IGNORE_EXCEPTION)) {
</del><ins>+    if (innerPatchNode(*oldInfo, *newInfo).hasException()) {
</ins><span class="cx">         // Fall back to rewrite.
</span><del>-        m_document-&gt;write(markup);
-        m_document-&gt;close();
</del><ins>+        m_document.write(markup);
+        m_document.close();
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Node* DOMPatchSupport::patchNode(Node&amp; node, const String&amp; markup, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Node*&gt; DOMPatchSupport::patchNode(Node&amp; node, const String&amp; markup)
</ins><span class="cx"> {
</span><span class="cx">     // Don't parse &lt;html&gt; as a fragment.
</span><span class="cx">     if (node.isDocumentNode() || (node.parentNode() &amp;&amp; node.parentNode()-&gt;isDocumentNode())) {
</span><span class="lines">@@ -123,84 +119,86 @@
</span><span class="cx"> 
</span><span class="cx">     Node* previousSibling = node.previousSibling();
</span><span class="cx">     // FIXME: This code should use one of createFragment* in markup.h
</span><del>-    RefPtr&lt;DocumentFragment&gt; fragment = DocumentFragment::create(*m_document);
-    if (m_document-&gt;isHTMLDocument())
-        fragment-&gt;parseHTML(markup, node.parentElement() ? node.parentElement() : m_document-&gt;documentElement());
</del><ins>+    RefPtr&lt;DocumentFragment&gt; fragment = DocumentFragment::create(m_document);
+    if (m_document.isHTMLDocument())
+        fragment-&gt;parseHTML(markup, node.parentElement() ? node.parentElement() : m_document.documentElement());
</ins><span class="cx">     else
</span><del>-        fragment-&gt;parseXML(markup, node.parentElement() ? node.parentElement() : m_document-&gt;documentElement());
</del><ins>+        fragment-&gt;parseXML(markup, node.parentElement() ? node.parentElement() : m_document.documentElement());
</ins><span class="cx"> 
</span><span class="cx">     // Compose the old list.
</span><del>-    ContainerNode* parentNode = node.parentNode();
</del><ins>+    auto* parentNode = node.parentNode();
</ins><span class="cx">     Vector&lt;std::unique_ptr&lt;Digest&gt;&gt; oldList;
</span><span class="cx">     for (Node* child = parentNode-&gt;firstChild(); child; child = child-&gt;nextSibling())
</span><del>-        oldList.append(createDigest(child, nullptr));
</del><ins>+        oldList.append(createDigest(*child, nullptr));
</ins><span class="cx"> 
</span><span class="cx">     // Compose the new list.
</span><span class="cx">     Vector&lt;std::unique_ptr&lt;Digest&gt;&gt; newList;
</span><span class="cx">     for (Node* child = parentNode-&gt;firstChild(); child != &amp;node; child = child-&gt;nextSibling())
</span><del>-        newList.append(createDigest(child, nullptr));
</del><ins>+        newList.append(createDigest(*child, nullptr));
</ins><span class="cx">     for (Node* child = fragment-&gt;firstChild(); child; child = child-&gt;nextSibling()) {
</span><span class="cx">         if (child-&gt;hasTagName(headTag) &amp;&amp; !child-&gt;firstChild() &amp;&amp; !markup.containsIgnoringASCIICase(&quot;&lt;/head&gt;&quot;))
</span><span class="cx">             continue; // HTML5 parser inserts empty &lt;head&gt; tag whenever it parses &lt;body&gt;
</span><span class="cx">         if (child-&gt;hasTagName(bodyTag) &amp;&amp; !child-&gt;firstChild() &amp;&amp; !markup.containsIgnoringASCIICase(&quot;&lt;/body&gt;&quot;))
</span><span class="cx">             continue; // HTML5 parser inserts empty &lt;body&gt; tag whenever it parses &lt;/head&gt;
</span><del>-        newList.append(createDigest(child, &amp;m_unusedNodesMap));
</del><ins>+        newList.append(createDigest(*child, &amp;m_unusedNodesMap));
</ins><span class="cx">     }
</span><span class="cx">     for (Node* child = node.nextSibling(); child; child = child-&gt;nextSibling())
</span><del>-        newList.append(createDigest(child, nullptr));
</del><ins>+        newList.append(createDigest(*child, nullptr));
</ins><span class="cx"> 
</span><del>-    if (!innerPatchChildren(parentNode, oldList, newList, ec)) {
</del><ins>+    if (innerPatchChildren(*parentNode, oldList, newList).hasException()) {
</ins><span class="cx">         // Fall back to total replace.
</span><del>-        ec = 0;
-        if (!m_domEditor-&gt;replaceChild(*parentNode, *fragment, node, ec))
-            return nullptr;
</del><ins>+        auto result = m_domEditor.replaceChild(*parentNode, *fragment, node);
+        if (result.hasException())
+            return result.releaseException();
</ins><span class="cx">     }
</span><span class="cx">     return previousSibling ? previousSibling-&gt;nextSibling() : parentNode-&gt;firstChild();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool DOMPatchSupport::innerPatchNode(Digest* oldDigest, Digest* newDigest, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; DOMPatchSupport::innerPatchNode(Digest&amp; oldDigest, Digest&amp; newDigest)
</ins><span class="cx"> {
</span><del>-    if (oldDigest-&gt;m_sha1 == newDigest-&gt;m_sha1)
-        return true;
</del><ins>+    if (oldDigest.sha1 == newDigest.sha1)
+        return { };
</ins><span class="cx"> 
</span><del>-    Node* oldNode = oldDigest-&gt;m_node;
-    Node* newNode = newDigest-&gt;m_node;
</del><ins>+    auto&amp; oldNode = *oldDigest.node;
+    auto&amp; newNode = *newDigest.node;
</ins><span class="cx"> 
</span><del>-    if (newNode-&gt;nodeType() != oldNode-&gt;nodeType() || newNode-&gt;nodeName() != oldNode-&gt;nodeName())
-        return m_domEditor-&gt;replaceChild(*oldNode-&gt;parentNode(), *newNode, *oldNode, ec);
</del><ins>+    if (newNode.nodeType() != oldNode.nodeType() || newNode.nodeName() != oldNode.nodeName())
+        return m_domEditor.replaceChild(*oldNode.parentNode(), newNode, oldNode);
</ins><span class="cx"> 
</span><del>-    if (oldNode-&gt;nodeValue() != newNode-&gt;nodeValue()) {
-        if (!m_domEditor-&gt;setNodeValue(oldNode, newNode-&gt;nodeValue(), ec))
-            return false;
</del><ins>+    if (oldNode.nodeValue() != newNode.nodeValue()) {
+        auto result = m_domEditor.setNodeValue(oldNode, newNode.nodeValue());
+        if (result.hasException())
+            return result.releaseException();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (oldNode-&gt;nodeType() != Node::ELEMENT_NODE)
-        return true;
</del><ins>+    if (!is&lt;Element&gt;(oldNode))
+        return { };
</ins><span class="cx"> 
</span><span class="cx">     // Patch attributes
</span><del>-    Element* oldElement = downcast&lt;Element&gt;(oldNode);
-    Element* newElement = downcast&lt;Element&gt;(newNode);
-    if (oldDigest-&gt;m_attrsSHA1 != newDigest-&gt;m_attrsSHA1) {
</del><ins>+    auto&amp; oldElement = downcast&lt;Element&gt;(oldNode);
+    auto&amp; newElement = downcast&lt;Element&gt;(newNode);
+    if (oldDigest.attrsSHA1 != newDigest.attrsSHA1) {
</ins><span class="cx">         // FIXME: Create a function in Element for removing all properties. Take in account whether did/willModifyAttribute are important.
</span><del>-        if (oldElement-&gt;hasAttributesWithoutUpdate()) {
-            while (oldElement-&gt;attributeCount()) {
-                const Attribute&amp; attribute = oldElement-&gt;attributeAt(0);
-                if (!m_domEditor-&gt;removeAttribute(oldElement, attribute.localName(), ec))
-                    return false;
</del><ins>+        if (oldElement.hasAttributesWithoutUpdate()) {
+            while (oldElement.attributeCount()) {
+                auto result = m_domEditor.removeAttribute(oldElement, oldElement.attributeAt(0).localName());
+                if (result.hasException())
+                    return result.releaseException();
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         // FIXME: Create a function in Element for copying properties. cloneDataFromElement() is close but not enough for this case.
</span><del>-        if (newElement-&gt;hasAttributesWithoutUpdate()) {
-            for (const Attribute&amp; attribute : newElement-&gt;attributesIterator()) {
-                if (!m_domEditor-&gt;setAttribute(oldElement, attribute.name().localName(), attribute.value(), ec))
-                    return false;
</del><ins>+        if (newElement.hasAttributesWithoutUpdate()) {
+            for (auto&amp; attribute : newElement.attributesIterator()) {
+                auto result = m_domEditor.setAttribute(oldElement, attribute.name().localName(), attribute.value());
+                if (result.hasException())
+                    return result.releaseException();
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool result = innerPatchChildren(oldElement, oldDigest-&gt;m_children, newDigest-&gt;m_children, ec);
-    m_unusedNodesMap.remove(newDigest-&gt;m_sha1);
</del><ins>+    auto result = innerPatchChildren(oldElement, oldDigest.children, newDigest.children);
+    m_unusedNodesMap.remove(newDigest.sha1);
</ins><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -221,13 +219,13 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Trim head and tail.
</span><del>-    for (size_t i = 0; i &lt; oldList.size() &amp;&amp; i &lt; newList.size() &amp;&amp; oldList[i]-&gt;m_sha1 == newList[i]-&gt;m_sha1; ++i) {
</del><ins>+    for (size_t i = 0; i &lt; oldList.size() &amp;&amp; i &lt; newList.size() &amp;&amp; oldList[i]-&gt;sha1 == newList[i]-&gt;sha1; ++i) {
</ins><span class="cx">         oldMap[i].first = oldList[i].get();
</span><span class="cx">         oldMap[i].second = i;
</span><span class="cx">         newMap[i].first = newList[i].get();
</span><span class="cx">         newMap[i].second = i;
</span><span class="cx">     }
</span><del>-    for (size_t i = 0; i &lt; oldList.size() &amp;&amp; i &lt; newList.size() &amp;&amp; oldList[oldList.size() - i - 1]-&gt;m_sha1 == newList[newList.size() - i - 1]-&gt;m_sha1; ++i) {
</del><ins>+    for (size_t i = 0; i &lt; oldList.size() &amp;&amp; i &lt; newList.size() &amp;&amp; oldList[oldList.size() - i - 1]-&gt;sha1 == newList[newList.size() - i - 1]-&gt;sha1; ++i) {
</ins><span class="cx">         size_t oldIndex = oldList.size() - i - 1;
</span><span class="cx">         size_t newIndex = newList.size() - i - 1;
</span><span class="cx">         oldMap[oldIndex].first = oldList[oldIndex].get();
</span><span class="lines">@@ -240,26 +238,22 @@
</span><span class="cx">     DiffTable newTable;
</span><span class="cx">     DiffTable oldTable;
</span><span class="cx"> 
</span><del>-    for (size_t i = 0; i &lt; newList.size(); ++i) {
-        DiffTable::iterator it = newTable.add(newList[i]-&gt;m_sha1, Vector&lt;size_t&gt;()).iterator;
-        it-&gt;value.append(i);
-    }
</del><ins>+    for (size_t i = 0; i &lt; newList.size(); ++i)
+        newTable.add(newList[i]-&gt;sha1, Vector&lt;size_t&gt;()).iterator-&gt;value.append(i);
</ins><span class="cx"> 
</span><del>-    for (size_t i = 0; i &lt; oldList.size(); ++i) {
-        DiffTable::iterator it = oldTable.add(oldList[i]-&gt;m_sha1, Vector&lt;size_t&gt;()).iterator;
-        it-&gt;value.append(i);
-    }
</del><ins>+    for (size_t i = 0; i &lt; oldList.size(); ++i)
+        oldTable.add(oldList[i]-&gt;sha1, Vector&lt;size_t&gt;()).iterator-&gt;value.append(i);
</ins><span class="cx"> 
</span><del>-    for (DiffTable::iterator newIt = newTable.begin(); newIt != newTable.end(); ++newIt) {
-        if (newIt-&gt;value.size() != 1)
</del><ins>+    for (auto&amp; newEntry : newTable) {
+        if (newEntry.value.size() != 1)
</ins><span class="cx">             continue;
</span><span class="cx"> 
</span><del>-        DiffTable::iterator oldIt = oldTable.find(newIt-&gt;key);
</del><ins>+        auto oldIt = oldTable.find(newEntry.key);
</ins><span class="cx">         if (oldIt == oldTable.end() || oldIt-&gt;value.size() != 1)
</span><span class="cx">             continue;
</span><span class="cx"> 
</span><del>-        newMap[newIt-&gt;value[0]] = std::make_pair(newList[newIt-&gt;value[0]].get(), oldIt-&gt;value[0]);
-        oldMap[oldIt-&gt;value[0]] = std::make_pair(oldList[oldIt-&gt;value[0]].get(), newIt-&gt;value[0]);
</del><ins>+        newMap[newEntry.value[0]] = std::make_pair(newList[newEntry.value[0]].get(), oldIt-&gt;value[0]);
+        oldMap[oldIt-&gt;value[0]] = std::make_pair(oldList[oldIt-&gt;value[0]].get(), newEntry.value[0]);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     for (size_t i = 0; newList.size() &gt; 0 &amp;&amp; i &lt; newList.size() - 1; ++i) {
</span><span class="lines">@@ -267,7 +261,7 @@
</span><span class="cx">             continue;
</span><span class="cx"> 
</span><span class="cx">         size_t j = newMap[i].second + 1;
</span><del>-        if (j &lt; oldMap.size() &amp;&amp; !oldMap[j].first &amp;&amp; newList[i + 1]-&gt;m_sha1 == oldList[j]-&gt;m_sha1) {
</del><ins>+        if (j &lt; oldMap.size() &amp;&amp; !oldMap[j].first &amp;&amp; newList[i + 1]-&gt;sha1 == oldList[j]-&gt;sha1) {
</ins><span class="cx">             newMap[i + 1] = std::make_pair(newList[i + 1].get(), j);
</span><span class="cx">             oldMap[j] = std::make_pair(oldList[j].get(), i + 1);
</span><span class="cx">         }
</span><span class="lines">@@ -278,7 +272,7 @@
</span><span class="cx">             continue;
</span><span class="cx"> 
</span><span class="cx">         size_t j = newMap[i].second - 1;
</span><del>-        if (!oldMap[j].first &amp;&amp; newList[i - 1]-&gt;m_sha1 == oldList[j]-&gt;m_sha1) {
</del><ins>+        if (!oldMap[j].first &amp;&amp; newList[i - 1]-&gt;sha1 == oldList[j]-&gt;sha1) {
</ins><span class="cx">             newMap[i - 1] = std::make_pair(newList[i - 1].get(), j);
</span><span class="cx">             oldMap[j] = std::make_pair(oldList[j].get(), i - 1);
</span><span class="cx">         }
</span><span class="lines">@@ -292,9 +286,9 @@
</span><span class="cx">     return std::make_pair(oldMap, newMap);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool DOMPatchSupport::innerPatchChildren(ContainerNode* parentNode, const Vector&lt;std::unique_ptr&lt;Digest&gt;&gt;&amp; oldList, const Vector&lt;std::unique_ptr&lt;Digest&gt;&gt;&amp; newList, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; DOMPatchSupport::innerPatchChildren(ContainerNode&amp; parentNode, const Vector&lt;std::unique_ptr&lt;Digest&gt;&gt;&amp; oldList, const Vector&lt;std::unique_ptr&lt;Digest&gt;&gt;&amp; newList)
</ins><span class="cx"> {
</span><del>-    std::pair&lt;ResultMap, ResultMap&gt; resultMaps = diff(oldList, newList);
</del><ins>+    auto resultMaps = diff(oldList, newList);
</ins><span class="cx">     ResultMap&amp; oldMap = resultMaps.first;
</span><span class="cx">     ResultMap&amp; newMap = resultMaps.second;
</span><span class="cx"> 
</span><span class="lines">@@ -316,28 +310,30 @@
</span><span class="cx"> 
</span><span class="cx">         // Always match &lt;head&gt; and &lt;body&gt; tags with each other - we can't remove them from the DOM
</span><span class="cx">         // upon patching.
</span><del>-        if (oldList[i]-&gt;m_node-&gt;hasTagName(headTag)) {
</del><ins>+        if (oldList[i]-&gt;node-&gt;hasTagName(headTag)) {
</ins><span class="cx">             oldHead = oldList[i].get();
</span><span class="cx">             continue;
</span><span class="cx">         }
</span><del>-        if (oldList[i]-&gt;m_node-&gt;hasTagName(bodyTag)) {
</del><ins>+        if (oldList[i]-&gt;node-&gt;hasTagName(bodyTag)) {
</ins><span class="cx">             oldBody = oldList[i].get();
</span><span class="cx">             continue;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         // Check if this change is between stable nodes. If it is, consider it as &quot;modified&quot;.
</span><del>-        if (!m_unusedNodesMap.contains(oldList[i]-&gt;m_sha1) &amp;&amp; (!i || oldMap[i - 1].first) &amp;&amp; (i == oldMap.size() - 1 || oldMap[i + 1].first)) {
</del><ins>+        if (!m_unusedNodesMap.contains(oldList[i]-&gt;sha1) &amp;&amp; (!i || oldMap[i - 1].first) &amp;&amp; (i == oldMap.size() - 1 || oldMap[i + 1].first)) {
</ins><span class="cx">             size_t anchorCandidate = i ? oldMap[i - 1].second + 1 : 0;
</span><span class="cx">             size_t anchorAfter = i == oldMap.size() - 1 ? anchorCandidate + 1 : oldMap[i + 1].second;
</span><span class="cx">             if (anchorAfter - anchorCandidate == 1 &amp;&amp; anchorCandidate &lt; newList.size())
</span><span class="cx">                 merges.set(newList[anchorCandidate].get(), oldList[i].get());
</span><span class="cx">             else {
</span><del>-                if (!removeChildAndMoveToNew(oldList[i].get(), ec))
-                    return false;
</del><ins>+                auto result = removeChildAndMoveToNew(*oldList[i]);
+                if (result.hasException())
+                    return result.releaseException();
</ins><span class="cx">             }
</span><span class="cx">         } else {
</span><del>-            if (!removeChildAndMoveToNew(oldList[i].get(), ec))
-                return false;
</del><ins>+            auto result = removeChildAndMoveToNew(*oldList[i]);
+            if (result.hasException())
+                return result.releaseException();
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -354,15 +350,15 @@
</span><span class="cx">             continue;
</span><span class="cx">         }
</span><span class="cx">         usedOldOrdinals.add(oldOrdinal);
</span><del>-        markNodeAsUsed(newMap[i].first);
</del><ins>+        markNodeAsUsed(*newMap[i].first);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Mark &lt;head&gt; and &lt;body&gt; nodes for merge.
</span><span class="cx">     if (oldHead || oldBody) {
</span><span class="cx">         for (size_t i = 0; i &lt; newList.size(); ++i) {
</span><del>-            if (oldHead &amp;&amp; newList[i]-&gt;m_node-&gt;hasTagName(headTag))
</del><ins>+            if (oldHead &amp;&amp; newList[i]-&gt;node-&gt;hasTagName(headTag))
</ins><span class="cx">                 merges.set(newList[i].get(), oldHead);
</span><del>-            if (oldBody &amp;&amp; newList[i]-&gt;m_node-&gt;hasTagName(bodyTag))
</del><ins>+            if (oldBody &amp;&amp; newList[i]-&gt;node-&gt;hasTagName(bodyTag))
</ins><span class="cx">                 merges.set(newList[i].get(), oldBody);
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="lines">@@ -369,8 +365,9 @@
</span><span class="cx"> 
</span><span class="cx">     // 2. Patch nodes marked for merge.
</span><span class="cx">     for (auto&amp; merge : merges) {
</span><del>-        if (!innerPatchNode(merge.value, merge.key, ec))
-            return false;
</del><ins>+        auto result = innerPatchNode(*merge.value, *merge.key);
+        if (result.hasException())
+            return result.releaseException();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // 3. Insert missing nodes.
</span><span class="lines">@@ -377,8 +374,9 @@
</span><span class="cx">     for (size_t i = 0; i &lt; newMap.size(); ++i) {
</span><span class="cx">         if (newMap[i].first || merges.contains(newList[i].get()))
</span><span class="cx">             continue;
</span><del>-        if (!insertBeforeAndMarkAsUsed(*parentNode, *newList[i], parentNode-&gt;traverseToChildAt(i), ec))
-            return false;
</del><ins>+        auto result = insertBeforeAndMarkAsUsed(parentNode, *newList[i], parentNode.traverseToChildAt(i));
+        if (result.hasException())
+            return result.releaseException();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // 4. Then put all nodes that retained into their slots (sort by new index).
</span><span class="lines">@@ -385,17 +383,17 @@
</span><span class="cx">     for (size_t i = 0; i &lt; oldMap.size(); ++i) {
</span><span class="cx">         if (!oldMap[i].first)
</span><span class="cx">             continue;
</span><del>-        RefPtr&lt;Node&gt; node = oldMap[i].first-&gt;m_node;
-        Node* anchorNode = parentNode-&gt;traverseToChildAt(oldMap[i].second);
-        if (node.get() == anchorNode)
</del><ins>+        RefPtr&lt;Node&gt; node = oldMap[i].first-&gt;node;
+        auto* anchorNode = parentNode.traverseToChildAt(oldMap[i].second);
+        if (node == anchorNode)
</ins><span class="cx">             continue;
</span><span class="cx">         if (node-&gt;hasTagName(bodyTag) || node-&gt;hasTagName(headTag))
</span><span class="cx">             continue; // Never move head or body, move the rest of the nodes around them.
</span><del>-
-        if (!m_domEditor-&gt;insertBefore(*parentNode, node.releaseNonNull(), anchorNode, ec))
-            return false;
</del><ins>+        auto result = m_domEditor.insertBefore(parentNode, node.releaseNonNull(), anchorNode);
+        if (result.hasException())
+            return result.releaseException();
</ins><span class="cx">     }
</span><del>-    return true;
</del><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static void addStringToSHA1(SHA1&amp; sha1, const String&amp; string)
</span><span class="lines">@@ -404,62 +402,64 @@
</span><span class="cx">     sha1.addBytes(reinterpret_cast&lt;const uint8_t*&gt;(cString.data()), cString.length());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-std::unique_ptr&lt;DOMPatchSupport::Digest&gt; DOMPatchSupport::createDigest(Node* node, UnusedNodesMap* unusedNodesMap)
</del><ins>+std::unique_ptr&lt;DOMPatchSupport::Digest&gt; DOMPatchSupport::createDigest(Node&amp; node, UnusedNodesMap* unusedNodesMap)
</ins><span class="cx"> {
</span><del>-    auto digest = std::make_unique&lt;Digest&gt;(node);
</del><ins>+    auto digest = std::make_unique&lt;Digest&gt;();
+    digest-&gt;node = &amp;node;
</ins><span class="cx">     SHA1 sha1;
</span><span class="cx"> 
</span><del>-    Node::NodeType nodeType = node-&gt;nodeType();
</del><ins>+    auto nodeType = node.nodeType();
</ins><span class="cx">     sha1.addBytes(reinterpret_cast&lt;const uint8_t*&gt;(&amp;nodeType), sizeof(nodeType));
</span><del>-    addStringToSHA1(sha1, node-&gt;nodeName());
-    addStringToSHA1(sha1, node-&gt;nodeValue());
</del><ins>+    addStringToSHA1(sha1, node.nodeName());
+    addStringToSHA1(sha1, node.nodeValue());
</ins><span class="cx"> 
</span><del>-    if (node-&gt;nodeType() == Node::ELEMENT_NODE) {
-        Node* child = node-&gt;firstChild();
</del><ins>+    if (node.nodeType() == Node::ELEMENT_NODE) {
+        Node* child = node.firstChild();
</ins><span class="cx">         while (child) {
</span><del>-            std::unique_ptr&lt;Digest&gt; childInfo = createDigest(child, unusedNodesMap);
-            addStringToSHA1(sha1, childInfo-&gt;m_sha1);
</del><ins>+            std::unique_ptr&lt;Digest&gt; childInfo = createDigest(*child, unusedNodesMap);
+            addStringToSHA1(sha1, childInfo-&gt;sha1);
</ins><span class="cx">             child = child-&gt;nextSibling();
</span><del>-            digest-&gt;m_children.append(WTFMove(childInfo));
</del><ins>+            digest-&gt;children.append(WTFMove(childInfo));
</ins><span class="cx">         }
</span><del>-        Element* element = downcast&lt;Element&gt;(node);
</del><ins>+        auto&amp; element = downcast&lt;Element&gt;(node);
</ins><span class="cx"> 
</span><del>-        if (element-&gt;hasAttributesWithoutUpdate()) {
</del><ins>+        if (element.hasAttributesWithoutUpdate()) {
</ins><span class="cx">             SHA1 attrsSHA1;
</span><del>-            for (const Attribute&amp; attribute : element-&gt;attributesIterator()) {
</del><ins>+            for (auto&amp; attribute : element.attributesIterator()) {
</ins><span class="cx">                 addStringToSHA1(attrsSHA1, attribute.name().toString());
</span><span class="cx">                 addStringToSHA1(attrsSHA1, attribute.value());
</span><span class="cx">             }
</span><span class="cx">             SHA1::Digest attrsHash;
</span><span class="cx">             attrsSHA1.computeHash(attrsHash);
</span><del>-            digest-&gt;m_attrsSHA1 = base64Encode(attrsHash.data(), 10);
-            addStringToSHA1(sha1, digest-&gt;m_attrsSHA1);
</del><ins>+            digest-&gt;attrsSHA1 = base64Encode(attrsHash.data(), 10);
+            addStringToSHA1(sha1, digest-&gt;attrsSHA1);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     SHA1::Digest hash;
</span><span class="cx">     sha1.computeHash(hash);
</span><del>-    digest-&gt;m_sha1 = base64Encode(hash.data(), 10);
</del><ins>+    digest-&gt;sha1 = base64Encode(hash.data(), 10);
</ins><span class="cx">     if (unusedNodesMap)
</span><del>-        unusedNodesMap-&gt;add(digest-&gt;m_sha1, digest.get());
</del><ins>+        unusedNodesMap-&gt;add(digest-&gt;sha1, digest.get());
</ins><span class="cx"> 
</span><span class="cx">     return digest;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool DOMPatchSupport::insertBeforeAndMarkAsUsed(ContainerNode&amp; parentNode, Digest&amp; digest, Node* anchor, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; DOMPatchSupport::insertBeforeAndMarkAsUsed(ContainerNode&amp; parentNode, Digest&amp; digest, Node* anchor)
</ins><span class="cx"> {
</span><del>-    ASSERT(digest.m_node);
-    bool result = m_domEditor-&gt;insertBefore(parentNode, *digest.m_node, anchor, ec);
-    markNodeAsUsed(&amp;digest);
</del><ins>+    ASSERT(digest.node);
+    auto result = m_domEditor.insertBefore(parentNode, *digest.node, anchor);
+    markNodeAsUsed(digest);
</ins><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool DOMPatchSupport::removeChildAndMoveToNew(Digest* oldDigest, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; DOMPatchSupport::removeChildAndMoveToNew(Digest&amp; oldDigest)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;Node&gt; oldNode = oldDigest-&gt;m_node;
</del><ins>+    Ref&lt;Node&gt; oldNode = *oldDigest.node;
</ins><span class="cx">     ASSERT(oldNode-&gt;parentNode());
</span><del>-    if (!m_domEditor-&gt;removeChild(*oldNode-&gt;parentNode(), *oldNode, ec))
-        return false;
</del><ins>+    auto result = m_domEditor.removeChild(*oldNode-&gt;parentNode(), oldNode);
+    if (result.hasException())
+        return result.releaseException();
</ins><span class="cx"> 
</span><span class="cx">     // Diff works within levels. In order not to lose the node identity when user
</span><span class="cx">     // prepends his HTML with &quot;&lt;div&gt;&quot; (i.e. all nodes are shifted to the next nested level),
</span><span class="lines">@@ -466,32 +466,34 @@
</span><span class="cx">     // prior to dropping the original node on the floor, check whether new DOM has a digest
</span><span class="cx">     // with matching sha1. If it does, replace it with the original DOM chunk. Chances are
</span><span class="cx">     // high that it will get merged back into the original DOM during the further patching.
</span><del>-    UnusedNodesMap::iterator it = m_unusedNodesMap.find(oldDigest-&gt;m_sha1);
</del><ins>+    auto it = m_unusedNodesMap.find(oldDigest.sha1);
</ins><span class="cx">     if (it != m_unusedNodesMap.end()) {
</span><del>-        Digest* newDigest = it-&gt;value;
-        Node* newNode = newDigest-&gt;m_node;
-        if (!m_domEditor-&gt;replaceChild(*newNode-&gt;parentNode(), *oldNode, *newNode, ec))
-            return false;
-        newDigest-&gt;m_node = oldNode.get();
</del><ins>+        auto&amp; newDigest = *it-&gt;value;
+        auto&amp; newNode = *newDigest.node;
+        auto result = m_domEditor.replaceChild(*newNode.parentNode(), oldNode.get(), newNode);
+        if (result.hasException())
+            return result.releaseException();
+        newDigest.node = oldNode.ptr();
</ins><span class="cx">         markNodeAsUsed(newDigest);
</span><del>-        return true;
</del><ins>+        return { };
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    for (auto&amp; child : oldDigest-&gt;m_children) {
-        if (!removeChildAndMoveToNew(child.get(), ec))
-            return false;
</del><ins>+    for (auto&amp; child : oldDigest.children) {
+        auto result = removeChildAndMoveToNew(*child);
+        if (result.hasException())
+            return result.releaseException();
</ins><span class="cx">     }
</span><del>-    return true;
</del><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void DOMPatchSupport::markNodeAsUsed(Digest* digest)
</del><ins>+void DOMPatchSupport::markNodeAsUsed(Digest&amp; digest)
</ins><span class="cx"> {
</span><span class="cx">     Deque&lt;Digest*&gt; queue;
</span><del>-    queue.append(digest);
</del><ins>+    queue.append(&amp;digest);
</ins><span class="cx">     while (!queue.isEmpty()) {
</span><del>-        Digest* first = queue.takeFirst();
-        m_unusedNodesMap.remove(first-&gt;m_sha1);
-        for (auto&amp; child : first-&gt;m_children)
</del><ins>+        auto&amp; first = *queue.takeFirst();
+        m_unusedNodesMap.remove(first.sha1);
+        for (auto&amp; child : first.children)
</ins><span class="cx">             queue.append(child.get());
</span><span class="cx">     }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorDOMPatchSupporth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/DOMPatchSupport.h (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/DOMPatchSupport.h        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/inspector/DOMPatchSupport.h        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -30,10 +30,9 @@
</span><span class="cx"> 
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><del>-#include &quot;ExceptionCode.h&quot;
</del><ins>+#include &quot;ExceptionOr.h&quot;
</ins><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/Vector.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">@@ -43,34 +42,34 @@
</span><span class="cx"> class Node;
</span><span class="cx"> 
</span><span class="cx"> class DOMPatchSupport final {
</span><del>-    WTF_MAKE_NONCOPYABLE(DOMPatchSupport);
</del><span class="cx"> public:
</span><del>-    static void patchDocument(Document*, const String&amp; markup);
</del><ins>+    static void patchDocument(Document&amp;, const String&amp; markup);
</ins><span class="cx"> 
</span><del>-    DOMPatchSupport(DOMEditor*, Document*);
-    ~DOMPatchSupport();
</del><ins>+    DOMPatchSupport(DOMEditor&amp;, Document&amp;);
</ins><span class="cx"> 
</span><span class="cx">     void patchDocument(const String&amp; markup);
</span><del>-    Node* patchNode(Node&amp;, const String&amp; markup, ExceptionCode&amp;);
</del><ins>+    ExceptionOr&lt;Node*&gt; patchNode(Node&amp;, const String&amp; markup);
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     struct Digest;
</span><del>-    typedef Vector&lt;std::pair&lt;Digest*, size_t&gt;&gt; ResultMap;
-    typedef HashMap&lt;String, Digest*&gt; UnusedNodesMap;
</del><span class="cx"> 
</span><del>-    bool innerPatchNode(Digest* oldNode, Digest* newNode, ExceptionCode&amp;);
</del><ins>+    using ResultMap = Vector&lt;std::pair&lt;Digest*, size_t&gt;&gt;;
+    using UnusedNodesMap = HashMap&lt;String, Digest*&gt;;
+
+    ExceptionOr&lt;void&gt; innerPatchNode(Digest&amp; oldNode, Digest&amp; newNode);
</ins><span class="cx">     std::pair&lt;ResultMap, ResultMap&gt; diff(const Vector&lt;std::unique_ptr&lt;Digest&gt;&gt;&amp; oldChildren, const Vector&lt;std::unique_ptr&lt;Digest&gt;&gt;&amp; newChildren);
</span><del>-    bool innerPatchChildren(ContainerNode*, const Vector&lt;std::unique_ptr&lt;Digest&gt;&gt;&amp; oldChildren, const Vector&lt;std::unique_ptr&lt;Digest&gt;&gt;&amp; newChildren, ExceptionCode&amp;);
-    std::unique_ptr&lt;Digest&gt; createDigest(Node*, UnusedNodesMap*);
-    bool insertBeforeAndMarkAsUsed(ContainerNode&amp;, Digest&amp;, Node* anchor, ExceptionCode&amp;);
-    bool removeChildAndMoveToNew(Digest*, ExceptionCode&amp;);
-    void markNodeAsUsed(Digest*);
</del><ins>+    ExceptionOr&lt;void&gt; innerPatchChildren(ContainerNode&amp;, const Vector&lt;std::unique_ptr&lt;Digest&gt;&gt;&amp; oldChildren, const Vector&lt;std::unique_ptr&lt;Digest&gt;&gt;&amp; newChildren);
+    std::unique_ptr&lt;Digest&gt; createDigest(Node&amp;, UnusedNodesMap*);
+    ExceptionOr&lt;void&gt; insertBeforeAndMarkAsUsed(ContainerNode&amp;, Digest&amp;, Node* anchor);
+    ExceptionOr&lt;void&gt; removeChildAndMoveToNew(Digest&amp;);
+    void markNodeAsUsed(Digest&amp;);
+
</ins><span class="cx"> #ifdef DEBUG_DOM_PATCH_SUPPORT
</span><span class="cx">     void dumpMap(const ResultMap&amp;, const String&amp; name);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    DOMEditor* m_domEditor;
-    Document* m_document;
</del><ins>+    DOMEditor&amp; m_domEditor;
+    Document&amp; m_document;
</ins><span class="cx"> 
</span><span class="cx">     UnusedNodesMap m_unusedNodesMap;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorCSSAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorCSSAgent.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorCSSAgent.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/inspector/InspectorCSSAgent.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -175,32 +175,35 @@
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool perform(ExceptionCode&amp; ec) override
</del><ins>+private:
+    ExceptionOr&lt;void&gt; perform() final
</ins><span class="cx">     {
</span><del>-        if (!m_styleSheet-&gt;getText(&amp;m_oldText))
-            return false;
-        return redo(ec);
</del><ins>+        auto result = m_styleSheet-&gt;text();
+        if (result.hasException())
+            return result.releaseException();
+        m_oldText = result.releaseReturnValue();
+        return redo();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool undo(ExceptionCode&amp; ec) override
</del><ins>+    ExceptionOr&lt;void&gt; undo() final
</ins><span class="cx">     {
</span><del>-        if (m_styleSheet-&gt;setText(m_oldText, ec)) {
-            m_styleSheet-&gt;reparseStyleSheet(m_oldText);
-            return true;
-        }
-        return false;
</del><ins>+        auto result = m_styleSheet-&gt;setText(m_oldText);
+        if (result.hasException())
+            return result.releaseException();
+        m_styleSheet-&gt;reparseStyleSheet(m_oldText);
+        return { };
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool redo(ExceptionCode&amp; ec) override
</del><ins>+    ExceptionOr&lt;void&gt; redo() final
</ins><span class="cx">     {
</span><del>-        if (m_styleSheet-&gt;setText(m_text, ec)) {
-            m_styleSheet-&gt;reparseStyleSheet(m_text);
-            return true;
-        }
-        return false;
</del><ins>+        auto result = m_styleSheet-&gt;setText(m_text);
+        if (result.hasException())
+            return result.releaseException();
+        m_styleSheet-&gt;reparseStyleSheet(m_text);
+        return { };
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    String mergeId() override
</del><ins>+    String mergeId() final
</ins><span class="cx">     {
</span><span class="cx">         return String::format(&quot;SetStyleSheetText %s&quot;, m_styleSheet-&gt;id().utf8().data());
</span><span class="cx">     }
</span><span class="lines">@@ -208,12 +211,9 @@
</span><span class="cx">     void merge(std::unique_ptr&lt;Action&gt; action) override
</span><span class="cx">     {
</span><span class="cx">         ASSERT(action-&gt;mergeId() == mergeId());
</span><del>-
-        SetStyleSheetTextAction* other = static_cast&lt;SetStyleSheetTextAction*&gt;(action.get());
-        m_text = other-&gt;m_text;
</del><ins>+        m_text = static_cast&lt;SetStyleSheetTextAction&amp;&gt;(*action).m_text;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-private:
</del><span class="cx">     String m_text;
</span><span class="cx">     String m_oldText;
</span><span class="cx"> };
</span><span class="lines">@@ -228,19 +228,19 @@
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool perform(ExceptionCode&amp; ec) override
</del><ins>+    ExceptionOr&lt;void&gt; perform() override
</ins><span class="cx">     {
</span><del>-        return redo(ec);
</del><ins>+        return redo();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool undo(ExceptionCode&amp; ec) override
</del><ins>+    ExceptionOr&lt;void&gt; undo() override
</ins><span class="cx">     {
</span><del>-        return m_styleSheet-&gt;setStyleText(m_cssId, m_oldText, nullptr, ec);
</del><ins>+        return m_styleSheet-&gt;setStyleText(m_cssId, m_oldText, nullptr);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool redo(ExceptionCode&amp; ec) override
</del><ins>+    ExceptionOr&lt;void&gt; redo() override
</ins><span class="cx">     {
</span><del>-        return m_styleSheet-&gt;setStyleText(m_cssId, m_text, &amp;m_oldText, ec);
</del><ins>+        return m_styleSheet-&gt;setStyleText(m_cssId, m_text, &amp;m_oldText);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     String mergeId() override
</span><span class="lines">@@ -273,25 +273,26 @@
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool perform(ExceptionCode&amp; ec) override
</del><ins>+private:
+    ExceptionOr&lt;void&gt; perform() final
</ins><span class="cx">     {
</span><del>-        m_oldSelector = m_styleSheet-&gt;ruleSelector(m_cssId, ec);
-        if (ec)
-            return false;
-        return redo(ec);
</del><ins>+        auto result = m_styleSheet-&gt;ruleSelector(m_cssId);
+        if (result.hasException())
+            return result.releaseException();
+        m_oldSelector = result.releaseReturnValue();
+        return redo();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool undo(ExceptionCode&amp; ec) override
</del><ins>+    ExceptionOr&lt;void&gt; undo() final
</ins><span class="cx">     {
</span><del>-        return m_styleSheet-&gt;setRuleSelector(m_cssId, m_oldSelector, ec);
</del><ins>+        return m_styleSheet-&gt;setRuleSelector(m_cssId, m_oldSelector);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool redo(ExceptionCode&amp; ec) override
</del><ins>+    ExceptionOr&lt;void&gt; redo() final
</ins><span class="cx">     {
</span><del>-        return m_styleSheet-&gt;setRuleSelector(m_cssId, m_selector, ec);
</del><ins>+        return m_styleSheet-&gt;setRuleSelector(m_cssId, m_selector);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-private:
</del><span class="cx">     InspectorCSSId m_cssId;
</span><span class="cx">     String m_selector;
</span><span class="cx">     String m_oldSelector;
</span><span class="lines">@@ -306,34 +307,33 @@
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool perform(ExceptionCode&amp; ec) override
</del><ins>+    InspectorCSSId newRuleId() const { return m_newId; }
+
+private:
+    ExceptionOr&lt;void&gt; perform() final
</ins><span class="cx">     {
</span><del>-        return redo(ec);
</del><ins>+        return redo();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool undo(ExceptionCode&amp; ec) override
</del><ins>+    ExceptionOr&lt;void&gt; undo() final
</ins><span class="cx">     {
</span><del>-        return m_styleSheet-&gt;deleteRule(m_newId, ec);
</del><ins>+        return m_styleSheet-&gt;deleteRule(m_newId);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool redo(ExceptionCode&amp; ec) override
</del><ins>+    ExceptionOr&lt;void&gt; redo() final
</ins><span class="cx">     {
</span><del>-        CSSStyleRule* cssStyleRule = m_styleSheet-&gt;addRule(m_selector, ec);
-        if (ec)
-            return false;
-        m_newId = m_styleSheet-&gt;ruleId(cssStyleRule);
-        return true;
</del><ins>+        auto result = m_styleSheet-&gt;addRule(m_selector);
+        if (result.hasException())
+            return result.releaseException();
+        m_newId = m_styleSheet-&gt;ruleId(result.releaseReturnValue());
+        return { };
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    InspectorCSSId newRuleId() { return m_newId; }
-
-private:
</del><span class="cx">     InspectorCSSId m_newId;
</span><span class="cx">     String m_selector;
</span><span class="cx">     String m_oldSelector;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-// static
</del><span class="cx"> CSSStyleRule* InspectorCSSAgent::asCSSStyleRule(CSSRule&amp; rule)
</span><span class="cx"> {
</span><span class="cx">     if (!is&lt;CSSStyleRule&gt;(rule))
</span><span class="lines">@@ -703,7 +703,9 @@
</span><span class="cx">     if (!inspectorStyleSheet)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    inspectorStyleSheet-&gt;getText(result);
</del><ins>+    auto text = inspectorStyleSheet-&gt;text();
+    if (!text.hasException())
+        *result = text.releaseReturnValue();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorCSSAgent::setStyleSheetText(ErrorString&amp; errorString, const String&amp; styleSheetId, const String&amp; text)
</span><span class="lines">@@ -712,9 +714,9 @@
</span><span class="cx">     if (!inspectorStyleSheet)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
-    m_domAgent-&gt;history()-&gt;perform(std::make_unique&lt;SetStyleSheetTextAction&gt;(inspectorStyleSheet, text), ec);
-    errorString = InspectorDOMAgent::toErrorString(ec);
</del><ins>+    auto result = m_domAgent-&gt;history()-&gt;perform(std::make_unique&lt;SetStyleSheetTextAction&gt;(inspectorStyleSheet, text));
+    if (result.hasException())
+        errorString = InspectorDOMAgent::toErrorString(result.releaseException());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorCSSAgent::setStyleText(ErrorString&amp; errorString, const InspectorObject&amp; fullStyleId, const String&amp; text, RefPtr&lt;Inspector::Protocol::CSS::CSSStyle&gt;&amp; result)
</span><span class="lines">@@ -726,11 +728,13 @@
</span><span class="cx">     if (!inspectorStyleSheet)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
-    bool success = m_domAgent-&gt;history()-&gt;perform(std::make_unique&lt;SetStyleTextAction&gt;(inspectorStyleSheet, compoundId, text), ec);
-    if (success)
-        result = inspectorStyleSheet-&gt;buildObjectForStyle(inspectorStyleSheet-&gt;styleForId(compoundId));
-    errorString = InspectorDOMAgent::toErrorString(ec);
</del><ins>+    auto performResult = m_domAgent-&gt;history()-&gt;perform(std::make_unique&lt;SetStyleTextAction&gt;(inspectorStyleSheet, compoundId, text));
+    if (performResult.hasException()) {
+        errorString = InspectorDOMAgent::toErrorString(performResult.releaseException());
+        return;
+    }
+
+    result = inspectorStyleSheet-&gt;buildObjectForStyle(inspectorStyleSheet-&gt;styleForId(compoundId));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorCSSAgent::setRuleSelector(ErrorString&amp; errorString, const InspectorObject&amp; fullRuleId, const String&amp; selector, RefPtr&lt;Inspector::Protocol::CSS::CSSRule&gt;&amp; result)
</span><span class="lines">@@ -742,12 +746,13 @@
</span><span class="cx">     if (!inspectorStyleSheet)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
-    bool success = m_domAgent-&gt;history()-&gt;perform(std::make_unique&lt;SetRuleSelectorAction&gt;(inspectorStyleSheet, compoundId, selector), ec);
</del><ins>+    auto performResult = m_domAgent-&gt;history()-&gt;perform(std::make_unique&lt;SetRuleSelectorAction&gt;(inspectorStyleSheet, compoundId, selector));
+    if (performResult.hasException()) {
+        errorString = InspectorDOMAgent::toErrorString(performResult.releaseException());
+        return;
+    }
</ins><span class="cx"> 
</span><del>-    if (success)
-        result = inspectorStyleSheet-&gt;buildObjectForRule(inspectorStyleSheet-&gt;ruleForId(compoundId), nullptr);
-    errorString = InspectorDOMAgent::toErrorString(ec);
</del><ins>+    result = inspectorStyleSheet-&gt;buildObjectForRule(inspectorStyleSheet-&gt;ruleForId(compoundId), nullptr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorCSSAgent::createStyleSheet(ErrorString&amp; errorString, const String&amp; frameId, String* styleSheetId)
</span><span class="lines">@@ -795,11 +800,10 @@
</span><span class="cx">     // Set this flag, so when we create it, we put it into the via inspector map.
</span><span class="cx">     m_creatingViaInspectorStyleSheet = true;
</span><span class="cx">     InlineStyleOverrideScope overrideScope(document);
</span><del>-    ExceptionCode ec = 0;
-    targetNode-&gt;appendChild(styleElement, ec);
</del><ins>+    auto appendResult = targetNode-&gt;appendChild(styleElement);
</ins><span class="cx">     document.styleScope().flushPendingUpdate();
</span><span class="cx">     m_creatingViaInspectorStyleSheet = false;
</span><del>-    if (ec)
</del><ins>+    if (appendResult.hasException())
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     auto iterator = m_documentToInspectorStyleSheet.find(&amp;document);
</span><span class="lines">@@ -823,16 +827,15 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
</del><span class="cx">     auto action = std::make_unique&lt;AddRuleAction&gt;(inspectorStyleSheet, selector);
</span><del>-    AddRuleAction* rawAction = action.get();
-    bool success = m_domAgent-&gt;history()-&gt;perform(WTFMove(action), ec);
-    if (!success) {
-        errorString = InspectorDOMAgent::toErrorString(ec);
</del><ins>+    auto&amp; rawAction = *action;
+    auto performResult = m_domAgent-&gt;history()-&gt;perform(WTFMove(action));
+    if (performResult.hasException()) {
+        errorString = InspectorDOMAgent::toErrorString(performResult.releaseException());
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    InspectorCSSId ruleId = rawAction-&gt;newRuleId();
</del><ins>+    InspectorCSSId ruleId = rawAction.newRuleId();
</ins><span class="cx">     CSSStyleRule* rule = inspectorStyleSheet-&gt;ruleForId(ruleId);
</span><span class="cx">     result = inspectorStyleSheet-&gt;buildObjectForRule(rule, nullptr);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorDOMAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -231,7 +231,7 @@
</span><span class="cx"> void InspectorDOMAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*)
</span><span class="cx"> {
</span><span class="cx">     m_history = std::make_unique&lt;InspectorHistory&gt;();
</span><del>-    m_domEditor = std::make_unique&lt;DOMEditor&gt;(m_history.get());
</del><ins>+    m_domEditor = std::make_unique&lt;DOMEditor&gt;(*m_history);
</ins><span class="cx"> 
</span><span class="cx">     m_instrumentingAgents.setInspectorDOMAgent(this);
</span><span class="cx">     m_document = m_pageAgent-&gt;mainFrame().document();
</span><span class="lines">@@ -654,7 +654,7 @@
</span><span class="cx">     if (!element)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_domEditor-&gt;setAttribute(element, name, value, errorString);
</del><ins>+    m_domEditor-&gt;setAttribute(*element, name, value, errorString);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorDOMAgent::setAttributesAsText(ErrorString&amp; errorString, int elementId, const String&amp; text, const String* const name)
</span><span class="lines">@@ -678,7 +678,7 @@
</span><span class="cx"> 
</span><span class="cx">     Element* childElement = downcast&lt;Element&gt;(child);
</span><span class="cx">     if (!childElement-&gt;hasAttributes() &amp;&amp; name) {
</span><del>-        m_domEditor-&gt;removeAttribute(element, *name, errorString);
</del><ins>+        m_domEditor-&gt;removeAttribute(*element, *name, errorString);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -686,12 +686,12 @@
</span><span class="cx">     for (const Attribute&amp; attribute : childElement-&gt;attributesIterator()) {
</span><span class="cx">         // Add attribute pair
</span><span class="cx">         foundOriginalAttribute = foundOriginalAttribute || (name &amp;&amp; attribute.name().toString() == *name);
</span><del>-        if (!m_domEditor-&gt;setAttribute(element, attribute.name().toString(), attribute.value(), errorString))
</del><ins>+        if (!m_domEditor-&gt;setAttribute(*element, attribute.name().toString(), attribute.value(), errorString))
</ins><span class="cx">             return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (!foundOriginalAttribute &amp;&amp; name &amp;&amp; !name-&gt;stripWhiteSpace().isEmpty())
</span><del>-        m_domEditor-&gt;removeAttribute(element, *name, errorString);
</del><ins>+        m_domEditor-&gt;removeAttribute(*element, *name, errorString);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorDOMAgent::removeAttribute(ErrorString&amp; errorString, int elementId, const String&amp; name)
</span><span class="lines">@@ -700,7 +700,7 @@
</span><span class="cx">     if (!element)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_domEditor-&gt;removeAttribute(element, name, errorString);
</del><ins>+    m_domEditor-&gt;removeAttribute(*element, name, errorString);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorDOMAgent::removeNode(ErrorString&amp; errorString, int nodeId)
</span><span class="lines">@@ -765,8 +765,7 @@
</span><span class="cx"> void InspectorDOMAgent::setOuterHTML(ErrorString&amp; errorString, int nodeId, const String&amp; outerHTML)
</span><span class="cx"> {
</span><span class="cx">     if (!nodeId) {
</span><del>-        DOMPatchSupport domPatchSupport(m_domEditor.get(), m_document.get());
-        domPatchSupport.patchDocument(outerHTML);
</del><ins>+        DOMPatchSupport { *m_domEditor, *m_document }.patchDocument(outerHTML);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -780,8 +779,8 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    Node* newNode = 0;
-    if (!m_domEditor-&gt;setOuterHTML(*node, outerHTML, &amp;newNode, errorString))
</del><ins>+    Node* newNode = nullptr;
+    if (!m_domEditor-&gt;setOuterHTML(*node, outerHTML, newNode, errorString))
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (!newNode) {
</span><span class="lines">@@ -802,12 +801,12 @@
</span><span class="cx">     if (!node)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    if (node-&gt;nodeType() != Node::TEXT_NODE) {
</del><ins>+    if (!is&lt;Text&gt;(*node)) {
</ins><span class="cx">         errorString = ASCIILiteral(&quot;Can only set value of text nodes&quot;);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    m_domEditor-&gt;replaceWholeText(downcast&lt;Text&gt;(node), value, errorString);
</del><ins>+    m_domEditor-&gt;replaceWholeText(downcast&lt;Text&gt;(*node), value, errorString);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorDOMAgent::getEventListenersForNode(ErrorString&amp; errorString, int nodeId, const String* objectGroup, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::DOM::EventListener&gt;&gt;&amp; listenersArray)
</span><span class="lines">@@ -1198,16 +1197,16 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorDOMAgent::undo(ErrorString&amp; errorString)
</span><span class="cx"> {
</span><del>-    ExceptionCode ec = 0;
-    m_history-&gt;undo(ec);
-    errorString = toErrorString(ec);
</del><ins>+    auto result = m_history-&gt;undo();
+    if (result.hasException())
+        errorString = toErrorString(result.releaseException());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorDOMAgent::redo(ErrorString&amp; errorString)
</span><span class="cx"> {
</span><del>-    ExceptionCode ec = 0;
-    m_history-&gt;redo(ec);
-    errorString = toErrorString(ec);
</del><ins>+    auto result = m_history-&gt;redo();
+    if (result.hasException())
+        errorString = toErrorString(result.releaseException());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorDOMAgent::markUndoableState(ErrorString&amp;)
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorHistorycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorHistory.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorHistory.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/inspector/InspectorHistory.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -31,64 +31,30 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;InspectorHistory.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;ExceptionCodePlaceholder.h&quot;
</del><span class="cx"> #include &quot;Node.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-namespace {
-
</del><span class="cx"> class UndoableStateMark : public InspectorHistory::Action {
</span><span class="cx"> public:
</span><del>-    UndoableStateMark() : InspectorHistory::Action(&quot;[UndoableState]&quot;) { }
</del><ins>+    UndoableStateMark()
+        : Action(&quot;[UndoableState]&quot;)
+    {
+    }
</ins><span class="cx"> 
</span><del>-    bool perform(ExceptionCode&amp;) override { return true; }
-
-    bool undo(ExceptionCode&amp;) override { return true; }
-
-    bool redo(ExceptionCode&amp;) override { return true; }
-
-    bool isUndoableStateMark() override { return true; }
</del><ins>+private:
+    ExceptionOr&lt;void&gt; perform() final { return { }; }
+    ExceptionOr&lt;void&gt; undo() final { return { }; }
+    ExceptionOr&lt;void&gt; redo() final { return { }; }
+    bool isUndoableStateMark() final { return true; }
</ins><span class="cx"> };
</span><span class="cx"> 
</span><del>-}
-
-InspectorHistory::Action::Action(const String&amp; name) : m_name(name)
</del><ins>+ExceptionOr&lt;void&gt; InspectorHistory::perform(std::unique_ptr&lt;Action&gt; action)
</ins><span class="cx"> {
</span><del>-}
</del><ins>+    auto performResult = action-&gt;perform();
+    if (performResult.hasException())
+        return performResult.releaseException();
</ins><span class="cx"> 
</span><del>-InspectorHistory::Action::~Action()
-{
-}
-
-String InspectorHistory::Action::toString()
-{
-    return m_name;
-}
-
-bool InspectorHistory::Action::isUndoableStateMark()
-{
-    return false;
-}
-
-String InspectorHistory::Action::mergeId()
-{
-    return emptyString();
-}
-
-void InspectorHistory::Action::merge(std::unique_ptr&lt;Action&gt;)
-{
-}
-
-InspectorHistory::InspectorHistory() : m_afterLastActionIndex(0) { }
-
-InspectorHistory::~InspectorHistory() { }
-
-bool InspectorHistory::perform(std::unique_ptr&lt;Action&gt; action, ExceptionCode&amp; ec)
-{
-    if (!action-&gt;perform(ec))
-        return false;
-
</del><span class="cx">     if (!action-&gt;mergeId().isEmpty() &amp;&amp; m_afterLastActionIndex &gt; 0 &amp;&amp; action-&gt;mergeId() == m_history[m_afterLastActionIndex - 1]-&gt;mergeId())
</span><span class="cx">         m_history[m_afterLastActionIndex - 1]-&gt;merge(WTFMove(action));
</span><span class="cx">     else {
</span><span class="lines">@@ -96,15 +62,15 @@
</span><span class="cx">         m_history.append(WTFMove(action));
</span><span class="cx">         ++m_afterLastActionIndex;
</span><span class="cx">     }
</span><del>-    return true;
</del><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorHistory::markUndoableState()
</span><span class="cx"> {
</span><del>-    perform(std::make_unique&lt;UndoableStateMark&gt;(), IGNORE_EXCEPTION);
</del><ins>+    perform(std::make_unique&lt;UndoableStateMark&gt;());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool InspectorHistory::undo(ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; InspectorHistory::undo()
</ins><span class="cx"> {
</span><span class="cx">     while (m_afterLastActionIndex &gt; 0 &amp;&amp; m_history[m_afterLastActionIndex - 1]-&gt;isUndoableStateMark())
</span><span class="cx">         --m_afterLastActionIndex;
</span><span class="lines">@@ -111,9 +77,10 @@
</span><span class="cx"> 
</span><span class="cx">     while (m_afterLastActionIndex &gt; 0) {
</span><span class="cx">         Action* action = m_history[m_afterLastActionIndex - 1].get();
</span><del>-        if (!action-&gt;undo(ec)) {
</del><ins>+        auto undoResult = action-&gt;undo();
+        if (undoResult.hasException()) {
</ins><span class="cx">             reset();
</span><del>-            return false;
</del><ins>+            return undoResult.releaseException();
</ins><span class="cx">         }
</span><span class="cx">         --m_afterLastActionIndex;
</span><span class="cx">         if (action-&gt;isUndoableStateMark())
</span><span class="lines">@@ -120,10 +87,10 @@
</span><span class="cx">             break;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return true;
</del><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool InspectorHistory::redo(ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; InspectorHistory::redo()
</ins><span class="cx"> {
</span><span class="cx">     while (m_afterLastActionIndex &lt; m_history.size() &amp;&amp; m_history[m_afterLastActionIndex]-&gt;isUndoableStateMark())
</span><span class="cx">         ++m_afterLastActionIndex;
</span><span class="lines">@@ -130,15 +97,16 @@
</span><span class="cx"> 
</span><span class="cx">     while (m_afterLastActionIndex &lt; m_history.size()) {
</span><span class="cx">         Action* action = m_history[m_afterLastActionIndex].get();
</span><del>-        if (!action-&gt;redo(ec)) {
</del><ins>+        auto redoResult = action-&gt;redo();
+        if (redoResult.hasException()) {
</ins><span class="cx">             reset();
</span><del>-            return false;
</del><ins>+            return redoResult.releaseException();
</ins><span class="cx">         }
</span><span class="cx">         ++m_afterLastActionIndex;
</span><span class="cx">         if (action-&gt;isUndoableStateMark())
</span><span class="cx">             break;
</span><span class="cx">     }
</span><del>-    return true;
</del><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorHistory::reset()
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorHistoryh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorHistory.h (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorHistory.h        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/inspector/InspectorHistory.h        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -30,9 +30,8 @@
</span><span class="cx"> 
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><del>-#include &quot;ExceptionCode.h&quot;
</del><ins>+#include &quot;ExceptionOr.h&quot;
</ins><span class="cx"> #include &lt;wtf/Vector.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">@@ -42,36 +41,40 @@
</span><span class="cx">     class Action {
</span><span class="cx">         WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx">     public:
</span><del>-        Action(const String&amp; name);
-        virtual ~Action();
-        virtual String toString();
</del><ins>+        explicit Action(const String&amp; name)
+            : m_name { name }
+        {
+        }
</ins><span class="cx"> 
</span><del>-        virtual String mergeId();
-        virtual void merge(std::unique_ptr&lt;Action&gt;);
</del><ins>+        virtual ~Action() = default;
+        virtual String toString() { return m_name; }
</ins><span class="cx"> 
</span><del>-        virtual bool perform(ExceptionCode&amp;) = 0;
</del><ins>+        virtual String mergeId() { return emptyString(); }
+        virtual void merge(std::unique_ptr&lt;Action&gt;) { };
</ins><span class="cx"> 
</span><del>-        virtual bool undo(ExceptionCode&amp;) = 0;
-        virtual bool redo(ExceptionCode&amp;) = 0;
</del><ins>+        virtual ExceptionOr&lt;void&gt; perform() = 0;
</ins><span class="cx"> 
</span><del>-        virtual bool isUndoableStateMark();
</del><ins>+        virtual ExceptionOr&lt;void&gt; undo() = 0;
+        virtual ExceptionOr&lt;void&gt; redo() = 0;
+
+        virtual bool isUndoableStateMark() { return false; }
+
</ins><span class="cx">     private:
</span><span class="cx">         String m_name;
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    InspectorHistory();
-    ~InspectorHistory();
</del><ins>+    InspectorHistory() = default;
</ins><span class="cx"> 
</span><del>-    bool perform(std::unique_ptr&lt;Action&gt;, ExceptionCode&amp;);
</del><ins>+    ExceptionOr&lt;void&gt; perform(std::unique_ptr&lt;Action&gt;);
</ins><span class="cx">     void markUndoableState();
</span><span class="cx"> 
</span><del>-    bool undo(ExceptionCode&amp;);
-    bool redo(ExceptionCode&amp;);
</del><ins>+    ExceptionOr&lt;void&gt; undo();
+    ExceptionOr&lt;void&gt; redo();
</ins><span class="cx">     void reset();
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     Vector&lt;std::unique_ptr&lt;Action&gt;&gt; m_history;
</span><del>-    size_t m_afterLastActionIndex;
</del><ins>+    size_t m_afterLastActionIndex { 0 };
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorPageAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorPageAgent.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorPageAgent.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/inspector/InspectorPageAgent.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -671,7 +671,7 @@
</span><span class="cx">         errorString = ASCIILiteral(&quot;No Document instance to set HTML for&quot;);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    DOMPatchSupport::patchDocument(document, html);
</del><ins>+    DOMPatchSupport::patchDocument(*document, html);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorPageAgent::setShowPaintRects(ErrorString&amp;, bool show)
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorStyleSheetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -328,21 +328,19 @@
</span><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool InspectorStyle::getText(String* result) const
</del><ins>+ExceptionOr&lt;String&gt; InspectorStyle::text() const
</ins><span class="cx"> {
</span><span class="cx">     // Precondition: m_parentStyleSheet-&gt;ensureParsedDataReady() has been called successfully.
</span><del>-    RefPtr&lt;CSSRuleSourceData&gt; sourceData = extractSourceData();
</del><ins>+    auto sourceData = extractSourceData();
</ins><span class="cx">     if (!sourceData)
</span><del>-        return false;
</del><ins>+        return Exception { NOT_FOUND_ERR };
</ins><span class="cx"> 
</span><del>-    String styleSheetText;
-    bool success = m_parentStyleSheet-&gt;getText(&amp;styleSheetText);
-    if (!success)
-        return false;
</del><ins>+    auto result = m_parentStyleSheet-&gt;text();
+    if (result.hasException())
+        return result.releaseException();
</ins><span class="cx"> 
</span><del>-    SourceRange&amp; bodyRange = sourceData-&gt;ruleBodyRange;
-    *result = styleSheetText.substring(bodyRange.start, bodyRange.end - bodyRange.start);
-    return true;
</del><ins>+    auto&amp; bodyRange = sourceData-&gt;ruleBodyRange;
+    return result.releaseReturnValue().substring(bodyRange.start, bodyRange.end - bodyRange.start);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static String lowercasePropertyName(const String&amp; name)
</span><span class="lines">@@ -357,12 +355,12 @@
</span><span class="cx"> {
</span><span class="cx">     HashSet&lt;String&gt; sourcePropertyNames;
</span><span class="cx"> 
</span><del>-    RefPtr&lt;CSSRuleSourceData&gt; sourceData = extractSourceData();
-    Vector&lt;CSSPropertySourceData&gt;* sourcePropertyData = sourceData ? &amp;(sourceData-&gt;styleSourceData-&gt;propertyData) : nullptr;
</del><ins>+    auto sourceData = extractSourceData();
+    auto* sourcePropertyData = sourceData ? &amp;sourceData-&gt;styleSourceData-&gt;propertyData : nullptr;
</ins><span class="cx">     if (sourcePropertyData) {
</span><del>-        String styleDeclaration;
-        bool isStyleTextKnown = getText(&amp;styleDeclaration);
-        ASSERT_UNUSED(isStyleTextKnown, isStyleTextKnown);
</del><ins>+        auto styleDeclarationOrException = text();
+        ASSERT(!styleDeclarationOrException.hasException());
+        String styleDeclaration = styleDeclarationOrException.hasException() ? emptyString() : styleDeclarationOrException.releaseReturnValue();
</ins><span class="cx">         for (auto&amp; sourceData : *sourcePropertyData) {
</span><span class="cx">             InspectorStyleProperty p(sourceData, true, false);
</span><span class="cx">             p.setRawTextFromStyleDeclaration(styleDeclaration);
</span><span class="lines">@@ -390,7 +388,7 @@
</span><span class="cx">     String previousPriority;
</span><span class="cx">     String previousStatus;
</span><span class="cx">     std::unique_ptr&lt;Vector&lt;size_t&gt;&gt; lineEndings(m_parentStyleSheet ? m_parentStyleSheet-&gt;lineEndings() : nullptr);
</span><del>-    RefPtr&lt;CSSRuleSourceData&gt; sourceData = extractSourceData();
</del><ins>+    auto sourceData = extractSourceData();
</ins><span class="cx">     unsigned ruleBodyRangeStart = sourceData ? sourceData-&gt;ruleBodyRange.start : 0;
</span><span class="cx"> 
</span><span class="cx">     for (Vector&lt;InspectorStyleProperty&gt;::iterator it = properties.begin(), itEnd = properties.end(); it != itEnd; ++it) {
</span><span class="lines">@@ -504,9 +502,9 @@
</span><span class="cx">     return m_parentStyleSheet-&gt;ruleSourceDataFor(m_style.get());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool InspectorStyle::setText(const String&amp; text, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; InspectorStyle::setText(const String&amp; text)
</ins><span class="cx"> {
</span><del>-    return m_parentStyleSheet-&gt;setStyleText(m_style.get(), text, ec);
</del><ins>+    return m_parentStyleSheet-&gt;setStyleText(m_style.get(), text);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String InspectorStyle::shorthandValue(const String&amp; shorthandProperty) const
</span><span class="lines">@@ -614,26 +612,22 @@
</span><span class="cx">     m_pageStyleSheet-&gt;clearHadRulesMutation();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool InspectorStyleSheet::setText(const String&amp; text, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; InspectorStyleSheet::setText(const String&amp; text)
</ins><span class="cx"> {
</span><del>-    if (!checkPageStyleSheet(ec))
-        return false;
-    if (!m_parsedStyleSheet)
-        return false;
</del><ins>+    if (!m_pageStyleSheet)
+        return Exception { NOT_SUPPORTED_ERR };
</ins><span class="cx"> 
</span><span class="cx">     m_parsedStyleSheet-&gt;setText(text);
</span><span class="cx">     m_flatRules.clear();
</span><span class="cx"> 
</span><del>-    return true;
</del><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-String InspectorStyleSheet::ruleSelector(const InspectorCSSId&amp; id, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;String&gt; InspectorStyleSheet::ruleSelector(const InspectorCSSId&amp; id)
</ins><span class="cx"> {
</span><span class="cx">     CSSStyleRule* rule = ruleForId(id);
</span><del>-    if (!rule) {
-        ec = NOT_FOUND_ERR;
-        return emptyString();
-    }
</del><ins>+    if (!rule)
+        return Exception { NOT_FOUND_ERR };
</ins><span class="cx">     return rule-&gt;selectorText();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -644,28 +638,22 @@
</span><span class="cx">     return selectorList.isValid();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool InspectorStyleSheet::setRuleSelector(const InspectorCSSId&amp; id, const String&amp; selector, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; InspectorStyleSheet::setRuleSelector(const InspectorCSSId&amp; id, const String&amp; selector)
</ins><span class="cx"> {
</span><del>-    if (!checkPageStyleSheet(ec))
-        return false;
</del><ins>+    if (!m_pageStyleSheet)
+        return Exception { NOT_SUPPORTED_ERR };
</ins><span class="cx"> 
</span><span class="cx">     // If the selector is invalid, do not proceed any further.
</span><del>-    if (!isValidSelectorListString(selector, m_pageStyleSheet-&gt;ownerDocument())) {
-        ec = SYNTAX_ERR;
-        return false;
-    }
</del><ins>+    if (!isValidSelectorListString(selector, m_pageStyleSheet-&gt;ownerDocument()))
+        return Exception { SYNTAX_ERR };
</ins><span class="cx"> 
</span><span class="cx">     CSSStyleRule* rule = ruleForId(id);
</span><del>-    if (!rule) {
-        ec = NOT_FOUND_ERR;
-        return false;
-    }
</del><ins>+    if (!rule)
+        return Exception { NOT_FOUND_ERR };
</ins><span class="cx"> 
</span><span class="cx">     CSSStyleSheet* styleSheet = rule-&gt;parentStyleSheet();
</span><del>-    if (!styleSheet || !ensureParsedDataReady()) {
-        ec = NOT_FOUND_ERR;
-        return false;
-    }
</del><ins>+    if (!styleSheet || !ensureParsedDataReady())
+        return Exception { NOT_FOUND_ERR };
</ins><span class="cx"> 
</span><span class="cx">     // If the stylesheet is already mutated at this point, that must mean that our data has been modified
</span><span class="cx">     // elsewhere. This should never happen as ensureParsedDataReady would return false in that case.
</span><span class="lines">@@ -672,11 +660,9 @@
</span><span class="cx">     ASSERT(!styleSheetMutated());
</span><span class="cx"> 
</span><span class="cx">     rule-&gt;setSelectorText(selector);
</span><del>-    RefPtr&lt;CSSRuleSourceData&gt; sourceData = ruleSourceDataFor(&amp;rule-&gt;style());
-    if (!sourceData) {
-        ec = NOT_FOUND_ERR;
-        return false;
-    }
</del><ins>+    auto sourceData = ruleSourceDataFor(&amp;rule-&gt;style());
+    if (!sourceData)
+        return Exception { NOT_FOUND_ERR };
</ins><span class="cx"> 
</span><span class="cx">     String sheetText = m_parsedStyleSheet-&gt;text();
</span><span class="cx">     sheetText.replace(sourceData-&gt;ruleHeaderRange.start, sourceData-&gt;ruleHeaderRange.length(), selector);
</span><span class="lines">@@ -683,32 +669,27 @@
</span><span class="cx">     m_parsedStyleSheet-&gt;setText(sheetText);
</span><span class="cx">     m_pageStyleSheet-&gt;clearHadRulesMutation();
</span><span class="cx">     fireStyleSheetChanged();
</span><del>-    return true;
</del><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-CSSStyleRule* InspectorStyleSheet::addRule(const String&amp; selector, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;CSSStyleRule*&gt; InspectorStyleSheet::addRule(const String&amp; selector)
</ins><span class="cx"> {
</span><del>-    if (!checkPageStyleSheet(ec))
-        return nullptr;
-    if (!isValidSelectorListString(selector, m_pageStyleSheet-&gt;ownerDocument())) {
-        ec = SYNTAX_ERR;
-        return nullptr;
-    }
</del><ins>+    if (!m_pageStyleSheet)
+        return Exception { NOT_SUPPORTED_ERR };
</ins><span class="cx"> 
</span><del>-    String text;
-    bool success = getText(&amp;text);
-    if (!success) {
-        ec = NOT_FOUND_ERR;
-        return nullptr;
-    }
</del><ins>+    if (!isValidSelectorListString(selector, m_pageStyleSheet-&gt;ownerDocument()))
+        return Exception { SYNTAX_ERR };
+
+    auto text = this-&gt;text();
+    if (text.hasException())
+        return text.releaseException();
+
</ins><span class="cx">     StringBuilder styleSheetText;
</span><del>-    styleSheetText.append(text);
</del><ins>+    styleSheetText.append(text.releaseReturnValue());
</ins><span class="cx"> 
</span><span class="cx">     auto addRuleResult = m_pageStyleSheet-&gt;addRule(selector, emptyString(), Nullopt);
</span><del>-    if (addRuleResult.hasException()) {
-        ec = addRuleResult.releaseException().code();
-        return nullptr;
-    }
</del><ins>+    if (addRuleResult.hasException())
+        return addRuleResult.releaseException();
</ins><span class="cx">     ASSERT(m_pageStyleSheet-&gt;length());
</span><span class="cx">     unsigned lastRuleIndex = m_pageStyleSheet-&gt;length() - 1;
</span><span class="cx">     CSSRule* rule = m_pageStyleSheet-&gt;item(lastRuleIndex);
</span><span class="lines">@@ -719,8 +700,7 @@
</span><span class="cx">         // What we just added has to be a CSSStyleRule - we cannot handle other types of rules yet.
</span><span class="cx">         // If it is not a style rule, pretend we never touched the stylesheet.
</span><span class="cx">         m_pageStyleSheet-&gt;deleteRule(lastRuleIndex);
</span><del>-        ec = SYNTAX_ERR;
-        return nullptr;
</del><ins>+        return Exception { SYNTAX_ERR };
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (!styleSheetText.isEmpty())
</span><span class="lines">@@ -729,7 +709,7 @@
</span><span class="cx">     styleSheetText.append(selector);
</span><span class="cx">     styleSheetText.appendLiteral(&quot; {}&quot;);
</span><span class="cx">     // Using setText() as this operation changes the stylesheet rule set.
</span><del>-    setText(styleSheetText.toString(), ASSERT_NO_EXCEPTION);
</del><ins>+    setText(styleSheetText.toString());
</ins><span class="cx"> 
</span><span class="cx">     fireStyleSheetChanged();
</span><span class="cx"> 
</span><span class="lines">@@ -736,40 +716,33 @@
</span><span class="cx">     return styleRule;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool InspectorStyleSheet::deleteRule(const InspectorCSSId&amp; id, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; InspectorStyleSheet::deleteRule(const InspectorCSSId&amp; id)
</ins><span class="cx"> {
</span><del>-    if (!checkPageStyleSheet(ec))
-        return false;
</del><ins>+    if (!m_pageStyleSheet)
+        return Exception { NOT_SUPPORTED_ERR };
+
</ins><span class="cx">     RefPtr&lt;CSSStyleRule&gt; rule = ruleForId(id);
</span><del>-    if (!rule) {
-        ec = NOT_FOUND_ERR;
-        return false;
-    }
</del><ins>+    if (!rule)
+        return Exception { NOT_FOUND_ERR };
</ins><span class="cx">     CSSStyleSheet* styleSheet = rule-&gt;parentStyleSheet();
</span><del>-    if (!styleSheet || !ensureParsedDataReady()) {
-        ec = NOT_FOUND_ERR;
-        return false;
-    }
</del><ins>+    if (!styleSheet || !ensureParsedDataReady())
+        return Exception { NOT_FOUND_ERR };
</ins><span class="cx"> 
</span><del>-    RefPtr&lt;CSSRuleSourceData&gt; sourceData = ruleSourceDataFor(&amp;rule-&gt;style());
-    if (!sourceData) {
-        ec = NOT_FOUND_ERR;
-        return false;
-    }
</del><ins>+    auto sourceData = ruleSourceDataFor(&amp;rule-&gt;style());
+    if (!sourceData)
+        return Exception { NOT_FOUND_ERR };
</ins><span class="cx"> 
</span><span class="cx">     auto deleteRuleResult = styleSheet-&gt;deleteRule(id.ordinal());
</span><del>-    // |rule| MAY NOT be addressed after this line!
</del><ins>+    if (deleteRuleResult.hasException())
+        return deleteRuleResult.releaseException();
</ins><span class="cx"> 
</span><del>-    if (deleteRuleResult.hasException()) {
-        ec = deleteRuleResult.releaseException().code();
-        return false;
-    }
</del><ins>+    // |rule| MAY NOT be addressed after this!
</ins><span class="cx"> 
</span><span class="cx">     String sheetText = m_parsedStyleSheet-&gt;text();
</span><span class="cx">     sheetText.remove(sourceData-&gt;ruleHeaderRange.start, sourceData-&gt;ruleBodyRange.end - sourceData-&gt;ruleHeaderRange.start + 1);
</span><del>-    setText(sheetText, ASSERT_NO_EXCEPTION);
</del><ins>+    setText(sheetText);
</ins><span class="cx">     fireStyleSheetChanged();
</span><del>-    return true;
</del><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> CSSStyleRule* InspectorStyleSheet::ruleForId(const InspectorCSSId&amp; id) const
</span><span class="lines">@@ -795,10 +768,9 @@
</span><span class="cx">         .setRules(buildArrayForRuleList(cssRuleList.get()))
</span><span class="cx">         .release();
</span><span class="cx"> 
</span><del>-    String styleSheetText;
-    bool success = getText(&amp;styleSheetText);
-    if (success)
-        result-&gt;setText(styleSheetText);
</del><ins>+    auto styleSheetText = text();
+    if (!styleSheetText.hasException())
+        result-&gt;setText(styleSheetText.releaseReturnValue());
</ins><span class="cx"> 
</span><span class="cx">     return WTFMove(result);
</span><span class="cx"> }
</span><span class="lines">@@ -981,11 +953,10 @@
</span><span class="cx"> 
</span><span class="cx">     // Style text cannot be retrieved without stylesheet, so set cssText here.
</span><span class="cx">     if (sourceData) {
</span><del>-        String sheetText;
-        bool success = getText(&amp;sheetText);
-        if (success) {
-            const SourceRange&amp; bodyRange = sourceData-&gt;ruleBodyRange;
-            result-&gt;setCssText(sheetText.substring(bodyRange.start, bodyRange.end - bodyRange.start));
</del><ins>+        auto sheetText = text();
+        if (!sheetText.hasException()) {
+            auto&amp; bodyRange = sourceData-&gt;ruleBodyRange;
+            result-&gt;setCssText(sheetText.releaseReturnValue().substring(bodyRange.start, bodyRange.end - bodyRange.start));
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -992,29 +963,30 @@
</span><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool InspectorStyleSheet::setStyleText(const InspectorCSSId&amp; id, const String&amp; text, String* oldText, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; InspectorStyleSheet::setStyleText(const InspectorCSSId&amp; id, const String&amp; text, String* oldText)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;InspectorStyle&gt; inspectorStyle = inspectorStyleForId(id);
-    if (!inspectorStyle) {
-        ec = NOT_FOUND_ERR;
-        return false;
</del><ins>+    auto inspectorStyle = inspectorStyleForId(id);
+    if (!inspectorStyle)
+        return Exception { NOT_FOUND_ERR };
+
+    if (oldText) {
+        auto result = inspectorStyle-&gt;text();
+        if (result.hasException())
+            return result.releaseException();
+        *oldText = result.releaseReturnValue();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (oldText &amp;&amp; !inspectorStyle-&gt;getText(oldText))
-        return false;
-
-    bool success = inspectorStyle-&gt;setText(text, ec);
-    if (success)
</del><ins>+    auto result = inspectorStyle-&gt;setText(text);
+    if (!result.hasException())
</ins><span class="cx">         fireStyleSheetChanged();
</span><del>-    return success;
</del><ins>+    return result;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool InspectorStyleSheet::getText(String* result) const
</del><ins>+ExceptionOr&lt;String&gt; InspectorStyleSheet::text() const
</ins><span class="cx"> {
</span><span class="cx">     if (!ensureText())
</span><del>-        return false;
-    *result = m_parsedStyleSheet-&gt;text();
-    return true;
</del><ins>+        return Exception { NOT_FOUND_ERR };
+    return String { m_parsedStyleSheet-&gt;text() };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> CSSStyleDeclaration* InspectorStyleSheet::styleForId(const InspectorCSSId&amp; id) const
</span><span class="lines">@@ -1079,15 +1051,6 @@
</span><span class="cx">     return UINT_MAX;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool InspectorStyleSheet::checkPageStyleSheet(ExceptionCode&amp; ec) const
-{
-    if (!m_pageStyleSheet) {
-        ec = NOT_SUPPORTED_ERR;
-        return false;
-    }
-    return true;
-}
-
</del><span class="cx"> bool InspectorStyleSheet::styleSheetMutated() const
</span><span class="cx"> {
</span><span class="cx">     return m_pageStyleSheet &amp;&amp; m_pageStyleSheet-&gt;hadRulesMutation();
</span><span class="lines">@@ -1137,30 +1100,28 @@
</span><span class="cx">         collectFlatRules(asCSSRuleList(pageStyleSheet()), &amp;m_flatRules);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool InspectorStyleSheet::setStyleText(CSSStyleDeclaration* style, const String&amp; text, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; InspectorStyleSheet::setStyleText(CSSStyleDeclaration* style, const String&amp; text)
</ins><span class="cx"> {
</span><span class="cx">     if (!m_pageStyleSheet)
</span><del>-        return false;
</del><ins>+        return Exception { NOT_FOUND_ERR };
</ins><span class="cx">     if (!ensureParsedDataReady())
</span><del>-        return false;
</del><ins>+        return Exception { NOT_FOUND_ERR };
</ins><span class="cx"> 
</span><span class="cx">     String patchedStyleSheetText;
</span><span class="cx">     bool success = styleSheetTextWithChangedStyle(style, text, &amp;patchedStyleSheetText);
</span><span class="cx">     if (!success)
</span><del>-        return false;
</del><ins>+        return Exception { NOT_FOUND_ERR };
</ins><span class="cx"> 
</span><span class="cx">     InspectorCSSId id = ruleOrStyleId(style);
</span><span class="cx">     if (id.isEmpty())
</span><del>-        return false;
</del><ins>+        return Exception { NOT_FOUND_ERR };
</ins><span class="cx"> 
</span><span class="cx">     auto setCssTextResult = style-&gt;setCssText(text);
</span><del>-    if (setCssTextResult.hasException()) {
-        ec = setCssTextResult.releaseException().code();
-        return false;
-    }
</del><ins>+    if (setCssTextResult.hasException())
+        return setCssTextResult.releaseException();
</ins><span class="cx"> 
</span><span class="cx">     m_parsedStyleSheet-&gt;setText(patchedStyleSheetText);
</span><del>-    return true;
</del><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool InspectorStyleSheet::styleSheetTextWithChangedStyle(CSSStyleDeclaration* style, const String&amp; newStyleText, String* result)
</span><span class="lines">@@ -1285,17 +1246,16 @@
</span><span class="cx">     m_ruleSourceData = nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool InspectorStyleSheetForInlineStyle::getText(String* result) const
</del><ins>+ExceptionOr&lt;String&gt; InspectorStyleSheetForInlineStyle::text() const
</ins><span class="cx"> {
</span><span class="cx">     if (!m_isStyleTextValid) {
</span><span class="cx">         m_styleText = elementStyleText();
</span><span class="cx">         m_isStyleTextValid = true;
</span><span class="cx">     }
</span><del>-    *result = m_styleText;
-    return true;
</del><ins>+    return String { m_styleText };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool InspectorStyleSheetForInlineStyle::setStyleText(CSSStyleDeclaration* style, const String&amp; text, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; InspectorStyleSheetForInlineStyle::setStyleText(CSSStyleDeclaration* style, const String&amp; text)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT_UNUSED(style, style == inlineStyle());
</span><span class="cx"> 
</span><span class="lines">@@ -1308,8 +1268,7 @@
</span><span class="cx">     m_isStyleTextValid = true;
</span><span class="cx">     m_ruleSourceData = nullptr;
</span><span class="cx"> 
</span><del>-    ec = 0;
-    return true;
</del><ins>+    return { };
</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="trunkSourceWebCoreinspectorInspectorStyleSheeth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorStyleSheet.h (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorStyleSheet.h        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/inspector/InspectorStyleSheet.h        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -26,13 +26,10 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;CSSPropertySourceData.h&quot;
</span><span class="cx"> #include &quot;CSSStyleDeclaration.h&quot;
</span><del>-#include &quot;ExceptionCode.h&quot;
</del><span class="cx"> #include &lt;inspector/InspectorProtocolObjects.h&gt;
</span><span class="cx"> #include &lt;inspector/InspectorValues.h&gt;
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><del>-#include &lt;wtf/RefPtr.h&gt;
</del><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><del>-#include &lt;wtf/text/WTFString.h&gt;
</del><span class="cx"> 
</span><span class="cx"> class ParsedStyleSheet;
</span><span class="cx"> 
</span><span class="lines">@@ -132,8 +129,8 @@
</span><span class="cx">     RefPtr&lt;Inspector::Protocol::CSS::CSSStyle&gt; buildObjectForStyle() const;
</span><span class="cx">     Ref&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::CSS::CSSComputedStyleProperty&gt;&gt; buildArrayForComputedStyle() const;
</span><span class="cx"> 
</span><del>-    bool getText(String* result) const;
-    bool setText(const String&amp;, ExceptionCode&amp;);
</del><ins>+    ExceptionOr&lt;String&gt; text() const;
+    ExceptionOr&lt;void&gt; setText(const String&amp;);
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     InspectorStyle(const InspectorCSSId&amp; styleId, RefPtr&lt;CSSStyleDeclaration&gt;&amp;&amp;, InspectorStyleSheet* parentStyleSheet);
</span><span class="lines">@@ -169,19 +166,19 @@
</span><span class="cx">     String finalURL() const;
</span><span class="cx">     CSSStyleSheet* pageStyleSheet() const { return m_pageStyleSheet.get(); }
</span><span class="cx">     void reparseStyleSheet(const String&amp;);
</span><del>-    bool setText(const String&amp;, ExceptionCode&amp;);
-    String ruleSelector(const InspectorCSSId&amp;, ExceptionCode&amp;);
-    bool setRuleSelector(const InspectorCSSId&amp;, const String&amp; selector, ExceptionCode&amp;);
-    CSSStyleRule* addRule(const String&amp; selector, ExceptionCode&amp;);
-    bool deleteRule(const InspectorCSSId&amp;, ExceptionCode&amp;);
</del><ins>+    ExceptionOr&lt;void&gt; setText(const String&amp;);
+    ExceptionOr&lt;String&gt; ruleSelector(const InspectorCSSId&amp;);
+    ExceptionOr&lt;void&gt; setRuleSelector(const InspectorCSSId&amp;, const String&amp; selector);
+    ExceptionOr&lt;CSSStyleRule*&gt; addRule(const String&amp; selector);
+    ExceptionOr&lt;void&gt; deleteRule(const InspectorCSSId&amp;);
</ins><span class="cx">     CSSStyleRule* ruleForId(const InspectorCSSId&amp;) const;
</span><span class="cx">     RefPtr&lt;Inspector::Protocol::CSS::CSSStyleSheetBody&gt; buildObjectForStyleSheet();
</span><span class="cx">     RefPtr&lt;Inspector::Protocol::CSS::CSSStyleSheetHeader&gt; buildObjectForStyleSheetInfo();
</span><span class="cx">     RefPtr&lt;Inspector::Protocol::CSS::CSSRule&gt; buildObjectForRule(CSSStyleRule*, Element*);
</span><span class="cx">     RefPtr&lt;Inspector::Protocol::CSS::CSSStyle&gt; buildObjectForStyle(CSSStyleDeclaration*);
</span><del>-    bool setStyleText(const InspectorCSSId&amp;, const String&amp; text, String* oldText, ExceptionCode&amp;);
</del><ins>+    ExceptionOr&lt;void&gt; setStyleText(const InspectorCSSId&amp;, const String&amp; text, String* oldText);
</ins><span class="cx"> 
</span><del>-    virtual bool getText(String* result) const;
</del><ins>+    virtual ExceptionOr&lt;String&gt; text() const;
</ins><span class="cx">     virtual CSSStyleDeclaration* styleForId(const InspectorCSSId&amp;) const;
</span><span class="cx">     void fireStyleSheetChanged();
</span><span class="cx"> 
</span><span class="lines">@@ -200,7 +197,7 @@
</span><span class="cx">     virtual RefPtr&lt;InspectorStyle&gt; inspectorStyleForId(const InspectorCSSId&amp;);
</span><span class="cx"> 
</span><span class="cx">     // Also accessed by friend class InspectorStyle.
</span><del>-    virtual bool setStyleText(CSSStyleDeclaration*, const String&amp;, ExceptionCode&amp;);
</del><ins>+    virtual ExceptionOr&lt;void&gt; setStyleText(CSSStyleDeclaration*, const String&amp;);
</ins><span class="cx">     virtual std::unique_ptr&lt;Vector&lt;size_t&gt;&gt; lineEndings() const;
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="lines">@@ -208,7 +205,6 @@
</span><span class="cx">     friend class InspectorStyle;
</span><span class="cx"> 
</span><span class="cx">     static void collectFlatRules(RefPtr&lt;CSSRuleList&gt;&amp;&amp;, CSSStyleRuleVector* result);
</span><del>-    bool checkPageStyleSheet(ExceptionCode&amp;) const;
</del><span class="cx">     bool styleSheetMutated() const;
</span><span class="cx">     bool ensureText() const;
</span><span class="cx">     bool ensureSourceData();
</span><span class="lines">@@ -236,21 +232,21 @@
</span><span class="cx">     static Ref&lt;InspectorStyleSheetForInlineStyle&gt; create(InspectorPageAgent*, const String&amp; id, RefPtr&lt;Element&gt;&amp;&amp;, Inspector::Protocol::CSS::StyleSheetOrigin, Listener*);
</span><span class="cx"> 
</span><span class="cx">     void didModifyElementAttribute();
</span><del>-    bool getText(String* result) const override;
-    CSSStyleDeclaration* styleForId(const InspectorCSSId&amp; id) const override { ASSERT_UNUSED(id, !id.ordinal()); return inlineStyle(); }
</del><ins>+    ExceptionOr&lt;String&gt; text() const final;
+    CSSStyleDeclaration* styleForId(const InspectorCSSId&amp; id) const final { ASSERT_UNUSED(id, !id.ordinal()); return inlineStyle(); }
</ins><span class="cx"> 
</span><span class="cx"> protected:
</span><span class="cx">     InspectorStyleSheetForInlineStyle(InspectorPageAgent*, const String&amp; id, RefPtr&lt;Element&gt;&amp;&amp;, Inspector::Protocol::CSS::StyleSheetOrigin, Listener*);
</span><span class="cx"> 
</span><del>-    Document* ownerDocument() const override;
-    RefPtr&lt;CSSRuleSourceData&gt; ruleSourceDataFor(CSSStyleDeclaration* style) const override { ASSERT_UNUSED(style, style == inlineStyle()); return m_ruleSourceData; }
-    unsigned ruleIndexByStyle(CSSStyleDeclaration*) const override { return 0; }
-    bool ensureParsedDataReady() override;
-    RefPtr&lt;InspectorStyle&gt; inspectorStyleForId(const InspectorCSSId&amp;) override;
</del><ins>+    Document* ownerDocument() const final;
+    RefPtr&lt;CSSRuleSourceData&gt; ruleSourceDataFor(CSSStyleDeclaration* style) const final { ASSERT_UNUSED(style, style == inlineStyle()); return m_ruleSourceData; }
+    unsigned ruleIndexByStyle(CSSStyleDeclaration*) const final { return 0; }
+    bool ensureParsedDataReady() final;
+    RefPtr&lt;InspectorStyle&gt; inspectorStyleForId(const InspectorCSSId&amp;) final;
</ins><span class="cx"> 
</span><span class="cx">     // Also accessed by friend class InspectorStyle.
</span><del>-    bool setStyleText(CSSStyleDeclaration*, const String&amp;, ExceptionCode&amp;) override;
-    std::unique_ptr&lt;Vector&lt;size_t&gt;&gt; lineEndings() const override;
</del><ins>+    ExceptionOr&lt;void&gt; setStyleText(CSSStyleDeclaration*, const String&amp;) final;
+    std::unique_ptr&lt;Vector&lt;size_t&gt;&gt; lineEndings() const final;
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     CSSStyleDeclaration* inlineStyle() const;
</span></span></pre></div>
<a id="trunkSourceWebCorepageDragControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/DragController.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/DragController.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/page/DragController.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -148,9 +148,9 @@
</span><span class="cx">                     if (title.isEmpty())
</span><span class="cx">                         title = url;
</span><span class="cx">                 }
</span><del>-                anchor-&gt;appendChild(document.createTextNode(title), IGNORE_EXCEPTION);
</del><ins>+                anchor-&gt;appendChild(document.createTextNode(title));
</ins><span class="cx">                 auto fragment = document.createDocumentFragment();
</span><del>-                fragment-&gt;appendChild(anchor, IGNORE_EXCEPTION);
</del><ins>+                fragment-&gt;appendChild(anchor);
</ins><span class="cx">                 return WTFMove(fragment);
</span><span class="cx">             }
</span><span class="cx">         }
</span></span></pre></div>
<a id="trunkSourceWebCorepageiosFrameIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/ios/FrameIOS.mm (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/ios/FrameIOS.mm        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/page/ios/FrameIOS.mm        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -91,9 +91,8 @@
</span><span class="cx">     if (!style.isEmpty())
</span><span class="cx">         body-&gt;setAttribute(HTMLNames::styleAttr, style);
</span><span class="cx"> 
</span><del>-    ExceptionCode ec;
-    rootElement-&gt;appendChild(body, ec);
-    document-&gt;appendChild(rootElement, ec);
</del><ins>+    rootElement-&gt;appendChild(body);
+    document-&gt;appendChild(rootElement);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> const ViewportArguments&amp; Frame::viewportArguments() const
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGTRefElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGTRefElement.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGTRefElement.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/svg/SVGTRefElement.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -146,10 +146,10 @@
</span><span class="cx">     ASSERT(shadowRoot());
</span><span class="cx">     ShadowRoot* root = shadowRoot();
</span><span class="cx">     if (!root-&gt;firstChild())
</span><del>-        root-&gt;appendChild(Text::create(document(), textContent), ASSERT_NO_EXCEPTION);
</del><ins>+        root-&gt;appendChild(Text::create(document(), textContent));
</ins><span class="cx">     else {
</span><span class="cx">         ASSERT(root-&gt;firstChild()-&gt;isTextNode());
</span><del>-        root-&gt;firstChild()-&gt;setTextContent(textContent, ASSERT_NO_EXCEPTION);
</del><ins>+        root-&gt;firstChild()-&gt;setTextContent(textContent);
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -163,7 +163,7 @@
</span><span class="cx">     ASSERT(shadowRoot());
</span><span class="cx">     Node* container = shadowRoot()-&gt;firstChild();
</span><span class="cx">     if (container)
</span><del>-        container-&gt;setTextContent(emptyContent, IGNORE_EXCEPTION);
</del><ins>+        container-&gt;setTextContent(emptyContent);
</ins><span class="cx"> 
</span><span class="cx">     if (!inDocument())
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXMLTreeViewercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XMLTreeViewer.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XMLTreeViewer.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebCore/xml/XMLTreeViewer.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -62,7 +62,7 @@
</span><span class="cx"> 
</span><span class="cx">     String cssString = StringImpl::createWithoutCopying(XMLViewer_css, sizeof(XMLViewer_css));
</span><span class="cx">     auto text = m_document.createTextNode(cssString);
</span><del>-    m_document.getElementById(String(ASCIILiteral(&quot;xml-viewer-style&quot;)))-&gt;appendChild(text, IGNORE_EXCEPTION);
</del><ins>+    m_document.getElementById(String(ASCIILiteral(&quot;xml-viewer-style&quot;)))-&gt;appendChild(text);
</ins><span class="cx">     m_document.styleScope().didChangeActiveStyleSheetCandidates();
</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 (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebKit/mac/ChangeLog        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -1,3 +1,23 @@
</span><ins>+2016-11-11  Darin Adler  &lt;darin@apple.com&gt;
+
+        Move Node from ExceptionCode to ExceptionOr
+        https://bugs.webkit.org/show_bug.cgi?id=164515
+
+        Reviewed by Sam Weinig.
+
+        * DOM/DOMHTMLSelectElement.mm:
+        (-[DOMHTMLSelectElement remove:]): Call remove instead of removeByIndex
+        now that it was renamed.
+        * DOM/DOMNode.mm:
+        (-[DOMNode setNodeValue:]): Updated exception handling.
+        (-[DOMNode setPrefix:]): Ditto.
+        (-[DOMNode setTextContent:]): Ditto.
+        (-[DOMNode insertBefore:refChild:]): Ditto.
+        (-[DOMNode replaceChild:oldChild:]): Ditto.
+        (-[DOMNode removeChild:]): Ditto.
+        (-[DOMNode appendChild:]): Ditto.
+        (-[DOMNode cloneNode:]): Ditto.
+
</ins><span class="cx"> 2016-11-11  Beth Dakin  &lt;bdakin@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Get touch bar code building for open source builds
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMHTMLSelectElementmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMHTMLSelectElement.mm (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMHTMLSelectElement.mm        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebKit/mac/DOM/DOMHTMLSelectElement.mm        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -202,7 +202,7 @@
</span><span class="cx"> - (void)remove:(int)index
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    IMPL-&gt;removeByIndex(index);
</del><ins>+    IMPL-&gt;remove(index);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMNodemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMNode.mm (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMNode.mm        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebKit/mac/DOM/DOMNode.mm        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -97,9 +97,7 @@
</span><span class="cx"> - (void)setNodeValue:(NSString *)newNodeValue
</span><span class="cx"> {
</span><span class="cx">     JSMainThreadNullState state;
</span><del>-    ExceptionCode ec = 0;
-    unwrap(*self).setNodeValue(newNodeValue, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(unwrap(*self).setNodeValue(newNodeValue));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (unsigned short)nodeType
</span><span class="lines">@@ -165,9 +163,7 @@
</span><span class="cx"> - (void)setPrefix:(NSString *)newPrefix
</span><span class="cx"> {
</span><span class="cx">     JSMainThreadNullState state;
</span><del>-    ExceptionCode ec = 0;
-    unwrap(*self).setPrefix(newPrefix, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(unwrap(*self).setPrefix(newPrefix));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (NSString *)localName
</span><span class="lines">@@ -197,9 +193,7 @@
</span><span class="cx"> - (void)setTextContent:(NSString *)newTextContent
</span><span class="cx"> {
</span><span class="cx">     JSMainThreadNullState state;
</span><del>-    ExceptionCode ec = 0;
-    unwrap(*self).setTextContent(newTextContent, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(unwrap(*self).setTextContent(newTextContent));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (BOOL)isConnected
</span><span class="lines">@@ -225,11 +219,8 @@
</span><span class="cx">     JSMainThreadNullState state;
</span><span class="cx">     if (!newChild)
</span><span class="cx">         raiseTypeErrorException();
</span><del>-    ExceptionCode ec = 0;
-    if (unwrap(*self).insertBefore(*core(newChild), core(refChild), ec))
-        return newChild;
-    raiseOnDOMError(ec);
-    return nil;
</del><ins>+    raiseOnDOMError(unwrap(*self).insertBefore(*core(newChild), core(refChild)));
+    return newChild;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMNode *)replaceChild:(DOMNode *)newChild oldChild:(DOMNode *)oldChild
</span><span class="lines">@@ -239,11 +230,8 @@
</span><span class="cx">         raiseTypeErrorException();
</span><span class="cx">     if (!oldChild)
</span><span class="cx">         raiseTypeErrorException();
</span><del>-    ExceptionCode ec = 0;
-    if (unwrap(*self).replaceChild(*core(newChild), *core(oldChild), ec))
-        return oldChild;
-    raiseOnDOMError(ec);
-    return nil;
</del><ins>+    raiseOnDOMError(unwrap(*self).replaceChild(*core(newChild), *core(oldChild)));
+    return oldChild;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMNode *)removeChild:(DOMNode *)oldChild
</span><span class="lines">@@ -251,11 +239,8 @@
</span><span class="cx">     JSMainThreadNullState state;
</span><span class="cx">     if (!oldChild)
</span><span class="cx">         raiseTypeErrorException();
</span><del>-    ExceptionCode ec = 0;
-    if (unwrap(*self).removeChild(*core(oldChild), ec))
-        return oldChild;
-    raiseOnDOMError(ec);
-    return nil;
</del><ins>+    raiseOnDOMError(unwrap(*self).removeChild(*core(oldChild)));
+    return oldChild;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMNode *)appendChild:(DOMNode *)newChild
</span><span class="lines">@@ -263,11 +248,8 @@
</span><span class="cx">     JSMainThreadNullState state;
</span><span class="cx">     if (!newChild)
</span><span class="cx">         raiseTypeErrorException();
</span><del>-    ExceptionCode ec = 0;
-    if (unwrap(*self).appendChild(*core(newChild), ec))
-        return newChild;
-    raiseOnDOMError(ec);
-    return nil;
</del><ins>+    raiseOnDOMError(unwrap(*self).appendChild(*core(newChild)));
+    return newChild;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (BOOL)hasChildNodes
</span><span class="lines">@@ -279,10 +261,7 @@
</span><span class="cx"> - (DOMNode *)cloneNode:(BOOL)deep
</span><span class="cx"> {
</span><span class="cx">     JSMainThreadNullState state;
</span><del>-    ExceptionCode ec = 0;
-    DOMNode *result = kit(unwrap(*self).cloneNodeForBindings(deep, ec).get());
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return kit(raiseOnDOMError(unwrap(*self).cloneNodeForBindings(deep)).ptr());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)normalize
</span></span></pre></div>
<a id="trunkSourceWebKitwinChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/ChangeLog (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/ChangeLog        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebKit/win/ChangeLog        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -1,3 +1,14 @@
</span><ins>+2016-11-11  Darin Adler  &lt;darin@apple.com&gt;
+
+        Move Node from ExceptionCode to ExceptionOr
+        https://bugs.webkit.org/show_bug.cgi?id=164515
+
+        Reviewed by Sam Weinig.
+
+        * DOMCoreClasses.cpp:
+        (DOMNode::insertBefore): Update exception handling.
+        (DOMNode::removeChild): Ditto.
+
</ins><span class="cx"> 2016-10-14  Carlos Garcia Campos  &lt;cgarcia@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         MemoryPressureHandler shouldn't know how to release WebCore memory
</span></span></pre></div>
<a id="trunkSourceWebKitwinDOMCoreClassescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/DOMCoreClasses.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/DOMCoreClasses.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebKit/win/DOMCoreClasses.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -250,8 +250,7 @@
</span><span class="cx"> 
</span><span class="cx">     COMPtr&lt;DOMNode&gt; refChildNode(Query, refChild);
</span><span class="cx"> 
</span><del>-    ExceptionCode ec;
-    if (!m_node-&gt;insertBefore(*newChildNode-&gt;node(), refChildNode ? refChildNode-&gt;node() : nullptr, ec))
</del><ins>+    if (m_node-&gt;insertBefore(*newChildNode-&gt;node(), refChildNode ? refChildNode-&gt;node() : nullptr).hasException())
</ins><span class="cx">         return E_FAIL;
</span><span class="cx"> 
</span><span class="cx">     *result = newChild;
</span><span class="lines">@@ -282,8 +281,7 @@
</span><span class="cx">     if (!oldChildNode)
</span><span class="cx">         return E_FAIL;
</span><span class="cx"> 
</span><del>-    ExceptionCode ec;
-    if (!m_node-&gt;removeChild(*oldChildNode-&gt;node(), ec))
</del><ins>+    if (m_node-&gt;removeChild(*oldChildNode-&gt;node()).hasException())
</ins><span class="cx">         return E_FAIL;
</span><span class="cx"> 
</span><span class="cx">     *result = oldChild;
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebKit2/ChangeLog        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -1,3 +1,30 @@
</span><ins>+2016-11-11  Darin Adler  &lt;darin@apple.com&gt;
+
+        Move Node from ExceptionCode to ExceptionOr
+        https://bugs.webkit.org/show_bug.cgi?id=164515
+
+        Reviewed by Sam Weinig.
+
+        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLSelectElement.cpp:
+        (webkit_dom_html_select_element_remove): Updated exception handling.
+        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNode.cpp:
+        (webkit_dom_node_insert_before): Ditto.
+        (webkit_dom_node_replace_child): Ditto.
+        (webkit_dom_node_remove_child): Ditto.
+        (webkit_dom_node_append_child): Ditto.
+        (webkit_dom_node_clone_node_with_error): Ditto.
+        (webkit_dom_node_set_node_value): Ditto.
+        (webkit_dom_node_set_text_content): Ditto.
+        * WebProcess/InjectedBundle/API/mac/WKDOMNode.mm:
+        (-[WKDOMNode insertNode:before:]): Ditto.
+        (-[WKDOMNode appendChild:]): Ditto.
+        (-[WKDOMNode removeChild:]): Ditto.
+
+        * WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm:
+        (WebKit::PDFPlugin::PDFPlugin): Removed unneeded ASSERT_NO_EXCEPTION.
+        * WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm:
+        (WebKit::PDFPluginChoiceAnnotation::createAnnotationElement): Ditto.
+
</ins><span class="cx"> 2016-11-11  Megan Gardner  &lt;megan_gardner@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [Cocoa] Support wide gamut for Drag Image UI
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMDeprecatedcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDeprecated.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDeprecated.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDeprecated.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -236,10 +236,9 @@
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="cx">     WebCore::Node* item = WebKit::core(self);
</span><span class="cx">     WTF::String convertedValue = WTF::String::fromUTF8(value);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    item-&gt;setPrefix(convertedValue, ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;setPrefix(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="trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMHTMLSelectElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLSelectElement.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLSelectElement.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLSelectElement.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -383,7 +383,7 @@
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="cx">     g_return_if_fail(WEBKIT_DOM_IS_HTML_SELECT_ELEMENT(self));
</span><span class="cx">     WebCore::HTMLSelectElement* item = WebKit::core(self);
</span><del>-    item-&gt;removeByIndex(index);
</del><ins>+    item-&gt;remove(index);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> gboolean webkit_dom_html_select_element_get_autofocus(WebKitDOMHTMLSelectElement* self)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNode.cpp (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNode.cpp        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNode.cpp        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -370,14 +370,13 @@
</span><span class="cx">     WebCore::Node* item = WebKit::core(self);
</span><span class="cx">     WebCore::Node* convertedNewChild = WebKit::core(newChild);
</span><span class="cx">     WebCore::Node* convertedRefChild = WebKit::core(refChild);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    bool ok = item-&gt;insertBefore(*convertedNewChild, convertedRefChild, ec);
-    if (ok)
-        return WebKit::kit(convertedNewChild);
-
-    WebCore::ExceptionCodeDescription ecdesc(ec);
-    g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
-    return 0;
</del><ins>+    auto result = item-&gt;insertBefore(*convertedNewChild, convertedRefChild);
+    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 newChild;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebKitDOMNode* webkit_dom_node_replace_child(WebKitDOMNode* self, WebKitDOMNode* newChild, WebKitDOMNode* oldChild, GError** error)
</span><span class="lines">@@ -390,14 +389,13 @@
</span><span class="cx">     WebCore::Node* item = WebKit::core(self);
</span><span class="cx">     WebCore::Node* convertedNewChild = WebKit::core(newChild);
</span><span class="cx">     WebCore::Node* convertedOldChild = WebKit::core(oldChild);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    bool ok = item-&gt;replaceChild(*convertedNewChild, *convertedOldChild, ec);
-    if (ok)
-        return WebKit::kit(convertedOldChild);
-
-    WebCore::ExceptionCodeDescription ecdesc(ec);
-    g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
-    return 0;
</del><ins>+    auto result = item-&gt;replaceChild(*convertedNewChild, *convertedOldChild);
+    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 oldChild;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebKitDOMNode* webkit_dom_node_remove_child(WebKitDOMNode* self, WebKitDOMNode* oldChild, GError** error)
</span><span class="lines">@@ -408,14 +406,13 @@
</span><span class="cx">     g_return_val_if_fail(!error || !*error, 0);
</span><span class="cx">     WebCore::Node* item = WebKit::core(self);
</span><span class="cx">     WebCore::Node* convertedOldChild = WebKit::core(oldChild);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    bool ok = item-&gt;removeChild(*convertedOldChild, ec);
-    if (ok)
-        return WebKit::kit(convertedOldChild);
-
-    WebCore::ExceptionCodeDescription ecdesc(ec);
-    g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
-    return 0;
</del><ins>+    auto result = item-&gt;removeChild(*convertedOldChild);
+    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 oldChild;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebKitDOMNode* webkit_dom_node_append_child(WebKitDOMNode* self, WebKitDOMNode* newChild, GError** error)
</span><span class="lines">@@ -426,14 +423,13 @@
</span><span class="cx">     g_return_val_if_fail(!error || !*error, 0);
</span><span class="cx">     WebCore::Node* item = WebKit::core(self);
</span><span class="cx">     WebCore::Node* convertedNewChild = WebKit::core(newChild);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    bool ok = item-&gt;appendChild(*convertedNewChild, ec);
-    if (ok)
-        return WebKit::kit(convertedNewChild);
-
-    WebCore::ExceptionCodeDescription ecdesc(ec);
-    g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
-    return 0;
</del><ins>+    auto result = item-&gt;appendChild(*convertedNewChild);
+    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 newChild;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> gboolean webkit_dom_node_has_child_nodes(WebKitDOMNode* self)
</span><span class="lines">@@ -451,13 +447,13 @@
</span><span class="cx">     g_return_val_if_fail(WEBKIT_DOM_IS_NODE(self), 0);
</span><span class="cx">     g_return_val_if_fail(!error || !*error, 0);
</span><span class="cx">     WebCore::Node* item = WebKit::core(self);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    RefPtr&lt;WebCore::Node&gt; gobjectResult = WTF::getPtr(item-&gt;cloneNodeForBindings(deep, ec));
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;cloneNodeForBindings(deep);
+    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"> void webkit_dom_node_normalize(WebKitDOMNode* self)
</span><span class="lines">@@ -581,10 +577,9 @@
</span><span class="cx">     g_return_if_fail(!error || !*error);
</span><span class="cx">     WebCore::Node* item = WebKit::core(self);
</span><span class="cx">     WTF::String convertedValue = WTF::String::fromUTF8(value);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    item-&gt;setNodeValue(convertedValue, ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;setNodeValue(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">@@ -687,10 +682,9 @@
</span><span class="cx">     g_return_if_fail(!error || !*error);
</span><span class="cx">     WebCore::Node* item = WebKit::core(self);
</span><span class="cx">     WTF::String convertedValue = WTF::String::fromUTF8(value);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    item-&gt;setTextContent(convertedValue, ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;setTextContent(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="trunkSourceWebKit2WebProcessInjectedBundleAPImacWKDOMNodemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMNode.mm (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMNode.mm        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMNode.mm        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -58,9 +58,7 @@
</span><span class="cx">     if (!node)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    // FIXME: Do something about the exception.
-    WebCore::ExceptionCode ec;
-    _impl-&gt;insertBefore(*WebKit::toWebCoreNode(node), WebKit::toWebCoreNode(refNode), ec);
</del><ins>+    _impl-&gt;insertBefore(*WebKit::toWebCoreNode(node), WebKit::toWebCoreNode(refNode));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)appendChild:(WKDOMNode *)node
</span><span class="lines">@@ -68,9 +66,7 @@
</span><span class="cx">     if (!node)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    // FIXME: Do something about the exception.
-    WebCore::ExceptionCode ec;
-    _impl-&gt;appendChild(*WebKit::toWebCoreNode(node), ec);
</del><ins>+    _impl-&gt;appendChild(*WebKit::toWebCoreNode(node));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)removeChild:(WKDOMNode *)node
</span><span class="lines">@@ -78,9 +74,7 @@
</span><span class="cx">     if (!node)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    // FIXME: Do something about the exception.
-    WebCore::ExceptionCode ec;
-    _impl-&gt;removeChild(*WebKit::toWebCoreNode(node), ec);
</del><ins>+    _impl-&gt;removeChild(*WebKit::toWebCoreNode(node));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (WKDOMDocument *)document
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsPDFDeprecatedPDFPluginmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebKit2/WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -526,7 +526,7 @@
</span><span class="cx">         m_annotationContainer-&gt;setAttributeWithoutSynchronization(idAttr, AtomicString(&quot;annotationContainer&quot;, AtomicString::ConstructFromLiteral));
</span><span class="cx"> 
</span><span class="cx">         auto annotationStyleElement = document-&gt;createElement(styleTag, false);
</span><del>-        annotationStyleElement-&gt;setTextContent(annotationStyle, ASSERT_NO_EXCEPTION);
</del><ins>+        annotationStyleElement-&gt;setTextContent(annotationStyle);
</ins><span class="cx"> 
</span><span class="cx">         m_annotationContainer-&gt;appendChild(annotationStyleElement);
</span><span class="cx">         document-&gt;bodyOrFrameset()-&gt;appendChild(*m_annotationContainer);
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsPDFPDFPluginChoiceAnnotationmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm (208602 => 208603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm        2016-11-11 20:12:00 UTC (rev 208602)
+++ trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm        2016-11-11 20:16:03 UTC (rev 208603)
</span><span class="lines">@@ -88,7 +88,7 @@
</span><span class="cx">     for (NSString *choice in choices) {
</span><span class="cx">         auto choiceOption = document.createElement(optionTag, false);
</span><span class="cx">         choiceOption-&gt;setAttributeWithoutSynchronization(valueAttr, choice);
</span><del>-        choiceOption-&gt;setTextContent(choice, ASSERT_NO_EXCEPTION);
</del><ins>+        choiceOption-&gt;setTextContent(choice);
</ins><span class="cx"> 
</span><span class="cx">         if (choice == selectedChoice)
</span><span class="cx">             choiceOption-&gt;setAttributeWithoutSynchronization(selectedAttr, AtomicString(&quot;selected&quot;, AtomicString::ConstructFromLiteral));
</span></span></pre>
</div>
</div>

</body>
</html>