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

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

<h3>Log Message</h3>
<pre>Move all classes in the HTML directory from ExceptionCode to Exception
https://bugs.webkit.org/show_bug.cgi?id=163876

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

* web-platform-tests/url/url-setters-expected.txt: Updated for progressions that occurred
because setting the href attribute on a DOMURL object no longer modifies the URL as a side
effect in the cases where it throw an exception.

Source/WebCore:

* bindings/js/JSDOMBinding.cpp:
(WebCore::shouldAllowAccessToNode): Deleted.
(WebCore::BindingSecurity::shouldAllowAccessToFrame): Moved function into the
BindingSecurity namespace. Also changed arguments to references.
(WebCore::BindingSecurity::shouldAllowAccessToDOMWindow): Ditto.
(WebCore::BindingSecurity::shouldAllowAccessToNode): Changed argument type
from pointer to reference.

* bindings/js/JSDOMBinding.h: Removed top level shouldAllowAccessTo functions,
moving all of them into the BindingSecurity namespace. Changed BindingSecurity
from a class into a namespace. Added new checkSecurityForNode functions that
can be used directly to implement CheckSecurityForNode; they turn the node
into a null, which is no change in behavior from what bindings already did.

* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::jsDOMWindowGetOwnPropertySlotRestrictedAccess): Changed argument
type for passed-in string to const String&amp; instead of String&amp;.
(WebCore::JSDOMWindow::getOwnPropertySlot): Updated for BindingSecurity changes.
(WebCore::JSDOMWindow::getOwnPropertySlotByIndex): Ditto.
(WebCore::JSDOMWindow::put): Ditto.

* bindings/js/JSHTMLCanvasElementCustom.cpp:
(WebCore::attributesFor3DContext): Renamed from get3DContextAttributes and
changed to use a return value instead of an out argument.
(WebCore::JSHTMLCanvasElement::getContext): Updated for the above.
(WebCore::JSHTMLCanvasElement::toDataURL): Rewrote to handle ExceptionOr
and also to use Optional&lt;double&gt; instead of const double*.

* bindings/js/JSHTMLFrameElementCustom.cpp:
(WebCore::JSHTMLFrameElement::setLocation): Moved the logic from
allowSettingJavascriptURL in here and updated for BindingSecurity changes.

* bindings/js/JSHTMLOptionsCollectionCustom.cpp:
(WebCore::JSHTMLOptionsCollection::setLength): Use propagateException.
Also streamlined the code a bit.
(WebCore::JSHTMLOptionsCollection::indexSetter): Updated for new name and
argument types for selectElementIndexSetter.

* bindings/js/JSHTMLSelectElementCustom.cpp:
(WebCore::selectElementIndexSetter): Updated name and argument types and
to use propagateException.
(WebCore::JSHTMLSelectElement::indexSetter): Updated for above.
* bindings/js/JSHTMLSelectElementCustom.h: Ditto.

* bindings/js/JSLocationCustom.cpp:
(WebCore::JSLocation::getOwnPropertySlotDelegate): Updated for changes to
BindingSecurity.
(WebCore::JSLocation::putDelegate): Ditto. Also rearranged logic a bit.

* bindings/js/ScriptController.cpp:
(WebCore::ScriptController::canAccessFromCurrentOrigin): Updated for
changes to BindingSecurity.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation): Removed old support for CheckSecurityForNode.
(NativeToJSValue): Added new support for CheckSecurityForNode, which uses
the new checkSecurityForNode function, and works properly with ExceptionOr.

* bindings/scripts/test/JS/JSTestObj.cpp: Updated for change below.

* dom/ChildNode.idl: Move the remove function to non-legacy exception.
Needed now because this needs to match the one in HTMLSelectElement.

* dom/Element.cpp:
(WebCore::Element::dispatchMouseForceWillBegin): Refactored a little bit.
(WebCore::Element::mergeWithNextTextNode): Support ExceptionOr for remove.
(WebCore::Element::setOuterHTML): Support ExceptionOr for
createFragmentForInnerOuterHTML.
(WebCore::Element::setInnerHTML): Ditto.
(WebCore::Element::insertAdjacentHTML): Ditto.

* dom/Node.cpp:
(WebCore::Node::remove): Use ExceptionOr.
(WebCore::Node::normalize): Remove use of IGNORE_EXCEPTION.
* dom/Node.h: Use ExceptionOr for remove.

* dom/Range.cpp:
(WebCore::Range::insertNode): Updated for change to remove.
(WebCore::Range::createContextualFragment): Updated for change
to WebCore::createContextualFragment.

* dom/ShadowRoot.cpp:
(WebCore::ShadowRoot::setInnerHTML): Use ExceptionOr for
createFragmentForInnerOuterHTML and replaceChildrenWithFragment.

* editing/AppendNodeCommand.cpp:
(WebCore::AppendNodeCommand::doUnapply): Remove IGNORE_EXCEPTION.
* editing/InsertNodeBeforeCommand.cpp:
(WebCore::InsertNodeBeforeCommand::doUnapply): Ditto.
* editing/MergeIdenticalElementsCommand.cpp:
(WebCore::MergeIdenticalElementsCommand::doApply): Ditto.
* editing/RemoveNodeCommand.cpp:
(WebCore::RemoveNodeCommand::doApply): Ditto.
* editing/SplitElementCommand.cpp:
(WebCore::SplitElementCommand::doUnapply): Ditto.
* editing/SplitTextNodeCommand.cpp:
(WebCore::SplitTextNodeCommand::doUnapply): Ditto.
* editing/WrapContentsInDummySpanCommand.cpp:
(WebCore::WrapContentsInDummySpanCommand::doUnapply): Ditto.

* editing/Editor.cpp:
(WebCore::Editor::insertDictationPhrases): Deleted. Moved this
iOS-specific function to EditorIOS.mm.
(WebCore::Editor::setDictationPhrasesAsChildOfElement): Ditto.
(WebCore::Editor::confirmMarkedText): Ditto.
(WebCore::Editor::setTextAsChildOfElement): Ditto.
(WebCore::Editor::ensureLastEditCommandHasCurrentSelectionIfOpenForMoreTyping): Ditto.

* editing/ios/EditorIOS.mm:
(WebCore::Editor::fontForSelection): Remove ASSERT_NO_EXCEPTION.
(WebCore::Editor::fontAttributesForSelectionStart): Ditto.
(WebCore::Editor::insertDictationPhrases): Moved here from Editor.cpp.
(WebCore::Editor::setDictationPhrasesAsChildOfElement): Ditto. Also
updated code that used remove to not pass an ExceptionCode.
(WebCore::Editor::confirmMarkedText): Ditto.
(WebCore::Editor::setTextAsChildOfElement): Ditto.
(WebCore::Editor::ensureLastEditCommandHasCurrentSelectionIfOpenForMoreTyping): Ditto.

* editing/mac/EditorMac.mm:
(WebCore::Editor::fontForSelection): Remove ASSERT_NO_EXCEPTION.
(WebCore::Editor::fontAttributesForSelectionStart): Ditto.

* editing/markup.cpp:
(WebCore::createFragmentForInnerOuterHTML): Use ExceptionOr.
(WebCore::createContextualFragment): Ditto.
(WebCore::replaceChildrenWithFragment): Ditto.
(WebCore::replaceChildrenWithText): Ditto.
* editing/markup.h: Updated for above changes.

* html/BaseChooserOnlyDateAndTimeInputType.cpp:
(WebCore::BaseChooserOnlyDateAndTimeInputType::updateAppearance):
Removed ASSERT_NO_EXCEPTION.

* html/BaseDateAndTimeInputType.cpp:
(WebCore::BaseDateAndTimeInputType::setValueAsDate): Use ExceptionOr.
(WebCore::BaseDateAndTimeInputType::setValueAsDecimal): Ditto.
* html/BaseDateAndTimeInputType.h: Updated for above changes.

* html/DateTimeLocalInputType.cpp:
(WebCore::DateTimeLocalInputType::setValueAsDate): Use ExceptionOr.
* html/DateTimeLocalInputType.h: Updated for above changes.

* html/DOMTokenList.cpp:
(WebCore::DOMTokenList::validateToken): Use ExceptionOr.
(WebCore::DOMTokenList::validateTokens): Ditto.
(WebCore::DOMTokenList::addInternal): Ditto.
(WebCore::DOMTokenList::add): Ditto.
(WebCore::DOMTokenList::removeInternal): Ditto.
(WebCore::DOMTokenList::remove): Ditto.
(WebCore::DOMTokenList::toggle): Ditto.
(WebCore::DOMTokenList::replace): Ditto.
(WebCore::DOMTokenList::supports): Ditto.
* html/DOMTokenList.h: Updated for above changes.
* html/DOMTokenList.idl: Use non-legacy exceptions.

* html/DOMURL.cpp:
(WebCore::DOMURL::DOMURL): Just take the two URL objects and let
the create functions do all the processing.
(WebCore::DOMURL::create): Use ExceptionOr, and move the processing
of the URLs here out of the constructors.
(WebCore::DOMURL::setHref): Use ExceptionOr.
* html/DOMURL.h: Updated for above changes.
* html/DOMURL.idl: Use non-legacy exceptions.

* html/FTPDirectoryDocument.cpp:
(WebCore::FTPDirectoryDocumentParser::appendEntry): Remove
IGNORE_EXCEPTION and use releaseReturnValue().

* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::toDataURL): Use ExceptionOr.
* html/HTMLCanvasElement.h: Updated for above changes.
* html/HTMLCanvasElement.idl: Use non-legacy exception.

* html/HTMLElement.cpp:
(WebCore::HTMLElement::textToFragment): Use ExceptionOr.
(WebCore::HTMLElement::setInnerText): Ditto.
(WebCore::HTMLElement::setOuterText): Ditto.
(WebCore::HTMLElement::setContentEditable): Ditto.
(WebCore::HTMLElement::translateAttributeMode): Deleted.
(WebCore::HTMLElement::translate): Moved the logic from the
translateAttributeMode function in here.
* html/HTMLElement.h: Updated for above changes.
* html/HTMLElement.idl: Use non-legacy exceptions.

* html/HTMLEmbedElement.idl: Use non-legacy exception.
* html/HTMLFrameElement.idl: Ditto.

* html/HTMLFrameOwnerElement.cpp:
(WebCore::HTMLFrameOwnerElement::getSVGDocument): Use ExceptionOr.
* html/HTMLFrameOwnerElement.h: Updated for above.

* html/HTMLIFrameElement.idl: Use non-legacy exception.

* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::stepUp): Use ExceptionOr.
(WebCore::HTMLInputElement::stepDown): Ditto.
(WebCore::HTMLInputElement::setValue): Ditto.
(WebCore::HTMLInputElement::setValueAsDate): Ditto.
(WebCore::HTMLInputElement::setValueAsNumber): Ditto.
(WebCore::HTMLInputElement::setSize): Ditto.
(WebCore::HTMLInputElement::maxLengthAttributeChanged): Use the
new internalSetMaxLength function; old code relied on a setMaxLength
that was different from the one exposed to bindings.
(WebCore::HTMLInputElement::minLengthAttributeChanged): Ditto.
(WebCore::HTMLInputElement::setRangeText): Use ExceptionOr.
* html/HTMLInputElement.h: Updated for above changes. Also use
data member initialization for InputElementClickState instead of
a constructor.
* html/HTMLInputElement.idl: Use non-legacy exception.

* html/HTMLMarqueeElement.cpp:
(WebCore::HTMLMarqueeElement::setLoop): Use ExceptionOr.
(WebCore::HTMLMarqueeElement::renderMarquee): Tweaked.
* html/HTMLMarqueeElement.h: Updated for above changes.
* html/HTMLMarqueeElement.idl: Ditto.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::TrackGroup::TrackGroup):
Initialize most data members in class definition rather than
the constructor.
(WebCore::HTMLMediaElement::HTMLMediaElement): Ditto.
(WebCore::HTMLMediaElement::~HTMLMediaElement): Updated since
removeMediaElement now takes a reference.
(WebCore::HTMLMediaElement::updateActiveTextTrackCues): Use
a modern for loop to streamline code.
(WebCore::HTMLMediaElement::textTrackModeChanged): Updated since
track now returns a reference.
(WebCore::HTMLMediaElement::setCurrentTimeForBindings): Renamed
to prevent ambiguity with the other version that has slightly
different semantics and overloading and changed to use ExceptionOr.
(WebCore::HTMLMediaElement::playInternal): Updated to use reference.
(WebCore::HTMLMediaElement::setVolume): Use ExceptionOr.
(WebCore::HTMLMediaElement::mediaPlayerDidAddAudioTrack): Take a
reference instead of a PassRefPtr.
(WebCore::HTMLMediaElement::mediaPlayerDidAddTextTrack): Ditto.
(WebCore::HTMLMediaElement::mediaPlayerDidAddVideoTrack): Ditto.
(WebCore::HTMLMediaElement::mediaPlayerDidRemoveAudioTrack): Ditto.
(WebCore::HTMLMediaElement::mediaPlayerDidRemoveTextTrack): Ditto.
(WebCore::HTMLMediaElement::mediaPlayerDidRemoveVideoTrack): Ditto.
(WebCore::HTMLMediaElement::addTextTrack): Use ExceptionOr.
(WebCore::HTMLMediaElement::didAddTextTrack): Use a reference.
(WebCore::HTMLMediaElement::didRemoveTextTrack): Ditto.
(WebCore::HTMLMediaElement::maxBufferedTime): Update to use different
interface to time ranges that does not need to deal with exceptions.
(WebCore::HTMLMediaElement::setController): Pass references.
(WebCore::HTMLMediaElement::outOfBandTrackSources): Use reference.
* html/HTMLMediaElement.h: Updated for above.
* html/HTMLMediaElement.idl: Use non-legacy exceptions.

* html/HTMLObjectElement.idl: Use non-legacy exception.

* html/HTMLOptionElement.cpp:
(WebCore::HTMLOptionElement::createForJSConstructor): Use ExceptionOr.
* html/HTMLOptionElement.h: Updated for above change.
* html/HTMLOptionElement.idl: Use non-legacy exception.

* html/HTMLOptionsCollection.cpp:
(WebCore::HTMLOptionsCollection::setLength): Use ExceptionOr.
* html/HTMLOptionsCollection.h: Updated for above change.
* html/HTMLOptionsCollection.idl: Use non-legacy exception.

* html/HTMLProgressElement.cpp:
(WebCore::HTMLProgressElement::setValue): Removed non-finite handling
because that is now handled by the bindings.
(WebCore::HTMLProgressElement::setMax): Ditto.
* html/HTMLProgressElement.h: Updated for above.
* html/HTMLProgressElement.idl: Changed attributes to be double instead
of unrestricted double, and this was able to remove exceptions.

* html/HTMLSelectElement.cpp:
(WebCore::HTMLSelectElement::removeByIndex): Drop IGNORE_EXCEPTION.
(WebCore::HTMLSelectElement::remove): Use ExceptionOr.
(WebCore::HTMLSelectElement::setOption): Ditto.
(WebCore::HTMLSelectElement::setLength): Ditto.
* html/HTMLSelectElement.h: Updated for above changes.
* html/HTMLSelectElement.idl: Use non-legacy exceptions.

* html/HTMLTableElement.cpp:
(WebCore::HTMLTableElement::setCaption): Use ExceptionOr.
(WebCore::HTMLTableElement::setTHead): Ditto.
(WebCore::HTMLTableElement::setTFoot): Ditto.
(WebCore::HTMLTableElement::createTHead): Streamline a bit.
(WebCore::HTMLTableElement::deleteTHead): Ditto.
(WebCore::HTMLTableElement::createTFoot): Ditto.
(WebCore::HTMLTableElement::deleteTFoot): Ditto.
(WebCore::HTMLTableElement::createTBody): Ditto.
(WebCore::HTMLTableElement::createCaption): Ditto.
(WebCore::HTMLTableElement::insertRow): Use ExceptionOr.
(WebCore::HTMLTableElement::deleteRow): Ditto.
* html/HTMLTableElement.h: Updated for above changes.
* html/HTMLTableElement.idl: Use non-legacy exceptions.

* html/HTMLTableRowElement.cpp:
(WebCore::findTable): Added.
(WebCore::HTMLTableRowElement::rowIndex): Streamline a bit using the
findTable function above.
(WebCore::findRows): Added.
(WebCore::HTMLTableRowElement::sectionRowIndex): Streamline a bit using
the findRows function above.
(WebCore::HTMLTableRowElement::insertCell): Use ExceptionOr.
(WebCore::HTMLTableRowElement::deleteCell): Ditto.
(WebCore::HTMLTableRowElement::setCells): Deleted.
* html/HTMLTableRowElement.h: Updated for the above. The setCells function
was dead code.
* html/HTMLTableRowElement.idl: Use non-legacy exceptions.

* html/HTMLTableSectionElement.cpp:
(WebCore::HTMLTableSectionElement::additionalPresentationAttributeStyle):
Tweaked a bit to use early return.
(WebCore::HTMLTableSectionElement::insertRow): Use ExceptionOr.
(WebCore::HTMLTableSectionElement::deleteRow): Ditto.
(WebCore::HTMLTableSectionElement::numRows): Use childrenOfType.
(WebCore::HTMLTableSectionElement::align): Deleted.
(WebCore::HTMLTableSectionElement::setAlign): Deleted.
(WebCore::HTMLTableSectionElement::ch): Deleted.
(WebCore::HTMLTableSectionElement::setCh): Deleted.
(WebCore::HTMLTableSectionElement::chOff): Deleted.
(WebCore::HTMLTableSectionElement::setChOff): Deleted.
(WebCore::HTMLTableSectionElement::vAlign): Deleted.
(WebCore::HTMLTableSectionElement::setVAlign): Deleted.
* html/HTMLTableSectionElement.h: Updated for the above.
* html/HTMLTableSectionElement.idl: Use non-legacy exception.

* html/HTMLTextAreaElement.cpp:
(WebCore::HTMLTextAreaElement::maxLengthAttributeChanged): Use the new
internalSetMaxLength function; old code relied on a setMaxLength
that was different from the one exposed to bindings.
(WebCore::HTMLTextAreaElement::minLengthAttributeChanged): Ditto.
(WebCore::HTMLTextAreaElement::updatePlaceholderText): Removed
ASSERT_NO_EXCEPTION.
* html/HTMLTextAreaElement.idl: Use non-legacy exceptions.

* html/HTMLTextFormControlElement.cpp:
(WebCore::HTMLTextFormControlElement::setRangeText): Use ExceptionOr.
(WebCore::HTMLTextFormControlElement::setInnerTextValue): Ditto.
(WebCore::HTMLTextFormControlElement::setMaxLength): Ditto.
(WebCore::HTMLTextFormControlElement::setMinLength): Ditto.
* html/HTMLTextFormControlElement.h: Updated for above changes.
Also renamed the setMin/MaxLength function overloads for internal use
to internSetMin/MaxLength and made them protected.

* html/HTMLTrackElement.cpp:
(WebCore::HTMLTrackElement::~HTMLTrackElement): Call clearElement on the
track to break the connection. Before this was done as a side effect of
clearClient, but that is called in other cases where we do not want to
clear the link back to the track element.
(WebCore::HTMLTrackElement::insertedInto): Removed code that uses the
track function for its side effect of creating a track; no longer needed.
Rewrote this so it's more symmetric with removedFrom.
(WebCore::HTMLTrackElement::removedFrom): Pass reference. Also reordered
and removed an unnecessary check for null parent.
(WebCore::HTMLTrackElement::parseAttribute): Use track.
(WebCore::HTMLTrackElement::kind): Ditto.
(WebCore::HTMLTrackElement::track): Renamed ensureTrack to this. Also
removed the redundant code to call setTrackElement; we no longer change
the track element on a track until the track element is destroyed.
(WebCore::HTMLTrackElement::scheduleLoad): Use track.
(WebCore::HTMLTrackElement::loadTimerFired): Ditto.
(WebCore::HTMLTrackElement::setReadyState): Ditto.
(WebCore::HTMLTrackElement::readyState): Ditto.
(WebCore::HTMLTrackElement::mediaElement): Rearranged to use early return.
* html/HTMLTrackElement.h: Updated for above changes.

* html/HTMLVideoElement.cpp:
(WebCore::HTMLVideoElement::webkitEnterFullscreen): Use ExceptionOr.
* html/HTMLVideoElement.h: Removed the functions used just for
capitalization reasons; that's now handled in the bindings.
* html/HTMLVideoElement.idl: Use non-legacy bindings and ImplementedAs.

* html/ImageData.cpp:
(WebCore::ImageData::create): Return ExceptionOr.
* html/ImageData.h: Updated for above changes.
* html/ImageData.idl: Use non-legacy exceptions.

* html/InputType.cpp:
(WebCore::InputType::setValueAsDate): Use ExceptionOr.
(WebCore::InputType::setValueAsDouble): Ditto.
(WebCore::InputType::setValueAsDecimal): Ditto.
(WebCore::InputType::applyStep): Ditto.
(WebCore::InputType::stepUp): Ditto.
(WebCore::InputType::stepUpFromRenderer): Removed IGNORE_EXCEPTION.
* html/InputType.h: Updated for the above.

* html/MediaController.cpp:
(MediaController::addMediaElement): Take a reference instead of a pointer.
(MediaController::removeMediaElement): Ditto.
(MediaController::containsMediaElement): Ditto.
(MediaController::setVolume): Use ExceptionOr.
(MediaController::bringElementUpToSpeed): Take a reference.
* html/MediaController.h: Updated for above changes. Also made lots of
function overrides private.
* html/MediaController.idl: Use non-legacy exception.

* html/MediaControllerInterface.h: Use ExceptionOr for setVolume.

* html/NumberInputType.cpp:
(WebCore::RealNumberRenderSize::max): Use aggregate initialization instead
of a constructor.
(WebCore::calculateRenderSize): Ditto.
(WebCore::NumberInputType::setValueAsDouble): Use ExceptionOr.
(WebCore::NumberInputType::setValueAsDecimal): Ditto.
* html/NumberInputType.h: Updated for above changes.

* html/RangeInputType.cpp:
(WebCore::RangeInputType::RangeInputType): Initialize scalar data member
in class definition instead of here.
(WebCore::RangeInputType::setValueAsDecimal): Use ExceptionOr.
(WebCore::RangeInputType::handleKeydownEvent): Removed IGNORE_EXCEPTION.
* html/RangeInputType.h: Updated for above changes.

* html/TextFieldInputType.cpp:
(WebCore::TextFieldInputType::updatePlaceholderText): Removed
ASSERT_NO_EXCEPTION.

* html/TimeRanges.cpp:
(WebCore::TimeRanges::start): Use ExceptionOr.
(WebCore::TimeRanges::end): Ditto.
* html/TimeRanges.h: Updated for the above.
* html/TimeRanges.idl: Use non-legacy exceptions.

* html/URLUtils.idl: Use non-legacy exception.

* html/ValidationMessage.cpp:
(WebCore::ValidationMessage::setMessageDOMAndStartTimer): Removed
ASSERT_NO_EXCEPTION, IGNORE_EXCEPTION, and other exception-ignoring idioms.
* html/parser/HTMLTreeBuilder.cpp:
(WebCore::HTMLTreeBuilder::processStartTagForInBody): Ditto.
* html/shadow/MediaControlElementTypes.cpp:
(WebCore::MediaControlVolumeSliderElement::defaultEventHandler): Ditto.
* html/shadow/MediaControlElements.cpp:
(WebCore::MediaControlPanelElement::setPosition): Ditto.
(WebCore::MediaControlPanelElement::resetPosition): Ditto.
(WebCore::MediaControlStatusDisplayElement::update): Ditto.
(WebCore::MediaControlClosedCaptionsTrackListElement::updateDisplay): Ditto.
(WebCore::MediaControlFullscreenVolumeMinButtonElement::defaultEventHandler): Ditto.
(WebCore::MediaControlFullscreenVolumeMaxButtonElement::defaultEventHandler): Ditto.
* html/shadow/MediaControls.cpp:
(WebCore::MediaControls::updateCurrentTimeDisplay): Ditto.
* html/shadow/MediaControlsApple.cpp:
(WebCore::MediaControlsApple::updateCurrentTimeDisplay): Ditto.

* html/track/LoadableTextTrack.cpp:
(WebCore::LoadableTextTrack::LoadableTextTrack): Take reference.
(WebCore::LoadableTextTrack::~LoadableTextTrack): Deleted.
(WebCore::LoadableTextTrack::clearClient): Deleted override. We no longer
want to clear m_trackElement when clearing the client.
(WebCore::LoadableTextTrack::setTrackElement): Deleted.
(WebCore::LoadableTextTrack::id): Changed to use
attributeWithoutSynchronization for better performance and idAttr instead
of a string constant.
* html/track/LoadableTextTrack.h: Updated for above changes. Added a new
clearElement function. Made the element and isDefault functions private.

* html/track/VTTCue.cpp:
(WebCore::VTTCue::~VTTCue): Removed ASSERT_NO_EXCEPTION, IGNORE_EXCEPTION,
and other exception-ignoring idioms.
(WebCore::VTTCue::removeDisplayTree): Ditto.
* html/track/VTTRegion.cpp:
(WebCore::VTTRegion::displayLastTextTrackCueBox): Ditto.
(WebCore::VTTRegion::willRemoveTextTrackCueBox): Ditto.

* inspector/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::pushNodeByBackendIdToFrontend):
Rewrote to avoid multiplehash table lookups and added a FIXME about
the peculiar code here.
(WebCore::InspectorDOMAgent::resolveNode): Streamlined.
(WebCore::InspectorDOMAgent::nodeAsScriptValue): Use the new
checkSecurityForNode instead of the old shouldAllowAccessToNode.

* platform/graphics/ImageBuffer.h: Take Optional&lt;double&gt; instead of
const double* in toDataURL. Renamed ImageDataToDataURL to just dataURL.

* platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::addAudioTrack): Take a reference instead of PassRefPtr.
(WebCore::MediaPlayer::removeAudioTrack): Ditto.
(WebCore::MediaPlayer::addTextTrack): Ditto.
(WebCore::MediaPlayer::removeTextTrack): Ditto.
(WebCore::MediaPlayer::addVideoTrack): Ditto.
(WebCore::MediaPlayer::removeVideoTrack): Ditto.
* platform/graphics/MediaPlayer.h: Updated for the above.

* platform/graphics/PlatformTimeRanges.h: Exported a couple of functions
that are now used in WebKit.

* platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
(WebCore::MediaPlayerPrivateAVFoundation::clearTextTracks): Use a modern for loop.
(WebCore::MediaPlayerPrivateAVFoundation::processNewAndRemovedTextTracks):
Fixed a bug that would cause this function to fail to process half the tracks.
Also updated for the change from PassRefPtr to references.

* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::determineChangedTracksFromNewTracksAndOldItems): Pass references.
(WebCore::MediaPlayerPrivateAVFoundationObjC::audioSourceProvider): Ditto.
(WebCore::MediaPlayerPrivateAVFoundationObjC::processMetadataTrack): Ditto.
(WebCore::assetMetadataKeyNames): Tweaked formatting.
(WebCore::itemKVOProperties): Ditto.
(WebCore::playerKVOProperties): Ditto.

* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
(WebCore::updateTracksOfType): Pass references.

* platform/graphics/cairo/ImageBufferCairo.cpp:
(WebCore::ImageBuffer::toDataURL): Use Optional&lt;double&gt;

* platform/graphics/cg/ImageBufferCG.cpp:
(WebCore::createBitmapImageAfterScalingIfNeeded): Use auto.
(WebCore::encodeImage): Ditto. Also renamed from CGImageEncodeToData.
(WebCore::dataURL): Ditto. Also renamed from CGImageToDataURL and from
ImageDataToDataURL.
(WebCore::ImageBuffer::toDataURL): Ditto.

* platform/graphics/efl/ImageBufferEfl.cpp:
(WebCore::encodeImageJPEG): Use Optional&lt;double&gt;
(WebCore::ImageBuffer::toDataURL): Ditto.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfVideo): Pass
a reference instead of pointer.
(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfAudio): Ditto.
(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfText): Ditto.
(WebCore::MediaPlayerPrivateGStreamer::processMpegTsSection): Ditto.
(WebCore::MediaPlayerPrivateGStreamer::processTableOfContents): Ditto.

* platform/graphics/gtk/ImageBufferGtk.cpp:
(WebCore::encodeImage): Use Optional&lt;double&gt;
(WebCore::ImageBuffer::toDataURL): Ditto.

* platform/graphics/win/ImageBufferDirect2D.cpp:
(WebCore::ImageBuffer::toDataURL): Use Optional&lt;double&gt;

* platform/image-encoders/JPEGImageEncoder.cpp:
(WebCore::compressRGBABigEndianToJPEG): Use Optional&lt;double&gt;
* platform/image-encoders/JPEGImageEncoder.h: Ditto.

* platform/ios/WebPlaybackSessionInterfaceAVKit.mm:
(WebCore::WebPlaybackSessionInterfaceAVKit::seekableRangesChanged):
Updated for change to TimeRanges.

* platform/mac/WebVideoFullscreenHUDWindowController.mm:
(-[WebVideoFullscreenHUDWindowController setVolume:]): Removed IGNORE_EXCEPTION.
* xml/parser/XMLDocumentParserLibxml2.cpp:
(WebCore::XMLDocumentParser::endElementNs): Ditto.

* rendering/RenderThemeGtk.cpp:
(WebCore::RenderThemeGtk::paintMediaSliderTrack): Updated for changes to
the TimeRanges class.

Source/WebKit/mac:

* DOM/DOMCharacterData.mm:
(-[DOMCharacterData remove]): Updated exception handling.
* DOM/DOMDOMTokenList.mm:
(-[DOMDOMTokenList toggle:force:]): Ditto.
* DOM/DOMDocumentType.mm:
(-[DOMDocumentType remove]): Ditto.
* DOM/DOMElement.mm:
(-[DOMElement remove]): Ditto.
* DOM/DOMHTML.mm:
(-[DOMHTMLInputElement setValueAsNumberWithChangeEvent:]): Ditto.
* DOM/DOMHTMLCanvasElement.mm:
(-[DOMHTMLCanvasElement toDataURL:]): Ditto.
* DOM/DOMHTMLElement.mm:
(-[DOMHTMLElement setInnerText:]): Ditto.
(-[DOMHTMLElement setOuterText:]): Ditto.
(-[DOMHTMLElement setContentEditable:]): Ditto.
* DOM/DOMHTMLInputElement.mm:
(-[DOMHTMLInputElement setMaxLength:]): Ditto.
(-[DOMHTMLInputElement setValueAsDate:]): Ditto.
(-[DOMHTMLInputElement setValueAsNumber:]): Ditto.
(-[DOMHTMLInputElement stepUp:]): Ditto.
(-[DOMHTMLInputElement stepDown:]): Ditto.
(-[DOMHTMLInputElement setRangeText:]): Ditto.
(-[DOMHTMLInputElement setRangeText:start:end:selectionMode:]): Ditto.
* DOM/DOMHTMLMarqueeElement.mm:
(-[DOMHTMLMarqueeElement setLoop:]): Ditto.
* DOM/DOMHTMLMediaElement.mm:
(-[DOMHTMLMediaElement setCurrentTime:]): Ditto.
(-[DOMHTMLMediaElement setVolume:]): Ditto.
* DOM/DOMHTMLOptionsCollection.mm:
(-[DOMHTMLOptionsCollection setLength:]): Ditto.
* DOM/DOMHTMLTableElement.mm:
(-[DOMHTMLTableElement setCaption:]): Ditto.
(-[DOMHTMLTableElement setTHead:]): Ditto.
(-[DOMHTMLTableElement setTFoot:]): Ditto.
(-[DOMHTMLTableElement insertRow:]): Ditto.
(-[DOMHTMLTableElement deleteRow:]): Ditto.
* DOM/DOMHTMLTableRowElement.mm:
(-[DOMHTMLTableRowElement insertCell:]): Ditto.
(-[DOMHTMLTableRowElement deleteCell:]): Ditto.
* DOM/DOMHTMLTableSectionElement.mm:
(-[DOMHTMLTableSectionElement insertRow:]): Ditto.
(-[DOMHTMLTableSectionElement deleteRow:]): Ditto.
* DOM/DOMHTMLTextAreaElement.mm:
(-[DOMHTMLTextAreaElement setMaxLength:]): Ditto.
(-[DOMHTMLTextAreaElement setRangeText:]): Ditto.
(-[DOMHTMLTextAreaElement setRangeText:start:end:selectionMode:]): Ditto.
* DOM/DOMHTMLVideoElement.mm:
(-[DOMHTMLVideoElement webkitEnterFullscreen]): Ditto.
(-[DOMHTMLVideoElement webkitEnterFullScreen]): Changed to call the other named
version (lowercase S) instead of repeating the logic from that method.
(-[DOMHTMLVideoElement webkitExitFullScreen]): Ditto.
* DOM/DOMTimeRanges.mm:
(-[DOMTimeRanges start:]): Updated exception handling.
(-[DOMTimeRanges end:]): Ditto.

Source/WebKit/win:

* DOMHTMLClasses.cpp:
(DOMHTMLElement::setInnerText): Update exception handling.
* FullscreenVideoController.cpp:
(FullscreenVideoController::setVolume): Ditto.

Source/WebKit2:

* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMTokenList.cpp:
(webkit_dom_dom_token_list_add): Updated exception handling.
(webkit_dom_dom_token_list_remove): Ditto.
(webkit_dom_dom_token_list_toggle): Ditto.
(webkit_dom_dom_token_list_replace): Ditto.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp:
(webkit_dom_element_remove): Ditto.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLElement.cpp:
(webkit_dom_html_element_set_inner_text): Ditto.
(webkit_dom_html_element_set_outer_text): Ditto.
(webkit_dom_html_element_set_content_editable): Ditto.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLInputElement.cpp:
(webkit_dom_html_input_element_set_max_length): Ditto.
(webkit_dom_html_input_element_set_size): Ditto.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLSelectElement.cpp:
(webkit_dom_html_select_element_set_length): Ditto.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableElement.cpp:
(webkit_dom_html_table_element_insert_row): Ditto.
(webkit_dom_html_table_element_delete_row): Ditto.
(webkit_dom_html_table_element_set_caption): Ditto.
(webkit_dom_html_table_element_set_t_head): Ditto.
(webkit_dom_html_table_element_set_t_foot): Ditto.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableRowElement.cpp:
(webkit_dom_html_table_row_element_insert_cell): Ditto.
(webkit_dom_html_table_row_element_delete_cell): Ditto.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableSectionElement.cpp:
(webkit_dom_html_table_section_element_insert_row): Ditto.
(webkit_dom_html_table_section_element_delete_row): Ditto.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::editorState): Removed ASSERT_NO_EXCEPTION.

* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::setAssistedNodeValueAsNumber): Removed ASSERT_NO_EXCEPTION.

* WebProcess/cocoa/WebPlaybackSessionManager.mm:
(WebKit::WebPlaybackSessionManager::seekableRangesChanged):
Changed the code to use a different interface to TimeRange that does
not involve exceptions.

Tools:

* TestWebKitAPI/Tests/WebCore/TimeRanges.cpp:
(TestWebKitAPI::ToString): Updated for changes to the TimeRanges class.
(TestWebKitAPI::TEST): Ditto.

LayoutTests:

* fast/dom/DOMURL/set-href-attribute-hash-expected.txt:
* fast/dom/DOMURL/set-href-attribute-hash.html:
* fast/dom/DOMURL/set-href-attribute-hostname-expected.txt:
* fast/dom/DOMURL/set-href-attribute-hostname.html:
* fast/dom/DOMURL/set-href-attribute-pathname-expected.txt:
* fast/dom/DOMURL/set-href-attribute-pathname.html:
Updated these tests to expect that if you set href and it raises an exception,
then the URL does not change. The old expected results showed the exception being
raised but the URL being changed to the invalid href.

* fast/dom/HTMLProgressElement/script-tests/set-progress-properties.js:
* fast/dom/HTMLProgressElement/set-progress-properties-expected.txt:
Updated to expect a different exception, TypeError rather than NotSupportedError,
for non-finite values.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsfastdomDOMURLsethrefattributehashexpectedtxt">trunk/LayoutTests/fast/dom/DOMURL/set-href-attribute-hash-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomDOMURLsethrefattributehashhtml">trunk/LayoutTests/fast/dom/DOMURL/set-href-attribute-hash.html</a></li>
<li><a href="#trunkLayoutTestsfastdomDOMURLsethrefattributehostnameexpectedtxt">trunk/LayoutTests/fast/dom/DOMURL/set-href-attribute-hostname-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomDOMURLsethrefattributehostnamehtml">trunk/LayoutTests/fast/dom/DOMURL/set-href-attribute-hostname.html</a></li>
<li><a href="#trunkLayoutTestsfastdomDOMURLsethrefattributepathnameexpectedtxt">trunk/LayoutTests/fast/dom/DOMURL/set-href-attribute-pathname-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomDOMURLsethrefattributepathnamehtml">trunk/LayoutTests/fast/dom/DOMURL/set-href-attribute-pathname.html</a></li>
<li><a href="#trunkLayoutTestsfastdomHTMLProgressElementscripttestssetprogresspropertiesjs">trunk/LayoutTests/fast/dom/HTMLProgressElement/script-tests/set-progress-properties.js</a></li>
<li><a href="#trunkLayoutTestsfastdomHTMLProgressElementsetprogresspropertiesexpectedtxt">trunk/LayoutTests/fast/dom/HTMLProgressElement/set-progress-properties-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cChangeLog">trunk/LayoutTests/imported/w3c/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlurlsettersexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-setters-expected.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMBindingcpp">trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMBindingh">trunk/Source/WebCore/bindings/js/JSDOMBinding.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWindowCustomcpp">trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSHTMLCanvasElementCustomcpp">trunk/Source/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSHTMLFrameElementCustomcpp">trunk/Source/WebCore/bindings/js/JSHTMLFrameElementCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSHTMLOptionsCollectionCustomcpp">trunk/Source/WebCore/bindings/js/JSHTMLOptionsCollectionCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSHTMLSelectElementCustomcpp">trunk/Source/WebCore/bindings/js/JSHTMLSelectElementCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSHTMLSelectElementCustomh">trunk/Source/WebCore/bindings/js/JSHTMLSelectElementCustom.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSLocationCustomcpp">trunk/Source/WebCore/bindings/js/JSLocationCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsScriptControllercpp">trunk/Source/WebCore/bindings/js/ScriptController.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp</a></li>
<li><a href="#trunkSourceWebCoredomChildNodeidl">trunk/Source/WebCore/dom/ChildNode.idl</a></li>
<li><a href="#trunkSourceWebCoredomElementcpp">trunk/Source/WebCore/dom/Element.cpp</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="#trunkSourceWebCoredomRangecpp">trunk/Source/WebCore/dom/Range.cpp</a></li>
<li><a href="#trunkSourceWebCoredomShadowRootcpp">trunk/Source/WebCore/dom/ShadowRoot.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingAppendNodeCommandcpp">trunk/Source/WebCore/editing/AppendNodeCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingEditorcpp">trunk/Source/WebCore/editing/Editor.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="#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="#trunkSourceWebCoreeditingiosEditorIOSmm">trunk/Source/WebCore/editing/ios/EditorIOS.mm</a></li>
<li><a href="#trunkSourceWebCoreeditingmacEditorMacmm">trunk/Source/WebCore/editing/mac/EditorMac.mm</a></li>
<li><a href="#trunkSourceWebCoreeditingmarkupcpp">trunk/Source/WebCore/editing/markup.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingmarkuph">trunk/Source/WebCore/editing/markup.h</a></li>
<li><a href="#trunkSourceWebCorehtmlBaseChooserOnlyDateAndTimeInputTypecpp">trunk/Source/WebCore/html/BaseChooserOnlyDateAndTimeInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlBaseDateAndTimeInputTypecpp">trunk/Source/WebCore/html/BaseDateAndTimeInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlBaseDateAndTimeInputTypeh">trunk/Source/WebCore/html/BaseDateAndTimeInputType.h</a></li>
<li><a href="#trunkSourceWebCorehtmlDOMTokenListcpp">trunk/Source/WebCore/html/DOMTokenList.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlDOMTokenListh">trunk/Source/WebCore/html/DOMTokenList.h</a></li>
<li><a href="#trunkSourceWebCorehtmlDOMTokenListidl">trunk/Source/WebCore/html/DOMTokenList.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlDOMURLcpp">trunk/Source/WebCore/html/DOMURL.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlDOMURLh">trunk/Source/WebCore/html/DOMURL.h</a></li>
<li><a href="#trunkSourceWebCorehtmlDOMURLidl">trunk/Source/WebCore/html/DOMURL.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlDateTimeLocalInputTypecpp">trunk/Source/WebCore/html/DateTimeLocalInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlDateTimeLocalInputTypeh">trunk/Source/WebCore/html/DateTimeLocalInputType.h</a></li>
<li><a href="#trunkSourceWebCorehtmlFTPDirectoryDocumentcpp">trunk/Source/WebCore/html/FTPDirectoryDocument.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLCanvasElementcpp">trunk/Source/WebCore/html/HTMLCanvasElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLCanvasElementh">trunk/Source/WebCore/html/HTMLCanvasElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLCanvasElementidl">trunk/Source/WebCore/html/HTMLCanvasElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLElementcpp">trunk/Source/WebCore/html/HTMLElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLElementh">trunk/Source/WebCore/html/HTMLElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLElementidl">trunk/Source/WebCore/html/HTMLElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLEmbedElementidl">trunk/Source/WebCore/html/HTMLEmbedElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFrameElementidl">trunk/Source/WebCore/html/HTMLFrameElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFrameOwnerElementcpp">trunk/Source/WebCore/html/HTMLFrameOwnerElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFrameOwnerElementh">trunk/Source/WebCore/html/HTMLFrameOwnerElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLIFrameElementidl">trunk/Source/WebCore/html/HTMLIFrameElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLInputElementcpp">trunk/Source/WebCore/html/HTMLInputElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLInputElementh">trunk/Source/WebCore/html/HTMLInputElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLInputElementidl">trunk/Source/WebCore/html/HTMLInputElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMarqueeElementcpp">trunk/Source/WebCore/html/HTMLMarqueeElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMarqueeElementh">trunk/Source/WebCore/html/HTMLMarqueeElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMarqueeElementidl">trunk/Source/WebCore/html/HTMLMarqueeElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementcpp">trunk/Source/WebCore/html/HTMLMediaElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementh">trunk/Source/WebCore/html/HTMLMediaElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementidl">trunk/Source/WebCore/html/HTMLMediaElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLObjectElementidl">trunk/Source/WebCore/html/HTMLObjectElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLOptionElementcpp">trunk/Source/WebCore/html/HTMLOptionElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLOptionElementh">trunk/Source/WebCore/html/HTMLOptionElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLOptionElementidl">trunk/Source/WebCore/html/HTMLOptionElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLOptionsCollectioncpp">trunk/Source/WebCore/html/HTMLOptionsCollection.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLOptionsCollectionh">trunk/Source/WebCore/html/HTMLOptionsCollection.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLOptionsCollectionidl">trunk/Source/WebCore/html/HTMLOptionsCollection.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLProgressElementcpp">trunk/Source/WebCore/html/HTMLProgressElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLProgressElementh">trunk/Source/WebCore/html/HTMLProgressElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLProgressElementidl">trunk/Source/WebCore/html/HTMLProgressElement.idl</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="#trunkSourceWebCorehtmlHTMLTableElementcpp">trunk/Source/WebCore/html/HTMLTableElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableElementh">trunk/Source/WebCore/html/HTMLTableElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableElementidl">trunk/Source/WebCore/html/HTMLTableElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableRowElementcpp">trunk/Source/WebCore/html/HTMLTableRowElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableRowElementh">trunk/Source/WebCore/html/HTMLTableRowElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableRowElementidl">trunk/Source/WebCore/html/HTMLTableRowElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableSectionElementcpp">trunk/Source/WebCore/html/HTMLTableSectionElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableSectionElementh">trunk/Source/WebCore/html/HTMLTableSectionElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableSectionElementidl">trunk/Source/WebCore/html/HTMLTableSectionElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTextAreaElementcpp">trunk/Source/WebCore/html/HTMLTextAreaElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTextAreaElementidl">trunk/Source/WebCore/html/HTMLTextAreaElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTextFormControlElementcpp">trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTextFormControlElementh">trunk/Source/WebCore/html/HTMLTextFormControlElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTrackElementcpp">trunk/Source/WebCore/html/HTMLTrackElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTrackElementh">trunk/Source/WebCore/html/HTMLTrackElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLVideoElementcpp">trunk/Source/WebCore/html/HTMLVideoElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLVideoElementh">trunk/Source/WebCore/html/HTMLVideoElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLVideoElementidl">trunk/Source/WebCore/html/HTMLVideoElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlImageDatacpp">trunk/Source/WebCore/html/ImageData.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlImageDatah">trunk/Source/WebCore/html/ImageData.h</a></li>
<li><a href="#trunkSourceWebCorehtmlImageDataidl">trunk/Source/WebCore/html/ImageData.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlInputTypecpp">trunk/Source/WebCore/html/InputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlInputTypeh">trunk/Source/WebCore/html/InputType.h</a></li>
<li><a href="#trunkSourceWebCorehtmlMediaControllercpp">trunk/Source/WebCore/html/MediaController.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlMediaControllerh">trunk/Source/WebCore/html/MediaController.h</a></li>
<li><a href="#trunkSourceWebCorehtmlMediaControlleridl">trunk/Source/WebCore/html/MediaController.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlMediaControllerInterfaceh">trunk/Source/WebCore/html/MediaControllerInterface.h</a></li>
<li><a href="#trunkSourceWebCorehtmlNumberInputTypecpp">trunk/Source/WebCore/html/NumberInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlNumberInputTypeh">trunk/Source/WebCore/html/NumberInputType.h</a></li>
<li><a href="#trunkSourceWebCorehtmlRangeInputTypecpp">trunk/Source/WebCore/html/RangeInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlRangeInputTypeh">trunk/Source/WebCore/html/RangeInputType.h</a></li>
<li><a href="#trunkSourceWebCorehtmlTextFieldInputTypecpp">trunk/Source/WebCore/html/TextFieldInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlTimeRangescpp">trunk/Source/WebCore/html/TimeRanges.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlTimeRangesh">trunk/Source/WebCore/html/TimeRanges.h</a></li>
<li><a href="#trunkSourceWebCorehtmlTimeRangesidl">trunk/Source/WebCore/html/TimeRanges.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlURLUtilsidl">trunk/Source/WebCore/html/URLUtils.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlValidationMessagecpp">trunk/Source/WebCore/html/ValidationMessage.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlparserHTMLTreeBuildercpp">trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlshadowMediaControlElementTypescpp">trunk/Source/WebCore/html/shadow/MediaControlElementTypes.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="#trunkSourceWebCorehtmltrackLoadableTextTrackcpp">trunk/Source/WebCore/html/track/LoadableTextTrack.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmltrackLoadableTextTrackh">trunk/Source/WebCore/html/track/LoadableTextTrack.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="#trunkSourceWebCoreinspectorInspectorDOMAgentcpp">trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsImageBufferh">trunk/Source/WebCore/platform/graphics/ImageBuffer.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsMediaPlayercpp">trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsMediaPlayerh">trunk/Source/WebCore/platform/graphics/MediaPlayer.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsPlatformTimeRangesh">trunk/Source/WebCore/platform/graphics/PlatformTimeRanges.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationMediaPlayerPrivateAVFoundationcpp">trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateAVFoundationObjCmm">trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateMediaStreamAVFObjCmm">trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscairoImageBufferCairocpp">trunk/Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscgImageBufferCGcpp">trunk/Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicseflImageBufferEflcpp">trunk/Source/WebCore/platform/graphics/efl/ImageBufferEfl.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgstreamerMediaPlayerPrivateGStreamercpp">trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgtkImageBufferGtkcpp">trunk/Source/WebCore/platform/graphics/gtk/ImageBufferGtk.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicswinImageBufferDirect2Dcpp">trunk/Source/WebCore/platform/graphics/win/ImageBufferDirect2D.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformimageencodersJPEGImageEncodercpp">trunk/Source/WebCore/platform/image-encoders/JPEGImageEncoder.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformimageencodersJPEGImageEncoderh">trunk/Source/WebCore/platform/image-encoders/JPEGImageEncoder.h</a></li>
<li><a href="#trunkSourceWebCoreplatformiosWebPlaybackSessionInterfaceAVKitmm">trunk/Source/WebCore/platform/ios/WebPlaybackSessionInterfaceAVKit.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformmacWebVideoFullscreenHUDWindowControllermm">trunk/Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.mm</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeGtkcpp">trunk/Source/WebCore/rendering/RenderThemeGtk.cpp</a></li>
<li><a href="#trunkSourceWebCorexmlparserXMLDocumentParserLibxml2cpp">trunk/Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMCharacterDatamm">trunk/Source/WebKit/mac/DOM/DOMCharacterData.mm</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMDOMTokenListmm">trunk/Source/WebKit/mac/DOM/DOMDOMTokenList.mm</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMDocumentTypemm">trunk/Source/WebKit/mac/DOM/DOMDocumentType.mm</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMElementmm">trunk/Source/WebKit/mac/DOM/DOMElement.mm</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMHTMLmm">trunk/Source/WebKit/mac/DOM/DOMHTML.mm</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMHTMLCanvasElementmm">trunk/Source/WebKit/mac/DOM/DOMHTMLCanvasElement.mm</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMHTMLElementmm">trunk/Source/WebKit/mac/DOM/DOMHTMLElement.mm</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMHTMLInputElementmm">trunk/Source/WebKit/mac/DOM/DOMHTMLInputElement.mm</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMHTMLMarqueeElementmm">trunk/Source/WebKit/mac/DOM/DOMHTMLMarqueeElement.mm</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMHTMLMediaElementmm">trunk/Source/WebKit/mac/DOM/DOMHTMLMediaElement.mm</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMHTMLOptionsCollectionmm">trunk/Source/WebKit/mac/DOM/DOMHTMLOptionsCollection.mm</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMHTMLTableElementmm">trunk/Source/WebKit/mac/DOM/DOMHTMLTableElement.mm</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMHTMLTableRowElementmm">trunk/Source/WebKit/mac/DOM/DOMHTMLTableRowElement.mm</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMHTMLTableSectionElementmm">trunk/Source/WebKit/mac/DOM/DOMHTMLTableSectionElement.mm</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMHTMLTextAreaElementmm">trunk/Source/WebKit/mac/DOM/DOMHTMLTextAreaElement.mm</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMHTMLVideoElementmm">trunk/Source/WebKit/mac/DOM/DOMHTMLVideoElement.mm</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMTimeRangesmm">trunk/Source/WebKit/mac/DOM/DOMTimeRanges.mm</a></li>
<li><a href="#trunkSourceWebKitwinChangeLog">trunk/Source/WebKit/win/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitwinDOMHTMLClassescpp">trunk/Source/WebKit/win/DOMHTMLClasses.cpp</a></li>
<li><a href="#trunkSourceWebKitwinFullscreenVideoControllercpp">trunk/Source/WebKit/win/FullscreenVideoController.cpp</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMDOMTokenListcpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMTokenList.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMElementcpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMHTMLElementcpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLElement.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMHTMLInputElementcpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLInputElement.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMHTMLSelectElementcpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLSelectElement.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMHTMLTableElementcpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableElement.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMHTMLTableRowElementcpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableRowElement.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMHTMLTableSectionElementcpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableSectionElement.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagecpp">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageiosWebPageIOSmm">trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm</a></li>
<li><a href="#trunkSourceWebKit2WebProcesscocoaWebPlaybackSessionManagermm">trunk/Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.mm</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsTestWebKitAPITestsWebCoreTimeRangescpp">trunk/Tools/TestWebKitAPI/Tests/WebCore/TimeRanges.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/LayoutTests/ChangeLog        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -1,3 +1,25 @@
</span><ins>+2016-10-28  Darin Adler  &lt;darin@apple.com&gt;
+
+        Move all classes in the HTML directory from ExceptionCode to Exception
+        https://bugs.webkit.org/show_bug.cgi?id=163876
+
+        Reviewed by Sam Weinig.
+
+        * fast/dom/DOMURL/set-href-attribute-hash-expected.txt:
+        * fast/dom/DOMURL/set-href-attribute-hash.html:
+        * fast/dom/DOMURL/set-href-attribute-hostname-expected.txt:
+        * fast/dom/DOMURL/set-href-attribute-hostname.html:
+        * fast/dom/DOMURL/set-href-attribute-pathname-expected.txt:
+        * fast/dom/DOMURL/set-href-attribute-pathname.html:
+        Updated these tests to expect that if you set href and it raises an exception,
+        then the URL does not change. The old expected results showed the exception being
+        raised but the URL being changed to the invalid href.
+
+        * fast/dom/HTMLProgressElement/script-tests/set-progress-properties.js:
+        * fast/dom/HTMLProgressElement/set-progress-properties-expected.txt:
+        Updated to expect a different exception, TypeError rather than NotSupportedError,
+        for non-finite values.
+
</ins><span class="cx"> 2016-10-28  Jer Noble  &lt;jer.noble@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         WebAudio does not resume when moving from background to foreground tab.
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomDOMURLsethrefattributehashexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/DOMURL/set-href-attribute-hash-expected.txt (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/DOMURL/set-href-attribute-hash-expected.txt        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/LayoutTests/fast/dom/DOMURL/set-href-attribute-hash-expected.txt        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -11,7 +11,7 @@
</span><span class="cx"> PASS a.href is 'http://www.mydomain.com/path/testurl.html#hash?value'
</span><span class="cx"> '#' in hash value, and illegal characters in hostname
</span><span class="cx"> PASS a.href = &quot;https://ww w.my\&quot;d(){}|~om?ain#com/path/testurl.html#middle&quot; threw exception TypeError: Type error.
</span><del>-PASS a.href is 'https://ww w.my\&quot;d(){}|~om?ain#com/path/testurl.html#middle'
</del><ins>+PASS a.href is 'http://www.mydomain.com/path/testurl.html#hash#value'
</ins><span class="cx"> Set hash to null
</span><span class="cx"> PASS a.href is 'https://www.mydomain.com/path/testurl.html#null'
</span><span class="cx"> Set hash to empty string
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomDOMURLsethrefattributehashhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/DOMURL/set-href-attribute-hash.html (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/DOMURL/set-href-attribute-hash.html        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/LayoutTests/fast/dom/DOMURL/set-href-attribute-hash.html        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> // with the URL API, assigning an invalid href throws
</span><span class="cx"> shouldThrow('a.href = &quot;https://ww w.my\\&quot;d(){}|~om?ain#com/path/testurl.html#middle&quot;');
</span><span class="cx"> a.hash = &quot;#hash#value&quot;;
</span><del>-shouldBe(&quot;a.href&quot;, &quot;'https://ww w.my\\\&quot;d(){}|~om?ain#com/path/testurl.html#middle'&quot;);
</del><ins>+shouldBe(&quot;a.href&quot;, &quot;'http://www.mydomain.com/path/testurl.html#hash#value'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> debug(&quot;Set hash to null&quot;);
</span><span class="cx"> a.href = &quot;https://www.mydomain.com/path/testurl.html#middle&quot;;
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomDOMURLsethrefattributehostnameexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/DOMURL/set-href-attribute-hostname-expected.txt (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/DOMURL/set-href-attribute-hostname-expected.txt        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/LayoutTests/fast/dom/DOMURL/set-href-attribute-hostname-expected.txt        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -17,7 +17,7 @@
</span><span class="cx"> PASS a.href is 'really:bad:url'
</span><span class="cx"> Set a hostname that contains space in it
</span><span class="cx"> PASS a.href = &quot;http://www.my domain.com/path/&quot; threw exception TypeError: Type error.
</span><del>-PASS a.href is 'http://www.my domain.com/path/'
</del><ins>+PASS a.href is 'really:bad:url'
</ins><span class="cx"> Set hostname on a local file
</span><span class="cx"> FAIL a.href should be c:/path/testurl.html. Was c://a/path/testurl.html.
</span><span class="cx"> Set hostname to undefined
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomDOMURLsethrefattributehostnamehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/DOMURL/set-href-attribute-hostname.html (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/DOMURL/set-href-attribute-hostname.html        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/LayoutTests/fast/dom/DOMURL/set-href-attribute-hostname.html        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx"> debug(&quot;Set a hostname that contains space in it&quot;);
</span><span class="cx"> shouldThrow('a.href = &quot;http://www.my domain.com/path/&quot;');
</span><span class="cx"> a.hostname = &quot;www.other domain.com&quot;;
</span><del>-shouldBe(&quot;a.href&quot;, &quot;'http://www.my domain.com/path/'&quot;);
</del><ins>+shouldBe(&quot;a.href&quot;, &quot;'really:bad:url'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> // IE8 throws an exception &quot;The URL is invalid&quot;.
</span><span class="cx"> try {
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomDOMURLsethrefattributepathnameexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/DOMURL/set-href-attribute-pathname-expected.txt (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/DOMURL/set-href-attribute-pathname-expected.txt        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/LayoutTests/fast/dom/DOMURL/set-href-attribute-pathname-expected.txt        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -17,10 +17,10 @@
</span><span class="cx"> PASS a.href is 'https://www.mydomain.com/?key=value'
</span><span class="cx"> Set pathname that includes illegal characters to URL that contains illegal characters.
</span><span class="cx"> PASS a.href = &quot;https://www.my|d[]()omain.com/path/testurl.html?key=value&quot; threw exception TypeError: Type error.
</span><del>-PASS a.href is 'https://www.my|d[]()omain.com/path/testurl.html?key=value'
</del><ins>+PASS a.href is 'https://www.mydomain.com/p$a|th?key=value'
</ins><span class="cx"> Set pathname to URL that contains '@' in host
</span><span class="cx"> PASS a.href = &quot;http://w@#ww&quot; threw exception TypeError: Type error.
</span><del>-PASS a.href is 'http://w@#ww'
</del><ins>+PASS a.href is 'https://www.mydomain.com/path?key=value'
</ins><span class="cx"> Set pathname to a URL with non-hierarchical protocol
</span><span class="cx"> PASS a.href is 'tel:+1800-555-1212'
</span><span class="cx"> PASS successfullyParsed is true
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomDOMURLsethrefattributepathnamehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/DOMURL/set-href-attribute-pathname.html (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/DOMURL/set-href-attribute-pathname.html        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/LayoutTests/fast/dom/DOMURL/set-href-attribute-pathname.html        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx"> debug(&quot;Set pathname that includes illegal characters to URL that contains illegal characters.&quot;);
</span><span class="cx"> shouldThrow('a.href = &quot;https://www.my|d[]()omain.com/path/testurl.html?key=value&quot;');
</span><span class="cx"> a.pathname = &quot;p$a|th&quot;;
</span><del>-shouldBe(&quot;a.href&quot;, &quot;'https://www.my|d[]()omain.com/path/testurl.html?key=value'&quot;);
</del><ins>+shouldBe(&quot;a.href&quot;, &quot;'https://www.mydomain.com/p$a|th?key=value'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> // IE8 throws a security exception. Gecko parses this as a URL with an empty hostname.
</span><span class="cx"> try {
</span><span class="lines">@@ -63,7 +63,7 @@
</span><span class="cx"> debug(&quot;Set pathname to URL that contains '@' in host&quot;);
</span><span class="cx"> shouldThrow('a.href = &quot;http://w@#ww&quot;');
</span><span class="cx"> a.pathname = &quot;path&quot;;
</span><del>-shouldBe(&quot;a.href&quot;, &quot;'http://w@#ww'&quot;);
</del><ins>+shouldBe(&quot;a.href&quot;, &quot;'https://www.mydomain.com/path?key=value'&quot;);
</ins><span class="cx"> } catch(e) {
</span><span class="cx"> debug(&quot;Exception: &quot; + e.description);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomHTMLProgressElementscripttestssetprogresspropertiesjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/HTMLProgressElement/script-tests/set-progress-properties.js (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/HTMLProgressElement/script-tests/set-progress-properties.js        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/LayoutTests/fast/dom/HTMLProgressElement/script-tests/set-progress-properties.js        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -27,16 +27,16 @@
</span><span class="cx"> shouldBe('p.position', '0');
</span><span class="cx"> 
</span><span class="cx"> debug(&quot;Set invalid value, should throw&quot;);
</span><del>-shouldThrow('p.value = &quot;200A&quot;;', '&quot;NotSupportedError (DOM Exception 9): The operation is not supported.&quot;');
</del><ins>+shouldThrow('p.value = &quot;200A&quot;;', '&quot;TypeError: The provided value is non-finite&quot;');
</ins><span class="cx"> 
</span><span class="cx"> debug(&quot;Set invalid max, should throw&quot;);
</span><del>-shouldThrow('p.max = &quot;max&quot;;', '&quot;NotSupportedError (DOM Exception 9): The operation is not supported.&quot;');
</del><ins>+shouldThrow('p.max = &quot;max&quot;;', '&quot;TypeError: The provided value is non-finite&quot;');
</ins><span class="cx"> 
</span><span class="cx"> debug(&quot;Set max to Infinity, should throw&quot;);
</span><del>-shouldThrow('p.max = Infinity;', '&quot;NotSupportedError (DOM Exception 9): The operation is not supported.&quot;');
</del><ins>+shouldThrow('p.max = Infinity;', '&quot;TypeError: The provided value is non-finite&quot;');
</ins><span class="cx"> 
</span><span class="cx"> debug(&quot;Set value to NaN, should throw&quot;);
</span><del>-shouldThrow('p.value = NaN;', '&quot;NotSupportedError (DOM Exception 9): The operation is not supported.&quot;');
</del><ins>+shouldThrow('p.value = NaN;', '&quot;TypeError: The provided value is non-finite&quot;');
</ins><span class="cx"> 
</span><span class="cx"> debug(&quot;Set value to null and max to 0&quot;);
</span><span class="cx"> p.value = null;
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomHTMLProgressElementsetprogresspropertiesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/HTMLProgressElement/set-progress-properties-expected.txt (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/HTMLProgressElement/set-progress-properties-expected.txt        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/LayoutTests/fast/dom/HTMLProgressElement/set-progress-properties-expected.txt        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -19,13 +19,13 @@
</span><span class="cx"> PASS p.value is 0
</span><span class="cx"> PASS p.position is 0
</span><span class="cx"> Set invalid value, should throw
</span><del>-PASS p.value = &quot;200A&quot;; threw exception NotSupportedError (DOM Exception 9): The operation is not supported..
</del><ins>+PASS p.value = &quot;200A&quot;; threw exception TypeError: The provided value is non-finite.
</ins><span class="cx"> Set invalid max, should throw
</span><del>-PASS p.max = &quot;max&quot;; threw exception NotSupportedError (DOM Exception 9): The operation is not supported..
</del><ins>+PASS p.max = &quot;max&quot;; threw exception TypeError: The provided value is non-finite.
</ins><span class="cx"> Set max to Infinity, should throw
</span><del>-PASS p.max = Infinity; threw exception NotSupportedError (DOM Exception 9): The operation is not supported..
</del><ins>+PASS p.max = Infinity; threw exception TypeError: The provided value is non-finite.
</ins><span class="cx"> Set value to NaN, should throw
</span><del>-PASS p.value = NaN; threw exception NotSupportedError (DOM Exception 9): The operation is not supported..
</del><ins>+PASS p.value = NaN; threw exception TypeError: The provided value is non-finite.
</ins><span class="cx"> Set value to null and max to 0
</span><span class="cx"> PASS p.value is 0
</span><span class="cx"> PASS p.max is 1
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/LayoutTests/imported/w3c/ChangeLog        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -1,3 +1,14 @@
</span><ins>+2016-10-28  Darin Adler  &lt;darin@apple.com&gt;
+
+        Move all classes in the HTML directory from ExceptionCode to Exception
+        https://bugs.webkit.org/show_bug.cgi?id=163876
+
+        Reviewed by Sam Weinig.
+
+        * web-platform-tests/url/url-setters-expected.txt: Updated for progressions that occurred
+        because setting the href attribute on a DOMURL object no longer modifies the URL as a side
+        effect in the cases where it throw an exception.
+
</ins><span class="cx"> 2016-10-28  Alex Christensen  &lt;achristensen@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Partially revert 207805 after resolution in URL spec issue 87
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlurlsettersexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-setters-expected.txt (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-setters-expected.txt        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-setters-expected.txt        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -42,10 +42,10 @@
</span><span class="cx"> PASS URL: Setting &lt;data:text/html,&lt;p&gt;Test&gt;.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignored 
</span><span class="cx"> PASS &lt;a&gt;: Setting &lt;data:text/html,&lt;p&gt;Test&gt;.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignored 
</span><span class="cx"> PASS &lt;area&gt;: Setting &lt;data:text/html,&lt;p&gt;Test&gt;.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignored 
</span><del>-FAIL URL: Setting &lt;file:///home/you/index.html&gt;.username = 'me' No host means no username assert_equals: expected &quot;file:///home/you/index.html&quot; but got &quot;file://me@/home/you/index.html&quot;
</del><ins>+PASS URL: Setting &lt;file:///home/you/index.html&gt;.username = 'me' No host means no username 
</ins><span class="cx"> FAIL &lt;a&gt;: Setting &lt;file:///home/you/index.html&gt;.username = 'me' No host means no username assert_equals: expected &quot;file:///home/you/index.html&quot; but got &quot;file://me@/home/you/index.html&quot;
</span><span class="cx"> FAIL &lt;area&gt;: Setting &lt;file:///home/you/index.html&gt;.username = 'me' No host means no username assert_equals: expected &quot;file:///home/you/index.html&quot; but got &quot;file://me@/home/you/index.html&quot;
</span><del>-FAIL URL: Setting &lt;unix:/run/foo.socket&gt;.username = 'me' No host means no username assert_equals: expected &quot;unix:/run/foo.socket&quot; but got &quot;unix://me@/run/foo.socket&quot;
</del><ins>+PASS URL: Setting &lt;unix:/run/foo.socket&gt;.username = 'me' No host means no username 
</ins><span class="cx"> FAIL &lt;a&gt;: Setting &lt;unix:/run/foo.socket&gt;.username = 'me' No host means no username assert_equals: expected &quot;unix:/run/foo.socket&quot; but got &quot;unix://me@/run/foo.socket&quot;
</span><span class="cx"> FAIL &lt;area&gt;: Setting &lt;unix:/run/foo.socket&gt;.username = 'me' No host means no username assert_equals: expected &quot;unix:/run/foo.socket&quot; but got &quot;unix://me@/run/foo.socket&quot;
</span><span class="cx"> FAIL URL: Setting &lt;mailto:you@example.net&gt;.username = 'me' Cannot-be-a-base means no username assert_equals: expected &quot;mailto:you@example.net&quot; but got &quot;mailto://me%40you@example.net&quot;
</span><span class="lines">@@ -72,10 +72,10 @@
</span><span class="cx"> PASS URL: Setting &lt;http://example.net&gt;.username = '%c3%89té' Bytes already percent-encoded are left as-is. 
</span><span class="cx"> PASS &lt;a&gt;: Setting &lt;http://example.net&gt;.username = '%c3%89té' Bytes already percent-encoded are left as-is. 
</span><span class="cx"> PASS &lt;area&gt;: Setting &lt;http://example.net&gt;.username = '%c3%89té' Bytes already percent-encoded are left as-is. 
</span><del>-FAIL URL: Setting &lt;file:///home/me/index.html&gt;.password = 'secret' No host means no password assert_equals: expected &quot;file:///home/me/index.html&quot; but got &quot;file://:secret@/home/me/index.html&quot;
</del><ins>+PASS URL: Setting &lt;file:///home/me/index.html&gt;.password = 'secret' No host means no password 
</ins><span class="cx"> FAIL &lt;a&gt;: Setting &lt;file:///home/me/index.html&gt;.password = 'secret' No host means no password assert_equals: expected &quot;file:///home/me/index.html&quot; but got &quot;file://:secret@/home/me/index.html&quot;
</span><span class="cx"> FAIL &lt;area&gt;: Setting &lt;file:///home/me/index.html&gt;.password = 'secret' No host means no password assert_equals: expected &quot;file:///home/me/index.html&quot; but got &quot;file://:secret@/home/me/index.html&quot;
</span><del>-FAIL URL: Setting &lt;unix:/run/foo.socket&gt;.password = 'secret' No host means no password assert_equals: expected &quot;unix:/run/foo.socket&quot; but got &quot;unix://:secret@/run/foo.socket&quot;
</del><ins>+PASS URL: Setting &lt;unix:/run/foo.socket&gt;.password = 'secret' No host means no password 
</ins><span class="cx"> FAIL &lt;a&gt;: Setting &lt;unix:/run/foo.socket&gt;.password = 'secret' No host means no password assert_equals: expected &quot;unix:/run/foo.socket&quot; but got &quot;unix://:secret@/run/foo.socket&quot;
</span><span class="cx"> FAIL &lt;area&gt;: Setting &lt;unix:/run/foo.socket&gt;.password = 'secret' No host means no password assert_equals: expected &quot;unix:/run/foo.socket&quot; but got &quot;unix://:secret@/run/foo.socket&quot;
</span><span class="cx"> FAIL URL: Setting &lt;mailto:me@example.net&gt;.password = 'secret' Cannot-be-a-base means no password assert_equals: expected &quot;mailto:me@example.net&quot; but got &quot;mailto://:secret%40me@example.net&quot;
</span><span class="lines">@@ -129,7 +129,7 @@
</span><span class="cx"> PASS URL: Setting &lt;http://example.net&gt;.host = '0x7F000001:8080' IPv4 address syntax is normalized 
</span><span class="cx"> PASS &lt;a&gt;: Setting &lt;http://example.net&gt;.host = '0x7F000001:8080' IPv4 address syntax is normalized 
</span><span class="cx"> PASS &lt;area&gt;: Setting &lt;http://example.net&gt;.host = '0x7F000001:8080' IPv4 address syntax is normalized 
</span><del>-FAIL URL: Setting &lt;http://example.net&gt;.host = '[::0:01]:2' IPv6 address syntax is normalized assert_equals: expected &quot;http://[::1]:2/&quot; but got &quot;http://[:0/&quot;
</del><ins>+FAIL URL: Setting &lt;http://example.net&gt;.host = '[::0:01]:2' IPv6 address syntax is normalized assert_equals: expected &quot;http://[::1]:2/&quot; but got &quot;http://example.net/&quot;
</ins><span class="cx"> FAIL &lt;a&gt;: Setting &lt;http://example.net&gt;.host = '[::0:01]:2' IPv6 address syntax is normalized assert_equals: expected &quot;http://[::1]:2/&quot; but got &quot;http://[:0/&quot;
</span><span class="cx"> FAIL &lt;area&gt;: Setting &lt;http://example.net&gt;.host = '[::0:01]:2' IPv6 address syntax is normalized assert_equals: expected &quot;http://[::1]:2/&quot; but got &quot;http://[:0/&quot;
</span><span class="cx"> PASS URL: Setting &lt;http://example.net&gt;.host = 'example.com:80' Default port number is removed 
</span><span class="lines">@@ -165,7 +165,7 @@
</span><span class="cx"> PASS URL: Setting &lt;http://example.net/path&gt;.host = 'example.com:8080\stuff' Stuff after a \ delimiter is ignored for special schemes 
</span><span class="cx"> PASS &lt;a&gt;: Setting &lt;http://example.net/path&gt;.host = 'example.com:8080\stuff' Stuff after a \ delimiter is ignored for special schemes 
</span><span class="cx"> PASS &lt;area&gt;: Setting &lt;http://example.net/path&gt;.host = 'example.com:8080\stuff' Stuff after a \ delimiter is ignored for special schemes 
</span><del>-FAIL URL: Setting &lt;view-source+http://example.net/path&gt;.host = 'example.com\stuff' \ is not a delimiter for non-special schemes, and it’s invalid in a domain assert_equals: expected &quot;view-source+http://example.net/path&quot; but got &quot;view-source+http://example.com\\stuff/path&quot;
</del><ins>+PASS URL: Setting &lt;view-source+http://example.net/path&gt;.host = 'example.com\stuff' \ is not a delimiter for non-special schemes, and it’s invalid in a domain 
</ins><span class="cx"> FAIL &lt;a&gt;: Setting &lt;view-source+http://example.net/path&gt;.host = 'example.com\stuff' \ is not a delimiter for non-special schemes, and it’s invalid in a domain assert_equals: expected &quot;view-source+http://example.net/path&quot; but got &quot;view-source+http://example.com\\stuff/path&quot;
</span><span class="cx"> FAIL &lt;area&gt;: Setting &lt;view-source+http://example.net/path&gt;.host = 'example.com\stuff' \ is not a delimiter for non-special schemes, and it’s invalid in a domain assert_equals: expected &quot;view-source+http://example.net/path&quot; but got &quot;view-source+http://example.com\\stuff/path&quot;
</span><span class="cx"> PASS URL: Setting &lt;view-source+http://example.net/path&gt;.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
</span><span class="lines">@@ -180,7 +180,7 @@
</span><span class="cx"> PASS URL: Setting &lt;http://example.net/path&gt;.host = 'example.com:65535' Port numbers are 16 bit integers 
</span><span class="cx"> PASS &lt;a&gt;: Setting &lt;http://example.net/path&gt;.host = 'example.com:65535' Port numbers are 16 bit integers 
</span><span class="cx"> PASS &lt;area&gt;: Setting &lt;http://example.net/path&gt;.host = 'example.com:65535' Port numbers are 16 bit integers 
</span><del>-FAIL URL: Setting &lt;http://example.net/path&gt;.host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though. assert_equals: expected &quot;http://example.com/path&quot; but got &quot;http://example.com:65536/path&quot;
</del><ins>+FAIL URL: Setting &lt;http://example.net/path&gt;.host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though. assert_equals: expected &quot;http://example.com/path&quot; but got &quot;http://example.net/path&quot;
</ins><span class="cx"> FAIL &lt;a&gt;: Setting &lt;http://example.net/path&gt;.host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though. assert_equals: expected &quot;http://example.com/path&quot; but got &quot;http://example.com:65536/path&quot;
</span><span class="cx"> FAIL &lt;area&gt;: Setting &lt;http://example.net/path&gt;.host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though. assert_equals: expected &quot;http://example.com/path&quot; but got &quot;http://example.com:65536/path&quot;
</span><span class="cx"> PASS URL: Setting &lt;mailto:me@example.net&gt;.hostname = 'example.com' Cannot-be-a-base means no host 
</span><span class="lines">@@ -225,7 +225,7 @@
</span><span class="cx"> FAIL URL: Setting &lt;http://example.net/path&gt;.hostname = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes assert_equals: expected &quot;http://example.com/path&quot; but got &quot;http://example.com/stuff/path&quot;
</span><span class="cx"> FAIL &lt;a&gt;: Setting &lt;http://example.net/path&gt;.hostname = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes assert_equals: expected &quot;http://example.com/path&quot; but got &quot;http://example.com/stuff/path&quot;
</span><span class="cx"> FAIL &lt;area&gt;: Setting &lt;http://example.net/path&gt;.hostname = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes assert_equals: expected &quot;http://example.com/path&quot; but got &quot;http://example.com/stuff/path&quot;
</span><del>-FAIL URL: Setting &lt;view-source+http://example.net/path&gt;.hostname = 'example.com\stuff' \ is not a delimiter for non-special schemes, and it’s invalid in a domain assert_equals: expected &quot;view-source+http://example.net/path&quot; but got &quot;view-source+http://example.com\\stuff/path&quot;
</del><ins>+PASS URL: Setting &lt;view-source+http://example.net/path&gt;.hostname = 'example.com\stuff' \ is not a delimiter for non-special schemes, and it’s invalid in a domain 
</ins><span class="cx"> FAIL &lt;a&gt;: Setting &lt;view-source+http://example.net/path&gt;.hostname = 'example.com\stuff' \ is not a delimiter for non-special schemes, and it’s invalid in a domain assert_equals: expected &quot;view-source+http://example.net/path&quot; but got &quot;view-source+http://example.com\\stuff/path&quot;
</span><span class="cx"> FAIL &lt;area&gt;: Setting &lt;view-source+http://example.net/path&gt;.hostname = 'example.com\stuff' \ is not a delimiter for non-special schemes, and it’s invalid in a domain assert_equals: expected &quot;view-source+http://example.net/path&quot; but got &quot;view-source+http://example.com\\stuff/path&quot;
</span><span class="cx"> PASS URL: Setting &lt;http://example.net&gt;.port = '8080' 
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/ChangeLog        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -1,3 +1,558 @@
</span><ins>+2016-10-28  Darin Adler  &lt;darin@apple.com&gt;
+
+        Move all classes in the HTML directory from ExceptionCode to Exception
+        https://bugs.webkit.org/show_bug.cgi?id=163876
+
+        Reviewed by Sam Weinig.
+
+        * bindings/js/JSDOMBinding.cpp:
+        (WebCore::shouldAllowAccessToNode): Deleted.
+        (WebCore::BindingSecurity::shouldAllowAccessToFrame): Moved function into the
+        BindingSecurity namespace. Also changed arguments to references.
+        (WebCore::BindingSecurity::shouldAllowAccessToDOMWindow): Ditto.
+        (WebCore::BindingSecurity::shouldAllowAccessToNode): Changed argument type
+        from pointer to reference.
+
+        * bindings/js/JSDOMBinding.h: Removed top level shouldAllowAccessTo functions,
+        moving all of them into the BindingSecurity namespace. Changed BindingSecurity
+        from a class into a namespace. Added new checkSecurityForNode functions that
+        can be used directly to implement CheckSecurityForNode; they turn the node
+        into a null, which is no change in behavior from what bindings already did.
+
+        * bindings/js/JSDOMWindowCustom.cpp:
+        (WebCore::jsDOMWindowGetOwnPropertySlotRestrictedAccess): Changed argument
+        type for passed-in string to const String&amp; instead of String&amp;.
+        (WebCore::JSDOMWindow::getOwnPropertySlot): Updated for BindingSecurity changes.
+        (WebCore::JSDOMWindow::getOwnPropertySlotByIndex): Ditto.
+        (WebCore::JSDOMWindow::put): Ditto.
+
+        * bindings/js/JSHTMLCanvasElementCustom.cpp:
+        (WebCore::attributesFor3DContext): Renamed from get3DContextAttributes and
+        changed to use a return value instead of an out argument.
+        (WebCore::JSHTMLCanvasElement::getContext): Updated for the above.
+        (WebCore::JSHTMLCanvasElement::toDataURL): Rewrote to handle ExceptionOr
+        and also to use Optional&lt;double&gt; instead of const double*.
+
+        * bindings/js/JSHTMLFrameElementCustom.cpp:
+        (WebCore::JSHTMLFrameElement::setLocation): Moved the logic from
+        allowSettingJavascriptURL in here and updated for BindingSecurity changes.
+
+        * bindings/js/JSHTMLOptionsCollectionCustom.cpp:
+        (WebCore::JSHTMLOptionsCollection::setLength): Use propagateException.
+        Also streamlined the code a bit.
+        (WebCore::JSHTMLOptionsCollection::indexSetter): Updated for new name and
+        argument types for selectElementIndexSetter.
+
+        * bindings/js/JSHTMLSelectElementCustom.cpp:
+        (WebCore::selectElementIndexSetter): Updated name and argument types and
+        to use propagateException.
+        (WebCore::JSHTMLSelectElement::indexSetter): Updated for above.
+        * bindings/js/JSHTMLSelectElementCustom.h: Ditto.
+
+        * bindings/js/JSLocationCustom.cpp:
+        (WebCore::JSLocation::getOwnPropertySlotDelegate): Updated for changes to
+        BindingSecurity.
+        (WebCore::JSLocation::putDelegate): Ditto. Also rearranged logic a bit.
+
+        * bindings/js/ScriptController.cpp:
+        (WebCore::ScriptController::canAccessFromCurrentOrigin): Updated for
+        changes to BindingSecurity.
+
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GenerateImplementation): Removed old support for CheckSecurityForNode.
+        (NativeToJSValue): Added new support for CheckSecurityForNode, which uses
+        the new checkSecurityForNode function, and works properly with ExceptionOr.
+
+        * bindings/scripts/test/JS/JSTestObj.cpp: Updated for change below.
+
+        * dom/ChildNode.idl: Move the remove function to non-legacy exception.
+        Needed now because this needs to match the one in HTMLSelectElement.
+
+        * dom/Element.cpp:
+        (WebCore::Element::dispatchMouseForceWillBegin): Refactored a little bit.
+        (WebCore::Element::mergeWithNextTextNode): Support ExceptionOr for remove.
+        (WebCore::Element::setOuterHTML): Support ExceptionOr for
+        createFragmentForInnerOuterHTML.
+        (WebCore::Element::setInnerHTML): Ditto.
+        (WebCore::Element::insertAdjacentHTML): Ditto.
+
+        * dom/Node.cpp:
+        (WebCore::Node::remove): Use ExceptionOr.
+        (WebCore::Node::normalize): Remove use of IGNORE_EXCEPTION.
+        * dom/Node.h: Use ExceptionOr for remove.
+
+        * dom/Range.cpp:
+        (WebCore::Range::insertNode): Updated for change to remove.
+        (WebCore::Range::createContextualFragment): Updated for change
+        to WebCore::createContextualFragment.
+
+        * dom/ShadowRoot.cpp:
+        (WebCore::ShadowRoot::setInnerHTML): Use ExceptionOr for
+        createFragmentForInnerOuterHTML and replaceChildrenWithFragment.
+
+        * editing/AppendNodeCommand.cpp:
+        (WebCore::AppendNodeCommand::doUnapply): Remove IGNORE_EXCEPTION.
+        * editing/InsertNodeBeforeCommand.cpp:
+        (WebCore::InsertNodeBeforeCommand::doUnapply): Ditto.
+        * editing/MergeIdenticalElementsCommand.cpp:
+        (WebCore::MergeIdenticalElementsCommand::doApply): Ditto.
+        * editing/RemoveNodeCommand.cpp:
+        (WebCore::RemoveNodeCommand::doApply): Ditto.
+        * editing/SplitElementCommand.cpp:
+        (WebCore::SplitElementCommand::doUnapply): Ditto.
+        * editing/SplitTextNodeCommand.cpp:
+        (WebCore::SplitTextNodeCommand::doUnapply): Ditto.
+        * editing/WrapContentsInDummySpanCommand.cpp:
+        (WebCore::WrapContentsInDummySpanCommand::doUnapply): Ditto.
+
+        * editing/Editor.cpp:
+        (WebCore::Editor::insertDictationPhrases): Deleted. Moved this
+        iOS-specific function to EditorIOS.mm.
+        (WebCore::Editor::setDictationPhrasesAsChildOfElement): Ditto.
+        (WebCore::Editor::confirmMarkedText): Ditto.
+        (WebCore::Editor::setTextAsChildOfElement): Ditto.
+        (WebCore::Editor::ensureLastEditCommandHasCurrentSelectionIfOpenForMoreTyping): Ditto.
+
+        * editing/ios/EditorIOS.mm:
+        (WebCore::Editor::fontForSelection): Remove ASSERT_NO_EXCEPTION.
+        (WebCore::Editor::fontAttributesForSelectionStart): Ditto.
+        (WebCore::Editor::insertDictationPhrases): Moved here from Editor.cpp.
+        (WebCore::Editor::setDictationPhrasesAsChildOfElement): Ditto. Also
+        updated code that used remove to not pass an ExceptionCode.
+        (WebCore::Editor::confirmMarkedText): Ditto.
+        (WebCore::Editor::setTextAsChildOfElement): Ditto.
+        (WebCore::Editor::ensureLastEditCommandHasCurrentSelectionIfOpenForMoreTyping): Ditto.
+
+        * editing/mac/EditorMac.mm:
+        (WebCore::Editor::fontForSelection): Remove ASSERT_NO_EXCEPTION.
+        (WebCore::Editor::fontAttributesForSelectionStart): Ditto.
+
+        * editing/markup.cpp:
+        (WebCore::createFragmentForInnerOuterHTML): Use ExceptionOr.
+        (WebCore::createContextualFragment): Ditto.
+        (WebCore::replaceChildrenWithFragment): Ditto.
+        (WebCore::replaceChildrenWithText): Ditto.
+        * editing/markup.h: Updated for above changes.
+
+        * html/BaseChooserOnlyDateAndTimeInputType.cpp:
+        (WebCore::BaseChooserOnlyDateAndTimeInputType::updateAppearance):
+        Removed ASSERT_NO_EXCEPTION.
+
+        * html/BaseDateAndTimeInputType.cpp:
+        (WebCore::BaseDateAndTimeInputType::setValueAsDate): Use ExceptionOr.
+        (WebCore::BaseDateAndTimeInputType::setValueAsDecimal): Ditto.
+        * html/BaseDateAndTimeInputType.h: Updated for above changes.
+
+        * html/DateTimeLocalInputType.cpp:
+        (WebCore::DateTimeLocalInputType::setValueAsDate): Use ExceptionOr.
+        * html/DateTimeLocalInputType.h: Updated for above changes.
+
+        * html/DOMTokenList.cpp:
+        (WebCore::DOMTokenList::validateToken): Use ExceptionOr.
+        (WebCore::DOMTokenList::validateTokens): Ditto.
+        (WebCore::DOMTokenList::addInternal): Ditto.
+        (WebCore::DOMTokenList::add): Ditto.
+        (WebCore::DOMTokenList::removeInternal): Ditto.
+        (WebCore::DOMTokenList::remove): Ditto.
+        (WebCore::DOMTokenList::toggle): Ditto.
+        (WebCore::DOMTokenList::replace): Ditto.
+        (WebCore::DOMTokenList::supports): Ditto.
+        * html/DOMTokenList.h: Updated for above changes.
+        * html/DOMTokenList.idl: Use non-legacy exceptions.
+
+        * html/DOMURL.cpp:
+        (WebCore::DOMURL::DOMURL): Just take the two URL objects and let
+        the create functions do all the processing.
+        (WebCore::DOMURL::create): Use ExceptionOr, and move the processing
+        of the URLs here out of the constructors.
+        (WebCore::DOMURL::setHref): Use ExceptionOr.
+        * html/DOMURL.h: Updated for above changes.
+        * html/DOMURL.idl: Use non-legacy exceptions.
+
+        * html/FTPDirectoryDocument.cpp:
+        (WebCore::FTPDirectoryDocumentParser::appendEntry): Remove
+        IGNORE_EXCEPTION and use releaseReturnValue().
+
+        * html/HTMLCanvasElement.cpp:
+        (WebCore::HTMLCanvasElement::toDataURL): Use ExceptionOr.
+        * html/HTMLCanvasElement.h: Updated for above changes.
+        * html/HTMLCanvasElement.idl: Use non-legacy exception.
+
+        * html/HTMLElement.cpp:
+        (WebCore::HTMLElement::textToFragment): Use ExceptionOr.
+        (WebCore::HTMLElement::setInnerText): Ditto.
+        (WebCore::HTMLElement::setOuterText): Ditto.
+        (WebCore::HTMLElement::setContentEditable): Ditto.
+        (WebCore::HTMLElement::translateAttributeMode): Deleted.
+        (WebCore::HTMLElement::translate): Moved the logic from the
+        translateAttributeMode function in here.
+        * html/HTMLElement.h: Updated for above changes.
+        * html/HTMLElement.idl: Use non-legacy exceptions.
+
+        * html/HTMLEmbedElement.idl: Use non-legacy exception.
+        * html/HTMLFrameElement.idl: Ditto.
+
+        * html/HTMLFrameOwnerElement.cpp:
+        (WebCore::HTMLFrameOwnerElement::getSVGDocument): Use ExceptionOr.
+        * html/HTMLFrameOwnerElement.h: Updated for above.
+
+        * html/HTMLIFrameElement.idl: Use non-legacy exception.
+
+        * html/HTMLInputElement.cpp:
+        (WebCore::HTMLInputElement::stepUp): Use ExceptionOr.
+        (WebCore::HTMLInputElement::stepDown): Ditto.
+        (WebCore::HTMLInputElement::setValue): Ditto.
+        (WebCore::HTMLInputElement::setValueAsDate): Ditto.
+        (WebCore::HTMLInputElement::setValueAsNumber): Ditto.
+        (WebCore::HTMLInputElement::setSize): Ditto.
+        (WebCore::HTMLInputElement::maxLengthAttributeChanged): Use the
+        new internalSetMaxLength function; old code relied on a setMaxLength
+        that was different from the one exposed to bindings.
+        (WebCore::HTMLInputElement::minLengthAttributeChanged): Ditto.
+        (WebCore::HTMLInputElement::setRangeText): Use ExceptionOr.
+        * html/HTMLInputElement.h: Updated for above changes. Also use
+        data member initialization for InputElementClickState instead of
+        a constructor.
+        * html/HTMLInputElement.idl: Use non-legacy exception.
+
+        * html/HTMLMarqueeElement.cpp:
+        (WebCore::HTMLMarqueeElement::setLoop): Use ExceptionOr.
+        (WebCore::HTMLMarqueeElement::renderMarquee): Tweaked.
+        * html/HTMLMarqueeElement.h: Updated for above changes.
+        * html/HTMLMarqueeElement.idl: Ditto.
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::TrackGroup::TrackGroup):
+        Initialize most data members in class definition rather than
+        the constructor.
+        (WebCore::HTMLMediaElement::HTMLMediaElement): Ditto.
+        (WebCore::HTMLMediaElement::~HTMLMediaElement): Updated since
+        removeMediaElement now takes a reference.
+        (WebCore::HTMLMediaElement::updateActiveTextTrackCues): Use
+        a modern for loop to streamline code.
+        (WebCore::HTMLMediaElement::textTrackModeChanged): Updated since
+        track now returns a reference.
+        (WebCore::HTMLMediaElement::setCurrentTimeForBindings): Renamed
+        to prevent ambiguity with the other version that has slightly
+        different semantics and overloading and changed to use ExceptionOr.
+        (WebCore::HTMLMediaElement::playInternal): Updated to use reference.
+        (WebCore::HTMLMediaElement::setVolume): Use ExceptionOr.
+        (WebCore::HTMLMediaElement::mediaPlayerDidAddAudioTrack): Take a
+        reference instead of a PassRefPtr.
+        (WebCore::HTMLMediaElement::mediaPlayerDidAddTextTrack): Ditto.
+        (WebCore::HTMLMediaElement::mediaPlayerDidAddVideoTrack): Ditto.
+        (WebCore::HTMLMediaElement::mediaPlayerDidRemoveAudioTrack): Ditto.
+        (WebCore::HTMLMediaElement::mediaPlayerDidRemoveTextTrack): Ditto.
+        (WebCore::HTMLMediaElement::mediaPlayerDidRemoveVideoTrack): Ditto.
+        (WebCore::HTMLMediaElement::addTextTrack): Use ExceptionOr.
+        (WebCore::HTMLMediaElement::didAddTextTrack): Use a reference.
+        (WebCore::HTMLMediaElement::didRemoveTextTrack): Ditto.
+        (WebCore::HTMLMediaElement::maxBufferedTime): Update to use different
+        interface to time ranges that does not need to deal with exceptions.
+        (WebCore::HTMLMediaElement::setController): Pass references.
+        (WebCore::HTMLMediaElement::outOfBandTrackSources): Use reference.
+        * html/HTMLMediaElement.h: Updated for above.
+        * html/HTMLMediaElement.idl: Use non-legacy exceptions.
+
+        * html/HTMLObjectElement.idl: Use non-legacy exception.
+
+        * html/HTMLOptionElement.cpp:
+        (WebCore::HTMLOptionElement::createForJSConstructor): Use ExceptionOr.
+        * html/HTMLOptionElement.h: Updated for above change.
+        * html/HTMLOptionElement.idl: Use non-legacy exception.
+
+        * html/HTMLOptionsCollection.cpp:
+        (WebCore::HTMLOptionsCollection::setLength): Use ExceptionOr.
+        * html/HTMLOptionsCollection.h: Updated for above change.
+        * html/HTMLOptionsCollection.idl: Use non-legacy exception.
+
+        * html/HTMLProgressElement.cpp:
+        (WebCore::HTMLProgressElement::setValue): Removed non-finite handling
+        because that is now handled by the bindings.
+        (WebCore::HTMLProgressElement::setMax): Ditto.
+        * html/HTMLProgressElement.h: Updated for above.
+        * html/HTMLProgressElement.idl: Changed attributes to be double instead
+        of unrestricted double, and this was able to remove exceptions.
+
+        * html/HTMLSelectElement.cpp:
+        (WebCore::HTMLSelectElement::removeByIndex): Drop IGNORE_EXCEPTION.
+        (WebCore::HTMLSelectElement::remove): Use ExceptionOr.
+        (WebCore::HTMLSelectElement::setOption): Ditto.
+        (WebCore::HTMLSelectElement::setLength): Ditto.
+        * html/HTMLSelectElement.h: Updated for above changes.
+        * html/HTMLSelectElement.idl: Use non-legacy exceptions.
+
+        * html/HTMLTableElement.cpp:
+        (WebCore::HTMLTableElement::setCaption): Use ExceptionOr.
+        (WebCore::HTMLTableElement::setTHead): Ditto.
+        (WebCore::HTMLTableElement::setTFoot): Ditto.
+        (WebCore::HTMLTableElement::createTHead): Streamline a bit.
+        (WebCore::HTMLTableElement::deleteTHead): Ditto.
+        (WebCore::HTMLTableElement::createTFoot): Ditto.
+        (WebCore::HTMLTableElement::deleteTFoot): Ditto.
+        (WebCore::HTMLTableElement::createTBody): Ditto.
+        (WebCore::HTMLTableElement::createCaption): Ditto.
+        (WebCore::HTMLTableElement::insertRow): Use ExceptionOr.
+        (WebCore::HTMLTableElement::deleteRow): Ditto.
+        * html/HTMLTableElement.h: Updated for above changes.
+        * html/HTMLTableElement.idl: Use non-legacy exceptions.
+
+        * html/HTMLTableRowElement.cpp:
+        (WebCore::findTable): Added.
+        (WebCore::HTMLTableRowElement::rowIndex): Streamline a bit using the
+        findTable function above.
+        (WebCore::findRows): Added.
+        (WebCore::HTMLTableRowElement::sectionRowIndex): Streamline a bit using
+        the findRows function above.
+        (WebCore::HTMLTableRowElement::insertCell): Use ExceptionOr.
+        (WebCore::HTMLTableRowElement::deleteCell): Ditto.
+        (WebCore::HTMLTableRowElement::setCells): Deleted.
+        * html/HTMLTableRowElement.h: Updated for the above. The setCells function
+        was dead code.
+        * html/HTMLTableRowElement.idl: Use non-legacy exceptions.
+
+        * html/HTMLTableSectionElement.cpp:
+        (WebCore::HTMLTableSectionElement::additionalPresentationAttributeStyle):
+        Tweaked a bit to use early return.
+        (WebCore::HTMLTableSectionElement::insertRow): Use ExceptionOr.
+        (WebCore::HTMLTableSectionElement::deleteRow): Ditto.
+        (WebCore::HTMLTableSectionElement::numRows): Use childrenOfType.
+        (WebCore::HTMLTableSectionElement::align): Deleted.
+        (WebCore::HTMLTableSectionElement::setAlign): Deleted.
+        (WebCore::HTMLTableSectionElement::ch): Deleted.
+        (WebCore::HTMLTableSectionElement::setCh): Deleted.
+        (WebCore::HTMLTableSectionElement::chOff): Deleted.
+        (WebCore::HTMLTableSectionElement::setChOff): Deleted.
+        (WebCore::HTMLTableSectionElement::vAlign): Deleted.
+        (WebCore::HTMLTableSectionElement::setVAlign): Deleted.
+        * html/HTMLTableSectionElement.h: Updated for the above.
+        * html/HTMLTableSectionElement.idl: Use non-legacy exception.
+
+        * html/HTMLTextAreaElement.cpp:
+        (WebCore::HTMLTextAreaElement::maxLengthAttributeChanged): Use the new
+        internalSetMaxLength function; old code relied on a setMaxLength
+        that was different from the one exposed to bindings.
+        (WebCore::HTMLTextAreaElement::minLengthAttributeChanged): Ditto.
+        (WebCore::HTMLTextAreaElement::updatePlaceholderText): Removed
+        ASSERT_NO_EXCEPTION.
+        * html/HTMLTextAreaElement.idl: Use non-legacy exceptions.
+
+        * html/HTMLTextFormControlElement.cpp:
+        (WebCore::HTMLTextFormControlElement::setRangeText): Use ExceptionOr.
+        (WebCore::HTMLTextFormControlElement::setInnerTextValue): Ditto.
+        (WebCore::HTMLTextFormControlElement::setMaxLength): Ditto.
+        (WebCore::HTMLTextFormControlElement::setMinLength): Ditto.
+        * html/HTMLTextFormControlElement.h: Updated for above changes.
+        Also renamed the setMin/MaxLength function overloads for internal use
+        to internSetMin/MaxLength and made them protected.
+
+        * html/HTMLTrackElement.cpp:
+        (WebCore::HTMLTrackElement::~HTMLTrackElement): Call clearElement on the
+        track to break the connection. Before this was done as a side effect of
+        clearClient, but that is called in other cases where we do not want to
+        clear the link back to the track element.
+        (WebCore::HTMLTrackElement::insertedInto): Removed code that uses the
+        track function for its side effect of creating a track; no longer needed.
+        Rewrote this so it's more symmetric with removedFrom.
+        (WebCore::HTMLTrackElement::removedFrom): Pass reference. Also reordered
+        and removed an unnecessary check for null parent.
+        (WebCore::HTMLTrackElement::parseAttribute): Use track.
+        (WebCore::HTMLTrackElement::kind): Ditto.
+        (WebCore::HTMLTrackElement::track): Renamed ensureTrack to this. Also
+        removed the redundant code to call setTrackElement; we no longer change
+        the track element on a track until the track element is destroyed.
+        (WebCore::HTMLTrackElement::scheduleLoad): Use track.
+        (WebCore::HTMLTrackElement::loadTimerFired): Ditto.
+        (WebCore::HTMLTrackElement::setReadyState): Ditto.
+        (WebCore::HTMLTrackElement::readyState): Ditto.
+        (WebCore::HTMLTrackElement::mediaElement): Rearranged to use early return.
+        * html/HTMLTrackElement.h: Updated for above changes.
+
+        * html/HTMLVideoElement.cpp:
+        (WebCore::HTMLVideoElement::webkitEnterFullscreen): Use ExceptionOr.
+        * html/HTMLVideoElement.h: Removed the functions used just for
+        capitalization reasons; that's now handled in the bindings.
+        * html/HTMLVideoElement.idl: Use non-legacy bindings and ImplementedAs.
+
+        * html/ImageData.cpp:
+        (WebCore::ImageData::create): Return ExceptionOr.
+        * html/ImageData.h: Updated for above changes.
+        * html/ImageData.idl: Use non-legacy exceptions.
+
+        * html/InputType.cpp:
+        (WebCore::InputType::setValueAsDate): Use ExceptionOr.
+        (WebCore::InputType::setValueAsDouble): Ditto.
+        (WebCore::InputType::setValueAsDecimal): Ditto.
+        (WebCore::InputType::applyStep): Ditto.
+        (WebCore::InputType::stepUp): Ditto.
+        (WebCore::InputType::stepUpFromRenderer): Removed IGNORE_EXCEPTION.
+        * html/InputType.h: Updated for the above.
+
+        * html/MediaController.cpp:
+        (MediaController::addMediaElement): Take a reference instead of a pointer.
+        (MediaController::removeMediaElement): Ditto.
+        (MediaController::containsMediaElement): Ditto.
+        (MediaController::setVolume): Use ExceptionOr.
+        (MediaController::bringElementUpToSpeed): Take a reference.
+        * html/MediaController.h: Updated for above changes. Also made lots of
+        function overrides private.
+        * html/MediaController.idl: Use non-legacy exception.
+
+        * html/MediaControllerInterface.h: Use ExceptionOr for setVolume.
+
+        * html/NumberInputType.cpp:
+        (WebCore::RealNumberRenderSize::max): Use aggregate initialization instead
+        of a constructor.
+        (WebCore::calculateRenderSize): Ditto.
+        (WebCore::NumberInputType::setValueAsDouble): Use ExceptionOr.
+        (WebCore::NumberInputType::setValueAsDecimal): Ditto.
+        * html/NumberInputType.h: Updated for above changes.
+
+        * html/RangeInputType.cpp:
+        (WebCore::RangeInputType::RangeInputType): Initialize scalar data member
+        in class definition instead of here.
+        (WebCore::RangeInputType::setValueAsDecimal): Use ExceptionOr.
+        (WebCore::RangeInputType::handleKeydownEvent): Removed IGNORE_EXCEPTION.
+        * html/RangeInputType.h: Updated for above changes.
+
+        * html/TextFieldInputType.cpp:
+        (WebCore::TextFieldInputType::updatePlaceholderText): Removed
+        ASSERT_NO_EXCEPTION.
+
+        * html/TimeRanges.cpp:
+        (WebCore::TimeRanges::start): Use ExceptionOr.
+        (WebCore::TimeRanges::end): Ditto.
+        * html/TimeRanges.h: Updated for the above.
+        * html/TimeRanges.idl: Use non-legacy exceptions.
+
+        * html/URLUtils.idl: Use non-legacy exception.
+
+        * html/ValidationMessage.cpp:
+        (WebCore::ValidationMessage::setMessageDOMAndStartTimer): Removed
+        ASSERT_NO_EXCEPTION, IGNORE_EXCEPTION, and other exception-ignoring idioms.
+        * html/parser/HTMLTreeBuilder.cpp:
+        (WebCore::HTMLTreeBuilder::processStartTagForInBody): Ditto.
+        * html/shadow/MediaControlElementTypes.cpp:
+        (WebCore::MediaControlVolumeSliderElement::defaultEventHandler): Ditto.
+        * html/shadow/MediaControlElements.cpp:
+        (WebCore::MediaControlPanelElement::setPosition): Ditto.
+        (WebCore::MediaControlPanelElement::resetPosition): Ditto.
+        (WebCore::MediaControlStatusDisplayElement::update): Ditto.
+        (WebCore::MediaControlClosedCaptionsTrackListElement::updateDisplay): Ditto.
+        (WebCore::MediaControlFullscreenVolumeMinButtonElement::defaultEventHandler): Ditto.
+        (WebCore::MediaControlFullscreenVolumeMaxButtonElement::defaultEventHandler): Ditto.
+        * html/shadow/MediaControls.cpp:
+        (WebCore::MediaControls::updateCurrentTimeDisplay): Ditto.
+        * html/shadow/MediaControlsApple.cpp:
+        (WebCore::MediaControlsApple::updateCurrentTimeDisplay): Ditto.
+
+
+        * html/track/LoadableTextTrack.cpp:
+        (WebCore::LoadableTextTrack::LoadableTextTrack): Take reference.
+        (WebCore::LoadableTextTrack::~LoadableTextTrack): Deleted.
+        (WebCore::LoadableTextTrack::clearClient): Deleted override. We no longer
+        want to clear m_trackElement when clearing the client.
+        (WebCore::LoadableTextTrack::setTrackElement): Deleted.
+        (WebCore::LoadableTextTrack::id): Changed to use
+        attributeWithoutSynchronization for better performance and idAttr instead
+        of a string constant.
+        * html/track/LoadableTextTrack.h: Updated for above changes. Added a new
+        clearElement function. Made the element and isDefault functions private.
+
+        * html/track/VTTCue.cpp:
+        (WebCore::VTTCue::~VTTCue): Removed ASSERT_NO_EXCEPTION, IGNORE_EXCEPTION,
+        and other exception-ignoring idioms.
+        (WebCore::VTTCue::removeDisplayTree): Ditto.
+        * html/track/VTTRegion.cpp:
+        (WebCore::VTTRegion::displayLastTextTrackCueBox): Ditto.
+        (WebCore::VTTRegion::willRemoveTextTrackCueBox): Ditto.
+
+        * inspector/InspectorDOMAgent.cpp:
+        (WebCore::InspectorDOMAgent::pushNodeByBackendIdToFrontend):
+        Rewrote to avoid multiplehash table lookups and added a FIXME about
+        the peculiar code here.
+        (WebCore::InspectorDOMAgent::resolveNode): Streamlined.
+        (WebCore::InspectorDOMAgent::nodeAsScriptValue): Use the new
+        checkSecurityForNode instead of the old shouldAllowAccessToNode.
+
+        * platform/graphics/ImageBuffer.h: Take Optional&lt;double&gt; instead of
+        const double* in toDataURL. Renamed ImageDataToDataURL to just dataURL.
+
+        * platform/graphics/MediaPlayer.cpp:
+        (WebCore::MediaPlayer::addAudioTrack): Take a reference instead of PassRefPtr.
+        (WebCore::MediaPlayer::removeAudioTrack): Ditto.
+        (WebCore::MediaPlayer::addTextTrack): Ditto.
+        (WebCore::MediaPlayer::removeTextTrack): Ditto.
+        (WebCore::MediaPlayer::addVideoTrack): Ditto.
+        (WebCore::MediaPlayer::removeVideoTrack): Ditto.
+        * platform/graphics/MediaPlayer.h: Updated for the above.
+
+        * platform/graphics/PlatformTimeRanges.h: Exported a couple of functions
+        that are now used in WebKit.
+
+        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
+        (WebCore::MediaPlayerPrivateAVFoundation::clearTextTracks): Use a modern for loop.
+        (WebCore::MediaPlayerPrivateAVFoundation::processNewAndRemovedTextTracks):
+        Fixed a bug that would cause this function to fail to process half the tracks.
+        Also updated for the change from PassRefPtr to references.
+
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
+        (WebCore::determineChangedTracksFromNewTracksAndOldItems): Pass references.
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::audioSourceProvider): Ditto.
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::processMetadataTrack): Ditto.
+        (WebCore::assetMetadataKeyNames): Tweaked formatting.
+        (WebCore::itemKVOProperties): Ditto.
+        (WebCore::playerKVOProperties): Ditto.
+
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
+        (WebCore::updateTracksOfType): Pass references.
+
+        * platform/graphics/cairo/ImageBufferCairo.cpp:
+        (WebCore::ImageBuffer::toDataURL): Use Optional&lt;double&gt;
+
+        * platform/graphics/cg/ImageBufferCG.cpp:
+        (WebCore::createBitmapImageAfterScalingIfNeeded): Use auto.
+        (WebCore::encodeImage): Ditto. Also renamed from CGImageEncodeToData.
+        (WebCore::dataURL): Ditto. Also renamed from CGImageToDataURL and from
+        ImageDataToDataURL.
+        (WebCore::ImageBuffer::toDataURL): Ditto.
+
+        * platform/graphics/efl/ImageBufferEfl.cpp:
+        (WebCore::encodeImageJPEG): Use Optional&lt;double&gt;
+        (WebCore::ImageBuffer::toDataURL): Ditto.
+
+        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
+        (WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfVideo): Pass
+        a reference instead of pointer.
+        (WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfAudio): Ditto.
+        (WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfText): Ditto.
+        (WebCore::MediaPlayerPrivateGStreamer::processMpegTsSection): Ditto.
+        (WebCore::MediaPlayerPrivateGStreamer::processTableOfContents): Ditto.
+
+        * platform/graphics/gtk/ImageBufferGtk.cpp:
+        (WebCore::encodeImage): Use Optional&lt;double&gt;
+        (WebCore::ImageBuffer::toDataURL): Ditto.
+
+        * platform/graphics/win/ImageBufferDirect2D.cpp:
+        (WebCore::ImageBuffer::toDataURL): Use Optional&lt;double&gt;
+
+        * platform/image-encoders/JPEGImageEncoder.cpp:
+        (WebCore::compressRGBABigEndianToJPEG): Use Optional&lt;double&gt;
+        * platform/image-encoders/JPEGImageEncoder.h: Ditto.
+
+        * platform/ios/WebPlaybackSessionInterfaceAVKit.mm:
+        (WebCore::WebPlaybackSessionInterfaceAVKit::seekableRangesChanged):
+        Updated for change to TimeRanges.
+
+        * platform/mac/WebVideoFullscreenHUDWindowController.mm:
+        (-[WebVideoFullscreenHUDWindowController setVolume:]): Removed IGNORE_EXCEPTION.
+        * xml/parser/XMLDocumentParserLibxml2.cpp:
+        (WebCore::XMLDocumentParser::endElementNs): Ditto.
+
+        * rendering/RenderThemeGtk.cpp:
+        (WebCore::RenderThemeGtk::paintMediaSliderTrack): Updated for changes to
+        the TimeRanges class.
+
</ins><span class="cx"> 2016-10-28  Dave Hyatt  &lt;hyatt@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [CSS Parser] Allow @font-face src descriptor's format function to contain identifiers
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -346,31 +346,19 @@
</span><span class="cx">     return !applyMethod.isUndefined();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool shouldAllowAccessToNode(ExecState* exec, Node* node)
</del><ins>+bool BindingSecurity::shouldAllowAccessToFrame(ExecState&amp; state, Frame&amp; frame, String&amp; message)
</ins><span class="cx"> {
</span><del>-    return BindingSecurity::shouldAllowAccessToNode(exec, node);
-}
-
-bool shouldAllowAccessToFrame(ExecState* exec, Frame* target)
-{
-    return BindingSecurity::shouldAllowAccessToFrame(exec, target);
-}
-
-bool shouldAllowAccessToFrame(ExecState* exec, Frame* frame, String&amp; message)
-{
-    if (!frame)
-        return false;
-    if (BindingSecurity::shouldAllowAccessToFrame(exec, frame, DoNotReportSecurityError))
</del><ins>+    if (BindingSecurity::shouldAllowAccessToFrame(&amp;state, &amp;frame, DoNotReportSecurityError))
</ins><span class="cx">         return true;
</span><del>-    message = frame-&gt;document()-&gt;domWindow()-&gt;crossDomainAccessErrorMessage(activeDOMWindow(exec));
</del><ins>+    message = frame.document()-&gt;domWindow()-&gt;crossDomainAccessErrorMessage(activeDOMWindow(&amp;state));
</ins><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool shouldAllowAccessToDOMWindow(ExecState* exec, DOMWindow&amp; target, String&amp; message)
</del><ins>+bool BindingSecurity::shouldAllowAccessToDOMWindow(ExecState&amp; state, DOMWindow&amp; globalObject, String&amp; message)
</ins><span class="cx"> {
</span><del>-    if (BindingSecurity::shouldAllowAccessToDOMWindow(exec, target, DoNotReportSecurityError))
</del><ins>+    if (BindingSecurity::shouldAllowAccessToDOMWindow(&amp;state, globalObject, DoNotReportSecurityError))
</ins><span class="cx">         return true;
</span><del>-    message = target.crossDomainAccessErrorMessage(activeDOMWindow(exec));
</del><ins>+    message = globalObject.crossDomainAccessErrorMessage(activeDOMWindow(&amp;state));
</ins><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -788,9 +776,9 @@
</span><span class="cx">     return target &amp;&amp; canAccessDocument(state, target-&gt;document(), reportingOption);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool BindingSecurity::shouldAllowAccessToNode(JSC::ExecState* state, Node* target)
</del><ins>+bool BindingSecurity::shouldAllowAccessToNode(JSC::ExecState&amp; state, Node* target)
</ins><span class="cx"> {
</span><del>-    return target &amp;&amp; canAccessDocument(state, &amp;target-&gt;document(), LogSecurityError);
</del><ins>+    return !target || canAccessDocument(&amp;state, &amp;target-&gt;document(), LogSecurityError);
</ins><span class="cx"> }
</span><span class="cx">     
</span><span class="cx"> static EncodedJSValue throwTypeError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, const String&amp; errorMessage)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMBinding.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -282,24 +282,17 @@
</span><span class="cx"> template&lt;typename T, typename JSType&gt; Vector&lt;Ref&lt;T&gt;&gt; toRefNativeArray(JSC::ExecState&amp;, JSC::JSValue);
</span><span class="cx"> WEBCORE_EXPORT bool hasIteratorMethod(JSC::ExecState&amp;, JSC::JSValue);
</span><span class="cx"> 
</span><del>-bool shouldAllowAccessToNode(JSC::ExecState*, Node*);
-bool shouldAllowAccessToFrame(JSC::ExecState*, Frame*);
-bool shouldAllowAccessToFrame(JSC::ExecState*, Frame*, String&amp; message);
-bool shouldAllowAccessToDOMWindow(JSC::ExecState*, DOMWindow&amp;, String&amp; message);
-
-enum SecurityReportingOption {
-    DoNotReportSecurityError,
-    LogSecurityError, // Legacy behavior.
-    ThrowSecurityError
</del><ins>+enum SecurityReportingOption { DoNotReportSecurityError, LogSecurityError, ThrowSecurityError };
+namespace BindingSecurity {
+    template&lt;typename T&gt; T* checkSecurityForNode(JSC::ExecState&amp;, T*);
+    template&lt;typename T&gt; ExceptionOr&lt;T*&gt; checkSecurityForNode(JSC::ExecState&amp;, ExceptionOr&lt;T*&gt;&amp;&amp;);
+    bool shouldAllowAccessToDOMWindow(JSC::ExecState*, DOMWindow&amp;, SecurityReportingOption = LogSecurityError);
+    bool shouldAllowAccessToDOMWindow(JSC::ExecState&amp;, DOMWindow&amp;, String&amp; message);
+    bool shouldAllowAccessToFrame(JSC::ExecState*, Frame*, SecurityReportingOption = LogSecurityError);
+    bool shouldAllowAccessToFrame(JSC::ExecState&amp;, Frame&amp;, String&amp; message);
+    bool shouldAllowAccessToNode(JSC::ExecState&amp;, Node*);
</ins><span class="cx"> };
</span><span class="cx"> 
</span><del>-class BindingSecurity {
-public:
-    static bool shouldAllowAccessToNode(JSC::ExecState*, Node*);
-    static bool shouldAllowAccessToDOMWindow(JSC::ExecState*, DOMWindow&amp;, SecurityReportingOption = LogSecurityError);
-    static bool shouldAllowAccessToFrame(JSC::ExecState*, Frame*, SecurityReportingOption = LogSecurityError);
-};
-
</del><span class="cx"> void printErrorMessageForFrame(Frame*, const String&amp; message);
</span><span class="cx"> 
</span><span class="cx"> String propertyNameToString(JSC::PropertyName);
</span><span class="lines">@@ -780,4 +773,16 @@
</span><span class="cx">     return toJSNewlyCreated(&amp;state, &amp;globalObject, value.releaseReturnValue());
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+template&lt;typename T&gt; inline T* BindingSecurity::checkSecurityForNode(JSC::ExecState&amp; state, T* node)
+{
+    return shouldAllowAccessToNode(state, node) ? node : nullptr;
+}
+
+template&lt;typename T&gt; inline ExceptionOr&lt;T*&gt; BindingSecurity::checkSecurityForNode(JSC::ExecState&amp; state, ExceptionOr&lt;T*&gt;&amp;&amp; value)
+{
+    if (value.hasException())
+        return WTFMove(value);
+    return checkSecurityForNode(state, value.releaseReturnValue());
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWindowCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -73,7 +73,7 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-static bool jsDOMWindowGetOwnPropertySlotRestrictedAccess(JSDOMWindow* thisObject, Frame* frame, ExecState* exec, PropertyName propertyName, PropertySlot&amp; slot, String&amp; errorMessage)
</del><ins>+static bool jsDOMWindowGetOwnPropertySlotRestrictedAccess(JSDOMWindow* thisObject, Frame* frame, ExecState* exec, PropertyName propertyName, PropertySlot&amp; slot, const String&amp; errorMessage)
</ins><span class="cx"> {
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="lines">@@ -163,12 +163,12 @@
</span><span class="cx"> // (1) indexed properties,
</span><span class="cx"> // (2) regular own properties,
</span><span class="cx"> // (3) named properties (in fact, these shouldn't be on the window, should be on the NPO).
</span><del>-bool JSDOMWindow::getOwnPropertySlot(JSObject* object, ExecState* exec, PropertyName propertyName, PropertySlot&amp; slot)
</del><ins>+bool JSDOMWindow::getOwnPropertySlot(JSObject* object, ExecState* state, PropertyName propertyName, PropertySlot&amp; slot)
</ins><span class="cx"> {
</span><span class="cx">     // (1) First, indexed properties.
</span><span class="cx">     // Hand off all indexed access to getOwnPropertySlotByIndex, which supports the indexed getter.
</span><span class="cx">     if (Optional&lt;unsigned&gt; index = parseIndex(propertyName))
</span><del>-        return getOwnPropertySlotByIndex(object, exec, index.value(), slot);
</del><ins>+        return getOwnPropertySlotByIndex(object, state, index.value(), slot);
</ins><span class="cx"> 
</span><span class="cx">     auto* thisObject = jsCast&lt;JSDOMWindow*&gt;(object);
</span><span class="cx">     auto* frame = thisObject-&gt;wrapped().frame();
</span><span class="lines">@@ -175,8 +175,8 @@
</span><span class="cx"> 
</span><span class="cx">     // Hand off all cross-domain/frameless access to jsDOMWindowGetOwnPropertySlotRestrictedAccess.
</span><span class="cx">     String errorMessage;
</span><del>-    if (!frame || !shouldAllowAccessToDOMWindow(exec, thisObject-&gt;wrapped(), errorMessage))
-        return jsDOMWindowGetOwnPropertySlotRestrictedAccess(thisObject, frame, exec, propertyName, slot, errorMessage);
</del><ins>+    if (!frame || !BindingSecurity::shouldAllowAccessToDOMWindow(*state, thisObject-&gt;wrapped(), errorMessage))
+        return jsDOMWindowGetOwnPropertySlotRestrictedAccess(thisObject, frame, state, propertyName, slot, errorMessage);
</ins><span class="cx">     
</span><span class="cx">     // FIXME: this need more explanation.
</span><span class="cx">     // (Particularly, is it correct that this exists here but not in getOwnPropertySlotByIndex?)
</span><span class="lines">@@ -184,11 +184,11 @@
</span><span class="cx"> 
</span><span class="cx">     // (2) Regular own properties.
</span><span class="cx">     PropertySlot slotCopy = slot;
</span><del>-    if (Base::getOwnPropertySlot(thisObject, exec, propertyName, slot)) {
</del><ins>+    if (Base::getOwnPropertySlot(thisObject, state, propertyName, slot)) {
</ins><span class="cx">         // Detect when we're getting the property 'showModalDialog', this is disabled, and has its original value.
</span><del>-        bool isShowModalDialogAndShouldHide = propertyName == exec-&gt;propertyNames().showModalDialog
</del><ins>+        bool isShowModalDialogAndShouldHide = propertyName == state-&gt;propertyNames().showModalDialog
</ins><span class="cx">             &amp;&amp; !DOMWindow::canShowModalDialog(frame)
</span><del>-            &amp;&amp; slot.isValue() &amp;&amp; isHostFunction(slot.getValue(exec, propertyName), jsDOMWindowInstanceFunctionShowModalDialog);
</del><ins>+            &amp;&amp; slot.isValue() &amp;&amp; isHostFunction(slot.getValue(state, propertyName), jsDOMWindowInstanceFunctionShowModalDialog);
</ins><span class="cx">         // Unless we're in the showModalDialog special case, we're done.
</span><span class="cx">         if (!isShowModalDialogAndShouldHide)
</span><span class="cx">             return true;
</span><span class="lines">@@ -196,7 +196,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(USER_MESSAGE_HANDLERS)
</span><del>-    if (propertyName == exec-&gt;propertyNames().webkit &amp;&amp; thisObject-&gt;wrapped().shouldHaveWebKitNamespaceForWorld(thisObject-&gt;world())) {
</del><ins>+    if (propertyName == state-&gt;propertyNames().webkit &amp;&amp; thisObject-&gt;wrapped().shouldHaveWebKitNamespaceForWorld(thisObject-&gt;world())) {
</ins><span class="cx">         slot.setCacheableCustom(thisObject, DontDelete | ReadOnly, jsDOMWindowWebKit);
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="lines">@@ -209,7 +209,7 @@
</span><span class="cx"> // (1) indexed properties,
</span><span class="cx"> // (2) regular own properties,
</span><span class="cx"> // (3) named properties (in fact, these shouldn't be on the window, should be on the NPO).
</span><del>-bool JSDOMWindow::getOwnPropertySlotByIndex(JSObject* object, ExecState* exec, unsigned index, PropertySlot&amp; slot)
</del><ins>+bool JSDOMWindow::getOwnPropertySlotByIndex(JSObject* object, ExecState* state, unsigned index, PropertySlot&amp; slot)
</ins><span class="cx"> {
</span><span class="cx">     auto* thisObject = jsCast&lt;JSDOMWindow*&gt;(object);
</span><span class="cx">     auto* frame = thisObject-&gt;wrapped().frame();
</span><span class="lines">@@ -220,22 +220,22 @@
</span><span class="cx">     // (1) First, indexed properties.
</span><span class="cx">     // These are also allowed cross-orgin, so come before the access check.
</span><span class="cx">     if (frame &amp;&amp; index &lt; frame-&gt;tree().scopedChildCount()) {
</span><del>-        slot.setValue(thisObject, ReadOnly | DontDelete | DontEnum, toJS(exec, frame-&gt;tree().scopedChild(index)-&gt;document()-&gt;domWindow()));
</del><ins>+        slot.setValue(thisObject, ReadOnly | DontDelete | DontEnum, toJS(state, frame-&gt;tree().scopedChild(index)-&gt;document()-&gt;domWindow()));
</ins><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Hand off all cross-domain/frameless access to jsDOMWindowGetOwnPropertySlotRestrictedAccess.
</span><span class="cx">     String errorMessage;
</span><del>-    if (!frame || !shouldAllowAccessToDOMWindow(exec, thisObject-&gt;wrapped(), errorMessage))
-        return jsDOMWindowGetOwnPropertySlotRestrictedAccess(thisObject, frame, exec, Identifier::from(exec, index), slot, errorMessage);
</del><ins>+    if (!frame || !BindingSecurity::shouldAllowAccessToDOMWindow(*state, thisObject-&gt;wrapped(), errorMessage))
+        return jsDOMWindowGetOwnPropertySlotRestrictedAccess(thisObject, frame, state, Identifier::from(state, index), slot, errorMessage);
</ins><span class="cx"> 
</span><span class="cx">     // (2) Regular own properties.
</span><del>-    return Base::getOwnPropertySlotByIndex(thisObject, exec, index, slot);
</del><ins>+    return Base::getOwnPropertySlotByIndex(thisObject, state, index, slot);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool JSDOMWindow::put(JSCell* cell, ExecState* exec, PropertyName propertyName, JSValue value, PutPropertySlot&amp; slot)
</del><ins>+bool JSDOMWindow::put(JSCell* cell, ExecState* state, PropertyName propertyName, JSValue value, PutPropertySlot&amp; slot)
</ins><span class="cx"> {
</span><del>-    VM&amp; vm = exec-&gt;vm();
</del><ins>+    VM&amp; vm = state-&gt;vm();
</ins><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     auto* thisObject = jsCast&lt;JSDOMWindow*&gt;(cell);
</span><span class="lines">@@ -243,19 +243,19 @@
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     String errorMessage;
</span><del>-    if (!shouldAllowAccessToDOMWindow(exec, thisObject-&gt;wrapped(), errorMessage)) {
</del><ins>+    if (!BindingSecurity::shouldAllowAccessToDOMWindow(*state, thisObject-&gt;wrapped(), errorMessage)) {
</ins><span class="cx">         // We only allow setting &quot;location&quot; attribute cross-origin.
</span><del>-        if (propertyName == exec-&gt;propertyNames().location) {
</del><ins>+        if (propertyName == state-&gt;propertyNames().location) {
</ins><span class="cx">             bool putResult = false;
</span><del>-            if (lookupPut(exec, propertyName, thisObject, value, *s_info.staticPropHashTable, slot, putResult))
</del><ins>+            if (lookupPut(state, propertyName, thisObject, value, *s_info.staticPropHashTable, slot, putResult))
</ins><span class="cx">                 return putResult;
</span><span class="cx">             return false;
</span><span class="cx">         }
</span><del>-        throwSecurityError(*exec, scope, errorMessage);
</del><ins>+        throwSecurityError(*state, scope, errorMessage);
</ins><span class="cx">         return false;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return Base::put(thisObject, exec, propertyName, value, slot);
</del><ins>+    return Base::put(thisObject, state, propertyName, value, slot);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool JSDOMWindow::putByIndex(JSCell* cell, ExecState* exec, unsigned index, JSValue value, bool shouldThrow)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSHTMLCanvasElementCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -44,14 +44,12 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEBGL)
</span><del>-static void get3DContextAttributes(ExecState&amp; state, RefPtr&lt;CanvasContextAttributes&gt;&amp; attrs)
</del><ins>+
+static RefPtr&lt;CanvasContextAttributes&gt; attributesFor3DContext(ExecState&amp; state, ThrowScope&amp; scope)
</ins><span class="cx"> {
</span><del>-    VM&amp; vm = state.vm();
-    auto scope = DECLARE_THROW_SCOPE(vm);
-
</del><span class="cx">     JSValue initializerValue = state.argument(1);
</span><span class="cx">     if (initializerValue.isUndefinedOrNull())
</span><del>-        return;
</del><ins>+        return nullptr;
</ins><span class="cx">     
</span><span class="cx">     JSObject* initializerObject = initializerValue.toObject(&amp;state);
</span><span class="cx">     ASSERT_UNUSED(scope, !scope.exception());
</span><span class="lines">@@ -67,8 +65,9 @@
</span><span class="cx">     dictionary.tryGetProperty(&quot;preserveDrawingBuffer&quot;, graphicsAttrs.preserveDrawingBuffer);
</span><span class="cx">     dictionary.tryGetProperty(&quot;preferLowPowerToHighPerformance&quot;, graphicsAttrs.preferLowPowerToHighPerformance);
</span><span class="cx"> 
</span><del>-    attrs = WebGLContextAttributes::create(graphicsAttrs);
</del><ins>+    return WebGLContextAttributes::create(graphicsAttrs);
</ins><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> JSValue JSHTMLCanvasElement::getContext(ExecState&amp; state)
</span><span class="lines">@@ -82,15 +81,16 @@
</span><span class="cx">     HTMLCanvasElement&amp; canvas = wrapped();
</span><span class="cx">     const String&amp; contextId = state.uncheckedArgument(0).toWTFString(&amp;state);
</span><span class="cx">     
</span><del>-    RefPtr&lt;CanvasContextAttributes&gt; attrs;
</del><ins>+    RefPtr&lt;CanvasContextAttributes&gt; attributes;
+
</ins><span class="cx"> #if ENABLE(WEBGL)
</span><span class="cx">     if (HTMLCanvasElement::is3dType(contextId)) {
</span><del>-        get3DContextAttributes(state, attrs);
</del><ins>+        attributes = attributesFor3DContext(state, scope);
</ins><span class="cx">         RETURN_IF_EXCEPTION(scope, JSValue());
</span><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="cx">     
</span><del>-    CanvasRenderingContext* context = canvas.getContext(contextId, attrs.get());
</del><ins>+    auto* context = canvas.getContext(contextId, attributes.get());
</ins><span class="cx">     if (!context)
</span><span class="cx">         return jsNull();
</span><span class="cx"> 
</span><span class="lines">@@ -104,23 +104,25 @@
</span><span class="cx"> 
</span><span class="cx"> JSValue JSHTMLCanvasElement::toDataURL(ExecState&amp; state)
</span><span class="cx"> {
</span><del>-    HTMLCanvasElement&amp; canvas = wrapped();
-    ExceptionCode ec = 0;
</del><ins>+    VM&amp; vm = state.vm();
+    auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> 
</span><span class="cx">     auto type = convert&lt;IDLNullable&lt;IDLDOMString&gt;&gt;(state, state.argument(0));
</span><del>-    double quality;
-    double* qualityPtr = 0;
-    if (state.argumentCount() &gt; 1) {
-        JSValue v = state.uncheckedArgument(1);
-        if (v.isNumber()) {
-            quality = v.toNumber(&amp;state);
-            qualityPtr = &amp;quality;
-        }
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSC::JSValue());
+
+    Optional&lt;double&gt; quality;
+    auto qualityValue = state.argument(1);
+    if (qualityValue.isNumber())
+        quality = qualityValue.toNumber(&amp;state);
+
+    // We would use toJS&lt;IDLString&gt; here, but it uses jsStringWithCache and we historically
+    // did not cache here, presumably because results are likely to be differing long strings.
+    auto result = wrapped().toDataURL(type, quality);
+    if (result.hasException()) {
+        propagateException(state, scope, result.releaseException());
+        return { };
</ins><span class="cx">     }
</span><del>-
-    JSValue result = JSC::jsString(&amp;state, canvas.toDataURL(type, qualityPtr, ec));
-    setDOMException(&amp;state, ec);
-    return result;
</del><ins>+    return jsString(&amp;state, result.releaseReturnValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSHTMLFrameElementCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSHTMLFrameElementCustom.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSHTMLFrameElementCustom.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/bindings/js/JSHTMLFrameElementCustom.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -31,7 +31,6 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;HTMLFrameElement.h&quot;
</span><del>-#include &quot;HTMLNames.h&quot;
</del><span class="cx"> #include &quot;HTMLParserIdioms.h&quot;
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><span class="cx"> 
</span><span class="lines">@@ -39,27 +38,15 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-using namespace HTMLNames;
-
-static inline bool allowSettingJavascriptURL(ExecState&amp; state, HTMLFrameElement* imp, const String&amp; value)
-{
-    if (protocolIsJavaScript(stripLeadingAndTrailingHTMLSpaces(value))) {
-        Document* contentDocument = imp-&gt;contentDocument();
-        if (contentDocument &amp;&amp; !shouldAllowAccessToNode(&amp;state, contentDocument))
-            return false;
-    }
-    return true;
-}
-
</del><span class="cx"> void JSHTMLFrameElement::setLocation(ExecState&amp; state, JSValue value)
</span><span class="cx"> {
</span><del>-    HTMLFrameElement&amp; imp = wrapped();
</del><ins>+    HTMLFrameElement&amp; element = wrapped();
</ins><span class="cx">     String locationValue = value.isNull() ? String() : value.toWTFString(&amp;state);
</span><del>-
-    if (!allowSettingJavascriptURL(state, &amp;imp, locationValue))
-        return;
-
-    imp.setLocation(locationValue);
</del><ins>+    if (protocolIsJavaScript(stripLeadingAndTrailingHTMLSpaces(locationValue))) {
+        if (!BindingSecurity::shouldAllowAccessToNode(state, element.contentDocument()))
+            return;
+    }
+    element.setLocation(locationValue);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSHTMLOptionsCollectionCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSHTMLOptionsCollectionCustom.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSHTMLOptionsCollectionCustom.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/bindings/js/JSHTMLOptionsCollectionCustom.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -54,29 +54,27 @@
</span><span class="cx">     CustomElementReactionStack customElementReactionStack;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
-    unsigned newLength = 0;
-    double lengthValue = value.toNumber(&amp;state);
-    if (!std::isnan(lengthValue) &amp;&amp; !std::isinf(lengthValue)) {
-        if (lengthValue &lt; 0.0)
-            ec = INDEX_SIZE_ERR;
-        else if (lengthValue &gt; static_cast&lt;double&gt;(UINT_MAX))
-            newLength = UINT_MAX;
-        else
-            newLength = static_cast&lt;unsigned&gt;(lengthValue);
-    }
-    if (!ec)
-        wrapped().setLength(newLength, ec);
-    setDOMException(&amp;state, ec);
</del><ins>+    VM&amp; vm = state.vm();
+    auto throwScope = DECLARE_THROW_SCOPE(vm);
+    double number = value.toNumber(&amp;state);
+    RETURN_IF_EXCEPTION(throwScope, void());
+    unsigned length;
+    if (!std::isfinite(number))
+        length = 0;
+    else if (number &lt; 0)
+        return setDOMException(&amp;state, throwScope, INDEX_SIZE_ERR);
+    else
+        length = static_cast&lt;unsigned&gt;(std::min&lt;double&gt;(number, UINT_MAX));
+    propagateException(state, throwScope, wrapped().setLength(length));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JSHTMLOptionsCollection::indexSetter(ExecState* exec, unsigned index, JSValue value)
</del><ins>+void JSHTMLOptionsCollection::indexSetter(ExecState* state, unsigned index, JSValue value)
</ins><span class="cx"> {
</span><span class="cx"> #if ENABLE(CUSTOM_ELEMENTS)
</span><span class="cx">     CustomElementReactionStack customElementReactionStack;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    selectIndexSetter(&amp;wrapped().selectElement(), exec, index, value);
</del><ins>+    selectElementIndexSetter(*state, wrapped().selectElement(), index, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSHTMLSelectElementCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSHTMLSelectElementCustom.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSHTMLSelectElementCustom.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/bindings/js/JSHTMLSelectElementCustom.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx"> #include &quot;HTMLOptionElement.h&quot;
</span><span class="cx"> #include &quot;HTMLSelectElement.h&quot;
</span><span class="cx"> #include &quot;JSHTMLOptionElement.h&quot;
</span><ins>+#include &quot;JSHTMLSelectElement.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -33,27 +34,32 @@
</span><span class="cx"> using namespace JSC;
</span><span class="cx"> using namespace HTMLNames;
</span><span class="cx"> 
</span><del>-void selectIndexSetter(HTMLSelectElement* select, JSC::ExecState* exec, unsigned index, JSC::JSValue value)
</del><ins>+void selectElementIndexSetter(JSC::ExecState&amp; state, HTMLSelectElement&amp; element, unsigned index, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>-    if (value.isUndefinedOrNull())
-        select-&gt;removeByIndex(index);
-    else {
-        ExceptionCode ec = 0;
-        HTMLOptionElement* option = JSHTMLOptionElement::toWrapped(value);
-        if (!option)
-            ec = TYPE_MISMATCH_ERR;
-        else
-            select-&gt;setOption(index, *option, ec);
-        setDOMException(exec, ec);
</del><ins>+    VM&amp; vm = state.vm();
+    auto throwScope = DECLARE_THROW_SCOPE(vm);
+
+    if (value.isUndefinedOrNull()) {
+        element.removeByIndex(index);
+        return;
</ins><span class="cx">     }
</span><ins>+
+    auto* option = JSHTMLOptionElement::toWrapped(value);
+    if (!option) {
+        setDOMException(&amp;state, throwScope, TYPE_MISMATCH_ERR);
+        return;
+    }
+
+    propagateException(state, throwScope, element.setOption(index, *option));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JSHTMLSelectElement::indexSetter(JSC::ExecState* exec, unsigned index, JSC::JSValue value)
</del><ins>+void JSHTMLSelectElement::indexSetter(JSC::ExecState* state, unsigned index, JSC::JSValue value)
</ins><span class="cx"> {
</span><span class="cx"> #if ENABLE(CUSTOM_ELEMENTS)
</span><span class="cx">     CustomElementReactionStack customElementReactionStack;
</span><span class="cx"> #endif
</span><del>-    selectIndexSetter(&amp;wrapped(), exec, index, value);
</del><ins>+
+    selectElementIndexSetter(*state, wrapped(), index, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSHTMLSelectElementCustomh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSHTMLSelectElementCustom.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSHTMLSelectElementCustom.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/bindings/js/JSHTMLSelectElementCustom.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -26,15 +26,17 @@
</span><span class="cx">  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx">  
</span><del>-#ifndef JSHTMLSelectElementCustom_h
-#define JSHTMLSelectElementCustom_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><del>-#include &quot;JSHTMLSelectElement.h&quot;
</del><ins>+namespace JSC {
+class ExecState;
+class JSValue;
+}
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-void selectIndexSetter(HTMLSelectElement*, JSC::ExecState*, unsigned index, JSC::JSValue);
</del><ins>+class HTMLSelectElement;
</ins><span class="cx"> 
</span><ins>+void selectElementIndexSetter(JSC::ExecState&amp;, HTMLSelectElement&amp;, unsigned index, JSC::JSValue);
+
</ins><span class="cx"> }
</span><del>-
-#endif
</del></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSLocationCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSLocationCustom.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSLocationCustom.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/bindings/js/JSLocationCustom.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -31,9 +31,9 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-bool JSLocation::getOwnPropertySlotDelegate(ExecState* exec, PropertyName propertyName, PropertySlot&amp; slot)
</del><ins>+bool JSLocation::getOwnPropertySlotDelegate(ExecState* state, PropertyName propertyName, PropertySlot&amp; slot)
</ins><span class="cx"> {
</span><del>-    VM&amp; vm = exec-&gt;vm();
</del><ins>+    VM&amp; vm = state-&gt;vm();
</ins><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     Frame* frame = wrapped().frame();
</span><span class="lines">@@ -48,11 +48,11 @@
</span><span class="cx">     // Our custom code is only needed to implement the Window cross-domain scheme, so if access is
</span><span class="cx">     // allowed, return false so the normal lookup will take place.
</span><span class="cx">     String message;
</span><del>-    if (shouldAllowAccessToFrame(exec, frame, message))
</del><ins>+    if (BindingSecurity::shouldAllowAccessToFrame(*state, *frame, message))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     // We only allow access to Location.replace() cross origin.
</span><del>-    if (propertyName == exec-&gt;propertyNames().replace) {
</del><ins>+    if (propertyName == state-&gt;propertyNames().replace) {
</ins><span class="cx">         slot.setCustom(this, ReadOnly | DontEnum, nonCachingStaticFunctionGetter&lt;jsLocationInstanceFunctionReplace, 1&gt;);
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Getting location.href cross origin needs to throw. However, getOwnPropertyDescriptor() needs to return
</span><span class="cx">     // a descriptor that has a setter but no getter.
</span><del>-    if (slot.internalMethodType() == PropertySlot::InternalMethodType::GetOwnProperty &amp;&amp; propertyName == exec-&gt;propertyNames().href) {
</del><ins>+    if (slot.internalMethodType() == PropertySlot::InternalMethodType::GetOwnProperty &amp;&amp; propertyName == state-&gt;propertyNames().href) {
</ins><span class="cx">         auto* entry = JSLocation::info()-&gt;staticPropHashTable-&gt;entry(propertyName);
</span><span class="cx">         CustomGetterSetter* customGetterSetter = CustomGetterSetter::create(vm, nullptr, entry-&gt;propertyPutter());
</span><span class="cx">         slot.setCustomGetterSetter(this, DontEnum | CustomAccessor, customGetterSetter);
</span><span class="lines">@@ -66,35 +66,33 @@
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    throwSecurityError(*exec, scope, message);
</del><ins>+    throwSecurityError(*state, scope, message);
</ins><span class="cx">     slot.setUndefined();
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool JSLocation::putDelegate(ExecState* exec, PropertyName propertyName, JSValue, PutPropertySlot&amp;, bool&amp; putResult)
</del><ins>+bool JSLocation::putDelegate(ExecState* state, PropertyName propertyName, JSValue, PutPropertySlot&amp;, bool&amp; putResult)
</ins><span class="cx"> {
</span><del>-    VM&amp; vm = exec-&gt;vm();
-    auto scope = DECLARE_THROW_SCOPE(vm);
</del><ins>+    putResult = false;
</ins><span class="cx"> 
</span><del>-    putResult = false;
</del><span class="cx">     Frame* frame = wrapped().frame();
</span><span class="cx">     if (!frame)
</span><span class="cx">         return true;
</span><span class="cx"> 
</span><del>-    if (propertyName == exec-&gt;propertyNames().toString || propertyName == exec-&gt;propertyNames().valueOf)
</del><ins>+    // Silently block access to toString and valueOf.
+    if (propertyName == state-&gt;propertyNames().toString || propertyName == state-&gt;propertyNames().valueOf)
</ins><span class="cx">         return true;
</span><span class="cx"> 
</span><del>-    String errorMessage;
-    if (shouldAllowAccessToFrame(exec, frame, errorMessage))
</del><ins>+    // Always allow assigning to the whole location.
+    // However, alllowing assigning of pieces might inadvertently disclose parts of the original location.
+    // So fall through to the access check for those.
+    if (propertyName == state-&gt;propertyNames().href)
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    // Cross-domain access to the location is allowed when assigning the whole location,
-    // but not when assigning the individual pieces, since that might inadvertently
-    // disclose other parts of the original location.
-    if (propertyName != exec-&gt;propertyNames().href) {
-        throwSecurityError(*exec, scope, errorMessage);
</del><ins>+    // Block access and throw if there is a security error.
+    if (!BindingSecurity::shouldAllowAccessToFrame(state, frame, ThrowSecurityError))
</ins><span class="cx">         return true;
</span><del>-    }
</del><ins>+
</ins><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsScriptControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/ScriptController.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/ScriptController.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/bindings/js/ScriptController.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -298,14 +298,15 @@
</span><span class="cx">     return UserGestureIndicator::processingUserGestureForMedia();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool ScriptController::canAccessFromCurrentOrigin(Frame *frame)
</del><ins>+bool ScriptController::canAccessFromCurrentOrigin(Frame* frame)
</ins><span class="cx"> {
</span><del>-    ExecState* exec = JSMainThreadExecState::currentState();
-    if (exec)
-        return shouldAllowAccessToFrame(exec, frame);
-    // If the current state is 0 we're in a call path where the DOM security 
-    // check doesn't apply (eg. parser).
-    return true;
</del><ins>+    ExecState* state = JSMainThreadExecState::currentState();
+
+    // If the current state is null we're in a call path where the DOM security check doesn't apply (eg. parser).
+    if (!state)
+        return true;
+
+    return BindingSecurity::shouldAllowAccessToFrame(state, frame);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ScriptController::attachDebugger(JSC::Debugger* debugger)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -3228,10 +3228,6 @@
</span><span class="cx"> 
</span><span class="cx">             if (HasCustomGetter($attribute-&gt;signature-&gt;extendedAttributes)) {
</span><span class="cx">                 push(@implContent, &quot;    return thisObject.$implGetterFunctionName(state);\n&quot;);
</span><del>-            } elsif ($attribute-&gt;signature-&gt;extendedAttributes-&gt;{CheckSecurityForNode}) {
-                $implIncludes{&quot;JSDOMBinding.h&quot;} = 1;
-                push(@implContent, &quot;    auto&amp; impl = thisObject.wrapped();\n&quot;);
-                push(@implContent, &quot;    return shouldAllowAccessToNode(&amp;state, impl.&quot; . $attribute-&gt;signature-&gt;name . &quot;()) ? &quot; . NativeToJSValueUsingReferences($attribute-&gt;signature, 0, $interface, &quot;impl.$implGetterFunctionName()&quot;, &quot;thisObject&quot;) . &quot; : jsNull();\n&quot;);
</del><span class="cx">             } elsif ($type-&gt;name eq &quot;EventHandler&quot;) {
</span><span class="cx">                 $implIncludes{&quot;EventNames.h&quot;} = 1;
</span><span class="cx">                 my $getter = $attribute-&gt;signature-&gt;extendedAttributes-&gt;{WindowEventHandler} ? &quot;windowEventHandlerAttribute&quot;
</span><span class="lines">@@ -3839,12 +3835,6 @@
</span><span class="cx"> 
</span><span class="cx">                     push(@implContent, &quot;    ExceptionCode ec = 0;\n&quot;) if $mayThrowLegacyException;
</span><span class="cx"> 
</span><del>-                    if ($function-&gt;signature-&gt;extendedAttributes-&gt;{CheckSecurityForNode}) {
-                        push(@implContent, &quot;    if (!shouldAllowAccessToNode(state, impl.&quot; . $function-&gt;signature-&gt;name . &quot;(&quot; . ($mayThrowLegacyException ? &quot;ec&quot; : &quot;&quot;) .&quot;)))\n&quot;);
-                        push(@implContent, &quot;        return JSValue::encode(jsNull());\n&quot;);
-                        $implIncludes{&quot;JSDOMBinding.h&quot;} = 1;
-                    }
-
</del><span class="cx">                     my ($functionString, $dummy) = GenerateParametersCheck(\@implContent, $function, $interface, $functionImplementationName, $svgPropertyType, $svgPropertyOrListPropertyType, $svgListPropertyType);
</span><span class="cx">                     GenerateImplementationFunctionCall($function, $functionString, &quot;    &quot;, $svgPropertyType, $interface);
</span><span class="cx">                 }
</span><span class="lines">@@ -5482,6 +5472,8 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    $value = &quot;BindingSecurity::checkSecurityForNode($stateReference, $value)&quot; if $signature-&gt;extendedAttributes-&gt;{CheckSecurityForNode};
+
</ins><span class="cx">     my $functionName = &quot;toJS&quot;;
</span><span class="cx">     $functionName = &quot;toJSNewlyCreated&quot; if $signature-&gt;extendedAttributes-&gt;{NewObject};
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -2954,7 +2954,8 @@
</span><span class="cx">     UNUSED_PARAM(throwScope);
</span><span class="cx">     UNUSED_PARAM(state);
</span><span class="cx">     auto&amp; impl = thisObject.wrapped();
</span><del>-    return shouldAllowAccessToNode(&amp;state, impl.contentDocument()) ? toJS(&amp;state, thisObject.globalObject(), impl.contentDocument()) : jsNull();
</del><ins>+    JSValue result = toJS(&amp;state, thisObject.globalObject(), BindingSecurity::checkSecurityForNode(state, impl.contentDocument()));
+    return result;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline JSValue jsTestObjMutablePointGetter(ExecState&amp;, JSTestObj&amp;, ThrowScope&amp; throwScope);
</span><span class="lines">@@ -7578,9 +7579,7 @@
</span><span class="cx">     UNUSED_PARAM(throwScope);
</span><span class="cx">     auto&amp; impl = castedThis-&gt;wrapped();
</span><span class="cx">     ExceptionCode ec = 0;
</span><del>-    if (!shouldAllowAccessToNode(state, impl.getSVGDocument(ec)))
-        return JSValue::encode(jsNull());
-    JSValue result = toJS(state, castedThis-&gt;globalObject(), impl.getSVGDocument(ec));
</del><ins>+    JSValue result = toJS(state, castedThis-&gt;globalObject(), BindingSecurity::checkSecurityForNode(*state, impl.getSVGDocument(ec)));
</ins><span class="cx"> 
</span><span class="cx">     setDOMException(state, throwScope, ec);
</span><span class="cx">     return JSValue::encode(result);
</span></span></pre></div>
<a id="trunkSourceWebCoredomChildNodeidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ChildNode.idl (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ChildNode.idl        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/dom/ChildNode.idl        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -25,5 +25,5 @@
</span><span class="cx">     [CEReactions, Unscopable, MayThrowLegacyException] void before((Node or DOMString)... nodes);
</span><span class="cx">     [CEReactions, Unscopable, MayThrowLegacyException] void after((Node or DOMString)... nodes);
</span><span class="cx">     [CEReactions, Unscopable, MayThrowLegacyException] void replaceWith((Node or DOMString)... nodes);
</span><del>-    [CEReactions, Unscopable, MayThrowLegacyException] void remove();
</del><ins>+    [CEReactions, Unscopable, MayThrowException] void remove();
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/dom/Element.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -2535,9 +2535,9 @@
</span><span class="cx">     EventDispatcher::dispatchEvent(this, FocusEvent::create(eventNames().blurEvent, false, false, document().defaultView(), 0, WTFMove(newFocusedElement)));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if ENABLE(MOUSE_FORCE_EVENTS)
</del><span class="cx"> bool Element::dispatchMouseForceWillBegin()
</span><span class="cx"> {
</span><ins>+#if ENABLE(MOUSE_FORCE_EVENTS)
</ins><span class="cx">     if (!document().hasListenerType(Document::FORCEWILLBEGIN_LISTENER))
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="lines">@@ -2545,32 +2545,29 @@
</span><span class="cx">     if (!frame)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    PlatformMouseEvent platformMouseEvent(frame-&gt;eventHandler().lastKnownMousePosition(), frame-&gt;eventHandler().lastKnownMouseGlobalPosition(), NoButton, PlatformEvent::NoType, 1, false, false, false, false, WTF::currentTime(), ForceAtClick, NoTap);
-    Ref&lt;MouseEvent&gt; mouseForceWillBeginEvent =  MouseEvent::create(eventNames().webkitmouseforcewillbeginEvent, document().defaultView(), platformMouseEvent, 0, nullptr);
</del><ins>+    PlatformMouseEvent platformMouseEvent { frame-&gt;eventHandler().lastKnownMousePosition(), frame-&gt;eventHandler().lastKnownMouseGlobalPosition(), NoButton, PlatformEvent::NoType, 1, false, false, false, false, WTF::currentTime(), ForceAtClick, NoTap };
+    auto mouseForceWillBeginEvent = MouseEvent::create(eventNames().webkitmouseforcewillbeginEvent, document().defaultView(), platformMouseEvent, 0, nullptr);
</ins><span class="cx">     mouseForceWillBeginEvent-&gt;setTarget(this);
</span><span class="cx">     dispatchEvent(mouseForceWillBeginEvent);
</span><span class="cx"> 
</span><span class="cx">     if (mouseForceWillBeginEvent-&gt;defaultHandled() || mouseForceWillBeginEvent-&gt;defaultPrevented())
</span><span class="cx">         return true;
</span><ins>+#endif
+
</ins><span class="cx">     return false;
</span><span class="cx"> }
</span><del>-#else
-bool Element::dispatchMouseForceWillBegin()
-{
-    return false;
-}
-#endif // #if ENABLE(MOUSE_FORCE_EVENTS)
</del><span class="cx"> 
</span><span class="cx"> void Element::mergeWithNextTextNode(Text&amp; node, ExceptionCode&amp; ec)
</span><span class="cx"> {
</span><del>-    Node* next = node.nextSibling();
</del><ins>+    auto* next = node.nextSibling();
</ins><span class="cx">     if (!is&lt;Text&gt;(next))
</span><span class="cx">         return;
</span><ins>+    Ref&lt;Text&gt; textNext { downcast&lt;Text&gt;(*next) };
</ins><span class="cx"> 
</span><del>-    Ref&lt;Text&gt; textNode(node);
-    Ref&lt;Text&gt; textNext(downcast&lt;Text&gt;(*next));
-    textNode-&gt;appendData(textNext-&gt;data());
-    textNext-&gt;remove(ec);
</del><ins>+    node.appendData(textNext-&gt;data());
+    auto result = textNext-&gt;remove();
+    if (result.hasException())
+        ec = result.releaseException().code();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String Element::innerHTML() const
</span><span class="lines">@@ -2594,11 +2591,13 @@
</span><span class="cx">     RefPtr&lt;Node&gt; prev = previousSibling();
</span><span class="cx">     RefPtr&lt;Node&gt; next = nextSibling();
</span><span class="cx"> 
</span><del>-    RefPtr&lt;DocumentFragment&gt; fragment = createFragmentForInnerOuterHTML(*parent, html, AllowScriptingContent, ec);
-    if (ec)
</del><ins>+    auto fragment = createFragmentForInnerOuterHTML(*parent, html, AllowScriptingContent);
+    if (fragment.hasException()) {
+        ec = fragment.releaseException().code();
</ins><span class="cx">         return;
</span><ins>+    }
</ins><span class="cx">     
</span><del>-    parent-&gt;replaceChild(*fragment, *this, ec);
</del><ins>+    parent-&gt;replaceChild(fragment.releaseReturnValue().get(), *this, ec);
</ins><span class="cx">     RefPtr&lt;Node&gt; node = next ? next-&gt;previousSibling() : nullptr;
</span><span class="cx">     if (!ec &amp;&amp; is&lt;Text&gt;(node.get()))
</span><span class="cx">         mergeWithNextTextNode(downcast&lt;Text&gt;(*node), ec);
</span><span class="lines">@@ -2609,14 +2608,21 @@
</span><span class="cx"> 
</span><span class="cx"> void Element::setInnerHTML(const String&amp; html, ExceptionCode&amp; ec)
</span><span class="cx"> {
</span><del>-    if (RefPtr&lt;DocumentFragment&gt; fragment = createFragmentForInnerOuterHTML(*this, html, AllowScriptingContent, ec)) {
-        ContainerNode* container = this;
</del><ins>+    auto fragment = createFragmentForInnerOuterHTML(*this, html, AllowScriptingContent);
+    if (fragment.hasException()) {
+        ec = fragment.releaseException().code();
+        return;
+    }
</ins><span class="cx"> 
</span><del>-        if (is&lt;HTMLTemplateElement&gt;(*this))
-            container = &amp;downcast&lt;HTMLTemplateElement&gt;(*this).content();
</del><ins>+    ContainerNode* container;
+    if (!is&lt;HTMLTemplateElement&gt;(*this))
+        container = this;
+    else
+        container = &amp;downcast&lt;HTMLTemplateElement&gt;(*this).content();
</ins><span class="cx"> 
</span><del>-        replaceChildrenWithFragment(*container, fragment.releaseNonNull(), ec);
-    }
</del><ins>+    auto result = replaceChildrenWithFragment(*container, fragment.releaseReturnValue());
+    if (result.hasException())
+        ec = fragment.releaseException().code();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String Element::innerText()
</span><span class="lines">@@ -3747,11 +3753,13 @@
</span><span class="cx">     } else
</span><span class="cx">         contextElement = downcast&lt;Element&gt;(contextNode);
</span><span class="cx">     // Step 3.
</span><del>-    RefPtr&lt;DocumentFragment&gt; fragment = createFragmentForInnerOuterHTML(*contextElement, markup, AllowScriptingContent, ec);
-    if (!fragment)
</del><ins>+    auto fragment = createFragmentForInnerOuterHTML(*contextElement, markup, AllowScriptingContent);
+    if (fragment.hasException()) {
+        ec = fragment.releaseException().code();
</ins><span class="cx">         return;
</span><ins>+    }
</ins><span class="cx">     // Step 4.
</span><del>-    insertAdjacent(where, fragment.releaseNonNull(), ec);
</del><ins>+    insertAdjacent(where, fragment.releaseReturnValue(), ec);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Element::insertAdjacentText(const String&amp; where, const String&amp; text, ExceptionCode&amp; ec)
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Node.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Node.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/dom/Node.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -551,10 +551,16 @@
</span><span class="cx">         parent-&gt;insertBefore(*node, viableNextSibling.get(), ec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Node::remove(ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; Node::remove()
</ins><span class="cx"> {
</span><del>-    if (ContainerNode* parent = parentNode())
-        parent-&gt;removeChild(*this, ec);
</del><ins>+    auto* parent = parentNode();
+    if (!parent)
+        return { };
+    ExceptionCode ec = 0;
+    parent-&gt;removeChild(*this, ec);
+    if (ec)
+        return Exception { ec };
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Node::normalize()
</span><span class="lines">@@ -584,7 +590,7 @@
</span><span class="cx">         if (!text-&gt;length()) {
</span><span class="cx">             // Care must be taken to get the next node before removing the current node.
</span><span class="cx">             node = NodeTraversal::nextPostOrder(*node);
</span><del>-            text-&gt;remove(IGNORE_EXCEPTION);
</del><ins>+            text-&gt;remove();
</ins><span class="cx">             continue;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -596,7 +602,7 @@
</span><span class="cx"> 
</span><span class="cx">             // Remove empty text nodes.
</span><span class="cx">             if (!nextText-&gt;length()) {
</span><del>-                nextText-&gt;remove(IGNORE_EXCEPTION);
</del><ins>+                nextText-&gt;remove();
</ins><span class="cx">                 continue;
</span><span class="cx">             }
</span><span class="cx"> 
</span><span class="lines">@@ -604,7 +610,7 @@
</span><span class="cx">             unsigned offset = text-&gt;length();
</span><span class="cx">             text-&gt;appendData(nextText-&gt;data());
</span><span class="cx">             document().textNodesMerged(nextText.get(), offset);
</span><del>-            nextText-&gt;remove(IGNORE_EXCEPTION);
</del><ins>+            nextText-&gt;remove();
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         node = NodeTraversal::nextPostOrder(*node);
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Node.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Node.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/dom/Node.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -25,12 +25,13 @@
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><span class="cx"> #include &quot;EventTarget.h&quot;
</span><del>-#include &quot;URLHash.h&quot;
</del><ins>+#include &quot;ExceptionOr.h&quot;
</ins><span class="cx"> #include &quot;LayoutRect.h&quot;
</span><span class="cx"> #include &quot;MutationObserver.h&quot;
</span><span class="cx"> #include &quot;RenderStyleConstants.h&quot;
</span><span class="cx"> #include &quot;StyleValidity.h&quot;
</span><span class="cx"> #include &quot;TreeScope.h&quot;
</span><ins>+#include &quot;URLHash.h&quot;
</ins><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/ListHashSet.h&gt;
</span><span class="cx"> #include &lt;wtf/MainThread.h&gt;
</span><span class="lines">@@ -195,7 +196,7 @@
</span><span class="cx">     void before(Vector&lt;NodeOrString&gt;&amp;&amp;, ExceptionCode&amp;);
</span><span class="cx">     void after(Vector&lt;NodeOrString&gt;&amp;&amp;, ExceptionCode&amp;);
</span><span class="cx">     void replaceWith(Vector&lt;NodeOrString&gt;&amp;&amp;, ExceptionCode&amp;);
</span><del>-    WEBCORE_EXPORT void remove(ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; remove();
</ins><span class="cx"> 
</span><span class="cx">     // Other methods (not part of DOM)
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomRangecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Range.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Range.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/dom/Range.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -853,9 +853,11 @@
</span><span class="cx">     if (referenceNode == node.ptr())
</span><span class="cx">         referenceNode = referenceNode-&gt;nextSibling();
</span><span class="cx"> 
</span><del>-    node-&gt;remove(ec);
-    if (ec)
</del><ins>+    auto removeResult = node-&gt;remove();
+    if (removeResult.hasException()) {
+        ec = removeResult.releaseException().code();
</ins><span class="cx">         return;
</span><ins>+    }
</ins><span class="cx"> 
</span><span class="cx">     unsigned newOffset = referenceNode ? referenceNode-&gt;computeNodeIndex() : parent-&gt;countChildNodes();
</span><span class="cx">     if (is&lt;DocumentFragment&gt;(node.get()))
</span><span class="lines">@@ -918,7 +920,12 @@
</span><span class="cx">     if (!element || (is&lt;HTMLDocument&gt;(element-&gt;document()) &amp;&amp; is&lt;HTMLHtmlElement&gt;(*element)))
</span><span class="cx">         element = HTMLBodyElement::create(node.document());
</span><span class="cx"> 
</span><del>-    return WebCore::createContextualFragment(*element, markup, AllowScriptingContentAndDoNotMarkAlreadyStarted, ec);
</del><ins>+    auto result = WebCore::createContextualFragment(*element, markup, AllowScriptingContentAndDoNotMarkAlreadyStarted);
+    if (result.hasException()) {
+        ec = result.releaseException().code();
+        return nullptr;
+    }
+    return result.releaseReturnValue();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomShadowRootcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ShadowRoot.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ShadowRoot.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/dom/ShadowRoot.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -113,8 +113,14 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (RefPtr&lt;DocumentFragment&gt; fragment = createFragmentForInnerOuterHTML(*host(), markup, AllowScriptingContent, ec))
-        replaceChildrenWithFragment(*this, fragment.releaseNonNull(), ec);
</del><ins>+    auto fragment = createFragmentForInnerOuterHTML(*host(), markup, AllowScriptingContent);
+    if (fragment.hasException()) {
+        ec = fragment.releaseException().code();
+        return;
+    }
+    auto result = replaceChildrenWithFragment(*this, fragment.releaseReturnValue());
+    if (result.hasException())
+        ec = result.releaseException().code();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool ShadowRoot::childTypeAllowed(NodeType type) const
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingAppendNodeCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/AppendNodeCommand.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/AppendNodeCommand.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/editing/AppendNodeCommand.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx">     if (!m_parent-&gt;hasEditableStyle())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_node-&gt;remove(IGNORE_EXCEPTION);
</del><ins>+    m_node-&gt;remove();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #ifndef NDEBUG
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingEditorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/Editor.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/Editor.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/editing/Editor.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -99,12 +99,6 @@
</span><span class="cx"> #include &quot;markup.h&quot;
</span><span class="cx"> #include &lt;wtf/unicode/CharacterNames.h&gt;
</span><span class="cx"> 
</span><del>-#if PLATFORM(IOS)
-#include &quot;DictationCommandIOS.h&quot;
-#include &lt;wtf/text/StringBuilder.h&gt;
-#include &lt;wtf/text/WTFString.h&gt;
-#endif
-
</del><span class="cx"> #if PLATFORM(MAC)
</span><span class="cx"> #include &quot;ServicesOverlayController.h&quot;
</span><span class="cx"> #endif
</span><span class="lines">@@ -241,17 +235,13 @@
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     if (event.isPaste()) {
</span><del>-        if (event.pastingFragment())
</del><ins>+        if (event.pastingFragment()) {
</ins><span class="cx"> #if PLATFORM(IOS)
</span><del>-        {
</del><span class="cx">             if (client()-&gt;performsTwoStepPaste(event.pastingFragment()))
</span><span class="cx">                 return true;
</span><span class="cx"> #endif
</span><span class="cx">             replaceSelectionWithFragment(event.pastingFragment(), false, event.shouldSmartReplace(), event.shouldMatchStyle(), EditActionPaste, event.mailBlockquoteHandling());
</span><del>-#if PLATFORM(IOS)
-        }
-#endif
-        else 
</del><ins>+        } else
</ins><span class="cx">             replaceSelectionWithText(event.data(), false, event.shouldSmartReplace(), EditActionPaste);
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="lines">@@ -424,76 +414,6 @@
</span><span class="cx">     ClearTextCommand::CreateAndApply(&amp;m_frame);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if PLATFORM(IOS)
-
-void Editor::insertDictationPhrases(Vector&lt;Vector&lt;String&gt;&gt;&amp;&amp; dictationPhrases, RetainPtr&lt;id&gt; metadata)
-{
-    if (m_frame.selection().isNone())
-        return;
-
-    if (dictationPhrases.isEmpty())
-        return;
-
-    applyCommand(DictationCommandIOS::create(document(), WTFMove(dictationPhrases), WTFMove(metadata)));
-}
-
-void Editor::setDictationPhrasesAsChildOfElement(const Vector&lt;Vector&lt;String&gt;&gt;&amp; dictationPhrases, RetainPtr&lt;id&gt; metadata, Element&amp; element)
-{
-    // Clear the composition.
-    clear();
-    
-    // Clear the Undo stack, since the operations that follow are not Undoable, and will corrupt the stack.  Some day
-    // we could make them Undoable, and let callers clear the Undo stack explicitly if they wish.
-    clearUndoRedoOperations();
-    
-    m_frame.selection().clear();
-    
-    element.removeChildren();
-    
-    if (dictationPhrases.isEmpty()) {
-        client()-&gt;respondToChangedContents();
-        return;
-    }
-    
-    ExceptionCode ec;    
-    RefPtr&lt;Range&gt; context = document().createRange();
-    context-&gt;selectNodeContents(element, ec);
-
-    StringBuilder dictationPhrasesBuilder;
-    for (auto&amp; interpretations : dictationPhrases)
-        dictationPhrasesBuilder.append(interpretations[0]);
-
-    element.appendChild(createFragmentFromText(*context, dictationPhrasesBuilder.toString()), ec);
-
-    // We need a layout in order to add markers below.
-    document().updateLayout();
-
-    if (!element.firstChild()-&gt;isTextNode()) {
-        // Shouldn't happen.
-        ASSERT(element.firstChild()-&gt;isTextNode());
-        return;
-    }
-
-    Text&amp; textNode = downcast&lt;Text&gt;(*element.firstChild());
-    int previousDictationPhraseStart = 0;
-    for (auto&amp; interpretations : dictationPhrases) {
-        int dictationPhraseLength = interpretations[0].length();
-        int dictationPhraseEnd = previousDictationPhraseStart + dictationPhraseLength;
-        if (interpretations.size() &gt; 1) {
-            auto dictationPhraseRange = Range::create(document(), &amp;textNode, previousDictationPhraseStart, &amp;textNode, dictationPhraseEnd);
-            document().markers().addDictationPhraseWithAlternativesMarker(dictationPhraseRange.ptr(), interpretations);
-        }
-        previousDictationPhraseStart = dictationPhraseEnd;
-    }
-
-    auto resultRange = Range::create(document(), &amp;textNode, 0, &amp;textNode, textNode.length());
-    document().markers().addDictationResultMarker(resultRange.ptr(), metadata);
-
-    client()-&gt;respondToChangedContents();
-}
-
-#endif
-
</del><span class="cx"> void Editor::pasteAsPlainText(const String&amp; pastingText, bool smartReplace)
</span><span class="cx"> {
</span><span class="cx">     Node* target = findEventTargetFromSelection();
</span><span class="lines">@@ -616,85 +536,6 @@
</span><span class="cx">     return m_frame.selection().toNormalizedRange();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if PLATFORM(IOS)
-void Editor::confirmMarkedText()
-{
-    // FIXME: This is a hacky workaround for the keyboard calling this method too late -
-    // after the selection and focus have already changed.  See &lt;rdar://problem/5975559&gt;
-    Element* focused = document().focusedElement();
-    Node* composition = compositionNode();
-    
-    if (composition &amp;&amp; focused &amp;&amp; focused != composition &amp;&amp; !composition-&gt;isDescendantOrShadowDescendantOf(focused)) {
-        cancelComposition();
-        document().setFocusedElement(focused);
-    } else
-        confirmComposition();
-}
-
-void Editor::setTextAsChildOfElement(const String&amp; text, Element&amp; element)
-{
-    // Clear the composition
-    clear();
-    
-    // Clear the Undo stack, since the operations that follow are not Undoable, and will corrupt the stack.  Some day
-    // we could make them Undoable, and let callers clear the Undo stack explicitly if they wish.
-    clearUndoRedoOperations();
-    
-    // If the element is empty already and we're not adding text, we can early return and avoid clearing/setting
-    // a selection at [0, 0] and the expense involved in creation VisiblePositions.
-    if (!element.firstChild() &amp;&amp; text.isEmpty())
-        return;
-    
-    // As a side effect this function sets a caret selection after the inserted content.  Much of what 
-    // follows is more expensive if there is a selection, so clear it since it's going to change anyway.
-    m_frame.selection().clear();
-    
-    // clear out all current children of element
-    element.removeChildren();
-
-    if (text.length()) {
-        // insert new text
-        // remove element from tree while doing it
-        // FIXME: The element we're inserting into is often the body element.  It seems strange to be removing it
-        // (even if it is only temporary).  ReplaceSelectionCommand doesn't bother doing this when it inserts
-        // content, why should we here?
-        ExceptionCode ec;
-        RefPtr&lt;Node&gt; parent = element.parentNode();
-        RefPtr&lt;Node&gt; siblingAfter = element.nextSibling();
-        if (parent)
-            element.remove(ec);
-            
-        auto context = document().createRange();
-        context-&gt;selectNodeContents(element, ec);
-        element.appendChild(createFragmentFromText(context, text), ec);
-    
-        // restore element to document
-        if (parent) {
-            if (siblingAfter)
-                parent-&gt;insertBefore(element, siblingAfter.get(), ec);
-            else
-                parent-&gt;appendChild(element, ec);
-        }
-    }
-
-    // set the selection to the end
-    VisibleSelection selection;
-
-    Position pos = createLegacyEditingPosition(&amp;element, element.countChildNodes());
-
-    VisiblePosition visiblePos(pos, VP_DEFAULT_AFFINITY);
-    if (visiblePos.isNull())
-        return;
-
-    selection.setBase(visiblePos);
-    selection.setExtent(visiblePos);
-     
-    m_frame.selection().setSelection(selection);
-    
-    client()-&gt;respondToChangedContents();
-}
-#endif
-
</del><span class="cx"> bool Editor::shouldDeleteRange(Range* range) const
</span><span class="cx"> {
</span><span class="cx">     if (!range || range-&gt;collapsed())
</span><span class="lines">@@ -884,14 +725,6 @@
</span><span class="cx"> {
</span><span class="cx">     m_lastEditCommand = nullptr;
</span><span class="cx"> }
</span><del>-#if PLATFORM(IOS)
-// If the selection is adjusted from UIKit without closing the typing, the typing command may
-// have a stale selection.
-void Editor::ensureLastEditCommandHasCurrentSelectionIfOpenForMoreTyping()
-{
-    TypingCommand::ensureLastEditCommandHasCurrentSelectionIfOpenForMoreTyping(&amp;m_frame, m_frame.selection().selection());
-}
-#endif
</del><span class="cx"> 
</span><span class="cx"> // Returns whether caller should continue with &quot;the default processing&quot;, which is the same as 
</span><span class="cx"> // the event handler NOT setting the return value to false
</span><span class="lines">@@ -1497,6 +1330,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if !PLATFORM(IOS)
</span><ins>+
</ins><span class="cx"> void Editor::copyImage(const HitTestResult&amp; result)
</span><span class="cx"> {
</span><span class="cx">     Element* element = result.innerNonSharedElement();
</span><span class="lines">@@ -1513,6 +1347,7 @@
</span><span class="cx">     Pasteboard::createForCopyAndPaste()-&gt;writeImage(*element, url, result.altDisplayString());
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> bool Editor::isContinuousSpellCheckingEnabled() const
</span><span class="lines">@@ -2006,6 +1841,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if !PLATFORM(IOS)
</span><ins>+
</ins><span class="cx"> void Editor::advanceToNextMisspelling(bool startBeforeSelection)
</span><span class="cx"> {
</span><span class="cx">     // The basic approach is to search in two phases - from the selection end to the end of the doc, and
</span><span class="lines">@@ -2181,6 +2017,7 @@
</span><span class="cx">         document().markers().addMarker(misspellingRange.get(), DocumentMarker::Spelling);
</span><span class="cx">     }
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif // !PLATFORM(IOS)
</span><span class="cx"> 
</span><span class="cx"> String Editor::misspelledWordAtCaretOrRange(Node* clickedNode) const
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingInsertNodeBeforeCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/InsertNodeBeforeCommand.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/InsertNodeBeforeCommand.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/editing/InsertNodeBeforeCommand.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -63,7 +63,7 @@
</span><span class="cx">     if (!isEditableNode(*m_insertChild))
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_insertChild-&gt;remove(IGNORE_EXCEPTION);
</del><ins>+    m_insertChild-&gt;remove();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #ifndef NDEBUG
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingMergeIdenticalElementsCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/MergeIdenticalElementsCommand.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/MergeIdenticalElementsCommand.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/editing/MergeIdenticalElementsCommand.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx">     for (auto&amp; child : children)
</span><span class="cx">         m_element2-&gt;insertBefore(child, m_atChild.get(), IGNORE_EXCEPTION);
</span><span class="cx"> 
</span><del>-    m_element1-&gt;remove(IGNORE_EXCEPTION);
</del><ins>+    m_element1-&gt;remove();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MergeIdenticalElementsCommand::doUnapply()
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingRemoveNodeCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/RemoveNodeCommand.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/RemoveNodeCommand.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/editing/RemoveNodeCommand.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -52,7 +52,7 @@
</span><span class="cx">     m_parent = parent;
</span><span class="cx">     m_refChild = m_node-&gt;nextSibling();
</span><span class="cx"> 
</span><del>-    m_node-&gt;remove(IGNORE_EXCEPTION);
</del><ins>+    m_node-&gt;remove();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RemoveNodeCommand::doUnapply()
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingSplitElementCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/SplitElementCommand.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/SplitElementCommand.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/editing/SplitElementCommand.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -93,7 +93,7 @@
</span><span class="cx">     if (!id.isNull())
</span><span class="cx">         m_element2-&gt;setIdAttribute(id);
</span><span class="cx"> 
</span><del>-    m_element1-&gt;remove(IGNORE_EXCEPTION);
</del><ins>+    m_element1-&gt;remove();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SplitElementCommand::doReapply()
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingSplitTextNodeCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/SplitTextNodeCommand.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/SplitTextNodeCommand.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/editing/SplitTextNodeCommand.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -77,7 +77,7 @@
</span><span class="cx">     m_text2-&gt;insertData(0, prefixText, ASSERT_NO_EXCEPTION);
</span><span class="cx"> 
</span><span class="cx">     document().markers().copyMarkers(m_text1.get(), 0, prefixText.length(), m_text2.get(), 0);
</span><del>-    m_text1-&gt;remove(ASSERT_NO_EXCEPTION);
</del><ins>+    m_text1-&gt;remove();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SplitTextNodeCommand::doReapply()
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingWrapContentsInDummySpanCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/WrapContentsInDummySpanCommand.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/WrapContentsInDummySpanCommand.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/editing/WrapContentsInDummySpanCommand.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -68,7 +68,7 @@
</span><span class="cx">     for (auto&amp; child : children)
</span><span class="cx">         m_element-&gt;appendChild(child, IGNORE_EXCEPTION);
</span><span class="cx"> 
</span><del>-    m_dummySpan-&gt;remove(IGNORE_EXCEPTION);
</del><ins>+    m_dummySpan-&gt;remove();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WrapContentsInDummySpanCommand::doReapply()
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingiosEditorIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/ios/EditorIOS.mm (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/ios/EditorIOS.mm        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/editing/ios/EditorIOS.mm        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -31,8 +31,10 @@
</span><span class="cx"> #import &quot;CachedImage.h&quot;
</span><span class="cx"> #import &quot;CachedResourceLoader.h&quot;
</span><span class="cx"> #import &quot;DataTransfer.h&quot;
</span><ins>+#import &quot;DictationCommandIOS.h&quot;
</ins><span class="cx"> #import &quot;DocumentFragment.h&quot;
</span><span class="cx"> #import &quot;DocumentLoader.h&quot;
</span><ins>+#import &quot;DocumentMarkerController.h&quot;
</ins><span class="cx"> #import &quot;EditorClient.h&quot;
</span><span class="cx"> #import &quot;FontCascade.h&quot;
</span><span class="cx"> #import &quot;Frame.h&quot;
</span><span class="lines">@@ -60,6 +62,7 @@
</span><span class="cx"> #import &quot;markup.h&quot;
</span><span class="cx"> #import &lt;MobileCoreServices/MobileCoreServices.h&gt;
</span><span class="cx"> #import &lt;wtf/BlockObjCExceptions.h&gt;
</span><ins>+#include &lt;wtf/text/StringBuilder.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> SOFT_LINK_FRAMEWORK(AppSupport)
</span><span class="cx"> SOFT_LINK(AppSupport, CPSharedResourcesDirectory, CFStringRef, (void), ())
</span><span class="lines">@@ -173,7 +176,7 @@
</span><span class="cx">         if (style) {
</span><span class="cx">             result = &amp;style-&gt;fontCascade().primaryFont();
</span><span class="cx">             if (nodeToRemove)
</span><del>-                nodeToRemove-&gt;remove(ASSERT_NO_EXCEPTION);
</del><ins>+                nodeToRemove-&gt;remove();
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         return result;
</span><span class="lines">@@ -219,7 +222,7 @@
</span><span class="cx">     getTextDecorationAttributesRespectingTypingStyle(*style, result);
</span><span class="cx"> 
</span><span class="cx">     if (nodeToRemove)
</span><del>-        nodeToRemove-&gt;remove(ASSERT_NO_EXCEPTION);
</del><ins>+        nodeToRemove-&gt;remove();
</ins><span class="cx">     
</span><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="lines">@@ -603,4 +606,153 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void Editor::insertDictationPhrases(Vector&lt;Vector&lt;String&gt;&gt;&amp;&amp; dictationPhrases, RetainPtr&lt;id&gt; metadata)
+{
+    if (m_frame.selection().isNone())
+        return;
+
+    if (dictationPhrases.isEmpty())
+        return;
+
+    applyCommand(DictationCommandIOS::create(document(), WTFMove(dictationPhrases), WTFMove(metadata)));
+}
+
+void Editor::setDictationPhrasesAsChildOfElement(const Vector&lt;Vector&lt;String&gt;&gt;&amp; dictationPhrases, RetainPtr&lt;id&gt; metadata, Element&amp; element)
+{
+    // Clear the composition.
+    clear();
+
+    // Clear the Undo stack, since the operations that follow are not Undoable, and will corrupt the stack.
+    // Some day we could make them Undoable, and let callers clear the Undo stack explicitly if they wish.
+    clearUndoRedoOperations();
+
+    m_frame.selection().clear();
+
+    element.removeChildren();
+
+    if (dictationPhrases.isEmpty()) {
+        client()-&gt;respondToChangedContents();
+        return;
+    }
+
+    ExceptionCode ec;
+    RefPtr&lt;Range&gt; context = document().createRange();
+    context-&gt;selectNodeContents(element, ec);
+
+    StringBuilder dictationPhrasesBuilder;
+    for (auto&amp; interpretations : dictationPhrases)
+        dictationPhrasesBuilder.append(interpretations[0]);
+
+    element.appendChild(createFragmentFromText(*context, dictationPhrasesBuilder.toString()), ec);
+
+    // We need a layout in order to add markers below.
+    document().updateLayout();
+
+    if (!element.firstChild()-&gt;isTextNode()) {
+        // Shouldn't happen.
+        ASSERT(element.firstChild()-&gt;isTextNode());
+        return;
+    }
+
+    Text&amp; textNode = downcast&lt;Text&gt;(*element.firstChild());
+    int previousDictationPhraseStart = 0;
+    for (auto&amp; interpretations : dictationPhrases) {
+        int dictationPhraseLength = interpretations[0].length();
+        int dictationPhraseEnd = previousDictationPhraseStart + dictationPhraseLength;
+        if (interpretations.size() &gt; 1) {
+            auto dictationPhraseRange = Range::create(document(), &amp;textNode, previousDictationPhraseStart, &amp;textNode, dictationPhraseEnd);
+            document().markers().addDictationPhraseWithAlternativesMarker(dictationPhraseRange.ptr(), interpretations);
+        }
+        previousDictationPhraseStart = dictationPhraseEnd;
+    }
+
+    auto resultRange = Range::create(document(), &amp;textNode, 0, &amp;textNode, textNode.length());
+    document().markers().addDictationResultMarker(resultRange.ptr(), metadata);
+
+    client()-&gt;respondToChangedContents();
+}
+
+void Editor::confirmMarkedText()
+{
+    // FIXME: This is a hacky workaround for the keyboard calling this method too late -
+    // after the selection and focus have already changed. See &lt;rdar://problem/5975559&gt;.
+    Element* focused = document().focusedElement();
+    Node* composition = compositionNode();
+    if (composition &amp;&amp; focused &amp;&amp; focused != composition &amp;&amp; !composition-&gt;isDescendantOrShadowDescendantOf(focused)) {
+        cancelComposition();
+        document().setFocusedElement(focused);
+    } else
+        confirmComposition();
+}
+
+void Editor::setTextAsChildOfElement(const String&amp; text, Element&amp; element)
+{
+    // Clear the composition
+    clear();
+
+    // Clear the Undo stack, since the operations that follow are not Undoable, and will corrupt the stack.
+    // Some day we could make them Undoable, and let callers clear the Undo stack explicitly if they wish.
+    clearUndoRedoOperations();
+
+    // If the element is empty already and we're not adding text, we can early return and avoid clearing/setting
+    // a selection at [0, 0] and the expense involved in creation VisiblePositions.
+    if (!element.firstChild() &amp;&amp; text.isEmpty())
+        return;
+
+    // As a side effect this function sets a caret selection after the inserted content. Much of what
+    // follows is more expensive if there is a selection, so clear it since it's going to change anyway.
+    m_frame.selection().clear();
+
+    // clear out all current children of element
+    element.removeChildren();
+
+    if (text.length()) {
+        // insert new text
+        // remove element from tree while doing it
+        // FIXME: The element we're inserting into is often the body element. It seems strange to be removing it
+        // (even if it is only temporary). ReplaceSelectionCommand doesn't bother doing this when it inserts
+        // content, why should we here?
+        ExceptionCode ec;
+        RefPtr&lt;Node&gt; parent = element.parentNode();
+        RefPtr&lt;Node&gt; siblingAfter = element.nextSibling();
+        if (parent)
+            element.remove();
+
+        auto context = document().createRange();
+        context-&gt;selectNodeContents(element, ec);
+        element.appendChild(createFragmentFromText(context, text), ec);
+
+        // restore element to document
+        if (parent) {
+            if (siblingAfter)
+                parent-&gt;insertBefore(element, siblingAfter.get(), ec);
+            else
+                parent-&gt;appendChild(element, ec);
+        }
+    }
+
+    // set the selection to the end
+    VisibleSelection selection;
+
+    Position pos = createLegacyEditingPosition(&amp;element, element.countChildNodes());
+
+    VisiblePosition visiblePos(pos, VP_DEFAULT_AFFINITY);
+    if (visiblePos.isNull())
+        return;
+
+    selection.setBase(visiblePos);
+    selection.setExtent(visiblePos);
+
+    m_frame.selection().setSelection(selection);
+
+    client()-&gt;respondToChangedContents();
+}
+
+// If the selection is adjusted from UIKit without closing the typing, the typing command may
+// have a stale selection.
+void Editor::ensureLastEditCommandHasCurrentSelectionIfOpenForMoreTyping()
+{
+    TypingCommand::ensureLastEditCommandHasCurrentSelectionIfOpenForMoreTyping(&amp;m_frame, m_frame.selection().selection());
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingmacEditorMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/mac/EditorMac.mm (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/mac/EditorMac.mm        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/editing/mac/EditorMac.mm        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -114,7 +114,7 @@
</span><span class="cx">         if (style) {
</span><span class="cx">             result = &amp;style-&gt;fontCascade().primaryFont();
</span><span class="cx">             if (nodeToRemove)
</span><del>-                nodeToRemove-&gt;remove(ASSERT_NO_EXCEPTION);
</del><ins>+                nodeToRemove-&gt;remove();
</ins><span class="cx">         }
</span><span class="cx">         return result;
</span><span class="cx">     }
</span><span class="lines">@@ -195,7 +195,7 @@
</span><span class="cx">     getTextDecorationAttributesRespectingTypingStyle(*style, result);
</span><span class="cx"> 
</span><span class="cx">     if (nodeToRemove)
</span><del>-        nodeToRemove-&gt;remove(ASSERT_NO_EXCEPTION);
</del><ins>+        nodeToRemove-&gt;remove();
</ins><span class="cx"> 
</span><span class="cx">     return result;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingmarkupcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/markup.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/markup.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/editing/markup.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -881,24 +881,22 @@
</span><span class="cx">     return markup.toString();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;DocumentFragment&gt; createFragmentForInnerOuterHTML(Element&amp; contextElement, const String&amp; markup, ParserContentPolicy parserContentPolicy, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Ref&lt;DocumentFragment&gt;&gt; createFragmentForInnerOuterHTML(Element&amp; contextElement, const String&amp; markup, ParserContentPolicy parserContentPolicy)
</ins><span class="cx"> {
</span><del>-    Document* document = &amp;contextElement.document();
</del><ins>+    auto* document = &amp;contextElement.document();
</ins><span class="cx">     if (contextElement.hasTagName(templateTag))
</span><span class="cx">         document = &amp;document-&gt;ensureTemplateDocument();
</span><del>-    RefPtr&lt;DocumentFragment&gt; fragment = DocumentFragment::create(*document);
</del><ins>+    auto fragment = DocumentFragment::create(*document);
</ins><span class="cx"> 
</span><span class="cx">     if (document-&gt;isHTMLDocument()) {
</span><span class="cx">         fragment-&gt;parseHTML(markup, &amp;contextElement, parserContentPolicy);
</span><del>-        return fragment;
</del><ins>+        return WTFMove(fragment);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     bool wasValid = fragment-&gt;parseXML(markup, &amp;contextElement, parserContentPolicy);
</span><del>-    if (!wasValid) {
-        ec = SYNTAX_ERR;
-        return nullptr;
-    }
-    return fragment;
</del><ins>+    if (!wasValid)
+        return Exception { SYNTAX_ERR };
+    return WTFMove(fragment);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RefPtr&lt;DocumentFragment&gt; createFragmentForTransformToFragment(Document&amp; outputDoc, const String&amp; sourceString, const String&amp; sourceMIMEType)
</span><span class="lines">@@ -951,31 +949,29 @@
</span><span class="cx">     fragment.removeChild(element, ASSERT_NO_EXCEPTION);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;DocumentFragment&gt; createContextualFragment(Element&amp; element, const String&amp; markup, ParserContentPolicy parserContentPolicy, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Ref&lt;DocumentFragment&gt;&gt; createContextualFragment(Element&amp; element, const String&amp; markup, ParserContentPolicy parserContentPolicy)
</ins><span class="cx"> {
</span><del>-    if (element.ieForbidsInsertHTML()) {
-        ec = NOT_SUPPORTED_ERR;
-        return nullptr;
-    }
</del><ins>+    if (element.ieForbidsInsertHTML())
+        return Exception { NOT_SUPPORTED_ERR };
</ins><span class="cx"> 
</span><span class="cx">     if (element.hasTagName(colTag) || element.hasTagName(colgroupTag) || element.hasTagName(framesetTag)
</span><del>-        || element.hasTagName(headTag) || element.hasTagName(styleTag) || element.hasTagName(titleTag)) {
-        ec = NOT_SUPPORTED_ERR;
-        return nullptr;
-    }
</del><ins>+        || element.hasTagName(headTag) || element.hasTagName(styleTag) || element.hasTagName(titleTag))
+        return Exception { NOT_SUPPORTED_ERR };
</ins><span class="cx"> 
</span><del>-    RefPtr&lt;DocumentFragment&gt; fragment = createFragmentForInnerOuterHTML(element, markup, parserContentPolicy, ec);
-    if (!fragment)
-        return nullptr;
</del><ins>+    auto result = createFragmentForInnerOuterHTML(element, markup, parserContentPolicy);
+    if (result.hasException())
+        return result.releaseException();
</ins><span class="cx"> 
</span><ins>+    auto fragment = result.releaseReturnValue();
+
</ins><span class="cx">     // We need to pop &lt;html&gt; and &lt;body&gt; elements and remove &lt;head&gt; to
</span><span class="cx">     // accommodate folks passing complete HTML documents to make the
</span><span class="cx">     // child of an element.
</span><del>-    auto toRemove = collectElementsToRemoveFromFragment(*fragment);
</del><ins>+    auto toRemove = collectElementsToRemoveFromFragment(fragment);
</ins><span class="cx">     for (auto&amp; element : toRemove)
</span><del>-        removeElementFromFragmentPreservingChildren(*fragment, element);
</del><ins>+        removeElementFromFragmentPreservingChildren(fragment, element);
</ins><span class="cx"> 
</span><del>-    return fragment;
</del><ins>+    return WTFMove(fragment);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline bool hasOneChild(ContainerNode&amp; node)
</span><span class="lines">@@ -1005,7 +1001,7 @@
</span><span class="cx">     return !authorScriptMayHaveReference &amp;&amp; !mutationScope.canObserve() &amp;&amp; !hasMutationEventListeners(containerChild.document());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void replaceChildrenWithFragment(ContainerNode&amp; container, Ref&lt;DocumentFragment&gt;&amp;&amp; fragment, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; replaceChildrenWithFragment(ContainerNode&amp; container, Ref&lt;DocumentFragment&gt;&amp;&amp; fragment)
</ins><span class="cx"> {
</span><span class="cx">     Ref&lt;ContainerNode&gt; containerNode(container);
</span><span class="cx">     ChildListMutationScope mutation(containerNode);
</span><span class="lines">@@ -1012,7 +1008,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (!fragment-&gt;firstChild()) {
</span><span class="cx">         containerNode-&gt;removeChildren();
</span><del>-        return;
</del><ins>+        return { };
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     auto* containerChild = containerNode-&gt;firstChild();
</span><span class="lines">@@ -1020,18 +1016,25 @@
</span><span class="cx">         if (is&lt;Text&gt;(*containerChild) &amp;&amp; hasOneTextChild(fragment) &amp;&amp; canUseSetDataOptimization(downcast&lt;Text&gt;(*containerChild), mutation)) {
</span><span class="cx">             ASSERT(!fragment-&gt;firstChild()-&gt;refCount());
</span><span class="cx">             downcast&lt;Text&gt;(*containerChild).setData(downcast&lt;Text&gt;(*fragment-&gt;firstChild()).data());
</span><del>-            return;
</del><ins>+            return { };
</ins><span class="cx">         }
</span><span class="cx"> 
</span><ins>+        ExceptionCode ec = 0;
</ins><span class="cx">         containerNode-&gt;replaceChild(fragment, *containerChild, ec);
</span><del>-        return;
</del><ins>+        if (ec)
+            return Exception { ec };
+        return { };
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     containerNode-&gt;removeChildren();
</span><ins>+    ExceptionCode ec = 0;
</ins><span class="cx">     containerNode-&gt;appendChild(fragment, ec);
</span><ins>+    if (ec)
+        return Exception { ec };
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void replaceChildrenWithText(ContainerNode&amp; container, const String&amp; text, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; replaceChildrenWithText(ContainerNode&amp; container, const String&amp; text)
</ins><span class="cx"> {
</span><span class="cx">     Ref&lt;ContainerNode&gt; containerNode(container);
</span><span class="cx">     ChildListMutationScope mutation(containerNode);
</span><span class="lines">@@ -1038,18 +1041,25 @@
</span><span class="cx"> 
</span><span class="cx">     if (hasOneTextChild(containerNode)) {
</span><span class="cx">         downcast&lt;Text&gt;(*containerNode-&gt;firstChild()).setData(text);
</span><del>-        return;
</del><ins>+        return { };
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     auto textNode = Text::create(containerNode-&gt;document(), text);
</span><span class="cx"> 
</span><span class="cx">     if (hasOneChild(containerNode)) {
</span><ins>+        ExceptionCode ec = 0;
</ins><span class="cx">         containerNode-&gt;replaceChild(textNode, *containerNode-&gt;firstChild(), ec);
</span><del>-        return;
</del><ins>+        if (ec)
+            return Exception { ec };
+        return { };
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     containerNode-&gt;removeChildren();
</span><ins>+    ExceptionCode ec = 0;
</ins><span class="cx">     containerNode-&gt;appendChild(textNode, ec);
</span><ins>+    if (ec)
+        return Exception { ec };
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingmarkuph"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/markup.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/markup.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/editing/markup.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -23,9 +23,9 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef markup_h
-#define markup_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><ins>+#include &quot;ExceptionOr.h&quot;
</ins><span class="cx"> #include &quot;FragmentScriptingPermission.h&quot;
</span><span class="cx"> #include &quot;HTMLInterchange.h&quot;
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="lines">@@ -51,16 +51,15 @@
</span><span class="cx"> 
</span><span class="cx"> WEBCORE_EXPORT Ref&lt;DocumentFragment&gt; createFragmentFromText(Range&amp; context, const String&amp; text);
</span><span class="cx"> WEBCORE_EXPORT Ref&lt;DocumentFragment&gt; createFragmentFromMarkup(Document&amp;, const String&amp; markup, const String&amp; baseURL, ParserContentPolicy = AllowScriptingContent);
</span><del>-RefPtr&lt;DocumentFragment&gt; createFragmentForInnerOuterHTML(Element&amp;, const String&amp; markup, ParserContentPolicy, ExceptionCode&amp;);
</del><ins>+ExceptionOr&lt;Ref&lt;DocumentFragment&gt;&gt; createFragmentForInnerOuterHTML(Element&amp;, const String&amp; markup, ParserContentPolicy);
</ins><span class="cx"> RefPtr&lt;DocumentFragment&gt; createFragmentForTransformToFragment(Document&amp;, const String&amp; sourceString, const String&amp; sourceMIMEType);
</span><del>-RefPtr&lt;DocumentFragment&gt; createContextualFragment(Element&amp;, const String&amp; markup, ParserContentPolicy, ExceptionCode&amp;);
</del><ins>+ExceptionOr&lt;Ref&lt;DocumentFragment&gt;&gt; createContextualFragment(Element&amp;, const String&amp; markup, ParserContentPolicy);
</ins><span class="cx"> 
</span><span class="cx"> bool isPlainTextMarkup(Node*);
</span><span class="cx"> 
</span><del>-// These methods are used by HTMLElement &amp; ShadowRoot to replace the
-// children with respected fragment/text.
-void replaceChildrenWithFragment(ContainerNode&amp;, Ref&lt;DocumentFragment&gt;&amp;&amp;, ExceptionCode&amp;);
-void replaceChildrenWithText(ContainerNode&amp;, const String&amp;, ExceptionCode&amp;);
</del><ins>+// These methods are used by HTMLElement &amp; ShadowRoot to replace the children with respected fragment/text.
+ExceptionOr&lt;void&gt; replaceChildrenWithFragment(ContainerNode&amp;, Ref&lt;DocumentFragment&gt;&amp;&amp;);
+ExceptionOr&lt;void&gt; replaceChildrenWithText(ContainerNode&amp;, const String&amp;);
</ins><span class="cx"> 
</span><span class="cx"> String createMarkup(const Range&amp;, Vector&lt;Node*&gt;* = nullptr, EAnnotateForInterchange = DoNotAnnotateForInterchange, bool convertBlocksToInlines = false, EAbsoluteURLs = DoNotResolveURLs);
</span><span class="cx"> String createMarkup(const Node&amp;, EChildrenOnly = IncludeNode, Vector&lt;Node*&gt;* = nullptr, EAbsoluteURLs = DoNotResolveURLs, Vector&lt;QualifiedName&gt;* tagNamesToSkip = nullptr, EFragmentSerialization = HTMLFragmentSerialization);
</span><span class="lines">@@ -73,5 +72,3 @@
</span><span class="cx"> String documentTypeString(const Document&amp;);
</span><span class="cx"> 
</span><span class="cx"> }
</span><del>-
-#endif // markup_h
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlBaseChooserOnlyDateAndTimeInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/BaseChooserOnlyDateAndTimeInputType.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/BaseChooserOnlyDateAndTimeInputType.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/BaseChooserOnlyDateAndTimeInputType.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -24,9 +24,10 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> #include &quot;config.h&quot;
</span><del>-#if ENABLE(DATE_AND_TIME_INPUT_TYPES)
</del><span class="cx"> #include &quot;BaseChooserOnlyDateAndTimeInputType.h&quot;
</span><span class="cx"> 
</span><ins>+#if ENABLE(DATE_AND_TIME_INPUT_TYPES)
+
</ins><span class="cx"> #include &quot;Chrome.h&quot;
</span><span class="cx"> #include &quot;HTMLDivElement.h&quot;
</span><span class="cx"> #include &quot;HTMLInputElement.h&quot;
</span><span class="lines">@@ -77,7 +78,7 @@
</span><span class="cx">         // Need to put something to keep text baseline.
</span><span class="cx">         displayValue = ASCIILiteral(&quot; &quot;);
</span><span class="cx">     }
</span><del>-    downcast&lt;HTMLElement&gt;(*node).setInnerText(displayValue, ASSERT_NO_EXCEPTION);
</del><ins>+    downcast&lt;HTMLElement&gt;(*node).setInnerText(displayValue);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void BaseChooserOnlyDateAndTimeInputType::setValue(const String&amp; value, bool valueChanged, TextFieldEventBehavior eventBehavior)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlBaseDateAndTimeInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/BaseDateAndTimeInputType.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/BaseDateAndTimeInputType.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/BaseDateAndTimeInputType.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -55,9 +55,10 @@
</span><span class="cx">     return valueAsDouble();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void BaseDateAndTimeInputType::setValueAsDate(double value, ExceptionCode&amp;) const
</del><ins>+ExceptionOr&lt;void&gt; BaseDateAndTimeInputType::setValueAsDate(double value) const
</ins><span class="cx"> {
</span><span class="cx">     element().setValue(serializeWithMilliseconds(value));
</span><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> double BaseDateAndTimeInputType::valueAsDouble() const
</span><span class="lines">@@ -66,9 +67,10 @@
</span><span class="cx">     return value.isFinite() ? value.toDouble() : DateComponents::invalidMilliseconds();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void BaseDateAndTimeInputType::setValueAsDecimal(const Decimal&amp; newValue, TextFieldEventBehavior eventBehavior, ExceptionCode&amp;) const
</del><ins>+ExceptionOr&lt;void&gt; BaseDateAndTimeInputType::setValueAsDecimal(const Decimal&amp; newValue, TextFieldEventBehavior eventBehavior) const
</ins><span class="cx"> {
</span><span class="cx">     element().setValue(serialize(newValue), eventBehavior);
</span><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool BaseDateAndTimeInputType::typeMismatchFor(const String&amp; value) const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlBaseDateAndTimeInputTypeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/BaseDateAndTimeInputType.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/BaseDateAndTimeInputType.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/BaseDateAndTimeInputType.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -29,10 +29,10 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef BaseDateAndTimeInputType_h
-#define BaseDateAndTimeInputType_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(DATE_AND_TIME_INPUT_TYPES)
</span><ins>+
</ins><span class="cx"> #include &quot;DateComponents.h&quot;
</span><span class="cx"> #include &quot;InputType.h&quot;
</span><span class="cx"> 
</span><span class="lines">@@ -60,9 +60,9 @@
</span><span class="cx">     virtual DateComponents::Type dateType() const = 0;
</span><span class="cx"> #endif
</span><span class="cx">     double valueAsDate() const override;
</span><del>-    void setValueAsDate(double, ExceptionCode&amp;) const override;
</del><ins>+    ExceptionOr&lt;void&gt; setValueAsDate(double) const override;
</ins><span class="cx">     double valueAsDouble() const override;
</span><del>-    void setValueAsDecimal(const Decimal&amp;, TextFieldEventBehavior, ExceptionCode&amp;) const override;
</del><ins>+    ExceptionOr&lt;void&gt; setValueAsDecimal(const Decimal&amp;, TextFieldEventBehavior) const override;
</ins><span class="cx">     bool typeMismatchFor(const String&amp;) const override;
</span><span class="cx">     bool typeMismatch() const override;
</span><span class="cx">     bool valueMissing(const String&amp;) const override;
</span><span class="lines">@@ -76,5 +76,5 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><ins>+
</ins><span class="cx"> #endif
</span><del>-#endif // BaseDateAndTimeInputType_h
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlDOMTokenListcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/DOMTokenList.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/DOMTokenList.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/DOMTokenList.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -48,28 +48,25 @@
</span><span class="cx">     return token.find(isHTMLSpace) != notFound;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool DOMTokenList::validateToken(const String&amp; token, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; DOMTokenList::validateToken(const String&amp; token)
</ins><span class="cx"> {
</span><del>-    if (token.isEmpty()) {
-        ec = SYNTAX_ERR;
-        return false;
-    }
</del><ins>+    if (token.isEmpty())
+        return Exception { SYNTAX_ERR };
</ins><span class="cx"> 
</span><del>-    if (tokenContainsHTMLSpace(token)) {
-        ec = INVALID_CHARACTER_ERR;
-        return false;
-    }
</del><ins>+    if (tokenContainsHTMLSpace(token))
+        return Exception { INVALID_CHARACTER_ERR };
</ins><span class="cx"> 
</span><del>-    return true;
</del><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool DOMTokenList::validateTokens(const String* tokens, size_t length, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; DOMTokenList::validateTokens(const String* tokens, size_t length)
</ins><span class="cx"> {
</span><span class="cx">     for (size_t i = 0; i &lt; length; ++i) {
</span><del>-        if (!validateToken(tokens[i], ec))
-            return false;
</del><ins>+        auto result = validateToken(tokens[i]);
+        if (result.hasException())
+            return result;
</ins><span class="cx">     }
</span><del>-    return true;
</del><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool DOMTokenList::contains(const AtomicString&amp; token) const
</span><span class="lines">@@ -77,7 +74,7 @@
</span><span class="cx">     return tokens().contains(token);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline void DOMTokenList::addInternal(const String* newTokens, size_t length, ExceptionCode&amp; ec)
</del><ins>+inline ExceptionOr&lt;void&gt; DOMTokenList::addInternal(const String* newTokens, size_t length)
</ins><span class="cx"> {
</span><span class="cx">     // This is usually called with a single token.
</span><span class="cx">     Vector&lt;AtomicString, 1&gt; uniqueNewTokens;
</span><span class="lines">@@ -84,9 +81,11 @@
</span><span class="cx">     uniqueNewTokens.reserveInitialCapacity(length);
</span><span class="cx"> 
</span><span class="cx">     auto&amp; tokens = this-&gt;tokens();
</span><ins>+
</ins><span class="cx">     for (size_t i = 0; i &lt; length; ++i) {
</span><del>-        if (!validateToken(newTokens[i], ec))
-            return;
</del><ins>+        auto result = validateToken(newTokens[i]);
+        if (result.hasException())
+            return result;
</ins><span class="cx">         if (!tokens.contains(newTokens[i]) &amp;&amp; !uniqueNewTokens.contains(newTokens[i]))
</span><span class="cx">             uniqueNewTokens.uncheckedAppend(newTokens[i]);
</span><span class="cx">     }
</span><span class="lines">@@ -95,22 +94,25 @@
</span><span class="cx">         tokens.appendVector(uniqueNewTokens);
</span><span class="cx"> 
</span><span class="cx">     updateAssociatedAttributeFromTokens();
</span><ins>+
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void DOMTokenList::add(const Vector&lt;String&gt;&amp; tokens, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; DOMTokenList::add(const Vector&lt;String&gt;&amp; tokens)
</ins><span class="cx"> {
</span><del>-    addInternal(tokens.data(), tokens.size(), ec);
</del><ins>+    return addInternal(tokens.data(), tokens.size());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void DOMTokenList::add(const WTF::AtomicString&amp; token, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; DOMTokenList::add(const AtomicString&amp; token)
</ins><span class="cx"> {
</span><del>-    addInternal(&amp;token.string(), 1, ec);
</del><ins>+    return addInternal(&amp;token.string(), 1);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline void DOMTokenList::removeInternal(const String* tokensToRemove, size_t length, ExceptionCode&amp; ec)
</del><ins>+inline ExceptionOr&lt;void&gt; DOMTokenList::removeInternal(const String* tokensToRemove, size_t length)
</ins><span class="cx"> {
</span><del>-    if (!validateTokens(tokensToRemove, length, ec))
-        return;
</del><ins>+    auto result = validateTokens(tokensToRemove, length);
+    if (result.hasException())
+        return result;
</ins><span class="cx"> 
</span><span class="cx">     auto&amp; tokens = this-&gt;tokens();
</span><span class="cx">     for (size_t i = 0; i &lt; length; ++i)
</span><span class="lines">@@ -117,22 +119,25 @@
</span><span class="cx">         tokens.removeFirst(tokensToRemove[i]);
</span><span class="cx"> 
</span><span class="cx">     updateAssociatedAttributeFromTokens();
</span><ins>+
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void DOMTokenList::remove(const Vector&lt;String&gt;&amp; tokens, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; DOMTokenList::remove(const Vector&lt;String&gt;&amp; tokens)
</ins><span class="cx"> {
</span><del>-    removeInternal(tokens.data(), tokens.size(), ec);
</del><ins>+    return removeInternal(tokens.data(), tokens.size());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void DOMTokenList::remove(const WTF::AtomicString&amp; token, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; DOMTokenList::remove(const AtomicString&amp; token)
</ins><span class="cx"> {
</span><del>-    removeInternal(&amp;token.string(), 1, ec);
</del><ins>+    return removeInternal(&amp;token.string(), 1);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool DOMTokenList::toggle(const AtomicString&amp; token, Optional&lt;bool&gt; force, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;bool&gt; DOMTokenList::toggle(const AtomicString&amp; token, Optional&lt;bool&gt; force)
</ins><span class="cx"> {
</span><del>-    if (!validateToken(token, ec))
-        return false;
</del><ins>+    auto result = validateToken(token);
+    if (result.hasException())
+        return result.releaseException();
</ins><span class="cx"> 
</span><span class="cx">     auto&amp; tokens = this-&gt;tokens();
</span><span class="cx"> 
</span><span class="lines">@@ -153,22 +158,18 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void DOMTokenList::replace(const AtomicString&amp; token, const AtomicString&amp; newToken, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; DOMTokenList::replace(const AtomicString&amp; token, const AtomicString&amp; newToken)
</ins><span class="cx"> {
</span><del>-    if (token.isEmpty() || newToken.isEmpty()) {
-        ec = SYNTAX_ERR;
-        return;
-    }
</del><ins>+    if (token.isEmpty() || newToken.isEmpty())
+        return Exception { SYNTAX_ERR };
</ins><span class="cx"> 
</span><del>-    if (tokenContainsHTMLSpace(token) || tokenContainsHTMLSpace(newToken)) {
-        ec = INVALID_CHARACTER_ERR;
-        return;
-    }
</del><ins>+    if (tokenContainsHTMLSpace(token) || tokenContainsHTMLSpace(newToken))
+        return Exception { INVALID_CHARACTER_ERR };
</ins><span class="cx"> 
</span><span class="cx">     auto&amp; tokens = this-&gt;tokens();
</span><span class="cx">     size_t index = tokens.find(token);
</span><span class="cx">     if (index == notFound)
</span><del>-        return;
</del><ins>+        return { };
</ins><span class="cx"> 
</span><span class="cx">     if (tokens.find(newToken) != notFound)
</span><span class="cx">         tokens.remove(index);
</span><span class="lines">@@ -176,15 +177,15 @@
</span><span class="cx">         tokens[index] = newToken;
</span><span class="cx"> 
</span><span class="cx">     updateAssociatedAttributeFromTokens();
</span><ins>+
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // https://dom.spec.whatwg.org/#concept-domtokenlist-validation
</span><del>-bool DOMTokenList::supports(StringView token, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;bool&gt; DOMTokenList::supports(StringView token)
</ins><span class="cx"> {
</span><del>-    if (!m_isSupportedToken) {
-        ec = TypeError;
-        return false;
-    }
</del><ins>+    if (!m_isSupportedToken)
+        return Exception { TypeError };
</ins><span class="cx">     return m_isSupportedToken(token);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlDOMTokenListh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/DOMTokenList.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/DOMTokenList.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/DOMTokenList.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -30,7 +30,7 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class DOMTokenList {
</span><del>-    WTF_MAKE_NONCOPYABLE(DOMTokenList); WTF_MAKE_FAST_ALLOCATED;
</del><ins>+    WTF_MAKE_FAST_ALLOCATED;
</ins><span class="cx"> public:
</span><span class="cx">     DOMTokenList(Element&amp;, const QualifiedName&amp; attributeName, WTF::Function&lt;bool(StringView)&gt;&amp;&amp; isSupportedToken = { });
</span><span class="cx"> 
</span><span class="lines">@@ -43,13 +43,13 @@
</span><span class="cx">     const AtomicString&amp; item(unsigned index) const;
</span><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT bool contains(const AtomicString&amp;) const;
</span><del>-    void add(const Vector&lt;String&gt;&amp;, ExceptionCode&amp;);
-    void add(const AtomicString&amp;, ExceptionCode&amp;);
-    void remove(const Vector&lt;String&gt;&amp;, ExceptionCode&amp;);
-    void remove(const AtomicString&amp;, ExceptionCode&amp;);
-    WEBCORE_EXPORT bool toggle(const AtomicString&amp;, Optional&lt;bool&gt; force, ExceptionCode&amp;);
-    void replace(const AtomicString&amp; token, const AtomicString&amp; newToken, ExceptionCode&amp;);
-    bool supports(StringView token, ExceptionCode&amp;);
</del><ins>+    ExceptionOr&lt;void&gt; add(const Vector&lt;String&gt;&amp;);
+    ExceptionOr&lt;void&gt; add(const AtomicString&amp;);
+    ExceptionOr&lt;void&gt; remove(const Vector&lt;String&gt;&amp;);
+    ExceptionOr&lt;void&gt; remove(const AtomicString&amp;);
+    WEBCORE_EXPORT ExceptionOr&lt;bool&gt; toggle(const AtomicString&amp;, Optional&lt;bool&gt; force);
+    ExceptionOr&lt;void&gt; replace(const AtomicString&amp; token, const AtomicString&amp; newToken);
+    ExceptionOr&lt;bool&gt; supports(StringView token);
</ins><span class="cx"> 
</span><span class="cx">     Element&amp; element() const { return m_element; }
</span><span class="cx"> 
</span><span class="lines">@@ -63,10 +63,10 @@
</span><span class="cx">     WEBCORE_EXPORT Vector&lt;AtomicString&gt;&amp; tokens();
</span><span class="cx">     const Vector&lt;AtomicString&gt;&amp; tokens() const { return const_cast&lt;DOMTokenList&amp;&gt;(*this).tokens(); }
</span><span class="cx"> 
</span><del>-    static bool validateToken(const String&amp;, ExceptionCode&amp;);
-    static bool validateTokens(const String* tokens, size_t length, ExceptionCode&amp;);
-    void addInternal(const String* tokens, size_t length, ExceptionCode&amp;);
-    void removeInternal(const String* tokens, size_t length, ExceptionCode&amp;);
</del><ins>+    static ExceptionOr&lt;void&gt; validateToken(const String&amp;);
+    static ExceptionOr&lt;void&gt; validateTokens(const String* tokens, size_t length);
+    ExceptionOr&lt;void&gt; addInternal(const String* tokens, size_t length);
+    ExceptionOr&lt;void&gt; removeInternal(const String* tokens, size_t length);
</ins><span class="cx"> 
</span><span class="cx">     Element&amp; m_element;
</span><span class="cx">     const WebCore::QualifiedName&amp; m_attributeName;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlDOMTokenListidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/DOMTokenList.idl (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/DOMTokenList.idl        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/DOMTokenList.idl        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -30,11 +30,11 @@
</span><span class="cx">     readonly attribute unsigned long length;
</span><span class="cx">     getter DOMString? item(unsigned long index);
</span><span class="cx">     boolean contains(DOMString token);
</span><del>-    [CEReactions, MayThrowLegacyException] void add(DOMString... tokens);
-    [CEReactions, MayThrowLegacyException] void remove(DOMString... tokens);
-    [CEReactions, MayThrowLegacyException] boolean toggle(DOMString token, optional boolean force);
-    [CEReactions, MayThrowLegacyException] void replace(DOMString token, DOMString newToken);
-    [MayThrowLegacyException] boolean supports(DOMString token);
</del><ins>+    [CEReactions, MayThrowException] void add(DOMString... tokens);
+    [CEReactions, MayThrowException] void remove(DOMString... tokens);
+    [CEReactions, MayThrowException] boolean toggle(DOMString token, optional boolean force);
+    [CEReactions, MayThrowException] void replace(DOMString token, DOMString newToken);
+    [MayThrowException] boolean supports(DOMString token);
</ins><span class="cx"> 
</span><span class="cx">     iterable&lt;DOMString&gt;;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlDOMURLcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/DOMURL.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/DOMURL.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/DOMURL.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -26,58 +26,51 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;DOMURL.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;SecurityOrigin.h&quot;
</del><span class="cx"> #include &quot;ActiveDOMObject.h&quot;
</span><span class="cx"> #include &quot;Blob.h&quot;
</span><span class="cx"> #include &quot;BlobURL.h&quot;
</span><ins>+#include &quot;ExceptionCode.h&quot;
</ins><span class="cx"> #include &quot;MemoryCache.h&quot;
</span><span class="cx"> #include &quot;PublicURLManager.h&quot;
</span><span class="cx"> #include &quot;ResourceRequest.h&quot;
</span><span class="cx"> #include &quot;ScriptExecutionContext.h&quot;
</span><ins>+#include &quot;SecurityOrigin.h&quot;
</ins><span class="cx"> #include &quot;URLSearchParams.h&quot;
</span><span class="cx"> #include &lt;wtf/MainThread.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-Ref&lt;DOMURL&gt; DOMURL::create(const String&amp; url, const String&amp; base, ExceptionCode&amp; ec)
</del><ins>+inline DOMURL::DOMURL(URL&amp;&amp; completeURL, URL&amp;&amp; baseURL)
+    : m_baseURL(WTFMove(baseURL))
+    , m_url(WTFMove(completeURL))
</ins><span class="cx"> {
</span><del>-    return adoptRef(*new DOMURL(url, base, ec));
</del><span class="cx"> }
</span><span class="cx"> 
</span><del>-Ref&lt;DOMURL&gt; DOMURL::create(const String&amp; url, const DOMURL&amp; base, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Ref&lt;DOMURL&gt;&gt; DOMURL::create(const String&amp; url, const String&amp; base)
</ins><span class="cx"> {
</span><del>-    return adoptRef(*new DOMURL(url, base, ec));
</del><ins>+    URL baseURL { URL { }, base };
+    if (!baseURL.isValid())
+        return Exception { TypeError };
+    URL completeURL { baseURL, url };
+    if (!completeURL.isValid())
+        return Exception { TypeError };
+    return adoptRef(*new DOMURL(WTFMove(completeURL), WTFMove(baseURL)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-Ref&lt;DOMURL&gt; DOMURL::create(const String&amp; url, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Ref&lt;DOMURL&gt;&gt; DOMURL::create(const String&amp; url, const DOMURL&amp; base)
</ins><span class="cx"> {
</span><del>-    return adoptRef(*new DOMURL(url, ec));
</del><ins>+    return create(url, base.href());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline DOMURL::DOMURL(const String&amp; url, const String&amp; base, ExceptionCode&amp; ec)
-    : m_baseURL(URL(), base)
-    , m_url(m_baseURL, url)
</del><ins>+ExceptionOr&lt;Ref&lt;DOMURL&gt;&gt; DOMURL::create(const String&amp; url)
</ins><span class="cx"> {
</span><del>-    if (!m_baseURL.isValid() || !m_url.isValid())
-        ec = TypeError;
</del><ins>+    URL baseURL { blankURL() };
+    URL completeURL { baseURL, url };
+    if (!completeURL.isValid())
+        return Exception { TypeError };
+    return adoptRef(*new DOMURL(WTFMove(completeURL), WTFMove(baseURL)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline DOMURL::DOMURL(const String&amp; url, const DOMURL&amp; base, ExceptionCode&amp; ec)
-    : m_baseURL(base.href())
-    , m_url(m_baseURL, url)
-{
-    if (!m_baseURL.isValid() || !m_url.isValid())
-        ec = TypeError;
-}
-
-inline DOMURL::DOMURL(const String&amp; url, ExceptionCode&amp; ec)
-    : m_baseURL(blankURL())
-    , m_url(m_baseURL, url)
-{
-    if (!m_url.isValid())
-        ec = TypeError;
-}
-
</del><span class="cx"> DOMURL::~DOMURL()
</span><span class="cx"> {
</span><span class="cx">     if (m_searchParams)
</span><span class="lines">@@ -84,11 +77,15 @@
</span><span class="cx">         m_searchParams-&gt;associatedURLDestroyed();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void DOMURL::setHref(const String&amp; url)
</del><ins>+ExceptionOr&lt;void&gt; DOMURL::setHref(const String&amp; url)
</ins><span class="cx"> {
</span><del>-    m_url = URL(m_baseURL, url);
</del><ins>+    URL completeURL { m_baseURL, url };
+    if (!completeURL.isValid())
+        return Exception { TypeError };
+    m_url = WTFMove(completeURL);
</ins><span class="cx">     if (m_searchParams)
</span><span class="cx">         m_searchParams-&gt;updateFromAssociatedURL();
</span><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void DOMURL::setQuery(const String&amp; query)
</span><span class="lines">@@ -96,13 +93,6 @@
</span><span class="cx">     m_url.setQuery(query);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void DOMURL::setHref(const String&amp; url, ExceptionCode&amp; ec)
-{
-    setHref(url);
-    if (!m_url.isValid())
-        ec = TypeError;
-}
-
</del><span class="cx"> String DOMURL::createObjectURL(ScriptExecutionContext&amp; scriptExecutionContext, Blob&amp; blob)
</span><span class="cx"> {
</span><span class="cx">     return createPublicURL(scriptExecutionContext, blob);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlDOMURLh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/DOMURL.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/DOMURL.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/DOMURL.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -26,12 +26,10 @@
</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 &quot;URL.h&quot;
</span><span class="cx"> #include &quot;URLUtils.h&quot;
</span><span class="cx"> #include &lt;wtf/HashSet.h&gt;
</span><del>-#include &lt;wtf/RefCounted.h&gt;
-#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,14 +40,13 @@
</span><span class="cx"> 
</span><span class="cx"> class DOMURL : public RefCounted&lt;DOMURL&gt;, public URLUtils&lt;DOMURL&gt; {
</span><span class="cx"> public:
</span><del>-    static Ref&lt;DOMURL&gt; create(const String&amp; url, const String&amp; base, ExceptionCode&amp;);
-    static Ref&lt;DOMURL&gt; create(const String&amp; url, const DOMURL&amp; base, ExceptionCode&amp;);
-    static Ref&lt;DOMURL&gt; create(const String&amp; url, ExceptionCode&amp;);
</del><ins>+    static ExceptionOr&lt;Ref&lt;DOMURL&gt;&gt; create(const String&amp; url, const String&amp; base);
+    static ExceptionOr&lt;Ref&lt;DOMURL&gt;&gt; create(const String&amp; url, const DOMURL&amp; base);
+    static ExceptionOr&lt;Ref&lt;DOMURL&gt;&gt; create(const String&amp; url);
</ins><span class="cx">     ~DOMURL();
</span><span class="cx"> 
</span><span class="cx">     URL href() const { return m_url; }
</span><del>-    void setHref(const String&amp; url);
-    void setHref(const String&amp;, ExceptionCode&amp;);
</del><ins>+    ExceptionOr&lt;void&gt; setHref(const String&amp; url);
</ins><span class="cx">     void setQuery(const String&amp;);
</span><span class="cx"> 
</span><span class="cx">     URLSearchParams&amp; searchParams();
</span><span class="lines">@@ -58,10 +55,9 @@
</span><span class="cx">     static void revokeObjectURL(ScriptExecutionContext&amp;, const String&amp;);
</span><span class="cx"> 
</span><span class="cx">     static String createPublicURL(ScriptExecutionContext&amp;, URLRegistrable&amp;);
</span><ins>+
</ins><span class="cx"> private:
</span><del>-    DOMURL(const String&amp; url, const String&amp; base, ExceptionCode&amp;);
-    DOMURL(const String&amp; url, const DOMURL&amp; base, ExceptionCode&amp;);
-    DOMURL(const String&amp; url, ExceptionCode&amp;);
</del><ins>+    DOMURL(URL&amp;&amp; completeURL, URL&amp;&amp; baseURL);
</ins><span class="cx"> 
</span><span class="cx">     URL m_baseURL;
</span><span class="cx">     URL m_url;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlDOMURLidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/DOMURL.idl (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/DOMURL.idl        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/DOMURL.idl        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx">     Constructor(USVString url),
</span><span class="cx">     Constructor(USVString url, USVString base),
</span><span class="cx">     Constructor(USVString url, DOMURL base),
</span><del>-    ConstructorMayThrowLegacyException,
</del><ins>+    ConstructorMayThrowException,
</ins><span class="cx">     JSGenerateToNativeObject,
</span><span class="cx">     JSGenerateToJSObject,
</span><span class="cx">     InterfaceName=URL,
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlDateTimeLocalInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/DateTimeLocalInputType.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/DateTimeLocalInputType.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/DateTimeLocalInputType.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -29,9 +29,10 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> #include &quot;config.h&quot;
</span><del>-#if ENABLE(INPUT_TYPE_DATETIMELOCAL)
</del><span class="cx"> #include &quot;DateTimeLocalInputType.h&quot;
</span><span class="cx"> 
</span><ins>+#if ENABLE(INPUT_TYPE_DATETIMELOCAL)
+
</ins><span class="cx"> #include &quot;HTMLInputElement.h&quot;
</span><span class="cx"> #include &quot;HTMLNames.h&quot;
</span><span class="cx"> #include &quot;InputTypeNames.h&quot;
</span><span class="lines">@@ -61,10 +62,10 @@
</span><span class="cx">     return DateComponents::invalidMilliseconds();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void DateTimeLocalInputType::setValueAsDate(double value, ExceptionCode&amp; ec) const
</del><ins>+ExceptionOr&lt;void&gt; DateTimeLocalInputType::setValueAsDate(double value) const
</ins><span class="cx"> {
</span><span class="cx">     // valueAsDate doesn't work for the datetime-local type according to the standard.
</span><del>-    InputType::setValueAsDate(value, ec);
</del><ins>+    return InputType::setValueAsDate(value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> StepRange DateTimeLocalInputType::createStepRange(AnyStepHandling anyStepHandling) const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlDateTimeLocalInputTypeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/DateTimeLocalInputType.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/DateTimeLocalInputType.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/DateTimeLocalInputType.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -28,10 +28,10 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef DateTimeLocalInputType_h
-#define DateTimeLocalInputType_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(INPUT_TYPE_DATETIMELOCAL)
</span><ins>+
</ins><span class="cx"> #include &quot;BaseChooserOnlyDateAndTimeInputType.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -41,17 +41,16 @@
</span><span class="cx">     explicit DateTimeLocalInputType(HTMLInputElement&amp; element) : BaseChooserOnlyDateAndTimeInputType(element) { }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    const AtomicString&amp; formControlType() const override;
-    DateComponents::Type dateType() const override;
-    double valueAsDate() const override;
-    void setValueAsDate(double, ExceptionCode&amp;) const override;
-    StepRange createStepRange(AnyStepHandling) const override;
-    bool parseToDateComponentsInternal(const UChar*, unsigned length, DateComponents*) const override;
-    bool setMillisecondToDateComponents(double, DateComponents*) const override;
-    bool isDateTimeLocalField() const override;
</del><ins>+    const AtomicString&amp; formControlType() const final;
+    DateComponents::Type dateType() const final;
+    double valueAsDate() const final;
+    ExceptionOr&lt;void&gt; setValueAsDate(double) const final;
+    StepRange createStepRange(AnyStepHandling) const final;
+    bool parseToDateComponentsInternal(const UChar*, unsigned length, DateComponents*) const final;
+    bool setMillisecondToDateComponents(double, DateComponents*) const final;
+    bool isDateTimeLocalField() const final;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><del>-#endif // DateTimeLocalInputType_h
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlFTPDirectoryDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/FTPDirectoryDocument.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/FTPDirectoryDocument.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/FTPDirectoryDocument.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -101,7 +101,7 @@
</span><span class="cx"> 
</span><span class="cx"> void FTPDirectoryDocumentParser::appendEntry(const String&amp; filename, const String&amp; size, const String&amp; date, bool isDirectory)
</span><span class="cx"> {
</span><del>-    auto rowElement = m_tableElement-&gt;insertRow(-1, IGNORE_EXCEPTION);
</del><ins>+    auto rowElement = m_tableElement-&gt;insertRow(-1).releaseReturnValue();
</ins><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></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLCanvasElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLCanvasElement.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLCanvasElement.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLCanvasElement.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -458,15 +458,13 @@
</span><span class="cx">     return mimeType.convertToASCIILowercase();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String HTMLCanvasElement::toDataURL(const String&amp; mimeType, const double* quality, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;String&gt; HTMLCanvasElement::toDataURL(const String&amp; mimeType, Optional&lt;double&gt; quality)
</ins><span class="cx"> {
</span><del>-    if (!m_originClean) {
-        ec = SECURITY_ERR;
-        return String();
-    }
</del><ins>+    if (!m_originClean)
+        return Exception { SECURITY_ERR };
</ins><span class="cx"> 
</span><span class="cx">     if (m_size.isEmpty() || !buffer())
</span><del>-        return ASCIILiteral(&quot;data:,&quot;);
</del><ins>+        return String { ASCIILiteral { &quot;data:,&quot; } };
</ins><span class="cx"> 
</span><span class="cx">     String encodingMIMEType = toEncodingMimeType(mimeType);
</span><span class="cx"> 
</span><span class="lines">@@ -473,7 +471,7 @@
</span><span class="cx"> #if USE(CG)
</span><span class="cx">     // Try to get ImageData first, as that may avoid lossy conversions.
</span><span class="cx">     if (auto imageData = getImageData())
</span><del>-        return ImageDataToDataURL(*imageData, encodingMIMEType, quality);
</del><ins>+        return dataURL(*imageData, encodingMIMEType, quality);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     makeRenderingResultsAvailable();
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLCanvasElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLCanvasElement.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLCanvasElement.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLCanvasElement.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -45,7 +45,7 @@
</span><span class="cx"> class ImageData;
</span><span class="cx"> 
</span><span class="cx"> namespace DisplayList {
</span><del>-typedef unsigned AsTextFlags;
</del><ins>+using AsTextFlags = unsigned;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> class CanvasObserver {
</span><span class="lines">@@ -92,8 +92,8 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     static String toEncodingMimeType(const String&amp; mimeType);
</span><del>-    WEBCORE_EXPORT String toDataURL(const String&amp; mimeType, const double* quality, ExceptionCode&amp;);
-    String toDataURL(const String&amp; mimeType, ExceptionCode&amp; ec) { return toDataURL(mimeType, nullptr, ec); }
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;String&gt; toDataURL(const String&amp; mimeType, Optional&lt;double&gt; quality);
+    ExceptionOr&lt;String&gt; toDataURL(const String&amp; mimeType) { return toDataURL(mimeType, Nullopt); }
</ins><span class="cx"> 
</span><span class="cx">     // Used for rendering
</span><span class="cx">     void didDraw(const FloatRect&amp;);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLCanvasElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLCanvasElement.idl (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLCanvasElement.idl        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLCanvasElement.idl        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -32,9 +32,8 @@
</span><span class="cx">     attribute unsigned long width;
</span><span class="cx">     attribute unsigned long height;
</span><span class="cx"> 
</span><del>-    [Custom, MayThrowLegacyException] DOMString toDataURL(optional DOMString? type);
</del><ins>+    [Custom, MayThrowException] DOMString toDataURL(optional DOMString? type);
</ins><span class="cx"> 
</span><span class="cx">     // The custom binding is needed to handle context creation attributes.
</span><span class="cx">     [Custom] any getContext(DOMString contextId, any... arguments);
</span><span class="cx"> };
</span><del>-
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLElement.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLElement.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLElement.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -435,10 +435,8 @@
</span><span class="cx">         setAttributeEventListener(eventName, name, value);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Ref&lt;DocumentFragment&gt; HTMLElement::textToFragment(const String&amp; text, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Ref&lt;DocumentFragment&gt;&gt; HTMLElement::textToFragment(const String&amp; text)
</ins><span class="cx"> {
</span><del>-    ec = 0;
-
</del><span class="cx">     auto fragment = DocumentFragment::create(document());
</span><span class="cx"> 
</span><span class="cx">     for (unsigned start = 0, length = text.length(); start &lt; length; ) {
</span><span class="lines">@@ -452,9 +450,10 @@
</span><span class="cx">                 break;
</span><span class="cx">         }
</span><span class="cx"> 
</span><ins>+        ExceptionCode ec = 0;
</ins><span class="cx">         fragment-&gt;appendChild(Text::create(document(), text.substring(start, i - start)), ec);
</span><span class="cx">         if (ec)
</span><del>-            break;
</del><ins>+            return Exception { ec };
</ins><span class="cx"> 
</span><span class="cx">         if (i == length)
</span><span class="cx">             break;
</span><span class="lines">@@ -461,7 +460,7 @@
</span><span class="cx"> 
</span><span class="cx">         fragment-&gt;appendChild(HTMLBRElement::create(document()), ec);
</span><span class="cx">         if (ec)
</span><del>-            break;
</del><ins>+            return Exception { ec };
</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">@@ -470,7 +469,7 @@
</span><span class="cx">         start = i + 1; // Character after line break.
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return fragment;
</del><ins>+    return WTFMove(fragment);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline bool shouldProhibitSetInnerOuterText(const HTMLElement&amp; element)
</span><span class="lines">@@ -515,16 +514,12 @@
</span><span class="cx">     setAttributeWithoutSynchronization(dirAttr, value);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLElement::setInnerText(const String&amp; text, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; HTMLElement::setInnerText(const String&amp; text)
</ins><span class="cx"> {
</span><del>-    if (ieForbidsInsertHTML()) {
-        ec = NO_MODIFICATION_ALLOWED_ERR;
-        return;
-    }
-    if (shouldProhibitSetInnerOuterText(*this)) {
-        ec = NO_MODIFICATION_ALLOWED_ERR;
-        return;
-    }
</del><ins>+    if (ieForbidsInsertHTML())
+        return Exception { NO_MODIFICATION_ALLOWED_ERR };
+    if (shouldProhibitSetInnerOuterText(*this))
+        return Exception { NO_MODIFICATION_ALLOWED_ERR };
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: This doesn't take whitespace collapsing into account at all.
</span><span class="cx"> 
</span><span class="lines">@@ -531,10 +526,9 @@
</span><span class="cx">     if (!text.contains('\n') &amp;&amp; !text.contains('\r')) {
</span><span class="cx">         if (text.isEmpty()) {
</span><span class="cx">             removeChildren();
</span><del>-            return;
</del><ins>+            return { };
</ins><span class="cx">         }
</span><del>-        replaceChildrenWithText(*this, text, ec);
-        return;
</del><ins>+        return replaceChildrenWithText(*this, text);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // FIXME: Do we need to be able to detect preserveNewline style even when there's no renderer?
</span><span class="lines">@@ -542,63 +536,67 @@
</span><span class="cx">     // For example, for the contents of textarea elements that are display:none?
</span><span class="cx">     auto r = renderer();
</span><span class="cx">     if ((r &amp;&amp; r-&gt;style().preserveNewline()) || (inDocument() &amp;&amp; isTextControlInnerTextElement())) {
</span><del>-        if (!text.contains('\r')) {
-            replaceChildrenWithText(*this, text, ec);
-            return;
-        }
</del><ins>+        if (!text.contains('\r'))
+            return replaceChildrenWithText(*this, text);
</ins><span class="cx">         String textWithConsistentLineBreaks = text;
</span><span class="cx">         textWithConsistentLineBreaks.replace(&quot;\r\n&quot;, &quot;\n&quot;);
</span><span class="cx">         textWithConsistentLineBreaks.replace('\r', '\n');
</span><del>-        replaceChildrenWithText(*this, textWithConsistentLineBreaks, ec);
-        return;
</del><ins>+        return replaceChildrenWithText(*this, textWithConsistentLineBreaks);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Add text nodes and &lt;br&gt; elements.
</span><del>-    ec = 0;
-    Ref&lt;DocumentFragment&gt; fragment = textToFragment(text, ec);
-    if (!ec)
-        replaceChildrenWithFragment(*this, WTFMove(fragment), ec);
</del><ins>+    auto fragment = textToFragment(text);
+    if (fragment.hasException())
+        return fragment.releaseException();
+    return replaceChildrenWithFragment(*this, fragment.releaseReturnValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLElement::setOuterText(const String&amp; text, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; HTMLElement::setOuterText(const String&amp; text)
</ins><span class="cx"> {
</span><del>-    if (ieForbidsInsertHTML()) {
-        ec = NO_MODIFICATION_ALLOWED_ERR;
-        return;
-    }
-    if (shouldProhibitSetInnerOuterText(*this)) {
-        ec = NO_MODIFICATION_ALLOWED_ERR;
-        return;
-    }
</del><ins>+    if (ieForbidsInsertHTML())
+        return Exception { NO_MODIFICATION_ALLOWED_ERR };
+    if (shouldProhibitSetInnerOuterText(*this))
+        return Exception { NO_MODIFICATION_ALLOWED_ERR };
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;ContainerNode&gt; parent = parentNode();
</span><del>-    if (!parent) {
-        ec = NO_MODIFICATION_ALLOWED_ERR;
-        return;
-    }
</del><ins>+    if (!parent)
+        return Exception { NO_MODIFICATION_ALLOWED_ERR };
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;Node&gt; prev = previousSibling();
</span><span class="cx">     RefPtr&lt;Node&gt; next = nextSibling();
</span><span class="cx">     RefPtr&lt;Node&gt; newChild;
</span><del>-    ec = 0;
-    
</del><ins>+
</ins><span class="cx">     // Convert text to fragment with &lt;br&gt; tags instead of linebreaks if needed.
</span><del>-    if (text.contains('\r') || text.contains('\n'))
-        newChild = textToFragment(text, ec);
-    else
</del><ins>+    if (text.contains('\r') || text.contains('\n')) {
+        auto result = textToFragment(text);
+        if (result.hasException())
+            return result.releaseException();
+        newChild = result.releaseReturnValue();
+    } else
</ins><span class="cx">         newChild = Text::create(document(), text);
</span><span class="cx"> 
</span><span class="cx">     if (!parentNode())
</span><del>-        ec = HIERARCHY_REQUEST_ERR;
</del><ins>+        return Exception { HIERARCHY_REQUEST_ERR };
+
+    ExceptionCode ec = 0;
+    parent-&gt;replaceChild(*newChild, *this, ec);
</ins><span class="cx">     if (ec)
</span><del>-        return;
-    parent-&gt;replaceChild(*newChild, *this, ec);
</del><ins>+        return Exception { ec };
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;Node&gt; node = next ? next-&gt;previousSibling() : nullptr;
</span><del>-    if (!ec &amp;&amp; is&lt;Text&gt;(node.get()))
</del><ins>+    if (is&lt;Text&gt;(node.get())) {
+        ExceptionCode ec = 0;
</ins><span class="cx">         mergeWithNextTextNode(downcast&lt;Text&gt;(*node), ec);
</span><del>-    if (!ec &amp;&amp; is&lt;Text&gt;(prev.get()))
</del><ins>+        if (ec)
+            return Exception { ec };
+    }
+    if (is&lt;Text&gt;(prev.get())) {
+        ExceptionCode ec = 0;
</ins><span class="cx">         mergeWithNextTextNode(downcast&lt;Text&gt;(*prev), ec);
</span><ins>+        if (ec)
+            return Exception { ec };
+    }
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLElement::applyAlignmentAttributeToStyle(const AtomicString&amp; alignment, MutableStyleProperties&amp; style)
</span><span class="lines">@@ -661,7 +659,7 @@
</span><span class="cx">     return ASCIILiteral(&quot;inherit&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLElement::setContentEditable(const String&amp; enabled, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; HTMLElement::setContentEditable(const String&amp; enabled)
</ins><span class="cx"> {
</span><span class="cx">     if (equalLettersIgnoringASCIICase(enabled, &quot;true&quot;))
</span><span class="cx">         setAttributeWithoutSynchronization(contenteditableAttr, AtomicString(&quot;true&quot;, AtomicString::ConstructFromLiteral));
</span><span class="lines">@@ -672,7 +670,8 @@
</span><span class="cx">     else if (equalLettersIgnoringASCIICase(enabled, &quot;inherit&quot;))
</span><span class="cx">         removeAttribute(contenteditableAttr);
</span><span class="cx">     else
</span><del>-        ec = SYNTAX_ERR;
</del><ins>+        return Exception { SYNTAX_ERR };
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HTMLElement::draggable() const
</span><span class="lines">@@ -721,30 +720,15 @@
</span><span class="cx">     return -1;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-TranslateAttributeMode HTMLElement::translateAttributeMode() const
-{
-    const AtomicString&amp; value = attributeWithoutSynchronization(translateAttr);
-
-    if (value.isNull())
-        return TranslateAttributeInherit;
-    if (equalLettersIgnoringASCIICase(value, &quot;yes&quot;) || value.isEmpty())
-        return TranslateAttributeYes;
-    if (equalLettersIgnoringASCIICase(value, &quot;no&quot;))
-        return TranslateAttributeNo;
-
-    return TranslateAttributeInherit;
-}
-
</del><span class="cx"> bool HTMLElement::translate() const
</span><span class="cx"> {
</span><span class="cx">     for (auto&amp; element : lineageOfType&lt;HTMLElement&gt;(*this)) {
</span><del>-        TranslateAttributeMode mode = element.translateAttributeMode();
-        if (mode == TranslateAttributeInherit)
-            continue;
-        ASSERT(mode == TranslateAttributeYes || mode == TranslateAttributeNo);
-        return mode == TranslateAttributeYes;
</del><ins>+        const AtomicString&amp; value = element.attributeWithoutSynchronization(translateAttr);
+        if (equalLettersIgnoringASCIICase(value, &quot;yes&quot;) || (value.isEmpty() &amp;&amp; !value.isNull()))
+            return true;
+        if (equalLettersIgnoringASCIICase(value, &quot;no&quot;))
+            return false;
</ins><span class="cx">     }
</span><del>-
</del><span class="cx">     // Default on the root element is translate=yes.
</span><span class="cx">     return true;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLElement.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLElement.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLElement.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -20,8 +20,7 @@
</span><span class="cx">  *
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef HTMLElement_h
-#define HTMLElement_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #include &quot;StyledElement.h&quot;
</span><span class="cx"> 
</span><span class="lines">@@ -32,12 +31,6 @@
</span><span class="cx"> class HTMLCollection;
</span><span class="cx"> class HTMLFormElement;
</span><span class="cx"> 
</span><del>-enum TranslateAttributeMode {
-    TranslateAttributeYes,
-    TranslateAttributeNo,
-    TranslateAttributeInherit
-};
-
</del><span class="cx"> class HTMLElement : public StyledElement {
</span><span class="cx"> public:
</span><span class="cx">     static Ref&lt;HTMLElement&gt; create(const QualifiedName&amp; tagName, Document&amp;);
</span><span class="lines">@@ -46,14 +39,14 @@
</span><span class="cx"> 
</span><span class="cx">     int tabIndex() const override;
</span><span class="cx"> 
</span><del>-    WEBCORE_EXPORT void setInnerText(const String&amp;, ExceptionCode&amp;);
-    WEBCORE_EXPORT void setOuterText(const String&amp;, ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; setInnerText(const String&amp;);
+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; setOuterText(const String&amp;);
</ins><span class="cx"> 
</span><span class="cx">     virtual bool hasCustomFocusLogic() const;
</span><span class="cx">     bool supportsFocus() const override;
</span><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT String contentEditable() const;
</span><del>-    WEBCORE_EXPORT void setContentEditable(const String&amp;, ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; setContentEditable(const String&amp;);
</ins><span class="cx"> 
</span><span class="cx">     static Editability editabilityFromContentEditableAttr(const Node&amp;);
</span><span class="cx"> 
</span><span class="lines">@@ -128,7 +121,7 @@
</span><span class="cx"> 
</span><span class="cx">     virtual HTMLFormElement* virtualForm() const;
</span><span class="cx"> 
</span><del>-    Ref&lt;DocumentFragment&gt; textToFragment(const String&amp;, ExceptionCode&amp;);
</del><ins>+    ExceptionOr&lt;Ref&lt;DocumentFragment&gt;&gt; textToFragment(const String&amp;);
</ins><span class="cx"> 
</span><span class="cx">     void dirAttributeChanged(const AtomicString&amp;);
</span><span class="cx">     void adjustDirectionalityIfNeededAfterChildAttributeChanged(Element* child);
</span><span class="lines">@@ -135,8 +128,6 @@
</span><span class="cx">     void adjustDirectionalityIfNeededAfterChildrenChanged(Element* beforeChange, ChildChangeType);
</span><span class="cx">     TextDirection directionality(Node** strongDirectionalityTextNode= 0) const;
</span><span class="cx"> 
</span><del>-    TranslateAttributeMode translateAttributeMode() const;
-
</del><span class="cx">     static void populateEventHandlerNameMap(EventHandlerNameMap&amp;, const QualifiedName* const table[], size_t tableSize);
</span><span class="cx">     static EventHandlerNameMap createEventHandlerNameMap();
</span><span class="cx"> };
</span><span class="lines">@@ -164,5 +155,3 @@
</span><span class="cx"> SPECIALIZE_TYPE_TRAITS_END()
</span><span class="cx"> 
</span><span class="cx"> #include &quot;HTMLElementTypeHelpers.h&quot;
</span><del>-
-#endif // HTMLElement_h
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLElement.idl (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLElement.idl        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLElement.idl        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -22,9 +22,9 @@
</span><span class="cx"> #if defined(ENABLE_CUSTOM_ELEMENTS) &amp;&amp; ENABLE_CUSTOM_ELEMENTS
</span><span class="cx">     CustomConstructor(),
</span><span class="cx"> #endif
</span><ins>+    ExportMacro=WEBCORE_EXPORT,
+    JSCustomPushEventHandlerScope,
</ins><span class="cx">     JSGenerateToNativeObject,
</span><del>-    JSCustomPushEventHandlerScope,
-    ExportMacro=WEBCORE_EXPORT,
</del><span class="cx"> ] interface HTMLElement : Element {
</span><span class="cx">     [CEReactions, Reflect] attribute DOMString title;
</span><span class="cx">     [CEReactions, Reflect] attribute DOMString lang;
</span><span class="lines">@@ -41,10 +41,10 @@
</span><span class="cx">     [CEReactions, Reflect] attribute boolean hidden;
</span><span class="cx">     [CEReactions, Reflect] attribute DOMString accessKey;
</span><span class="cx"> 
</span><del>-    [CEReactions, SetterMayThrowLegacyException, TreatNullAs=EmptyString] attribute DOMString innerText;
-    [CEReactions, SetterMayThrowLegacyException, TreatNullAs=EmptyString] attribute DOMString outerText;
</del><ins>+    [CEReactions, SetterMayThrowException, TreatNullAs=EmptyString] attribute DOMString innerText;
+    [CEReactions, SetterMayThrowException, TreatNullAs=EmptyString] attribute DOMString outerText;
</ins><span class="cx"> 
</span><del>-    [CEReactions, SetterMayThrowLegacyException] attribute DOMString contentEditable;
</del><ins>+    [CEReactions, SetterMayThrowException] attribute DOMString contentEditable;
</ins><span class="cx">     readonly attribute boolean isContentEditable;
</span><span class="cx"> 
</span><span class="cx">     [CEReactions] attribute boolean spellcheck;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLEmbedElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLEmbedElement.idl (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLEmbedElement.idl        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLEmbedElement.idl        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -19,9 +19,9 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> [
</span><ins>+    CustomCall,
</ins><span class="cx">     CustomNamedSetter,
</span><span class="cx">     JSCustomGetOwnPropertySlotAndDescriptor,
</span><del>-    CustomCall,
</del><span class="cx"> ] interface HTMLEmbedElement : HTMLElement {
</span><span class="cx">     [Reflect] attribute DOMString align;
</span><span class="cx">     [Reflect] attribute DOMString height;
</span><span class="lines">@@ -30,6 +30,5 @@
</span><span class="cx">     [Reflect] attribute DOMString type;
</span><span class="cx">     [Reflect] attribute DOMString width;
</span><span class="cx"> 
</span><del>-    [CheckSecurityForNode, MayThrowLegacyException] Document getSVGDocument();
</del><ins>+    [CheckSecurityForNode, MayThrowException] Document getSVGDocument();
</ins><span class="cx"> };
</span><del>-
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFrameElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFrameElement.idl (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFrameElement.idl        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLFrameElement.idl        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -19,7 +19,6 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> interface HTMLFrameElement : HTMLElement {
</span><del>-
</del><span class="cx">     [Reflect] attribute DOMString frameBorder;
</span><span class="cx">     [Reflect, URL] attribute USVString longDesc;
</span><span class="cx"> 
</span><span class="lines">@@ -31,13 +30,11 @@
</span><span class="cx">     [Reflect] attribute DOMString scrolling;
</span><span class="cx">     [Reflect, URL] attribute USVString src;
</span><span class="cx"> 
</span><del>-    // Introduced in DOM Level 2:
</del><span class="cx">     [CheckSecurityForNode] readonly attribute Document contentDocument;
</span><span class="cx"> 
</span><del>-    // Extensions
</del><span class="cx">     readonly attribute DOMWindow contentWindow;
</span><span class="cx"> 
</span><del>-    [CheckSecurityForNode, MayThrowLegacyException] Document getSVGDocument();
</del><ins>+    [CheckSecurityForNode, MayThrowException] Document getSVGDocument();
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: No other browser has this attribute.
</span><span class="cx">     [CustomSetter] attribute DOMString location;
</span><span class="lines">@@ -44,6 +41,4 @@
</span><span class="cx"> 
</span><span class="cx">     readonly attribute long width;
</span><span class="cx">     readonly attribute long height;
</span><del>-
</del><span class="cx"> };
</span><del>-
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFrameOwnerElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFrameOwnerElement.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFrameOwnerElement.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLFrameOwnerElement.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -112,14 +112,13 @@
</span><span class="cx">     return m_contentFrame &amp;&amp; HTMLElement::isKeyboardFocusable(event);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Document* HTMLFrameOwnerElement::getSVGDocument(ExceptionCode&amp; ec) const
</del><ins>+ExceptionOr&lt;Document*&gt; HTMLFrameOwnerElement::getSVGDocument() const
</ins><span class="cx"> {
</span><del>-    Document* document = contentDocument();
</del><ins>+    auto* document = contentDocument();
</ins><span class="cx">     if (is&lt;SVGDocument&gt;(document))
</span><del>-        return downcast&lt;SVGDocument&gt;(document);
</del><ins>+        return document;
</ins><span class="cx">     // Spec: http://www.w3.org/TR/SVG/struct.html#InterfaceGetSVGDocument
</span><del>-    ec = NOT_SUPPORTED_ERR;
-    return nullptr;
</del><ins>+    return Exception { NOT_SUPPORTED_ERR };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLFrameOwnerElement::scheduleinvalidateStyleAndLayerComposition()
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFrameOwnerElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFrameOwnerElement.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFrameOwnerElement.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLFrameOwnerElement.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -49,7 +49,7 @@
</span><span class="cx">     // RenderElement when using fallback content.
</span><span class="cx">     RenderWidget* renderWidget() const;
</span><span class="cx"> 
</span><del>-    Document* getSVGDocument(ExceptionCode&amp;) const;
</del><ins>+    ExceptionOr&lt;Document*&gt; getSVGDocument() const;
</ins><span class="cx"> 
</span><span class="cx">     virtual ScrollbarMode scrollingMode() const { return ScrollbarAuto; }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLIFrameElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLIFrameElement.idl (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLIFrameElement.idl        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLIFrameElement.idl        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -35,12 +35,9 @@
</span><span class="cx">     [Reflect] attribute DOMString srcdoc;
</span><span class="cx">     [Reflect] attribute DOMString width;
</span><span class="cx"> 
</span><del>-    // Introduced in DOM Level 2:
</del><span class="cx">     [CheckSecurityForNode] readonly attribute Document contentDocument;
</span><span class="cx"> 
</span><del>-    // Extensions
</del><span class="cx">     readonly attribute DOMWindow contentWindow;
</span><span class="cx"> 
</span><del>-    [CheckSecurityForNode, MayThrowLegacyException] Document getSVGDocument();
</del><ins>+    [CheckSecurityForNode, MayThrowException] Document getSVGDocument();
</ins><span class="cx"> };
</span><del>-
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLInputElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLInputElement.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLInputElement.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLInputElement.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -375,14 +375,14 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-void HTMLInputElement::stepUp(int n, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; HTMLInputElement::stepUp(int n)
</ins><span class="cx"> {
</span><del>-    m_inputType-&gt;stepUp(n, ec);
</del><ins>+    return m_inputType-&gt;stepUp(n);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLInputElement::stepDown(int n, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; HTMLInputElement::stepDown(int n)
</ins><span class="cx"> {
</span><del>-    m_inputType-&gt;stepUp(-n, ec);
</del><ins>+    return m_inputType-&gt;stepUp(-n);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLInputElement::blur()
</span><span class="lines">@@ -1018,19 +1018,13 @@
</span><span class="cx">     dispatchInputEvent();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLInputElement::setValue(const String&amp; value, ExceptionCode&amp; ec, TextFieldEventBehavior eventBehavior)
</del><ins>+ExceptionOr&lt;void&gt; HTMLInputElement::setValue(const String&amp; value, TextFieldEventBehavior eventBehavior)
</ins><span class="cx"> {
</span><del>-    if (isFileUpload() &amp;&amp; !value.isEmpty()) {
-        ec = INVALID_STATE_ERR;
-        return;
-    }
-    setValue(value.isNull() ? emptyString() : value, eventBehavior);
-}
</del><ins>+    if (isFileUpload() &amp;&amp; !value.isEmpty())
+        return Exception { INVALID_STATE_ERR };
</ins><span class="cx"> 
</span><del>-void HTMLInputElement::setValue(const String&amp; value, TextFieldEventBehavior eventBehavior)
-{
</del><span class="cx">     if (!m_inputType-&gt;canSetValue(value))
</span><del>-        return;
</del><ins>+        return { };
</ins><span class="cx"> 
</span><span class="cx">     Ref&lt;HTMLInputElement&gt; protectedThis(*this);
</span><span class="cx">     EventQueueScope scope;
</span><span class="lines">@@ -1040,6 +1034,7 @@
</span><span class="cx">     setLastChangeWasNotUserEdit();
</span><span class="cx">     setFormControlValueMatchesRenderer(false);
</span><span class="cx">     m_inputType-&gt;setValue(sanitizedValue, valueChanged, eventBehavior);
</span><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLInputElement::setValueInternal(const String&amp; sanitizedValue, TextFieldEventBehavior eventBehavior)
</span><span class="lines">@@ -1054,9 +1049,9 @@
</span><span class="cx">     return m_inputType-&gt;valueAsDate();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLInputElement::setValueAsDate(double value, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; HTMLInputElement::setValueAsDate(double value)
</ins><span class="cx"> {
</span><del>-    m_inputType-&gt;setValueAsDate(value, ec);
</del><ins>+    return m_inputType-&gt;setValueAsDate(value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> double HTMLInputElement::valueAsNumber() const
</span><span class="lines">@@ -1064,13 +1059,11 @@
</span><span class="cx">     return m_inputType-&gt;valueAsDouble();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLInputElement::setValueAsNumber(double newValue, ExceptionCode&amp; ec, TextFieldEventBehavior eventBehavior)
</del><ins>+ExceptionOr&lt;void&gt; HTMLInputElement::setValueAsNumber(double newValue, TextFieldEventBehavior eventBehavior)
</ins><span class="cx"> {
</span><del>-    if (!std::isfinite(newValue)) {
-        ec = NOT_SUPPORTED_ERR;
-        return;
-    }
-    m_inputType-&gt;setValueAsDouble(newValue, eventBehavior, ec);
</del><ins>+    if (!std::isfinite(newValue))
+        return Exception { NOT_SUPPORTED_ERR };
+    return m_inputType-&gt;setValueAsDouble(newValue, eventBehavior);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLInputElement::setValueFromRenderer(const String&amp; value)
</span><span class="lines">@@ -1306,19 +1299,14 @@
</span><span class="cx">     return hasAttributeWithoutSynchronization(multipleAttr);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLInputElement::setSize(unsigned size)
</del><ins>+ExceptionOr&lt;void&gt; HTMLInputElement::setSize(unsigned size)
</ins><span class="cx"> {
</span><ins>+    if (!size)
+        return Exception { INDEX_SIZE_ERR };
</ins><span class="cx">     setUnsignedIntegralAttribute(sizeAttr, limitToOnlyHTMLNonNegativeNumbersGreaterThanZero(size, defaultSize));
</span><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLInputElement::setSize(unsigned size, ExceptionCode&amp; ec)
-{
-    if (!size)
-        ec = INDEX_SIZE_ERR;
-    else
-        setSize(size);
-}
-
</del><span class="cx"> URL HTMLInputElement::src() const
</span><span class="cx"> {
</span><span class="cx">     return document().completeURL(attributeWithoutSynchronization(srcAttr));
</span><span class="lines">@@ -1777,11 +1765,7 @@
</span><span class="cx"> void HTMLInputElement::maxLengthAttributeChanged(const AtomicString&amp; newValue)
</span><span class="cx"> {
</span><span class="cx">     unsigned oldEffectiveMaxLength = effectiveMaxLength();
</span><del>-    if (Optional&lt;unsigned&gt; maxLength = parseHTMLNonNegativeInteger(newValue))
-        setMaxLength(maxLength.value());
-    else
-        setMaxLength(-1);
-
</del><ins>+    internalSetMaxLength(parseHTMLNonNegativeInteger(newValue).valueOr(-1));
</ins><span class="cx">     if (oldEffectiveMaxLength != effectiveMaxLength())
</span><span class="cx">         updateValueIfNeeded();
</span><span class="cx"> 
</span><span class="lines">@@ -1793,11 +1777,7 @@
</span><span class="cx"> void HTMLInputElement::minLengthAttributeChanged(const AtomicString&amp; newValue)
</span><span class="cx"> {
</span><span class="cx">     int oldMinLength = minLength();
</span><del>-    if (Optional&lt;unsigned&gt; minLength = parseHTMLNonNegativeInteger(newValue))
-        setMinLength(minLength.value());
-    else
-        setMinLength(-1);
-
</del><ins>+    internalSetMinLength(parseHTMLNonNegativeInteger(newValue).valueOr(-1));
</ins><span class="cx">     if (oldMinLength != minLength())
</span><span class="cx">         updateValueIfNeeded();
</span><span class="cx"> 
</span><span class="lines">@@ -1932,24 +1912,20 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-void HTMLInputElement::setRangeText(const String&amp; replacement, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; HTMLInputElement::setRangeText(const String&amp; replacement)
</ins><span class="cx"> {
</span><del>-    if (!m_inputType-&gt;supportsSelectionAPI()) {
-        ec = INVALID_STATE_ERR;
-        return;
-    }
</del><ins>+    if (!m_inputType-&gt;supportsSelectionAPI())
+        return Exception { INVALID_STATE_ERR };
</ins><span class="cx"> 
</span><del>-    HTMLTextFormControlElement::setRangeText(replacement, ec);
</del><ins>+    return HTMLTextFormControlElement::setRangeText(replacement);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLInputElement::setRangeText(const String&amp; replacement, unsigned start, unsigned end, const String&amp; selectionMode, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; HTMLInputElement::setRangeText(const String&amp; replacement, unsigned start, unsigned end, const String&amp; selectionMode)
</ins><span class="cx"> {
</span><del>-    if (!m_inputType-&gt;supportsSelectionAPI()) {
-        ec = INVALID_STATE_ERR;
-        return;
-    }
</del><ins>+    if (!m_inputType-&gt;supportsSelectionAPI())
+        return Exception { INVALID_STATE_ERR };
</ins><span class="cx"> 
</span><del>-    HTMLTextFormControlElement::setRangeText(replacement, start, end, selectionMode, ec);
</del><ins>+    return HTMLTextFormControlElement::setRangeText(replacement, start, end, selectionMode);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HTMLInputElement::shouldTruncateText(const RenderStyle&amp; style) const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLInputElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLInputElement.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLInputElement.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLInputElement.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -22,8 +22,7 @@
</span><span class="cx">  *
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef HTMLInputElement_h
-#define HTMLInputElement_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #include &quot;FileChooser.h&quot;
</span><span class="cx"> #include &quot;HTMLTextFormControlElement.h&quot;
</span><span class="lines">@@ -50,14 +49,9 @@
</span><span class="cx"> struct DateTimeChooserParameters;
</span><span class="cx"> 
</span><span class="cx"> struct InputElementClickState {
</span><del>-    InputElementClickState()
-        : stateful(false)
-        , checked(false)
-        , indeterminate(false)
-    { }
-    bool stateful;
-    bool checked;
-    bool indeterminate;
</del><ins>+    bool stateful { false };
+    bool checked { false };
+    bool indeterminate { false };
</ins><span class="cx">     RefPtr&lt;HTMLInputElement&gt; checkedRadioButton;
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="lines">@@ -94,11 +88,9 @@
</span><span class="cx">     Optional&lt;Decimal&gt; findClosestTickMarkValue(const Decimal&amp;);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    // Implementations of HTMLInputElement::stepUp() and stepDown().
-    WEBCORE_EXPORT void stepUp(int, ExceptionCode&amp;);
-    WEBCORE_EXPORT void stepDown(int, ExceptionCode&amp;);
-    void stepUp(ExceptionCode&amp; ec) { stepUp(1, ec); }
-    void stepDown(ExceptionCode&amp; ec) { stepDown(1, ec); }
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; stepUp(int = 1);
+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; stepDown(int = 1);
+
</ins><span class="cx">     // stepUp()/stepDown() for user-interaction.
</span><span class="cx">     bool isSteppable() const;
</span><span class="cx"> 
</span><span class="lines">@@ -173,8 +165,7 @@
</span><span class="cx">     WEBCORE_EXPORT void setType(const AtomicString&amp;);
</span><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT String value() const final;
</span><del>-    void setValue(const String&amp;, ExceptionCode&amp;, TextFieldEventBehavior = DispatchNoEvent);
-    WEBCORE_EXPORT void setValue(const String&amp;, TextFieldEventBehavior = DispatchNoEvent);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; setValue(const String&amp;, TextFieldEventBehavior = DispatchNoEvent);
</ins><span class="cx">     WEBCORE_EXPORT void setValueForUser(const String&amp;);
</span><span class="cx">     // Checks if the specified string would be a valid value.
</span><span class="cx">     // We should not call this for types with no string value such as CHECKBOX and RADIO.
</span><span class="lines">@@ -191,10 +182,10 @@
</span><span class="cx">     WEBCORE_EXPORT void setEditingValue(const String&amp;);
</span><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT double valueAsDate() const;
</span><del>-    WEBCORE_EXPORT void setValueAsDate(double, ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; setValueAsDate(double);
</ins><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT double valueAsNumber() const;
</span><del>-    WEBCORE_EXPORT void setValueAsNumber(double, ExceptionCode&amp;, TextFieldEventBehavior = DispatchNoEvent);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; setValueAsNumber(double, TextFieldEventBehavior = DispatchNoEvent);
</ins><span class="cx"> 
</span><span class="cx">     String valueWithDefault() const;
</span><span class="cx"> 
</span><span class="lines">@@ -232,8 +223,7 @@
</span><span class="cx">     String accept() const;
</span><span class="cx">     WEBCORE_EXPORT String alt() const;
</span><span class="cx"> 
</span><del>-    WEBCORE_EXPORT void setSize(unsigned);
-    void setSize(unsigned, ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; setSize(unsigned);
</ins><span class="cx"> 
</span><span class="cx">     URL src() const;
</span><span class="cx"> 
</span><span class="lines">@@ -318,8 +308,8 @@
</span><span class="cx">     static Vector&lt;FileChooserFileInfo&gt; filesFromFileInputFormControlState(const FormControlState&amp;);
</span><span class="cx"> 
</span><span class="cx">     bool matchesReadWritePseudoClass() const final;
</span><del>-    WEBCORE_EXPORT void setRangeText(const String&amp; replacement, ExceptionCode&amp;) final;
-    WEBCORE_EXPORT void setRangeText(const String&amp; replacement, unsigned start, unsigned end, const String&amp; selectionMode, ExceptionCode&amp;) final;
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; setRangeText(const String&amp; replacement) final;
+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; setRangeText(const String&amp; replacement, unsigned start, unsigned end, const String&amp; selectionMode) final;
</ins><span class="cx"> 
</span><span class="cx">     HTMLImageLoader* imageLoader() { return m_imageLoader.get(); }
</span><span class="cx">     HTMLImageLoader&amp; ensureImageLoader();
</span><span class="lines">@@ -469,5 +459,4 @@
</span><span class="cx"> #endif
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-} //namespace
-#endif
</del><ins>+}
</ins></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLInputElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLInputElement.idl (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLInputElement.idl        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLInputElement.idl        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -44,8 +44,8 @@
</span><span class="cx">     attribute boolean indeterminate;
</span><span class="cx">     [Conditional=DATALIST_ELEMENT] readonly attribute HTMLElement list;
</span><span class="cx">     [Reflect] attribute DOMString max;
</span><del>-    [SetterMayThrowLegacyException] attribute long minLength;
-    [SetterMayThrowLegacyException] attribute long maxLength;
</del><ins>+    [SetterMayThrowException] attribute long minLength;
+    [SetterMayThrowException] attribute long maxLength;
</ins><span class="cx">     [Reflect] attribute DOMString min;
</span><span class="cx">     [Reflect] attribute boolean multiple;
</span><span class="cx">     [Reflect] attribute DOMString name;
</span><span class="lines">@@ -53,18 +53,18 @@
</span><span class="cx">     [Reflect] attribute DOMString placeholder;
</span><span class="cx">     [Reflect] attribute boolean readOnly;
</span><span class="cx">     [Reflect] attribute boolean required;
</span><del>-    [SetterMayThrowLegacyException] attribute unsigned long size; // Changed string -&gt; long -&gt; unsigned long
</del><ins>+    [SetterMayThrowException] attribute unsigned long size;
</ins><span class="cx">     [Reflect, URL] attribute USVString src;
</span><span class="cx">     [Reflect] attribute DOMString step;
</span><span class="cx">     attribute DOMString type; // readonly dropped as part of DOM level 2
</span><span class="cx">     attribute DOMString defaultValue;
</span><span class="cx">     // See the discussion in https://bugs.webkit.org/show_bug.cgi?id=100085
</span><del>-    [TreatNullAs=EmptyString, SetterMayThrowLegacyException] attribute DOMString value;
-    [SetterMayThrowLegacyException] attribute Date? valueAsDate;
-    [SetterMayThrowLegacyException] attribute unrestricted double valueAsNumber;
</del><ins>+    [TreatNullAs=EmptyString, SetterMayThrowException] attribute DOMString value;
+    [SetterMayThrowException] attribute Date? valueAsDate;
+    [SetterMayThrowException] attribute unrestricted double valueAsNumber;
</ins><span class="cx"> 
</span><del>-    [MayThrowLegacyException] void stepUp(optional long n = 1);
-    [MayThrowLegacyException] void stepDown(optional long n = 1);
</del><ins>+    [MayThrowException] void stepUp(optional long n = 1);
+    [MayThrowException] void stepDown(optional long n = 1);
</ins><span class="cx"> 
</span><span class="cx">     attribute unsigned long width;
</span><span class="cx">     readonly attribute boolean willValidate;
</span><span class="lines">@@ -81,12 +81,11 @@
</span><span class="cx">     [Custom] attribute long selectionEnd;
</span><span class="cx">     [Custom] attribute DOMString selectionDirection;
</span><span class="cx"> 
</span><del>-    [MayThrowLegacyException] void setRangeText(DOMString replacement);
-    [MayThrowLegacyException] void setRangeText(DOMString replacement, unsigned long start, unsigned long end, optional DOMString selectionMode);
</del><ins>+    [MayThrowException] void setRangeText(DOMString replacement);
+    [MayThrowException] void setRangeText(DOMString replacement, unsigned long start, unsigned long end, optional DOMString selectionMode);
</ins><span class="cx"> 
</span><span class="cx">     [Custom] void setSelectionRange(long start, long end, optional DOMString direction);
</span><span class="cx"> 
</span><del>-    // Non-standard attributes
</del><span class="cx">     [Reflect] attribute DOMString align;
</span><span class="cx">     [Reflect] attribute DOMString useMap;
</span><span class="cx">     [Reflect] attribute boolean incremental;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMarqueeElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMarqueeElement.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMarqueeElement.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLMarqueeElement.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -45,7 +45,7 @@
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;HTMLMarqueeElement&gt; HTMLMarqueeElement::create(const QualifiedName&amp; tagName, Document&amp; document)
</span><span class="cx"> {
</span><del>-    Ref&lt;HTMLMarqueeElement&gt; marqueeElement = adoptRef(*new HTMLMarqueeElement(tagName, document));
</del><ins>+    auto marqueeElement = adoptRef(*new HTMLMarqueeElement(tagName, document));
</ins><span class="cx">     marqueeElement-&gt;suspendIfNeeded();
</span><span class="cx">     return marqueeElement;
</span><span class="cx"> }
</span><span class="lines">@@ -112,14 +112,14 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLMarqueeElement::start()
</span><span class="cx"> {
</span><del>-    if (RenderMarquee* marqueeRenderer = renderMarquee())
-        marqueeRenderer-&gt;start();
</del><ins>+    if (auto* renderer = renderMarquee())
+        renderer-&gt;start();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLMarqueeElement::stop()
</span><span class="cx"> {
</span><del>-    if (RenderMarquee* marqueeRenderer = renderMarquee())
-        marqueeRenderer-&gt;stop();
</del><ins>+    if (auto* renderer = renderMarquee())
+        renderer-&gt;stop();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> unsigned HTMLMarqueeElement::scrollAmount() const
</span><span class="lines">@@ -149,12 +149,12 @@
</span><span class="cx">     return ok &amp;&amp; loopValue &gt; 0 ? loopValue : -1;
</span><span class="cx"> }
</span><span class="cx">     
</span><del>-void HTMLMarqueeElement::setLoop(int loop, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; HTMLMarqueeElement::setLoop(int loop)
</ins><span class="cx"> {
</span><span class="cx">     if (loop &lt;= 0 &amp;&amp; loop != -1)
</span><del>-        ec = INDEX_SIZE_ERR;
-    else
-        setIntegralAttribute(loopAttr, loop);
</del><ins>+        return Exception { INDEX_SIZE_ERR };
+    setIntegralAttribute(loopAttr, loop);
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HTMLMarqueeElement::canSuspendForDocumentSuspension() const
</span><span class="lines">@@ -176,9 +176,9 @@
</span><span class="cx"> 
</span><span class="cx"> RenderMarquee* HTMLMarqueeElement::renderMarquee() const
</span><span class="cx"> {
</span><del>-    if (renderer() &amp;&amp; renderer()-&gt;hasLayer())
-        return renderBoxModelObject()-&gt;layer()-&gt;marquee();
-    return 0;
</del><ins>+    if (!renderer() || !renderer()-&gt;hasLayer())
+        return nullptr;
+    return renderBoxModelObject()-&gt;layer()-&gt;marquee();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMarqueeElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMarqueeElement.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMarqueeElement.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLMarqueeElement.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -20,8 +20,7 @@
</span><span class="cx">  *
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef HTMLMarqueeElement_h
-#define HTMLMarqueeElement_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #include &quot;ActiveDOMObject.h&quot;
</span><span class="cx"> #include &quot;HTMLElement.h&quot;
</span><span class="lines">@@ -36,8 +35,6 @@
</span><span class="cx"> 
</span><span class="cx">     int minimumDelay() const;
</span><span class="cx"> 
</span><del>-    // DOM Functions
-
</del><span class="cx">     WEBCORE_EXPORT void start();
</span><span class="cx">     WEBCORE_EXPORT void stop() final;
</span><span class="cx">     
</span><span class="lines">@@ -51,7 +48,7 @@
</span><span class="cx">     
</span><span class="cx">     // Loop count. -1 means loop indefinitely.
</span><span class="cx">     WEBCORE_EXPORT int loop() const;
</span><del>-    WEBCORE_EXPORT void setLoop(int, ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; setLoop(int);
</ins><span class="cx">     
</span><span class="cx"> private:
</span><span class="cx">     HTMLMarqueeElement(const QualifiedName&amp;, Document&amp;);
</span><span class="lines">@@ -59,7 +56,6 @@
</span><span class="cx">     bool isPresentationAttribute(const QualifiedName&amp;) const final;
</span><span class="cx">     void collectStyleForPresentationAttribute(const QualifiedName&amp;, const AtomicString&amp;, MutableStyleProperties&amp;) final;
</span><span class="cx"> 
</span><del>-    // ActiveDOMObject
</del><span class="cx">     bool canSuspendForDocumentSuspension() const final;
</span><span class="cx">     void suspend(ReasonForSuspension) final;
</span><span class="cx">     void resume() final;
</span><span class="lines">@@ -69,5 +65,3 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><del>-
-#endif // HTMLMarqueeElement_h
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMarqueeElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMarqueeElement.idl (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMarqueeElement.idl        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLMarqueeElement.idl        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -26,7 +26,7 @@
</span><span class="cx">     [Reflect] attribute DOMString direction;
</span><span class="cx">     [Reflect] attribute DOMString height;
</span><span class="cx">     [Reflect] attribute unsigned long hspace;
</span><del>-    [SetterMayThrowLegacyException] attribute long loop;
</del><ins>+    [SetterMayThrowException] attribute long loop;
</ins><span class="cx">     attribute unsigned long scrollAmount;
</span><span class="cx">     attribute unsigned long scrollDelay;
</span><span class="cx">     [Reflect] attribute boolean trueSpeed;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -286,10 +286,7 @@
</span><span class="cx">     enum GroupKind { CaptionsAndSubtitles, Description, Chapter, Metadata, Other };
</span><span class="cx"> 
</span><span class="cx">     TrackGroup(GroupKind kind)
</span><del>-        : visibleTrack(0)
-        , defaultTrack(0)
-        , kind(kind)
-        , hasSrcLang(false)
</del><ins>+        : kind(kind)
</ins><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -297,7 +294,7 @@
</span><span class="cx">     RefPtr&lt;TextTrack&gt; visibleTrack;
</span><span class="cx">     RefPtr&lt;TextTrack&gt; defaultTrack;
</span><span class="cx">     GroupKind kind;
</span><del>-    bool hasSrcLang;
</del><ins>+    bool hasSrcLang { false };
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> HashSet&lt;HTMLMediaElement*&gt;&amp; HTMLMediaElement::allMediaElements()
</span><span class="lines">@@ -397,37 +394,8 @@
</span><span class="cx">     , m_scanTimer(*this, &amp;HTMLMediaElement::scanTimerFired)
</span><span class="cx">     , m_playbackControlsManagerBehaviorRestrictionsTimer(*this, &amp;HTMLMediaElement::playbackControlsManagerBehaviorRestrictionsTimerFired)
</span><span class="cx">     , m_seekToPlaybackPositionEndedTimer(*this, &amp;HTMLMediaElement::seekToPlaybackPositionEndedTimerFired)
</span><del>-    , m_playedTimeRanges()
</del><span class="cx">     , m_asyncEventQueue(*this)
</span><del>-    , m_requestedPlaybackRate(1)
-    , m_reportedPlaybackRate(1)
-    , m_defaultPlaybackRate(1)
-    , m_webkitPreservesPitch(true)
-    , m_networkState(NETWORK_EMPTY)
-    , m_readyState(HAVE_NOTHING)
-    , m_readyStateMaximum(HAVE_NOTHING)
-    , m_volume(1.0f)
-    , m_volumeInitialized(false)
-    , m_previousProgressTime(std::numeric_limits&lt;double&gt;::max())
-    , m_clockTimeAtLastUpdateEvent(0)
</del><span class="cx">     , m_lastTimeUpdateEventMovieTime(MediaTime::positiveInfiniteTime())
</span><del>-    , m_loadState(WaitingForSource)
-    , m_videoFullscreenMode(VideoFullscreenModeNone)
-#if PLATFORM(IOS) || (PLATFORM(MAC) &amp;&amp; ENABLE(VIDEO_PRESENTATION_MODE))
-    , m_videoFullscreenGravity(MediaPlayer::VideoGravityResizeAspect)
-#endif
-    , m_preload(MediaPlayer::Auto)
-    , m_displayMode(Unknown)
-    , m_processingMediaPlayerCallback(0)
-#if ENABLE(MEDIA_SOURCE)
-    , m_droppedVideoFrames(0)
-#endif
-    , m_clockTimeAtLastCachedTimeUpdate(0)
-    , m_minimumClockTimeToUpdateCachedTime(0)
-    , m_pendingActionFlags(0)
-    , m_actionAfterScan(Nothing)
-    , m_scanType(Scan)
-    , m_scanDirection(Forward)
</del><span class="cx">     , m_firstTimePlaying(true)
</span><span class="cx">     , m_playing(false)
</span><span class="cx">     , m_isWaitingUntilMediaCanStart(false)
</span><span class="lines">@@ -464,21 +432,8 @@
</span><span class="cx">     , m_tracksAreReady(true)
</span><span class="cx">     , m_haveVisibleTextTrack(false)
</span><span class="cx">     , m_processingPreferenceChange(false)
</span><del>-    , m_lastTextTrackUpdateTime(MediaTime(-1, 1))
-    , m_captionDisplayMode(CaptionUserPreferences::Automatic)
-    , m_audioTracks(0)
-    , m_textTracks(0)
-    , m_videoTracks(0)
-    , m_ignoreTrackDisplayUpdate(0)
</del><span class="cx"> #endif
</span><del>-#if ENABLE(WEB_AUDIO)
-    , m_audioSourceNode(0)
-#endif
</del><span class="cx">     , m_mediaSession(std::make_unique&lt;MediaElementSession&gt;(*this))
</span><del>-    , m_reportedExtraMemoryCost(0)
-#if ENABLE(MEDIA_STREAM)
-    , m_mediaStreamSrcObject(nullptr)
-#endif
</del><span class="cx"> {
</span><span class="cx">     allMediaElements().add(this);
</span><span class="cx"> 
</span><span class="lines">@@ -575,7 +530,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     if (m_mediaController) {
</span><del>-        m_mediaController-&gt;removeMediaElement(this);
</del><ins>+        m_mediaController-&gt;removeMediaElement(*this);
</ins><span class="cx">         m_mediaController = nullptr;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -584,7 +539,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(LEGACY_ENCRYPTED_MEDIA)
</span><del>-    webkitSetMediaKeys(0);
</del><ins>+    webkitSetMediaKeys(nullptr);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(MEDIA_CONTROLS_SCRIPT)
</span><span class="lines">@@ -1460,7 +1415,7 @@
</span><span class="cx">     // If the url should be loaded from the application cache, pass the url of the cached file
</span><span class="cx">     // to the media engine.
</span><span class="cx">     ApplicationCacheHost* cacheHost = frame-&gt;loader().documentLoader()-&gt;applicationCacheHost();
</span><del>-    ApplicationCacheResource* resource = 0;
</del><ins>+    ApplicationCacheResource* resource = nullptr;
</ins><span class="cx">     if (cacheHost &amp;&amp; cacheHost-&gt;shouldLoadResourceFromApplicationCache(ResourceRequest(url), resource)) {
</span><span class="cx">         // Resources that are not present in the manifest will always fail to load (at least, after the
</span><span class="cx">         // cache has been primed the first time), making the testing of offline applications simpler.
</span><span class="lines">@@ -1550,8 +1505,8 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(VIDEO_TRACK)
</span><del>-static bool trackIndexCompare(TextTrack* a,
-                              TextTrack* b)
</del><ins>+
+static bool trackIndexCompare(TextTrack* a, TextTrack* b)
</ins><span class="cx"> {
</span><span class="cx">     return a-&gt;trackIndex() - b-&gt;trackIndex() &lt; 0;
</span><span class="cx"> }
</span><span class="lines">@@ -1578,9 +1533,8 @@
</span><span class="cx"> static bool compareCueInterval(const CueInterval&amp; one, const CueInterval&amp; two)
</span><span class="cx"> {
</span><span class="cx">     return one.data()-&gt;isOrderedBefore(two.data());
</span><del>-};
</del><ins>+}
</ins><span class="cx"> 
</span><del>-
</del><span class="cx"> void HTMLMediaElement::updateActiveTextTrackCues(const MediaTime&amp; movieTime)
</span><span class="cx"> {
</span><span class="cx">     // 4.8.10.8 Playing the media resource
</span><span class="lines">@@ -1628,16 +1582,10 @@
</span><span class="cx">     // end times are less than or equal to the current playback position.
</span><span class="cx">     // Otherwise, let missed cues be an empty list.
</span><span class="cx">     if (lastTime &gt;= MediaTime::zeroTime() &amp;&amp; m_lastSeekTime &lt; movieTime) {
</span><del>-        CueList potentiallySkippedCues =
-            m_cueTree.allOverlaps(m_cueTree.createInterval(lastTime, movieTime));
-
-        for (size_t i = 0; i &lt; potentiallySkippedCues.size(); ++i) {
-            MediaTime cueStartTime = potentiallySkippedCues[i].low();
-            MediaTime cueEndTime = potentiallySkippedCues[i].high();
-
</del><ins>+        for (auto&amp; cue : m_cueTree.allOverlaps(m_cueTree.createInterval(lastTime, movieTime))) {
</ins><span class="cx">             // Consider cues that may have been missed since the last seek time.
</span><del>-            if (cueStartTime &gt; std::max(m_lastSeekTime, lastTime) &amp;&amp; cueEndTime &lt; movieTime)
-                missedCues.append(potentiallySkippedCues[i]);
</del><ins>+            if (cue.low() &gt; std::max(m_lastSeekTime, lastTime) &amp;&amp; cue.high() &lt; movieTime)
+                missedCues.append(cue);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -1709,8 +1657,7 @@
</span><span class="cx">     for (size_t i = 0; i &lt; missedCuesSize; ++i) {
</span><span class="cx">         // 9 - For each text track cue in missed cues, prepare an event named enter
</span><span class="cx">         // for the TextTrackCue object with the text track cue start time.
</span><del>-        eventTasks.append(std::make_pair(missedCues[i].data()-&gt;startMediaTime(),
-                                         missedCues[i].data()));
</del><ins>+        eventTasks.append({ missedCues[i].data()-&gt;startMediaTime(), missedCues[i].data() });
</ins><span class="cx"> 
</span><span class="cx">         // 10 - For each text track [...] in missed cues, prepare an event
</span><span class="cx">         // named exit for the TextTrackCue object with the  with the later of
</span><span class="lines">@@ -1722,7 +1669,7 @@
</span><span class="cx">         // affect sorting events before dispatch either, because the exit
</span><span class="cx">         // event has the same time as the enter event.
</span><span class="cx">         if (missedCues[i].data()-&gt;startMediaTime() &lt; missedCues[i].data()-&gt;endMediaTime())
</span><del>-            eventTasks.append(std::make_pair(missedCues[i].data()-&gt;endMediaTime(), missedCues[i].data()));
</del><ins>+            eventTasks.append({ missedCues[i].data()-&gt;endMediaTime(), missedCues[i].data() });
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     for (size_t i = 0; i &lt; previousCuesSize; ++i) {
</span><span class="lines">@@ -1730,8 +1677,7 @@
</span><span class="cx">         // track cue active flag set prepare an event named exit for the
</span><span class="cx">         // TextTrackCue object with the text track cue end time.
</span><span class="cx">         if (!currentCues.contains(previousCues[i]))
</span><del>-            eventTasks.append(std::make_pair(previousCues[i].data()-&gt;endMediaTime(),
-                                             previousCues[i].data()));
</del><ins>+            eventTasks.append({ previousCues[i].data()-&gt;endMediaTime(), previousCues[i].data() });
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     for (size_t i = 0; i &lt; currentCuesSize; ++i) {
</span><span class="lines">@@ -1739,8 +1685,7 @@
</span><span class="cx">         // text track cue active flag set, prepare an event named enter for the
</span><span class="cx">         // TextTrackCue object with the text track cue start time.
</span><span class="cx">         if (!previousCues.contains(currentCues[i]))
</span><del>-            eventTasks.append(std::make_pair(currentCues[i].data()-&gt;startMediaTime(),
-                                             currentCues[i].data()));
</del><ins>+            eventTasks.append({ currentCues[i].data()-&gt;startMediaTime(), currentCues[i].data() });
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // 12 - Sort the tasks in events in ascending time order (tasks with earlier
</span><span class="lines">@@ -1747,32 +1692,31 @@
</span><span class="cx">     // times first).
</span><span class="cx">     std::sort(eventTasks.begin(), eventTasks.end(), eventTimeCueCompare);
</span><span class="cx"> 
</span><del>-    for (size_t i = 0; i &lt; eventTasks.size(); ++i) {
-        if (!affectedTracks.contains(eventTasks[i].second-&gt;track()))
-            affectedTracks.append(eventTasks[i].second-&gt;track());
</del><ins>+    for (auto&amp; eventTask : eventTasks) {
+        if (!affectedTracks.contains(eventTask.second-&gt;track()))
+            affectedTracks.append(eventTask.second-&gt;track());
</ins><span class="cx"> 
</span><span class="cx">         // 13 - Queue each task in events, in list order.
</span><del>-        RefPtr&lt;Event&gt; event;
</del><span class="cx"> 
</span><span class="cx">         // Each event in eventTasks may be either an enterEvent or an exitEvent,
</span><span class="cx">         // depending on the time that is associated with the event. This
</span><span class="cx">         // correctly identifies the type of the event, if the startTime is
</span><span class="cx">         // less than the endTime in the cue.
</span><del>-        if (eventTasks[i].second-&gt;startTime() &gt;= eventTasks[i].second-&gt;endTime()) {
-            event = Event::create(eventNames().enterEvent, false, false);
-            event-&gt;setTarget(eventTasks[i].second);
-            m_asyncEventQueue.enqueueEvent(WTFMove(event));
</del><ins>+        if (eventTask.second-&gt;startTime() &gt;= eventTask.second-&gt;endTime()) {
+            auto enterEvent = Event::create(eventNames().enterEvent, false, false);
+            enterEvent-&gt;setTarget(eventTask.second);
+            m_asyncEventQueue.enqueueEvent(WTFMove(enterEvent));
</ins><span class="cx"> 
</span><del>-            event = Event::create(eventNames().exitEvent, false, false);
-            event-&gt;setTarget(eventTasks[i].second);
-            m_asyncEventQueue.enqueueEvent(WTFMove(event));
</del><ins>+            auto exitEvent = Event::create(eventNames().exitEvent, false, false);
+            exitEvent-&gt;setTarget(eventTask.second);
+            m_asyncEventQueue.enqueueEvent(WTFMove(exitEvent));
</ins><span class="cx">         } else {
</span><del>-            if (eventTasks[i].first == eventTasks[i].second-&gt;startMediaTime())
</del><ins>+            RefPtr&lt;Event&gt; event;
+            if (eventTask.first == eventTask.second-&gt;startMediaTime())
</ins><span class="cx">                 event = Event::create(eventNames().enterEvent, false, false);
</span><span class="cx">             else
</span><span class="cx">                 event = Event::create(eventNames().exitEvent, false, false);
</span><del>-
-            event-&gt;setTarget(eventTasks[i].second);
</del><ins>+            event-&gt;setTarget(eventTask.second);
</ins><span class="cx">             m_asyncEventQueue.enqueueEvent(WTFMove(event));
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="lines">@@ -1783,20 +1727,18 @@
</span><span class="cx"> 
</span><span class="cx">     // 15 - For each text track in affected tracks, in the list order, queue a
</span><span class="cx">     // task to fire a simple event named cuechange at the TextTrack object, and, ...
</span><del>-    for (size_t i = 0; i &lt; affectedTracks.size(); ++i) {
-        RefPtr&lt;Event&gt; event = Event::create(eventNames().cuechangeEvent, false, false);
-        event-&gt;setTarget(affectedTracks[i]);
-
</del><ins>+    for (auto&amp; affectedTrack : affectedTracks) {
+        auto event = Event::create(eventNames().cuechangeEvent, false, false);
+        event-&gt;setTarget(affectedTrack);
</ins><span class="cx">         m_asyncEventQueue.enqueueEvent(WTFMove(event));
</span><span class="cx"> 
</span><span class="cx">         // ... if the text track has a corresponding track element, to then fire a
</span><span class="cx">         // simple event named cuechange at the track element as well.
</span><del>-        if (is&lt;LoadableTextTrack&gt;(*affectedTracks[i])) {
-            RefPtr&lt;Event&gt; event = Event::create(eventNames().cuechangeEvent, false, false);
-            HTMLTrackElement* trackElement = downcast&lt;LoadableTextTrack&gt;(*affectedTracks[i]).trackElement();
</del><ins>+        if (is&lt;LoadableTextTrack&gt;(*affectedTrack)) {
+            auto event = Event::create(eventNames().cuechangeEvent, false, false);
+            auto* trackElement = downcast&lt;LoadableTextTrack&gt;(*affectedTrack).trackElement();
</ins><span class="cx">             ASSERT(trackElement);
</span><span class="cx">             event-&gt;setTarget(trackElement);
</span><del>-            
</del><span class="cx">             m_asyncEventQueue.enqueueEvent(WTFMove(event));
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="lines">@@ -1863,7 +1805,7 @@
</span><span class="cx">     if (track-&gt;trackType() == TextTrack::TrackElement) {
</span><span class="cx">         trackIsLoaded = false;
</span><span class="cx">         for (auto&amp; trackElement : childrenOfType&lt;HTMLTrackElement&gt;(*this)) {
</span><del>-            if (trackElement.track() == track) {
</del><ins>+            if (&amp;trackElement.track() == track) {
</ins><span class="cx">                 if (trackElement.readyState() == HTMLTrackElement::LOADING || trackElement.readyState() == HTMLTrackElement::LOADED)
</span><span class="cx">                     trackIsLoaded = true;
</span><span class="cx">                 break;
</span><span class="lines">@@ -2477,7 +2419,7 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (m_mediaKeys)
</span><del>-        m_mediaKeys-&gt;setMediaElement(0);
</del><ins>+        m_mediaKeys-&gt;setMediaElement(nullptr);
</ins><span class="cx">     m_mediaKeys = mediaKeys;
</span><span class="cx">     if (m_mediaKeys)
</span><span class="cx">         m_mediaKeys-&gt;setMediaElement(this);
</span><span class="lines">@@ -2488,6 +2430,7 @@
</span><span class="cx">     if (m_player)
</span><span class="cx">         m_player-&gt;keyAdded();
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> void HTMLMediaElement::progressEventTimerFired()
</span><span class="lines">@@ -2884,16 +2827,12 @@
</span><span class="cx">     seekInternal(time);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLMediaElement::setCurrentTime(double time, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; HTMLMediaElement::setCurrentTimeForBindings(double time)
</ins><span class="cx"> {
</span><del>-    // On setting, if the media element has a current media controller, then the user agent must
-    // throw an InvalidStateError exception
-    if (m_mediaController) {
-        ec = INVALID_STATE_ERR;
-        return;
-    }
-
</del><ins>+    if (m_mediaController)
+        return Exception { INVALID_STATE_ERR };
</ins><span class="cx">     seek(MediaTime::createWithDouble(time));
</span><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> double HTMLMediaElement::duration() const
</span><span class="lines">@@ -3136,7 +3075,7 @@
</span><span class="cx">         seekInternal(MediaTime::zeroTime());
</span><span class="cx"> 
</span><span class="cx">     if (m_mediaController)
</span><del>-        m_mediaController-&gt;bringElementUpToSpeed(this);
</del><ins>+        m_mediaController-&gt;bringElementUpToSpeed(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (m_paused) {
</span><span class="cx">         m_paused = false;
</span><span class="lines">@@ -3274,23 +3213,23 @@
</span><span class="cx">     return m_volume;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLMediaElement::setVolume(double vol, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; HTMLMediaElement::setVolume(double volume)
</ins><span class="cx"> {
</span><del>-    LOG(Media, &quot;HTMLMediaElement::setVolume(%p) - %f&quot;, this, vol);
</del><ins>+    LOG(Media, &quot;HTMLMediaElement::setVolume(%p) - %f&quot;, this, volume);
</ins><span class="cx"> 
</span><del>-    if (vol &lt; 0.0f || vol &gt; 1.0f) {
-        ec = INDEX_SIZE_ERR;
-        return;
-    }
-    
</del><ins>+    if (!(volume &gt;= 0 &amp;&amp; volume &lt;= 1))
+        return Exception { INDEX_SIZE_ERR };
+
</ins><span class="cx"> #if !PLATFORM(IOS)
</span><del>-    if (m_volume != vol) {
-        m_volume = vol;
-        m_volumeInitialized = true;
-        updateVolume();
-        scheduleEvent(eventNames().volumechangeEvent);
-    }
</del><ins>+    if (m_volume == volume)
+        return { };
+
+    m_volume = volume;
+    m_volumeInitialized = true;
+    updateVolume();
+    scheduleEvent(eventNames().volumechangeEvent);
</ins><span class="cx"> #endif
</span><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HTMLMediaElement::muted() const
</span><span class="lines">@@ -3523,19 +3462,19 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(VIDEO_TRACK)
</span><span class="cx"> 
</span><del>-void HTMLMediaElement::mediaPlayerDidAddAudioTrack(PassRefPtr&lt;AudioTrackPrivate&gt; prpTrack)
</del><ins>+void HTMLMediaElement::mediaPlayerDidAddAudioTrack(AudioTrackPrivate&amp; track)
</ins><span class="cx"> {
</span><span class="cx">     if (isPlaying() &amp;&amp; !m_mediaSession-&gt;playbackPermitted(*this))
</span><span class="cx">         pauseInternal();
</span><span class="cx"> 
</span><del>-    addAudioTrack(AudioTrack::create(this, prpTrack));
</del><ins>+    addAudioTrack(AudioTrack::create(this, &amp;track));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLMediaElement::mediaPlayerDidAddTextTrack(PassRefPtr&lt;InbandTextTrackPrivate&gt; prpTrack)
</del><ins>+void HTMLMediaElement::mediaPlayerDidAddTextTrack(InbandTextTrackPrivate&amp; track)
</ins><span class="cx"> {
</span><span class="cx">     // 4.8.10.12.2 Sourcing in-band text tracks
</span><span class="cx">     // 1. Associate the relevant data with a new text track and its corresponding new TextTrack object.
</span><del>-    RefPtr&lt;InbandTextTrack&gt; textTrack = InbandTextTrack::create(ActiveDOMObject::scriptExecutionContext(), this, prpTrack);
</del><ins>+    RefPtr&lt;InbandTextTrack&gt; textTrack = InbandTextTrack::create(ActiveDOMObject::scriptExecutionContext(), this, &amp;track);
</ins><span class="cx">     textTrack-&gt;setMediaElement(this);
</span><span class="cx">     
</span><span class="cx">     // 2. Set the new text track's kind, label, and language based on the semantics of the relevant data,
</span><span class="lines">@@ -3564,24 +3503,24 @@
</span><span class="cx">     addTextTrack(textTrack.releaseNonNull());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLMediaElement::mediaPlayerDidAddVideoTrack(PassRefPtr&lt;VideoTrackPrivate&gt; prpTrack)
</del><ins>+void HTMLMediaElement::mediaPlayerDidAddVideoTrack(VideoTrackPrivate&amp; track)
</ins><span class="cx"> {
</span><del>-    addVideoTrack(VideoTrack::create(this, prpTrack));
</del><ins>+    addVideoTrack(VideoTrack::create(this, &amp;track));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLMediaElement::mediaPlayerDidRemoveAudioTrack(PassRefPtr&lt;AudioTrackPrivate&gt; prpTrack)
</del><ins>+void HTMLMediaElement::mediaPlayerDidRemoveAudioTrack(AudioTrackPrivate&amp; track)
</ins><span class="cx"> {
</span><del>-    prpTrack-&gt;willBeRemoved();
</del><ins>+    track.willBeRemoved();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLMediaElement::mediaPlayerDidRemoveTextTrack(PassRefPtr&lt;InbandTextTrackPrivate&gt; prpTrack)
</del><ins>+void HTMLMediaElement::mediaPlayerDidRemoveTextTrack(InbandTextTrackPrivate&amp; track)
</ins><span class="cx"> {
</span><del>-    prpTrack-&gt;willBeRemoved();
</del><ins>+    track.willBeRemoved();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLMediaElement::mediaPlayerDidRemoveVideoTrack(PassRefPtr&lt;VideoTrackPrivate&gt; prpTrack)
</del><ins>+void HTMLMediaElement::mediaPlayerDidRemoveVideoTrack(VideoTrackPrivate&amp; track)
</ins><span class="cx"> {
</span><del>-    prpTrack-&gt;willBeRemoved();
</del><ins>+    track.willBeRemoved();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLMediaElement::closeCaptionTracksChanged()
</span><span class="lines">@@ -3655,16 +3594,14 @@
</span><span class="cx">         removeVideoTrack(*m_videoTracks-&gt;lastItem());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;TextTrack&gt; HTMLMediaElement::addTextTrack(const String&amp; kind, const String&amp; label, const String&amp; language, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Ref&lt;TextTrack&gt;&gt; HTMLMediaElement::addTextTrack(const String&amp; kind, const String&amp; label, const String&amp; language)
</ins><span class="cx"> {
</span><span class="cx">     // 4.8.10.12.4 Text track API
</span><span class="cx">     // The addTextTrack(kind, label, language) method of media elements, when invoked, must run the following steps:
</span><span class="cx"> 
</span><span class="cx">     // 1. If kind is not one of the following strings, then throw a SyntaxError exception and abort these steps
</span><del>-    if (!TextTrack::isValidKindKeyword(kind)) {
-        ec = TypeError;
-        return nullptr;
-    }
</del><ins>+    if (!TextTrack::isValidKindKeyword(kind))
+        return Exception { TypeError };
</ins><span class="cx"> 
</span><span class="cx">     // 2. If the label argument was omitted, let label be the empty string.
</span><span class="cx">     // 3. If the language argument was omitted, let language be the empty string.
</span><span class="lines">@@ -3713,20 +3650,16 @@
</span><span class="cx">     return *m_videoTracks;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLMediaElement::didAddTextTrack(HTMLTrackElement* trackElement)
</del><ins>+void HTMLMediaElement::didAddTextTrack(HTMLTrackElement&amp; trackElement)
</ins><span class="cx"> {
</span><del>-    ASSERT(trackElement-&gt;hasTagName(trackTag));
</del><ins>+    ASSERT(trackElement.hasTagName(trackTag));
</ins><span class="cx"> 
</span><span class="cx">     // 4.8.10.12.3 Sourcing out-of-band text tracks
</span><span class="cx">     // When a track element's parent element changes and the new parent is a media element, 
</span><span class="cx">     // then the user agent must add the track element's corresponding text track to the 
</span><span class="cx">     // media element's list of text tracks ... [continues in TextTrackList::append]
</span><del>-    RefPtr&lt;TextTrack&gt; textTrack = trackElement-&gt;track();
-    if (!textTrack)
-        return;
-    
-    addTextTrack(textTrack.releaseNonNull());
-    
</del><ins>+    addTextTrack(trackElement.track());
+
</ins><span class="cx">     // Do not schedule the track loading until parsing finishes so we don't start before all tracks
</span><span class="cx">     // in the markup have been added.
</span><span class="cx">     if (!m_parsingInProgress)
</span><span class="lines">@@ -3736,23 +3669,21 @@
</span><span class="cx">         mediaControls()-&gt;closedCaptionTracksChanged();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLMediaElement::didRemoveTextTrack(HTMLTrackElement* trackElement)
</del><ins>+void HTMLMediaElement::didRemoveTextTrack(HTMLTrackElement&amp; trackElement)
</ins><span class="cx"> {
</span><del>-    ASSERT(trackElement-&gt;hasTagName(trackTag));
</del><ins>+    ASSERT(trackElement.hasTagName(trackTag));
</ins><span class="cx"> 
</span><span class="cx"> #if !LOG_DISABLED
</span><del>-    if (trackElement-&gt;hasTagName(trackTag)) {
-        URL url = trackElement-&gt;getNonEmptyURLAttribute(srcAttr);
</del><ins>+    if (trackElement.hasTagName(trackTag)) {
+        URL url = trackElement.getNonEmptyURLAttribute(srcAttr);
</ins><span class="cx">         LOG(Media, &quot;HTMLMediaElement::didRemoveTrack(%p) - 'src' is %s&quot;, this, urlForLoggingMedia(url).utf8().data());
</span><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    RefPtr&lt;TextTrack&gt; textTrack = trackElement-&gt;track();
-    if (!textTrack)
-        return;
-    
-    textTrack-&gt;setHasBeenConfigured(false);
</del><ins>+    auto&amp; textTrack = trackElement.track();
</ins><span class="cx"> 
</span><ins>+    textTrack.setHasBeenConfigured(false);
+
</ins><span class="cx">     if (!m_textTracks)
</span><span class="cx">         return;
</span><span class="cx">     
</span><span class="lines">@@ -3760,11 +3691,9 @@
</span><span class="cx">     // When a track element's parent element changes and the old parent was a media element, 
</span><span class="cx">     // then the user agent must remove the track element's corresponding text track from the 
</span><span class="cx">     // media element's list of text tracks.
</span><del>-    removeTextTrack(*textTrack);
</del><ins>+    removeTextTrack(textTrack);
</ins><span class="cx"> 
</span><del>-    size_t index = m_textTracksWhenResourceSelectionBegan.find(textTrack.get());
-    if (index != notFound)
-        m_textTracksWhenResourceSelectionBegan.remove(index);
</del><ins>+    m_textTracksWhenResourceSelectionBegan.removeFirst(&amp;textTrack);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLMediaElement::configureTextTrackGroup(const TrackGroup&amp; group)
</span><span class="lines">@@ -4212,7 +4141,7 @@
</span><span class="cx">         // A 'beforeload' event handler can mutate the DOM, so check to see if the source element is still a child node.
</span><span class="cx">         if (node.parentNode() != this) {
</span><span class="cx">             LOG(Media, &quot;HTMLMediaElement::selectNextSourceChild(%p) - 'beforeload' removed current element&quot;, this);
</span><del>-            source = 0;
</del><ins>+            source = nullptr;
</ins><span class="cx">             goto CheckAgain;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -4703,12 +4632,11 @@
</span><span class="cx"> 
</span><span class="cx"> double HTMLMediaElement::maxBufferedTime() const
</span><span class="cx"> {
</span><del>-    RefPtr&lt;TimeRanges&gt; bufferedRanges = buffered();
</del><ins>+    auto bufferedRanges = buffered();
</ins><span class="cx">     unsigned numRanges = bufferedRanges-&gt;length();
</span><span class="cx">     if (!numRanges)
</span><span class="cx">         return 0;
</span><del>-
-    return bufferedRanges-&gt;end(numRanges - 1, ASSERT_NO_EXCEPTION);
</del><ins>+    return bufferedRanges.get().ranges().end(numRanges - 1).toDouble();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;TimeRanges&gt; HTMLMediaElement::played()
</span><span class="lines">@@ -6068,7 +5996,7 @@
</span><span class="cx">     // attribute is set, changed, or removed, the user agent must run the following steps:
</span><span class="cx">     // 1. Let m [this] be the media element in question.
</span><span class="cx">     // 2. Let m have no current media controller, if it currently has one.
</span><del>-    setController(0);
</del><ins>+    setController(nullptr);
</ins><span class="cx"> 
</span><span class="cx">     // 3. If m's mediagroup attribute is being removed, then abort these steps.
</span><span class="cx">     if (group.isEmpty())
</span><span class="lines">@@ -6102,12 +6030,12 @@
</span><span class="cx"> void HTMLMediaElement::setController(PassRefPtr&lt;MediaController&gt; controller)
</span><span class="cx"> {
</span><span class="cx">     if (m_mediaController)
</span><del>-        m_mediaController-&gt;removeMediaElement(this);
</del><ins>+        m_mediaController-&gt;removeMediaElement(*this);
</ins><span class="cx"> 
</span><span class="cx">     m_mediaController = controller;
</span><span class="cx"> 
</span><span class="cx">     if (m_mediaController)
</span><del>-        m_mediaController-&gt;addMediaElement(this);
</del><ins>+        m_mediaController-&gt;addMediaElement(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (hasMediaControls())
</span><span class="cx">         mediaControls()-&gt;setMediaController(m_mediaController ? m_mediaController.get() : static_cast&lt;MediaControllerInterface*&gt;(this));
</span><span class="lines">@@ -6268,7 +6196,7 @@
</span><span class="cx">         if (!isAllowedToLoadMediaURL(*this, url, trackElement.isInUserAgentShadowTree()))
</span><span class="cx">             continue;
</span><span class="cx"> 
</span><del>-        auto&amp; track = *trackElement.track();
</del><ins>+        auto&amp; track = trackElement.track();
</ins><span class="cx">         auto kind = track.kind();
</span><span class="cx"> 
</span><span class="cx">         // FIXME: The switch statement below preserves existing behavior where we ignore chapters and metadata tracks.
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLMediaElement.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -83,14 +83,12 @@
</span><span class="cx"> class VideoPlaybackQuality;
</span><span class="cx"> class VideoTrackList;
</span><span class="cx"> class VideoTrackPrivate;
</span><del>-#if ENABLE(LEGACY_ENCRYPTED_MEDIA)
</del><span class="cx"> class WebKitMediaKeys;
</span><del>-#endif
</del><span class="cx"> 
</span><span class="cx"> #if ENABLE(VIDEO_TRACK)
</span><del>-typedef PODIntervalTree&lt;MediaTime, TextTrackCue*&gt; CueIntervalTree;
-typedef CueIntervalTree::IntervalType CueInterval;
-typedef Vector&lt;CueInterval&gt; CueList;
</del><ins>+using CueIntervalTree = PODIntervalTree&lt;MediaTime, TextTrackCue*&gt;;
+using CueInterval = CueIntervalTree::IntervalType;
+using CueList = Vector&lt;CueInterval&gt;;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> class HTMLMediaElement
</span><span class="lines">@@ -192,8 +190,9 @@
</span><span class="cx"> // playback state
</span><span class="cx">     WEBCORE_EXPORT double currentTime() const override;
</span><span class="cx">     void setCurrentTime(double) override;
</span><del>-    virtual void setCurrentTime(double, ExceptionCode&amp;);
-    virtual double getStartDate() const;
</del><ins>+    double currentTimeForBindings() const { return currentTime(); }
+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; setCurrentTimeForBindings(double);
+    WEBCORE_EXPORT double getStartDate() const;
</ins><span class="cx">     WEBCORE_EXPORT double duration() const override;
</span><span class="cx">     WEBCORE_EXPORT bool paused() const override;
</span><span class="cx">     double defaultPlaybackRate() const override;
</span><span class="lines">@@ -261,7 +260,7 @@
</span><span class="cx">     WEBCORE_EXPORT bool controls() const;
</span><span class="cx">     WEBCORE_EXPORT void setControls(bool);
</span><span class="cx">     WEBCORE_EXPORT double volume() const override;
</span><del>-    void setVolume(double, ExceptionCode&amp;) override;
</del><ins>+    ExceptionOr&lt;void&gt; setVolume(double) override;
</ins><span class="cx">     WEBCORE_EXPORT bool muted() const override;
</span><span class="cx">     WEBCORE_EXPORT void setMuted(bool) override;
</span><span class="cx"> 
</span><span class="lines">@@ -278,7 +277,7 @@
</span><span class="cx">     double percentLoaded() const;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(VIDEO_TRACK)
</span><del>-    RefPtr&lt;TextTrack&gt; addTextTrack(const String&amp; kind, const String&amp; label, const String&amp; language, ExceptionCode&amp;);
</del><ins>+    ExceptionOr&lt;Ref&lt;TextTrack&gt;&gt; addTextTrack(const String&amp; kind, const String&amp; label, const String&amp; language);
</ins><span class="cx"> 
</span><span class="cx">     AudioTrackList&amp; audioTracks();
</span><span class="cx">     TextTrackList&amp; textTracks();
</span><span class="lines">@@ -296,18 +295,18 @@
</span><span class="cx">     void closeCaptionTracksChanged();
</span><span class="cx">     void notifyMediaPlayerOfTextTrackChanges();
</span><span class="cx"> 
</span><del>-    virtual void didAddTextTrack(HTMLTrackElement*);
-    virtual void didRemoveTextTrack(HTMLTrackElement*);
</del><ins>+    virtual void didAddTextTrack(HTMLTrackElement&amp;);
+    virtual void didRemoveTextTrack(HTMLTrackElement&amp;);
</ins><span class="cx"> 
</span><del>-    void mediaPlayerDidAddAudioTrack(PassRefPtr&lt;AudioTrackPrivate&gt;) override;
-    void mediaPlayerDidAddTextTrack(PassRefPtr&lt;InbandTextTrackPrivate&gt;) override;
-    void mediaPlayerDidAddVideoTrack(PassRefPtr&lt;VideoTrackPrivate&gt;) override;
-    void mediaPlayerDidRemoveAudioTrack(PassRefPtr&lt;AudioTrackPrivate&gt;) override;
-    void mediaPlayerDidRemoveTextTrack(PassRefPtr&lt;InbandTextTrackPrivate&gt;) override;
-    void mediaPlayerDidRemoveVideoTrack(PassRefPtr&lt;VideoTrackPrivate&gt;) override;
</del><ins>+    void mediaPlayerDidAddAudioTrack(AudioTrackPrivate&amp;) final;
+    void mediaPlayerDidAddTextTrack(InbandTextTrackPrivate&amp;) final;
+    void mediaPlayerDidAddVideoTrack(VideoTrackPrivate&amp;) final;
+    void mediaPlayerDidRemoveAudioTrack(AudioTrackPrivate&amp;) final;
+    void mediaPlayerDidRemoveTextTrack(InbandTextTrackPrivate&amp;) final;
+    void mediaPlayerDidRemoveVideoTrack(VideoTrackPrivate&amp;) final;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(AVF_CAPTIONS)
</span><del>-    Vector&lt;RefPtr&lt;PlatformTextTrack&gt;&gt; outOfBandTrackSources() override;
</del><ins>+    Vector&lt;RefPtr&lt;PlatformTextTrack&gt;&gt; outOfBandTrackSources() final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     struct TrackGroup;
</span><span class="lines">@@ -325,8 +324,9 @@
</span><span class="cx">     // AudioTrackClient
</span><span class="cx">     void audioTrackEnabledChanged(AudioTrack*) override;
</span><span class="cx"> 
</span><ins>+    void textTrackReadyStateChanged(TextTrack*);
+
</ins><span class="cx">     // TextTrackClient
</span><del>-    virtual void textTrackReadyStateChanged(TextTrack*);
</del><span class="cx">     void textTrackKindChanged(TextTrack*) override;
</span><span class="cx">     void textTrackModeChanged(TextTrack*) override;
</span><span class="cx">     void textTrackAddCues(TextTrack*, const TextTrackCueList*) override;
</span><span class="lines">@@ -823,13 +823,13 @@
</span><span class="cx"> 
</span><span class="cx">     Vector&lt;PlayPromise&gt; m_pendingPlayPromises;
</span><span class="cx"> 
</span><del>-    double m_requestedPlaybackRate;
-    double m_reportedPlaybackRate;
-    double m_defaultPlaybackRate;
-    bool m_webkitPreservesPitch;
-    NetworkState m_networkState;
-    ReadyState m_readyState;
-    ReadyState m_readyStateMaximum;
</del><ins>+    double m_requestedPlaybackRate { 1 };
+    double m_reportedPlaybackRate { 1 };
+    double m_defaultPlaybackRate { 1 };
+    bool m_webkitPreservesPitch { true };
+    NetworkState m_networkState { NETWORK_EMPTY };
+    ReadyState m_readyState { HAVE_NOTHING };
+    ReadyState m_readyStateMaximum { HAVE_NOTHING };
</ins><span class="cx">     URL m_currentSrc;
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;MediaError&gt; m_error;
</span><span class="lines">@@ -850,15 +850,15 @@
</span><span class="cx">     std::unique_ptr&lt;PendingSeek&gt; m_pendingSeek;
</span><span class="cx">     SeekType m_pendingSeekType { NoSeek };
</span><span class="cx"> 
</span><del>-    double m_volume;
-    bool m_volumeInitialized;
</del><ins>+    double m_volume { 1 };
+    bool m_volumeInitialized { false };
</ins><span class="cx">     MediaTime m_lastSeekTime;
</span><span class="cx">     
</span><del>-    double m_previousProgressTime;
</del><ins>+    double m_previousProgressTime { std::numeric_limits&lt;double&gt;::max() };
</ins><span class="cx">     double m_playbackStartedTime { 0 };
</span><span class="cx"> 
</span><span class="cx">     // The last time a timeupdate event was sent (based on monotonic clock).
</span><del>-    double m_clockTimeAtLastUpdateEvent;
</del><ins>+    double m_clockTimeAtLastUpdateEvent { 0 };
</ins><span class="cx"> 
</span><span class="cx">     // The last time a timeupdate event was sent in movie time.
</span><span class="cx">     MediaTime m_lastTimeUpdateEventMovieTime;
</span><span class="lines">@@ -865,11 +865,11 @@
</span><span class="cx">     
</span><span class="cx">     // Loading state.
</span><span class="cx">     enum LoadState { WaitingForSource, LoadingFromSrcAttr, LoadingFromSourceElement };
</span><del>-    LoadState m_loadState;
</del><ins>+    LoadState m_loadState { WaitingForSource };
</ins><span class="cx">     RefPtr&lt;HTMLSourceElement&gt; m_currentSourceNode;
</span><span class="cx">     RefPtr&lt;Node&gt; m_nextChildNodeToConsider;
</span><span class="cx"> 
</span><del>-    VideoFullscreenMode m_videoFullscreenMode;
</del><ins>+    VideoFullscreenMode m_videoFullscreenMode { VideoFullscreenModeNone };
</ins><span class="cx">     bool m_preparedForInline;
</span><span class="cx">     std::function&lt;void()&gt; m_preparedForInlineCompletionHandler;
</span><span class="cx"> 
</span><span class="lines">@@ -876,18 +876,18 @@
</span><span class="cx"> #if PLATFORM(IOS) || (PLATFORM(MAC) &amp;&amp; ENABLE(VIDEO_PRESENTATION_MODE))
</span><span class="cx">     RetainPtr&lt;PlatformLayer&gt; m_videoFullscreenLayer;
</span><span class="cx">     FloatRect m_videoFullscreenFrame;
</span><del>-    MediaPlayerEnums::VideoGravity m_videoFullscreenGravity;
</del><ins>+    MediaPlayerEnums::VideoGravity m_videoFullscreenGravity { MediaPlayer::VideoGravityResizeAspect };
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     std::unique_ptr&lt;MediaPlayer&gt; m_player;
</span><span class="cx"> 
</span><del>-    MediaPlayerEnums::Preload m_preload;
</del><ins>+    MediaPlayerEnums::Preload m_preload { MediaPlayer::Auto };
</ins><span class="cx"> 
</span><del>-    DisplayMode m_displayMode;
</del><ins>+    DisplayMode m_displayMode { Unknown };
</ins><span class="cx"> 
</span><span class="cx">     // Counter incremented while processing a callback from the media player, so we can avoid
</span><span class="cx">     // calling the media engine recursively.
</span><del>-    int m_processingMediaPlayerCallback;
</del><ins>+    int m_processingMediaPlayerCallback { 0 };
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(MEDIA_SESSION)
</span><span class="cx">     String m_kind;
</span><span class="lines">@@ -898,27 +898,25 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(MEDIA_SOURCE)
</span><span class="cx">     RefPtr&lt;MediaSource&gt; m_mediaSource;
</span><del>-    unsigned long m_droppedVideoFrames;
</del><ins>+    unsigned m_droppedVideoFrames { 0 };
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     mutable MediaTime m_cachedTime;
</span><del>-    mutable double m_clockTimeAtLastCachedTimeUpdate;
-    mutable double m_minimumClockTimeToUpdateCachedTime;
</del><ins>+    mutable double m_clockTimeAtLastCachedTimeUpdate { 0 };
+    mutable double m_minimumClockTimeToUpdateCachedTime { 0 };
</ins><span class="cx"> 
</span><span class="cx">     MediaTime m_fragmentStartTime;
</span><span class="cx">     MediaTime m_fragmentEndTime;
</span><span class="cx"> 
</span><del>-    typedef unsigned PendingActionFlags;
-    PendingActionFlags m_pendingActionFlags;
</del><ins>+    using PendingActionFlags = unsigned;
+    PendingActionFlags m_pendingActionFlags { 0 };
</ins><span class="cx"> 
</span><del>-    enum ActionAfterScanType {
-        Nothing, Play, Pause
-    };
-    ActionAfterScanType m_actionAfterScan;
</del><ins>+    enum ActionAfterScanType { Nothing, Play, Pause };
+    ActionAfterScanType m_actionAfterScan { Nothing };
</ins><span class="cx"> 
</span><span class="cx">     enum ScanType { Seek, Scan };
</span><del>-    ScanType m_scanType;
-    ScanDirection m_scanDirection;
</del><ins>+    ScanType m_scanType { Scan };
+    ScanDirection m_scanDirection { Forward };
</ins><span class="cx"> 
</span><span class="cx">     bool m_firstTimePlaying : 1;
</span><span class="cx">     bool m_playing : 1;
</span><span class="lines">@@ -971,9 +969,9 @@
</span><span class="cx">     bool m_processingPreferenceChange : 1;
</span><span class="cx"> 
</span><span class="cx">     String m_subtitleTrackLanguage;
</span><del>-    MediaTime m_lastTextTrackUpdateTime;
</del><ins>+    MediaTime m_lastTextTrackUpdateTime { -1, 1 };
</ins><span class="cx"> 
</span><del>-    CaptionUserPreferences::CaptionDisplayMode m_captionDisplayMode;
</del><ins>+    CaptionUserPreferences::CaptionDisplayMode m_captionDisplayMode { CaptionUserPreferences::Automatic };
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;AudioTrackList&gt; m_audioTracks;
</span><span class="cx">     RefPtr&lt;TextTrackList&gt; m_textTracks;
</span><span class="lines">@@ -983,7 +981,7 @@
</span><span class="cx">     CueIntervalTree m_cueTree;
</span><span class="cx"> 
</span><span class="cx">     CueList m_currentlyActiveCues;
</span><del>-    int m_ignoreTrackDisplayUpdate;
</del><ins>+    int m_ignoreTrackDisplayUpdate { 0 };
</ins><span class="cx"> 
</span><span class="cx">     bool m_requireCaptionPreferencesChangedCallbacks { false };
</span><span class="cx"> #endif
</span><span class="lines">@@ -992,7 +990,7 @@
</span><span class="cx">     // This is a weak reference, since m_audioSourceNode holds a reference to us.
</span><span class="cx">     // The value is set just after the MediaElementAudioSourceNode is created.
</span><span class="cx">     // The value is cleared in MediaElementAudioSourceNode::~MediaElementAudioSourceNode().
</span><del>-    MediaElementAudioSourceNode* m_audioSourceNode;
</del><ins>+    MediaElementAudioSourceNode* m_audioSourceNode { nullptr };
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     String m_mediaGroup;
</span><span class="lines">@@ -1009,7 +1007,7 @@
</span><span class="cx"> 
</span><span class="cx">     std::unique_ptr&lt;MediaElementSession&gt; m_mediaSession;
</span><span class="cx">     PageActivityAssertionToken m_audioActivityToken;
</span><del>-    size_t m_reportedExtraMemoryCost;
</del><ins>+    size_t m_reportedExtraMemoryCost { 0 };
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(MEDIA_CONTROLS_SCRIPT)
</span><span class="cx">     friend class MediaControlsHost;
</span><span class="lines">@@ -1029,11 +1027,10 @@
</span><span class="cx"> #endif
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-#if ENABLE(VIDEO_TRACK)
-#ifndef NDEBUG
</del><ins>+#if ENABLE(VIDEO_TRACK) &amp;&amp; !defined(NDEBUG)
+
</ins><span class="cx"> // Template specialization required by PodIntervalTree in debug mode.
</span><del>-template &lt;&gt;
-struct ValueToString&lt;TextTrackCue*&gt; {
</del><ins>+template &lt;&gt; struct ValueToString&lt;TextTrackCue*&gt; {
</ins><span class="cx">     static String string(TextTrackCue* const&amp; cue)
</span><span class="cx">     {
</span><span class="cx">         String text;
</span><span class="lines">@@ -1042,17 +1039,18 @@
</span><span class="cx">         return String::format(&quot;%p id=%s interval=%s--&gt;%s cue=%s)&quot;, cue, cue-&gt;id().utf8().data(), toString(cue-&gt;startTime()).utf8().data(), toString(cue-&gt;endTime()).utf8().data(), text.utf8().data());
</span><span class="cx">     }
</span><span class="cx"> };
</span><ins>+
</ins><span class="cx"> #endif
</span><del>-#endif
</del><span class="cx"> 
</span><span class="cx"> #ifndef NDEBUG
</span><del>-template&lt;&gt;
-struct ValueToString&lt;MediaTime&gt; {
</del><ins>+
+template&lt;&gt; struct ValueToString&lt;MediaTime&gt; {
</ins><span class="cx">     static String string(const MediaTime&amp; time)
</span><span class="cx">     {
</span><span class="cx">         return toString(time);
</span><span class="cx">     }
</span><span class="cx"> };
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.idl (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.idl        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLMediaElement.idl        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx">     readonly attribute boolean seeking;
</span><span class="cx"> 
</span><span class="cx">     // playback state
</span><del>-    [SetterMayThrowLegacyException] attribute unrestricted double currentTime;
</del><ins>+    [ImplementedAs=currentTimeForBindings, SetterMayThrowException] attribute unrestricted double currentTime;
</ins><span class="cx">     readonly attribute unrestricted double duration;
</span><span class="cx">     Date getStartDate();
</span><span class="cx">     readonly attribute boolean paused;
</span><span class="lines">@@ -77,7 +77,7 @@
</span><span class="cx"> 
</span><span class="cx">     // controls
</span><span class="cx">     attribute boolean controls;
</span><del>-    [SetterMayThrowLegacyException] attribute double volume;
</del><ins>+    [SetterMayThrowException] attribute double volume;
</ins><span class="cx">     attribute boolean muted;
</span><span class="cx">     [Reflect=muted] attribute boolean defaultMuted;
</span><span class="cx"> 
</span><span class="lines">@@ -94,7 +94,7 @@
</span><span class="cx">     [Conditional=LEGACY_ENCRYPTED_MEDIA] readonly attribute WebKitMediaKeys webkitKeys;
</span><span class="cx">     [Conditional=LEGACY_ENCRYPTED_MEDIA] void webkitSetMediaKeys(WebKitMediaKeys? mediaKeys);
</span><span class="cx"> 
</span><del>-    [Conditional=VIDEO_TRACK, MayThrowLegacyException] TextTrack addTextTrack(DOMString kind, optional DOMString label = &quot;&quot;, optional DOMString language = &quot;&quot;);
</del><ins>+    [Conditional=VIDEO_TRACK, MayThrowException] TextTrack addTextTrack(DOMString kind, optional DOMString label = &quot;&quot;, optional DOMString language = &quot;&quot;);
</ins><span class="cx">     [Conditional=VIDEO_TRACK] readonly attribute AudioTrackList audioTracks;
</span><span class="cx">     [Conditional=VIDEO_TRACK] readonly attribute TextTrackList textTracks;
</span><span class="cx">     [Conditional=VIDEO_TRACK] readonly attribute VideoTrackList videoTracks;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLObjectElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLObjectElement.idl (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLObjectElement.idl        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLObjectElement.idl        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -19,9 +19,9 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> [
</span><ins>+    CustomCall,
</ins><span class="cx">     CustomNamedSetter,
</span><span class="cx">     JSCustomGetOwnPropertySlotAndDescriptor,
</span><del>-    CustomCall,
</del><span class="cx"> ] interface HTMLObjectElement : HTMLElement {
</span><span class="cx">     readonly attribute HTMLFormElement form;
</span><span class="cx">     [Reflect] attribute DOMString code;
</span><span class="lines">@@ -47,9 +47,7 @@
</span><span class="cx">     [EnabledAtRuntime=InteractiveFormValidation] boolean reportValidity();
</span><span class="cx">     void setCustomValidity(DOMString? error);
</span><span class="cx"> 
</span><del>-    // Introduced in DOM Level 2:
</del><span class="cx">     [CheckSecurityForNode] readonly attribute Document contentDocument;
</span><span class="cx"> 
</span><del>-    [CheckSecurityForNode, MayThrowLegacyException] Document getSVGDocument();
</del><ins>+    [CheckSecurityForNode, MayThrowException] Document getSVGDocument();
</ins><span class="cx"> };
</span><del>-
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLOptionElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLOptionElement.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLOptionElement.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLOptionElement.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -66,17 +66,17 @@
</span><span class="cx">     return adoptRef(*new HTMLOptionElement(tagName, document));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;HTMLOptionElement&gt; HTMLOptionElement::createForJSConstructor(Document&amp; document, const String&amp; data, const String&amp; value,
-        bool defaultSelected, bool selected, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Ref&lt;HTMLOptionElement&gt;&gt; HTMLOptionElement::createForJSConstructor(Document&amp; document,
+    const String&amp; data, const String&amp; value, bool defaultSelected, bool selected)
</ins><span class="cx"> {
</span><span class="cx">     Ref&lt;HTMLOptionElement&gt; element = adoptRef(*new HTMLOptionElement(optionTag, document));
</span><span class="cx"> 
</span><span class="cx">     auto text = Text::create(document, data.isNull() ? emptyString() : data);
</span><span class="cx"> 
</span><del>-    ec = 0;
</del><ins>+    ExceptionCode ec = 0;
</ins><span class="cx">     element-&gt;appendChild(text, ec);
</span><span class="cx">     if (ec)
</span><del>-        return nullptr;
</del><ins>+        return Exception { ec };
</ins><span class="cx"> 
</span><span class="cx">     if (!value.isNull())
</span><span class="cx">         element-&gt;setValue(value);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLOptionElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLOptionElement.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLOptionElement.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLOptionElement.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -35,8 +35,7 @@
</span><span class="cx"> public:
</span><span class="cx">     static Ref&lt;HTMLOptionElement&gt; create(Document&amp;);
</span><span class="cx">     static Ref&lt;HTMLOptionElement&gt; create(const QualifiedName&amp;, Document&amp;);
</span><del>-    static RefPtr&lt;HTMLOptionElement&gt; createForJSConstructor(Document&amp;, const String&amp; data, const String&amp; value,
-       bool defaultSelected, bool selected, ExceptionCode&amp;);
</del><ins>+    static ExceptionOr&lt;Ref&lt;HTMLOptionElement&gt;&gt; createForJSConstructor(Document&amp;, const String&amp; data, const String&amp; value, bool defaultSelected, bool selected);
</ins><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT String text() const;
</span><span class="cx">     void setText(const String&amp;);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLOptionElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLOptionElement.idl (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLOptionElement.idl        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLOptionElement.idl        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -19,7 +19,7 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> [
</span><del>-    ConstructorMayThrowLegacyException,
</del><ins>+    ConstructorMayThrowException,
</ins><span class="cx">     JSGenerateToNativeObject,
</span><span class="cx">     NamedConstructor=Option(optional DOMString data, optional DOMString value, optional boolean defaultSelected = false, optional boolean selected = false),
</span><span class="cx"> ] interface HTMLOptionElement : HTMLElement {
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLOptionsCollectioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLOptionsCollection.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLOptionsCollection.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLOptionsCollection.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -61,9 +61,9 @@
</span><span class="cx">     selectElement().setSelectedIndex(index);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLOptionsCollection::setLength(unsigned length, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; HTMLOptionsCollection::setLength(unsigned length)
</ins><span class="cx"> {
</span><del>-    selectElement().setLength(length, ec);
</del><ins>+    return selectElement().setLength(length);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } //namespace
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLOptionsCollectionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLOptionsCollection.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLOptionsCollection.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLOptionsCollection.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -29,8 +29,6 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-typedef int ExceptionCode;
-
</del><span class="cx"> class HTMLOptionsCollection final : public CachedHTMLCollection&lt;HTMLOptionsCollection, CollectionTypeTraits&lt;SelectOptions&gt;::traversalType&gt; {
</span><span class="cx"> public:
</span><span class="cx">     static Ref&lt;HTMLOptionsCollection&gt; create(HTMLSelectElement&amp;, CollectionType);
</span><span class="lines">@@ -50,7 +48,7 @@
</span><span class="cx">     WEBCORE_EXPORT int selectedIndex() const;
</span><span class="cx">     WEBCORE_EXPORT void setSelectedIndex(int);
</span><span class="cx"> 
</span><del>-    WEBCORE_EXPORT void setLength(unsigned, ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; setLength(unsigned);
</ins><span class="cx"> 
</span><span class="cx">     // For CachedHTMLCollection.
</span><span class="cx">     bool elementMatches(Element&amp;) const;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLOptionsCollectionidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLOptionsCollection.idl (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLOptionsCollection.idl        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLOptionsCollection.idl        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -25,7 +25,7 @@
</span><span class="cx">     JSGenerateToNativeObject,
</span><span class="cx"> ] interface HTMLOptionsCollection : HTMLCollection {
</span><span class="cx">     attribute long selectedIndex;
</span><del>-    [CEReactions, CustomSetter, SetterMayThrowLegacyException] attribute unsigned long length;
</del><ins>+    [CEReactions, CustomSetter, SetterMayThrowException] attribute unsigned long length;
</ins><span class="cx"> 
</span><span class="cx">     getter HTMLOptionElement? item(unsigned long index);
</span><span class="cx">     getter HTMLOptionElement? namedItem(DOMString name);
</span><span class="lines">@@ -32,7 +32,8 @@
</span><span class="cx"> 
</span><span class="cx">     [CEReactions, MayThrowException] void add((HTMLOptionElement or HTMLOptGroupElement) element, optional (HTMLElement or long)? before = null);
</span><span class="cx"> 
</span><del>-    [CEReactions] void remove(long index);
-    // FIXME: This overload is not in the specification and has been dropped in Blink.
</del><ins>+    void remove(long index);
+
+    // FIXME: This overload is not in the specification and has been dropped from Blink.
</ins><span class="cx">     [CEReactions] void remove(HTMLOptionElement option);
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLProgressElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLProgressElement.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLProgressElement.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLProgressElement.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -98,12 +98,8 @@
</span><span class="cx">     return !std::isfinite(value) || value &lt; 0 ? 0 : std::min(value, max());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLProgressElement::setValue(double value, ExceptionCode&amp; ec)
</del><ins>+void HTMLProgressElement::setValue(double value)
</ins><span class="cx"> {
</span><del>-    if (!std::isfinite(value)) {
-        ec = NOT_SUPPORTED_ERR;
-        return;
-    }
</del><span class="cx">     setAttributeWithoutSynchronization(valueAttr, AtomicString::number(value &gt;= 0 ? value : 0));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -113,12 +109,8 @@
</span><span class="cx">     return !std::isfinite(max) || max &lt;= 0 ? 1 : max;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLProgressElement::setMax(double max, ExceptionCode&amp; ec)
</del><ins>+void HTMLProgressElement::setMax(double max)
</ins><span class="cx"> {
</span><del>-    if (!std::isfinite(max)) {
-        ec = NOT_SUPPORTED_ERR;
-        return;
-    }
</del><span class="cx">     setAttributeWithoutSynchronization(maxAttr, AtomicString::number(max &gt; 0 ? max : 1));
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLProgressElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLProgressElement.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLProgressElement.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLProgressElement.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -18,8 +18,7 @@
</span><span class="cx">  *
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef HTMLProgressElement_h
-#define HTMLProgressElement_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #include &quot;LabelableElement.h&quot;
</span><span class="cx"> 
</span><span class="lines">@@ -36,15 +35,13 @@
</span><span class="cx">     static Ref&lt;HTMLProgressElement&gt; create(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><span class="cx">     double value() const;
</span><del>-    void setValue(double, ExceptionCode&amp;);
</del><ins>+    void setValue(double);
</ins><span class="cx"> 
</span><span class="cx">     double max() const;
</span><del>-    void setMax(double, ExceptionCode&amp;);
</del><ins>+    void setMax(double);
</ins><span class="cx"> 
</span><span class="cx">     double position() const;
</span><span class="cx"> 
</span><del>-    bool canContainRangeEndPoint() const final { return false; }
-
</del><span class="cx"> private:
</span><span class="cx">     HTMLProgressElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx">     virtual ~HTMLProgressElement();
</span><span class="lines">@@ -64,9 +61,9 @@
</span><span class="cx">     void didAddUserAgentShadowRoot(ShadowRoot*) final;
</span><span class="cx">     bool isDeterminate() const;
</span><span class="cx"> 
</span><ins>+    bool canContainRangeEndPoint() const final { return false; }
+
</ins><span class="cx">     ProgressValueElement* m_value;
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace
</span><del>-
-#endif
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLProgressElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLProgressElement.idl (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLProgressElement.idl        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLProgressElement.idl        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -18,9 +18,8 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> interface HTMLProgressElement : HTMLElement {
</span><del>-    [SetterMayThrowLegacyException] attribute  unrestricted double value;
-    [SetterMayThrowLegacyException] attribute  unrestricted double max;
-    readonly attribute  unrestricted double                position;
-    readonly attribute  NodeList              labels;
</del><ins>+    attribute double value;
+    attribute double max;
+    readonly attribute double position;
+    readonly attribute NodeList labels;
</ins><span class="cx"> };
</span><del>-
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLSelectElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLSelectElement.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLSelectElement.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLSelectElement.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -246,15 +246,15 @@
</span><span class="cx">     if (listIndex &lt; 0)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    listItems()[listIndex]-&gt;remove(IGNORE_EXCEPTION);
</del><ins>+    listItems()[listIndex]-&gt;remove();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLSelectElement::remove(HTMLOptionElement&amp; option)
</del><ins>+ExceptionOr&lt;void&gt; HTMLSelectElement::remove(HTMLOptionElement&amp; option)
</ins><span class="cx"> {
</span><span class="cx">     if (option.ownerSelectElement() != this)
</span><del>-        return;
</del><ins>+        return { };
</ins><span class="cx"> 
</span><del>-    option.remove(IGNORE_EXCEPTION);
</del><ins>+    return option.remove();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String HTMLSelectElement::value() const
</span><span class="lines">@@ -430,9 +430,8 @@
</span><span class="cx">     return options()-&gt;item(index);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLSelectElement::setOption(unsigned index, HTMLOptionElement&amp; option, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; HTMLSelectElement::setOption(unsigned index, HTMLOptionElement&amp; option)
</ins><span class="cx"> {
</span><del>-    ec = 0;
</del><span class="cx">     if (index &gt; maxSelectItems - 1)
</span><span class="cx">         index = maxSelectItems - 1;
</span><span class="cx">     int diff = index - length();
</span><span class="lines">@@ -439,7 +438,9 @@
</span><span class="cx">     RefPtr&lt;HTMLOptionElement&gt; before;
</span><span class="cx">     // Out of array bounds? First insert empty dummies.
</span><span class="cx">     if (diff &gt; 0) {
</span><del>-        setLength(index, ec);
</del><ins>+        auto result = setLength(index);
+        if (result.hasException())
+            return result;
</ins><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><span class="lines">@@ -446,18 +447,16 @@
</span><span class="cx">         removeByIndex(index);
</span><span class="cx">     }
</span><span class="cx">     // Finally add the new element.
</span><del>-    if (!ec) {
-        auto exception = add(&amp;option, HTMLElementOrInt(before.get()));
-        if (exception.hasException())
-            ec = exception.releaseException().code();
-        if (diff &gt;= 0 &amp;&amp; option.selected())
-            optionSelectionStateChanged(option, true);
-    }
</del><ins>+    auto result = add(&amp;option, HTMLElementOrInt { before.get() });
+    if (result.hasException())
+        return result;
+    if (diff &gt;= 0 &amp;&amp; option.selected())
+        optionSelectionStateChanged(option, true);
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLSelectElement::setLength(unsigned newLength, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; HTMLSelectElement::setLength(unsigned newLength)
</ins><span class="cx"> {
</span><del>-    ec = 0;
</del><span class="cx">     if (newLength &gt; maxSelectItems)
</span><span class="cx">         newLength = maxSelectItems;
</span><span class="cx">     int diff = length() - newLength;
</span><span class="lines">@@ -465,11 +464,9 @@
</span><span class="cx">     if (diff &lt; 0) { // Add dummy elements.
</span><span class="cx">         do {
</span><span class="cx">             auto option = document().createElement(optionTag, false);
</span><del>-            auto exception = add(downcast&lt;HTMLOptionElement&gt;(option.ptr()), Nullopt);
-            if (exception.hasException()) {
-                ec = exception.releaseException().code();
-                break;
-        }
</del><ins>+            auto result = add(downcast&lt;HTMLOptionElement&gt;(option.ptr()), Nullopt);
+            if (result.hasException())
+                return result;
</ins><span class="cx">         } while (++diff);
</span><span class="cx">     } else {
</span><span class="cx">         auto&amp; items = listItems();
</span><span class="lines">@@ -476,21 +473,22 @@
</span><span class="cx"> 
</span><span class="cx">         // Removing children fires mutation events, which might mutate the DOM further, so we first copy out a list
</span><span class="cx">         // of elements that we intend to remove then attempt to remove them one at a time.
</span><del>-        Vector&lt;Ref&lt;Element&gt;&gt; itemsToRemove;
</del><ins>+        Vector&lt;Ref&lt;HTMLOptionElement&gt;&gt; itemsToRemove;
</ins><span class="cx">         size_t optionIndex = 0;
</span><span class="cx">         for (auto&amp; item : items) {
</span><span class="cx">             if (is&lt;HTMLOptionElement&gt;(*item) &amp;&amp; optionIndex++ &gt;= newLength) {
</span><span class="cx">                 ASSERT(item-&gt;parentNode());
</span><del>-                itemsToRemove.append(*item);
</del><ins>+                itemsToRemove.append(downcast&lt;HTMLOptionElement&gt;(*item));
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        for (auto&amp; item : itemsToRemove) {
-            if (item-&gt;parentNode())
-                item-&gt;parentNode()-&gt;removeChild(item.get(), ec);
-        }
</del><ins>+        // FIXME: Clients can detect what order we remove the options in; is it good to remove them in ascending order?
+        // FIXME: This ignores exceptions. A previous version passed through the exception only for the last item removed.
+        // What exception behavior do we want?
+        for (auto&amp; item : itemsToRemove)
+            item-&gt;remove();
</ins><span class="cx">     }
</span><del>-    updateValidity();
</del><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HTMLSelectElement::isRequiredFormControl() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLSelectElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLSelectElement.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLSelectElement.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLSelectElement.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx">     WEBCORE_EXPORT ExceptionOr&lt;void&gt; add(const OptionOrOptGroupElement&amp;, Optional&lt;HTMLElementOrInt&gt; before);
</span><span class="cx"> 
</span><span class="cx">     using Node::remove;
</span><del>-    void remove(HTMLOptionElement&amp;);
</del><ins>+    ExceptionOr&lt;void&gt; remove(HTMLOptionElement&amp;);
</ins><span class="cx">     WEBCORE_EXPORT void removeByIndex(int); // Should be remove(int) but that conflicts with Node::remove(ExceptionCode&amp;).
</span><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT String value() const;
</span><span class="lines">@@ -80,8 +80,8 @@
</span><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT void setSize(unsigned);
</span><span class="cx"> 
</span><del>-    void setOption(unsigned index, HTMLOptionElement&amp;, ExceptionCode&amp;);
-    void setLength(unsigned, ExceptionCode&amp;);
</del><ins>+    ExceptionOr&lt;void&gt; setOption(unsigned index, HTMLOptionElement&amp;);
+    ExceptionOr&lt;void&gt; setLength(unsigned);
</ins><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT HTMLOptionElement* namedItem(const AtomicString&amp; name);
</span><span class="cx">     WEBCORE_EXPORT HTMLOptionElement* item(unsigned index);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLSelectElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLSelectElement.idl (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLSelectElement.idl        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLSelectElement.idl        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx">     readonly attribute DOMString type;
</span><span class="cx"> 
</span><span class="cx">     readonly attribute HTMLOptionsCollection options;
</span><del>-    [CEReactions, SetterMayThrowLegacyException] attribute unsigned long length;
</del><ins>+    [CEReactions, SetterMayThrowException] attribute unsigned long length;
</ins><span class="cx"> 
</span><span class="cx">     getter HTMLOptionElement? item(unsigned long index);
</span><span class="cx">     HTMLOptionElement? namedItem(DOMString name);
</span><span class="lines">@@ -42,7 +42,7 @@
</span><span class="cx"> 
</span><span class="cx">     [CEReactions, MayThrowException] void add((HTMLOptionElement or HTMLOptGroupElement) element, optional (HTMLElement or long)? before = null);
</span><span class="cx"> 
</span><del>-    [MayThrowLegacyException] void remove(); // ChildNode overload
</del><ins>+    [MayThrowException] void remove(); // ChildNode overload
</ins><span class="cx">     // FIXME: This overload is not in the specification and was dropped in Blink.
</span><span class="cx">     [CEReactions] void remove(HTMLOptionElement option);
</span><span class="cx">     [CEReactions, ImplementedAs=removeByIndex] void remove(long index);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableElement.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableElement.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLTableElement.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -78,11 +78,16 @@
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLTableElement::setCaption(RefPtr&lt;HTMLTableCaptionElement&gt;&amp;&amp; newCaption, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; HTMLTableElement::setCaption(RefPtr&lt;HTMLTableCaptionElement&gt;&amp;&amp; newCaption)
</ins><span class="cx"> {
</span><span class="cx">     deleteCaption();
</span><del>-    if (newCaption)
</del><ins>+    if (newCaption) {
+        ExceptionCode ec = 0;
</ins><span class="cx">         insertBefore(*newCaption, firstChild(), ec);
</span><ins>+        if (ec)
+            return Exception { ec };
+    }
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> HTMLTableSectionElement* HTMLTableElement::tHead() const
</span><span class="lines">@@ -94,17 +99,15 @@
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLTableElement::setTHead(RefPtr&lt;HTMLTableSectionElement&gt;&amp;&amp; newHead, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; HTMLTableElement::setTHead(RefPtr&lt;HTMLTableSectionElement&gt;&amp;&amp; newHead)
</ins><span class="cx"> {
</span><del>-    if (UNLIKELY(newHead &amp;&amp; !newHead-&gt;hasTagName(theadTag))) {
-        ec = HIERARCHY_REQUEST_ERR;
-        return;
-    }
</del><ins>+    if (UNLIKELY(newHead &amp;&amp; !newHead-&gt;hasTagName(theadTag)))
+        return Exception { HIERARCHY_REQUEST_ERR };
</ins><span class="cx"> 
</span><span class="cx">     deleteTHead();
</span><span class="cx"> 
</span><span class="cx">     if (!newHead)
</span><del>-        return;
</del><ins>+        return { };
</ins><span class="cx"> 
</span><span class="cx">     Node* child;
</span><span class="cx">     for (child = firstChild(); child; child = child-&gt;nextSibling()) {
</span><span class="lines">@@ -112,7 +115,11 @@
</span><span class="cx">             break;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    ExceptionCode ec = 0;
</ins><span class="cx">     insertBefore(*newHead, child, ec);
</span><ins>+    if (ec)
+        return Exception { ec };
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> HTMLTableSectionElement* HTMLTableElement::tFoot() const
</span><span class="lines">@@ -124,54 +131,56 @@
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLTableElement::setTFoot(RefPtr&lt;HTMLTableSectionElement&gt;&amp;&amp; newFoot, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; HTMLTableElement::setTFoot(RefPtr&lt;HTMLTableSectionElement&gt;&amp;&amp; newFoot)
</ins><span class="cx"> {
</span><del>-    if (UNLIKELY(newFoot &amp;&amp; !newFoot-&gt;hasTagName(tfootTag))) {
-        ec = HIERARCHY_REQUEST_ERR;
-        return;
-    }
</del><ins>+    if (UNLIKELY(newFoot &amp;&amp; !newFoot-&gt;hasTagName(tfootTag)))
+        return Exception { HIERARCHY_REQUEST_ERR };
</ins><span class="cx"> 
</span><span class="cx">     deleteTFoot();
</span><span class="cx"> 
</span><span class="cx">     if (!newFoot)
</span><del>-        return;
</del><ins>+        return { };
</ins><span class="cx"> 
</span><ins>+    ExceptionCode ec = 0;
</ins><span class="cx">     appendChild(*newFoot, ec);
</span><ins>+    if (ec)
+        return Exception { ec };
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;HTMLTableSectionElement&gt; HTMLTableElement::createTHead()
</span><span class="cx"> {
</span><del>-    if (HTMLTableSectionElement* existingHead = tHead())
</del><ins>+    if (auto* existingHead = tHead())
</ins><span class="cx">         return *existingHead;
</span><del>-    Ref&lt;HTMLTableSectionElement&gt; head = HTMLTableSectionElement::create(theadTag, document());
-    setTHead(head.copyRef(), IGNORE_EXCEPTION);
</del><ins>+    auto head = HTMLTableSectionElement::create(theadTag, document());
+    setTHead(head.copyRef());
</ins><span class="cx">     return head;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLTableElement::deleteTHead()
</span><span class="cx"> {
</span><del>-    if (auto* tHead = this-&gt;tHead())
-        removeChild(*tHead, IGNORE_EXCEPTION);
</del><ins>+    if (auto* head = tHead())
+        removeChild(*head);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;HTMLTableSectionElement&gt; HTMLTableElement::createTFoot()
</span><span class="cx"> {
</span><del>-    if (HTMLTableSectionElement* existingFoot = tFoot())
</del><ins>+    if (auto* existingFoot = tFoot())
</ins><span class="cx">         return *existingFoot;
</span><del>-    Ref&lt;HTMLTableSectionElement&gt; foot = HTMLTableSectionElement::create(tfootTag, document());
-    setTFoot(foot.copyRef(), IGNORE_EXCEPTION);
</del><ins>+    auto foot = HTMLTableSectionElement::create(tfootTag, document());
+    setTFoot(foot.copyRef());
</ins><span class="cx">     return foot;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLTableElement::deleteTFoot()
</span><span class="cx"> {
</span><del>-    if (auto* tFoot = this-&gt;tFoot())
-        removeChild(*tFoot, IGNORE_EXCEPTION);
</del><ins>+    if (auto* foot = tFoot())
+        removeChild(*foot, IGNORE_EXCEPTION);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;HTMLTableSectionElement&gt; HTMLTableElement::createTBody()
</span><span class="cx"> {
</span><del>-    Ref&lt;HTMLTableSectionElement&gt; body = HTMLTableSectionElement::create(tbodyTag, document());
</del><ins>+    auto body = HTMLTableSectionElement::create(tbodyTag, document());
</ins><span class="cx">     Node* referenceElement = lastBody() ? lastBody()-&gt;nextSibling() : nullptr;
</span><span class="cx">     insertBefore(body, referenceElement, ASSERT_NO_EXCEPTION);
</span><span class="cx">     return body;
</span><span class="lines">@@ -179,10 +188,10 @@
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;HTMLTableCaptionElement&gt; HTMLTableElement::createCaption()
</span><span class="cx"> {
</span><del>-    if (HTMLTableCaptionElement* existingCaption = caption())
</del><ins>+    if (auto* existingCaption = caption())
</ins><span class="cx">         return *existingCaption;
</span><del>-    Ref&lt;HTMLTableCaptionElement&gt; caption = HTMLTableCaptionElement::create(captionTag, document());
-    setCaption(caption.copyRef(), IGNORE_EXCEPTION);
</del><ins>+    auto caption = HTMLTableCaptionElement::create(captionTag, document());
+    setCaption(caption.copyRef());
</ins><span class="cx">     return caption;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -201,17 +210,15 @@
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;HTMLElement&gt; HTMLTableElement::insertRow(int index, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Ref&lt;HTMLElement&gt;&gt; HTMLTableElement::insertRow(int index)
</ins><span class="cx"> {
</span><del>-    if (index &lt; -1) {
-        ec = INDEX_SIZE_ERR;
-        return 0;
-    }
</del><ins>+    if (index &lt; -1)
+        return Exception { INDEX_SIZE_ERR };
</ins><span class="cx"> 
</span><span class="cx">     Ref&lt;HTMLTableElement&gt; protectedThis(*this);
</span><span class="cx"> 
</span><del>-    RefPtr&lt;HTMLTableRowElement&gt; lastRow = 0;
-    RefPtr&lt;HTMLTableRowElement&gt; row = 0;
</del><ins>+    RefPtr&lt;HTMLTableRowElement&gt; lastRow;
+    RefPtr&lt;HTMLTableRowElement&gt; row;
</ins><span class="cx">     if (index == -1)
</span><span class="cx">         lastRow = HTMLTableRowsCollection::lastRow(*this);
</span><span class="cx">     else {
</span><span class="lines">@@ -218,10 +225,8 @@
</span><span class="cx">         for (int i = 0; i &lt;= index; ++i) {
</span><span class="cx">             row = HTMLTableRowsCollection::rowAfter(*this, lastRow.get());
</span><span class="cx">             if (!row) {
</span><del>-                if (i != index) {
-                    ec = INDEX_SIZE_ERR;
-                    return 0;
-                }
</del><ins>+                if (i != index)
+                    return Exception { INDEX_SIZE_ERR };
</ins><span class="cx">                 break;
</span><span class="cx">             }
</span><span class="cx">             lastRow = row;
</span><span class="lines">@@ -236,24 +241,31 @@
</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><ins>+            ExceptionCode ec = 0;
</ins><span class="cx">             newBody-&gt;appendChild(newRow, ec);
</span><ins>+            // FIXME: Why ignore the exception if the first appendChild failed?
</ins><span class="cx">             appendChild(newBody, ec);
</span><del>-            return WTFMove(newRow);
</del><ins>+            if (ec)
+                return Exception { ec };
+            return Ref&lt;HTMLElement&gt; { WTFMove(newRow) };
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     auto newRow = HTMLTableRowElement::create(document());
</span><ins>+    ExceptionCode ec = 0;
</ins><span class="cx">     parent-&gt;insertBefore(newRow, row.get(), ec);
</span><del>-    return WTFMove(newRow);
</del><ins>+    if (ec)
+        return Exception { ec };
+    return Ref&lt;HTMLElement&gt; { WTFMove(newRow) };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLTableElement::deleteRow(int index, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; HTMLTableElement::deleteRow(int index)
</ins><span class="cx"> {
</span><span class="cx">     HTMLTableRowElement* row = nullptr;
</span><span class="cx">     if (index == -1) {
</span><span class="cx">         row = HTMLTableRowsCollection::lastRow(*this);
</span><span class="cx">         if (!row)
</span><del>-            return;
</del><ins>+            return { };
</ins><span class="cx">     } else {
</span><span class="cx">         for (int i = 0; i &lt;= index; ++i) {
</span><span class="cx">             row = HTMLTableRowsCollection::rowAfter(*this, row);
</span><span class="lines">@@ -260,12 +272,10 @@
</span><span class="cx">             if (!row)
</span><span class="cx">                 break;
</span><span class="cx">         }
</span><del>-        if (!row) {
-            ec = INDEX_SIZE_ERR;
-            return;
-        }
</del><ins>+        if (!row)
+            return Exception { INDEX_SIZE_ERR };
</ins><span class="cx">     }
</span><del>-    row-&gt;remove(ec);
</del><ins>+    return row-&gt;remove();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline bool isTableCellAncestor(const Element&amp; element)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableElement.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableElement.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLTableElement.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -40,13 +40,13 @@
</span><span class="cx">     static Ref&lt;HTMLTableElement&gt; create(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT HTMLTableCaptionElement* caption() const;
</span><del>-    WEBCORE_EXPORT void setCaption(RefPtr&lt;HTMLTableCaptionElement&gt;&amp;&amp;, ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; setCaption(RefPtr&lt;HTMLTableCaptionElement&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT HTMLTableSectionElement* tHead() const;
</span><del>-    WEBCORE_EXPORT void setTHead(RefPtr&lt;HTMLTableSectionElement&gt;&amp;&amp;, ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; setTHead(RefPtr&lt;HTMLTableSectionElement&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT HTMLTableSectionElement* tFoot() const;
</span><del>-    WEBCORE_EXPORT void setTFoot(RefPtr&lt;HTMLTableSectionElement&gt;&amp;&amp;, ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; setTFoot(RefPtr&lt;HTMLTableSectionElement&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT Ref&lt;HTMLTableSectionElement&gt; createTHead();
</span><span class="cx">     WEBCORE_EXPORT void deleteTHead();
</span><span class="lines">@@ -55,9 +55,8 @@
</span><span class="cx">     WEBCORE_EXPORT Ref&lt;HTMLTableSectionElement&gt; createTBody();
</span><span class="cx">     WEBCORE_EXPORT Ref&lt;HTMLTableCaptionElement&gt; createCaption();
</span><span class="cx">     WEBCORE_EXPORT void deleteCaption();
</span><del>-    RefPtr&lt;HTMLElement&gt; insertRow(ExceptionCode&amp; ec) { return insertRow(-1, ec); }
-    WEBCORE_EXPORT RefPtr&lt;HTMLElement&gt; insertRow(int index, ExceptionCode&amp;);
-    WEBCORE_EXPORT void deleteRow(int index, ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;Ref&lt;HTMLElement&gt;&gt; insertRow(int index = -1);
+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; deleteRow(int index);
</ins><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT Ref&lt;HTMLCollection&gt; rows();
</span><span class="cx">     WEBCORE_EXPORT Ref&lt;HTMLCollection&gt; tBodies();
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableElement.idl (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableElement.idl        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLTableElement.idl        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -19,9 +19,9 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> interface HTMLTableElement : HTMLElement {
</span><del>-    [CEReactions, SetterMayThrowLegacyException] attribute HTMLTableCaptionElement? caption;
-    [CEReactions, SetterMayThrowLegacyException] attribute HTMLTableSectionElement? tHead;
-    [CEReactions, SetterMayThrowLegacyException] attribute HTMLTableSectionElement? tFoot;
</del><ins>+    [CEReactions, SetterMayThrowException] attribute HTMLTableCaptionElement? caption;
+    [CEReactions, SetterMayThrowException] attribute HTMLTableSectionElement? tHead;
+    [CEReactions, SetterMayThrowException] attribute HTMLTableSectionElement? tFoot;
</ins><span class="cx"> 
</span><span class="cx">     readonly attribute HTMLCollection rows;
</span><span class="cx">     readonly attribute HTMLCollection tBodies;
</span><span class="lines">@@ -45,7 +45,6 @@
</span><span class="cx">     HTMLElement createCaption();
</span><span class="cx">     [CEReactions] void deleteCaption();
</span><span class="cx"> 
</span><del>-    [MayThrowLegacyException] HTMLElement insertRow(optional long index = -1);
-    [CEReactions, MayThrowLegacyException] void deleteRow(long index);
</del><ins>+    [MayThrowException] HTMLElement insertRow(optional long index = -1);
+    [CEReactions, MayThrowException] void deleteRow(long index);
</ins><span class="cx"> };
</span><del>-
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableRowElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableRowElement.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableRowElement.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLTableRowElement.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx"> 
</span><span class="cx"> using namespace HTMLNames;
</span><span class="cx"> 
</span><del>-HTMLTableRowElement::HTMLTableRowElement(const QualifiedName&amp; tagName, Document&amp; document)
</del><ins>+inline HTMLTableRowElement::HTMLTableRowElement(const QualifiedName&amp; tagName, Document&amp; document)
</ins><span class="cx">     : HTMLTablePartElement(tagName, document)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(hasTagName(trTag));
</span><span class="lines">@@ -55,21 +55,25 @@
</span><span class="cx">     return adoptRef(*new HTMLTableRowElement(tagName, document));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static inline HTMLTableElement* findTable(const HTMLTableRowElement&amp; row)
+{
+    auto* parent = row.parentNode();
+    if (is&lt;HTMLTableElement&gt;(parent))
+        return downcast&lt;HTMLTableElement&gt;(parent);
+    if (is&lt;HTMLTableSectionElement&gt;(parent)) {
+        auto* grandparent = parent-&gt;parentNode();
+        if (is&lt;HTMLTableElement&gt;(grandparent))
+            return downcast&lt;HTMLTableElement&gt;(grandparent);
+    }
+    return nullptr;
+}
+
</ins><span class="cx"> int HTMLTableRowElement::rowIndex() const
</span><span class="cx"> {
</span><del>-    auto* parent = parentNode();
-    if (!parent)
</del><ins>+    auto* table = findTable(*this);
+    if (!table)
</ins><span class="cx">         return -1;
</span><span class="cx"> 
</span><del>-    HTMLTableElement* table;
-    if (is&lt;HTMLTableElement&gt;(*parent))
-        table = downcast&lt;HTMLTableElement&gt;(parent);
-    else {
-        if (!is&lt;HTMLTableSectionElement&gt;(*parent) || !is&lt;HTMLTableElement&gt;(parent-&gt;parentNode()))
-            return -1;
-        table = downcast&lt;HTMLTableElement&gt;(parent-&gt;parentNode());
-    }
-
</del><span class="cx">     auto rows = table-&gt;rows();
</span><span class="cx">     unsigned length = rows-&gt;length();
</span><span class="cx">     for (unsigned i = 0; i &lt; length; ++i) {
</span><span class="lines">@@ -80,20 +84,22 @@
</span><span class="cx">     return -1;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static inline RefPtr&lt;HTMLCollection&gt; findRows(const HTMLTableRowElement&amp; row)
+{
+    auto* parent = row.parentNode();
+    if (is&lt;HTMLTableSectionElement&gt;(parent))
+        return downcast&lt;HTMLTableSectionElement&gt;(*parent).rows();
+    if (is&lt;HTMLTableElement&gt;(parent))
+        return downcast&lt;HTMLTableElement&gt;(*parent).rows();
+    return nullptr;
+}
+
</ins><span class="cx"> int HTMLTableRowElement::sectionRowIndex() const
</span><span class="cx"> {
</span><del>-    auto* parent = parentNode();
-    if (!parent)
</del><ins>+    auto rows = findRows(*this);
+    if (!rows)
</ins><span class="cx">         return -1;
</span><span class="cx"> 
</span><del>-    RefPtr&lt;HTMLCollection&gt; rows;
-    if (is&lt;HTMLTableSectionElement&gt;(*parent))
-        rows = downcast&lt;HTMLTableSectionElement&gt;(*parent).rows();
-    else if (is&lt;HTMLTableElement&gt;(*parent))
-        rows = downcast&lt;HTMLTableElement&gt;(*parent).rows();
-    else
-        return -1;
-
</del><span class="cx">     unsigned length = rows-&gt;length();
</span><span class="cx">     for (unsigned i = 0; i &lt; length; ++i) {
</span><span class="cx">         if (rows-&gt;item(i) == this)
</span><span class="lines">@@ -103,16 +109,16 @@
</span><span class="cx">     return -1;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;HTMLTableCellElement&gt; HTMLTableRowElement::insertCell(int index, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Ref&lt;HTMLTableCellElement&gt;&gt; HTMLTableRowElement::insertCell(int index)
</ins><span class="cx"> {
</span><del>-    Ref&lt;HTMLCollection&gt; children = cells();
</del><ins>+    if (index &lt; -1)
+        return Exception { INDEX_SIZE_ERR };
+    auto children = cells();
</ins><span class="cx">     int numCells = children-&gt;length();
</span><del>-    if (index &lt; -1 || index &gt; numCells) {
-        ec = INDEX_SIZE_ERR;
-        return nullptr;
-    }
-
</del><ins>+    if (index &gt; numCells)
+        return Exception { INDEX_SIZE_ERR };
</ins><span class="cx">     auto cell = HTMLTableCellElement::create(tdTag, document());
</span><ins>+    ExceptionCode ec = 0;
</ins><span class="cx">     if (index &lt; 0 || index &gt;= numCells)
</span><span class="cx">         appendChild(cell, ec);
</span><span class="cx">     else {
</span><span class="lines">@@ -123,23 +129,27 @@
</span><span class="cx">             n = children-&gt;item(index);
</span><span class="cx">         insertBefore(cell, n, ec);
</span><span class="cx">     }
</span><ins>+    if (ec)
+        return Exception { ec };
</ins><span class="cx">     return WTFMove(cell);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLTableRowElement::deleteCell(int index, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; HTMLTableRowElement::deleteCell(int index)
</ins><span class="cx"> {
</span><del>-    Ref&lt;HTMLCollection&gt; children = cells();
</del><ins>+    auto children = cells();
</ins><span class="cx">     int numCells = children-&gt;length();
</span><span class="cx">     if (index == -1) {
</span><span class="cx">         if (!numCells)
</span><del>-            return;
-
</del><ins>+            return { };
</ins><span class="cx">         index = numCells - 1;
</span><span class="cx">     }
</span><del>-    if (index &gt;= 0 &amp;&amp; index &lt; numCells)
-        HTMLElement::removeChild(*children-&gt;item(index), ec);
-    else
-        ec = INDEX_SIZE_ERR;
</del><ins>+    if (index &lt; 0 || index &gt;= numCells)
+        return Exception { INDEX_SIZE_ERR };
+    ExceptionCode ec = 0;
+    removeChild(*children-&gt;item(index), ec);
+    if (ec)
+        return Exception { ec };
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;HTMLCollection&gt; HTMLTableRowElement::cells()
</span><span class="lines">@@ -147,9 +157,4 @@
</span><span class="cx">     return ensureRareData().ensureNodeLists().addCachedCollection&lt;GenericCachedHTMLCollection&lt;CollectionTypeTraits&lt;TRCells&gt;::traversalType&gt;&gt;(*this, TRCells);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLTableRowElement::setCells(HTMLCollection*, ExceptionCode&amp; ec)
-{
-    ec = NO_MODIFICATION_ALLOWED_ERR;
</del><span class="cx"> }
</span><del>-
-}
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableRowElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableRowElement.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableRowElement.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLTableRowElement.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -41,12 +41,10 @@
</span><span class="cx">     WEBCORE_EXPORT int sectionRowIndex() const;
</span><span class="cx">     void setSectionRowIndex(int);
</span><span class="cx"> 
</span><del>-    RefPtr&lt;HTMLTableCellElement&gt; insertCell(ExceptionCode&amp; ec) { return insertCell(-1, ec); }
-    WEBCORE_EXPORT RefPtr&lt;HTMLTableCellElement&gt; insertCell(int index, ExceptionCode&amp;);
-    WEBCORE_EXPORT void deleteCell(int index, ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;Ref&lt;HTMLTableCellElement&gt;&gt; insertCell(int index = -1);
+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; deleteCell(int index);
</ins><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT Ref&lt;HTMLCollection&gt; cells();
</span><del>-    void setCells(HTMLCollection *, ExceptionCode&amp;);
</del><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     HTMLTableRowElement(const QualifiedName&amp;, Document&amp;);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableRowElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableRowElement.idl (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableRowElement.idl        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLTableRowElement.idl        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -27,7 +27,6 @@
</span><span class="cx">     [Reflect=char] attribute DOMString ch;
</span><span class="cx">     [Reflect=charoff] attribute DOMString chOff;
</span><span class="cx">     [Reflect] attribute DOMString vAlign;
</span><del>-    [MayThrowLegacyException] HTMLElement insertCell(optional long index = -1);
-    [CEReactions, MayThrowLegacyException] void deleteCell(long index);
</del><ins>+    [MayThrowException] HTMLElement insertCell(optional long index = -1);
+    [CEReactions, MayThrowException] void deleteCell(long index);
</ins><span class="cx"> };
</span><del>-
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableSectionElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableSectionElement.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableSectionElement.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLTableSectionElement.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -51,105 +51,61 @@
</span><span class="cx"> 
</span><span class="cx"> const StyleProperties* HTMLTableSectionElement::additionalPresentationAttributeStyle() const
</span><span class="cx"> {
</span><del>-    if (HTMLTableElement* table = findParentTable())
-        return table-&gt;additionalGroupStyle(true);
-    return 0;
</del><ins>+    auto* table = findParentTable();
+    if (!table)
+        return nullptr;
+    return table-&gt;additionalGroupStyle(true);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-// these functions are rather slow, since we need to get the row at
-// the index... but they aren't used during usual HTML parsing anyway
-RefPtr&lt;HTMLElement&gt; HTMLTableSectionElement::insertRow(int index, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Ref&lt;HTMLElement&gt;&gt; HTMLTableSectionElement::insertRow(int index)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;HTMLTableRowElement&gt; row;
-    Ref&lt;HTMLCollection&gt; children = rows();
</del><ins>+    if (index &lt; -1)
+        return Exception { INDEX_SIZE_ERR };
+    auto children = rows();
</ins><span class="cx">     int numRows = children-&gt;length();
</span><del>-    if (index &lt; -1 || index &gt; numRows)
-        ec = INDEX_SIZE_ERR; // per the DOM
</del><ins>+    if (index &gt; numRows)
+        return Exception { INDEX_SIZE_ERR };
+    auto row = HTMLTableRowElement::create(trTag, document());
+    ExceptionCode ec = 0;
+    if (numRows == index || index == -1)
+        appendChild(row, ec);
</ins><span class="cx">     else {
</span><del>-        row = HTMLTableRowElement::create(trTag, document());
-        if (numRows == index || index == -1)
-            appendChild(*row, ec);
-        else {
-            Node* n;
-            if (index &lt; 1)
-                n = firstChild();
-            else
-                n = children-&gt;item(index);
-            insertBefore(*row, n, ec);
-        }
</del><ins>+        Node* n;
+        if (index &lt; 1)
+            n = firstChild();
+        else
+            n = children-&gt;item(index);
+        insertBefore(row, n, ec);
</ins><span class="cx">     }
</span><del>-    return row;
</del><ins>+    if (ec)
+        return Exception { ec };
+    return Ref&lt;HTMLElement&gt; { WTFMove(row) };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLTableSectionElement::deleteRow(int index, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; HTMLTableSectionElement::deleteRow(int index)
</ins><span class="cx"> {
</span><del>-    Ref&lt;HTMLCollection&gt; children = rows();
</del><ins>+    auto children = rows();
</ins><span class="cx">     int numRows = children-&gt;length();
</span><span class="cx">     if (index == -1) {
</span><span class="cx">         if (!numRows)
</span><del>-            return;
-
</del><ins>+            return { };
</ins><span class="cx">         index = numRows - 1;
</span><span class="cx">     }
</span><del>-    if (index &gt;= 0 &amp;&amp; index &lt; numRows)
-        HTMLElement::removeChild(*children-&gt;item(index), ec);
-    else
-        ec = INDEX_SIZE_ERR;
</del><ins>+    if (index &lt; 0 || index &gt;= numRows)
+        return Exception { INDEX_SIZE_ERR };
+    ExceptionCode ec = 0;
+    removeChild(*children-&gt;item(index), ec);
+    if (ec)
+        return Exception { ec };
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> int HTMLTableSectionElement::numRows() const
</span><span class="cx"> {
</span><del>-    int rows = 0;
-    const Node *n = firstChild();
-    while (n) {
-        if (n-&gt;hasTagName(trTag))
-            rows++;
-        n = n-&gt;nextSibling();
-    }
-
-    return rows;
</del><ins>+    auto rows = childrenOfType&lt;HTMLTableRowElement&gt;(*this);
+    return std::distance(rows.begin(), rows.end());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-const AtomicString&amp; HTMLTableSectionElement::align() const
-{
-    return attributeWithoutSynchronization(alignAttr);
-}
-
-void HTMLTableSectionElement::setAlign(const AtomicString&amp; value)
-{
-    setAttributeWithoutSynchronization(alignAttr, value);
-}
-
-const AtomicString&amp; HTMLTableSectionElement::ch() const
-{
-    return attributeWithoutSynchronization(charAttr);
-}
-
-void HTMLTableSectionElement::setCh(const AtomicString&amp; value)
-{
-    setAttributeWithoutSynchronization(charAttr, value);
-}
-
-const AtomicString&amp; HTMLTableSectionElement::chOff() const
-{
-    return attributeWithoutSynchronization(charoffAttr);
-}
-
-void HTMLTableSectionElement::setChOff(const AtomicString&amp; value)
-{
-    setAttributeWithoutSynchronization(charoffAttr, value);
-}
-
-const AtomicString&amp; HTMLTableSectionElement::vAlign() const
-{
-    return attributeWithoutSynchronization(valignAttr);
-}
-
-void HTMLTableSectionElement::setVAlign(const AtomicString&amp; value)
-{
-    setAttributeWithoutSynchronization(valignAttr, value);
-}
-
</del><span class="cx"> Ref&lt;HTMLCollection&gt; HTMLTableSectionElement::rows()
</span><span class="cx"> {
</span><span class="cx">     return ensureRareData().ensureNodeLists().addCachedCollection&lt;GenericCachedHTMLCollection&lt;CollectionTypeTraits&lt;TSectionRows&gt;::traversalType&gt;&gt;(*this, TSectionRows);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableSectionElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableSectionElement.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableSectionElement.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLTableSectionElement.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -34,24 +34,11 @@
</span><span class="cx"> public:
</span><span class="cx">     static Ref&lt;HTMLTableSectionElement&gt; create(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><del>-    RefPtr&lt;HTMLElement&gt; insertRow(ExceptionCode&amp; ec) { return insertRow(-1, ec); }
-    WEBCORE_EXPORT RefPtr&lt;HTMLElement&gt; insertRow(int index, ExceptionCode&amp;);
-    WEBCORE_EXPORT void deleteRow(int index, ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;Ref&lt;HTMLElement&gt;&gt; insertRow(int index = -1);
+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; deleteRow(int index);
</ins><span class="cx"> 
</span><span class="cx">     int numRows() const;
</span><span class="cx"> 
</span><del>-    const AtomicString&amp; align() const;
-    void setAlign(const AtomicString&amp;);
-
-    const AtomicString&amp; ch() const;
-    void setCh(const AtomicString&amp;);
-
-    const AtomicString&amp; chOff() const;
-    void setChOff(const AtomicString&amp;);
-
-    const AtomicString&amp; vAlign() const;
-    void setVAlign(const AtomicString&amp;);
-
</del><span class="cx">     WEBCORE_EXPORT Ref&lt;HTMLCollection&gt; rows();
</span><span class="cx"> 
</span><span class="cx"> private:
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableSectionElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableSectionElement.idl (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableSectionElement.idl        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLTableSectionElement.idl        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -26,7 +26,6 @@
</span><span class="cx">     [Reflect=charoff] attribute DOMString chOff;
</span><span class="cx">     [Reflect] attribute DOMString vAlign;
</span><span class="cx">     readonly attribute HTMLCollection rows;
</span><del>-    [MayThrowLegacyException] HTMLElement insertRow(optional long index = -1);
-    [CEReactions, MayThrowLegacyException] void deleteRow(long index);
</del><ins>+    [MayThrowException] HTMLElement insertRow(optional long index = -1);
+    [CEReactions, MayThrowException] void deleteRow(long index);
</ins><span class="cx"> };
</span><del>-
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTextAreaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTextAreaElement.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTextAreaElement.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLTextAreaElement.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -205,21 +205,13 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLTextAreaElement::maxLengthAttributeChanged(const AtomicString&amp; newValue)
</span><span class="cx"> {
</span><del>-    if (Optional&lt;unsigned&gt; maxLength = parseHTMLNonNegativeInteger(newValue))
-        setMaxLength(maxLength.value());
-    else
-        setMaxLength(-1);
-
</del><ins>+    internalSetMaxLength(parseHTMLNonNegativeInteger(newValue).valueOr(-1));
</ins><span class="cx">     updateValidity();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLTextAreaElement::minLengthAttributeChanged(const AtomicString&amp; newValue)
</span><span class="cx"> {
</span><del>-    if (Optional&lt;unsigned&gt; minLength = parseHTMLNonNegativeInteger(newValue))
-        setMinLength(minLength.value());
-    else
-        setMinLength(-1);
-
</del><ins>+    internalSetMinLength(parseHTMLNonNegativeInteger(newValue).valueOr(-1));
</ins><span class="cx">     updateValidity();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -563,7 +555,7 @@
</span><span class="cx">         m_placeholder = TextControlPlaceholderElement::create(document());
</span><span class="cx">         userAgentShadowRoot()-&gt;insertBefore(*m_placeholder, innerTextElement()-&gt;nextSibling());
</span><span class="cx">     }
</span><del>-    m_placeholder-&gt;setInnerText(placeholderText, ASSERT_NO_EXCEPTION);
</del><ins>+    m_placeholder-&gt;setInnerText(placeholderText);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HTMLTextAreaElement::willRespondToMouseClickEvents()
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTextAreaElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTextAreaElement.idl (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTextAreaElement.idl        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLTextAreaElement.idl        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -24,8 +24,8 @@
</span><span class="cx">     [Reflect] attribute DOMString dirName;
</span><span class="cx">     [Reflect] attribute boolean disabled;
</span><span class="cx">     readonly attribute HTMLFormElement form;
</span><del>-    [SetterMayThrowLegacyException] attribute long minLength;
-    [SetterMayThrowLegacyException] attribute long maxLength;
</del><ins>+    [SetterMayThrowException] attribute long minLength;
+    [SetterMayThrowException] attribute long maxLength;
</ins><span class="cx">     [Reflect] attribute DOMString name;
</span><span class="cx">     [Reflect] attribute DOMString placeholder;
</span><span class="cx">     [Reflect] attribute boolean readOnly;
</span><span class="lines">@@ -53,19 +53,12 @@
</span><span class="cx">     attribute long selectionEnd;
</span><span class="cx">     attribute DOMString selectionDirection;
</span><span class="cx"> 
</span><del>-    [MayThrowLegacyException] void setRangeText(DOMString replacement);
-    [MayThrowLegacyException] void setRangeText(DOMString replacement,
-                        unsigned long start,
-                        unsigned long end,
-                        optional DOMString selectionMode);
</del><ins>+    [MayThrowException] void setRangeText(DOMString replacement);
+    [MayThrowException] void setRangeText(DOMString replacement, unsigned long start, unsigned long end, optional DOMString selectionMode);
</ins><span class="cx"> 
</span><del>-    void setSelectionRange(optional long start = 0,
-                           optional long end = 0,
-                           optional DOMString direction);
</del><ins>+    void setSelectionRange(optional long start = 0, optional long end = 0, optional DOMString direction);
</ins><span class="cx"> 
</span><span class="cx">     [Conditional=IOS_AUTOCORRECT_AND_AUTOCAPITALIZE] attribute boolean autocorrect;
</span><del>-
</del><span class="cx">     [Conditional=IOS_AUTOCORRECT_AND_AUTOCAPITALIZE, TreatNullAs=EmptyString] attribute DOMString autocapitalize;
</span><del>-
</del><span class="cx">     attribute DOMString autocomplete;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTextFormControlElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -213,17 +213,15 @@
</span><span class="cx">     setChangedSinceLastFormControlChangeEvent(false);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLTextFormControlElement::setRangeText(const String&amp; replacement, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; HTMLTextFormControlElement::setRangeText(const String&amp; replacement)
</ins><span class="cx"> {
</span><del>-    setRangeText(replacement, selectionStart(), selectionEnd(), String(), ec);
</del><ins>+    return setRangeText(replacement, selectionStart(), selectionEnd(), String());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLTextFormControlElement::setRangeText(const String&amp; replacement, unsigned start, unsigned end, const String&amp; selectionMode, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; HTMLTextFormControlElement::setRangeText(const String&amp; replacement, unsigned start, unsigned end, const String&amp; selectionMode)
</ins><span class="cx"> {
</span><del>-    if (start &gt; end) {
-        ec = INDEX_SIZE_ERR;
-        return;
-    }
</del><ins>+    if (start &gt; end)
+        return Exception { INDEX_SIZE_ERR };
</ins><span class="cx"> 
</span><span class="cx">     String text = innerTextValue();
</span><span class="cx">     unsigned textLength = text.length();
</span><span class="lines">@@ -243,7 +241,7 @@
</span><span class="cx"> 
</span><span class="cx">     // FIXME: What should happen to the value (as in value()) if there's no renderer?
</span><span class="cx">     if (!renderer())
</span><del>-        return;
</del><ins>+        return { };
</ins><span class="cx"> 
</span><span class="cx">     subtreeHasChanged();
</span><span class="cx"> 
</span><span class="lines">@@ -270,6 +268,8 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     setSelectionRange(newSelectionStart, newSelectionEnd, SelectionHasNoDirection);
</span><ins>+
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLTextFormControlElement::setSelectionRange(int start, int end, const String&amp; directionString, const AXTextStateChangeIntent&amp; intent)
</span><span class="lines">@@ -557,7 +557,7 @@
</span><span class="cx">                 cache-&gt;postNotification(this, AXObjectCache::AXValueChanged, TargetObservableParent);
</span><span class="cx">         }
</span><span class="cx"> #endif
</span><del>-        innerText-&gt;setInnerText(value, ASSERT_NO_EXCEPTION);
</del><ins>+        innerText-&gt;setInnerText(value);
</ins><span class="cx"> 
</span><span class="cx">         if (value.endsWith('\n') || value.endsWith('\r'))
</span><span class="cx">             innerText-&gt;appendChild(HTMLBRElement::create(document()), ASSERT_NO_EXCEPTION);
</span><span class="lines">@@ -761,20 +761,20 @@
</span><span class="cx">     return &quot;ltr&quot;;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLTextFormControlElement::setMaxLength(int maxLength, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; HTMLTextFormControlElement::setMaxLength(int maxLength)
</ins><span class="cx"> {
</span><span class="cx">     if (maxLength &lt; 0 || (m_minLength &gt;= 0 &amp;&amp; maxLength &lt; m_minLength))
</span><del>-        ec = INDEX_SIZE_ERR;
-    else
-        setIntegralAttribute(maxlengthAttr, maxLength);
</del><ins>+        return Exception { INDEX_SIZE_ERR };
+    setIntegralAttribute(maxlengthAttr, maxLength);
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLTextFormControlElement::setMinLength(int minLength, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; HTMLTextFormControlElement::setMinLength(int minLength)
</ins><span class="cx"> {
</span><span class="cx">     if (minLength &lt; 0 || (m_maxLength &gt;= 0 &amp;&amp; minLength &gt; m_maxLength))
</span><del>-        ec = INDEX_SIZE_ERR;
-    else
-        setIntegralAttribute(minlengthAttr, minLength);
</del><ins>+        return Exception { INDEX_SIZE_ERR };
+    setIntegralAttribute(minlengthAttr, minLength);
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLTextFormControlElement::adjustInnerTextStyle(const RenderStyle&amp; parentStyle, RenderStyle&amp; textBlockStyle) const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTextFormControlElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTextFormControlElement.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTextFormControlElement.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLTextFormControlElement.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -22,8 +22,7 @@
</span><span class="cx">  *
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef HTMLTextFormControlElement_h
-#define HTMLTextFormControlElement_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #include &quot;HTMLFormControlElementWithState.h&quot;
</span><span class="cx"> 
</span><span class="lines">@@ -48,12 +47,10 @@
</span><span class="cx">     void didEditInnerTextValue();
</span><span class="cx">     void forwardEvent(Event&amp;);
</span><span class="cx"> 
</span><del>-    long maxLength() const { return m_maxLength; }
-    WEBCORE_EXPORT void setMaxLength(int, ExceptionCode&amp;);
-    void setMaxLength(int maxLength) { m_maxLength = maxLength; }
-    long minLength() const { return m_minLength; }
-    void setMinLength(int, ExceptionCode&amp;);
-    void setMinLength(int minLength) { m_minLength = minLength; }
</del><ins>+    int maxLength() const { return m_maxLength; }
+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; setMaxLength(int);
+    int minLength() const { return m_minLength; }
+    ExceptionOr&lt;void&gt; setMinLength(int);
</ins><span class="cx"> 
</span><span class="cx">     InsertionNotificationRequest insertedInto(ContainerNode&amp;) override;
</span><span class="cx"> 
</span><span class="lines">@@ -73,8 +70,8 @@
</span><span class="cx">     WEBCORE_EXPORT void setSelectionEnd(int);
</span><span class="cx">     WEBCORE_EXPORT void setSelectionDirection(const String&amp;);
</span><span class="cx">     WEBCORE_EXPORT void select(const AXTextStateChangeIntent&amp; = AXTextStateChangeIntent());
</span><del>-    WEBCORE_EXPORT virtual void setRangeText(const String&amp; replacement, ExceptionCode&amp;);
-    WEBCORE_EXPORT virtual void setRangeText(const String&amp; replacement, unsigned start, unsigned end, const String&amp; selectionMode, ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT virtual ExceptionOr&lt;void&gt; setRangeText(const String&amp; replacement);
+    WEBCORE_EXPORT virtual ExceptionOr&lt;void&gt; setRangeText(const String&amp; replacement, unsigned start, unsigned end, const String&amp; selectionMode);
</ins><span class="cx">     void setSelectionRange(int start, int end, const String&amp; direction, const AXTextStateChangeIntent&amp; = AXTextStateChangeIntent());
</span><span class="cx">     WEBCORE_EXPORT void setSelectionRange(int start, int end, TextFieldSelectionDirection = SelectionHasNoDirection, const AXTextStateChangeIntent&amp; = AXTextStateChangeIntent());
</span><span class="cx">     PassRefPtr&lt;Range&gt; selection() const;
</span><span class="lines">@@ -129,6 +126,9 @@
</span><span class="cx"> 
</span><span class="cx">     void adjustInnerTextStyle(const RenderStyle&amp; parentStyle, RenderStyle&amp; textBlockStyle) const;
</span><span class="cx"> 
</span><ins>+    void internalSetMaxLength(int maxLength) { m_maxLength = maxLength; }
+    void internalSetMinLength(int minLength) { m_minLength = minLength; }
+
</ins><span class="cx"> private:
</span><span class="cx">     TextFieldSelectionDirection cachedSelectionDirection() const { return static_cast&lt;TextFieldSelectionDirection&gt;(m_cachedSelectionDirection); }
</span><span class="cx"> 
</span><span class="lines">@@ -172,5 +172,3 @@
</span><span class="cx">     static bool isType(const WebCore::Element&amp; element) { return element.isTextFormControl(); }
</span><span class="cx">     static bool isType(const WebCore::Node&amp; node) { return is&lt;WebCore::Element&gt;(node) &amp;&amp; isType(downcast&lt;WebCore::Element&gt;(node)); }
</span><span class="cx"> SPECIALIZE_TYPE_TRAITS_END()
</span><del>-
-#endif
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTrackElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTrackElement.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTrackElement.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLTrackElement.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -24,9 +24,10 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> #include &quot;config.h&quot;
</span><del>-#if ENABLE(VIDEO_TRACK)
</del><span class="cx"> #include &quot;HTMLTrackElement.h&quot;
</span><span class="cx"> 
</span><ins>+#if ENABLE(VIDEO_TRACK)
+
</ins><span class="cx"> #include &quot;ContentSecurityPolicy.h&quot;
</span><span class="cx"> #include &quot;Event.h&quot;
</span><span class="cx"> #include &quot;EventNames.h&quot;
</span><span class="lines">@@ -61,8 +62,10 @@
</span><span class="cx"> 
</span><span class="cx"> HTMLTrackElement::~HTMLTrackElement()
</span><span class="cx"> {
</span><del>-    if (m_track)
</del><ins>+    if (m_track) {
+        m_track-&gt;clearElement();
</ins><span class="cx">         m_track-&gt;clearClient();
</span><ins>+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;HTMLTrackElement&gt; HTMLTrackElement::create(const QualifiedName&amp; tagName, Document&amp; document)
</span><span class="lines">@@ -72,23 +75,23 @@
</span><span class="cx"> 
</span><span class="cx"> Node::InsertionNotificationRequest HTMLTrackElement::insertedInto(ContainerNode&amp; insertionPoint)
</span><span class="cx"> {
</span><ins>+    HTMLElement::insertedInto(insertionPoint);
+
+    if (is&lt;HTMLMediaElement&gt;(insertionPoint))
+        downcast&lt;HTMLMediaElement&gt;(insertionPoint).didAddTextTrack(*this);
+
</ins><span class="cx">     // Since we've moved to a new parent, we may now be able to load.
</span><span class="cx">     scheduleLoad();
</span><span class="cx"> 
</span><del>-    HTMLElement::insertedInto(insertionPoint);
-    HTMLMediaElement* parent = mediaElement();
-    if (&amp;insertionPoint == parent) {
-        ensureTrack();
-        parent-&gt;didAddTextTrack(this);
-    }
</del><span class="cx">     return InsertionDone;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLTrackElement::removedFrom(ContainerNode&amp; insertionPoint)
</span><span class="cx"> {
</span><del>-    if (!parentNode() &amp;&amp; is&lt;HTMLMediaElement&gt;(insertionPoint))
-        downcast&lt;HTMLMediaElement&gt;(insertionPoint).didRemoveTextTrack(this);
</del><span class="cx">     HTMLElement::removedFrom(insertionPoint);
</span><ins>+
+    if (is&lt;HTMLMediaElement&gt;(insertionPoint))
+        downcast&lt;HTMLMediaElement&gt;(insertionPoint).didRemoveTextTrack(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLTrackElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="lines">@@ -102,13 +105,13 @@
</span><span class="cx">     // 4.8.10.12.3 Sourcing out-of-band text tracks
</span><span class="cx">     // As the kind, label, and srclang attributes are set, changed, or removed, the text track must update accordingly...
</span><span class="cx">     } else if (name == kindAttr)
</span><del>-        ensureTrack().setKindKeywordIgnoringASCIICase(value.string());
</del><ins>+        track().setKindKeywordIgnoringASCIICase(value.string());
</ins><span class="cx">     else if (name == labelAttr)
</span><del>-        ensureTrack().setLabel(value);
</del><ins>+        track().setLabel(value);
</ins><span class="cx">     else if (name == srclangAttr)
</span><del>-        ensureTrack().setLanguage(value);
</del><ins>+        track().setLanguage(value);
</ins><span class="cx">     else if (name == defaultAttr)
</span><del>-        ensureTrack().setIsDefault(!value.isNull());
</del><ins>+        track().setIsDefault(!value.isNull());
</ins><span class="cx"> 
</span><span class="cx">     HTMLElement::parseAttribute(name, value);
</span><span class="cx"> }
</span><span class="lines">@@ -115,7 +118,7 @@
</span><span class="cx"> 
</span><span class="cx"> const AtomicString&amp; HTMLTrackElement::kind()
</span><span class="cx"> {
</span><del>-    return ensureTrack().kindKeyword();
</del><ins>+    return track().kindKeyword();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLTrackElement::setKind(const AtomicString&amp; kind)
</span><span class="lines">@@ -138,25 +141,22 @@
</span><span class="cx">     return hasAttributeWithoutSynchronization(defaultAttr);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-LoadableTextTrack&amp; HTMLTrackElement::ensureTrack()
</del><ins>+LoadableTextTrack&amp; HTMLTrackElement::track()
</ins><span class="cx"> {
</span><ins>+    // FIXME: There is no practical value in lazily initializing this.
+    // Instead this should be created in the constructor.
</ins><span class="cx">     if (!m_track) {
</span><span class="cx">         // The kind attribute is an enumerated attribute, limited only to known values. It defaults to 'subtitles' if missing or invalid.
</span><span class="cx">         String kind = attributeWithoutSynchronization(kindAttr).convertToASCIILowercase();
</span><span class="cx">         if (!TextTrack::isValidKindKeyword(kind))
</span><span class="cx">             kind = TextTrack::subtitlesKeyword();
</span><del>-        m_track = LoadableTextTrack::create(this, kind, label(), srclang());
-    } else
-        m_track-&gt;setTrackElement(this);
</del><ins>+        m_track = LoadableTextTrack::create(*this, kind, label(), srclang());
+    }
+    ASSERT(m_track-&gt;trackElement() == this);
</ins><span class="cx"> 
</span><span class="cx">     return *m_track;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-TextTrack* HTMLTrackElement::track()
-{
-    return &amp;ensureTrack();
-}
-
</del><span class="cx"> bool HTMLTrackElement::isURLAttribute(const Attribute&amp; attribute) const
</span><span class="cx"> {
</span><span class="cx">     return attribute.name() == srcAttr || HTMLElement::isURLAttribute(attribute);
</span><span class="lines">@@ -170,7 +170,7 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     // 2. If the text track's text track mode is not set to one of hidden or showing, abort these steps.
</span><del>-    if (ensureTrack().mode() != TextTrack::Mode::Hidden &amp;&amp; ensureTrack().mode() != TextTrack::Mode::Showing)
</del><ins>+    if (track().mode() != TextTrack::Mode::Hidden &amp;&amp; track().mode() != TextTrack::Mode::Showing)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     // 3. If the text track's track element does not have a media element as a parent, abort these steps.
</span><span class="lines">@@ -199,7 +199,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ensureTrack().scheduleLoad(url);
</del><ins>+    track().scheduleLoad(url);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HTMLTrackElement::canLoadURL(const URL&amp; url)
</span><span class="lines">@@ -262,14 +262,14 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLTrackElement::setReadyState(ReadyState state)
</span><span class="cx"> {
</span><del>-    ensureTrack().setReadinessState(static_cast&lt;TextTrack::ReadinessState&gt;(state));
</del><ins>+    track().setReadinessState(static_cast&lt;TextTrack::ReadinessState&gt;(state));
</ins><span class="cx">     if (HTMLMediaElement* parent = mediaElement())
</span><del>-        return parent-&gt;textTrackReadyStateChanged(m_track.get());
</del><ins>+        parent-&gt;textTrackReadyStateChanged(m_track.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> HTMLTrackElement::ReadyState HTMLTrackElement::readyState() 
</span><span class="cx"> {
</span><del>-    return static_cast&lt;ReadyState&gt;(ensureTrack().readinessState());
</del><ins>+    return static_cast&lt;ReadyState&gt;(track().readinessState());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> const AtomicString&amp; HTMLTrackElement::mediaElementCrossOriginAttribute() const
</span><span class="lines">@@ -276,7 +276,6 @@
</span><span class="cx"> {
</span><span class="cx">     if (HTMLMediaElement* parent = mediaElement())
</span><span class="cx">         return parent-&gt;attributeWithoutSynchronization(HTMLNames::crossoriginAttr);
</span><del>-    
</del><span class="cx">     return nullAtom;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -283,7 +282,7 @@
</span><span class="cx"> void HTMLTrackElement::textTrackKindChanged(TextTrack* track)
</span><span class="cx"> {
</span><span class="cx">     if (HTMLMediaElement* parent = mediaElement())
</span><del>-        return parent-&gt;textTrackKindChanged(track);
</del><ins>+        parent-&gt;textTrackKindChanged(track);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLTrackElement::textTrackModeChanged(TextTrack* track)
</span><span class="lines">@@ -293,40 +292,39 @@
</span><span class="cx">         scheduleLoad();
</span><span class="cx"> 
</span><span class="cx">     if (HTMLMediaElement* parent = mediaElement())
</span><del>-        return parent-&gt;textTrackModeChanged(track);
</del><ins>+        parent-&gt;textTrackModeChanged(track);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLTrackElement::textTrackAddCues(TextTrack* track, const TextTrackCueList* cues)
</span><span class="cx"> {
</span><span class="cx">     if (HTMLMediaElement* parent = mediaElement())
</span><del>-        return parent-&gt;textTrackAddCues(track, cues);
</del><ins>+        parent-&gt;textTrackAddCues(track, cues);
</ins><span class="cx"> }
</span><span class="cx">     
</span><span class="cx"> void HTMLTrackElement::textTrackRemoveCues(TextTrack* track, const TextTrackCueList* cues)
</span><span class="cx"> {
</span><span class="cx">     if (HTMLMediaElement* parent = mediaElement())
</span><del>-        return parent-&gt;textTrackRemoveCues(track, cues);
</del><ins>+        parent-&gt;textTrackRemoveCues(track, cues);
</ins><span class="cx"> }
</span><span class="cx">     
</span><span class="cx"> void HTMLTrackElement::textTrackAddCue(TextTrack* track, TextTrackCue&amp; cue)
</span><span class="cx"> {
</span><span class="cx">     if (HTMLMediaElement* parent = mediaElement())
</span><del>-        return parent-&gt;textTrackAddCue(track, cue);
</del><ins>+        parent-&gt;textTrackAddCue(track, cue);
</ins><span class="cx"> }
</span><span class="cx">     
</span><span class="cx"> void HTMLTrackElement::textTrackRemoveCue(TextTrack* track, TextTrackCue&amp; cue)
</span><span class="cx"> {
</span><span class="cx">     if (HTMLMediaElement* parent = mediaElement())
</span><del>-        return parent-&gt;textTrackRemoveCue(track, cue);
</del><ins>+        parent-&gt;textTrackRemoveCue(track, cue);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> HTMLMediaElement* HTMLTrackElement::mediaElement() const
</span><span class="cx"> {
</span><del>-    Element* parent = parentElement();
-    if (is&lt;HTMLMediaElement&gt;(parent))
-        return downcast&lt;HTMLMediaElement&gt;(parentNode());
-
-    return nullptr;
</del><ins>+    auto* parent = parentElement();
+    if (!is&lt;HTMLMediaElement&gt;(parent))
+        return nullptr;
+    return downcast&lt;HTMLMediaElement&gt;(parent);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTrackElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTrackElement.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTrackElement.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLTrackElement.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -49,7 +49,7 @@
</span><span class="cx">     ReadyState readyState();
</span><span class="cx">     void setReadyState(ReadyState);
</span><span class="cx"> 
</span><del>-    TextTrack* track();
</del><ins>+    LoadableTextTrack&amp; track();
</ins><span class="cx"> 
</span><span class="cx">     void scheduleLoad();
</span><span class="cx"> 
</span><span class="lines">@@ -81,7 +81,6 @@
</span><span class="cx">     void textTrackAddCue(TextTrack*, TextTrackCue&amp;) final;
</span><span class="cx">     void textTrackRemoveCue(TextTrack*, TextTrackCue&amp;) final;
</span><span class="cx"> 
</span><del>-    LoadableTextTrack&amp; ensureTrack();
</del><span class="cx">     bool canLoadURL(const URL&amp;);
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;LoadableTextTrack&gt; m_track;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLVideoElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLVideoElement.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLVideoElement.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLVideoElement.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -295,19 +295,18 @@
</span><span class="cx">     return player()-&gt;nativeImageForCurrentTime();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLVideoElement::webkitEnterFullscreen(ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; HTMLVideoElement::webkitEnterFullscreen()
</ins><span class="cx"> {
</span><span class="cx">     if (isFullscreen())
</span><del>-        return;
</del><ins>+        return { };
</ins><span class="cx"> 
</span><span class="cx">     // Generate an exception if this isn't called in response to a user gesture, or if the 
</span><span class="cx">     // element does not support fullscreen.
</span><del>-    if (!mediaSession().fullscreenPermitted(*this) || !supportsFullscreen(HTMLMediaElementEnums::VideoFullscreenModeStandard)) {
-        ec = INVALID_STATE_ERR;
-        return;
-    }
</del><ins>+    if (!mediaSession().fullscreenPermitted(*this) || !supportsFullscreen(HTMLMediaElementEnums::VideoFullscreenModeStandard))
+        return Exception { INVALID_STATE_ERR };
</ins><span class="cx"> 
</span><span class="cx">     enterFullscreen();
</span><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLVideoElement::webkitExitFullscreen()
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLVideoElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLVideoElement.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLVideoElement.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLVideoElement.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -42,17 +42,12 @@
</span><span class="cx">     WEBCORE_EXPORT unsigned videoWidth() const;
</span><span class="cx">     WEBCORE_EXPORT unsigned videoHeight() const;
</span><span class="cx"> 
</span><del>-    WEBCORE_EXPORT void webkitEnterFullscreen(ExceptionCode&amp;);
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;void&gt; webkitEnterFullscreen();
</ins><span class="cx">     WEBCORE_EXPORT void webkitExitFullscreen();
</span><span class="cx">     WEBCORE_EXPORT bool webkitSupportsFullscreen();
</span><span class="cx">     WEBCORE_EXPORT bool webkitDisplayingFullscreen();
</span><span class="cx"> 
</span><span class="cx">     void ancestorWillEnterFullscreen() final;
</span><del>-    
-    // FIXME: Maintain &quot;FullScreen&quot; capitalization scheme for backwards compatibility.
-    // https://bugs.webkit.org/show_bug.cgi?id=36081
-    void webkitEnterFullScreen(ExceptionCode&amp; ec) { webkitEnterFullscreen(ec); }
-    void webkitExitFullScreen() { webkitExitFullscreen(); }
</del><span class="cx"> 
</span><span class="cx"> #if ENABLE(WIRELESS_PLAYBACK_TARGET)
</span><span class="cx">     bool webkitWirelessVideoPlaybackDisabled() const;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLVideoElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLVideoElement.idl (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLVideoElement.idl        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/HTMLVideoElement.idl        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -37,12 +37,13 @@
</span><span class="cx">     readonly attribute boolean webkitSupportsFullscreen;
</span><span class="cx">     readonly attribute boolean webkitDisplayingFullscreen;
</span><span class="cx"> 
</span><del>-    [MayThrowLegacyException] void webkitEnterFullscreen();
</del><ins>+    [MayThrowException] void webkitEnterFullscreen();
</ins><span class="cx">     void webkitExitFullscreen();
</span><span class="cx"> 
</span><del>-    // Note the different capitalization of the &quot;S&quot; in FullScreen.
-    [MayThrowLegacyException] void webkitEnterFullScreen();
-    void webkitExitFullScreen();
</del><ins>+    // Maintain &quot;FullScreen&quot; capitalization scheme for backwards compatibility.
+    // https://bugs.webkit.org/show_bug.cgi?id=36081
+    [ImplementedAs=webkitEnterFullscreen, MayThrowException] void webkitEnterFullScreen();
+    [ImplementedAs=webkitExitFullscreen] void webkitExitFullScreen();
</ins><span class="cx"> 
</span><span class="cx">     [Conditional=WIRELESS_PLAYBACK_TARGET] attribute boolean webkitWirelessVideoPlaybackDisabled;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlImageDatacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/ImageData.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/ImageData.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/ImageData.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -36,20 +36,16 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-RefPtr&lt;ImageData&gt; ImageData::create(unsigned sw, unsigned sh, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;Ref&lt;ImageData&gt;&gt; ImageData::create(unsigned sw, unsigned sh)
</ins><span class="cx"> {
</span><del>-    if (!sw || !sh) {
-        ec = INDEX_SIZE_ERR;
-        return nullptr;
-    }
</del><ins>+    if (!sw || !sh)
+        return Exception { INDEX_SIZE_ERR };
</ins><span class="cx"> 
</span><span class="cx">     Checked&lt;int, RecordOverflow&gt; dataSize = 4;
</span><span class="cx">     dataSize *= sw;
</span><span class="cx">     dataSize *= sh;
</span><del>-    if (dataSize.hasOverflowed()) {
-        ec = TypeError;
-        return nullptr;
-    }
</del><ins>+    if (dataSize.hasOverflowed())
+        return Exception { TypeError }; // FIXME: Seems a peculiar choice of exception here.
</ins><span class="cx"> 
</span><span class="cx">     IntSize size(sw, sh);
</span><span class="cx">     auto data = adoptRef(*new ImageData(size));
</span><span class="lines">@@ -76,37 +72,28 @@
</span><span class="cx">     if (dataSize.hasOverflowed())
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><del>-    if (dataSize.unsafeGet() &lt; 0
-        || static_cast&lt;unsigned&gt;(dataSize.unsafeGet()) &gt; byteArray-&gt;length())
</del><ins>+    if (dataSize.unsafeGet() &lt; 0 || static_cast&lt;unsigned&gt;(dataSize.unsafeGet()) &gt; byteArray-&gt;length())
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     return adoptRef(*new ImageData(size, WTFMove(byteArray)));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;ImageData&gt; ImageData::create(Ref&lt;Uint8ClampedArray&gt;&amp;&amp; byteArray, unsigned sw, unsigned sh, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;RefPtr&lt;ImageData&gt;&gt; ImageData::create(Ref&lt;Uint8ClampedArray&gt;&amp;&amp; byteArray, unsigned sw, unsigned sh)
</ins><span class="cx"> {
</span><span class="cx">     unsigned length = byteArray-&gt;length();
</span><del>-    if (!length || length % 4 != 0) {
-        ec = INVALID_STATE_ERR;
-        return nullptr;
-    }
</del><ins>+    if (!length || length % 4 != 0)
+        return Exception { INVALID_STATE_ERR };
</ins><span class="cx"> 
</span><del>-    if (!sw) {
-        ec = INDEX_SIZE_ERR;
-        return nullptr;
-    }
</del><ins>+    if (!sw)
+        return Exception { INDEX_SIZE_ERR };
</ins><span class="cx"> 
</span><span class="cx">     length /= 4;
</span><del>-    if (length % sw != 0) {
-        ec = INVALID_STATE_ERR;
-        return nullptr;
-    }
</del><ins>+    if (length % sw != 0)
+        return Exception { INVALID_STATE_ERR };
</ins><span class="cx"> 
</span><span class="cx">     unsigned height = length / sw;
</span><del>-    if (sh &amp;&amp; sh != height) {
-        ec = INDEX_SIZE_ERR;
-        return nullptr;
-    }
</del><ins>+    if (sh &amp;&amp; sh != height)
+        return Exception { INDEX_SIZE_ERR };
</ins><span class="cx"> 
</span><span class="cx">     return create(IntSize(sw, height), WTFMove(byteArray));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlImageDatah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/ImageData.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/ImageData.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/ImageData.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -26,13 +26,11 @@
</span><span class="cx">  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef ImageData_h
-#define ImageData_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><ins>+#include &quot;ExceptionOr.h&quot;
</ins><span class="cx"> #include &quot;IntSize.h&quot;
</span><span class="cx"> #include &lt;runtime/Uint8ClampedArray.h&gt;
</span><del>-#include &lt;wtf/RefCounted.h&gt;
-#include &lt;wtf/RefPtr.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -40,10 +38,10 @@
</span><span class="cx"> 
</span><span class="cx"> class ImageData : public RefCounted&lt;ImageData&gt; {
</span><span class="cx"> public:
</span><del>-    static RefPtr&lt;ImageData&gt; create(unsigned sw, unsigned sh, ExceptionCode&amp;);
</del><ins>+    static ExceptionOr&lt;Ref&lt;ImageData&gt;&gt; create(unsigned sw, unsigned sh);
</ins><span class="cx">     static RefPtr&lt;ImageData&gt; create(const IntSize&amp;);
</span><span class="cx">     static RefPtr&lt;ImageData&gt; create(const IntSize&amp;, Ref&lt;Uint8ClampedArray&gt;&amp;&amp;);
</span><del>-    static RefPtr&lt;ImageData&gt; create(Ref&lt;Uint8ClampedArray&gt;&amp;&amp;, unsigned sw, unsigned sh, ExceptionCode&amp;);
</del><ins>+    static ExceptionOr&lt;RefPtr&lt;ImageData&gt;&gt; create(Ref&lt;Uint8ClampedArray&gt;&amp;&amp;, unsigned sw, unsigned sh);
</ins><span class="cx"> 
</span><span class="cx">     IntSize size() const { return m_size; }
</span><span class="cx">     int width() const { return m_size.width(); }
</span><span class="lines">@@ -60,5 +58,3 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><del>-
-#endif // ImageData_h
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlImageDataidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/ImageData.idl (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/ImageData.idl        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/ImageData.idl        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx"> [
</span><span class="cx">     Constructor(Uint8ClampedArray data, unsigned long sw, optional unsigned long sh = 0),
</span><span class="cx">     Constructor(unsigned long sw, unsigned long sh),
</span><del>-    ConstructorMayThrowLegacyException,
</del><ins>+    ConstructorMayThrowException,
</ins><span class="cx">     CustomToJSObject,
</span><span class="cx">     Exposed=(Window,Worker),
</span><span class="cx">     ImplementationLacksVTable,
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/InputType.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/InputType.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/InputType.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -227,9 +227,9 @@
</span><span class="cx">     return DateComponents::invalidMilliseconds();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InputType::setValueAsDate(double, ExceptionCode&amp; ec) const
</del><ins>+ExceptionOr&lt;void&gt; InputType::setValueAsDate(double) const
</ins><span class="cx"> {
</span><del>-    ec = INVALID_STATE_ERR;
</del><ins>+    return Exception { INVALID_STATE_ERR };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> double InputType::valueAsDouble() const
</span><span class="lines">@@ -237,14 +237,14 @@
</span><span class="cx">     return std::numeric_limits&lt;double&gt;::quiet_NaN();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InputType::setValueAsDouble(double doubleValue, TextFieldEventBehavior eventBehavior, ExceptionCode&amp; ec) const
</del><ins>+ExceptionOr&lt;void&gt; InputType::setValueAsDouble(double doubleValue, TextFieldEventBehavior eventBehavior) const
</ins><span class="cx"> {
</span><del>-    setValueAsDecimal(Decimal::fromDouble(doubleValue), eventBehavior, ec);
</del><ins>+    return setValueAsDecimal(Decimal::fromDouble(doubleValue), eventBehavior);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InputType::setValueAsDecimal(const Decimal&amp;, TextFieldEventBehavior, ExceptionCode&amp; ec) const
</del><ins>+ExceptionOr&lt;void&gt; InputType::setValueAsDecimal(const Decimal&amp;, TextFieldEventBehavior) const
</ins><span class="cx"> {
</span><del>-    ec = INVALID_STATE_ERR;
</del><ins>+    return Exception { INVALID_STATE_ERR };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool InputType::supportsValidation() const
</span><span class="lines">@@ -988,30 +988,22 @@
</span><span class="cx">     return 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InputType::applyStep(int count, AnyStepHandling anyStepHandling, TextFieldEventBehavior eventBehavior, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; InputType::applyStep(int count, AnyStepHandling anyStepHandling, TextFieldEventBehavior eventBehavior)
</ins><span class="cx"> {
</span><span class="cx">     StepRange stepRange(createStepRange(anyStepHandling));
</span><del>-    if (!stepRange.hasStep()) {
-        ec = INVALID_STATE_ERR;
-        return;
-    }
</del><ins>+    if (!stepRange.hasStep())
+        return Exception { INVALID_STATE_ERR };
</ins><span class="cx"> 
</span><span class="cx">     const Decimal current = parseToNumberOrNaN(element().value());
</span><del>-    if (!current.isFinite()) {
-        ec = INVALID_STATE_ERR;
-        return;
-    }
</del><ins>+    if (!current.isFinite())
+        return Exception { INVALID_STATE_ERR };
</ins><span class="cx">     Decimal newValue = current + stepRange.step() * count;
</span><del>-    if (!newValue.isFinite()) {
-        ec = INVALID_STATE_ERR;
-        return;
-    }
</del><ins>+    if (!newValue.isFinite())
+        return Exception { INVALID_STATE_ERR };
</ins><span class="cx"> 
</span><span class="cx">     const Decimal acceptableErrorValue = stepRange.acceptableError();
</span><del>-    if (newValue - stepRange.minimum() &lt; -acceptableErrorValue) {
-        ec = INVALID_STATE_ERR;
-        return;
-    }
</del><ins>+    if (newValue - stepRange.minimum() &lt; -acceptableErrorValue)
+        return Exception { INVALID_STATE_ERR };
</ins><span class="cx">     if (newValue &lt; stepRange.minimum())
</span><span class="cx">         newValue = stepRange.minimum();
</span><span class="cx"> 
</span><span class="lines">@@ -1018,17 +1010,19 @@
</span><span class="cx">     if (!equalLettersIgnoringASCIICase(element().attributeWithoutSynchronization(stepAttr), &quot;any&quot;))
</span><span class="cx">         newValue = stepRange.alignValueForStep(current, newValue);
</span><span class="cx"> 
</span><del>-    if (newValue - stepRange.maximum() &gt; acceptableErrorValue) {
-        ec = INVALID_STATE_ERR;
-        return;
-    }
</del><ins>+    if (newValue - stepRange.maximum() &gt; acceptableErrorValue)
+        return Exception { INVALID_STATE_ERR };
</ins><span class="cx">     if (newValue &gt; stepRange.maximum())
</span><span class="cx">         newValue = stepRange.maximum();
</span><span class="cx"> 
</span><del>-    setValueAsDecimal(newValue, eventBehavior, ec);
</del><ins>+    auto result = setValueAsDecimal(newValue, eventBehavior);
+    if (result.hasException())
+        return result;
</ins><span class="cx"> 
</span><span class="cx">     if (AXObjectCache* cache = element().document().existingAXObjectCache())
</span><span class="cx">         cache-&gt;postNotification(&amp;element(), AXObjectCache::AXValueChanged);
</span><ins>+
+    return result;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool InputType::getAllowedValueStep(Decimal* step) const
</span><span class="lines">@@ -1044,13 +1038,11 @@
</span><span class="cx">     return StepRange();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InputType::stepUp(int n, ExceptionCode&amp; ec)
</del><ins>+ExceptionOr&lt;void&gt; InputType::stepUp(int n)
</ins><span class="cx"> {
</span><del>-    if (!isSteppable()) {
-        ec = INVALID_STATE_ERR;
-        return;
-    }
-    applyStep(n, RejectAny, DispatchNoEvent, ec);
</del><ins>+    if (!isSteppable())
+        return Exception { INVALID_STATE_ERR };
+    return applyStep(n, RejectAny, DispatchNoEvent);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InputType::stepUpFromRenderer(int n)
</span><span class="lines">@@ -1124,10 +1116,10 @@
</span><span class="cx">             current = stepRange.minimum() - nextDiff;
</span><span class="cx">         if (current &gt; stepRange.maximum() - nextDiff)
</span><span class="cx">             current = stepRange.maximum() - nextDiff;
</span><del>-        setValueAsDecimal(current, DispatchNoEvent, IGNORE_EXCEPTION);
</del><ins>+        setValueAsDecimal(current, DispatchNoEvent);
</ins><span class="cx">     }
</span><span class="cx">     if ((sign &gt; 0 &amp;&amp; current &lt; stepRange.minimum()) || (sign &lt; 0 &amp;&amp; current &gt; stepRange.maximum()))
</span><del>-        setValueAsDecimal(sign &gt; 0 ? stepRange.minimum() : stepRange.maximum(), DispatchInputAndChangeEvent, IGNORE_EXCEPTION);
</del><ins>+        setValueAsDecimal(sign &gt; 0 ? stepRange.minimum() : stepRange.maximum(), DispatchInputAndChangeEvent);
</ins><span class="cx">     else {
</span><span class="cx">         if (stepMismatch(element().value())) {
</span><span class="cx">             ASSERT(!step.isZero());
</span><span class="lines">@@ -1145,13 +1137,13 @@
</span><span class="cx">             if (newValue &gt; stepRange.maximum())
</span><span class="cx">                 newValue = stepRange.maximum();
</span><span class="cx"> 
</span><del>-            setValueAsDecimal(newValue, n == 1 || n == -1 ? DispatchInputAndChangeEvent : DispatchNoEvent, IGNORE_EXCEPTION);
</del><ins>+            setValueAsDecimal(newValue, n == 1 || n == -1 ? DispatchInputAndChangeEvent : DispatchNoEvent);
</ins><span class="cx">             if (n &gt; 1)
</span><del>-                applyStep(n - 1, AnyIsDefaultStep, DispatchInputAndChangeEvent, IGNORE_EXCEPTION);
</del><ins>+                applyStep(n - 1, AnyIsDefaultStep, DispatchInputAndChangeEvent);
</ins><span class="cx">             else if (n &lt; -1)
</span><del>-                applyStep(n + 1, AnyIsDefaultStep, DispatchInputAndChangeEvent, IGNORE_EXCEPTION);
</del><ins>+                applyStep(n + 1, AnyIsDefaultStep, DispatchInputAndChangeEvent);
</ins><span class="cx">         } else
</span><del>-            applyStep(n, AnyIsDefaultStep, DispatchInputAndChangeEvent, IGNORE_EXCEPTION);
</del><ins>+            applyStep(n, AnyIsDefaultStep, DispatchInputAndChangeEvent);
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlInputTypeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/InputType.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/InputType.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/InputType.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -30,8 +30,7 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef InputType_h
-#define InputType_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #include &quot;HTMLTextFormControlElement.h&quot;
</span><span class="cx"> #include &quot;RenderPtr.h&quot;
</span><span class="lines">@@ -131,10 +130,10 @@
</span><span class="cx">     virtual String fallbackValue() const; // Checked last, if both internal storage and value attribute are missing.
</span><span class="cx">     virtual String defaultValue() const; // Checked after even fallbackValue, only when the valueWithDefault function is called.
</span><span class="cx">     virtual double valueAsDate() const;
</span><del>-    virtual void setValueAsDate(double, ExceptionCode&amp;) const;
</del><ins>+    virtual ExceptionOr&lt;void&gt; setValueAsDate(double) const;
</ins><span class="cx">     virtual double valueAsDouble() const;
</span><del>-    virtual void setValueAsDouble(double, TextFieldEventBehavior, ExceptionCode&amp;) const;
-    virtual void setValueAsDecimal(const Decimal&amp;, TextFieldEventBehavior, ExceptionCode&amp;) const;
</del><ins>+    virtual ExceptionOr&lt;void&gt; setValueAsDouble(double, TextFieldEventBehavior) const;
+    virtual ExceptionOr&lt;void&gt; setValueAsDecimal(const Decimal&amp;, TextFieldEventBehavior) const;
</ins><span class="cx"> 
</span><span class="cx">     // Validation functions.
</span><span class="cx"> 
</span><span class="lines">@@ -157,7 +156,7 @@
</span><span class="cx">     bool stepMismatch(const String&amp;) const;
</span><span class="cx">     virtual bool getAllowedValueStep(Decimal*) const;
</span><span class="cx">     virtual StepRange createStepRange(AnyStepHandling) const;
</span><del>-    virtual void stepUp(int, ExceptionCode&amp;);
</del><ins>+    virtual ExceptionOr&lt;void&gt; stepUp(int);
</ins><span class="cx">     virtual void stepUpFromRenderer(int);
</span><span class="cx">     virtual String badInputText() const;
</span><span class="cx">     virtual String typeMismatchText() const;
</span><span class="lines">@@ -318,7 +317,7 @@
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     // Helper for stepUp()/stepDown(). Adds step value * count to the current value.
</span><del>-    void applyStep(int count, AnyStepHandling, TextFieldEventBehavior, ExceptionCode&amp;);
</del><ins>+    ExceptionOr&lt;void&gt; applyStep(int count, AnyStepHandling, TextFieldEventBehavior);
</ins><span class="cx"> 
</span><span class="cx">     // Raw pointer because the HTMLInputElement object owns this InputType object.
</span><span class="cx">     HTMLInputElement&amp; m_element;
</span><span class="lines">@@ -325,5 +324,3 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><del>-
-#endif
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlMediaControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/MediaController.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/MediaController.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/MediaController.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -65,25 +65,23 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void MediaController::addMediaElement(HTMLMediaElement* element)
</del><ins>+void MediaController::addMediaElement(HTMLMediaElement&amp; element)
</ins><span class="cx"> {
</span><del>-    ASSERT(element);
-    ASSERT(!m_mediaElements.contains(element));
</del><ins>+    ASSERT(!m_mediaElements.contains(&amp;element));
</ins><span class="cx"> 
</span><del>-    m_mediaElements.append(element);
</del><ins>+    m_mediaElements.append(&amp;element);
</ins><span class="cx">     bringElementUpToSpeed(element);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void MediaController::removeMediaElement(HTMLMediaElement* element)
</del><ins>+void MediaController::removeMediaElement(HTMLMediaElement&amp; element)
</ins><span class="cx"> {
</span><del>-    ASSERT(element);
-    ASSERT(m_mediaElements.contains(element));
-    m_mediaElements.remove(m_mediaElements.find(element));
</del><ins>+    ASSERT(m_mediaElements.contains(&amp;element));
+    m_mediaElements.remove(m_mediaElements.find(&amp;element));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool MediaController::containsMediaElement(HTMLMediaElement* element) const
</del><ins>+bool MediaController::containsMediaElement(HTMLMediaElement&amp; element) const
</ins><span class="cx"> {
</span><del>-    return m_mediaElements.contains(element);
</del><ins>+    return m_mediaElements.contains(&amp;element);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;TimeRanges&gt; MediaController::buffered() const
</span><span class="lines">@@ -250,18 +248,16 @@
</span><span class="cx">     scheduleEvent(eventNames().ratechangeEvent);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void MediaController::setVolume(double level, ExceptionCode&amp; code)
</del><ins>+ExceptionOr&lt;void&gt; MediaController::setVolume(double level)
</ins><span class="cx"> {
</span><span class="cx">     if (m_volume == level)
</span><del>-        return;
</del><ins>+        return { };
</ins><span class="cx"> 
</span><span class="cx">     // If the new value is outside the range 0.0 to 1.0 inclusive, then, on setting, an 
</span><span class="cx">     // IndexSizeError exception must be raised instead.
</span><del>-    if (level &lt; 0 || level &gt; 1) {
-        code = INDEX_SIZE_ERR;
-        return;
-    }
-        
</del><ins>+    if (!(level &gt;= 0 &amp;&amp; level &lt;= 1))
+        return Exception { INDEX_SIZE_ERR };
+
</ins><span class="cx">     // The volume attribute, on setting, if the new value is in the range 0.0 to 1.0 inclusive,
</span><span class="cx">     // must set the MediaController's media controller volume multiplier to the new value
</span><span class="cx">     m_volume = level;
</span><span class="lines">@@ -271,6 +267,8 @@
</span><span class="cx"> 
</span><span class="cx">     for (auto&amp; mediaElement : m_mediaElements)
</span><span class="cx">         mediaElement-&gt;updateVolume();
</span><ins>+
+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaController::setMuted(bool flag)
</span><span class="lines">@@ -477,15 +475,14 @@
</span><span class="cx">         mediaElement-&gt;updatePlayState();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void MediaController::bringElementUpToSpeed(HTMLMediaElement* element)
</del><ins>+void MediaController::bringElementUpToSpeed(HTMLMediaElement&amp; element)
</ins><span class="cx"> {
</span><del>-    ASSERT(element);
-    ASSERT(m_mediaElements.contains(element));
</del><ins>+    ASSERT(m_mediaElements.contains(&amp;element));
</ins><span class="cx"> 
</span><span class="cx">     // When the user agent is to bring a media element up to speed with its new media controller,
</span><span class="cx">     // it must seek that media element to the MediaController's media controller position relative
</span><span class="cx">     // to the media element's timeline.
</span><del>-    element-&gt;seekInternal(MediaTime::createWithDouble(currentTime()));
</del><ins>+    element.seekInternal(MediaTime::createWithDouble(currentTime()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool MediaController::isBlocked() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlMediaControllerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/MediaController.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/MediaController.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/MediaController.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -23,8 +23,7 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef MediaController_h
-#define MediaController_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(VIDEO)
</span><span class="cx"> 
</span><span class="lines">@@ -32,7 +31,6 @@
</span><span class="cx"> #include &quot;EventTarget.h&quot;
</span><span class="cx"> #include &quot;MediaControllerInterface.h&quot;
</span><span class="cx"> #include &quot;Timer.h&quot;
</span><del>-#include &lt;wtf/RefCounted.h&gt;
</del><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -39,8 +37,6 @@
</span><span class="cx"> 
</span><span class="cx"> class Clock;
</span><span class="cx"> class HTMLMediaElement;
</span><del>-class Event;
-class ScriptExecutionContext;
</del><span class="cx"> 
</span><span class="cx"> class MediaController final : public RefCounted&lt;MediaController&gt;, public MediaControllerInterface, public EventTargetWithInlineData {
</span><span class="cx"> public:
</span><span class="lines">@@ -47,80 +43,44 @@
</span><span class="cx">     static Ref&lt;MediaController&gt; create(ScriptExecutionContext&amp;);
</span><span class="cx">     virtual ~MediaController();
</span><span class="cx"> 
</span><del>-    void addMediaElement(HTMLMediaElement*);
-    void removeMediaElement(HTMLMediaElement*);
-    bool containsMediaElement(HTMLMediaElement*) const;
</del><ins>+    Ref&lt;TimeRanges&gt; buffered() const final;
+    Ref&lt;TimeRanges&gt; seekable() const final;
+    Ref&lt;TimeRanges&gt; played() final;
</ins><span class="cx"> 
</span><del>-    const String&amp; mediaGroup() const { return m_mediaGroup; }
-    
-    Ref&lt;TimeRanges&gt; buffered() const override;
-    Ref&lt;TimeRanges&gt; seekable() const override;
-    Ref&lt;TimeRanges&gt; played() override;
-    
-    double duration() const override;
-    double currentTime() const override;
-    void setCurrentTime(double) override;
-    
-    bool paused() const override { return m_paused; }
-    void play() override;
-    void pause() override;
</del><ins>+    double duration() const final;
+    double currentTime() const final;
+    void setCurrentTime(double) final;
+
+    bool paused() const final { return m_paused; }
+    void play() final;
+    void pause() final;
</ins><span class="cx">     void unpause();
</span><ins>+
+    double defaultPlaybackRate() const final { return m_defaultPlaybackRate; }
+    void setDefaultPlaybackRate(double) final;
</ins><span class="cx">     
</span><del>-    double defaultPlaybackRate() const override { return m_defaultPlaybackRate; }
-    void setDefaultPlaybackRate(double) override;
-    
-    double playbackRate() const override;
-    void setPlaybackRate(double) override;
-    
-    double volume() const override { return m_volume; }
-    void setVolume(double, ExceptionCode&amp;) override;
-    
-    bool muted() const override { return m_muted; }
-    void setMuted(bool) override;
-    
-    ReadyState readyState() const override { return m_readyState; }
</del><ins>+    double playbackRate() const final;
+    void setPlaybackRate(double) final;
</ins><span class="cx"> 
</span><del>-    enum PlaybackState { WAITING, PLAYING, ENDED };
-    const AtomicString&amp; playbackState() const;
</del><ins>+    double volume() const final { return m_volume; }
+    ExceptionOr&lt;void&gt; setVolume(double) final;
</ins><span class="cx"> 
</span><del>-    bool supportsFullscreen(HTMLMediaElementEnums::VideoFullscreenMode) const override { return false; }
-    bool isFullscreen() const override { return false; }
-    void enterFullscreen() override { }
</del><ins>+    bool muted() const final { return m_muted; }
+    void setMuted(bool) final;
</ins><span class="cx"> 
</span><del>-    bool hasAudio() const override;
-    bool hasVideo() const override;
-    bool hasClosedCaptions() const override;
-    void setClosedCaptionsVisible(bool) override;
-    bool closedCaptionsVisible() const override { return m_closedCaptionsVisible; }
-    
-    bool supportsScanning() const override;
-    
-    void beginScrubbing() override;
-    void endScrubbing() override;
-    void beginScanning(ScanDirection) override;
-    void endScanning() override;
-    
-    bool canPlay() const override;
-    
-    bool isLiveStream() const override;
-    
-    bool hasCurrentSrc() const override;
-    
-    void returnToRealtime() override;
</del><ins>+    const AtomicString&amp; playbackState() const;
</ins><span class="cx"> 
</span><del>-    bool isBlocked() const;
</del><ins>+    using RefCounted::ref;
+    using RefCounted::deref;
</ins><span class="cx"> 
</span><del>-    // EventTarget
-    using RefCounted&lt;MediaController&gt;::ref;
-    using RefCounted&lt;MediaController&gt;::deref;
-
</del><span class="cx"> private:
</span><span class="cx">     explicit MediaController(ScriptExecutionContext&amp;);
</span><ins>+
</ins><span class="cx">     void reportControllerState();
</span><span class="cx">     void updateReadyState();
</span><span class="cx">     void updatePlaybackState();
</span><span class="cx">     void updateMediaElements();
</span><del>-    void bringElementUpToSpeed(HTMLMediaElement*);
</del><ins>+    void bringElementUpToSpeed(HTMLMediaElement&amp;);
</ins><span class="cx">     void scheduleEvent(const AtomicString&amp; eventName);
</span><span class="cx">     void asyncEventTimerFired();
</span><span class="cx">     void clearPositionTimerFired();
</span><span class="lines">@@ -128,14 +88,47 @@
</span><span class="cx">     void scheduleTimeupdateEvent();
</span><span class="cx">     void startTimeupdateTimer();
</span><span class="cx"> 
</span><del>-    // EventTarget
-    void refEventTarget() override { ref(); }
-    void derefEventTarget() override { deref(); }
-    EventTargetInterface eventTargetInterface() const override { return MediaControllerEventTargetInterfaceType; }
-    ScriptExecutionContext* scriptExecutionContext() const override { return &amp;m_scriptExecutionContext; };
</del><ins>+    void refEventTarget() final { ref(); }
+    void derefEventTarget() final { deref(); }
+    EventTargetInterface eventTargetInterface() const final { return MediaControllerEventTargetInterfaceType; }
+    ScriptExecutionContext* scriptExecutionContext() const final { return &amp;m_scriptExecutionContext; };
</ins><span class="cx"> 
</span><ins>+    void addMediaElement(HTMLMediaElement&amp;);
+    void removeMediaElement(HTMLMediaElement&amp;);
+    bool containsMediaElement(HTMLMediaElement&amp;) const;
+
+    const String&amp; mediaGroup() const { return m_mediaGroup; }
+
+    bool supportsFullscreen(HTMLMediaElementEnums::VideoFullscreenMode) const final { return false; }
+    bool isFullscreen() const final { return false; }
+    void enterFullscreen() final { }
+
+    bool hasAudio() const final;
+    bool hasVideo() const final;
+    bool hasClosedCaptions() const final;
+    void setClosedCaptionsVisible(bool) final;
+    bool closedCaptionsVisible() const final { return m_closedCaptionsVisible; }
+
+    bool supportsScanning() const final;
+    void beginScrubbing() final;
+    void endScrubbing() final;
+    void beginScanning(ScanDirection) final;
+    void endScanning() final;
+
+    bool canPlay() const final;
+    bool isLiveStream() const final;
+    bool hasCurrentSrc() const final;
+    bool isBlocked() const;
+
+    void returnToRealtime() final;
+
+    ReadyState readyState() const final { return m_readyState; }
+
+    enum PlaybackState { WAITING, PLAYING, ENDED };
+
</ins><span class="cx">     friend class HTMLMediaElement;
</span><span class="cx">     friend class MediaControllerEventListener;
</span><ins>+
</ins><span class="cx">     Vector&lt;HTMLMediaElement*&gt; m_mediaElements;
</span><span class="cx">     bool m_paused;
</span><span class="cx">     double m_defaultPlaybackRate;
</span><span class="lines">@@ -159,4 +152,3 @@
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><del>-#endif
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlMediaControlleridl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/MediaController.idl (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/MediaController.idl        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/MediaController.idl        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -44,6 +44,6 @@
</span><span class="cx">     attribute unrestricted double defaultPlaybackRate;
</span><span class="cx">     attribute unrestricted double playbackRate;
</span><span class="cx"> 
</span><del>-    [SetterMayThrowLegacyException] attribute unrestricted double volume;
</del><ins>+    [SetterMayThrowException] attribute unrestricted double volume;
</ins><span class="cx">     attribute boolean muted;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlMediaControllerInterfaceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/MediaControllerInterface.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/MediaControllerInterface.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/MediaControllerInterface.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -23,11 +23,11 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef MediaControllerInterface_h
-#define MediaControllerInterface_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(VIDEO)
</span><span class="cx"> 
</span><ins>+#include &quot;ExceptionOr.h&quot;
</ins><span class="cx"> #include &quot;HTMLMediaElementEnums.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -34,8 +34,6 @@
</span><span class="cx"> 
</span><span class="cx"> class TimeRanges;
</span><span class="cx"> 
</span><del>-typedef int ExceptionCode;
-
</del><span class="cx"> class MediaControllerInterface : public HTMLMediaElementEnums {
</span><span class="cx"> public:
</span><span class="cx">     virtual ~MediaControllerInterface() { };
</span><span class="lines">@@ -60,7 +58,7 @@
</span><span class="cx">     virtual void setPlaybackRate(double) = 0;
</span><span class="cx">     
</span><span class="cx">     virtual double volume() const = 0;
</span><del>-    virtual void setVolume(double, ExceptionCode&amp;) = 0;
</del><ins>+    virtual ExceptionOr&lt;void&gt; setVolume(double) = 0;
</ins><span class="cx">     
</span><span class="cx">     virtual bool muted() const = 0;
</span><span class="cx">     virtual void setMuted(bool) = 0;
</span><span class="lines">@@ -84,10 +82,7 @@
</span><span class="cx">     virtual void beginScrubbing() = 0;
</span><span class="cx">     virtual void endScrubbing() = 0;
</span><span class="cx"> 
</span><del>-    enum ScanDirection {
-        Backward,
-        Forward,
-    };
</del><ins>+    enum ScanDirection { Backward, Forward };
</ins><span class="cx">     virtual void beginScanning(ScanDirection) = 0;
</span><span class="cx">     virtual void endScanning() = 0;
</span><span class="cx"> 
</span><span class="lines">@@ -103,4 +98,3 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><del>-#endif
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlNumberInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/NumberInputType.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/NumberInputType.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/NumberInputType.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -57,17 +57,12 @@
</span><span class="cx">     unsigned sizeBeforeDecimalPoint;
</span><span class="cx">     unsigned sizeAfteDecimalPoint;
</span><span class="cx"> 
</span><del>-    RealNumberRenderSize(unsigned before, unsigned after)
-        : sizeBeforeDecimalPoint(before)
-        , sizeAfteDecimalPoint(after)
-    {
-    }
-
</del><span class="cx">     RealNumberRenderSize max(const RealNumberRenderSize&amp; other) const
</span><span class="cx">     {
</span><del>-        return RealNumberRenderSize(
</del><ins>+        return {
</ins><span class="cx">             std::max(sizeBeforeDecimalPoint, other.sizeBeforeDecimalPoint),
</span><del>-            std::max(sizeAfteDecimalPoint, other.sizeAfteDecimalPoint));
</del><ins>+            std::max(sizeAfteDecimalPoint, other.sizeAfteDecimalPoint)
+        };
</ins><span class="cx">     }
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="lines">@@ -78,18 +73,18 @@
</span><span class="cx">     const unsigned sizeOfSign = value.isNegative() ? 1 : 0;
</span><span class="cx">     const int exponent = value.exponent();
</span><span class="cx">     if (exponent &gt;= 0)
</span><del>-        return RealNumberRenderSize(sizeOfSign + sizeOfDigits, 0);
</del><ins>+        return { sizeOfSign + sizeOfDigits, 0 };
</ins><span class="cx"> 
</span><span class="cx">     const int sizeBeforeDecimalPoint = exponent + sizeOfDigits;
</span><span class="cx">     if (sizeBeforeDecimalPoint &gt; 0) {
</span><span class="cx">         // In case of &quot;123.456&quot;
</span><del>-        return RealNumberRenderSize(sizeOfSign + sizeBeforeDecimalPoint, sizeOfDigits - sizeBeforeDecimalPoint);
</del><ins>+        return { sizeOfSign + sizeBeforeDecimalPoint, sizeOfDigits - sizeBeforeDecimalPoint };
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // In case of &quot;0.00012345&quot;
</span><span class="cx">     const unsigned sizeOfZero = 1;
</span><span class="cx">     const unsigned numberOfZeroAfterDecimalPoint = -sizeBeforeDecimalPoint;
</span><del>-    return RealNumberRenderSize(sizeOfSign + sizeOfZero , numberOfZeroAfterDecimalPoint + sizeOfDigits);
</del><ins>+    return { sizeOfSign + sizeOfZero , numberOfZeroAfterDecimalPoint + sizeOfDigits };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> const AtomicString&amp; NumberInputType::formControlType() const
</span><span class="lines">@@ -109,34 +104,24 @@
</span><span class="cx">     return parseToDoubleForNumberType(element().value());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void NumberInputType::setValueAsDouble(double newValue, TextFieldEventBehavior eventBehavior, ExceptionCode&amp; ec) const
</del><ins>+ExceptionOr&lt;void&gt; NumberInputType::setValueAsDouble(double newValue, TextFieldEventBehavior eventBehavior) const
</ins><span class="cx"> {
</span><span class="cx">     // FIXME: We should use numeric_limits&lt;double&gt;::max for number input type.
</span><span class="cx">     const double floatMax = std::numeric_limits&lt;float&gt;::max();
</span><del>-    if (newValue &lt; -floatMax) {
-        ec = INVALID_STATE_ERR;
-        return;
-    }
-    if (newValue &gt; floatMax) {
-        ec = INVALID_STATE_ERR;
-        return;
-    }
</del><ins>+    if (newValue &lt; -floatMax || newValue &gt; floatMax)
+        return Exception { INVALID_STATE_ERR };
</ins><span class="cx">     element().setValue(serializeForNumberType(newValue), eventBehavior);
</span><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void NumberInputType::setValueAsDecimal(const Decimal&amp; newValue, TextFieldEventBehavior eventBehavior, ExceptionCode&amp; ec) const
</del><ins>+ExceptionOr&lt;void&gt; NumberInputType::setValueAsDecimal(const Decimal&amp; newValue, TextFieldEventBehavior eventBehavior) const
</ins><span class="cx"> {
</span><span class="cx">     // FIXME: We should use numeric_limits&lt;double&gt;::max for number input type.
</span><span class="cx">     const Decimal floatMax = Decimal::fromDouble(std::numeric_limits&lt;float&gt;::max());
</span><del>-    if (newValue &lt; -floatMax) {
-        ec = INVALID_STATE_ERR;
-        return;
-    }
-    if (newValue &gt; floatMax) {
-        ec = INVALID_STATE_ERR;
-        return;
-    }
</del><ins>+    if (newValue &lt; -floatMax || newValue &gt; floatMax)
+        return Exception { INVALID_STATE_ERR };
</ins><span class="cx">     element().setValue(serializeForNumberType(newValue), eventBehavior);
</span><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool NumberInputType::typeMismatchFor(const String&amp; value) const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlNumberInputTypeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/NumberInputType.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/NumberInputType.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/NumberInputType.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -28,8 +28,7 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef NumberInputType_h
-#define NumberInputType_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #include &quot;TextFieldInputType.h&quot;
</span><span class="cx"> 
</span><span class="lines">@@ -40,32 +39,30 @@
</span><span class="cx">     explicit NumberInputType(HTMLInputElement&amp; element) : TextFieldInputType(element) { }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    const AtomicString&amp; formControlType() const override;
-    void setValue(const String&amp;, bool valueChanged, TextFieldEventBehavior) override;
-    double valueAsDouble() const override;
-    void setValueAsDouble(double, TextFieldEventBehavior, ExceptionCode&amp;) const override;
-    void setValueAsDecimal(const Decimal&amp;, TextFieldEventBehavior, ExceptionCode&amp;) const override;
-    bool typeMismatchFor(const String&amp;) const override;
-    bool typeMismatch() const override;
-    bool sizeShouldIncludeDecoration(int defaultSize, int&amp; preferredSize) const override;
-    float decorationWidth() const override;
-    bool isSteppable() const override;
-    StepRange createStepRange(AnyStepHandling) const override;
-    void handleKeydownEvent(KeyboardEvent&amp;) override;
-    Decimal parseToNumber(const String&amp;, const Decimal&amp;) const override;
-    String serialize(const Decimal&amp;) const override;
-    String localizeValue(const String&amp;) const override;
-    String visibleValue() const override;
-    String convertFromVisibleValue(const String&amp;) const override;
-    String sanitizeValue(const String&amp;) const override;
-    bool hasBadInput() const override;
-    String badInputText() const override;
-    bool supportsPlaceholder() const override;
-    bool isNumberField() const override;
-    void minOrMaxAttributeChanged() override;
-    void stepAttributeChanged() override;
</del><ins>+    const AtomicString&amp; formControlType() const final;
+    void setValue(const String&amp;, bool valueChanged, TextFieldEventBehavior) final;
+    double valueAsDouble() const final;
+    ExceptionOr&lt;void&gt; setValueAsDouble(double, TextFieldEventBehavior) const final;
+    ExceptionOr&lt;void&gt; setValueAsDecimal(const Decimal&amp;, TextFieldEventBehavior) const final;
+    bool typeMismatchFor(const String&amp;) const final;
+    bool typeMismatch() const final;
+    bool sizeShouldIncludeDecoration(int defaultSize, int&amp; preferredSize) const final;
+    float decorationWidth() const final;
+    bool isSteppable() const final;
+    StepRange createStepRange(AnyStepHandling) const final;
+    void handleKeydownEvent(KeyboardEvent&amp;) final;
+    Decimal parseToNumber(const String&amp;, const Decimal&amp;) const final;
+    String serialize(const Decimal&amp;) const final;
+    String localizeValue(const String&amp;) const final;
+    String visibleValue() const final;
+    String convertFromVisibleValue(const String&amp;) const final;
+    String sanitizeValue(const String&amp;) const final;
+    bool hasBadInput() const final;
+    String badInputText() const final;
+    bool supportsPlaceholder() const final;
+    bool isNumberField() const final;
+    void minOrMaxAttributeChanged() final;
+    void stepAttributeChanged() final;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><del>-
-#endif // NumberInputType_h
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlRangeInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/RangeInputType.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/RangeInputType.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/RangeInputType.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -77,9 +77,6 @@
</span><span class="cx"> 
</span><span class="cx"> RangeInputType::RangeInputType(HTMLInputElement&amp; element)
</span><span class="cx">     : InputType(element)
</span><del>-#if ENABLE(DATALIST_ELEMENT)
-    , m_tickMarkValuesDirty(true)
-#endif
</del><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -98,9 +95,10 @@
</span><span class="cx">     return parseToDoubleForNumberType(element().value());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RangeInputType::setValueAsDecimal(const Decimal&amp; newValue, TextFieldEventBehavior eventBehavior, ExceptionCode&amp;) const
</del><ins>+ExceptionOr&lt;void&gt; RangeInputType::setValueAsDecimal(const Decimal&amp; newValue, TextFieldEventBehavior eventBehavior) const
</ins><span class="cx"> {
</span><span class="cx">     element().setValue(serialize(newValue), eventBehavior);
</span><ins>+    return { };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool RangeInputType::typeMismatchFor(const String&amp; value) const
</span><span class="lines">@@ -241,7 +239,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (newValue != current) {
</span><span class="cx">         EventQueueScope scope;
</span><del>-        setValueAsDecimal(newValue, DispatchInputAndChangeEvent, IGNORE_EXCEPTION);
</del><ins>+        setValueAsDecimal(newValue, DispatchInputAndChangeEvent);
</ins><span class="cx"> 
</span><span class="cx">         if (AXObjectCache* cache = element().document().existingAXObjectCache())
</span><span class="cx">             cache-&gt;postNotification(&amp;element(), AXObjectCache::AXValueChanged);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlRangeInputTypeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/RangeInputType.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/RangeInputType.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/RangeInputType.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -28,8 +28,7 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef RangeInputType_h
-#define RangeInputType_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #include &quot;InputType.h&quot;
</span><span class="cx"> 
</span><span class="lines">@@ -42,56 +41,53 @@
</span><span class="cx">     explicit RangeInputType(HTMLInputElement&amp;);
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    bool isRangeControl() const override;
-    const AtomicString&amp; formControlType() const override;
-    double valueAsDouble() const override;
-    void setValueAsDecimal(const Decimal&amp;, TextFieldEventBehavior, ExceptionCode&amp;) const override;
-    bool typeMismatchFor(const String&amp;) const override;
-    bool supportsRequired() const override;
-    StepRange createStepRange(AnyStepHandling) const override;
-    bool isSteppable() const override;
</del><ins>+    bool isRangeControl() const final;
+    const AtomicString&amp; formControlType() const final;
+    double valueAsDouble() const final;
+    ExceptionOr&lt;void&gt; setValueAsDecimal(const Decimal&amp;, TextFieldEventBehavior) const final;
+    bool typeMismatchFor(const String&amp;) const final;
+    bool supportsRequired() const final;
+    StepRange createStepRange(AnyStepHandling) const final;
+    bool isSteppable() const final;
</ins><span class="cx"> #if !PLATFORM(IOS)
</span><del>-    void handleMouseDownEvent(MouseEvent&amp;) override;
</del><ins>+    void handleMouseDownEvent(MouseEvent&amp;) final;
</ins><span class="cx"> #endif
</span><del>-    void handleKeydownEvent(KeyboardEvent&amp;) override;
-    RenderPtr&lt;RenderElement&gt; createInputRenderer(RenderStyle&amp;&amp;) override;
-    void createShadowSubtree() override;
-    Decimal parseToNumber(const String&amp;, const Decimal&amp;) const override;
-    String serialize(const Decimal&amp;) const override;
-    void accessKeyAction(bool sendMouseEvents) override;
-    void minOrMaxAttributeChanged() override;
-    void setValue(const String&amp;, bool valueChanged, TextFieldEventBehavior) override;
-    String fallbackValue() const override;
-    String sanitizeValue(const String&amp; proposedValue) const override;
-    bool shouldRespectListAttribute() override;
-    HTMLElement* sliderThumbElement() const override;
-    HTMLElement* sliderTrackElement() const override;
</del><ins>+    void handleKeydownEvent(KeyboardEvent&amp;) final;
+    RenderPtr&lt;RenderElement&gt; createInputRenderer(RenderStyle&amp;&amp;) final;
+    void createShadowSubtree() final;
+    Decimal parseToNumber(const String&amp;, const Decimal&amp;) const final;
+    String serialize(const Decimal&amp;) const final;
+    void accessKeyAction(bool sendMouseEvents) final;
+    void minOrMaxAttributeChanged() final;
+    void setValue(const String&amp;, bool valueChanged, TextFieldEventBehavior) final;
+    String fallbackValue() const final;
+    String sanitizeValue(const String&amp; proposedValue) const final;
+    bool shouldRespectListAttribute() final;
+    HTMLElement* sliderThumbElement() const final;
+    HTMLElement* sliderTrackElement() const final;
</ins><span class="cx"> 
</span><span class="cx">     SliderThumbElement&amp; typedSliderThumbElement() const;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(DATALIST_ELEMENT)
</span><del>-    void listAttributeTargetChanged() override;
</del><ins>+    void listAttributeTargetChanged() final;
</ins><span class="cx">     void updateTickMarkValues();
</span><del>-    Optional&lt;Decimal&gt; findClosestTickMarkValue(const Decimal&amp;) override;
</del><ins>+    Optional&lt;Decimal&gt; findClosestTickMarkValue(const Decimal&amp;) final;
</ins><span class="cx"> 
</span><del>-    bool m_tickMarkValuesDirty;
</del><ins>+    bool m_tickMarkValuesDirty { true };
</ins><span class="cx">     Vector&lt;Decimal&gt; m_tickMarkValues;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(TOUCH_EVENTS)
</span><del>-    void handleTouchEvent(TouchEvent&amp;) override;
</del><ins>+    void handleTouchEvent(TouchEvent&amp;) final;
+#endif
</ins><span class="cx"> 
</span><del>-#if PLATFORM(IOS)
-    void disabledAttributeChanged() override;
-#else
-#if ENABLE(TOUCH_SLIDER)
-    bool hasTouchEventHandler() const override;
</del><ins>+#if ENABLE(TOUCH_EVENTS) &amp;&amp; PLATFORM(IOS)
+    void disabledAttributeChanged() final;
</ins><span class="cx"> #endif
</span><del>-#endif // PLATFORM(IOS)
-#endif // ENABLE(TOUCH_EVENTS)
</del><span class="cx"> 
</span><ins>+#if ENABLE(TOUCH_EVENTS) &amp;&amp; !PLATFORM(IOS) &amp;&amp; ENABLE(TOUCH_SLIDER)
+    bool hasTouchEventHandler() const final;
+#endif
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><del>-
-#endif // RangeInputType_h
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlTextFieldInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/TextFieldInputType.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/TextFieldInputType.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/TextFieldInputType.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -509,7 +509,7 @@
</span><span class="cx">         m_placeholder = TextControlPlaceholderElement::create(element().document());
</span><span class="cx">         element().userAgentShadowRoot()-&gt;insertBefore(*m_placeholder, m_container ? m_container.get() : innerTextElement(), ASSERT_NO_EXCEPTION);        
</span><span class="cx">     }
</span><del>-    m_placeholder-&gt;setInnerText(placeholderText, ASSERT_NO_EXCEPTION);
</del><ins>+    m_placeholder-&gt;setInnerText(placeholderText);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool TextFieldInputType::appendFormData(FormDataList&amp; list, bool multipart) const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlTimeRangescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/TimeRanges.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/TimeRanges.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/TimeRanges.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -24,11 +24,9 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> #include &quot;config.h&quot;
</span><del>-
</del><span class="cx"> #include &quot;TimeRanges.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ExceptionCode.h&quot;
</span><del>-#include &quot;ExceptionCodePlaceholder.h&quot;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -61,27 +59,21 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-double TimeRanges::start(unsigned index, ExceptionCode&amp; ec) const
</del><ins>+ExceptionOr&lt;double&gt; TimeRanges::start(unsigned index) const
</ins><span class="cx"> {
</span><span class="cx">     bool valid;
</span><span class="cx">     MediaTime result = m_ranges.start(index, valid);
</span><del>-
-    if (!valid) {
-        ec = INDEX_SIZE_ERR;
-        return 0;
-    }
</del><ins>+    if (!valid)
+        return Exception { INDEX_SIZE_ERR };
</ins><span class="cx">     return result.toDouble();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-double TimeRanges::end(unsigned index, ExceptionCode&amp; ec) const 
</del><ins>+ExceptionOr&lt;double&gt; TimeRanges::end(unsigned index) const
</ins><span class="cx"> { 
</span><span class="cx">     bool valid;
</span><span class="cx">     MediaTime result = m_ranges.end(index, valid);
</span><del>-
-    if (!valid) {
-        ec = INDEX_SIZE_ERR;
-        return 0;
-    }
</del><ins>+    if (!valid)
+        return Exception { INDEX_SIZE_ERR };
</ins><span class="cx">     return result.toDouble();
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlTimeRangesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/TimeRanges.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/TimeRanges.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/TimeRanges.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -23,17 +23,13 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef TimeRanges_h
-#define TimeRanges_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><ins>+#include &quot;ExceptionOr.h&quot;
</ins><span class="cx"> #include &quot;PlatformTimeRanges.h&quot;
</span><del>-#include &lt;algorithm&gt;
-#include &lt;wtf/RefCounted.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-typedef int ExceptionCode;
-
</del><span class="cx"> class TimeRanges : public RefCounted&lt;TimeRanges&gt; {
</span><span class="cx"> public:
</span><span class="cx">     WEBCORE_EXPORT static Ref&lt;TimeRanges&gt; create();
</span><span class="lines">@@ -40,8 +36,8 @@
</span><span class="cx">     WEBCORE_EXPORT static Ref&lt;TimeRanges&gt; create(double start, double end);
</span><span class="cx">     static Ref&lt;TimeRanges&gt; create(const PlatformTimeRanges&amp;);
</span><span class="cx"> 
</span><del>-    WEBCORE_EXPORT double start(unsigned index, ExceptionCode&amp;) const;
-    WEBCORE_EXPORT double end(unsigned index, ExceptionCode&amp;) const;
</del><ins>+    WEBCORE_EXPORT ExceptionOr&lt;double&gt; start(unsigned index) const;
+    WEBCORE_EXPORT ExceptionOr&lt;double&gt; end(unsigned index) const;
</ins><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT Ref&lt;TimeRanges&gt; copy() const;
</span><span class="cx">     void invert();
</span><span class="lines">@@ -61,14 +57,11 @@
</span><span class="cx">     PlatformTimeRanges&amp; ranges() { return m_ranges; }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    WEBCORE_EXPORT explicit TimeRanges();
</del><ins>+    WEBCORE_EXPORT TimeRanges();
</ins><span class="cx">     WEBCORE_EXPORT TimeRanges(double start, double end);
</span><del>-    TimeRanges(const PlatformTimeRanges&amp;);
</del><ins>+    explicit TimeRanges(const PlatformTimeRanges&amp;);
</ins><span class="cx"> 
</span><del>-
</del><span class="cx">     PlatformTimeRanges m_ranges;
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><del>-
-#endif
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlTimeRangesidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/TimeRanges.idl (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/TimeRanges.idl        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/TimeRanges.idl        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -25,11 +25,10 @@
</span><span class="cx"> 
</span><span class="cx"> [
</span><span class="cx">     Conditional=VIDEO,
</span><ins>+    ExportMacro=WEBCORE_EXPORT,
</ins><span class="cx">     ImplementationLacksVTable,
</span><del>-    ExportMacro=WEBCORE_EXPORT,
</del><span class="cx"> ] interface TimeRanges {
</span><span class="cx">     readonly attribute unsigned long length;
</span><del>-    [MayThrowLegacyException] unrestricted double start(unsigned long index);
-    [MayThrowLegacyException] unrestricted double end(unsigned long index);
</del><ins>+    [MayThrowException] unrestricted double start(unsigned long index);
+    [MayThrowException] unrestricted double end(unsigned long index);
</ins><span class="cx"> };
</span><del>-
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlURLUtilsidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/URLUtils.idl (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/URLUtils.idl        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/URLUtils.idl        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -24,7 +24,7 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> [NoInterfaceObject] interface URLUtils {
</span><del>-    [SetterMayThrowLegacyException, URL] attribute USVString href;
</del><ins>+    [SetterMayThrowException, URL] attribute USVString href;
</ins><span class="cx"> 
</span><span class="cx">     [NotEnumerable] DOMString toString();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlValidationMessagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/ValidationMessage.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/ValidationMessage.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/ValidationMessage.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -129,7 +129,7 @@
</span><span class="cx">             if (i &lt; lines.size() - 1)
</span><span class="cx">                 m_messageBody-&gt;appendChild(HTMLBRElement::create(document), ASSERT_NO_EXCEPTION);
</span><span class="cx">         } else
</span><del>-            m_messageHeading-&gt;setInnerText(lines[i], ASSERT_NO_EXCEPTION);
</del><ins>+            m_messageHeading-&gt;setInnerText(lines[i]);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     int magnification = document.page() ? document.page()-&gt;settings().validationMessageTimerMagnification() : -1;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlparserHTMLTreeBuildercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -596,7 +596,7 @@
</span><span class="cx">         }
</span><span class="cx">         if (!m_framesetOk)
</span><span class="cx">             return;
</span><del>-        m_tree.openElements().bodyElement().remove(ASSERT_NO_EXCEPTION);
</del><ins>+        m_tree.openElements().bodyElement().remove();
</ins><span class="cx">         m_tree.openElements().popUntil(m_tree.openElements().bodyElement());
</span><span class="cx">         m_tree.openElements().popHTMLBodyElement();
</span><span class="cx">         ASSERT(&amp;m_tree.openElements().top() == &amp;m_tree.openElements().htmlElement());
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowMediaControlElementTypescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/MediaControlElementTypes.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/MediaControlElementTypes.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/shadow/MediaControlElementTypes.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -210,7 +210,7 @@
</span><span class="cx"> 
</span><span class="cx">     double volume = value().toDouble();
</span><span class="cx">     if (volume != mediaController()-&gt;volume())
</span><del>-        mediaController()-&gt;setVolume(volume, ASSERT_NO_EXCEPTION);
</del><ins>+        mediaController()-&gt;setVolume(volume);
</ins><span class="cx">     if (m_clearMutedOnUserInteraction)
</span><span class="cx">         mediaController()-&gt;setMuted(false);
</span><span class="cx">     event.setDefaultHandled();
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowMediaControlElementscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/MediaControlElements.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/MediaControlElements.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/shadow/MediaControlElements.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -167,7 +167,7 @@
</span><span class="cx">     setInlineStyleProperty(CSSPropertyMarginLeft, 0.0, CSSPrimitiveValue::CSS_PX);
</span><span class="cx">     setInlineStyleProperty(CSSPropertyMarginTop, 0.0, CSSPrimitiveValue::CSS_PX);
</span><span class="cx"> 
</span><del>-    classList().add(&quot;dragged&quot;, IGNORE_EXCEPTION);
</del><ins>+    classList().add(&quot;dragged&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaControlPanelElement::resetPosition()
</span><span class="lines">@@ -177,7 +177,7 @@
</span><span class="cx">     removeInlineStyleProperty(CSSPropertyMarginLeft);
</span><span class="cx">     removeInlineStyleProperty(CSSPropertyMarginTop);
</span><span class="cx"> 
</span><del>-    classList().remove(&quot;dragged&quot;, IGNORE_EXCEPTION);
</del><ins>+    classList().remove(&quot;dragged&quot;);
</ins><span class="cx"> 
</span><span class="cx">     m_cumulativeDragOffset.setX(0);
</span><span class="cx">     m_cumulativeDragOffset.setY(0);
</span><span class="lines">@@ -388,13 +388,13 @@
</span><span class="cx"> 
</span><span class="cx">     switch (m_stateBeingDisplayed) {
</span><span class="cx">     case Nothing:
</span><del>-        setInnerText(emptyString(), IGNORE_EXCEPTION);
</del><ins>+        setInnerText(emptyString());
</ins><span class="cx">         break;
</span><span class="cx">     case Loading:
</span><del>-        setInnerText(mediaElementLoadingStateText(), IGNORE_EXCEPTION);
</del><ins>+        setInnerText(mediaElementLoadingStateText());
</ins><span class="cx">         break;
</span><span class="cx">     case LiveBroadcast:
</span><del>-        setInnerText(mediaElementLiveBroadcastStateText(), IGNORE_EXCEPTION);
</del><ins>+        setInnerText(mediaElementLiveBroadcastStateText());
</ins><span class="cx">         break;
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -759,24 +759,24 @@
</span><span class="cx"> 
</span><span class="cx">         if (textTrack == TextTrack::captionMenuAutomaticItem()) {
</span><span class="cx">             if (displayMode == CaptionUserPreferences::Automatic)
</span><del>-                trackItem-&gt;classList().add(selectedClassValue, ASSERT_NO_EXCEPTION);
</del><ins>+                trackItem-&gt;classList().add(selectedClassValue);
</ins><span class="cx">             else
</span><del>-                trackItem-&gt;classList().remove(selectedClassValue, ASSERT_NO_EXCEPTION);
</del><ins>+                trackItem-&gt;classList().remove(selectedClassValue);
</ins><span class="cx">             continue;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (displayMode != CaptionUserPreferences::Automatic &amp;&amp; textTrack-&gt;mode() == TextTrack::Mode::Showing) {
</span><span class="cx">             trackMenuItemSelected = true;
</span><del>-            trackItem-&gt;classList().add(selectedClassValue, ASSERT_NO_EXCEPTION);
</del><ins>+            trackItem-&gt;classList().add(selectedClassValue);
</ins><span class="cx">         } else
</span><del>-            trackItem-&gt;classList().remove(selectedClassValue, ASSERT_NO_EXCEPTION);
</del><ins>+            trackItem-&gt;classList().remove(selectedClassValue);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (offMenuItem) {
</span><span class="cx">         if (displayMode == CaptionUserPreferences::ForcedOnly &amp;&amp; !trackMenuItemSelected)
</span><del>-            offMenuItem-&gt;classList().add(selectedClassValue, ASSERT_NO_EXCEPTION);
</del><ins>+            offMenuItem-&gt;classList().add(selectedClassValue);
</ins><span class="cx">         else
</span><del>-            offMenuItem-&gt;classList().remove(selectedClassValue, ASSERT_NO_EXCEPTION);
</del><ins>+            offMenuItem-&gt;classList().remove(selectedClassValue);
</ins><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="lines">@@ -990,8 +990,7 @@
</span><span class="cx"> void MediaControlFullscreenVolumeMinButtonElement::defaultEventHandler(Event&amp; event)
</span><span class="cx"> {
</span><span class="cx">     if (event.type() == eventNames().clickEvent) {
</span><del>-        ExceptionCode code = 0;
-        mediaController()-&gt;setVolume(0, code);
</del><ins>+        mediaController()-&gt;setVolume(0);
</ins><span class="cx">         event.setDefaultHandled();
</span><span class="cx">     }
</span><span class="cx">     HTMLInputElement::defaultEventHandler(event);
</span><span class="lines">@@ -1016,8 +1015,7 @@
</span><span class="cx"> void MediaControlFullscreenVolumeMaxButtonElement::defaultEventHandler(Event&amp; event)
</span><span class="cx"> {
</span><span class="cx">     if (event.type() == eventNames().clickEvent) {
</span><del>-        ExceptionCode code = 0;
-        mediaController()-&gt;setVolume(1, code);
</del><ins>+        mediaController()-&gt;setVolume(1);
</ins><span class="cx">         event.setDefaultHandled();
</span><span class="cx">     }
</span><span class="cx">     HTMLInputElement::defaultEventHandler(event);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowMediaControlscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/MediaControls.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/MediaControls.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/shadow/MediaControls.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -224,7 +224,7 @@
</span><span class="cx">     if (!page)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_currentTimeDisplay-&gt;setInnerText(page-&gt;theme().formatMediaControlsTime(now), IGNORE_EXCEPTION);
</del><ins>+    m_currentTimeDisplay-&gt;setInnerText(page-&gt;theme().formatMediaControlsTime(now));
</ins><span class="cx">     m_currentTimeDisplay-&gt;setCurrentValue(now);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowMediaControlsApplecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/MediaControlsApple.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/MediaControlsApple.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/shadow/MediaControlsApple.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -380,9 +380,9 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     // Allow the theme to format the time.
</span><del>-    m_currentTimeDisplay-&gt;setInnerText(page-&gt;theme().formatMediaControlsCurrentTime(now, duration), IGNORE_EXCEPTION);
</del><ins>+    m_currentTimeDisplay-&gt;setInnerText(page-&gt;theme().formatMediaControlsCurrentTime(now, duration));
</ins><span class="cx">     m_currentTimeDisplay-&gt;setCurrentValue(now);
</span><del>-    m_timeRemainingDisplay-&gt;setInnerText(page-&gt;theme().formatMediaControlsRemainingTime(now, duration), IGNORE_EXCEPTION);
</del><ins>+    m_timeRemainingDisplay-&gt;setInnerText(page-&gt;theme().formatMediaControlsRemainingTime(now, duration));
</ins><span class="cx">     m_timeRemainingDisplay-&gt;setCurrentValue(now - duration);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackLoadableTextTrackcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/LoadableTextTrack.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/LoadableTextTrack.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/track/LoadableTextTrack.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -37,24 +37,14 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-LoadableTextTrack::LoadableTextTrack(HTMLTrackElement* track, const String&amp; kind, const String&amp; label, const String&amp; language)
-    : TextTrack(&amp;track-&gt;document(), track, kind, emptyString(), label, language, TrackElement)
-    , m_trackElement(track)
</del><ins>+LoadableTextTrack::LoadableTextTrack(HTMLTrackElement&amp; track, const String&amp; kind, const String&amp; label, const String&amp; language)
+    : TextTrack(&amp;track.document(), &amp;track, kind, emptyString(), label, language, TrackElement)
+    , m_trackElement(&amp;track)
</ins><span class="cx">     , m_loadTimer(*this, &amp;LoadableTextTrack::loadTimerFired)
</span><span class="cx">     , m_isDefault(false)
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-LoadableTextTrack::~LoadableTextTrack()
-{
-}
-
-void LoadableTextTrack::clearClient()
-{
-    m_trackElement = 0;
-    TextTrack::clearClient();
-}
-
</del><span class="cx"> void LoadableTextTrack::scheduleLoad(const URL&amp; url)
</span><span class="cx"> {
</span><span class="cx">     if (url == m_url)
</span><span class="lines">@@ -75,12 +65,6 @@
</span><span class="cx"> {
</span><span class="cx">     return m_trackElement;
</span><span class="cx"> }
</span><del>-    
-void LoadableTextTrack::setTrackElement(HTMLTrackElement* element)
-{
-    ASSERT(!m_trackElement || m_trackElement == element);
-    m_trackElement = element;
-}
</del><span class="cx"> 
</span><span class="cx"> void LoadableTextTrack::loadTimerFired()
</span><span class="cx"> {
</span><span class="lines">@@ -144,9 +128,9 @@
</span><span class="cx"> 
</span><span class="cx"> AtomicString LoadableTextTrack::id() const
</span><span class="cx"> {
</span><del>-    if (m_trackElement)
-        return m_trackElement-&gt;getAttribute(&quot;id&quot;);
-    return emptyString();
</del><ins>+    if (!m_trackElement)
+        return emptyAtom;
+    return m_trackElement-&gt;attributeWithoutSynchronization(idAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> size_t LoadableTextTrack::trackElementIndex()
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackLoadableTextTrackh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/LoadableTextTrack.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/LoadableTextTrack.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/track/LoadableTextTrack.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -23,8 +23,7 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef LoadableTextTrack_h
-#define LoadableTextTrack_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(VIDEO_TRACK)
</span><span class="cx"> 
</span><span class="lines">@@ -39,34 +38,30 @@
</span><span class="cx"> 
</span><span class="cx"> class LoadableTextTrack final : public TextTrack, private TextTrackLoaderClient {
</span><span class="cx"> public:
</span><del>-    static Ref&lt;LoadableTextTrack&gt; create(HTMLTrackElement* track, const String&amp; kind, const String&amp; label, const String&amp; language)
</del><ins>+    static Ref&lt;LoadableTextTrack&gt; create(HTMLTrackElement&amp; track, const String&amp; kind, const String&amp; label, const String&amp; language)
</ins><span class="cx">     {
</span><span class="cx">         return adoptRef(*new LoadableTextTrack(track, kind, label, language));
</span><span class="cx">     }
</span><del>-    virtual ~LoadableTextTrack();
</del><span class="cx"> 
</span><span class="cx">     void scheduleLoad(const URL&amp;);
</span><span class="cx"> 
</span><del>-    void clearClient() override;
-
-    AtomicString id() const override;
-
</del><span class="cx">     size_t trackElementIndex();
</span><del>-    HTMLTrackElement* trackElement() { return m_trackElement; }
-    void setTrackElement(HTMLTrackElement*);
-    Element* element() override;
</del><ins>+    HTMLTrackElement* trackElement() const { return m_trackElement; }
+    void clearElement() { m_trackElement = nullptr; }
</ins><span class="cx"> 
</span><del>-    bool isDefault() const override { return m_isDefault; }
-    void setIsDefault(bool isDefault) override  { m_isDefault = isDefault; }
</del><ins>+    void setIsDefault(bool isDefault) final  { m_isDefault = isDefault; }
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    // TextTrackLoaderClient
-    void newCuesAvailable(TextTrackLoader*) override;
-    void cueLoadingCompleted(TextTrackLoader*, bool loadingFailed) override;
-    void newRegionsAvailable(TextTrackLoader*) override;
</del><ins>+    LoadableTextTrack(HTMLTrackElement&amp;, const String&amp; kind, const String&amp; label, const String&amp; language);
</ins><span class="cx"> 
</span><del>-    LoadableTextTrack(HTMLTrackElement*, const String&amp; kind, const String&amp; label, const String&amp; language);
</del><ins>+    void newCuesAvailable(TextTrackLoader*) final;
+    void cueLoadingCompleted(TextTrackLoader*, bool loadingFailed) final;
+    void newRegionsAvailable(TextTrackLoader*) final;
</ins><span class="cx"> 
</span><ins>+    AtomicString id() const final;
+    bool isDefault() const final { return m_isDefault; }
+    Element* element() final;
+
</ins><span class="cx">     void loadTimerFired();
</span><span class="cx"> 
</span><span class="cx">     HTMLTrackElement* m_trackElement;
</span><span class="lines">@@ -75,6 +70,7 @@
</span><span class="cx">     URL m_url;
</span><span class="cx">     bool m_isDefault;
</span><span class="cx"> };
</span><ins>+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::LoadableTextTrack)
</span><span class="lines">@@ -82,5 +78,3 @@
</span><span class="cx"> SPECIALIZE_TYPE_TRAITS_END()
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(VIDEO_TRACK)
</span><del>-
-#endif // LoadableTextTrack_h
</del></span></pre></div>
<a id="trunkSourceWebCorehtmltrackVTTCuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/VTTCue.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/VTTCue.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/track/VTTCue.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -270,7 +270,7 @@
</span><span class="cx"> {
</span><span class="cx">     // FIXME: We should set m_cue in VTTCueBox to nullptr instead.
</span><span class="cx">     if (m_displayTree &amp;&amp; m_displayTree-&gt;document().refCount())
</span><del>-        m_displayTree-&gt;remove(ASSERT_NO_EXCEPTION);
</del><ins>+        m_displayTree-&gt;remove();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void VTTCue::initialize(ScriptExecutionContext&amp; context)
</span><span class="lines">@@ -843,7 +843,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (!hasDisplayTree())
</span><span class="cx">         return;
</span><del>-    displayTreeInternal().remove(ASSERT_NO_EXCEPTION);
</del><ins>+    displayTreeInternal().remove();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> std::pair&lt;double, double&gt; VTTCue::getPositionCoordinates() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackVTTRegioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/VTTRegion.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/VTTRegion.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/html/track/VTTRegion.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -305,7 +305,7 @@
</span><span class="cx"> 
</span><span class="cx">     // If it's a scrolling region, add the scrolling class.
</span><span class="cx">     if (isScrollingRegion())
</span><del>-        m_cueContainer-&gt;classList().add(textTrackCueContainerScrollingClass(), IGNORE_EXCEPTION);
</del><ins>+        m_cueContainer-&gt;classList().add(textTrackCueContainerScrollingClass());
</ins><span class="cx"> 
</span><span class="cx">     float regionBottom = m_regionDisplayTree-&gt;getBoundingClientRect()-&gt;bottom();
</span><span class="cx"> 
</span><span class="lines">@@ -335,7 +335,7 @@
</span><span class="cx"> 
</span><span class="cx">     double boxHeight = box-&gt;getBoundingClientRect()-&gt;bottom() - box-&gt;getBoundingClientRect()-&gt;top();
</span><span class="cx"> 
</span><del>-    m_cueContainer-&gt;classList().remove(textTrackCueContainerScrollingClass(), IGNORE_EXCEPTION);
</del><ins>+    m_cueContainer-&gt;classList().remove(textTrackCueContainerScrollingClass());
</ins><span class="cx"> 
</span><span class="cx">     m_currentTop += boxHeight;
</span><span class="cx">     m_cueContainer-&gt;setInlineStyleProperty(CSSPropertyTop, m_currentTop, CSSPrimitiveValue::CSS_PX);
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorDOMAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -2172,17 +2172,21 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorDOMAgent::pushNodeByBackendIdToFrontend(ErrorString&amp; errorString, BackendNodeId backendNodeId, int* nodeId)
</span><span class="cx"> {
</span><del>-    if (!m_backendIdToNode.contains(backendNodeId)) {
</del><ins>+    auto iterator = m_backendIdToNode.find(backendNodeId);
+    if (iterator == m_backendIdToNode.end()) {
</ins><span class="cx">         errorString = ASCIILiteral(&quot;No node with given backend id found&quot;);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    Node* node = m_backendIdToNode.get(backendNodeId).first;
-    String nodeGroup = m_backendIdToNode.get(backendNodeId).second;
</del><ins>+    Node* node = iterator-&gt;value.first;
+    String nodeGroup = iterator-&gt;value.second;
+
</ins><span class="cx">     *nodeId = pushNodePathToFrontend(node);
</span><span class="cx"> 
</span><del>-    if (nodeGroup == &quot;&quot;) {
-        m_backendIdToNode.remove(backendNodeId);
</del><ins>+    if (nodeGroup.isEmpty()) {
+        m_backendIdToNode.remove(iterator);
+        // FIXME: We really do the following only when nodeGroup is the empty string? Seems wrong.
+        ASSERT(m_nodeGroupToBackendIdMap.contains(nodeGroup));
</ins><span class="cx">         m_nodeGroupToBackendIdMap.find(nodeGroup)-&gt;value.remove(node);
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -2189,16 +2193,16 @@
</span><span class="cx"> 
</span><span class="cx"> RefPtr&lt;Inspector::Protocol::Runtime::RemoteObject&gt; InspectorDOMAgent::resolveNode(Node* node, const String&amp; objectGroup)
</span><span class="cx"> {
</span><del>-    Frame* frame = node-&gt;document().frame();
</del><ins>+    auto* frame = node-&gt;document().frame();
</ins><span class="cx">     if (!frame)
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx"> 
</span><del>-    JSC::ExecState* scriptState = mainWorldExecState(frame);
-    InjectedScript injectedScript = m_injectedScriptManager.injectedScriptFor(scriptState);
</del><ins>+    auto&amp; state = *mainWorldExecState(frame);
+    auto injectedScript = m_injectedScriptManager.injectedScriptFor(&amp;state);
</ins><span class="cx">     if (injectedScript.hasNoValue())
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx"> 
</span><del>-    return injectedScript.wrapObject(nodeAsScriptValue(*scriptState, node), objectGroup);
</del><ins>+    return injectedScript.wrapObject(nodeAsScriptValue(state, node), objectGroup);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Node* InspectorDOMAgent::scriptValueAsNode(JSC::JSValue value)
</span><span class="lines">@@ -2210,11 +2214,8 @@
</span><span class="cx"> 
</span><span class="cx"> JSC::JSValue InspectorDOMAgent::nodeAsScriptValue(JSC::ExecState&amp; state, Node* node)
</span><span class="cx"> {
</span><del>-    if (!shouldAllowAccessToNode(&amp;state, node))
-        return JSC::jsNull();
-
</del><span class="cx">     JSC::JSLockHolder lock(&amp;state);
</span><del>-    return toJS(&amp;state, deprecatedGlobalObjectForPrototype(&amp;state), node);
</del><ins>+    return toJS(&amp;state, deprecatedGlobalObjectForPrototype(&amp;state), BindingSecurity::checkSecurityForNode(state, node));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsImageBufferh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/ImageBuffer.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/ImageBuffer.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/platform/graphics/ImageBuffer.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -111,7 +111,7 @@
</span><span class="cx">     
</span><span class="cx">     void convertToLuminanceMask();
</span><span class="cx">     
</span><del>-    String toDataURL(const String&amp; mimeType, const double* quality = 0, CoordinateSystem = LogicalCoordinateSystem) const;
</del><ins>+    String toDataURL(const String&amp; mimeType, Optional&lt;double&gt; quality = Nullopt, CoordinateSystem = LogicalCoordinateSystem) const;
</ins><span class="cx"> #if !USE(CG)
</span><span class="cx">     AffineTransform baseTransform() const { return AffineTransform(); }
</span><span class="cx">     void transformColorSpace(ColorSpace srcColorSpace, ColorSpace dstColorSpace);
</span><span class="lines">@@ -180,7 +180,7 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> #if USE(CG)
</span><del>-String ImageDataToDataURL(const ImageData&amp;, const String&amp; mimeType, const double* quality);
</del><ins>+String dataURL(const ImageData&amp;, const String&amp; mimeType, Optional&lt;double&gt; quality);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsMediaPlayercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -1235,32 +1235,33 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(VIDEO_TRACK)
</span><del>-void MediaPlayer::addAudioTrack(PassRefPtr&lt;AudioTrackPrivate&gt; track)
</del><ins>+
+void MediaPlayer::addAudioTrack(AudioTrackPrivate&amp; track)
</ins><span class="cx"> {
</span><span class="cx">     m_client.mediaPlayerDidAddAudioTrack(track);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void MediaPlayer::removeAudioTrack(PassRefPtr&lt;AudioTrackPrivate&gt; track)
</del><ins>+void MediaPlayer::removeAudioTrack(AudioTrackPrivate&amp; track)
</ins><span class="cx"> {
</span><span class="cx">     m_client.mediaPlayerDidRemoveAudioTrack(track);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void MediaPlayer::addTextTrack(PassRefPtr&lt;InbandTextTrackPrivate&gt; track)
</del><ins>+void MediaPlayer::addTextTrack(InbandTextTrackPrivate&amp; track)
</ins><span class="cx"> {
</span><span class="cx">     m_client.mediaPlayerDidAddTextTrack(track);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void MediaPlayer::removeTextTrack(PassRefPtr&lt;InbandTextTrackPrivate&gt; track)
</del><ins>+void MediaPlayer::removeTextTrack(InbandTextTrackPrivate&amp; track)
</ins><span class="cx"> {
</span><span class="cx">     m_client.mediaPlayerDidRemoveTextTrack(track);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void MediaPlayer::addVideoTrack(PassRefPtr&lt;VideoTrackPrivate&gt; track)
</del><ins>+void MediaPlayer::addVideoTrack(VideoTrackPrivate&amp; track)
</ins><span class="cx"> {
</span><span class="cx">     m_client.mediaPlayerDidAddVideoTrack(track);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void MediaPlayer::removeVideoTrack(PassRefPtr&lt;VideoTrackPrivate&gt; track)
</del><ins>+void MediaPlayer::removeVideoTrack(VideoTrackPrivate&amp; track)
</ins><span class="cx"> {
</span><span class="cx">     m_client.mediaPlayerDidRemoveVideoTrack(track);
</span><span class="cx"> }
</span><span class="lines">@@ -1286,6 +1287,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(AVF_CAPTIONS)
</span><ins>+
</ins><span class="cx"> void MediaPlayer::notifyTrackModeChanged()
</span><span class="cx"> {
</span><span class="cx">     if (m_private)
</span><span class="lines">@@ -1296,6 +1298,7 @@
</span><span class="cx"> {
</span><span class="cx">     return m_client.outOfBandTrackSources();
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(VIDEO_TRACK)
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsMediaPlayerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/MediaPlayer.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/MediaPlayer.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/platform/graphics/MediaPlayer.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -236,12 +236,12 @@
</span><span class="cx">     virtual const String&amp; mediaPlayerMediaCacheDirectory() const { return emptyString(); }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(VIDEO_TRACK)
</span><del>-    virtual void mediaPlayerDidAddAudioTrack(PassRefPtr&lt;AudioTrackPrivate&gt;) { }
-    virtual void mediaPlayerDidAddTextTrack(PassRefPtr&lt;InbandTextTrackPrivate&gt;) { }
-    virtual void mediaPlayerDidAddVideoTrack(PassRefPtr&lt;VideoTrackPrivate&gt;) { }
-    virtual void mediaPlayerDidRemoveAudioTrack(PassRefPtr&lt;AudioTrackPrivate&gt;) { }
-    virtual void mediaPlayerDidRemoveTextTrack(PassRefPtr&lt;InbandTextTrackPrivate&gt;) { }
-    virtual void mediaPlayerDidRemoveVideoTrack(PassRefPtr&lt;VideoTrackPrivate&gt;) { }
</del><ins>+    virtual void mediaPlayerDidAddAudioTrack(AudioTrackPrivate&amp;) { }
+    virtual void mediaPlayerDidAddTextTrack(InbandTextTrackPrivate&amp;) { }
+    virtual void mediaPlayerDidAddVideoTrack(VideoTrackPrivate&amp;) { }
+    virtual void mediaPlayerDidRemoveAudioTrack(AudioTrackPrivate&amp;) { }
+    virtual void mediaPlayerDidRemoveTextTrack(InbandTextTrackPrivate&amp;) { }
+    virtual void mediaPlayerDidRemoveVideoTrack(VideoTrackPrivate&amp;) { }
</ins><span class="cx"> 
</span><span class="cx">     virtual void textTrackRepresentationBoundsChanged(const IntRect&amp;) { }
</span><span class="cx"> #if ENABLE(AVF_CAPTIONS)
</span><span class="lines">@@ -528,12 +528,12 @@
</span><span class="cx">     PassRefPtr&lt;PlatformMediaResourceLoader&gt; createResourceLoader();
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(VIDEO_TRACK)
</span><del>-    void addAudioTrack(PassRefPtr&lt;AudioTrackPrivate&gt;);
-    void addTextTrack(PassRefPtr&lt;InbandTextTrackPrivate&gt;);
-    void addVideoTrack(PassRefPtr&lt;VideoTrackPrivate&gt;);
-    void removeAudioTrack(PassRefPtr&lt;AudioTrackPrivate&gt;);
-    void removeTextTrack(PassRefPtr&lt;InbandTextTrackPrivate&gt;);
-    void removeVideoTrack(PassRefPtr&lt;VideoTrackPrivate&gt;);
</del><ins>+    void addAudioTrack(AudioTrackPrivate&amp;);
+    void addTextTrack(InbandTextTrackPrivate&amp;);
+    void addVideoTrack(VideoTrackPrivate&amp;);
+    void removeAudioTrack(AudioTrackPrivate&amp;);
+    void removeTextTrack(InbandTextTrackPrivate&amp;);
+    void removeVideoTrack(VideoTrackPrivate&amp;);
</ins><span class="cx"> 
</span><span class="cx">     bool requiresTextTrackRepresentation() const;
</span><span class="cx">     void setTextTrackRepresentation(TextTrackRepresentation*);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsPlatformTimeRangesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/PlatformTimeRanges.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/PlatformTimeRanges.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/platform/graphics/PlatformTimeRanges.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -42,9 +42,9 @@
</span><span class="cx">     explicit PlatformTimeRanges() { }
</span><span class="cx">     PlatformTimeRanges(const MediaTime&amp; start, const MediaTime&amp; end);
</span><span class="cx"> 
</span><del>-    MediaTime start(unsigned index) const;
</del><ins>+    WEBCORE_EXPORT MediaTime start(unsigned index) const;
</ins><span class="cx">     MediaTime start(unsigned index, bool&amp; valid) const;
</span><del>-    MediaTime end(unsigned index) const;
</del><ins>+    WEBCORE_EXPORT MediaTime end(unsigned index) const;
</ins><span class="cx">     MediaTime end(unsigned index, bool&amp; valid) const;
</span><span class="cx">     MediaTime duration(unsigned index) const;
</span><span class="cx">     MediaTime maximumBufferedTime() const;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationMediaPlayerPrivateAVFoundationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -966,9 +966,8 @@
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayerPrivateAVFoundation::clearTextTracks()
</span><span class="cx"> {
</span><del>-    for (unsigned i = 0; i &lt; m_textTracks.size(); ++i) {
-        RefPtr&lt;InbandTextTrackPrivateAVF&gt; track = m_textTracks[i];
-        player()-&gt;removeTextTrack(track);
</del><ins>+    for (auto&amp; track : m_textTracks) {
+        player()-&gt;removeTextTrack(*track);
</ins><span class="cx">         track-&gt;disconnect();
</span><span class="cx">     }
</span><span class="cx">     m_textTracks.clear();
</span><span class="lines">@@ -977,11 +976,12 @@
</span><span class="cx"> void MediaPlayerPrivateAVFoundation::processNewAndRemovedTextTracks(const Vector&lt;RefPtr&lt;InbandTextTrackPrivateAVF&gt;&gt;&amp; removedTextTracks)
</span><span class="cx"> {
</span><span class="cx">     if (removedTextTracks.size()) {
</span><del>-        for (unsigned i = 0; i &lt; m_textTracks.size(); ++i) {
-            if (!removedTextTracks.contains(m_textTracks[i]))
</del><ins>+        for (unsigned i = 0; i &lt; m_textTracks.size(); ) {
+            if (!removedTextTracks.contains(m_textTracks[i])) {
+                ++i;
</ins><span class="cx">                 continue;
</span><del>-            
-            player()-&gt;removeTextTrack(removedTextTracks[i].get());
</del><ins>+            }
+            player()-&gt;removeTextTrack(*m_textTracks[i]);
</ins><span class="cx">             m_textTracks.remove(i);
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="lines">@@ -1001,20 +1001,23 @@
</span><span class="cx">             continue;
</span><span class="cx">         
</span><span class="cx">         track-&gt;setHasBeenReported(true);
</span><del>-        player()-&gt;addTextTrack(track.get());
</del><ins>+        player()-&gt;addTextTrack(*track);
</ins><span class="cx">     }
</span><span class="cx">     LOG(Media, &quot;MediaPlayerPrivateAVFoundation::processNewAndRemovedTextTracks(%p) - found %lu text tracks&quot;, this, m_textTracks.size());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WIRELESS_PLAYBACK_TARGET)
</span><ins>+
</ins><span class="cx"> void MediaPlayerPrivateAVFoundation::playbackTargetIsWirelessChanged()
</span><span class="cx"> {
</span><span class="cx">     if (m_player)
</span><span class="cx">         m_player-&gt;currentPlaybackTargetIsWirelessChanged();
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(LEGACY_ENCRYPTED_MEDIA)
</span><ins>+
</ins><span class="cx"> bool MediaPlayerPrivateAVFoundation::extractKeyURIKeyIDAndCertificateFromInitData(Uint8Array* initData, String&amp; keyURI, String&amp; keyID, RefPtr&lt;Uint8Array&gt;&amp; certificate)
</span><span class="cx"> {
</span><span class="cx">     // initData should have the following layout:
</span><span class="lines">@@ -1064,6 +1067,7 @@
</span><span class="cx"> 
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> URL MediaPlayerPrivateAVFoundation::resolvedURL() const
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateAVFoundationObjCmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -24,9 +24,9 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> #import &quot;config.h&quot;
</span><ins>+#import &quot;MediaPlayerPrivateAVFoundationObjC.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(VIDEO) &amp;&amp; USE(AVFOUNDATION)
</span><del>-#import &quot;MediaPlayerPrivateAVFoundationObjC.h&quot;
</del><span class="cx"> 
</span><span class="cx"> #import &quot;AVFoundationMIMETypeCache.h&quot;
</span><span class="cx"> #import &quot;AVFoundationSPI.h&quot;
</span><span class="lines">@@ -1983,6 +1983,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(VIDEO_TRACK)
</span><ins>+
</ins><span class="cx"> template &lt;typename RefT, typename PassRefT&gt;
</span><span class="cx"> void determineChangedTracksFromNewTracksAndOldItems(NSArray* tracks, NSString* trackType, Vector&lt;RefT&gt;&amp; oldItems, RefT (*itemFactory)(AVPlayerItemTrack*), MediaPlayer* player, void (MediaPlayer::*removedFunction)(PassRefT), void (MediaPlayer::*addedFunction)(PassRefT))
</span><span class="cx"> {
</span><span class="lines">@@ -2021,13 +2022,14 @@
</span><span class="cx">     oldItems.swap(replacementItems);
</span><span class="cx"> 
</span><span class="cx">     for (auto&amp; removedItem : removedItems)
</span><del>-        (player-&gt;*removedFunction)(removedItem);
</del><ins>+        (player-&gt;*removedFunction)(*removedItem);
</ins><span class="cx"> 
</span><span class="cx">     for (auto&amp; addedItem : addedItems)
</span><del>-        (player-&gt;*addedFunction)(addedItem);
</del><ins>+        (player-&gt;*addedFunction)(*addedItem);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
</span><ins>+
</ins><span class="cx"> template &lt;typename RefT, typename PassRefT&gt;
</span><span class="cx"> void determineChangedTracksFromNewTracksAndOldItems(MediaSelectionGroupAVFObjC* group, Vector&lt;RefT&gt;&amp; oldItems, const Vector&lt;String&gt;&amp; characteristics, RefT (*itemFactory)(MediaSelectionOptionAVFObjC&amp;), MediaPlayer* player, void (MediaPlayer::*removedFunction)(PassRefT), void (MediaPlayer::*addedFunction)(PassRefT))
</span><span class="cx"> {
</span><span class="lines">@@ -2082,11 +2084,12 @@
</span><span class="cx">     oldItems.swap(replacementItems);
</span><span class="cx">     
</span><span class="cx">     for (auto&amp; removedItem : removedItems)
</span><del>-        (player-&gt;*removedFunction)(removedItem);
-    
</del><ins>+        (player-&gt;*removedFunction)(*removedItem);
+
</ins><span class="cx">     for (auto&amp; addedItem : addedItems)
</span><del>-        (player-&gt;*addedFunction)(addedItem);
</del><ins>+        (player-&gt;*addedFunction)(*addedItem);
</ins><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayerPrivateAVFoundationObjC::updateAudioTracks()
</span><span class="lines">@@ -2186,9 +2189,11 @@
</span><span class="cx">     UNUSED_PARAM(representation);
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif // ENABLE(VIDEO_TRACK)
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEB_AUDIO) &amp;&amp; USE(MEDIATOOLBOX)
</span><ins>+
</ins><span class="cx"> AudioSourceProvider* MediaPlayerPrivateAVFoundationObjC::audioSourceProvider()
</span><span class="cx"> {
</span><span class="cx">     if (!m_provider) {
</span><span class="lines">@@ -2195,9 +2200,9 @@
</span><span class="cx">         m_provider = AudioSourceProviderAVFObjC::create(m_avPlayerItem.get());
</span><span class="cx">         m_provider-&gt;setAudioTrack(firstEnabledTrack(safeAVAssetTracksForAudibleMedia()));
</span><span class="cx">     }
</span><del>-
</del><span class="cx">     return m_provider.get();
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayerPrivateAVFoundationObjC::sizeChanged()
</span><span class="lines">@@ -2234,6 +2239,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if HAVE(AVFOUNDATION_VIDEO_OUTPUT)
</span><ins>+
</ins><span class="cx"> void MediaPlayerPrivateAVFoundationObjC::createVideoOutput()
</span><span class="cx"> {
</span><span class="cx">     LOG(Media, &quot;MediaPlayerPrivateAVFoundationObjC::createVideoOutput(%p)&quot;, this);
</span><span class="lines">@@ -2244,8 +2250,7 @@
</span><span class="cx"> #if USE(VIDEOTOOLBOX)
</span><span class="cx">     NSDictionary* attributes = nil;
</span><span class="cx"> #else
</span><del>-    NSDictionary* attributes = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithUnsignedInt:kCVPixelFormatType_32BGRA], kCVPixelBufferPixelFormatTypeKey,
-                                nil];
</del><ins>+    NSDictionary* attributes = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithUnsignedInt:kCVPixelFormatType_32BGRA], kCVPixelBufferPixelFormatTypeKey, nil];
</ins><span class="cx"> #endif
</span><span class="cx">     m_videoOutput = adoptNS([[AVPlayerItemVideoOutput alloc] initWithPixelBufferAttributes:attributes]);
</span><span class="cx">     ASSERT(m_videoOutput);
</span><span class="lines">@@ -2459,9 +2464,11 @@
</span><span class="cx"> {
</span><span class="cx">     dispatch_semaphore_signal(m_videoOutputSemaphore);
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(LEGACY_ENCRYPTED_MEDIA)
</span><ins>+
</ins><span class="cx"> RetainPtr&lt;AVAssetResourceLoadingRequest&gt; MediaPlayerPrivateAVFoundationObjC::takeRequestForKeyURI(const String&amp; keyURI)
</span><span class="cx"> {
</span><span class="cx">     return m_keyURIToRequestMap.take(keyURI);
</span><span class="lines">@@ -2507,9 +2514,11 @@
</span><span class="cx">     if (m_session &amp;&amp; newValue)
</span><span class="cx">         m_session-&gt;playerDidReceiveError([NSError errorWithDomain:@&quot;com.apple.WebKit&quot; code:'HDCP' userInfo:nil]);
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if !HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
</span><ins>+
</ins><span class="cx"> void MediaPlayerPrivateAVFoundationObjC::processLegacyClosedCaptionsTracks()
</span><span class="cx"> {
</span><span class="cx"> #if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
</span><span class="lines">@@ -2544,6 +2553,7 @@
</span><span class="cx"> 
</span><span class="cx">     processNewAndRemovedTextTracks(removedTextTracks);
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> NSArray* MediaPlayerPrivateAVFoundationObjC::safeAVAssetTracksForAudibleMedia()
</span><span class="lines">@@ -2558,6 +2568,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
</span><ins>+
</ins><span class="cx"> bool MediaPlayerPrivateAVFoundationObjC::hasLoadedMediaSelectionGroups()
</span><span class="cx"> {
</span><span class="cx">     if (!m_avAsset)
</span><span class="lines">@@ -2656,7 +2667,7 @@
</span><span class="cx"> 
</span><span class="cx">     m_metadataTrack = InbandMetadataTextTrackPrivateAVF::create(InbandTextTrackPrivate::Metadata, InbandTextTrackPrivate::Data);
</span><span class="cx">     m_metadataTrack-&gt;setInBandMetadataTrackDispatchType(&quot;com.apple.streaming&quot;);
</span><del>-    player()-&gt;addTextTrack(m_metadataTrack);
</del><ins>+    player()-&gt;addTextTrack(*m_metadataTrack);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayerPrivateAVFoundationObjC::processCue(NSArray *attributedStrings, NSArray *nativeSamples, const MediaTime&amp; time)
</span><span class="lines">@@ -2678,6 +2689,7 @@
</span><span class="cx">     
</span><span class="cx">     m_currentTextTrack-&gt;resetCueValues();
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif // HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayerPrivateAVFoundationObjC::setCurrentTextTrack(InbandTextTrackPrivateAVF *track)
</span><span class="lines">@@ -2836,6 +2848,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if !PLATFORM(IOS)
</span><ins>+
</ins><span class="cx"> void MediaPlayerPrivateAVFoundationObjC::setWirelessPlaybackTarget(Ref&lt;MediaPlaybackTarget&gt;&amp;&amp; target)
</span><span class="cx"> {
</span><span class="cx">     m_playbackTarget = WTFMove(target);
</span><span class="lines">@@ -2890,17 +2903,19 @@
</span><span class="cx">     }));
</span><span class="cx">     setDelayCallbacks(false);
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif // !PLATFORM(IOS)
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayerPrivateAVFoundationObjC::updateDisableExternalPlayback()
</span><span class="cx"> {
</span><ins>+#if PLATFORM(IOS)
</ins><span class="cx">     if (!m_avPlayer)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-#if PLATFORM(IOS)
</del><span class="cx">     [m_avPlayer setUsesExternalPlaybackWhileExternalScreenIsActive:player()-&gt;fullscreenMode() &amp; MediaPlayer::VideoFullscreenModeStandard];
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayerPrivateAVFoundationObjC::playerItemStatusDidChange(int status)
</span><span class="lines">@@ -2997,6 +3012,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(DATACUE_VALUE)
</span><ins>+
</ins><span class="cx"> static const AtomicString&amp; metadataType(NSString *avMetadataKeySpace)
</span><span class="cx"> {
</span><span class="cx">     static NeverDestroyed&lt;const AtomicString&gt; quickTimeUserData(&quot;com.apple.quicktime.udta&quot;, AtomicString::ConstructFromLiteral);
</span><span class="lines">@@ -3018,6 +3034,7 @@
</span><span class="cx"> 
</span><span class="cx">     return emptyAtom;
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayerPrivateAVFoundationObjC::metadataDidArrive(RetainPtr&lt;NSArray&gt; metadata, const MediaTime&amp; mediaTime)
</span><span class="lines">@@ -3130,12 +3147,14 @@
</span><span class="cx">     updateStates();
</span><span class="cx">     rateChanged();
</span><span class="cx"> }
</span><del>-    
</del><ins>+
</ins><span class="cx"> #if ENABLE(WIRELESS_PLAYBACK_TARGET)
</span><ins>+
</ins><span class="cx"> void MediaPlayerPrivateAVFoundationObjC::playbackTargetIsWirelessDidChange()
</span><span class="cx"> {
</span><span class="cx">     playbackTargetIsWirelessChanged();
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayerPrivateAVFoundationObjC::canPlayFastForwardDidChange(bool newValue)
</span><span class="lines">@@ -3158,42 +3177,38 @@
</span><span class="cx"> 
</span><span class="cx"> NSArray* assetMetadataKeyNames()
</span><span class="cx"> {
</span><del>-    static NSArray* keys;
-    if (!keys) {
-        keys = [[NSArray alloc] initWithObjects:@&quot;duration&quot;,
-                    @&quot;naturalSize&quot;,
-                    @&quot;preferredTransform&quot;,
-                    @&quot;preferredVolume&quot;,
-                    @&quot;preferredRate&quot;,
-                    @&quot;playable&quot;,
-                    @&quot;resolvedURL&quot;,
-                    @&quot;tracks&quot;,
-                    @&quot;availableMediaCharacteristicsWithMediaSelectionOptions&quot;,
-                   nil];
-    }
</del><ins>+    static NSArray* keys = [[NSArray alloc] initWithObjects:
+        @&quot;duration&quot;,
+        @&quot;naturalSize&quot;,
+        @&quot;preferredTransform&quot;,
+        @&quot;preferredVolume&quot;,
+        @&quot;preferredRate&quot;,
+        @&quot;playable&quot;,
+        @&quot;resolvedURL&quot;,
+        @&quot;tracks&quot;,
+        @&quot;availableMediaCharacteristicsWithMediaSelectionOptions&quot;,
+    nil];
</ins><span class="cx">     return keys;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> NSArray* itemKVOProperties()
</span><span class="cx"> {
</span><del>-    static NSArray* keys;
-    if (!keys) {
-        keys = [[NSArray alloc] initWithObjects:@&quot;presentationSize&quot;,
-                @&quot;status&quot;,
-                @&quot;asset&quot;,
-                @&quot;tracks&quot;,
-                @&quot;seekableTimeRanges&quot;,
-                @&quot;loadedTimeRanges&quot;,
-                @&quot;playbackLikelyToKeepUp&quot;,
-                @&quot;playbackBufferFull&quot;,
-                @&quot;playbackBufferEmpty&quot;,
-                @&quot;duration&quot;,
-                @&quot;hasEnabledAudio&quot;,
-                @&quot;timedMetadata&quot;,
-                @&quot;canPlayFastForward&quot;,
-                @&quot;canPlayFastReverse&quot;,
-                nil];
-    }
</del><ins>+    static NSArray* keys = [[NSArray alloc] initWithObjects:
+        @&quot;presentationSize&quot;,
+        @&quot;status&quot;,
+        @&quot;asset&quot;,
+        @&quot;tracks&quot;,
+        @&quot;seekableTimeRanges&quot;,
+        @&quot;loadedTimeRanges&quot;,
+        @&quot;playbackLikelyToKeepUp&quot;,
+        @&quot;playbackBufferFull&quot;,
+        @&quot;playbackBufferEmpty&quot;,
+        @&quot;duration&quot;,
+        @&quot;hasEnabledAudio&quot;,
+        @&quot;timedMetadata&quot;,
+        @&quot;canPlayFastForward&quot;,
+        @&quot;canPlayFastReverse&quot;,
+    nil];
</ins><span class="cx">     return keys;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -3205,14 +3220,16 @@
</span><span class="cx"> 
</span><span class="cx"> NSArray* playerKVOProperties()
</span><span class="cx"> {
</span><del>-    static NSArray* keys = [[NSArray alloc] initWithObjects:@&quot;rate&quot;,
</del><ins>+    static NSArray* keys = [[NSArray alloc] initWithObjects:
+        @&quot;rate&quot;,
</ins><span class="cx"> #if ENABLE(WIRELESS_PLAYBACK_TARGET)
</span><del>-                            @&quot;externalPlaybackActive&quot;, @&quot;allowsExternalPlayback&quot;,
</del><ins>+        @&quot;externalPlaybackActive&quot;,
+        @&quot;allowsExternalPlayback&quot;,
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(LEGACY_ENCRYPTED_MEDIA)
</span><del>-                            @&quot;outputObscuredDueToInsufficientExternalProtection&quot;,
</del><ins>+        @&quot;outputObscuredDueToInsufficientExternalProtection&quot;,
</ins><span class="cx"> #endif
</span><del>-                            nil];
</del><ins>+    nil];
</ins><span class="cx">     return keys;
</span><span class="cx"> }
</span><span class="cx"> } // namespace WebCore
</span><span class="lines">@@ -3231,7 +3248,7 @@
</span><span class="cx"> - (void)disconnect
</span><span class="cx"> {
</span><span class="cx">     [NSObject cancelPreviousPerformRequestsWithTarget:self];
</span><del>-    m_callback = 0;
</del><ins>+    m_callback = nil;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)metadataLoaded
</span><span class="lines">@@ -3238,7 +3255,6 @@
</span><span class="cx"> {
</span><span class="cx">     if (!m_callback)
</span><span class="cx">         return;
</span><del>-
</del><span class="cx">     m_callback-&gt;scheduleMainThreadNotification(MediaPlayerPrivateAVFoundation::Notification::AssetMetadataLoaded);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -3354,6 +3370,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
</span><ins>+
</ins><span class="cx"> - (void)legibleOutput:(id)output didOutputAttributedStrings:(NSArray *)strings nativeSampleBuffers:(NSArray *)nativeSamples forItemTime:(CMTime)itemTime
</span><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(output);
</span><span class="lines">@@ -3386,11 +3403,13 @@
</span><span class="cx">             callback-&gt;flushCues();
</span><span class="cx">     });
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> #if HAVE(AVFOUNDATION_LOADER_DELEGATE)
</span><ins>+
</ins><span class="cx"> @implementation WebCoreAVFLoaderDelegate
</span><span class="cx"> 
</span><span class="cx"> - (id)initWithCallback:(MediaPlayerPrivateAVFoundationObjC*)callback
</span><span class="lines">@@ -3469,10 +3488,13 @@
</span><span class="cx">     m_callback = callback;
</span><span class="cx"> }
</span><span class="cx"> @end
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if HAVE(AVFOUNDATION_VIDEO_OUTPUT)
</span><ins>+
</ins><span class="cx"> @implementation WebCoreAVFPullDelegate
</span><ins>+
</ins><span class="cx"> - (id)initWithCallback:(MediaPlayerPrivateAVFoundationObjC *)callback
</span><span class="cx"> {
</span><span class="cx">     self = [super init];
</span><span class="lines">@@ -3497,7 +3519,9 @@
</span><span class="cx">     UNUSED_PARAM(output);
</span><span class="cx">     // No-op.
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> @end
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateMediaStreamAVFObjCmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -581,12 +581,12 @@
</span><span class="cx">         configureCallback(track, index++);
</span><span class="cx"> 
</span><span class="cx">     for (auto&amp; track : removedTracks) {
</span><del>-        (player-&gt;*removedFunction)(track);
</del><ins>+        (player-&gt;*removedFunction)(*track);
</ins><span class="cx">         track-&gt;streamTrack()-&gt;removeObserver(*trackObserver);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     for (auto&amp; track : addedTracks) {
</span><del>-        (player-&gt;*addedFunction)(track);
</del><ins>+        (player-&gt;*addedFunction)(*track);
</ins><span class="cx">         track-&gt;streamTrack()-&gt;addObserver(*trackObserver);
</span><span class="cx">     }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscairoImageBufferCairocpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -543,7 +543,7 @@
</span><span class="cx">     return cairo_surface_write_to_png_stream(image, writeFunction, output) == CAIRO_STATUS_SUCCESS;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String ImageBuffer::toDataURL(const String&amp; mimeType, const double*, CoordinateSystem) const
</del><ins>+String ImageBuffer::toDataURL(const String&amp; mimeType, Optional&lt;double&gt;, CoordinateSystem) const
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(MIMETypeRegistry::isSupportedImageMIMETypeForEncoding(mimeType));
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscgImageBufferCGcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -241,10 +241,8 @@
</span><span class="cx"> 
</span><span class="cx"> static RetainPtr&lt;CGImageRef&gt; createCroppedImageIfNecessary(CGImageRef image, const IntSize&amp; bounds)
</span><span class="cx"> {
</span><del>-    if (image &amp;&amp; (CGImageGetWidth(image) != static_cast&lt;size_t&gt;(bounds.width())
-        || CGImageGetHeight(image) != static_cast&lt;size_t&gt;(bounds.height()))) {
</del><ins>+    if (image &amp;&amp; (CGImageGetWidth(image) != static_cast&lt;size_t&gt;(bounds.width()) || CGImageGetHeight(image) != static_cast&lt;size_t&gt;(bounds.height())))
</ins><span class="cx">         return adoptCF(CGImageCreateWithImageInRect(image, CGRectMake(0, 0, bounds.width(), bounds.height())));
</span><del>-    }
</del><span class="cx">     return image;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -253,7 +251,7 @@
</span><span class="cx">     if (resolutionScale == 1 || scaleBehavior == Unscaled)
</span><span class="cx">         image = createCroppedImageIfNecessary(image.get(), internalSize);
</span><span class="cx">     else {
</span><del>-        RetainPtr&lt;CGContextRef&gt; context = adoptCF(CGBitmapContextCreate(0, logicalSize.width(), logicalSize.height(), 8, 4 * logicalSize.width(), sRGBColorSpaceRef(), kCGImageAlphaPremultipliedLast));
</del><ins>+        auto context = adoptCF(CGBitmapContextCreate(0, logicalSize.width(), logicalSize.height(), 8, 4 * logicalSize.width(), sRGBColorSpaceRef(), kCGImageAlphaPremultipliedLast));
</ins><span class="cx">         CGContextSetBlendMode(context.get(), kCGBlendModeCopy);
</span><span class="cx">         CGContextClipToRect(context.get(), FloatRect(FloatPoint::zero(), logicalSize));
</span><span class="cx">         FloatSize imageSizeInUserSpace = scaleSizeToUserSpace(logicalSize, backingStoreSize, internalSize);
</span><span class="lines">@@ -460,19 +458,19 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static bool CGImageEncodeToData(CGImageRef image, CFStringRef uti, const double* quality, CFMutableDataRef data)
</del><ins>+static bool encodeImage(CGImageRef image, CFStringRef uti, Optional&lt;double&gt; quality, CFMutableDataRef data)
</ins><span class="cx"> {
</span><span class="cx">     if (!image || !uti || !data)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    RetainPtr&lt;CGImageDestinationRef&gt; destination = adoptCF(CGImageDestinationCreateWithData(data, uti, 1, 0));
</del><ins>+    auto destination = adoptCF(CGImageDestinationCreateWithData(data, uti, 1, 0));
</ins><span class="cx">     if (!destination)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    RetainPtr&lt;CFDictionaryRef&gt; imageProperties = 0;
</del><ins>+    RetainPtr&lt;CFDictionaryRef&gt; imageProperties;
</ins><span class="cx">     if (CFEqual(uti, jpegUTI()) &amp;&amp; quality &amp;&amp; *quality &gt;= 0.0 &amp;&amp; *quality &lt;= 1.0) {
</span><span class="cx">         // Apply the compression quality to the JPEG image destination.
</span><del>-        RetainPtr&lt;CFNumberRef&gt; compressionQuality = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberDoubleType, quality));
</del><ins>+        auto compressionQuality = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberDoubleType, &amp;*quality));
</ins><span class="cx">         const void* key = kCGImageDestinationLossyCompressionQuality;
</span><span class="cx">         const void* value = compressionQuality.get();
</span><span class="cx">         imageProperties = adoptCF(CFDictionaryCreate(0, &amp;key, &amp;value, 1, &amp;kCFTypeDictionaryKeyCallBacks, &amp;kCFTypeDictionaryValueCallBacks));
</span><span class="lines">@@ -485,13 +483,13 @@
</span><span class="cx">     return CGImageDestinationFinalize(destination.get());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static String CGImageToDataURL(CGImageRef image, const String&amp; mimeType, const double* quality)
</del><ins>+static String dataURL(CGImageRef image, const String&amp; mimeType, Optional&lt;double&gt; quality)
</ins><span class="cx"> {
</span><del>-    RetainPtr&lt;CFStringRef&gt; uti = utiFromMIMEType(mimeType);
</del><ins>+    auto uti = utiFromMIMEType(mimeType);
</ins><span class="cx">     ASSERT(uti);
</span><span class="cx"> 
</span><del>-    RetainPtr&lt;CFMutableDataRef&gt; data = adoptCF(CFDataCreateMutable(kCFAllocatorDefault, 0));
-    if (!CGImageEncodeToData(image, uti.get(), quality, data.get()))
</del><ins>+    auto data = adoptCF(CFDataCreateMutable(kCFAllocatorDefault, 0));
+    if (!encodeImage(image, uti.get(), quality, data.get()))
</ins><span class="cx">         return ASCIILiteral(&quot;data:,&quot;);
</span><span class="cx"> 
</span><span class="cx">     Vector&lt;char&gt; base64Data;
</span><span class="lines">@@ -500,7 +498,7 @@
</span><span class="cx">     return &quot;data:&quot; + mimeType + &quot;;base64,&quot; + base64Data;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String ImageBuffer::toDataURL(const String&amp; mimeType, const double* quality, CoordinateSystem) const
</del><ins>+String ImageBuffer::toDataURL(const String&amp; mimeType, Optional&lt;double&gt; quality, CoordinateSystem) const
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(MIMETypeRegistry::isSupportedImageMIMETypeForEncoding(mimeType));
</span><span class="cx"> 
</span><span class="lines">@@ -507,7 +505,7 @@
</span><span class="cx">     if (context().isAcceleratedContext())
</span><span class="cx">         flushContext();
</span><span class="cx"> 
</span><del>-    RetainPtr&lt;CFStringRef&gt; uti = utiFromMIMEType(mimeType);
</del><ins>+    auto uti = utiFromMIMEType(mimeType);
</ins><span class="cx">     ASSERT(uti);
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;Uint8ClampedArray&gt; premultipliedData;
</span><span class="lines">@@ -519,20 +517,18 @@
</span><span class="cx">         if (!premultipliedData)
</span><span class="cx">             return ASCIILiteral(&quot;data:,&quot;);
</span><span class="cx"> 
</span><del>-        RetainPtr&lt;CGDataProviderRef&gt; dataProvider;
-        dataProvider = adoptCF(CGDataProviderCreateWithData(0, premultipliedData-&gt;data(), 4 * logicalSize().width() * logicalSize().height(), 0));
</del><ins>+        auto dataProvider = adoptCF(CGDataProviderCreateWithData(0, premultipliedData-&gt;data(), 4 * logicalSize().width() * logicalSize().height(), 0));
</ins><span class="cx">         if (!dataProvider)
</span><span class="cx">             return ASCIILiteral(&quot;data:,&quot;);
</span><span class="cx"> 
</span><span class="cx">         image = adoptCF(CGImageCreate(logicalSize().width(), logicalSize().height(), 8, 32, 4 * logicalSize().width(),
</span><del>-                                    sRGBColorSpaceRef(), kCGBitmapByteOrderDefault | kCGImageAlphaNoneSkipLast,
-                                    dataProvider.get(), 0, false, kCGRenderingIntentDefault));
</del><ins>+            sRGBColorSpaceRef(), kCGBitmapByteOrderDefault | kCGImageAlphaNoneSkipLast, dataProvider.get(), 0, false, kCGRenderingIntentDefault));
</ins><span class="cx">     } else if (m_resolutionScale == 1) {
</span><span class="cx">         image = copyNativeImage(CopyBackingStore);
</span><span class="cx">         image = createCroppedImageIfNecessary(image.get(), internalSize());
</span><span class="cx">     } else {
</span><span class="cx">         image = copyNativeImage(DontCopyBackingStore);
</span><del>-        RetainPtr&lt;CGContextRef&gt; context = adoptCF(CGBitmapContextCreate(0, logicalSize().width(), logicalSize().height(), 8, 4 * logicalSize().width(), sRGBColorSpaceRef(), kCGImageAlphaPremultipliedLast));
</del><ins>+        auto context = adoptCF(CGBitmapContextCreate(0, logicalSize().width(), logicalSize().height(), 8, 4 * logicalSize().width(), sRGBColorSpaceRef(), kCGImageAlphaPremultipliedLast));
</ins><span class="cx">         CGContextSetBlendMode(context.get(), kCGBlendModeCopy);
</span><span class="cx">         CGContextClipToRect(context.get(), CGRectMake(0, 0, logicalSize().width(), logicalSize().height()));
</span><span class="cx">         FloatSize imageSizeInUserSpace = sizeForDestinationSize(logicalSize());
</span><span class="lines">@@ -540,14 +536,14 @@
</span><span class="cx">         image = adoptCF(CGBitmapContextCreateImage(context.get()));
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return CGImageToDataURL(image.get(), mimeType, quality);
</del><ins>+    return dataURL(image.get(), mimeType, quality);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-String ImageDataToDataURL(const ImageData&amp; source, const String&amp; mimeType, const double* quality)
</del><ins>+String dataURL(const ImageData&amp; source, const String&amp; mimeType, Optional&lt;double&gt; quality)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(MIMETypeRegistry::isSupportedImageMIMETypeForEncoding(mimeType));
</span><span class="cx"> 
</span><del>-    RetainPtr&lt;CFStringRef&gt; uti = utiFromMIMEType(mimeType);
</del><ins>+    auto uti = utiFromMIMEType(mimeType);
</ins><span class="cx">     ASSERT(uti);
</span><span class="cx"> 
</span><span class="cx">     CGImageAlphaInfo dataAlphaInfo = kCGImageAlphaLast;
</span><span class="lines">@@ -579,17 +575,13 @@
</span><span class="cx">         data = premultipliedData.data();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    RetainPtr&lt;CGDataProviderRef&gt; dataProvider;
-    dataProvider = adoptCF(CGDataProviderCreateWithData(0, data, 4 * source.width() * source.height(), 0));
</del><ins>+    auto dataProvider = adoptCF(CGDataProviderCreateWithData(0, data, 4 * source.width() * source.height(), 0));
</ins><span class="cx">     if (!dataProvider)
</span><span class="cx">         return ASCIILiteral(&quot;data:,&quot;);
</span><span class="cx"> 
</span><del>-    RetainPtr&lt;CGImageRef&gt; image;
-    image = adoptCF(CGImageCreate(source.width(), source.height(), 8, 32, 4 * source.width(),
-                                sRGBColorSpaceRef(), kCGBitmapByteOrderDefault | dataAlphaInfo,
-                                dataProvider.get(), 0, false, kCGRenderingIntentDefault));
-
-    return CGImageToDataURL(image.get(), mimeType, quality);
</del><ins>+    auto image = adoptCF(CGImageCreate(source.width(), source.height(), 8, 32, 4 * source.width(),
+        sRGBColorSpaceRef(), kCGBitmapByteOrderDefault | dataAlphaInfo, dataProvider.get(), 0, false, kCGRenderingIntentDefault));
+    return dataURL(image.get(), mimeType, quality);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicseflImageBufferEflcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/efl/ImageBufferEfl.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/efl/ImageBufferEfl.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/platform/graphics/efl/ImageBufferEfl.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -47,12 +47,12 @@
</span><span class="cx">     return cairo_surface_write_to_png_stream(image, writeFunction, output) == CAIRO_STATUS_SUCCESS;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static bool encodeImageJPEG(unsigned char* data, IntSize size, Vector&lt;char&gt;* output, const double* quality)
</del><ins>+static bool encodeImageJPEG(unsigned char* data, IntSize size, Vector&lt;char&gt;* output, Optional&lt;double&gt; quality)
</ins><span class="cx"> {    
</span><span class="cx">     return compressRGBABigEndianToJPEG(data, size, *output, quality);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String ImageBuffer::toDataURL(const String&amp; mimeType, const double* quality, CoordinateSystem) const
</del><ins>+String ImageBuffer::toDataURL(const String&amp; mimeType, Optional&lt;double&gt; quality, CoordinateSystem) const
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(MIMETypeRegistry::isSupportedImageMIMETypeForEncoding(mimeType));
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgstreamerMediaPlayerPrivateGStreamercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -655,7 +655,7 @@
</span><span class="cx"> 
</span><span class="cx">         RefPtr&lt;VideoTrackPrivateGStreamer&gt; track = VideoTrackPrivateGStreamer::create(m_pipeline, i, pad);
</span><span class="cx">         m_videoTracks.append(track);
</span><del>-        m_player-&gt;addVideoTrack(track.release());
</del><ins>+        m_player-&gt;addVideoTrack(*track);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     while (static_cast&lt;gint&gt;(m_videoTracks.size()) &gt; numTracks) {
</span><span class="lines">@@ -662,7 +662,7 @@
</span><span class="cx">         RefPtr&lt;VideoTrackPrivateGStreamer&gt; track = m_videoTracks.last();
</span><span class="cx">         track-&gt;disconnect();
</span><span class="cx">         m_videoTracks.removeLast();
</span><del>-        m_player-&gt;removeVideoTrack(track.release());
</del><ins>+        m_player-&gt;removeVideoTrack(*track);
</ins><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -718,7 +718,7 @@
</span><span class="cx"> 
</span><span class="cx">         RefPtr&lt;AudioTrackPrivateGStreamer&gt; track = AudioTrackPrivateGStreamer::create(m_pipeline, i, pad);
</span><span class="cx">         m_audioTracks.insert(i, track);
</span><del>-        m_player-&gt;addAudioTrack(track.release());
</del><ins>+        m_player-&gt;addAudioTrack(*track);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     while (static_cast&lt;gint&gt;(m_audioTracks.size()) &gt; numTracks) {
</span><span class="lines">@@ -725,7 +725,7 @@
</span><span class="cx">         RefPtr&lt;AudioTrackPrivateGStreamer&gt; track = m_audioTracks.last();
</span><span class="cx">         track-&gt;disconnect();
</span><span class="cx">         m_audioTracks.removeLast();
</span><del>-        m_player-&gt;removeAudioTrack(track.release());
</del><ins>+        m_player-&gt;removeAudioTrack(*track);
</ins><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -767,7 +767,7 @@
</span><span class="cx"> 
</span><span class="cx">         RefPtr&lt;InbandTextTrackPrivateGStreamer&gt; track = InbandTextTrackPrivateGStreamer::create(i, pad);
</span><span class="cx">         m_textTracks.insert(i, track);
</span><del>-        m_player-&gt;addTextTrack(track.release());
</del><ins>+        m_player-&gt;addTextTrack(*track);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     while (static_cast&lt;gint&gt;(m_textTracks.size()) &gt; numTracks) {
</span><span class="lines">@@ -774,7 +774,7 @@
</span><span class="cx">         RefPtr&lt;InbandTextTrackPrivateGStreamer&gt; track = m_textTracks.last();
</span><span class="cx">         track-&gt;disconnect();
</span><span class="cx">         m_textTracks.removeLast();
</span><del>-        m_player-&gt;removeTextTrack(track.release());
</del><ins>+        m_player-&gt;removeTextTrack(*track);
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1129,7 +1129,7 @@
</span><span class="cx">                 track-&gt;setInBandMetadataTrackDispatchType(inbandMetadataTrackDispatchType);
</span><span class="cx"> 
</span><span class="cx">                 m_metadataTracks.add(pid, track);
</span><del>-                m_player-&gt;addTextTrack(track);
</del><ins>+                m_player-&gt;addTextTrack(*track);
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">     } else {
</span><span class="lines">@@ -1151,10 +1151,10 @@
</span><span class="cx"> void MediaPlayerPrivateGStreamer::processTableOfContents(GstMessage* message)
</span><span class="cx"> {
</span><span class="cx">     if (m_chaptersTrack)
</span><del>-        m_player-&gt;removeTextTrack(m_chaptersTrack);
</del><ins>+        m_player-&gt;removeTextTrack(*m_chaptersTrack);
</ins><span class="cx"> 
</span><span class="cx">     m_chaptersTrack = InbandMetadataTextTrackPrivateGStreamer::create(InbandTextTrackPrivate::Chapters, InbandTextTrackPrivate::Generic);
</span><del>-    m_player-&gt;addTextTrack(m_chaptersTrack);
</del><ins>+    m_player-&gt;addTextTrack(*m_chaptersTrack);
</ins><span class="cx"> 
</span><span class="cx">     GRefPtr&lt;GstToc&gt; toc;
</span><span class="cx">     gboolean updated;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgtkImageBufferGtkcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/gtk/ImageBufferGtk.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gtk/ImageBufferGtk.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/platform/graphics/gtk/ImageBufferGtk.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-static bool encodeImage(cairo_surface_t* surface, const String&amp; mimeType, const double* quality, GUniqueOutPtr&lt;gchar&gt;&amp; buffer, gsize&amp; bufferSize)
</del><ins>+static bool encodeImage(cairo_surface_t* surface, const String&amp; mimeType, Optional&lt;double&gt; quality, GUniqueOutPtr&lt;gchar&gt;&amp; buffer, gsize&amp; bufferSize)
</ins><span class="cx"> {
</span><span class="cx">     // List of supported image encoding types comes from the GdkPixbuf documentation.
</span><span class="cx">     // http://developer.gnome.org/gdk-pixbuf/stable/gdk-pixbuf-File-saving.html#gdk-pixbuf-save-to-bufferv
</span><span class="lines">@@ -75,7 +75,7 @@
</span><span class="cx">     return !error;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String ImageBuffer::toDataURL(const String&amp; mimeType, const double* quality, CoordinateSystem) const
</del><ins>+String ImageBuffer::toDataURL(const String&amp; mimeType, Optional&lt;double&gt; quality, CoordinateSystem) const
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(MIMETypeRegistry::isSupportedImageMIMETypeForEncoding(mimeType));
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicswinImageBufferDirect2Dcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/win/ImageBufferDirect2D.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/win/ImageBufferDirect2D.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/platform/graphics/win/ImageBufferDirect2D.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -260,7 +260,7 @@
</span><span class="cx">     m_data.putData(source, scaledSourceSize, scaledSourceRect, destPoint, internalSize(), context().isAcceleratedContext(), multiplied == Unmultiplied, 1);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String ImageBuffer::toDataURL(const String&amp; mimeType, const double* quality, CoordinateSystem) const
</del><ins>+String ImageBuffer::toDataURL(const String&amp;, Optional&lt;double&gt;, CoordinateSystem) const
</ins><span class="cx"> {
</span><span class="cx">     notImplemented();
</span><span class="cx">     return ASCIILiteral(&quot;data:,&quot;);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformimageencodersJPEGImageEncodercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/image-encoders/JPEGImageEncoder.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/image-encoders/JPEGImageEncoder.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/platform/image-encoders/JPEGImageEncoder.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -83,7 +83,7 @@
</span><span class="cx">     longjmp(err-&gt;m_setjmpBuffer, -1);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool compressRGBABigEndianToJPEG(unsigned char* rgbaBigEndianData, const IntSize&amp; size, Vector&lt;char&gt;&amp; jpegData, const double* quality)
</del><ins>+bool compressRGBABigEndianToJPEG(unsigned char* rgbaBigEndianData, const IntSize&amp; size, Vector&lt;char&gt;&amp; jpegData, Optional&lt;double&gt; quality)
</ins><span class="cx"> {
</span><span class="cx">     struct jpeg_compress_struct compressData;
</span><span class="cx">     JPEGCompressErrorMgr err;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformimageencodersJPEGImageEncoderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/image-encoders/JPEGImageEncoder.h (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/image-encoders/JPEGImageEncoder.h        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/platform/image-encoders/JPEGImageEncoder.h        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -18,16 +18,15 @@
</span><span class="cx">  *  Boston, MA 02110-1301, USA.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef JPEGImageEncoder_h
-#define JPEGImageEncoder_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><ins>+#include &lt;wtf/Optional.h&gt;
</ins><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class IntSize;
</span><del>-bool compressRGBABigEndianToJPEG(unsigned char* rgbaBigEndianData, const IntSize&amp;, Vector&lt;char&gt;&amp; jpegData, const double* quality = 0);
</del><span class="cx"> 
</span><ins>+bool compressRGBABigEndianToJPEG(unsigned char* rgbaBigEndianData, const IntSize&amp;, Vector&lt;char&gt;&amp; jpegData, Optional&lt;double&gt; quality = Nullopt);
+
</ins><span class="cx"> }
</span><del>-
-#endif // JPEGImageEncoder_h
</del></span></pre></div>
<a id="trunkSourceWebCoreplatformiosWebPlaybackSessionInterfaceAVKitmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/ios/WebPlaybackSessionInterfaceAVKit.mm (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/ios/WebPlaybackSessionInterfaceAVKit.mm        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/platform/ios/WebPlaybackSessionInterfaceAVKit.mm        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -154,11 +154,10 @@
</span><span class="cx"> void WebPlaybackSessionInterfaceAVKit::seekableRangesChanged(const TimeRanges&amp; timeRanges)
</span><span class="cx"> {
</span><span class="cx">     RetainPtr&lt;NSMutableArray&gt; seekableRanges = adoptNS([[NSMutableArray alloc] init]);
</span><del>-    ExceptionCode exceptionCode;
</del><span class="cx"> 
</span><span class="cx">     for (unsigned i = 0; i &lt; timeRanges.length(); i++) {
</span><del>-        double start = timeRanges.start(i, exceptionCode);
-        double end = timeRanges.end(i, exceptionCode);
</del><ins>+        double start = timeRanges.start(i).releaseReturnValue();
+        double end = timeRanges.end(i).releaseReturnValue();
</ins><span class="cx"> 
</span><span class="cx">         CMTimeRange range = CMTimeRangeMake(CMTimeMakeWithSeconds(start, 1000), CMTimeMakeWithSeconds(end-start, 1000));
</span><span class="cx">         [seekableRanges addObject:[NSValue valueWithCMTimeRange:range]];
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmacWebVideoFullscreenHUDWindowControllermm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.mm (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.mm        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.mm        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -505,7 +505,7 @@
</span><span class="cx">         return;
</span><span class="cx">     if ([_delegate videoElement]-&gt;muted())
</span><span class="cx">         [_delegate videoElement]-&gt;setMuted(false);
</span><del>-    [_delegate videoElement]-&gt;setVolume(volume / [self maxVolume], IGNORE_EXCEPTION);
</del><ins>+    [_delegate videoElement]-&gt;setVolume(volume / [self maxVolume]);
</ins><span class="cx">     [self updateVolume];
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeGtkcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderThemeGtk.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderThemeGtk.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/rendering/RenderThemeGtk.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -26,7 +26,6 @@
</span><span class="cx"> #include &quot;RenderThemeGtk.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;CSSValueKeywords.h&quot;
</span><del>-#include &quot;ExceptionCodePlaceholder.h&quot;
</del><span class="cx"> #include &quot;FileList.h&quot;
</span><span class="cx"> #include &quot;FileSystem.h&quot;
</span><span class="cx"> #include &quot;FontDescription.h&quot;
</span><span class="lines">@@ -2036,8 +2035,8 @@
</span><span class="cx">     auto&amp; style = o.style();
</span><span class="cx">     RefPtr&lt;TimeRanges&gt; timeRanges = mediaElement-&gt;buffered();
</span><span class="cx">     for (unsigned index = 0; index &lt; timeRanges-&gt;length(); ++index) {
</span><del>-        float start = timeRanges-&gt;start(index, IGNORE_EXCEPTION);
-        float end = timeRanges-&gt;end(index, IGNORE_EXCEPTION);
</del><ins>+        float start = timeRanges-&gt;start(index).releaseReturnValue();
+        float end = timeRanges-&gt;end(index).releaseReturnValue();
</ins><span class="cx">         float startRatio = start / mediaDuration;
</span><span class="cx">         float lengthRatio = (end - start) / mediaDuration;
</span><span class="cx">         if (!lengthRatio)
</span></span></pre></div>
<a id="trunkSourceWebCorexmlparserXMLDocumentParserLibxml2cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -888,7 +888,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (!scriptingContentIsAllowed(parserContentPolicy()) &amp;&amp; is&lt;Element&gt;(*node) &amp;&amp; toScriptElementIfPossible(downcast&lt;Element&gt;(node.get()))) {
</span><span class="cx">         popCurrentNode();
</span><del>-        node-&gt;remove(IGNORE_EXCEPTION);
</del><ins>+        node-&gt;remove();
</ins><span class="cx">         return;
</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 (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit/mac/ChangeLog        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -1,3 +1,66 @@
</span><ins>+2016-10-28  Darin Adler  &lt;darin@apple.com&gt;
+
+        Move all classes in the HTML directory from ExceptionCode to Exception
+        https://bugs.webkit.org/show_bug.cgi?id=163876
+
+        Reviewed by Sam Weinig.
+
+        * DOM/DOMCharacterData.mm:
+        (-[DOMCharacterData remove]): Updated exception handling.
+        * DOM/DOMDOMTokenList.mm:
+        (-[DOMDOMTokenList toggle:force:]): Ditto.
+        * DOM/DOMDocumentType.mm:
+        (-[DOMDocumentType remove]): Ditto.
+        * DOM/DOMElement.mm:
+        (-[DOMElement remove]): Ditto.
+        * DOM/DOMHTML.mm:
+        (-[DOMHTMLInputElement setValueAsNumberWithChangeEvent:]): Ditto.
+        * DOM/DOMHTMLCanvasElement.mm:
+        (-[DOMHTMLCanvasElement toDataURL:]): Ditto.
+        * DOM/DOMHTMLElement.mm:
+        (-[DOMHTMLElement setInnerText:]): Ditto.
+        (-[DOMHTMLElement setOuterText:]): Ditto.
+        (-[DOMHTMLElement setContentEditable:]): Ditto.
+        * DOM/DOMHTMLInputElement.mm:
+        (-[DOMHTMLInputElement setMaxLength:]): Ditto.
+        (-[DOMHTMLInputElement setValueAsDate:]): Ditto.
+        (-[DOMHTMLInputElement setValueAsNumber:]): Ditto.
+        (-[DOMHTMLInputElement stepUp:]): Ditto.
+        (-[DOMHTMLInputElement stepDown:]): Ditto.
+        (-[DOMHTMLInputElement setRangeText:]): Ditto.
+        (-[DOMHTMLInputElement setRangeText:start:end:selectionMode:]): Ditto.
+        * DOM/DOMHTMLMarqueeElement.mm:
+        (-[DOMHTMLMarqueeElement setLoop:]): Ditto.
+        * DOM/DOMHTMLMediaElement.mm:
+        (-[DOMHTMLMediaElement setCurrentTime:]): Ditto.
+        (-[DOMHTMLMediaElement setVolume:]): Ditto.
+        * DOM/DOMHTMLOptionsCollection.mm:
+        (-[DOMHTMLOptionsCollection setLength:]): Ditto.
+        * DOM/DOMHTMLTableElement.mm:
+        (-[DOMHTMLTableElement setCaption:]): Ditto.
+        (-[DOMHTMLTableElement setTHead:]): Ditto.
+        (-[DOMHTMLTableElement setTFoot:]): Ditto.
+        (-[DOMHTMLTableElement insertRow:]): Ditto.
+        (-[DOMHTMLTableElement deleteRow:]): Ditto.
+        * DOM/DOMHTMLTableRowElement.mm:
+        (-[DOMHTMLTableRowElement insertCell:]): Ditto.
+        (-[DOMHTMLTableRowElement deleteCell:]): Ditto.
+        * DOM/DOMHTMLTableSectionElement.mm:
+        (-[DOMHTMLTableSectionElement insertRow:]): Ditto.
+        (-[DOMHTMLTableSectionElement deleteRow:]): Ditto.
+        * DOM/DOMHTMLTextAreaElement.mm:
+        (-[DOMHTMLTextAreaElement setMaxLength:]): Ditto.
+        (-[DOMHTMLTextAreaElement setRangeText:]): Ditto.
+        (-[DOMHTMLTextAreaElement setRangeText:start:end:selectionMode:]): Ditto.
+        * DOM/DOMHTMLVideoElement.mm:
+        (-[DOMHTMLVideoElement webkitEnterFullscreen]): Ditto.
+        (-[DOMHTMLVideoElement webkitEnterFullScreen]): Changed to call the other named
+        version (lowercase S) instead of repeating the logic from that method.
+        (-[DOMHTMLVideoElement webkitExitFullScreen]): Ditto.
+        * DOM/DOMTimeRanges.mm:
+        (-[DOMTimeRanges start:]): Updated exception handling.
+        (-[DOMTimeRanges end:]): Ditto.
+
</ins><span class="cx"> 2016-10-27  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Regression(r203601): Caused crashes in iBooks
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMCharacterDatamm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMCharacterData.mm (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMCharacterData.mm        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit/mac/DOM/DOMCharacterData.mm        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -112,9 +112,7 @@
</span><span class="cx"> - (void)remove
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    IMPL-&gt;remove(ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(IMPL-&gt;remove());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMDOMTokenListmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMDOMTokenList.mm (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMDOMTokenList.mm        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit/mac/DOM/DOMDOMTokenList.mm        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -84,10 +84,7 @@
</span><span class="cx"> - (BOOL)toggle:(NSString *)token force:(BOOL)force
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    BOOL result = IMPL-&gt;toggle(token, force, ec);
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return raiseOnDOMError(IMPL-&gt;toggle(token, force));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMDocumentTypemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMDocumentType.mm (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMDocumentType.mm        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit/mac/DOM/DOMDocumentType.mm        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -76,9 +76,7 @@
</span><span class="cx"> - (void)remove
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    IMPL-&gt;remove(ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(IMPL-&gt;remove());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMElementmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMElement.mm (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMElement.mm        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit/mac/DOM/DOMElement.mm        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -492,9 +492,7 @@
</span><span class="cx"> - (void)remove
</span><span class="cx"> {
</span><span class="cx">     JSMainThreadNullState state;
</span><del>-    ExceptionCode ec = 0;
-    unwrap(*self).remove(ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(unwrap(*self).remove());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMElement *)querySelector:(NSString *)selectors
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMHTMLmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMHTML.mm (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMHTML.mm        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit/mac/DOM/DOMHTML.mm        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -49,8 +49,8 @@
</span><span class="cx"> #import &lt;WebCore/markup.h&gt;
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><ins>+#import &quot;DOMHTMLElementInternal.h&quot;
</ins><span class="cx"> #import &lt;WebCore/Autocapitalize.h&gt;
</span><del>-#import &quot;DOMHTMLElementInternal.h&quot;
</del><span class="cx"> #import &lt;WebCore/HTMLTextFormControlElement.h&gt;
</span><span class="cx"> #import &lt;WebCore/JSMainThreadExecState.h&gt;
</span><span class="cx"> #import &lt;WebCore/RenderLayer.h&gt;
</span><span class="lines">@@ -58,6 +58,10 @@
</span><span class="cx"> #import &lt;WebCore/WebCoreThreadMessage.h&gt;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+// FIXME: We should move all these into the various specific element source files.
+// These were originally here because they were hand written and the rest generated,
+// but that is no longer true.
+
</ins><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx"> 
</span><span class="cx"> using namespace WebCore;
</span><span class="lines">@@ -180,6 +184,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><ins>+
</ins><span class="cx"> - (BOOL)_isAutofilled
</span><span class="cx"> {
</span><span class="cx">     return core(self)-&gt;isAutoFilled();
</span><span class="lines">@@ -267,11 +272,11 @@
</span><span class="cx"> - (void)setValueAsNumberWithChangeEvent:(double)newValueAsNumber
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    core(self)-&gt;setValueAsNumber(newValueAsNumber, ec, DispatchInputAndChangeEvent);
</del><ins>+    core(self)-&gt;setValueAsNumber(newValueAsNumber, DispatchInputAndChangeEvent);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> Class kitClass(WebCore::HTMLCollection* collection)
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMHTMLCanvasElementmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMHTMLCanvasElement.mm (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMHTMLCanvasElement.mm        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit/mac/DOM/DOMHTMLCanvasElement.mm        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -65,10 +65,7 @@
</span><span class="cx"> - (NSString *)toDataURL:(NSString *)type
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    NSString *result = IMPL-&gt;toDataURL(type, ec);
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return raiseOnDOMError(IMPL-&gt;toDataURL(type));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMHTMLElementmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMHTMLElement.mm (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMHTMLElement.mm        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit/mac/DOM/DOMHTMLElement.mm        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -161,9 +161,7 @@
</span><span class="cx"> - (void)setInnerText:(NSString *)newInnerText
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    IMPL-&gt;setInnerText(newInnerText, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(IMPL-&gt;setInnerText(newInnerText));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (NSString *)outerText
</span><span class="lines">@@ -175,9 +173,7 @@
</span><span class="cx"> - (void)setOuterText:(NSString *)newOuterText
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    IMPL-&gt;setOuterText(newOuterText, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(IMPL-&gt;setOuterText(newOuterText));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (NSString *)contentEditable
</span><span class="lines">@@ -189,9 +185,7 @@
</span><span class="cx"> - (void)setContentEditable:(NSString *)newContentEditable
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    IMPL-&gt;setContentEditable(newContentEditable, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(IMPL-&gt;setContentEditable(newContentEditable));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (BOOL)isContentEditable
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMHTMLInputElementmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMHTMLInputElement.mm (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMHTMLInputElement.mm        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit/mac/DOM/DOMHTMLInputElement.mm        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -281,9 +281,7 @@
</span><span class="cx"> - (void)setMaxLength:(int)newMaxLength
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    IMPL-&gt;setMaxLength(newMaxLength, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(IMPL-&gt;setMaxLength(newMaxLength));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (NSString *)min
</span><span class="lines">@@ -451,9 +449,7 @@
</span><span class="cx"> - (void)setValueAsDate:(NSTimeInterval)newValueAsDate
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    IMPL-&gt;setValueAsDate(core(newValueAsDate), ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(IMPL-&gt;setValueAsDate(core(newValueAsDate)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (double)valueAsNumber
</span><span class="lines">@@ -465,9 +461,7 @@
</span><span class="cx"> - (void)setValueAsNumber:(double)newValueAsNumber
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    IMPL-&gt;setValueAsNumber(newValueAsNumber, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(IMPL-&gt;setValueAsNumber(newValueAsNumber));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (unsigned)width
</span><span class="lines">@@ -643,17 +637,13 @@
</span><span class="cx"> - (void)stepUp:(int)n
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    IMPL-&gt;stepUp(n, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(IMPL-&gt;stepUp(n));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)stepDown:(int)n
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    IMPL-&gt;stepDown(n, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(IMPL-&gt;stepDown(n));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (BOOL)checkValidity
</span><span class="lines">@@ -677,17 +667,13 @@
</span><span class="cx"> - (void)setRangeText:(NSString *)replacement
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    IMPL-&gt;setRangeText(replacement, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(IMPL-&gt;setRangeText(replacement));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)setRangeText:(NSString *)replacement start:(unsigned)start end:(unsigned)end selectionMode:(NSString *)selectionMode
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    IMPL-&gt;setRangeText(replacement, start, end, selectionMode, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(IMPL-&gt;setRangeText(replacement, start, end, selectionMode));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)setSelectionRange:(int)start end:(int)end
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMHTMLMarqueeElementmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMHTMLMarqueeElement.mm (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMHTMLMarqueeElement.mm        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit/mac/DOM/DOMHTMLMarqueeElement.mm        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -108,9 +108,7 @@
</span><span class="cx"> - (void)setLoop:(int)newLoop
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    IMPL-&gt;setLoop(newLoop, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(IMPL-&gt;setLoop(newLoop));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (unsigned)scrollAmount
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMHTMLMediaElementmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMHTMLMediaElement.mm (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMHTMLMediaElement.mm        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit/mac/DOM/DOMHTMLMediaElement.mm        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -127,9 +127,7 @@
</span><span class="cx"> - (void)setCurrentTime:(double)newCurrentTime
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    IMPL-&gt;setCurrentTime(newCurrentTime, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(IMPL-&gt;setCurrentTimeForBindings(newCurrentTime));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (double)duration
</span><span class="lines">@@ -231,9 +229,7 @@
</span><span class="cx"> - (void)setVolume:(double)newVolume
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    IMPL-&gt;setVolume(newVolume, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(IMPL-&gt;setVolume(newVolume));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (BOOL)muted
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMHTMLOptionsCollectionmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMHTMLOptionsCollection.mm (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMHTMLOptionsCollection.mm        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit/mac/DOM/DOMHTMLOptionsCollection.mm        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -76,9 +76,7 @@
</span><span class="cx"> - (void)setLength:(unsigned)newLength
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    IMPL-&gt;setLength(newLength, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(IMPL-&gt;setLength(newLength));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMNode *)namedItem:(NSString *)name
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMHTMLTableElementmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMHTMLTableElement.mm (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMHTMLTableElement.mm        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit/mac/DOM/DOMHTMLTableElement.mm        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -56,11 +56,7 @@
</span><span class="cx"> - (void)setCaption:(DOMHTMLTableCaptionElement *)newCaption
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    ASSERT(newCaption);
-
-    WebCore::ExceptionCode ec = 0;
-    IMPL-&gt;setCaption(core(newCaption), ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(IMPL-&gt;setCaption(core(newCaption)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMHTMLTableSectionElement *)tHead
</span><span class="lines">@@ -72,11 +68,7 @@
</span><span class="cx"> - (void)setTHead:(DOMHTMLTableSectionElement *)newTHead
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    ASSERT(newTHead);
-
-    WebCore::ExceptionCode ec = 0;
-    IMPL-&gt;setTHead(core(newTHead), ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(IMPL-&gt;setTHead(core(newTHead)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMHTMLTableSectionElement *)tFoot
</span><span class="lines">@@ -88,11 +80,7 @@
</span><span class="cx"> - (void)setTFoot:(DOMHTMLTableSectionElement *)newTFoot
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    ASSERT(newTFoot);
-
-    WebCore::ExceptionCode ec = 0;
-    IMPL-&gt;setTFoot(core(newTFoot), ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(IMPL-&gt;setTFoot(core(newTFoot)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMHTMLCollection *)rows
</span><span class="lines">@@ -260,18 +248,13 @@
</span><span class="cx"> - (DOMHTMLElement *)insertRow:(int)index
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    DOMHTMLElement *result = kit(WTF::getPtr(IMPL-&gt;insertRow(index, ec)));
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return kit(raiseOnDOMError(IMPL-&gt;insertRow(index)).ptr());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)deleteRow:(int)index
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    IMPL-&gt;deleteRow(index, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(IMPL-&gt;deleteRow(index));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMHTMLTableRowElementmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMHTMLTableRowElement.mm (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMHTMLTableRowElement.mm        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit/mac/DOM/DOMHTMLTableRowElement.mm        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -124,18 +124,13 @@
</span><span class="cx"> - (DOMHTMLElement *)insertCell:(int)index
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    DOMHTMLElement *result = kit(WTF::getPtr(IMPL-&gt;insertCell(index, ec)));
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return kit(raiseOnDOMError(IMPL-&gt;insertCell(index)).ptr());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)deleteCell:(int)index
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    IMPL-&gt;deleteCell(index, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(IMPL-&gt;deleteCell(index));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMHTMLTableSectionElementmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMHTMLTableSectionElement.mm (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMHTMLTableSectionElement.mm        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit/mac/DOM/DOMHTMLTableSectionElement.mm        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -100,18 +100,13 @@
</span><span class="cx"> - (DOMHTMLElement *)insertRow:(int)index
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    DOMHTMLElement *result = kit(WTF::getPtr(IMPL-&gt;insertRow(index, ec)));
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return kit(raiseOnDOMError(IMPL-&gt;insertRow(index)).ptr());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)deleteRow:(int)index
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    IMPL-&gt;deleteRow(index, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(IMPL-&gt;deleteRow(index));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMHTMLTextAreaElementmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMHTMLTextAreaElement.mm (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMHTMLTextAreaElement.mm        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit/mac/DOM/DOMHTMLTextAreaElement.mm        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -106,9 +106,7 @@
</span><span class="cx"> - (void)setMaxLength:(int)newMaxLength
</span><span class="cx"> {
</span><span class="cx">     JSMainThreadNullState state;
</span><del>-    ExceptionCode ec = 0;
-    unwrap(*self).setMaxLength(newMaxLength, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(unwrap(*self).setMaxLength(newMaxLength));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (NSString *)name
</span><span class="lines">@@ -312,17 +310,13 @@
</span><span class="cx"> - (void)setRangeText:(NSString *)replacement
</span><span class="cx"> {
</span><span class="cx">     JSMainThreadNullState state;
</span><del>-    ExceptionCode ec = 0;
-    unwrap(*self).setRangeText(replacement, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(unwrap(*self).setRangeText(replacement));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)setRangeText:(NSString *)replacement start:(unsigned)start end:(unsigned)end selectionMode:(NSString *)selectionMode
</span><span class="cx"> {
</span><span class="cx">     JSMainThreadNullState state;
</span><del>-    ExceptionCode ec = 0;
-    unwrap(*self).setRangeText(replacement, start, end, selectionMode, ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(unwrap(*self).setRangeText(replacement, start, end, selectionMode));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)setSelectionRange:(int)start end:(int)end
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMHTMLVideoElementmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMHTMLVideoElement.mm (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMHTMLVideoElement.mm        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit/mac/DOM/DOMHTMLVideoElement.mm        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -117,9 +117,7 @@
</span><span class="cx"> - (void)webkitEnterFullscreen
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    IMPL-&gt;webkitEnterFullscreen(ec);
-    raiseOnDOMError(ec);
</del><ins>+    raiseOnDOMError(IMPL-&gt;webkitEnterFullscreen());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)webkitExitFullscreen
</span><span class="lines">@@ -130,16 +128,12 @@
</span><span class="cx"> 
</span><span class="cx"> - (void)webkitEnterFullScreen
</span><span class="cx"> {
</span><del>-    WebCore::JSMainThreadNullState state;
-    WebCore::ExceptionCode ec = 0;
-    IMPL-&gt;webkitEnterFullScreen(ec);
-    raiseOnDOMError(ec);
</del><ins>+    [self webkitEnterFullscreen];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)webkitExitFullScreen
</span><span class="cx"> {
</span><del>-    WebCore::JSMainThreadNullState state;
-    IMPL-&gt;webkitExitFullScreen();
</del><ins>+    [self webkitExitFullscreen];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMTimeRangesmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMTimeRanges.mm (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMTimeRanges.mm        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit/mac/DOM/DOMTimeRanges.mm        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -63,19 +63,13 @@
</span><span class="cx"> - (double)start:(unsigned)index
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    double result = IMPL-&gt;start(index, ec);
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return raiseOnDOMError(IMPL-&gt;start(index));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (double)end:(unsigned)index
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><del>-    WebCore::ExceptionCode ec = 0;
-    double result = IMPL-&gt;end(index, ec);
-    raiseOnDOMError(ec);
-    return result;
</del><ins>+    return raiseOnDOMError(IMPL-&gt;end(index));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebKitwinChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/ChangeLog (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/ChangeLog        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit/win/ChangeLog        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2016-10-28  Darin Adler  &lt;darin@apple.com&gt;
+
+        Move all classes in the HTML directory from ExceptionCode to Exception
+        https://bugs.webkit.org/show_bug.cgi?id=163876
+
+        Reviewed by Sam Weinig.
+
+        * DOMHTMLClasses.cpp:
+        (DOMHTMLElement::setInnerText): Update exception handling.
+        * FullscreenVideoController.cpp:
+        (FullscreenVideoController::setVolume): Ditto.
+
</ins><span class="cx"> 2016-10-27  Brent Fulgham  &lt;bfulgham@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed build fix.
</span></span></pre></div>
<a id="trunkSourceWebKitwinDOMHTMLClassescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/DOMHTMLClasses.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/DOMHTMLClasses.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit/win/DOMHTMLClasses.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -534,8 +534,7 @@
</span><span class="cx">     ASSERT(is&lt;HTMLElement&gt;(m_element));
</span><span class="cx">     HTMLElement* htmlElement = downcast&lt;HTMLElement&gt;(m_element);
</span><span class="cx">     WTF::String textString(text, SysStringLen(text));
</span><del>-    WebCore::ExceptionCode ec = 0;
-    htmlElement-&gt;setInnerText(textString, ec);
</del><ins>+    htmlElement-&gt;setInnerText(textString);
</ins><span class="cx">     return S_OK;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKitwinFullscreenVideoControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/FullscreenVideoController.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/FullscreenVideoController.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit/win/FullscreenVideoController.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -39,15 +39,16 @@
</span><span class="cx"> #include &lt;WebCore/GraphicsContext.h&gt;
</span><span class="cx"> #include &lt;WebCore/HWndDC.h&gt;
</span><span class="cx"> #include &lt;WebCore/Page.h&gt;
</span><del>-#if USE(CA)
-#include &lt;WebCore/PlatformCALayerClient.h&gt;
-#include &lt;WebCore/PlatformCALayerWin.h&gt;
-#endif
</del><span class="cx"> #include &lt;WebCore/TextRun.h&gt;
</span><span class="cx"> #include &lt;WebKitSystemInterface/WebKitSystemInterface.h&gt;
</span><span class="cx"> #include &lt;windowsx.h&gt;
</span><span class="cx"> #include &lt;wtf/StdLibExtras.h&gt;
</span><span class="cx"> 
</span><ins>+#if USE(CA)
+#include &lt;WebCore/PlatformCALayerClient.h&gt;
+#include &lt;WebCore/PlatformCALayerWin.h&gt;
+#endif
+
</ins><span class="cx"> using namespace std;
</span><span class="cx"> using namespace WebCore;
</span><span class="cx"> 
</span><span class="lines">@@ -347,10 +348,8 @@
</span><span class="cx"> 
</span><span class="cx"> void FullscreenVideoController::setVolume(float volume)
</span><span class="cx"> {
</span><del>-    if (m_videoElement) {
-        ExceptionCode ec;
-        m_videoElement-&gt;setVolume(volume, ec);
-    }
</del><ins>+    if (m_videoElement)
+        m_videoElement-&gt;setVolume(volume);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> float FullscreenVideoController::currentTime() const
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit2/ChangeLog        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -1,3 +1,50 @@
</span><ins>+2016-10-28  Darin Adler  &lt;darin@apple.com&gt;
+
+        Move all classes in the HTML directory from ExceptionCode to Exception
+        https://bugs.webkit.org/show_bug.cgi?id=163876
+
+        Reviewed by Sam Weinig.
+
+        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMTokenList.cpp:
+        (webkit_dom_dom_token_list_add): Updated exception handling.
+        (webkit_dom_dom_token_list_remove): Ditto.
+        (webkit_dom_dom_token_list_toggle): Ditto.
+        (webkit_dom_dom_token_list_replace): Ditto.
+        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp:
+        (webkit_dom_element_remove): Ditto.
+        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLElement.cpp:
+        (webkit_dom_html_element_set_inner_text): Ditto.
+        (webkit_dom_html_element_set_outer_text): Ditto.
+        (webkit_dom_html_element_set_content_editable): Ditto.
+        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLInputElement.cpp:
+        (webkit_dom_html_input_element_set_max_length): Ditto.
+        (webkit_dom_html_input_element_set_size): Ditto.
+        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLSelectElement.cpp:
+        (webkit_dom_html_select_element_set_length): Ditto.
+        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableElement.cpp:
+        (webkit_dom_html_table_element_insert_row): Ditto.
+        (webkit_dom_html_table_element_delete_row): Ditto.
+        (webkit_dom_html_table_element_set_caption): Ditto.
+        (webkit_dom_html_table_element_set_t_head): Ditto.
+        (webkit_dom_html_table_element_set_t_foot): Ditto.
+        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableRowElement.cpp:
+        (webkit_dom_html_table_row_element_insert_cell): Ditto.
+        (webkit_dom_html_table_row_element_delete_cell): Ditto.
+        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableSectionElement.cpp:
+        (webkit_dom_html_table_section_element_insert_row): Ditto.
+        (webkit_dom_html_table_section_element_delete_row): Ditto.
+
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::editorState): Removed ASSERT_NO_EXCEPTION.
+
+        * WebProcess/WebPage/ios/WebPageIOS.mm:
+        (WebKit::WebPage::setAssistedNodeValueAsNumber): Removed ASSERT_NO_EXCEPTION.
+
+        * WebProcess/cocoa/WebPlaybackSessionManager.mm:
+        (WebKit::WebPlaybackSessionManager::seekableRangesChanged):
+        Changed the code to use a different interface to TimeRange that does
+        not involve exceptions.
+
</ins><span class="cx"> 2016-10-28  Wenson Hsieh  &lt;wenson_hsieh@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         iOS autocorrection does not trigger an input event of inputType &quot;insertReplacementText&quot;
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMDOMTokenListcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMTokenList.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMTokenList.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMTokenList.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -193,10 +193,9 @@
</span><span class="cx">     while (gchar* variadicParameter = va_arg(variadicParameterList, gchar*))
</span><span class="cx">         convertedTokens.append(WTF::String::fromUTF8(variadicParameter));
</span><span class="cx">     va_end(variadicParameterList);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    item-&gt;add(WTFMove(convertedTokens), ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;add(WTFMove(convertedTokens));
+    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">@@ -213,10 +212,9 @@
</span><span class="cx">     while (gchar* variadicParameter = va_arg(variadicParameterList, gchar*))
</span><span class="cx">         convertedTokens.append(WTF::String::fromUTF8(variadicParameter));
</span><span class="cx">     va_end(variadicParameterList);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    item-&gt;remove(WTFMove(convertedTokens), ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;remove(WTFMove(convertedTokens));
+    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">@@ -229,13 +227,13 @@
</span><span class="cx">     g_return_val_if_fail(!error || !*error, FALSE);
</span><span class="cx">     WebCore::DOMTokenList* item = WebKit::core(self);
</span><span class="cx">     WTF::String convertedToken = WTF::String::fromUTF8(token);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    gboolean result = item-&gt;toggle(convertedToken, force, ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;toggle(convertedToken, force);
+    if (result.hasException()) {
+        WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx">         g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
</span><ins>+        return false;
</ins><span class="cx">     }
</span><del>-    return result;
</del><ins>+    return result.releaseReturnValue();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void webkit_dom_dom_token_list_replace(WebKitDOMDOMTokenList* self, const gchar* token, const gchar* newToken, GError** error)
</span><span class="lines">@@ -248,10 +246,9 @@
</span><span class="cx">     WebCore::DOMTokenList* item = WebKit::core(self);
</span><span class="cx">     WTF::String convertedToken = WTF::String::fromUTF8(token);
</span><span class="cx">     WTF::String convertedNewToken = WTF::String::fromUTF8(newToken);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    item-&gt;replace(convertedToken, convertedNewToken, ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;replace(convertedToken, convertedNewToken);
+    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="trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -999,10 +999,9 @@
</span><span class="cx">     g_return_if_fail(WEBKIT_DOM_IS_ELEMENT(self));
</span><span class="cx">     g_return_if_fail(!error || !*error);
</span><span class="cx">     WebCore::Element* item = WebKit::core(self);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    item-&gt;remove(ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;remove();
+    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="trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMHTMLElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLElement.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLElement.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLElement.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -557,10 +557,9 @@
</span><span class="cx">     g_return_if_fail(!error || !*error);
</span><span class="cx">     WebCore::HTMLElement* item = WebKit::core(self);
</span><span class="cx">     WTF::String convertedValue = WTF::String::fromUTF8(value);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    item-&gt;setInnerText(convertedValue, ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;setInnerText(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">@@ -582,10 +581,9 @@
</span><span class="cx">     g_return_if_fail(!error || !*error);
</span><span class="cx">     WebCore::HTMLElement* item = WebKit::core(self);
</span><span class="cx">     WTF::String convertedValue = WTF::String::fromUTF8(value);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    item-&gt;setOuterText(convertedValue, ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;setOuterText(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">@@ -607,10 +605,9 @@
</span><span class="cx">     g_return_if_fail(!error || !*error);
</span><span class="cx">     WebCore::HTMLElement* item = WebKit::core(self);
</span><span class="cx">     WTF::String convertedValue = WTF::String::fromUTF8(value);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    item-&gt;setContentEditable(convertedValue, ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;setContentEditable(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="trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMHTMLInputElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLInputElement.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLInputElement.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLInputElement.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -727,10 +727,9 @@
</span><span class="cx">     g_return_if_fail(WEBKIT_DOM_IS_HTML_INPUT_ELEMENT(self));
</span><span class="cx">     g_return_if_fail(!error || !*error);
</span><span class="cx">     WebCore::HTMLInputElement* item = WebKit::core(self);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    item-&gt;setMaxLength(value, ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;setMaxLength(value);
+    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">@@ -803,10 +802,9 @@
</span><span class="cx">     g_return_if_fail(WEBKIT_DOM_IS_HTML_INPUT_ELEMENT(self));
</span><span class="cx">     g_return_if_fail(!error || !*error);
</span><span class="cx">     WebCore::HTMLInputElement* item = WebKit::core(self);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    item-&gt;setSize(value, ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;setSize(value);
+    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 (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLSelectElement.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLSelectElement.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -515,10 +515,9 @@
</span><span class="cx">     g_return_if_fail(WEBKIT_DOM_IS_HTML_SELECT_ELEMENT(self));
</span><span class="cx">     g_return_if_fail(!error || !*error);
</span><span class="cx">     WebCore::HTMLSelectElement* item = WebKit::core(self);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    item-&gt;setLength(value, ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;setLength(value);
+    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="trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMHTMLTableElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableElement.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableElement.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableElement.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -400,13 +400,13 @@
</span><span class="cx">     g_return_val_if_fail(WEBKIT_DOM_IS_HTML_TABLE_ELEMENT(self), 0);
</span><span class="cx">     g_return_val_if_fail(!error || !*error, 0);
</span><span class="cx">     WebCore::HTMLTableElement* item = WebKit::core(self);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    RefPtr&lt;WebCore::HTMLElement&gt; gobjectResult = WTF::getPtr(item-&gt;insertRow(index, ec));
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;insertRow(index);
+    if (result.hasException()) {
+        WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx">         g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
</span><ins>+        return nullptr;
</ins><span class="cx">     }
</span><del>-    return WebKit::kit(gobjectResult.get());
</del><ins>+    return WebKit::kit(result.releaseReturnValue().ptr());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void webkit_dom_html_table_element_delete_row(WebKitDOMHTMLTableElement* self, glong index, GError** error)
</span><span class="lines">@@ -415,10 +415,9 @@
</span><span class="cx">     g_return_if_fail(WEBKIT_DOM_IS_HTML_TABLE_ELEMENT(self));
</span><span class="cx">     g_return_if_fail(!error || !*error);
</span><span class="cx">     WebCore::HTMLTableElement* item = WebKit::core(self);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    item-&gt;deleteRow(index, ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;deleteRow(index);
+    if (result.hasException()) {
+        WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx">         g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -440,10 +439,9 @@
</span><span class="cx">     g_return_if_fail(!error || !*error);
</span><span class="cx">     WebCore::HTMLTableElement* item = WebKit::core(self);
</span><span class="cx">     WebCore::HTMLTableCaptionElement* convertedValue = WebKit::core(value);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    item-&gt;setCaption(convertedValue, ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;setCaption(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">@@ -465,10 +463,9 @@
</span><span class="cx">     g_return_if_fail(!error || !*error);
</span><span class="cx">     WebCore::HTMLTableElement* item = WebKit::core(self);
</span><span class="cx">     WebCore::HTMLTableSectionElement* convertedValue = WebKit::core(value);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    item-&gt;setTHead(convertedValue, ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;setTHead(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">@@ -490,10 +487,9 @@
</span><span class="cx">     g_return_if_fail(!error || !*error);
</span><span class="cx">     WebCore::HTMLTableElement* item = WebKit::core(self);
</span><span class="cx">     WebCore::HTMLTableSectionElement* convertedValue = WebKit::core(value);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    item-&gt;setTFoot(convertedValue, ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;setTFoot(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="trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMHTMLTableRowElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableRowElement.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableRowElement.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableRowElement.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -268,13 +268,13 @@
</span><span class="cx">     g_return_val_if_fail(WEBKIT_DOM_IS_HTML_TABLE_ROW_ELEMENT(self), 0);
</span><span class="cx">     g_return_val_if_fail(!error || !*error, 0);
</span><span class="cx">     WebCore::HTMLTableRowElement* item = WebKit::core(self);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    RefPtr&lt;WebCore::HTMLElement&gt; gobjectResult = WTF::getPtr(item-&gt;insertCell(index, ec));
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;insertCell(index);
+    if (result.hasException()) {
+        WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx">         g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
</span><ins>+        return nullptr;
</ins><span class="cx">     }
</span><del>-    return WebKit::kit(gobjectResult.get());
</del><ins>+    return WebKit::kit(result.releaseReturnValue().ptr());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void webkit_dom_html_table_row_element_delete_cell(WebKitDOMHTMLTableRowElement* self, glong index, GError** error)
</span><span class="lines">@@ -283,10 +283,9 @@
</span><span class="cx">     g_return_if_fail(WEBKIT_DOM_IS_HTML_TABLE_ROW_ELEMENT(self));
</span><span class="cx">     g_return_if_fail(!error || !*error);
</span><span class="cx">     WebCore::HTMLTableRowElement* item = WebKit::core(self);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    item-&gt;deleteCell(index, ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;deleteCell(index);
+    if (result.hasException()) {
+        WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx">         g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
</span><span class="cx">     }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleAPIgtkDOMWebKitDOMHTMLTableSectionElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableSectionElement.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableSectionElement.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableSectionElement.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -223,13 +223,12 @@
</span><span class="cx">     g_return_val_if_fail(WEBKIT_DOM_IS_HTML_TABLE_SECTION_ELEMENT(self), 0);
</span><span class="cx">     g_return_val_if_fail(!error || !*error, 0);
</span><span class="cx">     WebCore::HTMLTableSectionElement* item = WebKit::core(self);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    RefPtr&lt;WebCore::HTMLElement&gt; gobjectResult = WTF::getPtr(item-&gt;insertRow(index, ec));
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;insertRow(index);
+    if (result.hasException()) {
+        WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx">         g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
</span><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_html_table_section_element_delete_row(WebKitDOMHTMLTableSectionElement* self, glong index, GError** error)
</span><span class="lines">@@ -238,10 +237,9 @@
</span><span class="cx">     g_return_if_fail(WEBKIT_DOM_IS_HTML_TABLE_SECTION_ELEMENT(self));
</span><span class="cx">     g_return_if_fail(!error || !*error);
</span><span class="cx">     WebCore::HTMLTableSectionElement* item = WebKit::core(self);
</span><del>-    WebCore::ExceptionCode ec = 0;
-    item-&gt;deleteRow(index, ec);
-    if (ec) {
-        WebCore::ExceptionCodeDescription ecdesc(ec);
</del><ins>+    auto result = item-&gt;deleteRow(index);
+    if (result.hasException()) {
+        WebCore::ExceptionCodeDescription ecdesc(result.releaseException().code());
</ins><span class="cx">         g_set_error_literal(error, g_quark_from_string(&quot;WEBKIT_DOM&quot;), ecdesc.code, ecdesc.name);
</span><span class="cx">     }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -893,7 +893,7 @@
</span><span class="cx">                     postLayoutData.enclosingListType = NoList;
</span><span class="cx"> 
</span><span class="cx">                 if (nodeToRemove)
</span><del>-                    nodeToRemove-&gt;remove(ASSERT_NO_EXCEPTION);
</del><ins>+                    nodeToRemove-&gt;remove();
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageiosWebPageIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -753,27 +753,21 @@
</span><span class="cx"> 
</span><span class="cx"> void WebPage::setAssistedNodeValue(const String&amp; value)
</span><span class="cx"> {
</span><del>-    if (is&lt;HTMLInputElement&gt;(m_assistedNode.get())) {
-        HTMLInputElement&amp; element = downcast&lt;HTMLInputElement&gt;(*m_assistedNode);
-        element.setValue(value, DispatchInputAndChangeEvent);
-    }
</del><span class="cx">     // FIXME: should also handle the case of HTMLSelectElement.
</span><ins>+    if (is&lt;HTMLInputElement&gt;(m_assistedNode.get()))
+        downcast&lt;HTMLInputElement&gt;(*m_assistedNode).setValue(value, DispatchInputAndChangeEvent);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPage::setAssistedNodeValueAsNumber(double value)
</span><span class="cx"> {
</span><del>-    if (is&lt;HTMLInputElement&gt;(m_assistedNode.get())) {
-        HTMLInputElement&amp; element = downcast&lt;HTMLInputElement&gt;(*m_assistedNode);
-        element.setValueAsNumber(value, ASSERT_NO_EXCEPTION, DispatchInputAndChangeEvent);
-    }
</del><ins>+    if (is&lt;HTMLInputElement&gt;(m_assistedNode.get()))
+        downcast&lt;HTMLInputElement&gt;(*m_assistedNode).setValueAsNumber(value, DispatchInputAndChangeEvent);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPage::setAssistedNodeSelectedIndex(uint32_t index, bool allowMultipleSelection)
</span><span class="cx"> {
</span><del>-    if (!is&lt;HTMLSelectElement&gt;(m_assistedNode.get()))
-        return;
-    HTMLSelectElement&amp; select = downcast&lt;HTMLSelectElement&gt;(*m_assistedNode);
-    select.optionSelectedByUser(index, true, allowMultipleSelection);
</del><ins>+    if (is&lt;HTMLSelectElement&gt;(m_assistedNode.get()))
+        downcast&lt;HTMLSelectElement&gt;(*m_assistedNode).optionSelectedByUser(index, true, allowMultipleSelection);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPage::showInspectorHighlight(const WebCore::Highlight&amp; highlight)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcesscocoaWebPlaybackSessionManagermm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.mm (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.mm        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.mm        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -316,14 +316,11 @@
</span><span class="cx"> void WebPlaybackSessionManager::seekableRangesChanged(uint64_t contextId, const WebCore::TimeRanges&amp; timeRanges)
</span><span class="cx"> {
</span><span class="cx">     Vector&lt;std::pair&lt;double, double&gt;&gt; rangesVector;
</span><del>-
</del><span class="cx">     for (unsigned i = 0; i &lt; timeRanges.length(); i++) {
</span><del>-        ExceptionCode exceptionCode;
-        double start = timeRanges.start(i, exceptionCode);
-        double end = timeRanges.end(i, exceptionCode);
-        rangesVector.append(std::pair&lt;double, double&gt;(start, end));
</del><ins>+        double start = timeRanges.ranges().start(i).toDouble();
+        double end = timeRanges.ranges().end(i).toDouble();
+        rangesVector.append({ start, end });
</ins><span class="cx">     }
</span><del>-
</del><span class="cx">     m_page-&gt;send(Messages::WebPlaybackSessionManagerProxy::SetSeekableRangesVector(contextId, WTFMove(rangesVector)), m_page-&gt;pageID());
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Tools/ChangeLog        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -1,3 +1,14 @@
</span><ins>+2016-10-28  Darin Adler  &lt;darin@apple.com&gt;
+
+        Move all classes in the HTML directory from ExceptionCode to Exception
+        https://bugs.webkit.org/show_bug.cgi?id=163876
+
+        Reviewed by Sam Weinig.
+
+        * TestWebKitAPI/Tests/WebCore/TimeRanges.cpp:
+        (TestWebKitAPI::ToString): Updated for changes to the TimeRanges class.
+        (TestWebKitAPI::TEST): Ditto.
+
</ins><span class="cx"> 2016-10-28  Devin Rousso  &lt;dcrousso+webkit@gmail.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed, changed Devin Rousso's email and nick.
</span></span></pre></div>
<a id="trunkToolsTestWebKitAPITestsWebCoreTimeRangescpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/TestWebKitAPI/Tests/WebCore/TimeRanges.cpp (208095 => 208096)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/TestWebKitAPI/Tests/WebCore/TimeRanges.cpp        2016-10-29 02:12:41 UTC (rev 208095)
+++ trunk/Tools/TestWebKitAPI/Tests/WebCore/TimeRanges.cpp        2016-10-29 02:32:20 UTC (rev 208096)
</span><span class="lines">@@ -31,8 +31,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &lt;WebCore/TimeRanges.h&gt;
</span><span class="cx"> 
</span><del>-#include &lt;WebCore/ExceptionCodePlaceholder.h&gt;
-
</del><span class="cx"> using namespace WebCore;
</span><span class="cx"> 
</span><span class="cx"> namespace TestWebKitAPI {
</span><span class="lines">@@ -42,7 +40,7 @@
</span><span class="cx">     std::stringstream ss;
</span><span class="cx">     ss &lt;&lt; &quot;{&quot;;
</span><span class="cx">     for (unsigned i = 0; i &lt; ranges.length(); ++i)
</span><del>-        ss &lt;&lt; &quot; [&quot; &lt;&lt; ranges.start(i, IGNORE_EXCEPTION) &lt;&lt; &quot;,&quot; &lt;&lt; ranges.end(i, IGNORE_EXCEPTION) &lt;&lt; &quot;)&quot;;
</del><ins>+        ss &lt;&lt; &quot; [&quot; &lt;&lt; ranges.start(i).releaseReturnValue() &lt;&lt; &quot;,&quot; &lt;&lt; ranges.end(i).releaseReturnValue() &lt;&lt; &quot;)&quot;;
</ins><span class="cx">     ss &lt;&lt; &quot; }&quot;;
</span><span class="cx"> 
</span><span class="cx">     return ss.str();
</span><span class="lines">@@ -74,7 +72,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Add the values in rangeA to rangeB in reverse order.
</span><span class="cx">     for (int i = rangeA-&gt;length() - 1; i &gt;= 0; --i)
</span><del>-        rangeB-&gt;add(rangeA-&gt;start(i, IGNORE_EXCEPTION), rangeA-&gt;end(i, IGNORE_EXCEPTION));
</del><ins>+        rangeB-&gt;add(rangeA-&gt;start(i).releaseReturnValue(), rangeA-&gt;end(i).releaseReturnValue());
</ins><span class="cx"> 
</span><span class="cx">     ASSERT_RANGE(expected, rangeB);
</span><span class="cx"> }
</span></span></pre>
</div>
</div>

</body>
</html>