123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
- /* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
- /**
- * Test that we can get a stack to a promise's fulfillment point.
- */
- "use strict";
- const TAB_URL = EXAMPLE_URL + "doc_promise-get-fulfillment-stack.html";
- const { PromisesFront } = require("devtools/shared/fronts/promises");
- var events = require("sdk/event/core");
- const TEST_DATA = [
- {
- functionDisplayName: "returnPromise/<",
- line: 19,
- column: 37
- },
- {
- functionDisplayName: "returnPromise",
- line: 19,
- column: 14
- },
- {
- functionDisplayName: "makePromise",
- line: 14,
- column: 15
- },
- ];
- function test() {
- Task.spawn(function* () {
- DebuggerServer.init();
- DebuggerServer.addBrowserActors();
- let options = {
- source: TAB_URL,
- line: 1
- };
- const [ tab,, panel ] = yield initDebugger(TAB_URL, options);
- let client = new DebuggerClient(DebuggerServer.connectPipe());
- yield connect(client);
- let { tabs } = yield listTabs(client);
- let targetTab = findTab(tabs, TAB_URL);
- yield attachTab(client, targetTab);
- yield testGetFulfillmentStack(client, targetTab, tab);
- yield close(client);
- yield closeDebuggerAndFinish(panel);
- }).then(null, error => {
- ok(false, "Got an error: " + error.message + "\n" + error.stack);
- });
- }
- function* testGetFulfillmentStack(client, form, tab) {
- let front = PromisesFront(client, form);
- yield front.attach();
- yield front.listPromises();
- // Get the grip for promise p
- let onNewPromise = new Promise(resolve => {
- events.on(front, "new-promises", promises => {
- for (let p of promises) {
- if (p.preview.ownProperties.name &&
- p.preview.ownProperties.name.value === "p") {
- resolve(p);
- }
- }
- });
- });
- callInTab(tab, "makePromise");
- let grip = yield onNewPromise;
- ok(grip, "Found our promise p");
- let objectClient = new ObjectClient(client, grip);
- ok(objectClient, "Got Object Client");
- yield new Promise(resolve => {
- objectClient.getPromiseFulfillmentStack(response => {
- ok(response.fulfillmentStack.length, "Got promise allocation stack.");
- for (let i = 0; i < TEST_DATA.length; i++) {
- let stack = response.fulfillmentStack[i];
- let data = TEST_DATA[i];
- is(stack.source.url, TAB_URL, "Got correct source URL.");
- is(stack.functionDisplayName, data.functionDisplayName,
- "Got correct function display name.");
- is(stack.line, data.line, "Got correct stack line number.");
- is(stack.column, data.column, "Got correct stack column number.");
- }
- resolve();
- });
- });
- yield front.detach();
- }
|