<!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>[206252] trunk/Source/WebCore</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/206252">206252</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2016-09-22 00:35:46 -0700 (Thu, 22 Sep 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Improve DeferredWrapper code
https://bugs.webkit.org/show_bug.cgi?id=161787

Patch by Youenn Fablet &lt;youenn@apple.com&gt; on 2016-09-22
Reviewed by Darin Adler.

No change of behavior.

Renaming DeferredWrapper to DeferredPromise.
Adding create method that creates the underlying JSC::JSPromiseDeferred in non-worker environments.
Updated create method to take references.
Introducing domWindow helper accessor into JSDOMObject to ease creation of promise in non-worker environments.
Doing some minor clean up (renaming of m_wrapper to m_promiseDeferred, accessor change).

* Modules/applepay/ApplePaySession.cpp:
(WebCore::ApplePaySession::canMakePaymentsWithActiveCard):
* Modules/applepay/ApplePaySession.h:
* Modules/fetch/DOMWindowFetch.cpp:
(WebCore::DOMWindowFetch::fetch):
* Modules/fetch/DOMWindowFetch.h: Updated to take a DeferredPromise to make it consistent with WorkerGlobalScopeFetch.
* Modules/fetch/FetchBody.cpp:
(WebCore::FetchBody::arrayBuffer):
(WebCore::FetchBody::blob):
(WebCore::FetchBody::json):
(WebCore::FetchBody::text):
(WebCore::FetchBody::consume):
(WebCore::FetchBody::consumeArrayBuffer):
(WebCore::FetchBody::consumeArrayBufferView):
(WebCore::FetchBody::consumeText):
(WebCore::FetchBody::consumeBlob):
* Modules/fetch/FetchBody.h:
(WebCore::FetchBody::formData):
* Modules/fetch/FetchBodyConsumer.cpp:
(WebCore::FetchBodyConsumer::resolveWithData):
(WebCore::FetchBodyConsumer::resolve):
* Modules/fetch/FetchBodyConsumer.h:
* Modules/fetch/FetchBodyOwner.cpp:
(WebCore::FetchBodyOwner::arrayBuffer):
(WebCore::FetchBodyOwner::blob):
(WebCore::FetchBodyOwner::formData):
(WebCore::FetchBodyOwner::json):
(WebCore::FetchBodyOwner::text):
* Modules/fetch/FetchBodyOwner.h:
* Modules/fetch/FetchResponse.cpp:
(WebCore::FetchResponse::consume):
(WebCore::FetchResponse::finishConsumingStream):
* Modules/fetch/FetchResponse.h:
* Modules/fetch/WorkerGlobalScopeFetch.cpp:
(WebCore::WorkerGlobalScopeFetch::fetch):
* Modules/fetch/WorkerGlobalScopeFetch.h:
* bindings/js/JSCustomElementRegistryCustom.cpp:
(WebCore::whenDefinedPromise):
(WebCore::JSCustomElementRegistry::whenDefined):
* bindings/js/JSDOMGlobalObject.cpp:
(WebCore::JSDOMGlobalObject::visitChildren):
* bindings/js/JSDOMGlobalObject.h:
* bindings/js/JSDOMPromise.cpp:
(WebCore::DOMDeferredPromise::DOMDeferredPromise):
(WebCore::DOMDeferredPromise::~DOMDeferredPromise):
(WebCore::DOMDeferredPromise::clear):
(WebCore::DOMDeferredPromise::contextDestroyed):
(WebCore::DOMDeferredPromise::promise):
(WebCore::DOMDeferredPromise::callFunction):
(WebCore::DOMDeferredPromise::reject):
(WebCore::rejectPromiseWithExceptionIfAny):
(WebCore::fulfillPromiseWithJSON):
(WebCore::fulfillPromiseWithArrayBuffer):
(WebCore::DeferredWrapper::DeferredWrapper): Deleted.
(WebCore::DeferredWrapper::~DeferredWrapper): Deleted.
(WebCore::DeferredWrapper::clear): Deleted.
(WebCore::DeferredWrapper::contextDestroyed): Deleted.
(WebCore::DeferredWrapper::promise): Deleted.
(WebCore::DeferredWrapper::callFunction): Deleted.
(WebCore::DeferredWrapper::reject): Deleted.
* bindings/js/JSDOMPromise.h:
(WebCore::DOMDeferredPromise::create):
(WebCore::callPromiseFunction):
(WebCore::DOMPromise::DOMPromise):
(WebCore::DOMPromise::deferredPromise):
(WebCore::DOMDeferredPromise::resolveWithValue):
(WebCore::DOMDeferredPromise::resolveWithNewlyCreated):
(WebCore::DOMDeferredPromise::rejectWithValue):
(WebCore::DOMDeferredPromise::resolve):
(WebCore::DOMDeferredPromise::reject):
(WebCore::DeferredWrapper::create): Deleted.
(WebCore::DOMPromise::deferredWrapper): Deleted.
(WebCore::DeferredWrapper::resolveWithValue): Deleted.
(WebCore::DeferredWrapper::resolveWithNewlyCreated): Deleted.
(WebCore::DeferredWrapper::rejectWithValue): Deleted.
(WebCore::DeferredWrapper::resolve): Deleted.
(WebCore::DeferredWrapper::reject): Deleted.
* bindings/js/JSDOMWrapper.cpp: Introducing domWindow() accessor.
* bindings/js/JSDOMWrapper.h:
* bindings/js/JSFontFaceCustom.cpp:
(WebCore::JSFontFace::loaded):
* bindings/js/JSFontFaceSetCustom.cpp:
(WebCore::JSFontFaceSet::ready):
* bindings/js/JSMediaDevicesCustom.cpp:
(WebCore::JSMediaDevices::getUserMedia):
* bindings/js/JSMediaStreamTrackCustom.cpp:
(WebCore::JSMediaStreamTrack::applyConstraints):
* bindings/js/JSReadableStreamSourceCustom.cpp:
(WebCore::JSReadableStreamSource::start):
* bindings/js/JSWebKitSubtleCryptoCustom.cpp:
(WebCore::JSWebKitSubtleCrypto::encrypt):
(WebCore::JSWebKitSubtleCrypto::decrypt):
(WebCore::JSWebKitSubtleCrypto::sign):
(WebCore::JSWebKitSubtleCrypto::verify):
(WebCore::JSWebKitSubtleCrypto::digest):
(WebCore::JSWebKitSubtleCrypto::generateKey):
(WebCore::JSWebKitSubtleCrypto::importKey):
(WebCore::JSWebKitSubtleCrypto::exportKey):
(WebCore::JSWebKitSubtleCrypto::wrapKey):
(WebCore::JSWebKitSubtleCrypto::unwrapKey):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation):
(GenerateReturnParameters):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionPromise):
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithFloatArgumentPromise):
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithExceptionPromise):
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithOptionalIntArgumentPromise):
(WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction1Promise):
(WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction2Promise):
(WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunctionPromise):
(WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunctionWithExceptionPromise):
* dom/CustomElementRegistry.h:
(WebCore::CustomElementRegistry::promiseMap):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayApplePaySessioncpp">trunk/Source/WebCore/Modules/applepay/ApplePaySession.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayApplePaySessionh">trunk/Source/WebCore/Modules/applepay/ApplePaySession.h</a></li>
<li><a href="#trunkSourceWebCoreModulesfetchDOMWindowFetchcpp">trunk/Source/WebCore/Modules/fetch/DOMWindowFetch.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesfetchDOMWindowFetchh">trunk/Source/WebCore/Modules/fetch/DOMWindowFetch.h</a></li>
<li><a href="#trunkSourceWebCoreModulesfetchFetchBodycpp">trunk/Source/WebCore/Modules/fetch/FetchBody.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesfetchFetchBodyh">trunk/Source/WebCore/Modules/fetch/FetchBody.h</a></li>
<li><a href="#trunkSourceWebCoreModulesfetchFetchBodyConsumercpp">trunk/Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesfetchFetchBodyConsumerh">trunk/Source/WebCore/Modules/fetch/FetchBodyConsumer.h</a></li>
<li><a href="#trunkSourceWebCoreModulesfetchFetchBodyOwnercpp">trunk/Source/WebCore/Modules/fetch/FetchBodyOwner.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesfetchFetchBodyOwnerh">trunk/Source/WebCore/Modules/fetch/FetchBodyOwner.h</a></li>
<li><a href="#trunkSourceWebCoreModulesfetchFetchResponsecpp">trunk/Source/WebCore/Modules/fetch/FetchResponse.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesfetchFetchResponseh">trunk/Source/WebCore/Modules/fetch/FetchResponse.h</a></li>
<li><a href="#trunkSourceWebCoreModulesfetchWorkerGlobalScopeFetchcpp">trunk/Source/WebCore/Modules/fetch/WorkerGlobalScopeFetch.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesfetchWorkerGlobalScopeFetchh">trunk/Source/WebCore/Modules/fetch/WorkerGlobalScopeFetch.h</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSCustomElementRegistryCustomcpp">trunk/Source/WebCore/bindings/js/JSCustomElementRegistryCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMGlobalObjectcpp">trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMGlobalObjecth">trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMPromisecpp">trunk/Source/WebCore/bindings/js/JSDOMPromise.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMPromiseh">trunk/Source/WebCore/bindings/js/JSDOMPromise.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWrappercpp">trunk/Source/WebCore/bindings/js/JSDOMWrapper.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWrapperh">trunk/Source/WebCore/bindings/js/JSDOMWrapper.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSFontFaceCustomcpp">trunk/Source/WebCore/bindings/js/JSFontFaceCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSFontFaceSetCustomcpp">trunk/Source/WebCore/bindings/js/JSFontFaceSetCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSMediaDevicesCustomcpp">trunk/Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSMediaStreamTrackCustomcpp">trunk/Source/WebCore/bindings/js/JSMediaStreamTrackCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSReadableStreamSourceCustomcpp">trunk/Source/WebCore/bindings/js/JSReadableStreamSourceCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSWebKitSubtleCryptoCustomcpp">trunk/Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNodecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp</a></li>
<li><a href="#trunkSourceWebCoredomCustomElementRegistrycpp">trunk/Source/WebCore/dom/CustomElementRegistry.cpp</a></li>
<li><a href="#trunkSourceWebCoredomCustomElementRegistryh">trunk/Source/WebCore/dom/CustomElementRegistry.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/ChangeLog        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -1,3 +1,133 @@
</span><ins>+2016-09-22  Youenn Fablet  &lt;youenn@apple.com&gt;
+
+        Improve DeferredWrapper code
+        https://bugs.webkit.org/show_bug.cgi?id=161787
+
+        Reviewed by Darin Adler.
+
+        No change of behavior.
+
+        Renaming DeferredWrapper to DeferredPromise.
+        Adding create method that creates the underlying JSC::JSPromiseDeferred in non-worker environments.
+        Updated create method to take references.
+        Introducing domWindow helper accessor into JSDOMObject to ease creation of promise in non-worker environments.
+        Doing some minor clean up (renaming of m_wrapper to m_promiseDeferred, accessor change).
+
+        * Modules/applepay/ApplePaySession.cpp:
+        (WebCore::ApplePaySession::canMakePaymentsWithActiveCard):
+        * Modules/applepay/ApplePaySession.h:
+        * Modules/fetch/DOMWindowFetch.cpp:
+        (WebCore::DOMWindowFetch::fetch):
+        * Modules/fetch/DOMWindowFetch.h: Updated to take a DeferredPromise to make it consistent with WorkerGlobalScopeFetch.
+        * Modules/fetch/FetchBody.cpp:
+        (WebCore::FetchBody::arrayBuffer):
+        (WebCore::FetchBody::blob):
+        (WebCore::FetchBody::json):
+        (WebCore::FetchBody::text):
+        (WebCore::FetchBody::consume):
+        (WebCore::FetchBody::consumeArrayBuffer):
+        (WebCore::FetchBody::consumeArrayBufferView):
+        (WebCore::FetchBody::consumeText):
+        (WebCore::FetchBody::consumeBlob):
+        * Modules/fetch/FetchBody.h:
+        (WebCore::FetchBody::formData):
+        * Modules/fetch/FetchBodyConsumer.cpp:
+        (WebCore::FetchBodyConsumer::resolveWithData):
+        (WebCore::FetchBodyConsumer::resolve):
+        * Modules/fetch/FetchBodyConsumer.h:
+        * Modules/fetch/FetchBodyOwner.cpp:
+        (WebCore::FetchBodyOwner::arrayBuffer):
+        (WebCore::FetchBodyOwner::blob):
+        (WebCore::FetchBodyOwner::formData):
+        (WebCore::FetchBodyOwner::json):
+        (WebCore::FetchBodyOwner::text):
+        * Modules/fetch/FetchBodyOwner.h:
+        * Modules/fetch/FetchResponse.cpp:
+        (WebCore::FetchResponse::consume):
+        (WebCore::FetchResponse::finishConsumingStream):
+        * Modules/fetch/FetchResponse.h:
+        * Modules/fetch/WorkerGlobalScopeFetch.cpp:
+        (WebCore::WorkerGlobalScopeFetch::fetch):
+        * Modules/fetch/WorkerGlobalScopeFetch.h:
+        * bindings/js/JSCustomElementRegistryCustom.cpp:
+        (WebCore::whenDefinedPromise):
+        (WebCore::JSCustomElementRegistry::whenDefined):
+        * bindings/js/JSDOMGlobalObject.cpp:
+        (WebCore::JSDOMGlobalObject::visitChildren):
+        * bindings/js/JSDOMGlobalObject.h:
+        * bindings/js/JSDOMPromise.cpp:
+        (WebCore::DOMDeferredPromise::DOMDeferredPromise):
+        (WebCore::DOMDeferredPromise::~DOMDeferredPromise):
+        (WebCore::DOMDeferredPromise::clear):
+        (WebCore::DOMDeferredPromise::contextDestroyed):
+        (WebCore::DOMDeferredPromise::promise):
+        (WebCore::DOMDeferredPromise::callFunction):
+        (WebCore::DOMDeferredPromise::reject):
+        (WebCore::rejectPromiseWithExceptionIfAny):
+        (WebCore::fulfillPromiseWithJSON):
+        (WebCore::fulfillPromiseWithArrayBuffer):
+        (WebCore::DeferredWrapper::DeferredWrapper): Deleted.
+        (WebCore::DeferredWrapper::~DeferredWrapper): Deleted.
+        (WebCore::DeferredWrapper::clear): Deleted.
+        (WebCore::DeferredWrapper::contextDestroyed): Deleted.
+        (WebCore::DeferredWrapper::promise): Deleted.
+        (WebCore::DeferredWrapper::callFunction): Deleted.
+        (WebCore::DeferredWrapper::reject): Deleted.
+        * bindings/js/JSDOMPromise.h:
+        (WebCore::DOMDeferredPromise::create):
+        (WebCore::callPromiseFunction):
+        (WebCore::DOMPromise::DOMPromise):
+        (WebCore::DOMPromise::deferredPromise):
+        (WebCore::DOMDeferredPromise::resolveWithValue):
+        (WebCore::DOMDeferredPromise::resolveWithNewlyCreated):
+        (WebCore::DOMDeferredPromise::rejectWithValue):
+        (WebCore::DOMDeferredPromise::resolve):
+        (WebCore::DOMDeferredPromise::reject):
+        (WebCore::DeferredWrapper::create): Deleted.
+        (WebCore::DOMPromise::deferredWrapper): Deleted.
+        (WebCore::DeferredWrapper::resolveWithValue): Deleted.
+        (WebCore::DeferredWrapper::resolveWithNewlyCreated): Deleted.
+        (WebCore::DeferredWrapper::rejectWithValue): Deleted.
+        (WebCore::DeferredWrapper::resolve): Deleted.
+        (WebCore::DeferredWrapper::reject): Deleted.
+        * bindings/js/JSDOMWrapper.cpp: Introducing domWindow() accessor.
+        * bindings/js/JSDOMWrapper.h:
+        * bindings/js/JSFontFaceCustom.cpp:
+        (WebCore::JSFontFace::loaded):
+        * bindings/js/JSFontFaceSetCustom.cpp:
+        (WebCore::JSFontFaceSet::ready):
+        * bindings/js/JSMediaDevicesCustom.cpp:
+        (WebCore::JSMediaDevices::getUserMedia):
+        * bindings/js/JSMediaStreamTrackCustom.cpp:
+        (WebCore::JSMediaStreamTrack::applyConstraints):
+        * bindings/js/JSReadableStreamSourceCustom.cpp:
+        (WebCore::JSReadableStreamSource::start):
+        * bindings/js/JSWebKitSubtleCryptoCustom.cpp:
+        (WebCore::JSWebKitSubtleCrypto::encrypt):
+        (WebCore::JSWebKitSubtleCrypto::decrypt):
+        (WebCore::JSWebKitSubtleCrypto::sign):
+        (WebCore::JSWebKitSubtleCrypto::verify):
+        (WebCore::JSWebKitSubtleCrypto::digest):
+        (WebCore::JSWebKitSubtleCrypto::generateKey):
+        (WebCore::JSWebKitSubtleCrypto::importKey):
+        (WebCore::JSWebKitSubtleCrypto::exportKey):
+        (WebCore::JSWebKitSubtleCrypto::wrapKey):
+        (WebCore::JSWebKitSubtleCrypto::unwrapKey):
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GenerateImplementation):
+        (GenerateReturnParameters):
+        * bindings/scripts/test/JS/JSTestObj.cpp:
+        (WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionPromise):
+        (WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithFloatArgumentPromise):
+        (WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithExceptionPromise):
+        (WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithOptionalIntArgumentPromise):
+        (WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction1Promise):
+        (WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction2Promise):
+        (WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunctionPromise):
+        (WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunctionWithExceptionPromise):
+        * dom/CustomElementRegistry.h:
+        (WebCore::CustomElementRegistry::promiseMap):
+
</ins><span class="cx"> 2016-09-21  Alexey Proskuryakov  &lt;ap@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Rolling out r206244, as it caused flaky crashes on tests.
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayApplePaySessioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/applepay/ApplePaySession.cpp (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/ApplePaySession.cpp        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/Modules/applepay/ApplePaySession.cpp        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -733,7 +733,7 @@
</span><span class="cx">     return paymentCoordinator.canMakePayments();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ApplePaySession::canMakePaymentsWithActiveCard(ScriptExecutionContext&amp; scriptExecutionContext, const String&amp; merchantIdentifier, Ref&lt;DeferredWrapper&gt;&amp;&amp; passedPromise, ExceptionCode&amp; ec)
</del><ins>+void ApplePaySession::canMakePaymentsWithActiveCard(ScriptExecutionContext&amp; scriptExecutionContext, const String&amp; merchantIdentifier, Ref&lt;DeferredPromise&gt;&amp;&amp; passedPromise, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     auto&amp; document = downcast&lt;Document&gt;(scriptExecutionContext);
</span><span class="cx">     DOMWindow&amp; window = *document.domWindow();
</span><span class="lines">@@ -745,7 +745,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    RefPtr&lt;DeferredWrapper&gt; promise(WTFMove(passedPromise));
</del><ins>+    RefPtr&lt;DeferredPromise&gt; promise(WTFMove(passedPromise));
</ins><span class="cx">     if (!shouldDiscloseApplePayCapability(document)) {
</span><span class="cx">         auto&amp; paymentCoordinator = document.frame()-&gt;mainFrame().paymentCoordinator();
</span><span class="cx">         bool canMakePayments = paymentCoordinator.canMakePayments();
</span><span class="lines">@@ -763,7 +763,7 @@
</span><span class="cx">     });
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ApplePaySession::openPaymentSetup(ScriptExecutionContext&amp; scriptExecutionContext, const String&amp; merchantIdentifier, Ref&lt;DeferredWrapper&gt;&amp;&amp; passedPromise, ExceptionCode&amp; ec)
</del><ins>+void ApplePaySession::openPaymentSetup(ScriptExecutionContext&amp; scriptExecutionContext, const String&amp; merchantIdentifier, Ref&lt;DeferredPromise&gt;&amp;&amp; passedPromise, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     auto&amp; document = downcast&lt;Document&gt;(scriptExecutionContext);
</span><span class="cx">     DOMWindow&amp; window = *document.domWindow();
</span><span class="lines">@@ -781,7 +781,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    RefPtr&lt;DeferredWrapper&gt; promise(WTFMove(passedPromise));
</del><ins>+    RefPtr&lt;DeferredPromise&gt; promise(WTFMove(passedPromise));
</ins><span class="cx">     auto&amp; paymentCoordinator = document.frame()-&gt;mainFrame().paymentCoordinator();
</span><span class="cx"> 
</span><span class="cx">     paymentCoordinator.openPaymentSetup(merchantIdentifier, document.domain(), [promise](bool result) mutable {
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayApplePaySessionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/applepay/ApplePaySession.h (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/ApplePaySession.h        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/Modules/applepay/ApplePaySession.h        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class ArrayValue;
</span><del>-class DeferredWrapper;
</del><ins>+class DeferredPromise;
</ins><span class="cx"> class Dictionary;
</span><span class="cx"> class Document;
</span><span class="cx"> class Payment;
</span><span class="lines">@@ -63,8 +63,8 @@
</span><span class="cx"> 
</span><span class="cx">     static bool supportsVersion(ScriptExecutionContext&amp;, unsigned version, ExceptionCode&amp;);
</span><span class="cx">     static bool canMakePayments(ScriptExecutionContext&amp;, ExceptionCode&amp;);
</span><del>-    static void canMakePaymentsWithActiveCard(ScriptExecutionContext&amp;, const String&amp; merchantIdentifier, Ref&lt;DeferredWrapper&gt;&amp;&amp;, ExceptionCode&amp;);
-    static void openPaymentSetup(ScriptExecutionContext&amp;, const String&amp; merchantIdentifier, Ref&lt;DeferredWrapper&gt;&amp;&amp;, ExceptionCode&amp;);
</del><ins>+    static void canMakePaymentsWithActiveCard(ScriptExecutionContext&amp;, const String&amp; merchantIdentifier, Ref&lt;DeferredPromise&gt;&amp;&amp;, ExceptionCode&amp;);
+    static void openPaymentSetup(ScriptExecutionContext&amp;, const String&amp; merchantIdentifier, Ref&lt;DeferredPromise&gt;&amp;&amp;, ExceptionCode&amp;);
</ins><span class="cx"> 
</span><span class="cx">     void begin(ExceptionCode&amp;);
</span><span class="cx">     void abort(ExceptionCode&amp;);
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesfetchDOMWindowFetchcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/fetch/DOMWindowFetch.cpp (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/fetch/DOMWindowFetch.cpp        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/Modules/fetch/DOMWindowFetch.cpp        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-void DOMWindowFetch::fetch(DOMWindow&amp; window, FetchRequest&amp; request, DOMPromise&lt;FetchResponse&gt;&amp;&amp; promise)
</del><ins>+void DOMWindowFetch::fetch(DOMWindow&amp; window, FetchRequest&amp; request, Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     if (!window.scriptExecutionContext())
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesfetchDOMWindowFetchh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/fetch/DOMWindowFetch.h (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/fetch/DOMWindowFetch.h        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/Modules/fetch/DOMWindowFetch.h        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -36,14 +36,12 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class DOMWindow;
</span><del>-class DeferredWrapper;
</del><span class="cx"> class Dictionary;
</span><span class="cx"> class FetchRequest;
</span><del>-class FetchResponse;
</del><span class="cx"> 
</span><span class="cx"> class DOMWindowFetch {
</span><span class="cx"> public:
</span><del>-    static void fetch(DOMWindow&amp;, FetchRequest&amp;, DOMPromise&lt;FetchResponse&gt;&amp;&amp;);
</del><ins>+    static void fetch(DOMWindow&amp;, FetchRequest&amp;, Ref&lt;DeferredPromise&gt;&amp;&amp;);
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesfetchFetchBodycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/fetch/FetchBody.cpp (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/fetch/FetchBody.cpp        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/Modules/fetch/FetchBody.cpp        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -124,7 +124,7 @@
</span><span class="cx">         headers.fastSet(HTTPHeaderName::ContentType, m_contentType);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void FetchBody::arrayBuffer(FetchBodyOwner&amp; owner, Ref&lt;DeferredWrapper&gt;&amp;&amp; promise)
</del><ins>+void FetchBody::arrayBuffer(FetchBodyOwner&amp; owner, Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(m_type != Type::None);
</span><span class="cx">     m_consumer.setType(FetchBodyConsumer::Type::ArrayBuffer);
</span><span class="lines">@@ -131,7 +131,7 @@
</span><span class="cx">     consume(owner, WTFMove(promise));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void FetchBody::blob(FetchBodyOwner&amp; owner, Ref&lt;DeferredWrapper&gt;&amp;&amp; promise)
</del><ins>+void FetchBody::blob(FetchBodyOwner&amp; owner, Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(m_type != Type::None);
</span><span class="cx">     m_consumer.setType(FetchBodyConsumer::Type::Blob);
</span><span class="lines">@@ -139,7 +139,7 @@
</span><span class="cx">     consume(owner, WTFMove(promise));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void FetchBody::json(FetchBodyOwner&amp; owner, Ref&lt;DeferredWrapper&gt;&amp;&amp; promise)
</del><ins>+void FetchBody::json(FetchBodyOwner&amp; owner, Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(m_type != Type::None);
</span><span class="cx"> 
</span><span class="lines">@@ -151,7 +151,7 @@
</span><span class="cx">     consume(owner, WTFMove(promise));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void FetchBody::text(FetchBodyOwner&amp; owner, Ref&lt;DeferredWrapper&gt;&amp;&amp; promise)
</del><ins>+void FetchBody::text(FetchBodyOwner&amp; owner, Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(m_type != Type::None);
</span><span class="cx"> 
</span><span class="lines">@@ -163,7 +163,7 @@
</span><span class="cx">     consume(owner, WTFMove(promise));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void FetchBody::consume(FetchBodyOwner&amp; owner, Ref&lt;DeferredWrapper&gt;&amp;&amp; promise)
</del><ins>+void FetchBody::consume(FetchBodyOwner&amp; owner, Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     // This should be handled by FetchBodyOwner
</span><span class="cx">     ASSERT(m_type != Type::None);
</span><span class="lines">@@ -246,7 +246,7 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-void FetchBody::consumeArrayBuffer(Ref&lt;DeferredWrapper&gt;&amp;&amp; promise)
</del><ins>+void FetchBody::consumeArrayBuffer(Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(m_data);
</span><span class="cx">     m_consumer.resolveWithData(WTFMove(promise), static_cast&lt;const uint8_t*&gt;(m_data-&gt;data()), m_data-&gt;byteLength());
</span><span class="lines">@@ -253,7 +253,7 @@
</span><span class="cx">     m_data = nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void FetchBody::consumeArrayBufferView(Ref&lt;DeferredWrapper&gt;&amp;&amp; promise)
</del><ins>+void FetchBody::consumeArrayBufferView(Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(m_dataView);
</span><span class="cx">     m_consumer.resolveWithData(WTFMove(promise), static_cast&lt;const uint8_t*&gt;(m_dataView-&gt;baseAddress()), m_dataView-&gt;byteLength());
</span><span class="lines">@@ -260,7 +260,7 @@
</span><span class="cx">     m_dataView = nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void FetchBody::consumeText(Ref&lt;DeferredWrapper&gt;&amp;&amp; promise)
</del><ins>+void FetchBody::consumeText(Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     Vector&lt;uint8_t&gt; data = extractFromText();
</span><span class="cx">     m_consumer.resolveWithData(WTFMove(promise), data.data(), data.size());
</span><span class="lines">@@ -267,7 +267,7 @@
</span><span class="cx">     m_text = { };
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void FetchBody::consumeBlob(FetchBodyOwner&amp; owner, Ref&lt;DeferredWrapper&gt;&amp;&amp; promise)
</del><ins>+void FetchBody::consumeBlob(FetchBodyOwner&amp; owner, Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(m_blob);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesfetchFetchBodyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/fetch/FetchBody.h (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/fetch/FetchBody.h        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/Modules/fetch/FetchBody.h        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -52,11 +52,11 @@
</span><span class="cx"> 
</span><span class="cx"> class FetchBody {
</span><span class="cx"> public:
</span><del>-    void arrayBuffer(FetchBodyOwner&amp;, Ref&lt;DeferredWrapper&gt;&amp;&amp;);
-    void blob(FetchBodyOwner&amp;, Ref&lt;DeferredWrapper&gt;&amp;&amp;);
-    void json(FetchBodyOwner&amp;, Ref&lt;DeferredWrapper&gt;&amp;&amp;);
-    void text(FetchBodyOwner&amp;, Ref&lt;DeferredWrapper&gt;&amp;&amp;);
-    void formData(FetchBodyOwner&amp;, Ref&lt;DeferredWrapper&gt;&amp;&amp; promise) { promise.get().reject(0); }
</del><ins>+    void arrayBuffer(FetchBodyOwner&amp;, Ref&lt;DeferredPromise&gt;&amp;&amp;);
+    void blob(FetchBodyOwner&amp;, Ref&lt;DeferredPromise&gt;&amp;&amp;);
+    void json(FetchBodyOwner&amp;, Ref&lt;DeferredPromise&gt;&amp;&amp;);
+    void text(FetchBodyOwner&amp;, Ref&lt;DeferredPromise&gt;&amp;&amp;);
+    void formData(FetchBodyOwner&amp;, Ref&lt;DeferredPromise&gt;&amp;&amp; promise) { promise.get().reject(0); }
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(READABLE_STREAM_API)
</span><span class="cx">     void consumeAsStream(FetchBodyOwner&amp;, FetchResponseSource&amp;);
</span><span class="lines">@@ -93,13 +93,13 @@
</span><span class="cx">     FetchBody(String&amp;&amp;);
</span><span class="cx">     FetchBody(Type type) : m_type(type) { }
</span><span class="cx"> 
</span><del>-    void consume(FetchBodyOwner&amp;, Ref&lt;DeferredWrapper&gt;&amp;&amp;);
</del><ins>+    void consume(FetchBodyOwner&amp;, Ref&lt;DeferredPromise&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx">     Vector&lt;uint8_t&gt; extractFromText() const;
</span><del>-    void consumeArrayBuffer(Ref&lt;DeferredWrapper&gt;&amp;&amp;);
-    void consumeArrayBufferView(Ref&lt;DeferredWrapper&gt;&amp;&amp;);
-    void consumeText(Ref&lt;DeferredWrapper&gt;&amp;&amp;);
-    void consumeBlob(FetchBodyOwner&amp;, Ref&lt;DeferredWrapper&gt;&amp;&amp;);
</del><ins>+    void consumeArrayBuffer(Ref&lt;DeferredPromise&gt;&amp;&amp;);
+    void consumeArrayBufferView(Ref&lt;DeferredPromise&gt;&amp;&amp;);
+    void consumeText(Ref&lt;DeferredPromise&gt;&amp;&amp;);
+    void consumeBlob(FetchBodyOwner&amp;, Ref&lt;DeferredPromise&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx">     Type m_type { Type::None };
</span><span class="cx">     String m_contentType;
</span><span class="lines">@@ -112,7 +112,7 @@
</span><span class="cx">     String m_text;
</span><span class="cx"> 
</span><span class="cx">     FetchBodyConsumer m_consumer { FetchBodyConsumer::Type::None };
</span><del>-    RefPtr&lt;DeferredWrapper&gt; m_consumePromise;
</del><ins>+    RefPtr&lt;DeferredPromise&gt; m_consumePromise;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesfetchFetchBodyConsumercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx">     return decoder-&gt;decodeAndFlush(reinterpret_cast&lt;const char*&gt;(data), length);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void FetchBodyConsumer::resolveWithData(Ref&lt;DeferredWrapper&gt;&amp;&amp; promise, const unsigned char* data, unsigned length)
</del><ins>+void FetchBodyConsumer::resolveWithData(Ref&lt;DeferredPromise&gt;&amp;&amp; promise, const unsigned char* data, unsigned length)
</ins><span class="cx"> {
</span><span class="cx">     switch (m_type) {
</span><span class="cx">     case Type::ArrayBuffer:
</span><span class="lines">@@ -80,7 +80,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void FetchBodyConsumer::resolve(Ref&lt;DeferredWrapper&gt;&amp;&amp; promise)
</del><ins>+void FetchBodyConsumer::resolve(Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(m_type != Type::None);
</span><span class="cx">     switch (m_type) {
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesfetchFetchBodyConsumerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/fetch/FetchBodyConsumer.h (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/fetch/FetchBodyConsumer.h        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/Modules/fetch/FetchBodyConsumer.h        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -30,12 +30,12 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(FETCH_API)
</span><span class="cx"> 
</span><ins>+#include &quot;JSDOMPromise.h&quot;
</ins><span class="cx"> #include &quot;SharedBuffer.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class Blob;
</span><del>-class DeferredWrapper;
</del><span class="cx"> 
</span><span class="cx"> class FetchBodyConsumer {
</span><span class="cx"> public:
</span><span class="lines">@@ -57,8 +57,8 @@
</span><span class="cx"> 
</span><span class="cx">     void clean() { m_buffer = nullptr; }
</span><span class="cx"> 
</span><del>-    void resolve(Ref&lt;DeferredWrapper&gt;&amp;&amp;);
-    void resolveWithData(Ref&lt;DeferredWrapper&gt;&amp;&amp;, const unsigned char*, unsigned);
</del><ins>+    void resolve(Ref&lt;DeferredPromise&gt;&amp;&amp;);
+    void resolveWithData(Ref&lt;DeferredPromise&gt;&amp;&amp;, const unsigned char*, unsigned);
</ins><span class="cx"> 
</span><span class="cx">     bool hasData() const { return !!m_buffer; }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesfetchFetchBodyOwnercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/fetch/FetchBodyOwner.cpp (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/fetch/FetchBodyOwner.cpp        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/Modules/fetch/FetchBodyOwner.cpp        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -71,7 +71,7 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void FetchBodyOwner::arrayBuffer(Ref&lt;DeferredWrapper&gt;&amp;&amp; promise)
</del><ins>+void FetchBodyOwner::arrayBuffer(Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     if (m_body.isEmpty()) {
</span><span class="cx">         fulfillPromiseWithArrayBuffer(WTFMove(promise), nullptr, 0);
</span><span class="lines">@@ -85,7 +85,7 @@
</span><span class="cx">     m_body.arrayBuffer(*this, WTFMove(promise));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void FetchBodyOwner::blob(Ref&lt;DeferredWrapper&gt;&amp;&amp; promise)
</del><ins>+void FetchBodyOwner::blob(Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     if (m_body.isEmpty()) {
</span><span class="cx">         promise-&gt;resolve(Blob::create(Vector&lt;uint8_t&gt;(), Blob::normalizedContentType(extractMIMETypeFromMediaType(m_body.contentType()))));
</span><span class="lines">@@ -99,7 +99,7 @@
</span><span class="cx">     m_body.blob(*this, WTFMove(promise));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void FetchBodyOwner::formData(Ref&lt;DeferredWrapper&gt;&amp;&amp; promise)
</del><ins>+void FetchBodyOwner::formData(Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     if (m_body.isEmpty()) {
</span><span class="cx">         promise-&gt;reject(0);
</span><span class="lines">@@ -113,7 +113,7 @@
</span><span class="cx">     m_body.formData(*this, WTFMove(promise));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void FetchBodyOwner::json(Ref&lt;DeferredWrapper&gt;&amp;&amp; promise)
</del><ins>+void FetchBodyOwner::json(Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     if (m_body.isEmpty()) {
</span><span class="cx">         promise-&gt;reject(SYNTAX_ERR);
</span><span class="lines">@@ -127,7 +127,7 @@
</span><span class="cx">     m_body.json(*this, WTFMove(promise));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void FetchBodyOwner::text(Ref&lt;DeferredWrapper&gt;&amp;&amp; promise)
</del><ins>+void FetchBodyOwner::text(Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     if (m_body.isEmpty()) {
</span><span class="cx">         promise-&gt;resolve(String());
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesfetchFetchBodyOwnerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/fetch/FetchBodyOwner.h (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/fetch/FetchBodyOwner.h        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/Modules/fetch/FetchBodyOwner.h        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -46,11 +46,11 @@
</span><span class="cx">     // Exposed Body API
</span><span class="cx">     bool isDisturbed() const { return m_isDisturbed; };
</span><span class="cx"> 
</span><del>-    void arrayBuffer(Ref&lt;DeferredWrapper&gt;&amp;&amp;);
-    void blob(Ref&lt;DeferredWrapper&gt;&amp;&amp;);
-    void formData(Ref&lt;DeferredWrapper&gt;&amp;&amp;);
-    void json(Ref&lt;DeferredWrapper&gt;&amp;&amp;);
-    void text(Ref&lt;DeferredWrapper&gt;&amp;&amp;);
</del><ins>+    void arrayBuffer(Ref&lt;DeferredPromise&gt;&amp;&amp;);
+    void blob(Ref&lt;DeferredPromise&gt;&amp;&amp;);
+    void formData(Ref&lt;DeferredPromise&gt;&amp;&amp;);
+    void json(Ref&lt;DeferredPromise&gt;&amp;&amp;);
+    void text(Ref&lt;DeferredPromise&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx">     bool isDisturbedOrLocked() const;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesfetchFetchResponsecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/fetch/FetchResponse.cpp (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/fetch/FetchResponse.cpp        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/Modules/fetch/FetchResponse.cpp        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -206,7 +206,7 @@
</span><span class="cx">         m_loader-&gt;stop();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void FetchResponse::consume(unsigned type, Ref&lt;DeferredWrapper&gt;&amp;&amp; wrapper)
</del><ins>+void FetchResponse::consume(unsigned type, Ref&lt;DeferredPromise&gt;&amp;&amp; wrapper)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(type &lt;= static_cast&lt;unsigned&gt;(FetchBodyConsumer::Type::Text));
</span><span class="cx"> 
</span><span class="lines">@@ -241,7 +241,7 @@
</span><span class="cx">     m_consumer.append(chunk-&gt;data(), chunk-&gt;byteLength());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void FetchResponse::finishConsumingStream(Ref&lt;DeferredWrapper&gt;&amp;&amp; promise)
</del><ins>+void FetchResponse::finishConsumingStream(Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     m_consumer.resolve(WTFMove(promise));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesfetchFetchResponseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/fetch/FetchResponse.h (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/fetch/FetchResponse.h        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/Modules/fetch/FetchResponse.h        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -60,11 +60,11 @@
</span><span class="cx">     using FetchPromise = DOMPromise&lt;FetchResponse&gt;;
</span><span class="cx">     static void fetch(ScriptExecutionContext&amp;, FetchRequest&amp;, FetchPromise&amp;&amp;);
</span><span class="cx"> 
</span><del>-    void consume(unsigned, Ref&lt;DeferredWrapper&gt;&amp;&amp;);
</del><ins>+    void consume(unsigned, Ref&lt;DeferredPromise&gt;&amp;&amp;);
</ins><span class="cx"> #if ENABLE(READABLE_STREAM_API)
</span><span class="cx">     void startConsumingStream(unsigned);
</span><span class="cx">     void consumeChunk(Ref&lt;JSC::Uint8Array&gt;&amp;&amp;);
</span><del>-    void finishConsumingStream(Ref&lt;DeferredWrapper&gt;&amp;&amp;);
</del><ins>+    void finishConsumingStream(Ref&lt;DeferredPromise&gt;&amp;&amp;);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     void setStatus(int, const String&amp;, ExceptionCode&amp;);
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesfetchWorkerGlobalScopeFetchcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/fetch/WorkerGlobalScopeFetch.cpp (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/fetch/WorkerGlobalScopeFetch.cpp        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/Modules/fetch/WorkerGlobalScopeFetch.cpp        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-void WorkerGlobalScopeFetch::fetch(WorkerGlobalScope&amp; scope, FetchRequest&amp; request, Ref&lt;DeferredWrapper&gt;&amp;&amp; promise)
</del><ins>+void WorkerGlobalScopeFetch::fetch(WorkerGlobalScope&amp; scope, FetchRequest&amp; request, Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     if (!scope.scriptExecutionContext())
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesfetchWorkerGlobalScopeFetchh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/fetch/WorkerGlobalScopeFetch.h (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/fetch/WorkerGlobalScopeFetch.h        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/Modules/fetch/WorkerGlobalScopeFetch.h        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -31,17 +31,15 @@
</span><span class="cx"> #if ENABLE(FETCH_API)
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMPromise.h&quot;
</span><del>-#include &lt;wtf/Forward.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><ins>+class FetchRequest;
</ins><span class="cx"> class WorkerGlobalScope;
</span><del>-class DeferredWrapper;
-class FetchRequest;
</del><span class="cx"> 
</span><span class="cx"> class WorkerGlobalScopeFetch {
</span><span class="cx"> public:
</span><del>-    static void fetch(WorkerGlobalScope&amp;, FetchRequest&amp;, Ref&lt;DeferredWrapper&gt;&amp;&amp;);
</del><ins>+    static void fetch(WorkerGlobalScope&amp;, FetchRequest&amp;, Ref&lt;DeferredPromise&gt;&amp;&amp;);
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -1530,6 +1530,7 @@
</span><span class="cx">                 416E6FE81BBD12DF000A6053 /* WritableStreamInternalsBuiltins.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B03D8061BB3110D00B764E9 /* WritableStreamInternalsBuiltins.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 416E6FE91BBD12E5000A6043 /* ReadableStreamBuiltins.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B03D8061BB3110D00B764D8 /* ReadableStreamBuiltins.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 416E6FE91BBD12E5000A6053 /* WritableStreamBuiltins.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B03D8061BB3110D00B764E8 /* WritableStreamBuiltins.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+                4170A2EA1D8C0CCA00318452 /* JSDOMWrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4170A2E91D8C0CC000318452 /* JSDOMWrapper.cpp */; };
</ins><span class="cx">                 417253AA1354BBBC00360F2A /* MediaControlElements.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 417253A81354BBBC00360F2A /* MediaControlElements.cpp */; };
</span><span class="cx">                 417253AB1354BBBC00360F2A /* MediaControlElements.h in Headers */ = {isa = PBXBuildFile; fileRef = 417253A91354BBBC00360F2A /* MediaControlElements.h */; };
</span><span class="cx">                 417DA6D913734E6E007C57FB /* Internals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 417DA4CF13734326007C57FB /* Internals.cpp */; };
</span><span class="lines">@@ -8456,6 +8457,7 @@
</span><span class="cx">                 4162A4551011464700DFF3ED /* JSDedicatedWorkerGlobalScope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDedicatedWorkerGlobalScope.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 4162A4561011464700DFF3ED /* JSDedicatedWorkerGlobalScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDedicatedWorkerGlobalScope.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 416E29A5102FA962007FC14E /* WorkerReportingProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorkerReportingProxy.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                4170A2E91D8C0CC000318452 /* JSDOMWrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMWrapper.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 417253A81354BBBC00360F2A /* MediaControlElements.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaControlElements.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 417253A91354BBBC00360F2A /* MediaControlElements.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaControlElements.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 417DA4CE13734326007C57FB /* Internals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Internals.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -21045,6 +21047,7 @@
</span><span class="cx">                                 460CBF341D4BCCFE0092E88E /* JSDOMWindowProperties.h */,
</span><span class="cx">                                 BCBFB53A0DCD29CF0019B3E5 /* JSDOMWindowShell.cpp */,
</span><span class="cx">                                 BCBFB53B0DCD29CF0019B3E5 /* JSDOMWindowShell.h */,
</span><ins>+                                4170A2E91D8C0CC000318452 /* JSDOMWrapper.cpp */,
</ins><span class="cx">                                 65E0E9431133C89F00B4CB10 /* JSDOMWrapper.h */,
</span><span class="cx">                                 F3D461461161D53200CA0D09 /* JSErrorHandler.cpp */,
</span><span class="cx">                                 F3D461471161D53200CA0D09 /* JSErrorHandler.h */,
</span><span class="lines">@@ -29472,6 +29475,7 @@
</span><span class="cx">                                 314BE3A61B3103FB00141982 /* NamedImageGeneratedImage.cpp in Sources */,
</span><span class="cx">                                 BCF34A3711A231CD00C71804 /* NamedNodeMap.cpp in Sources */,
</span><span class="cx">                                 A81872240977D3C0005826D9 /* NameNodeList.cpp in Sources */,
</span><ins>+                                4170A2EA1D8C0CCA00318452 /* JSDOMWrapper.cpp in Sources */,
</ins><span class="cx">                                 8306EFF11B8BCEA50031D032 /* NativeNodeFilter.cpp in Sources */,
</span><span class="cx">                                 E10B9B6D0B747599003ED890 /* NativeXPathNSResolver.cpp in Sources */,
</span><span class="cx">                                 93CCF0600AF6CA7600018E89 /* NavigationAction.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSCustomElementRegistryCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSCustomElementRegistryCustom.cpp (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSCustomElementRegistryCustom.cpp        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/bindings/js/JSCustomElementRegistryCustom.cpp        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -162,7 +162,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // https://html.spec.whatwg.org/#dom-customelementregistry-whendefined
</span><del>-static JSValue whenDefinedPromise(ExecState&amp; state, JSDOMGlobalObject&amp; globalObject, CustomElementRegistry&amp; registry)
</del><ins>+static JSValue whenDefinedPromise(ExecState&amp; state, JSDOMGlobalObject&amp; globalObject, CustomElementRegistry&amp; registry, JSPromiseDeferred&amp; promiseDeferred)
</ins><span class="cx"> {
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(state.vm());
</span><span class="cx"> 
</span><span class="lines">@@ -173,17 +173,18 @@
</span><span class="cx">     if (UNLIKELY(scope.exception()))
</span><span class="cx">         return jsUndefined();
</span><span class="cx"> 
</span><del>-    if (!validateCustomElementNameAndThrowIfNeeded(state, localName))
</del><ins>+    if (!validateCustomElementNameAndThrowIfNeeded(state, localName)) {
+        ASSERT(scope.exception());
</ins><span class="cx">         return jsUndefined();
</span><ins>+    }
</ins><span class="cx"> 
</span><span class="cx">     if (registry.findInterface(localName)) {
</span><del>-        auto&amp; jsPromise = *JSPromiseDeferred::create(&amp;state, &amp;globalObject);
-        DeferredWrapper::create(&amp;state, &amp;globalObject, &amp;jsPromise)-&gt;resolve(nullptr);
-        return jsPromise.promise();
</del><ins>+        DeferredPromise::create(globalObject, promiseDeferred)-&gt;resolve(nullptr);
+        return promiseDeferred.promise();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     auto result = registry.promiseMap().ensure(localName, [&amp;] {
</span><del>-        return DeferredWrapper::create(&amp;state, &amp;globalObject, JSPromiseDeferred::create(&amp;state, &amp;globalObject));
</del><ins>+        return DeferredPromise::create(globalObject, promiseDeferred);
</ins><span class="cx">     });
</span><span class="cx"> 
</span><span class="cx">     return result.iterator-&gt;value-&gt;promise();
</span><span class="lines">@@ -193,14 +194,15 @@
</span><span class="cx"> {
</span><span class="cx">     auto scope = DECLARE_CATCH_SCOPE(state.vm());
</span><span class="cx"> 
</span><del>-    JSDOMGlobalObject&amp; globalObject = *jsCast&lt;JSDOMGlobalObject*&gt;(state.lexicalGlobalObject());
-    auto&amp; promiseDeferred = *JSPromiseDeferred::create(&amp;state, &amp;globalObject);
-    JSValue promise = whenDefinedPromise(state, globalObject, wrapped());
</del><ins>+    ASSERT(globalObject());
+    auto promiseDeferred = JSPromiseDeferred::create(&amp;state, globalObject());
+    ASSERT(promiseDeferred);
+    JSValue promise = whenDefinedPromise(state, *globalObject(), wrapped(), *promiseDeferred);
</ins><span class="cx"> 
</span><span class="cx">     if (UNLIKELY(scope.exception())) {
</span><del>-        rejectPromiseWithExceptionIfAny(state, globalObject, promiseDeferred);
</del><ins>+        rejectPromiseWithExceptionIfAny(state, *globalObject(), *promiseDeferred);
</ins><span class="cx">         ASSERT(!scope.exception());
</span><del>-        return promiseDeferred.promise();
</del><ins>+        return promiseDeferred-&gt;promise();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return promise;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMGlobalObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.cpp (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.cpp        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.cpp        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -178,8 +178,8 @@
</span><span class="cx">     for (auto&amp; constructor : thisObject-&gt;constructors().values())
</span><span class="cx">         visitor.append(&amp;constructor);
</span><span class="cx"> 
</span><del>-    for (auto&amp; deferredWrapper : thisObject-&gt;deferredWrappers())
-        deferredWrapper-&gt;visitAggregate(visitor);
</del><ins>+    for (auto&amp; deferredPromise : thisObject-&gt;deferredPromises())
+        deferredPromise-&gt;visitAggregate(visitor);
</ins><span class="cx"> 
</span><span class="cx">     thisObject-&gt;m_builtinInternalFunctions.visit(visitor);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMGlobalObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.h (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.h        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.h        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-    class DeferredWrapper;
</del><ins>+    class DeferredPromise;
</ins><span class="cx">     class Document;
</span><span class="cx">     class Event;
</span><span class="cx">     class DOMWrapperWorld;
</span><span class="lines">@@ -42,7 +42,7 @@
</span><span class="cx"> 
</span><span class="cx">     typedef HashMap&lt;const JSC::ClassInfo*, JSC::WriteBarrier&lt;JSC::Structure&gt;&gt; JSDOMStructureMap;
</span><span class="cx">     typedef HashMap&lt;const JSC::ClassInfo*, JSC::WriteBarrier&lt;JSC::JSObject&gt;&gt; JSDOMConstructorMap;
</span><del>-    typedef HashSet&lt;DeferredWrapper*&gt; DeferredWrapperSet;
</del><ins>+    typedef HashSet&lt;DeferredPromise*&gt; DeferredPromiseSet;
</ins><span class="cx"> 
</span><span class="cx">     class WEBCORE_EXPORT JSDOMGlobalObject : public JSC::JSGlobalObject {
</span><span class="cx">         typedef JSC::JSGlobalObject Base;
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx">         JSDOMStructureMap&amp; structures() { return m_structures; }
</span><span class="cx">         JSDOMConstructorMap&amp; constructors() { return m_constructors; }
</span><span class="cx"> 
</span><del>-        DeferredWrapperSet&amp; deferredWrappers() { return m_deferredWrappers; }
</del><ins>+        DeferredPromiseSet&amp; deferredPromises() { return m_deferredPromises; }
</ins><span class="cx"> 
</span><span class="cx">         ScriptExecutionContext* scriptExecutionContext() const;
</span><span class="cx"> 
</span><span class="lines">@@ -91,7 +91,7 @@
</span><span class="cx">     protected:
</span><span class="cx">         JSDOMStructureMap m_structures;
</span><span class="cx">         JSDOMConstructorMap m_constructors;
</span><del>-        DeferredWrapperSet m_deferredWrappers;
</del><ins>+        DeferredPromiseSet m_deferredPromises;
</ins><span class="cx"> 
</span><span class="cx">         Event* m_currentEvent;
</span><span class="cx">         Ref&lt;DOMWrapperWorld&gt; m_world;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMPromisecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMPromise.cpp (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMPromise.cpp        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/bindings/js/JSDOMPromise.cpp        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -28,6 +28,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ExceptionCode.h&quot;
</span><span class="cx"> #include &quot;JSDOMError.h&quot;
</span><ins>+#include &quot;JSDOMWindow.h&quot;
</ins><span class="cx"> #include &lt;builtins/BuiltinNames.h&gt;
</span><span class="cx"> #include &lt;runtime/Exception.h&gt;
</span><span class="cx"> #include &lt;runtime/JSONObject.h&gt;
</span><span class="lines">@@ -37,41 +38,41 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-DeferredWrapper::DeferredWrapper(ExecState*, JSDOMGlobalObject* globalObject, JSPromiseDeferred* promiseDeferred)
-    : ActiveDOMCallback(globalObject-&gt;scriptExecutionContext())
-    , m_deferred(promiseDeferred)
-    , m_globalObject(globalObject)
</del><ins>+DeferredPromise::DeferredPromise(JSDOMGlobalObject&amp; globalObject, JSPromiseDeferred&amp; promiseDeferred)
+    : ActiveDOMCallback(globalObject.scriptExecutionContext())
+    , m_deferred(&amp;promiseDeferred)
+    , m_globalObject(&amp;globalObject)
</ins><span class="cx"> {
</span><del>-    globalObject-&gt;vm().heap.writeBarrier(globalObject, promiseDeferred);
-    m_globalObject-&gt;deferredWrappers().add(this);
</del><ins>+    globalObject.vm().heap.writeBarrier(&amp;globalObject, &amp;promiseDeferred);
+    globalObject.deferredPromises().add(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-DeferredWrapper::~DeferredWrapper()
</del><ins>+DeferredPromise::~DeferredPromise()
</ins><span class="cx"> {
</span><span class="cx">     clear();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void DeferredWrapper::clear()
</del><ins>+void DeferredPromise::clear()
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(!m_deferred || m_globalObject);
</span><span class="cx">     if (m_deferred &amp;&amp; m_globalObject)
</span><del>-        m_globalObject-&gt;deferredWrappers().remove(this);
</del><ins>+        m_globalObject-&gt;deferredPromises().remove(this);
</ins><span class="cx">     m_deferred.clear();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void DeferredWrapper::contextDestroyed()
</del><ins>+void DeferredPromise::contextDestroyed()
</ins><span class="cx"> {
</span><span class="cx">     ActiveDOMCallback::contextDestroyed();
</span><span class="cx">     clear();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSC::JSValue DeferredWrapper::promise() const
</del><ins>+JSC::JSValue DeferredPromise::promise() const
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(m_deferred);
</span><span class="cx">     return m_deferred-&gt;promise();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void DeferredWrapper::callFunction(ExecState&amp; exec, JSValue function, JSValue resolution)
</del><ins>+void DeferredPromise::callFunction(ExecState&amp; exec, JSValue function, JSValue resolution)
</ins><span class="cx"> {
</span><span class="cx">     if (!canInvokeCallback())
</span><span class="cx">         return;
</span><span class="lines">@@ -88,7 +89,7 @@
</span><span class="cx">     clear();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void DeferredWrapper::reject(ExceptionCode ec, const String&amp; message)
</del><ins>+void DeferredPromise::reject(ExceptionCode ec, const String&amp; message)
</ins><span class="cx"> {
</span><span class="cx">     if (isSuspended())
</span><span class="cx">         return;
</span><span class="lines">@@ -111,9 +112,17 @@
</span><span class="cx">     JSValue error = scope.exception()-&gt;value();
</span><span class="cx">     scope.clearException();
</span><span class="cx"> 
</span><del>-    DeferredWrapper::create(&amp;state, &amp;globalObject, &amp;promiseDeferred)-&gt;reject(error);
</del><ins>+    DeferredPromise::create(globalObject, promiseDeferred)-&gt;reject(error);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+Ref&lt;DeferredPromise&gt; createDeferredPromise(JSC::ExecState&amp; state, JSDOMWindow&amp; domWindow)
+{
+    JSC::JSPromiseDeferred* deferred = JSC::JSPromiseDeferred::create(&amp;state, &amp;domWindow);
+    // deferred can only be null in workers.
+    ASSERT(deferred);
+    return DeferredPromise::create(domWindow, *deferred);
+}
+
</ins><span class="cx"> JSC::EncodedJSValue createRejectedPromiseWithTypeError(JSC::ExecState&amp; state, const String&amp; errorMessage)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(state.lexicalGlobalObject());
</span><span class="lines">@@ -139,7 +148,7 @@
</span><span class="cx">     return JSC::JSONParse(state, data);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void fulfillPromiseWithJSON(Ref&lt;DeferredWrapper&gt;&amp;&amp; promise, const String&amp; data)
</del><ins>+void fulfillPromiseWithJSON(Ref&lt;DeferredPromise&gt;&amp;&amp; promise, const String&amp; data)
</ins><span class="cx"> {
</span><span class="cx">     JSC::JSValue value = parseAsJSON(promise-&gt;globalObject()-&gt;globalExec(), data);
</span><span class="cx">     if (!value)
</span><span class="lines">@@ -148,7 +157,7 @@
</span><span class="cx">         promise-&gt;resolve(value);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void fulfillPromiseWithArrayBuffer(Ref&lt;DeferredWrapper&gt;&amp;&amp; promise, ArrayBuffer* arrayBuffer)
</del><ins>+void fulfillPromiseWithArrayBuffer(Ref&lt;DeferredPromise&gt;&amp;&amp; promise, ArrayBuffer* arrayBuffer)
</ins><span class="cx"> {
</span><span class="cx">     if (!arrayBuffer) {
</span><span class="cx">         promise-&gt;reject&lt;JSValue&gt;(createOutOfMemoryError(promise-&gt;globalObject()-&gt;globalExec()));
</span><span class="lines">@@ -157,7 +166,7 @@
</span><span class="cx">     promise-&gt;resolve(arrayBuffer);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void fulfillPromiseWithArrayBuffer(Ref&lt;DeferredWrapper&gt;&amp;&amp; promise, const void* data, size_t length)
</del><ins>+void fulfillPromiseWithArrayBuffer(Ref&lt;DeferredPromise&gt;&amp;&amp; promise, const void* data, size_t length)
</ins><span class="cx"> {
</span><span class="cx">     fulfillPromiseWithArrayBuffer(WTFMove(promise), ArrayBuffer::tryCreate(data, length).get());
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMPromiseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMPromise.h (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMPromise.h        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/bindings/js/JSDOMPromise.h        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -96,15 +96,14 @@
</span><span class="cx">     static constexpr bool passByConstRef = false;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-class DeferredWrapper : public RefCounted&lt;DeferredWrapper&gt;, public ActiveDOMCallback {
</del><ins>+class DeferredPromise : public RefCounted&lt;DeferredPromise&gt;, public ActiveDOMCallback {
</ins><span class="cx"> public:
</span><del>-    // FIXME: We should pass references here, not pointers, see bug 161787
-    static Ref&lt;DeferredWrapper&gt; create(JSC::ExecState* state, JSDOMGlobalObject* globalObject, JSC::JSPromiseDeferred* deferred)
</del><ins>+    static Ref&lt;DeferredPromise&gt; create(JSDOMGlobalObject&amp; globalObject, JSC::JSPromiseDeferred&amp; deferred)
</ins><span class="cx">     {
</span><del>-        return adoptRef(*new DeferredWrapper(state, globalObject, deferred));
</del><ins>+        return adoptRef(*new DeferredPromise(globalObject, deferred));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ~DeferredWrapper();
</del><ins>+    ~DeferredPromise();
</ins><span class="cx"> 
</span><span class="cx">     template&lt;class ResolveResultType&gt; typename std::enable_if&lt;PromiseResultInspector&lt;ResolveResultType&gt;::passByValue, void&gt;::type
</span><span class="cx">     resolve(ResolveResultType result) { resolveWithValue(result); }
</span><span class="lines">@@ -136,7 +135,7 @@
</span><span class="cx">     void visitAggregate(JSC::SlotVisitor&amp; visitor) { visitor.appendUnbarrieredWeak(&amp;m_deferred); }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    DeferredWrapper(JSC::ExecState*, JSDOMGlobalObject*, JSC::JSPromiseDeferred*);
</del><ins>+    DeferredPromise(JSDOMGlobalObject&amp;, JSC::JSPromiseDeferred&amp;);
</ins><span class="cx"> 
</span><span class="cx">     void clear();
</span><span class="cx">     void contextDestroyed() override;
</span><span class="lines">@@ -152,13 +151,15 @@
</span><span class="cx">     JSC::Weak&lt;JSDOMGlobalObject&gt; m_globalObject;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-void fulfillPromiseWithJSON(Ref&lt;DeferredWrapper&gt;&amp;&amp;, const String&amp;);
-void fulfillPromiseWithArrayBuffer(Ref&lt;DeferredWrapper&gt;&amp;&amp;, ArrayBuffer*);
-void fulfillPromiseWithArrayBuffer(Ref&lt;DeferredWrapper&gt;&amp;&amp;, const void*, size_t);
</del><ins>+Ref&lt;DeferredPromise&gt; createDeferredPromise(JSC::ExecState&amp;, JSDOMWindow&amp;);
+
+void fulfillPromiseWithJSON(Ref&lt;DeferredPromise&gt;&amp;&amp;, const String&amp;);
+void fulfillPromiseWithArrayBuffer(Ref&lt;DeferredPromise&gt;&amp;&amp;, ArrayBuffer*);
+void fulfillPromiseWithArrayBuffer(Ref&lt;DeferredPromise&gt;&amp;&amp;, const void*, size_t);
</ins><span class="cx"> void rejectPromiseWithExceptionIfAny(JSC::ExecState&amp;, JSDOMGlobalObject&amp;, JSC::JSPromiseDeferred&amp;);
</span><span class="cx"> JSC::EncodedJSValue createRejectedPromiseWithTypeError(JSC::ExecState&amp;, const String&amp;);
</span><span class="cx"> 
</span><del>-using PromiseFunction = void(JSC::ExecState&amp;, Ref&lt;DeferredWrapper&gt;&amp;&amp;);
</del><ins>+using PromiseFunction = void(JSC::ExecState&amp;, Ref&lt;DeferredPromise&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx"> enum class PromiseExecutionScope { WindowOnly, WindowOrWorker };
</span><span class="cx"> 
</span><span class="lines">@@ -175,7 +176,7 @@
</span><span class="cx">     if (executionScope == PromiseExecutionScope::WindowOrWorker &amp;&amp; !promiseDeferred)
</span><span class="cx">         return JSC::jsUndefined();
</span><span class="cx"> 
</span><del>-    promiseFunction(state, DeferredWrapper::create(&amp;state, &amp;globalObject, promiseDeferred));
</del><ins>+    promiseFunction(state, DeferredPromise::create(globalObject, *promiseDeferred));
</ins><span class="cx"> 
</span><span class="cx">     rejectPromiseWithExceptionIfAny(state, globalObject, *promiseDeferred);
</span><span class="cx">     ASSERT_UNUSED(scope, !scope.exception());
</span><span class="lines">@@ -182,9 +183,9 @@
</span><span class="cx">     return promiseDeferred-&gt;promise();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-using BindingPromiseFunction = JSC::EncodedJSValue(JSC::ExecState*, Ref&lt;DeferredWrapper&gt;&amp;&amp;);
</del><ins>+using BindingPromiseFunction = JSC::EncodedJSValue(JSC::ExecState*, Ref&lt;DeferredPromise&gt;&amp;&amp;);
</ins><span class="cx"> template&lt;BindingPromiseFunction bindingFunction&gt;
</span><del>-inline void bindingPromiseFunctionAdapter(JSC::ExecState&amp; state, Ref&lt;DeferredWrapper&gt;&amp;&amp; promise)
</del><ins>+inline void bindingPromiseFunctionAdapter(JSC::ExecState&amp; state, Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     bindingFunction(&amp;state, WTFMove(promise));
</span><span class="cx"> }
</span><span class="lines">@@ -199,28 +200,25 @@
</span><span class="cx"> template &lt;typename Value&gt;
</span><span class="cx"> class DOMPromise {
</span><span class="cx"> public:
</span><del>-    DOMPromise(Ref&lt;DeferredWrapper&gt;&amp;&amp; wrapper)
-        : m_wrapper(WTFMove(wrapper))
-    {
-    }
</del><ins>+    DOMPromise(Ref&lt;DeferredPromise&gt;&amp;&amp; genericPromise) : m_promiseDeferred(WTFMove(genericPromise)) { }
</ins><span class="cx"> 
</span><del>-    DOMPromise(DOMPromise&amp;&amp; promise) : m_wrapper(WTFMove(promise.m_wrapper)) { }
</del><ins>+    DOMPromise(DOMPromise&amp;&amp; promise) : m_promiseDeferred(WTFMove(promise.m_promiseDeferred)) { }
</ins><span class="cx"> 
</span><span class="cx">     DOMPromise(const DOMPromise&amp;) = default;
</span><span class="cx">     DOMPromise&amp; operator=(DOMPromise const&amp;) = default;
</span><span class="cx"> 
</span><del>-    void resolve(typename PromiseResultInspector&lt;Value&gt;::Type value) { m_wrapper-&gt;resolve(value); }
</del><ins>+    void resolve(typename PromiseResultInspector&lt;Value&gt;::Type value) { m_promiseDeferred-&gt;resolve(value); }
</ins><span class="cx"> 
</span><del>-    template&lt;typename... ErrorType&gt; void reject(ErrorType&amp;&amp;... error) { m_wrapper-&gt;reject(std::forward&lt;ErrorType&gt;(error)...); }
</del><ins>+    template&lt;typename... ErrorType&gt; void reject(ErrorType&amp;&amp;... error) { m_promiseDeferred-&gt;reject(std::forward&lt;ErrorType&gt;(error)...); }
</ins><span class="cx"> 
</span><del>-    DeferredWrapper&amp; deferredWrapper() { return m_wrapper; }
</del><ins>+    JSC::JSValue promise() const { return m_promiseDeferred-&gt;promise(); };
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    Ref&lt;DeferredWrapper&gt; m_wrapper;
</del><ins>+    Ref&lt;DeferredPromise&gt; m_promiseDeferred;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> template&lt;class ResolveResultType&gt;
</span><del>-inline void DeferredWrapper::resolveWithValue(ResolveResultType&amp;&amp; result)
</del><ins>+inline void DeferredPromise::resolveWithValue(ResolveResultType&amp;&amp; result)
</ins><span class="cx"> {
</span><span class="cx">     if (isSuspended())
</span><span class="cx">         return;
</span><span class="lines">@@ -231,7 +229,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;class ResolveResultType&gt;
</span><del>-inline void DeferredWrapper::resolveWithNewlyCreated(Ref&lt;ResolveResultType&gt;&amp;&amp; result)
</del><ins>+inline void DeferredPromise::resolveWithNewlyCreated(Ref&lt;ResolveResultType&gt;&amp;&amp; result)
</ins><span class="cx"> {
</span><span class="cx">     if (isSuspended())
</span><span class="cx">         return;
</span><span class="lines">@@ -243,7 +241,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;class RejectResultType&gt;
</span><del>-inline void DeferredWrapper::rejectWithValue(RejectResultType&amp;&amp; result)
</del><ins>+inline void DeferredPromise::rejectWithValue(RejectResultType&amp;&amp; result)
</ins><span class="cx"> {
</span><span class="cx">     if (isSuspended())
</span><span class="cx">         return;
</span><span class="lines">@@ -255,7 +253,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt;
</span><del>-inline void DeferredWrapper::resolve(bool result)
</del><ins>+inline void DeferredPromise::resolve(bool result)
</ins><span class="cx"> {
</span><span class="cx">     if (isSuspended())
</span><span class="cx">         return;
</span><span class="lines">@@ -267,7 +265,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt;
</span><del>-inline void DeferredWrapper::resolve(JSC::JSValue value)
</del><ins>+inline void DeferredPromise::resolve(JSC::JSValue value)
</ins><span class="cx"> {
</span><span class="cx">     if (isSuspended())
</span><span class="cx">         return;
</span><span class="lines">@@ -279,7 +277,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt;
</span><del>-inline void DeferredWrapper::reject(JSC::JSValue value)
</del><ins>+inline void DeferredPromise::reject(JSC::JSValue value)
</ins><span class="cx"> {
</span><span class="cx">     if (isSuspended())
</span><span class="cx">         return;
</span><span class="lines">@@ -291,7 +289,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt;
</span><del>-inline void DeferredWrapper::resolve(std::nullptr_t)
</del><ins>+inline void DeferredPromise::resolve(std::nullptr_t)
</ins><span class="cx"> {
</span><span class="cx">     if (isSuspended())
</span><span class="cx">         return;
</span><span class="lines">@@ -303,7 +301,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt;
</span><del>-inline void DeferredWrapper::reject(std::nullptr_t)
</del><ins>+inline void DeferredPromise::reject(std::nullptr_t)
</ins><span class="cx"> {
</span><span class="cx">     if (isSuspended())
</span><span class="cx">         return;
</span><span class="lines">@@ -315,7 +313,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt;
</span><del>-inline void DeferredWrapper::resolve(const String&amp; result)
</del><ins>+inline void DeferredPromise::resolve(const String&amp; result)
</ins><span class="cx"> {
</span><span class="cx">     if (isSuspended())
</span><span class="cx">         return;
</span><span class="lines">@@ -327,7 +325,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt;
</span><del>-inline void DeferredWrapper::reject(const String&amp; result)
</del><ins>+inline void DeferredPromise::reject(const String&amp; result)
</ins><span class="cx"> {
</span><span class="cx">     if (isSuspended())
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWrappercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMWrapper.cpp (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWrapper.cpp        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/bindings/js/JSDOMWrapper.cpp        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx"> #include &quot;JSDOMWrapper.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;DOMWrapperWorld.h&quot;
</span><ins>+#include &quot;JSDOMWindow.h&quot;
</ins><span class="cx"> #include &lt;runtime/Error.h&gt;
</span><span class="cx"> 
</span><span class="cx"> using namespace JSC;
</span><span class="lines">@@ -35,4 +36,11 @@
</span><span class="cx"> 
</span><span class="cx"> STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(JSDOMObject);
</span><span class="cx"> 
</span><ins>+JSDOMWindow&amp; JSDOMObject::domWindow() const
+{
+    auto* domWindow = JSC::jsCast&lt;JSDOMWindow*&gt;(JSC::JSNonFinalObject::globalObject());
+    ASSERT(domWindow);
+    return *domWindow;
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWrapperh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMWrapper.h (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWrapper.h        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/bindings/js/JSDOMWrapper.h        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><ins>+class JSDOMWindow;
</ins><span class="cx"> class ScriptExecutionContext;
</span><span class="cx"> 
</span><span class="cx"> static const uint8_t JSNodeType = JSC::LastJSCObjectType + 1;
</span><span class="lines">@@ -41,8 +42,10 @@
</span><span class="cx">     JSDOMGlobalObject* globalObject() const { return JSC::jsCast&lt;JSDOMGlobalObject*&gt;(JSC::JSNonFinalObject::globalObject()); }
</span><span class="cx">     ScriptExecutionContext* scriptExecutionContext() const { return globalObject()-&gt;scriptExecutionContext(); }
</span><span class="cx"> 
</span><ins>+    JSDOMWindow&amp; domWindow() const;
+
</ins><span class="cx"> protected:
</span><del>-    JSDOMObject(JSC::Structure* structure, JSC::JSGlobalObject&amp; globalObject) 
</del><ins>+    JSDOMObject(JSC::Structure* structure, JSC::JSGlobalObject&amp; globalObject)
</ins><span class="cx">         : Base(globalObject.vm(), structure)
</span><span class="cx">     {
</span><span class="cx">         ASSERT(scriptExecutionContext());
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSFontFaceCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSFontFaceCustom.cpp (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSFontFaceCustom.cpp        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/bindings/js/JSFontFaceCustom.cpp        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -39,11 +39,11 @@
</span><span class="cx"> {
</span><span class="cx">     if (!m_loaded) {
</span><span class="cx">         if (!wrapped().promise()) {
</span><del>-            Ref&lt;DeferredWrapper&gt; promise = DeferredWrapper::create(&amp;state, globalObject(), JSC::JSPromiseDeferred::create(&amp;state, globalObject()));
</del><ins>+            auto promise = createDeferredPromise(state, domWindow());
</ins><span class="cx">             m_loaded.set(state.vm(), this, promise-&gt;promise());
</span><span class="cx">             wrapped().registerLoaded(WTFMove(promise));
</span><span class="cx">         } else
</span><del>-            m_loaded.set(state.vm(), this, wrapped().promise().value().deferredWrapper().promise());
</del><ins>+            m_loaded.set(state.vm(), this, wrapped().promise().value().promise());
</ins><span class="cx">     }
</span><span class="cx">     return m_loaded.get();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSFontFaceSetCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSFontFaceSetCustom.cpp (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSFontFaceSetCustom.cpp        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/bindings/js/JSFontFaceSetCustom.cpp        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> JSC::JSValue JSFontFaceSet::ready(JSC::ExecState&amp; state) const
</span><span class="cx"> {
</span><span class="cx">     if (!m_ready) {
</span><del>-        Ref&lt;DeferredWrapper&gt; promise = DeferredWrapper::create(&amp;state, globalObject(), JSC::JSPromiseDeferred::create(&amp;state, globalObject()));
</del><ins>+        auto promise = createDeferredPromise(state, domWindow());
</ins><span class="cx">         m_ready.set(state.vm(), this, promise-&gt;promise());
</span><span class="cx">         wrapped().registerReady(WTFMove(promise));
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSMediaDevicesCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -340,7 +340,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static void JSMediaDevicesGetUserMediaPromiseFunction(ExecState&amp; state, Ref&lt;DeferredWrapper&gt;&amp;&amp; promise)
</del><ins>+static void JSMediaDevicesGetUserMediaPromiseFunction(ExecState&amp; state, Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state.vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSMediaStreamTrackCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSMediaStreamTrackCustom.cpp (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSMediaStreamTrackCustom.cpp        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/bindings/js/JSMediaStreamTrackCustom.cpp        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -184,11 +184,13 @@
</span><span class="cx">         valid = !advancedConstraints.isEmpty() || !mandatoryConstraints.isEmpty();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    JSC::JSPromiseDeferred* promiseDeferred = JSC::JSPromiseDeferred::create(&amp;state, globalObject());
</del><ins>+    auto deferredPromise = createDeferredPromise(state, domWindow());
+    auto promise = deferredPromise-&gt;promise();
+
</ins><span class="cx">     auto constraints = MediaConstraintsImpl::create(WTFMove(mandatoryConstraints), WTFMove(advancedConstraints), valid);
</span><del>-    wrapped().applyConstraints(WTFMove(constraints), DeferredWrapper::create(&amp;state, globalObject(), promiseDeferred));
</del><ins>+    wrapped().applyConstraints(WTFMove(constraints), WTFMove(deferredPromise));
</ins><span class="cx"> 
</span><del>-    return promiseDeferred-&gt;promise();
</del><ins>+    return promise;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue JSMediaStreamTrack::getConstraints(ExecState&amp; state)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSReadableStreamSourceCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSReadableStreamSourceCustom.cpp (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSReadableStreamSourceCustom.cpp        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/bindings/js/JSReadableStreamSourceCustom.cpp        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -43,8 +43,11 @@
</span><span class="cx">     JSReadableStreamSource* jsSource = const_cast&lt;JSReadableStreamSource*&gt;(this);
</span><span class="cx">     m_controller.set(state.vm(), jsSource, state.argument(0));
</span><span class="cx"> 
</span><ins>+    ASSERT(globalObject());
</ins><span class="cx">     JSC::JSPromiseDeferred* promiseDeferred = JSC::JSPromiseDeferred::create(&amp;state, globalObject());
</span><del>-    wrapped().start(ReadableStreamDefaultController(controller), DeferredWrapper::create(&amp;state, globalObject(), promiseDeferred));
</del><ins>+    if (!promiseDeferred)
+        return jsUndefined();
+    wrapped().start(ReadableStreamDefaultController(controller), DeferredPromise::create(*globalObject(), *promiseDeferred));
</ins><span class="cx">     return promiseDeferred-&gt;promise();
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSWebKitSubtleCryptoCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -173,9 +173,8 @@
</span><span class="cx">     if (!success)
</span><span class="cx">         return jsUndefined();
</span><span class="cx"> 
</span><del>-    
-    JSPromiseDeferred* promiseDeferred = JSPromiseDeferred::create(&amp;state, globalObject());
-    RefPtr&lt;DeferredWrapper&gt; wrapper = DeferredWrapper::create(&amp;state, globalObject(), promiseDeferred);
</del><ins>+    RefPtr&lt;DeferredPromise&gt; wrapper = createDeferredPromise(state, domWindow());
+    auto promise = wrapper-&gt;promise();
</ins><span class="cx">     auto successCallback = [wrapper](const Vector&lt;uint8_t&gt;&amp; result) mutable {
</span><span class="cx">         fulfillPromiseWithArrayBuffer(wrapper.releaseNonNull(), result.data(), result.size());
</span><span class="cx">     };
</span><span class="lines">@@ -190,7 +189,7 @@
</span><span class="cx">         return jsUndefined();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return promiseDeferred-&gt;promise();
</del><ins>+    return promise;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue JSWebKitSubtleCrypto::decrypt(ExecState&amp; state)
</span><span class="lines">@@ -227,8 +226,8 @@
</span><span class="cx">     if (!success)
</span><span class="cx">         return jsUndefined();
</span><span class="cx"> 
</span><del>-    JSPromiseDeferred* promiseDeferred = JSPromiseDeferred::create(&amp;state, globalObject());
-    RefPtr&lt;DeferredWrapper&gt; wrapper = DeferredWrapper::create(&amp;state, globalObject(), promiseDeferred);
</del><ins>+    RefPtr&lt;DeferredPromise&gt; wrapper = createDeferredPromise(state, domWindow());
+    auto promise = wrapper-&gt;promise();
</ins><span class="cx">     auto successCallback = [wrapper](const Vector&lt;uint8_t&gt;&amp; result) mutable {
</span><span class="cx">         fulfillPromiseWithArrayBuffer(wrapper.releaseNonNull(), result.data(), result.size());
</span><span class="cx">     };
</span><span class="lines">@@ -243,7 +242,7 @@
</span><span class="cx">         return jsUndefined();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return promiseDeferred-&gt;promise();
</del><ins>+    return promise;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue JSWebKitSubtleCrypto::sign(ExecState&amp; state)
</span><span class="lines">@@ -280,8 +279,8 @@
</span><span class="cx">     if (!success)
</span><span class="cx">         return jsUndefined();
</span><span class="cx"> 
</span><del>-    JSPromiseDeferred* promiseDeferred = JSPromiseDeferred::create(&amp;state, globalObject());
-    RefPtr&lt;DeferredWrapper&gt; wrapper = DeferredWrapper::create(&amp;state, globalObject(), promiseDeferred);
</del><ins>+    RefPtr&lt;DeferredPromise&gt; wrapper = createDeferredPromise(state, domWindow());
+    auto promise = wrapper-&gt;promise();
</ins><span class="cx">     auto successCallback = [wrapper](const Vector&lt;uint8_t&gt;&amp; result) mutable {
</span><span class="cx">         fulfillPromiseWithArrayBuffer(wrapper.releaseNonNull(), result.data(), result.size());
</span><span class="cx">     };
</span><span class="lines">@@ -296,7 +295,7 @@
</span><span class="cx">         return jsUndefined();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return promiseDeferred-&gt;promise();
</del><ins>+    return promise;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue JSWebKitSubtleCrypto::verify(ExecState&amp; state)
</span><span class="lines">@@ -339,8 +338,8 @@
</span><span class="cx">     if (!success)
</span><span class="cx">         return jsUndefined();
</span><span class="cx"> 
</span><del>-    JSPromiseDeferred* promiseDeferred = JSPromiseDeferred::create(&amp;state, globalObject());
-    RefPtr&lt;DeferredWrapper&gt; wrapper = DeferredWrapper::create(&amp;state, globalObject(), promiseDeferred);
</del><ins>+    RefPtr&lt;DeferredPromise&gt; wrapper = createDeferredPromise(state, domWindow());
+    auto promise = wrapper-&gt;promise();
</ins><span class="cx">     auto successCallback = [wrapper](bool result) mutable {
</span><span class="cx">         wrapper-&gt;resolve(result);
</span><span class="cx">     };
</span><span class="lines">@@ -355,7 +354,7 @@
</span><span class="cx">         return jsUndefined();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return promiseDeferred-&gt;promise();
</del><ins>+    return promise;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue JSWebKitSubtleCrypto::digest(ExecState&amp; state)
</span><span class="lines">@@ -382,8 +381,8 @@
</span><span class="cx">     if (!success)
</span><span class="cx">         return jsUndefined();
</span><span class="cx"> 
</span><del>-    JSPromiseDeferred* promiseDeferred = JSPromiseDeferred::create(&amp;state, globalObject());
-    RefPtr&lt;DeferredWrapper&gt; wrapper = DeferredWrapper::create(&amp;state, globalObject(), promiseDeferred);
</del><ins>+    RefPtr&lt;DeferredPromise&gt; wrapper = createDeferredPromise(state, domWindow());
+    auto promise = wrapper-&gt;promise();
</ins><span class="cx">     auto successCallback = [wrapper](const Vector&lt;uint8_t&gt;&amp; result) mutable {
</span><span class="cx">         fulfillPromiseWithArrayBuffer(wrapper.releaseNonNull(), result.data(), result.size());
</span><span class="cx">     };
</span><span class="lines">@@ -398,7 +397,7 @@
</span><span class="cx">         return jsUndefined();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return promiseDeferred-&gt;promise();
</del><ins>+    return promise;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue JSWebKitSubtleCrypto::generateKey(ExecState&amp; state)
</span><span class="lines">@@ -434,8 +433,8 @@
</span><span class="cx">             return jsUndefined();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    JSPromiseDeferred* promiseDeferred = JSPromiseDeferred::create(&amp;state, globalObject());
-    RefPtr&lt;DeferredWrapper&gt; wrapper = DeferredWrapper::create(&amp;state, globalObject(), promiseDeferred);
</del><ins>+    RefPtr&lt;DeferredPromise&gt; wrapper = createDeferredPromise(state, domWindow());
+    auto promise = wrapper-&gt;promise();
</ins><span class="cx">     auto successCallback = [wrapper](CryptoKey* key, CryptoKeyPair* keyPair) mutable {
</span><span class="cx">         ASSERT(key || keyPair);
</span><span class="cx">         ASSERT(!key || !keyPair);
</span><span class="lines">@@ -455,7 +454,7 @@
</span><span class="cx">         return jsUndefined();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return promiseDeferred-&gt;promise();
</del><ins>+    return promise;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static void importKey(ExecState&amp; state, CryptoKeyFormat keyFormat, CryptoOperationData data, RefPtr&lt;CryptoAlgorithm&gt; algorithm, RefPtr&lt;CryptoAlgorithmParameters&gt; parameters, bool extractable, CryptoKeyUsage keyUsages, CryptoAlgorithm::KeyCallback callback, CryptoAlgorithm::VoidCallback failureCallback)
</span><span class="lines">@@ -570,8 +569,8 @@
</span><span class="cx">             return jsUndefined();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    JSPromiseDeferred* promiseDeferred = JSPromiseDeferred::create(&amp;state, globalObject());
-    RefPtr&lt;DeferredWrapper&gt; wrapper = DeferredWrapper::create(&amp;state, globalObject(), promiseDeferred);
</del><ins>+    RefPtr&lt;DeferredPromise&gt; wrapper = createDeferredPromise(state, domWindow());
+    auto promise = wrapper-&gt;promise();
</ins><span class="cx">     auto successCallback = [wrapper](CryptoKey&amp; result) mutable {
</span><span class="cx">         wrapper-&gt;resolve(result);
</span><span class="cx">     };
</span><span class="lines">@@ -583,7 +582,7 @@
</span><span class="cx">     if (UNLIKELY(scope.exception()))
</span><span class="cx">         return jsUndefined();
</span><span class="cx"> 
</span><del>-    return promiseDeferred-&gt;promise();
</del><ins>+    return promise;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static void exportKey(ExecState&amp; state, CryptoKeyFormat keyFormat, const CryptoKey&amp; key, CryptoAlgorithm::VectorCallback callback, CryptoAlgorithm::VoidCallback failureCallback)
</span><span class="lines">@@ -639,8 +638,8 @@
</span><span class="cx">     if (!key)
</span><span class="cx">         return throwTypeError(&amp;state, scope);
</span><span class="cx"> 
</span><del>-    JSPromiseDeferred* promiseDeferred = JSPromiseDeferred::create(&amp;state, globalObject());
-    RefPtr&lt;DeferredWrapper&gt; wrapper = DeferredWrapper::create(&amp;state, globalObject(), promiseDeferred);
</del><ins>+    RefPtr&lt;DeferredPromise&gt; wrapper = createDeferredPromise(state, domWindow());
+    auto promise = wrapper-&gt;promise();
</ins><span class="cx">     auto successCallback = [wrapper](const Vector&lt;uint8_t&gt;&amp; result) mutable {
</span><span class="cx">         fulfillPromiseWithArrayBuffer(wrapper.releaseNonNull(), result.data(), result.size());
</span><span class="cx">     };
</span><span class="lines">@@ -652,7 +651,7 @@
</span><span class="cx">     if (UNLIKELY(scope.exception()))
</span><span class="cx">         return jsUndefined();
</span><span class="cx"> 
</span><del>-    return promiseDeferred-&gt;promise();
</del><ins>+    return promise;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue JSWebKitSubtleCrypto::wrapKey(ExecState&amp; state)
</span><span class="lines">@@ -693,8 +692,8 @@
</span><span class="cx">     if (!parameters)
</span><span class="cx">         return jsUndefined();
</span><span class="cx"> 
</span><del>-    JSPromiseDeferred* promiseDeferred = JSPromiseDeferred::create(&amp;state, globalObject());
-    RefPtr&lt;DeferredWrapper&gt; wrapper = DeferredWrapper::create(&amp;state, globalObject(), promiseDeferred);
</del><ins>+    RefPtr&lt;DeferredPromise&gt; wrapper = createDeferredPromise(state, domWindow());
+    auto promise = wrapper-&gt;promise();
</ins><span class="cx"> 
</span><span class="cx">     auto exportSuccessCallback = [keyFormat, algorithm, parameters, wrappingKey, wrapper](const Vector&lt;uint8_t&gt;&amp; exportedKeyData) mutable {
</span><span class="cx">         auto encryptSuccessCallback = [wrapper](const Vector&lt;uint8_t&gt;&amp; encryptedData) mutable {
</span><span class="lines">@@ -722,7 +721,7 @@
</span><span class="cx">         return jsUndefined();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return promiseDeferred-&gt;promise();
</del><ins>+    return promise;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue JSWebKitSubtleCrypto::unwrapKey(ExecState&amp; state)
</span><span class="lines">@@ -793,8 +792,8 @@
</span><span class="cx">             return jsUndefined();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    JSPromiseDeferred* promiseDeferred = JSPromiseDeferred::create(&amp;state, globalObject());
-    RefPtr&lt;DeferredWrapper&gt; wrapper = DeferredWrapper::create(&amp;state, globalObject(), promiseDeferred);
</del><ins>+    RefPtr&lt;DeferredPromise&gt; wrapper = createDeferredPromise(state, domWindow());
+    auto promise = wrapper-&gt;promise();
</ins><span class="cx">     Strong&lt;JSDOMGlobalObject&gt; domGlobalObject(state.vm(), globalObject());
</span><span class="cx"> 
</span><span class="cx">     auto decryptSuccessCallback = [domGlobalObject, keyFormat, unwrappedKeyAlgorithm, unwrappedKeyAlgorithmParameters, extractable, keyUsages, wrapper](const Vector&lt;uint8_t&gt;&amp; result) mutable {
</span><span class="lines">@@ -828,7 +827,7 @@
</span><span class="cx">         return jsUndefined();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return promiseDeferred-&gt;promise();
</del><ins>+    return promise;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -3425,7 +3425,7 @@
</span><span class="cx"> 
</span><span class="cx">                 my $scope = $interface-&gt;extendedAttributes-&gt;{&quot;Exposed&quot;} ? &quot;WindowOrWorker&quot; : &quot;WindowOnly&quot;;
</span><span class="cx">                 push(@implContent, &lt;&lt;END);
</span><del>-static EncodedJSValue ${functionName}Promise(ExecState*, Ref&lt;DeferredWrapper&gt;&amp;&amp;);
</del><ins>+static EncodedJSValue ${functionName}Promise(ExecState*, Ref&lt;DeferredPromise&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx"> ${functionReturn} ${functionName}(ExecState* state)
</span><span class="cx"> {
</span><span class="lines">@@ -3433,7 +3433,7 @@
</span><span class="cx">     return JSValue::encode(callPromiseFunction&lt;${functionName}Promise, PromiseExecutionScope::${scope}&gt;(*state));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline EncodedJSValue ${functionName}Promise(ExecState* state, Ref&lt;DeferredWrapper&gt;&amp;&amp; deferredWrapper)
</del><ins>+static inline EncodedJSValue ${functionName}Promise(ExecState* state, Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> END
</span><span class="cx">             }
</span><span class="cx">             else {
</span><span class="lines">@@ -4146,7 +4146,7 @@
</span><span class="cx">     my @arguments;
</span><span class="cx"> 
</span><span class="cx">     if (IsReturningPromise($function)) {
</span><del>-        push(@arguments, &quot;WTFMove(deferredWrapper)&quot;);
</del><ins>+        push(@arguments, &quot;WTFMove(promise)&quot;);
</ins><span class="cx">     }
</span><span class="cx">     push(@arguments, &quot;ec&quot;) if $function-&gt;signature-&gt;extendedAttributes-&gt;{&quot;RaisesException&quot;} || $function-&gt;signature-&gt;extendedAttributes-&gt;{&quot;RaisesExceptionWithMessage&quot;};
</span><span class="cx">     return @arguments;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -231,7 +231,7 @@
</span><span class="cx">     return getDOMConstructor&lt;JSTestNodeConstructor&gt;(vm, *jsCast&lt;const JSDOMGlobalObject*&gt;(globalObject));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static EncodedJSValue jsTestNodePrototypeFunctionTestWorkerPromisePromise(ExecState*, Ref&lt;DeferredWrapper&gt;&amp;&amp;);
</del><ins>+static EncodedJSValue jsTestNodePrototypeFunctionTestWorkerPromisePromise(ExecState*, Ref&lt;DeferredPromise&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestNodePrototypeFunctionTestWorkerPromise(ExecState* state)
</span><span class="cx"> {
</span><span class="lines">@@ -239,7 +239,7 @@
</span><span class="cx">     return JSValue::encode(callPromiseFunction&lt;jsTestNodePrototypeFunctionTestWorkerPromisePromise, PromiseExecutionScope::WindowOrWorker&gt;(*state));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline EncodedJSValue jsTestNodePrototypeFunctionTestWorkerPromisePromise(ExecState* state, Ref&lt;DeferredWrapper&gt;&amp;&amp; deferredWrapper)
</del><ins>+static inline EncodedJSValue jsTestNodePrototypeFunctionTestWorkerPromisePromise(ExecState* state, Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="lines">@@ -250,7 +250,7 @@
</span><span class="cx">         return throwThisTypeError(*state, throwScope, &quot;TestNode&quot;, &quot;testWorkerPromise&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestNode::info());
</span><span class="cx">     auto&amp; impl = castedThis-&gt;wrapped();
</span><del>-    impl.testWorkerPromise(WTFMove(deferredWrapper));
</del><ins>+    impl.testWorkerPromise(WTFMove(promise));
</ins><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="cx"> }
</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 (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -7160,7 +7160,7 @@
</span><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionPromise(ExecState*, Ref&lt;DeferredWrapper&gt;&amp;&amp;);
</del><ins>+static EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionPromise(ExecState*, Ref&lt;DeferredPromise&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionTestPromiseFunction(ExecState* state)
</span><span class="cx"> {
</span><span class="lines">@@ -7168,7 +7168,7 @@
</span><span class="cx">     return JSValue::encode(callPromiseFunction&lt;jsTestObjPrototypeFunctionTestPromiseFunctionPromise, PromiseExecutionScope::WindowOnly&gt;(*state));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionPromise(ExecState* state, Ref&lt;DeferredWrapper&gt;&amp;&amp; deferredWrapper)
</del><ins>+static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionPromise(ExecState* state, Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="lines">@@ -7179,11 +7179,11 @@
</span><span class="cx">         return throwThisTypeError(*state, throwScope, &quot;TestObject&quot;, &quot;testPromiseFunction&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     auto&amp; impl = castedThis-&gt;wrapped();
</span><del>-    impl.testPromiseFunction(WTFMove(deferredWrapper));
</del><ins>+    impl.testPromiseFunction(WTFMove(promise));
</ins><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionWithFloatArgumentPromise(ExecState*, Ref&lt;DeferredWrapper&gt;&amp;&amp;);
</del><ins>+static EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionWithFloatArgumentPromise(ExecState*, Ref&lt;DeferredPromise&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionTestPromiseFunctionWithFloatArgument(ExecState* state)
</span><span class="cx"> {
</span><span class="lines">@@ -7191,7 +7191,7 @@
</span><span class="cx">     return JSValue::encode(callPromiseFunction&lt;jsTestObjPrototypeFunctionTestPromiseFunctionWithFloatArgumentPromise, PromiseExecutionScope::WindowOnly&gt;(*state));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionWithFloatArgumentPromise(ExecState* state, Ref&lt;DeferredWrapper&gt;&amp;&amp; deferredWrapper)
</del><ins>+static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionWithFloatArgumentPromise(ExecState* state, Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="lines">@@ -7207,11 +7207,11 @@
</span><span class="cx">     auto a = convert&lt;float&gt;(*state, state-&gt;argument(0), ShouldAllowNonFinite::No);
</span><span class="cx">     if (UNLIKELY(throwScope.exception()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    impl.testPromiseFunctionWithFloatArgument(WTFMove(a), WTFMove(deferredWrapper));
</del><ins>+    impl.testPromiseFunctionWithFloatArgument(WTFMove(a), WTFMove(promise));
</ins><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionWithExceptionPromise(ExecState*, Ref&lt;DeferredWrapper&gt;&amp;&amp;);
</del><ins>+static EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionWithExceptionPromise(ExecState*, Ref&lt;DeferredPromise&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionTestPromiseFunctionWithException(ExecState* state)
</span><span class="cx"> {
</span><span class="lines">@@ -7219,7 +7219,7 @@
</span><span class="cx">     return JSValue::encode(callPromiseFunction&lt;jsTestObjPrototypeFunctionTestPromiseFunctionWithExceptionPromise, PromiseExecutionScope::WindowOnly&gt;(*state));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionWithExceptionPromise(ExecState* state, Ref&lt;DeferredWrapper&gt;&amp;&amp; deferredWrapper)
</del><ins>+static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionWithExceptionPromise(ExecState* state, Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="lines">@@ -7231,12 +7231,12 @@
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     auto&amp; impl = castedThis-&gt;wrapped();
</span><span class="cx">     ExceptionCode ec = 0;
</span><del>-    impl.testPromiseFunctionWithException(WTFMove(deferredWrapper), ec);
</del><ins>+    impl.testPromiseFunctionWithException(WTFMove(promise), ec);
</ins><span class="cx">     setDOMException(state, ec);
</span><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionWithOptionalIntArgumentPromise(ExecState*, Ref&lt;DeferredWrapper&gt;&amp;&amp;);
</del><ins>+static EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionWithOptionalIntArgumentPromise(ExecState*, Ref&lt;DeferredPromise&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionTestPromiseFunctionWithOptionalIntArgument(ExecState* state)
</span><span class="cx"> {
</span><span class="lines">@@ -7244,7 +7244,7 @@
</span><span class="cx">     return JSValue::encode(callPromiseFunction&lt;jsTestObjPrototypeFunctionTestPromiseFunctionWithOptionalIntArgumentPromise, PromiseExecutionScope::WindowOnly&gt;(*state));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionWithOptionalIntArgumentPromise(ExecState* state, Ref&lt;DeferredWrapper&gt;&amp;&amp; deferredWrapper)
</del><ins>+static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionWithOptionalIntArgumentPromise(ExecState* state, Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="lines">@@ -7258,11 +7258,11 @@
</span><span class="cx">     auto a = state-&gt;argument(0).isUndefined() ? Optional&lt;int32_t&gt;() : convert&lt;int32_t&gt;(*state, state-&gt;uncheckedArgument(0), NormalConversion);
</span><span class="cx">     if (UNLIKELY(throwScope.exception()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    impl.testPromiseFunctionWithOptionalIntArgument(WTFMove(a), WTFMove(deferredWrapper));
</del><ins>+    impl.testPromiseFunctionWithOptionalIntArgument(WTFMove(a), WTFMove(promise));
</ins><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static EncodedJSValue jsTestObjPrototypeFunctionTestPromiseOverloadedFunction1Promise(ExecState*, Ref&lt;DeferredWrapper&gt;&amp;&amp;);
</del><ins>+static EncodedJSValue jsTestObjPrototypeFunctionTestPromiseOverloadedFunction1Promise(ExecState*, Ref&lt;DeferredPromise&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx"> static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseOverloadedFunction1(ExecState* state)
</span><span class="cx"> {
</span><span class="lines">@@ -7270,7 +7270,7 @@
</span><span class="cx">     return JSValue::encode(callPromiseFunction&lt;jsTestObjPrototypeFunctionTestPromiseOverloadedFunction1Promise, PromiseExecutionScope::WindowOnly&gt;(*state));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseOverloadedFunction1Promise(ExecState* state, Ref&lt;DeferredWrapper&gt;&amp;&amp; deferredWrapper)
</del><ins>+static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseOverloadedFunction1Promise(ExecState* state, Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="lines">@@ -7286,11 +7286,11 @@
</span><span class="cx">     auto a = convert&lt;float&gt;(*state, state-&gt;argument(0), ShouldAllowNonFinite::No);
</span><span class="cx">     if (UNLIKELY(throwScope.exception()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    impl.testPromiseOverloadedFunction(WTFMove(a), WTFMove(deferredWrapper));
</del><ins>+    impl.testPromiseOverloadedFunction(WTFMove(a), WTFMove(promise));
</ins><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static EncodedJSValue jsTestObjPrototypeFunctionTestPromiseOverloadedFunction2Promise(ExecState*, Ref&lt;DeferredWrapper&gt;&amp;&amp;);
</del><ins>+static EncodedJSValue jsTestObjPrototypeFunctionTestPromiseOverloadedFunction2Promise(ExecState*, Ref&lt;DeferredPromise&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx"> static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseOverloadedFunction2(ExecState* state)
</span><span class="cx"> {
</span><span class="lines">@@ -7298,7 +7298,7 @@
</span><span class="cx">     return JSValue::encode(callPromiseFunction&lt;jsTestObjPrototypeFunctionTestPromiseOverloadedFunction2Promise, PromiseExecutionScope::WindowOnly&gt;(*state));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseOverloadedFunction2Promise(ExecState* state, Ref&lt;DeferredWrapper&gt;&amp;&amp; deferredWrapper)
</del><ins>+static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseOverloadedFunction2Promise(ExecState* state, Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="lines">@@ -7314,7 +7314,7 @@
</span><span class="cx">     auto request = JSFetchRequest::toWrapped(state-&gt;argument(0));
</span><span class="cx">     if (UNLIKELY(!request))
</span><span class="cx">         return throwArgumentTypeError(*state, throwScope, 0, &quot;request&quot;, &quot;TestObject&quot;, &quot;testPromiseOverloadedFunction&quot;, &quot;FetchRequest&quot;);
</span><del>-    impl.testPromiseOverloadedFunction(*request, WTFMove(deferredWrapper));
</del><ins>+    impl.testPromiseOverloadedFunction(*request, WTFMove(promise));
</ins><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -7335,7 +7335,7 @@
</span><span class="cx">     return argsCount &lt; 1 ? throwVMError(state, throwScope, createNotEnoughArgumentsError(state)) : throwVMTypeError(state, throwScope);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static EncodedJSValue jsTestObjConstructorFunctionTestStaticPromiseFunctionPromise(ExecState*, Ref&lt;DeferredWrapper&gt;&amp;&amp;);
</del><ins>+static EncodedJSValue jsTestObjConstructorFunctionTestStaticPromiseFunctionPromise(ExecState*, Ref&lt;DeferredPromise&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjConstructorFunctionTestStaticPromiseFunction(ExecState* state)
</span><span class="cx"> {
</span><span class="lines">@@ -7343,16 +7343,16 @@
</span><span class="cx">     return JSValue::encode(callPromiseFunction&lt;jsTestObjConstructorFunctionTestStaticPromiseFunctionPromise, PromiseExecutionScope::WindowOnly&gt;(*state));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline EncodedJSValue jsTestObjConstructorFunctionTestStaticPromiseFunctionPromise(ExecState* state, Ref&lt;DeferredWrapper&gt;&amp;&amp; deferredWrapper)
</del><ins>+static inline EncodedJSValue jsTestObjConstructorFunctionTestStaticPromiseFunctionPromise(ExecState* state, Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     UNUSED_PARAM(throwScope);
</span><del>-    TestObj::testStaticPromiseFunction(WTFMove(deferredWrapper));
</del><ins>+    TestObj::testStaticPromiseFunction(WTFMove(promise));
</ins><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static EncodedJSValue jsTestObjConstructorFunctionTestStaticPromiseFunctionWithExceptionPromise(ExecState*, Ref&lt;DeferredWrapper&gt;&amp;&amp;);
</del><ins>+static EncodedJSValue jsTestObjConstructorFunctionTestStaticPromiseFunctionWithExceptionPromise(ExecState*, Ref&lt;DeferredPromise&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjConstructorFunctionTestStaticPromiseFunctionWithException(ExecState* state)
</span><span class="cx"> {
</span><span class="lines">@@ -7360,13 +7360,13 @@
</span><span class="cx">     return JSValue::encode(callPromiseFunction&lt;jsTestObjConstructorFunctionTestStaticPromiseFunctionWithExceptionPromise, PromiseExecutionScope::WindowOnly&gt;(*state));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline EncodedJSValue jsTestObjConstructorFunctionTestStaticPromiseFunctionWithExceptionPromise(ExecState* state, Ref&lt;DeferredWrapper&gt;&amp;&amp; deferredWrapper)
</del><ins>+static inline EncodedJSValue jsTestObjConstructorFunctionTestStaticPromiseFunctionWithExceptionPromise(ExecState* state, Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</ins><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     UNUSED_PARAM(throwScope);
</span><span class="cx">     ExceptionCode ec = 0;
</span><del>-    TestObj::testStaticPromiseFunctionWithException(WTFMove(deferredWrapper), ec);
</del><ins>+    TestObj::testStaticPromiseFunctionWithException(WTFMove(promise), ec);
</ins><span class="cx">     setDOMException(state, ec);
</span><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoredomCustomElementRegistrycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/CustomElementRegistry.cpp (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/CustomElementRegistry.cpp        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/dom/CustomElementRegistry.cpp        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -34,7 +34,6 @@
</span><span class="cx"> #include &quot;Element.h&quot;
</span><span class="cx"> #include &quot;ElementTraversal.h&quot;
</span><span class="cx"> #include &quot;JSCustomElementInterface.h&quot;
</span><del>-#include &quot;JSDOMPromise.h&quot;
</del><span class="cx"> #include &quot;MathMLNames.h&quot;
</span><span class="cx"> #include &quot;QualifiedName.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCoredomCustomElementRegistryh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/CustomElementRegistry.h (206251 => 206252)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/CustomElementRegistry.h        2016-09-22 06:07:30 UTC (rev 206251)
+++ trunk/Source/WebCore/dom/CustomElementRegistry.h        2016-09-22 07:35:46 UTC (rev 206252)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(CUSTOM_ELEMENTS)
</span><span class="cx"> 
</span><ins>+#include &quot;JSDOMPromise.h&quot;
</ins><span class="cx"> #include &quot;QualifiedName.h&quot;
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/TemporaryChange.h&gt;
</span><span class="lines">@@ -44,7 +45,6 @@
</span><span class="cx"> 
</span><span class="cx"> class CustomElementRegistry;
</span><span class="cx"> class DOMWindow;
</span><del>-class DeferredWrapper;
</del><span class="cx"> class Element;
</span><span class="cx"> class JSCustomElementInterface;
</span><span class="cx"> class QualifiedName;
</span><span class="lines">@@ -66,7 +66,7 @@
</span><span class="cx"> 
</span><span class="cx">     JSC::JSValue get(const AtomicString&amp;);
</span><span class="cx"> 
</span><del>-    HashMap&lt;AtomicString, Ref&lt;DeferredWrapper&gt;&gt;&amp; promiseMap() { return m_promiseMap; }
</del><ins>+    HashMap&lt;AtomicString, Ref&lt;DeferredPromise&gt;&gt;&amp; promiseMap() { return m_promiseMap; }
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     CustomElementRegistry(DOMWindow&amp;);
</span><span class="lines">@@ -74,7 +74,7 @@
</span><span class="cx">     DOMWindow&amp; m_window;
</span><span class="cx">     HashMap&lt;AtomicString, Ref&lt;JSCustomElementInterface&gt;&gt; m_nameMap;
</span><span class="cx">     HashMap&lt;const JSC::JSObject*, JSCustomElementInterface*&gt; m_constructorMap;
</span><del>-    HashMap&lt;AtomicString, Ref&lt;DeferredWrapper&gt;&gt; m_promiseMap;
</del><ins>+    HashMap&lt;AtomicString, Ref&lt;DeferredPromise&gt;&gt; m_promiseMap;
</ins><span class="cx"> 
</span><span class="cx">     bool m_elementDefinitionIsRunning { false };
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>