<!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 <youenn@apple.com> 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 <youenn@apple.com>
+
+ 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 <ap@apple.com>
</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& scriptExecutionContext, const String& merchantIdentifier, Ref<DeferredWrapper>&& passedPromise, ExceptionCode& ec)
</del><ins>+void ApplePaySession::canMakePaymentsWithActiveCard(ScriptExecutionContext& scriptExecutionContext, const String& merchantIdentifier, Ref<DeferredPromise>&& passedPromise, ExceptionCode& ec)
</ins><span class="cx"> {
</span><span class="cx"> auto& document = downcast<Document>(scriptExecutionContext);
</span><span class="cx"> DOMWindow& 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<DeferredWrapper> promise(WTFMove(passedPromise));
</del><ins>+ RefPtr<DeferredPromise> promise(WTFMove(passedPromise));
</ins><span class="cx"> if (!shouldDiscloseApplePayCapability(document)) {
</span><span class="cx"> auto& paymentCoordinator = document.frame()->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& scriptExecutionContext, const String& merchantIdentifier, Ref<DeferredWrapper>&& passedPromise, ExceptionCode& ec)
</del><ins>+void ApplePaySession::openPaymentSetup(ScriptExecutionContext& scriptExecutionContext, const String& merchantIdentifier, Ref<DeferredPromise>&& passedPromise, ExceptionCode& ec)
</ins><span class="cx"> {
</span><span class="cx"> auto& document = downcast<Document>(scriptExecutionContext);
</span><span class="cx"> DOMWindow& 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<DeferredWrapper> promise(WTFMove(passedPromise));
</del><ins>+ RefPtr<DeferredPromise> promise(WTFMove(passedPromise));
</ins><span class="cx"> auto& paymentCoordinator = document.frame()->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&, unsigned version, ExceptionCode&);
</span><span class="cx"> static bool canMakePayments(ScriptExecutionContext&, ExceptionCode&);
</span><del>- static void canMakePaymentsWithActiveCard(ScriptExecutionContext&, const String& merchantIdentifier, Ref<DeferredWrapper>&&, ExceptionCode&);
- static void openPaymentSetup(ScriptExecutionContext&, const String& merchantIdentifier, Ref<DeferredWrapper>&&, ExceptionCode&);
</del><ins>+ static void canMakePaymentsWithActiveCard(ScriptExecutionContext&, const String& merchantIdentifier, Ref<DeferredPromise>&&, ExceptionCode&);
+ static void openPaymentSetup(ScriptExecutionContext&, const String& merchantIdentifier, Ref<DeferredPromise>&&, ExceptionCode&);
</ins><span class="cx">
</span><span class="cx"> void begin(ExceptionCode&);
</span><span class="cx"> void abort(ExceptionCode&);
</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& window, FetchRequest& request, DOMPromise<FetchResponse>&& promise)
</del><ins>+void DOMWindowFetch::fetch(DOMWindow& window, FetchRequest& request, Ref<DeferredPromise>&& 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&, FetchRequest&, DOMPromise<FetchResponse>&&);
</del><ins>+ static void fetch(DOMWindow&, FetchRequest&, Ref<DeferredPromise>&&);
</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& owner, Ref<DeferredWrapper>&& promise)
</del><ins>+void FetchBody::arrayBuffer(FetchBodyOwner& owner, Ref<DeferredPromise>&& 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& owner, Ref<DeferredWrapper>&& promise)
</del><ins>+void FetchBody::blob(FetchBodyOwner& owner, Ref<DeferredPromise>&& 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& owner, Ref<DeferredWrapper>&& promise)
</del><ins>+void FetchBody::json(FetchBodyOwner& owner, Ref<DeferredPromise>&& 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& owner, Ref<DeferredWrapper>&& promise)
</del><ins>+void FetchBody::text(FetchBodyOwner& owner, Ref<DeferredPromise>&& 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& owner, Ref<DeferredWrapper>&& promise)
</del><ins>+void FetchBody::consume(FetchBodyOwner& owner, Ref<DeferredPromise>&& 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<DeferredWrapper>&& promise)
</del><ins>+void FetchBody::consumeArrayBuffer(Ref<DeferredPromise>&& promise)
</ins><span class="cx"> {
</span><span class="cx"> ASSERT(m_data);
</span><span class="cx"> m_consumer.resolveWithData(WTFMove(promise), static_cast<const uint8_t*>(m_data->data()), m_data->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<DeferredWrapper>&& promise)
</del><ins>+void FetchBody::consumeArrayBufferView(Ref<DeferredPromise>&& promise)
</ins><span class="cx"> {
</span><span class="cx"> ASSERT(m_dataView);
</span><span class="cx"> m_consumer.resolveWithData(WTFMove(promise), static_cast<const uint8_t*>(m_dataView->baseAddress()), m_dataView->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<DeferredWrapper>&& promise)
</del><ins>+void FetchBody::consumeText(Ref<DeferredPromise>&& promise)
</ins><span class="cx"> {
</span><span class="cx"> Vector<uint8_t> 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& owner, Ref<DeferredWrapper>&& promise)
</del><ins>+void FetchBody::consumeBlob(FetchBodyOwner& owner, Ref<DeferredPromise>&& 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&, Ref<DeferredWrapper>&&);
- void blob(FetchBodyOwner&, Ref<DeferredWrapper>&&);
- void json(FetchBodyOwner&, Ref<DeferredWrapper>&&);
- void text(FetchBodyOwner&, Ref<DeferredWrapper>&&);
- void formData(FetchBodyOwner&, Ref<DeferredWrapper>&& promise) { promise.get().reject(0); }
</del><ins>+ void arrayBuffer(FetchBodyOwner&, Ref<DeferredPromise>&&);
+ void blob(FetchBodyOwner&, Ref<DeferredPromise>&&);
+ void json(FetchBodyOwner&, Ref<DeferredPromise>&&);
+ void text(FetchBodyOwner&, Ref<DeferredPromise>&&);
+ void formData(FetchBodyOwner&, Ref<DeferredPromise>&& 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&, FetchResponseSource&);
</span><span class="lines">@@ -93,13 +93,13 @@
</span><span class="cx"> FetchBody(String&&);
</span><span class="cx"> FetchBody(Type type) : m_type(type) { }
</span><span class="cx">
</span><del>- void consume(FetchBodyOwner&, Ref<DeferredWrapper>&&);
</del><ins>+ void consume(FetchBodyOwner&, Ref<DeferredPromise>&&);
</ins><span class="cx">
</span><span class="cx"> Vector<uint8_t> extractFromText() const;
</span><del>- void consumeArrayBuffer(Ref<DeferredWrapper>&&);
- void consumeArrayBufferView(Ref<DeferredWrapper>&&);
- void consumeText(Ref<DeferredWrapper>&&);
- void consumeBlob(FetchBodyOwner&, Ref<DeferredWrapper>&&);
</del><ins>+ void consumeArrayBuffer(Ref<DeferredPromise>&&);
+ void consumeArrayBufferView(Ref<DeferredPromise>&&);
+ void consumeText(Ref<DeferredPromise>&&);
+ void consumeBlob(FetchBodyOwner&, Ref<DeferredPromise>&&);
</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<DeferredWrapper> m_consumePromise;
</del><ins>+ RefPtr<DeferredPromise> 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->decodeAndFlush(reinterpret_cast<const char*>(data), length);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void FetchBodyConsumer::resolveWithData(Ref<DeferredWrapper>&& promise, const unsigned char* data, unsigned length)
</del><ins>+void FetchBodyConsumer::resolveWithData(Ref<DeferredPromise>&& 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<DeferredWrapper>&& promise)
</del><ins>+void FetchBodyConsumer::resolve(Ref<DeferredPromise>&& 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 "JSDOMPromise.h"
</ins><span class="cx"> #include "SharedBuffer.h"
</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<DeferredWrapper>&&);
- void resolveWithData(Ref<DeferredWrapper>&&, const unsigned char*, unsigned);
</del><ins>+ void resolve(Ref<DeferredPromise>&&);
+ void resolveWithData(Ref<DeferredPromise>&&, 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<DeferredWrapper>&& promise)
</del><ins>+void FetchBodyOwner::arrayBuffer(Ref<DeferredPromise>&& 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<DeferredWrapper>&& promise)
</del><ins>+void FetchBodyOwner::blob(Ref<DeferredPromise>&& promise)
</ins><span class="cx"> {
</span><span class="cx"> if (m_body.isEmpty()) {
</span><span class="cx"> promise->resolve(Blob::create(Vector<uint8_t>(), 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<DeferredWrapper>&& promise)
</del><ins>+void FetchBodyOwner::formData(Ref<DeferredPromise>&& promise)
</ins><span class="cx"> {
</span><span class="cx"> if (m_body.isEmpty()) {
</span><span class="cx"> promise->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<DeferredWrapper>&& promise)
</del><ins>+void FetchBodyOwner::json(Ref<DeferredPromise>&& promise)
</ins><span class="cx"> {
</span><span class="cx"> if (m_body.isEmpty()) {
</span><span class="cx"> promise->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<DeferredWrapper>&& promise)
</del><ins>+void FetchBodyOwner::text(Ref<DeferredPromise>&& promise)
</ins><span class="cx"> {
</span><span class="cx"> if (m_body.isEmpty()) {
</span><span class="cx"> promise->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<DeferredWrapper>&&);
- void blob(Ref<DeferredWrapper>&&);
- void formData(Ref<DeferredWrapper>&&);
- void json(Ref<DeferredWrapper>&&);
- void text(Ref<DeferredWrapper>&&);
</del><ins>+ void arrayBuffer(Ref<DeferredPromise>&&);
+ void blob(Ref<DeferredPromise>&&);
+ void formData(Ref<DeferredPromise>&&);
+ void json(Ref<DeferredPromise>&&);
+ void text(Ref<DeferredPromise>&&);
</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->stop();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void FetchResponse::consume(unsigned type, Ref<DeferredWrapper>&& wrapper)
</del><ins>+void FetchResponse::consume(unsigned type, Ref<DeferredPromise>&& wrapper)
</ins><span class="cx"> {
</span><span class="cx"> ASSERT(type <= static_cast<unsigned>(FetchBodyConsumer::Type::Text));
</span><span class="cx">
</span><span class="lines">@@ -241,7 +241,7 @@
</span><span class="cx"> m_consumer.append(chunk->data(), chunk->byteLength());
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void FetchResponse::finishConsumingStream(Ref<DeferredWrapper>&& promise)
</del><ins>+void FetchResponse::finishConsumingStream(Ref<DeferredPromise>&& 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<FetchResponse>;
</span><span class="cx"> static void fetch(ScriptExecutionContext&, FetchRequest&, FetchPromise&&);
</span><span class="cx">
</span><del>- void consume(unsigned, Ref<DeferredWrapper>&&);
</del><ins>+ void consume(unsigned, Ref<DeferredPromise>&&);
</ins><span class="cx"> #if ENABLE(READABLE_STREAM_API)
</span><span class="cx"> void startConsumingStream(unsigned);
</span><span class="cx"> void consumeChunk(Ref<JSC::Uint8Array>&&);
</span><del>- void finishConsumingStream(Ref<DeferredWrapper>&&);
</del><ins>+ void finishConsumingStream(Ref<DeferredPromise>&&);
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> void setStatus(int, const String&, ExceptionCode&);
</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& scope, FetchRequest& request, Ref<DeferredWrapper>&& promise)
</del><ins>+void WorkerGlobalScopeFetch::fetch(WorkerGlobalScope& scope, FetchRequest& request, Ref<DeferredPromise>&& 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 "JSDOMPromise.h"
</span><del>-#include <wtf/Forward.h>
</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&, FetchRequest&, Ref<DeferredWrapper>&&);
</del><ins>+ static void fetch(WorkerGlobalScope&, FetchRequest&, Ref<DeferredPromise>&&);
</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 = "<group>"; };
</span><span class="cx">                 4162A4561011464700DFF3ED /* JSDedicatedWorkerGlobalScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDedicatedWorkerGlobalScope.h; sourceTree = "<group>"; };
</span><span class="cx">                 416E29A5102FA962007FC14E /* WorkerReportingProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorkerReportingProxy.h; sourceTree = "<group>"; };
</span><ins>+                4170A2E91D8C0CC000318452 /* JSDOMWrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMWrapper.cpp; sourceTree = "<group>"; };
</ins><span class="cx">                 417253A81354BBBC00360F2A /* MediaControlElements.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaControlElements.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 417253A91354BBBC00360F2A /* MediaControlElements.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaControlElements.h; sourceTree = "<group>"; };
</span><span class="cx">                 417DA4CE13734326007C57FB /* Internals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Internals.h; sourceTree = "<group>"; };
</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& state, JSDOMGlobalObject& globalObject, CustomElementRegistry& registry)
</del><ins>+static JSValue whenDefinedPromise(ExecState& state, JSDOMGlobalObject& globalObject, CustomElementRegistry& registry, JSPromiseDeferred& 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& jsPromise = *JSPromiseDeferred::create(&state, &globalObject);
- DeferredWrapper::create(&state, &globalObject, &jsPromise)->resolve(nullptr);
- return jsPromise.promise();
</del><ins>+ DeferredPromise::create(globalObject, promiseDeferred)->resolve(nullptr);
+ return promiseDeferred.promise();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> auto result = registry.promiseMap().ensure(localName, [&] {
</span><del>- return DeferredWrapper::create(&state, &globalObject, JSPromiseDeferred::create(&state, &globalObject));
</del><ins>+ return DeferredPromise::create(globalObject, promiseDeferred);
</ins><span class="cx"> });
</span><span class="cx">
</span><span class="cx"> return result.iterator->value->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& globalObject = *jsCast<JSDOMGlobalObject*>(state.lexicalGlobalObject());
- auto& promiseDeferred = *JSPromiseDeferred::create(&state, &globalObject);
- JSValue promise = whenDefinedPromise(state, globalObject, wrapped());
</del><ins>+ ASSERT(globalObject());
+ auto promiseDeferred = JSPromiseDeferred::create(&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->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& constructor : thisObject->constructors().values())
</span><span class="cx"> visitor.append(&constructor);
</span><span class="cx">
</span><del>- for (auto& deferredWrapper : thisObject->deferredWrappers())
- deferredWrapper->visitAggregate(visitor);
</del><ins>+ for (auto& deferredPromise : thisObject->deferredPromises())
+ deferredPromise->visitAggregate(visitor);
</ins><span class="cx">
</span><span class="cx"> thisObject->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<const JSC::ClassInfo*, JSC::WriteBarrier<JSC::Structure>> JSDOMStructureMap;
</span><span class="cx"> typedef HashMap<const JSC::ClassInfo*, JSC::WriteBarrier<JSC::JSObject>> JSDOMConstructorMap;
</span><del>- typedef HashSet<DeferredWrapper*> DeferredWrapperSet;
</del><ins>+ typedef HashSet<DeferredPromise*> 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& structures() { return m_structures; }
</span><span class="cx"> JSDOMConstructorMap& constructors() { return m_constructors; }
</span><span class="cx">
</span><del>- DeferredWrapperSet& deferredWrappers() { return m_deferredWrappers; }
</del><ins>+ DeferredPromiseSet& 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<DOMWrapperWorld> 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 "ExceptionCode.h"
</span><span class="cx"> #include "JSDOMError.h"
</span><ins>+#include "JSDOMWindow.h"
</ins><span class="cx"> #include <builtins/BuiltinNames.h>
</span><span class="cx"> #include <runtime/Exception.h>
</span><span class="cx"> #include <runtime/JSONObject.h>
</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->scriptExecutionContext())
- , m_deferred(promiseDeferred)
- , m_globalObject(globalObject)
</del><ins>+DeferredPromise::DeferredPromise(JSDOMGlobalObject& globalObject, JSPromiseDeferred& promiseDeferred)
+ : ActiveDOMCallback(globalObject.scriptExecutionContext())
+ , m_deferred(&promiseDeferred)
+ , m_globalObject(&globalObject)
</ins><span class="cx"> {
</span><del>- globalObject->vm().heap.writeBarrier(globalObject, promiseDeferred);
- m_globalObject->deferredWrappers().add(this);
</del><ins>+ globalObject.vm().heap.writeBarrier(&globalObject, &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 && m_globalObject)
</span><del>- m_globalObject->deferredWrappers().remove(this);
</del><ins>+ m_globalObject->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->promise();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void DeferredWrapper::callFunction(ExecState& exec, JSValue function, JSValue resolution)
</del><ins>+void DeferredPromise::callFunction(ExecState& 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& message)
</del><ins>+void DeferredPromise::reject(ExceptionCode ec, const String& 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()->value();
</span><span class="cx"> scope.clearException();
</span><span class="cx">
</span><del>- DeferredWrapper::create(&state, &globalObject, &promiseDeferred)->reject(error);
</del><ins>+ DeferredPromise::create(globalObject, promiseDeferred)->reject(error);
</ins><span class="cx"> }
</span><span class="cx">
</span><ins>+Ref<DeferredPromise> createDeferredPromise(JSC::ExecState& state, JSDOMWindow& domWindow)
+{
+ JSC::JSPromiseDeferred* deferred = JSC::JSPromiseDeferred::create(&state, &domWindow);
+ // deferred can only be null in workers.
+ ASSERT(deferred);
+ return DeferredPromise::create(domWindow, *deferred);
+}
+
</ins><span class="cx"> JSC::EncodedJSValue createRejectedPromiseWithTypeError(JSC::ExecState& state, const String& 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<DeferredWrapper>&& promise, const String& data)
</del><ins>+void fulfillPromiseWithJSON(Ref<DeferredPromise>&& promise, const String& data)
</ins><span class="cx"> {
</span><span class="cx"> JSC::JSValue value = parseAsJSON(promise->globalObject()->globalExec(), data);
</span><span class="cx"> if (!value)
</span><span class="lines">@@ -148,7 +157,7 @@
</span><span class="cx"> promise->resolve(value);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void fulfillPromiseWithArrayBuffer(Ref<DeferredWrapper>&& promise, ArrayBuffer* arrayBuffer)
</del><ins>+void fulfillPromiseWithArrayBuffer(Ref<DeferredPromise>&& promise, ArrayBuffer* arrayBuffer)
</ins><span class="cx"> {
</span><span class="cx"> if (!arrayBuffer) {
</span><span class="cx"> promise->reject<JSValue>(createOutOfMemoryError(promise->globalObject()->globalExec()));
</span><span class="lines">@@ -157,7 +166,7 @@
</span><span class="cx"> promise->resolve(arrayBuffer);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void fulfillPromiseWithArrayBuffer(Ref<DeferredWrapper>&& promise, const void* data, size_t length)
</del><ins>+void fulfillPromiseWithArrayBuffer(Ref<DeferredPromise>&& 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<DeferredWrapper>, public ActiveDOMCallback {
</del><ins>+class DeferredPromise : public RefCounted<DeferredPromise>, public ActiveDOMCallback {
</ins><span class="cx"> public:
</span><del>- // FIXME: We should pass references here, not pointers, see bug 161787
- static Ref<DeferredWrapper> create(JSC::ExecState* state, JSDOMGlobalObject* globalObject, JSC::JSPromiseDeferred* deferred)
</del><ins>+ static Ref<DeferredPromise> create(JSDOMGlobalObject& globalObject, JSC::JSPromiseDeferred& 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<class ResolveResultType> typename std::enable_if<PromiseResultInspector<ResolveResultType>::passByValue, void>::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& visitor) { visitor.appendUnbarrieredWeak(&m_deferred); }
</span><span class="cx">
</span><span class="cx"> private:
</span><del>- DeferredWrapper(JSC::ExecState*, JSDOMGlobalObject*, JSC::JSPromiseDeferred*);
</del><ins>+ DeferredPromise(JSDOMGlobalObject&, JSC::JSPromiseDeferred&);
</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<JSDOMGlobalObject> m_globalObject;
</span><span class="cx"> };
</span><span class="cx">
</span><del>-void fulfillPromiseWithJSON(Ref<DeferredWrapper>&&, const String&);
-void fulfillPromiseWithArrayBuffer(Ref<DeferredWrapper>&&, ArrayBuffer*);
-void fulfillPromiseWithArrayBuffer(Ref<DeferredWrapper>&&, const void*, size_t);
</del><ins>+Ref<DeferredPromise> createDeferredPromise(JSC::ExecState&, JSDOMWindow&);
+
+void fulfillPromiseWithJSON(Ref<DeferredPromise>&&, const String&);
+void fulfillPromiseWithArrayBuffer(Ref<DeferredPromise>&&, ArrayBuffer*);
+void fulfillPromiseWithArrayBuffer(Ref<DeferredPromise>&&, const void*, size_t);
</ins><span class="cx"> void rejectPromiseWithExceptionIfAny(JSC::ExecState&, JSDOMGlobalObject&, JSC::JSPromiseDeferred&);
</span><span class="cx"> JSC::EncodedJSValue createRejectedPromiseWithTypeError(JSC::ExecState&, const String&);
</span><span class="cx">
</span><del>-using PromiseFunction = void(JSC::ExecState&, Ref<DeferredWrapper>&&);
</del><ins>+using PromiseFunction = void(JSC::ExecState&, Ref<DeferredPromise>&&);
</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 && !promiseDeferred)
</span><span class="cx"> return JSC::jsUndefined();
</span><span class="cx">
</span><del>- promiseFunction(state, DeferredWrapper::create(&state, &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->promise();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-using BindingPromiseFunction = JSC::EncodedJSValue(JSC::ExecState*, Ref<DeferredWrapper>&&);
</del><ins>+using BindingPromiseFunction = JSC::EncodedJSValue(JSC::ExecState*, Ref<DeferredPromise>&&);
</ins><span class="cx"> template<BindingPromiseFunction bindingFunction>
</span><del>-inline void bindingPromiseFunctionAdapter(JSC::ExecState& state, Ref<DeferredWrapper>&& promise)
</del><ins>+inline void bindingPromiseFunctionAdapter(JSC::ExecState& state, Ref<DeferredPromise>&& promise)
</ins><span class="cx"> {
</span><span class="cx"> bindingFunction(&state, WTFMove(promise));
</span><span class="cx"> }
</span><span class="lines">@@ -199,28 +200,25 @@
</span><span class="cx"> template <typename Value>
</span><span class="cx"> class DOMPromise {
</span><span class="cx"> public:
</span><del>- DOMPromise(Ref<DeferredWrapper>&& wrapper)
- : m_wrapper(WTFMove(wrapper))
- {
- }
</del><ins>+ DOMPromise(Ref<DeferredPromise>&& genericPromise) : m_promiseDeferred(WTFMove(genericPromise)) { }
</ins><span class="cx">
</span><del>- DOMPromise(DOMPromise&& promise) : m_wrapper(WTFMove(promise.m_wrapper)) { }
</del><ins>+ DOMPromise(DOMPromise&& promise) : m_promiseDeferred(WTFMove(promise.m_promiseDeferred)) { }
</ins><span class="cx">
</span><span class="cx"> DOMPromise(const DOMPromise&) = default;
</span><span class="cx"> DOMPromise& operator=(DOMPromise const&) = default;
</span><span class="cx">
</span><del>- void resolve(typename PromiseResultInspector<Value>::Type value) { m_wrapper->resolve(value); }
</del><ins>+ void resolve(typename PromiseResultInspector<Value>::Type value) { m_promiseDeferred->resolve(value); }
</ins><span class="cx">
</span><del>- template<typename... ErrorType> void reject(ErrorType&&... error) { m_wrapper->reject(std::forward<ErrorType>(error)...); }
</del><ins>+ template<typename... ErrorType> void reject(ErrorType&&... error) { m_promiseDeferred->reject(std::forward<ErrorType>(error)...); }
</ins><span class="cx">
</span><del>- DeferredWrapper& deferredWrapper() { return m_wrapper; }
</del><ins>+ JSC::JSValue promise() const { return m_promiseDeferred->promise(); };
</ins><span class="cx">
</span><span class="cx"> private:
</span><del>- Ref<DeferredWrapper> m_wrapper;
</del><ins>+ Ref<DeferredPromise> m_promiseDeferred;
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> template<class ResolveResultType>
</span><del>-inline void DeferredWrapper::resolveWithValue(ResolveResultType&& result)
</del><ins>+inline void DeferredPromise::resolveWithValue(ResolveResultType&& 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<class ResolveResultType>
</span><del>-inline void DeferredWrapper::resolveWithNewlyCreated(Ref<ResolveResultType>&& result)
</del><ins>+inline void DeferredPromise::resolveWithNewlyCreated(Ref<ResolveResultType>&& 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<class RejectResultType>
</span><del>-inline void DeferredWrapper::rejectWithValue(RejectResultType&& result)
</del><ins>+inline void DeferredPromise::rejectWithValue(RejectResultType&& 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<>
</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<>
</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<>
</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<>
</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<>
</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<>
</span><del>-inline void DeferredWrapper::resolve(const String& result)
</del><ins>+inline void DeferredPromise::resolve(const String& 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<>
</span><del>-inline void DeferredWrapper::reject(const String& result)
</del><ins>+inline void DeferredPromise::reject(const String& 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 "JSDOMWrapper.h"
</span><span class="cx">
</span><span class="cx"> #include "DOMWrapperWorld.h"
</span><ins>+#include "JSDOMWindow.h"
</ins><span class="cx"> #include <runtime/Error.h>
</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& JSDOMObject::domWindow() const
+{
+ auto* domWindow = JSC::jsCast<JSDOMWindow*>(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<JSDOMGlobalObject*>(JSC::JSNonFinalObject::globalObject()); }
</span><span class="cx"> ScriptExecutionContext* scriptExecutionContext() const { return globalObject()->scriptExecutionContext(); }
</span><span class="cx">
</span><ins>+ JSDOMWindow& domWindow() const;
+
</ins><span class="cx"> protected:
</span><del>- JSDOMObject(JSC::Structure* structure, JSC::JSGlobalObject& globalObject)
</del><ins>+ JSDOMObject(JSC::Structure* structure, JSC::JSGlobalObject& 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<DeferredWrapper> promise = DeferredWrapper::create(&state, globalObject(), JSC::JSPromiseDeferred::create(&state, globalObject()));
</del><ins>+ auto promise = createDeferredPromise(state, domWindow());
</ins><span class="cx"> m_loaded.set(state.vm(), this, promise->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& state) const
</span><span class="cx"> {
</span><span class="cx"> if (!m_ready) {
</span><del>- Ref<DeferredWrapper> promise = DeferredWrapper::create(&state, globalObject(), JSC::JSPromiseDeferred::create(&state, globalObject()));
</del><ins>+ auto promise = createDeferredPromise(state, domWindow());
</ins><span class="cx"> m_ready.set(state.vm(), this, promise->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& state, Ref<DeferredWrapper>&& promise)
</del><ins>+static void JSMediaDevicesGetUserMediaPromiseFunction(ExecState& state, Ref<DeferredPromise>&& promise)
</ins><span class="cx"> {
</span><span class="cx"> VM& 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(&state, globalObject());
</del><ins>+ auto deferredPromise = createDeferredPromise(state, domWindow());
+ auto promise = deferredPromise->promise();
+
</ins><span class="cx"> auto constraints = MediaConstraintsImpl::create(WTFMove(mandatoryConstraints), WTFMove(advancedConstraints), valid);
</span><del>- wrapped().applyConstraints(WTFMove(constraints), DeferredWrapper::create(&state, globalObject(), promiseDeferred));
</del><ins>+ wrapped().applyConstraints(WTFMove(constraints), WTFMove(deferredPromise));
</ins><span class="cx">
</span><del>- return promiseDeferred->promise();
</del><ins>+ return promise;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSValue JSMediaStreamTrack::getConstraints(ExecState& 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<JSReadableStreamSource*>(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(&state, globalObject());
</span><del>- wrapped().start(ReadableStreamDefaultController(controller), DeferredWrapper::create(&state, globalObject(), promiseDeferred));
</del><ins>+ if (!promiseDeferred)
+ return jsUndefined();
+ wrapped().start(ReadableStreamDefaultController(controller), DeferredPromise::create(*globalObject(), *promiseDeferred));
</ins><span class="cx"> return promiseDeferred->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(&state, globalObject());
- RefPtr<DeferredWrapper> wrapper = DeferredWrapper::create(&state, globalObject(), promiseDeferred);
</del><ins>+ RefPtr<DeferredPromise> wrapper = createDeferredPromise(state, domWindow());
+ auto promise = wrapper->promise();
</ins><span class="cx"> auto successCallback = [wrapper](const Vector<uint8_t>& 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->promise();
</del><ins>+ return promise;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSValue JSWebKitSubtleCrypto::decrypt(ExecState& 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(&state, globalObject());
- RefPtr<DeferredWrapper> wrapper = DeferredWrapper::create(&state, globalObject(), promiseDeferred);
</del><ins>+ RefPtr<DeferredPromise> wrapper = createDeferredPromise(state, domWindow());
+ auto promise = wrapper->promise();
</ins><span class="cx"> auto successCallback = [wrapper](const Vector<uint8_t>& 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->promise();
</del><ins>+ return promise;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSValue JSWebKitSubtleCrypto::sign(ExecState& 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(&state, globalObject());
- RefPtr<DeferredWrapper> wrapper = DeferredWrapper::create(&state, globalObject(), promiseDeferred);
</del><ins>+ RefPtr<DeferredPromise> wrapper = createDeferredPromise(state, domWindow());
+ auto promise = wrapper->promise();
</ins><span class="cx"> auto successCallback = [wrapper](const Vector<uint8_t>& 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->promise();
</del><ins>+ return promise;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSValue JSWebKitSubtleCrypto::verify(ExecState& 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(&state, globalObject());
- RefPtr<DeferredWrapper> wrapper = DeferredWrapper::create(&state, globalObject(), promiseDeferred);
</del><ins>+ RefPtr<DeferredPromise> wrapper = createDeferredPromise(state, domWindow());
+ auto promise = wrapper->promise();
</ins><span class="cx"> auto successCallback = [wrapper](bool result) mutable {
</span><span class="cx"> wrapper->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->promise();
</del><ins>+ return promise;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSValue JSWebKitSubtleCrypto::digest(ExecState& 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(&state, globalObject());
- RefPtr<DeferredWrapper> wrapper = DeferredWrapper::create(&state, globalObject(), promiseDeferred);
</del><ins>+ RefPtr<DeferredPromise> wrapper = createDeferredPromise(state, domWindow());
+ auto promise = wrapper->promise();
</ins><span class="cx"> auto successCallback = [wrapper](const Vector<uint8_t>& 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->promise();
</del><ins>+ return promise;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSValue JSWebKitSubtleCrypto::generateKey(ExecState& 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(&state, globalObject());
- RefPtr<DeferredWrapper> wrapper = DeferredWrapper::create(&state, globalObject(), promiseDeferred);
</del><ins>+ RefPtr<DeferredPromise> wrapper = createDeferredPromise(state, domWindow());
+ auto promise = wrapper->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->promise();
</del><ins>+ return promise;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static void importKey(ExecState& state, CryptoKeyFormat keyFormat, CryptoOperationData data, RefPtr<CryptoAlgorithm> algorithm, RefPtr<CryptoAlgorithmParameters> 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(&state, globalObject());
- RefPtr<DeferredWrapper> wrapper = DeferredWrapper::create(&state, globalObject(), promiseDeferred);
</del><ins>+ RefPtr<DeferredPromise> wrapper = createDeferredPromise(state, domWindow());
+ auto promise = wrapper->promise();
</ins><span class="cx"> auto successCallback = [wrapper](CryptoKey& result) mutable {
</span><span class="cx"> wrapper->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->promise();
</del><ins>+ return promise;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static void exportKey(ExecState& state, CryptoKeyFormat keyFormat, const CryptoKey& 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(&state, scope);
</span><span class="cx">
</span><del>- JSPromiseDeferred* promiseDeferred = JSPromiseDeferred::create(&state, globalObject());
- RefPtr<DeferredWrapper> wrapper = DeferredWrapper::create(&state, globalObject(), promiseDeferred);
</del><ins>+ RefPtr<DeferredPromise> wrapper = createDeferredPromise(state, domWindow());
+ auto promise = wrapper->promise();
</ins><span class="cx"> auto successCallback = [wrapper](const Vector<uint8_t>& 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->promise();
</del><ins>+ return promise;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSValue JSWebKitSubtleCrypto::wrapKey(ExecState& 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(&state, globalObject());
- RefPtr<DeferredWrapper> wrapper = DeferredWrapper::create(&state, globalObject(), promiseDeferred);
</del><ins>+ RefPtr<DeferredPromise> wrapper = createDeferredPromise(state, domWindow());
+ auto promise = wrapper->promise();
</ins><span class="cx">
</span><span class="cx"> auto exportSuccessCallback = [keyFormat, algorithm, parameters, wrappingKey, wrapper](const Vector<uint8_t>& exportedKeyData) mutable {
</span><span class="cx"> auto encryptSuccessCallback = [wrapper](const Vector<uint8_t>& 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->promise();
</del><ins>+ return promise;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSValue JSWebKitSubtleCrypto::unwrapKey(ExecState& 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(&state, globalObject());
- RefPtr<DeferredWrapper> wrapper = DeferredWrapper::create(&state, globalObject(), promiseDeferred);
</del><ins>+ RefPtr<DeferredPromise> wrapper = createDeferredPromise(state, domWindow());
+ auto promise = wrapper->promise();
</ins><span class="cx"> Strong<JSDOMGlobalObject> domGlobalObject(state.vm(), globalObject());
</span><span class="cx">
</span><span class="cx"> auto decryptSuccessCallback = [domGlobalObject, keyFormat, unwrappedKeyAlgorithm, unwrappedKeyAlgorithmParameters, extractable, keyUsages, wrapper](const Vector<uint8_t>& 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->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->extendedAttributes->{"Exposed"} ? "WindowOrWorker" : "WindowOnly";
</span><span class="cx"> push(@implContent, <<END);
</span><del>-static EncodedJSValue ${functionName}Promise(ExecState*, Ref<DeferredWrapper>&&);
</del><ins>+static EncodedJSValue ${functionName}Promise(ExecState*, Ref<DeferredPromise>&&);
</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<${functionName}Promise, PromiseExecutionScope::${scope}>(*state));
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static inline EncodedJSValue ${functionName}Promise(ExecState* state, Ref<DeferredWrapper>&& deferredWrapper)
</del><ins>+static inline EncodedJSValue ${functionName}Promise(ExecState* state, Ref<DeferredPromise>&& 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, "WTFMove(deferredWrapper)");
</del><ins>+ push(@arguments, "WTFMove(promise)");
</ins><span class="cx"> }
</span><span class="cx"> push(@arguments, "ec") if $function->signature->extendedAttributes->{"RaisesException"} || $function->signature->extendedAttributes->{"RaisesExceptionWithMessage"};
</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<JSTestNodeConstructor>(vm, *jsCast<const JSDOMGlobalObject*>(globalObject));
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static EncodedJSValue jsTestNodePrototypeFunctionTestWorkerPromisePromise(ExecState*, Ref<DeferredWrapper>&&);
</del><ins>+static EncodedJSValue jsTestNodePrototypeFunctionTestWorkerPromisePromise(ExecState*, Ref<DeferredPromise>&&);
</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<jsTestNodePrototypeFunctionTestWorkerPromisePromise, PromiseExecutionScope::WindowOrWorker>(*state));
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static inline EncodedJSValue jsTestNodePrototypeFunctionTestWorkerPromisePromise(ExecState* state, Ref<DeferredWrapper>&& deferredWrapper)
</del><ins>+static inline EncodedJSValue jsTestNodePrototypeFunctionTestWorkerPromisePromise(ExecState* state, Ref<DeferredPromise>&& promise)
</ins><span class="cx"> {
</span><span class="cx"> VM& vm = state->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, "TestNode", "testWorkerPromise");
</span><span class="cx"> ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestNode::info());
</span><span class="cx"> auto& impl = castedThis->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<DeferredWrapper>&&);
</del><ins>+static EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionPromise(ExecState*, Ref<DeferredPromise>&&);
</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<jsTestObjPrototypeFunctionTestPromiseFunctionPromise, PromiseExecutionScope::WindowOnly>(*state));
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionPromise(ExecState* state, Ref<DeferredWrapper>&& deferredWrapper)
</del><ins>+static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionPromise(ExecState* state, Ref<DeferredPromise>&& promise)
</ins><span class="cx"> {
</span><span class="cx"> VM& vm = state->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, "TestObject", "testPromiseFunction");
</span><span class="cx"> ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx"> auto& impl = castedThis->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<DeferredWrapper>&&);
</del><ins>+static EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionWithFloatArgumentPromise(ExecState*, Ref<DeferredPromise>&&);
</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<jsTestObjPrototypeFunctionTestPromiseFunctionWithFloatArgumentPromise, PromiseExecutionScope::WindowOnly>(*state));
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionWithFloatArgumentPromise(ExecState* state, Ref<DeferredWrapper>&& deferredWrapper)
</del><ins>+static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionWithFloatArgumentPromise(ExecState* state, Ref<DeferredPromise>&& promise)
</ins><span class="cx"> {
</span><span class="cx"> VM& vm = state->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<float>(*state, state->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<DeferredWrapper>&&);
</del><ins>+static EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionWithExceptionPromise(ExecState*, Ref<DeferredPromise>&&);
</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<jsTestObjPrototypeFunctionTestPromiseFunctionWithExceptionPromise, PromiseExecutionScope::WindowOnly>(*state));
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionWithExceptionPromise(ExecState* state, Ref<DeferredWrapper>&& deferredWrapper)
</del><ins>+static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionWithExceptionPromise(ExecState* state, Ref<DeferredPromise>&& promise)
</ins><span class="cx"> {
</span><span class="cx"> VM& vm = state->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& impl = castedThis->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<DeferredWrapper>&&);
</del><ins>+static EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionWithOptionalIntArgumentPromise(ExecState*, Ref<DeferredPromise>&&);
</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<jsTestObjPrototypeFunctionTestPromiseFunctionWithOptionalIntArgumentPromise, PromiseExecutionScope::WindowOnly>(*state));
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionWithOptionalIntArgumentPromise(ExecState* state, Ref<DeferredWrapper>&& deferredWrapper)
</del><ins>+static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionWithOptionalIntArgumentPromise(ExecState* state, Ref<DeferredPromise>&& promise)
</ins><span class="cx"> {
</span><span class="cx"> VM& vm = state->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->argument(0).isUndefined() ? Optional<int32_t>() : convert<int32_t>(*state, state->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<DeferredWrapper>&&);
</del><ins>+static EncodedJSValue jsTestObjPrototypeFunctionTestPromiseOverloadedFunction1Promise(ExecState*, Ref<DeferredPromise>&&);
</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<jsTestObjPrototypeFunctionTestPromiseOverloadedFunction1Promise, PromiseExecutionScope::WindowOnly>(*state));
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseOverloadedFunction1Promise(ExecState* state, Ref<DeferredWrapper>&& deferredWrapper)
</del><ins>+static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseOverloadedFunction1Promise(ExecState* state, Ref<DeferredPromise>&& promise)
</ins><span class="cx"> {
</span><span class="cx"> VM& vm = state->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<float>(*state, state->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<DeferredWrapper>&&);
</del><ins>+static EncodedJSValue jsTestObjPrototypeFunctionTestPromiseOverloadedFunction2Promise(ExecState*, Ref<DeferredPromise>&&);
</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<jsTestObjPrototypeFunctionTestPromiseOverloadedFunction2Promise, PromiseExecutionScope::WindowOnly>(*state));
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseOverloadedFunction2Promise(ExecState* state, Ref<DeferredWrapper>&& deferredWrapper)
</del><ins>+static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseOverloadedFunction2Promise(ExecState* state, Ref<DeferredPromise>&& promise)
</ins><span class="cx"> {
</span><span class="cx"> VM& vm = state->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->argument(0));
</span><span class="cx"> if (UNLIKELY(!request))
</span><span class="cx"> return throwArgumentTypeError(*state, throwScope, 0, "request", "TestObject", "testPromiseOverloadedFunction", "FetchRequest");
</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 < 1 ? throwVMError(state, throwScope, createNotEnoughArgumentsError(state)) : throwVMTypeError(state, throwScope);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static EncodedJSValue jsTestObjConstructorFunctionTestStaticPromiseFunctionPromise(ExecState*, Ref<DeferredWrapper>&&);
</del><ins>+static EncodedJSValue jsTestObjConstructorFunctionTestStaticPromiseFunctionPromise(ExecState*, Ref<DeferredPromise>&&);
</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<jsTestObjConstructorFunctionTestStaticPromiseFunctionPromise, PromiseExecutionScope::WindowOnly>(*state));
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static inline EncodedJSValue jsTestObjConstructorFunctionTestStaticPromiseFunctionPromise(ExecState* state, Ref<DeferredWrapper>&& deferredWrapper)
</del><ins>+static inline EncodedJSValue jsTestObjConstructorFunctionTestStaticPromiseFunctionPromise(ExecState* state, Ref<DeferredPromise>&& promise)
</ins><span class="cx"> {
</span><span class="cx"> VM& vm = state->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<DeferredWrapper>&&);
</del><ins>+static EncodedJSValue jsTestObjConstructorFunctionTestStaticPromiseFunctionWithExceptionPromise(ExecState*, Ref<DeferredPromise>&&);
</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<jsTestObjConstructorFunctionTestStaticPromiseFunctionWithExceptionPromise, PromiseExecutionScope::WindowOnly>(*state));
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static inline EncodedJSValue jsTestObjConstructorFunctionTestStaticPromiseFunctionWithExceptionPromise(ExecState* state, Ref<DeferredWrapper>&& deferredWrapper)
</del><ins>+static inline EncodedJSValue jsTestObjConstructorFunctionTestStaticPromiseFunctionWithExceptionPromise(ExecState* state, Ref<DeferredPromise>&& promise)
</ins><span class="cx"> {
</span><span class="cx"> VM& vm = state->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 "Element.h"
</span><span class="cx"> #include "ElementTraversal.h"
</span><span class="cx"> #include "JSCustomElementInterface.h"
</span><del>-#include "JSDOMPromise.h"
</del><span class="cx"> #include "MathMLNames.h"
</span><span class="cx"> #include "QualifiedName.h"
</span><span class="cx"> #include "SVGNames.h"
</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 "JSDOMPromise.h"
</ins><span class="cx"> #include "QualifiedName.h"
</span><span class="cx"> #include <wtf/HashMap.h>
</span><span class="cx"> #include <wtf/TemporaryChange.h>
</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&);
</span><span class="cx">
</span><del>- HashMap<AtomicString, Ref<DeferredWrapper>>& promiseMap() { return m_promiseMap; }
</del><ins>+ HashMap<AtomicString, Ref<DeferredPromise>>& promiseMap() { return m_promiseMap; }
</ins><span class="cx">
</span><span class="cx"> private:
</span><span class="cx"> CustomElementRegistry(DOMWindow&);
</span><span class="lines">@@ -74,7 +74,7 @@
</span><span class="cx"> DOMWindow& m_window;
</span><span class="cx"> HashMap<AtomicString, Ref<JSCustomElementInterface>> m_nameMap;
</span><span class="cx"> HashMap<const JSC::JSObject*, JSCustomElementInterface*> m_constructorMap;
</span><del>- HashMap<AtomicString, Ref<DeferredWrapper>> m_promiseMap;
</del><ins>+ HashMap<AtomicString, Ref<DeferredPromise>> 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>