summaryrefslogtreecommitdiffstats
path: root/dom/webidl
diff options
context:
space:
mode:
Diffstat (limited to 'dom/webidl')
-rw-r--r--dom/webidl/Promise.webidl61
-rw-r--r--dom/webidl/PromiseDebugging.webidl44
-rw-r--r--dom/webidl/TestInterfaceJS.webidl2
-rw-r--r--dom/webidl/moz.build4
4 files changed, 5 insertions, 106 deletions
diff --git a/dom/webidl/Promise.webidl b/dom/webidl/Promise.webidl
index 4dcb7d43e..a296553df 100644
--- a/dom/webidl/Promise.webidl
+++ b/dom/webidl/Promise.webidl
@@ -3,75 +3,18 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*
- * The origin of this IDL file is
- * http://dom.spec.whatwg.org/#promises
+ * This IDL file contains utilities to help connect JS promises to our
+ * Web IDL infrastructure.
*/
-// TODO We use object instead Function. There is an open issue on WebIDL to
-// have different types for "platform-provided function" and "user-provided
-// function"; for now, we just use "object".
-callback PromiseInit = void (object resolve, object reject);
-
callback PromiseJobCallback = void();
[TreatNonCallableAsNull]
callback AnyCallback = any (any value);
-// When using SpiderMonkey promises, we don't want to define all this stuff;
-// just define a tiny interface to make codegen of Promise arguments and return
-// values work.
-#ifndef SPIDERMONKEY_PROMISE
-[Constructor(PromiseInit init),
- Exposed=(Window,Worker,WorkerDebugger,System)]
-// Need to escape "Promise" so it's treated as an identifier.
-interface _Promise {
- // Have to use "any" (or "object", but "any" is simpler) as the type to
- // support the subclassing behavior, since nothing actually requires the
- // return value of PromiseSubclass.resolve/reject to be a Promise object.
- [NewObject, Throws]
- static any resolve(optional any value);
- [NewObject, Throws]
- static any reject(optional any value);
-
- // The [TreatNonCallableAsNull] annotation is required since then() should do
- // nothing instead of throwing errors when non-callable arguments are passed.
- // Have to use "any" (or "object", but "any" is simpler) as the type to
- // support the subclassing behavior, since nothing actually requires the
- // return value of PromiseSubclass.then/catch to be a Promise object.
- [NewObject, Throws]
- any then([TreatNonCallableAsNull] optional AnyCallback? fulfillCallback = null,
- [TreatNonCallableAsNull] optional AnyCallback? rejectCallback = null);
-
- [NewObject, Throws]
- any catch([TreatNonCallableAsNull] optional AnyCallback? rejectCallback = null);
-
- // Have to use "any" (or "object", but "any" is simpler) as the type to
- // support the subclassing behavior, since nothing actually requires the
- // return value of PromiseSubclass.all to be a Promise object. As a result,
- // we also have to do our argument conversion manually, because we want to
- // convert its exceptions into rejections.
- [NewObject, Throws]
- static any all(optional any iterable);
-
- // Have to use "any" (or "object", but "any" is simpler) as the type to
- // support the subclassing behavior, since nothing actually requires the
- // return value of PromiseSubclass.race to be a Promise object. As a result,
- // we also have to do our argument conversion manually, because we want to
- // convert its exceptions into rejections.
- [NewObject, Throws]
- static any race(optional any iterable);
-};
-#else // SPIDERMONKEY_PROMISE
-[NoInterfaceObject,
- Exposed=(Window,Worker,WorkerDebugger,System)]
-// Need to escape "Promise" so it's treated as an identifier.
-interface _Promise {
-};
-
// Hack to allow us to have JS owning and properly tracing/CCing/etc a
// PromiseNativeHandler.
[NoInterfaceObject,
Exposed=(Window,Worker,System)]
interface PromiseNativeHandler {
};
-#endif // SPIDERMONKEY_PROMISE
diff --git a/dom/webidl/PromiseDebugging.webidl b/dom/webidl/PromiseDebugging.webidl
index 107b8bc65..1a5c1aa32 100644
--- a/dom/webidl/PromiseDebugging.webidl
+++ b/dom/webidl/PromiseDebugging.webidl
@@ -38,11 +38,7 @@ callback interface UncaughtRejectionObserver {
* caught, i.e. if its `then` callback is called, `onConsumed` will
* be called.
*/
-#ifdef SPIDERMONKEY_PROMISE
void onLeftUncaught(object p);
-#else
- void onLeftUncaught(Promise<any> p);
-#endif SPIDERMONKEY_PROMISE
/**
* A Promise previously left uncaught is not the last in its
@@ -51,11 +47,7 @@ callback interface UncaughtRejectionObserver {
* @param p A Promise that was previously left in uncaught state is
* now caught, i.e. it is not the last in its chain anymore.
*/
-#ifdef SPIDERMONKEY_PROMISE
void onConsumed(object p);
-#else
- void onConsumed(Promise<any> p);
-#endif SPIDERMONKEY_PROMISE
};
[ChromeOnly, Exposed=(Window,System)]
@@ -105,42 +97,6 @@ interface PromiseDebugging {
[Throws]
static object? getFullfillmentStack(object p);
-#ifndef SPIDERMONKEY_PROMISE
- /**
- * Get the promises directly depending on a given promise. These are:
- *
- * 1) Return values of then() calls on the promise
- * 2) Return values of Promise.all() if the given promise was passed in as one
- * of the arguments.
- * 3) Return values of Promise.race() if the given promise was passed in as
- * one of the arguments.
- *
- * Once a promise is settled, it will generally notify its dependent promises
- * and forget about them, so this is most useful on unsettled promises.
- *
- * Note that this function only returns the promises that directly depend on
- * p. It does not recursively return promises that depend on promises that
- * depend on p.
- */
- [Throws]
- static sequence<Promise<any>> getDependentPromises(object p);
-
- /**
- * Get the number of milliseconds elapsed since the given promise was created.
- */
- [Throws]
- static DOMHighResTimeStamp getPromiseLifetime(object p);
-
- /*
- * Get the number of milliseconds elapsed between the promise being created
- * and being settled. Throws NS_ERROR_UNEXPECTED if the promise has not
- * settled.
- */
- [Throws]
- static DOMHighResTimeStamp getTimeToSettle(object p);
-
-#endif // SPIDERMONKEY_PROMISE
-
/**
* Watching uncaught rejections on the current thread.
*
diff --git a/dom/webidl/TestInterfaceJS.webidl b/dom/webidl/TestInterfaceJS.webidl
index 2cf8d701a..2757745f0 100644
--- a/dom/webidl/TestInterfaceJS.webidl
+++ b/dom/webidl/TestInterfaceJS.webidl
@@ -70,7 +70,7 @@ interface TestInterfaceJS : EventTarget {
// Tests for promise-rejection behavior
Promise<void> testPromiseWithThrowingChromePromiseInit();
- Promise<void> testPromiseWithThrowingContentPromiseInit(PromiseInit func);
+ Promise<void> testPromiseWithThrowingContentPromiseInit(Function func);
Promise<void> testPromiseWithDOMExceptionThrowingPromiseInit();
Promise<void> testPromiseWithThrowingChromeThenFunction();
Promise<void> testPromiseWithThrowingContentThenFunction(AnyCallback func);
diff --git a/dom/webidl/moz.build b/dom/webidl/moz.build
index 0fe10eff9..172895f97 100644
--- a/dom/webidl/moz.build
+++ b/dom/webidl/moz.build
@@ -12,8 +12,6 @@ PREPROCESSED_WEBIDL_FILES = [
'HTMLMediaElement.webidl',
'Navigator.webidl',
'Node.webidl',
- 'Promise.webidl',
- 'PromiseDebugging.webidl',
'Window.webidl',
]
@@ -371,6 +369,8 @@ WEBIDL_FILES = [
'PresentationRequest.webidl',
'ProcessingInstruction.webidl',
'ProfileTimelineMarker.webidl',
+ 'Promise.webidl',
+ 'PromiseDebugging.webidl',
'PushEvent.webidl',
'PushManager.webidl',
'PushManager.webidl',