summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/Object-getPromiseReactions-01.js
blob: ab569849607a5877ac90268913bcdc06f9428e83 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// Debugger.Object.prototype.getPromiseReactions throws on non-promises, but
// works on wrappers of promises.

load(libdir + 'asserts.js');
load(libdir + 'array-compare.js');

var g = newGlobal({ newCompartment: true });
var dbg = new Debugger;
var DOg = dbg.addDebuggee(g);

assertThrowsInstanceOf(() => DOg.getPromiseReactions(), TypeError);

// Try retrieving an empty reaction list from an actual promise.
g.eval(`var p = Promise.resolve();`);
var DOgp = DOg.makeDebuggeeValue(g.p);
assertEq(true, arraysEqual(DOgp.getPromiseReactions(), []));

// Try a Debugger.Object of a cross-compartment wrapper of a promise. This
// should still work: the promise accessors generally do checked unwraps of
// their arguments.
var g2 = newGlobal({ newCompartment: true });
DOg2 = dbg.addDebuggee(g2);
var DOg2gp = DOg2.makeDebuggeeValue(g.p);
assertEq(DOgp, DOg2gp.unwrap());
assertEq(true, arraysEqual(DOg2gp.getPromiseReactions(), []));