forked from mirrors/gecko-dev
This implements support for using Promises in WebIDL, executing promise callbacks in batches (equivalent to running all enqueued jobs from a setTimeout(0)), and attaching native callbacks to promise objects. This is the combined work of myself, @dati91, and @mmatyas based on the following prior work in Gecko: * Codegen.py * Promise.webidl * Promise.cpp/Promise.h * PromiseNativeHandler.h This does not implement microtasks per #4283. This allows us to make progress on testing code that requires the use of Promises right now; the microtasks work is more complicated, but also largely orthogonal to implement. Requires https://github.com/servo/mozjs/pull/89, https://github.com/servo/rust-mozjs/pull/287, and https://github.com/servo/rust-mozjs/pull/294. --- - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [X] These changes fix #4282 - [X] There are tests for these changes Source-Repo: https://github.com/servo/servo Source-Revision: 2b1a39c2ae14b78e437551d05f0e691a13e5d183
13 lines
480 B
Text
13 lines
480 B
Text
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* 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/. */
|
|
|
|
// This interface is entirely internal to Servo, and should not be accessible to
|
|
// web pages.
|
|
|
|
// Hack to allow us to have JS owning and properly tracing/CCing/etc a
|
|
// PromiseNativeHandler.
|
|
[NoInterfaceObject,
|
|
Exposed=(Window,Worker)]
|
|
interface PromiseNativeHandler {
|
|
};
|