123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- /* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
- /**
- * Test whether or not we get the time to settle depending on the state of the
- * promise.
- */
- "use strict";
- const { PromisesFront } = require("devtools/shared/fronts/promises");
- var events = require("sdk/event/core");
- add_task(function* () {
- let client = yield startTestDebuggerServer("test-promises-timetosettle");
- let chromeActors = yield getChromeActors(client);
- ok(Promise.toString().includes("native code"), "Expect native DOM Promise.");
- // We have to attach the chrome TabActor before playing with the PromiseActor
- yield attachTab(client, chromeActors);
- yield testGetTimeToSettle(client, chromeActors, () => {
- let p = new Promise(() => {});
- p.name = "p";
- let q = p.then();
- q.name = "q";
- return p;
- });
- let response = yield listTabs(client);
- let targetTab = findTab(response.tabs, "test-promises-timetosettle");
- ok(targetTab, "Found our target tab.");
- yield testGetTimeToSettle(client, targetTab, () => {
- const debuggee =
- DebuggerServer.getTestGlobal("test-promises-timetosettle");
- let p = new debuggee.Promise(() => {});
- p.name = "p";
- let q = p.then();
- q.name = "q";
- return p;
- });
- yield close(client);
- });
- function* testGetTimeToSettle(client, form, makePromises) {
- let front = PromisesFront(client, form);
- yield front.attach();
- yield front.listPromises();
- let onNewPromise = new Promise(resolve => {
- events.on(front, "new-promises", promises => {
- for (let p of promises) {
- if (p.promiseState.state === "pending") {
- ok(!p.promiseState.timeToSettle,
- "Expect no time to settle for unsettled promise.");
- } else {
- ok(p.promiseState.timeToSettle,
- "Expect time to settle for settled promise.");
- equal(typeof p.promiseState.timeToSettle, "number",
- "Expect time to settle to be a number.");
- }
- }
- resolve();
- });
- });
- let promise = makePromises();
- yield onNewPromise;
- yield front.detach();
- // Appease eslint
- void promise;
- }
|