test_on_promise_settled.html (1580B)
1 <!-- 2 Any copyright is dedicated to the Public Domain. 3 http://creativecommons.org/publicdomain/zero/1.0/ 4 --> 5 6 <!-- 7 Bug 1084065 - Sanity test for interaction between DOM promises and 8 Debugger.prototype.onPromiseResolved. 9 --> 10 11 <html> 12 <head> 13 <title>Test for interaction with SpiderMonkey's Debugger.prototype.onNewPromise</title> 14 <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> 15 <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"> 16 </head> 17 <body> 18 <p id="display"></p> 19 <div id="content" style="display: none"> 20 21 </div> 22 <pre id="test"> 23 <script type="application/javascript"> 24 SimpleTest.waitForExplicitFinish(); 25 26 is(Object.prototype.toString.call(new Promise(function() {})), 27 "[object Promise]", 28 "We should have the native DOM promise implementation."); 29 30 const {addDebuggerToGlobal} = ChromeUtils.importESModule("resource://gre/modules/jsdebugger.sys.mjs"); 31 var dbgGlobal = new Cu.Sandbox(document.nodePrincipal, 32 {freshCompartment: true}); 33 addDebuggerToGlobal(dbgGlobal); 34 var dbg = new dbgGlobal.Debugger(this); 35 36 var wrappedPromise; 37 dbg.onPromiseSettled = function(wp) { wrappedPromise = wp; }; 38 39 var promise = Promise.resolve(); 40 promise 41 .then(function() { 42 ok(wrappedPromise); 43 is(wrappedPromise.unsafeDereference(), promise); 44 dbg.onPromiseSettled = undefined; 45 }) 46 .catch(function(e) { 47 ok(false, "Got an unexpected error: " + e); 48 }) 49 .then(SimpleTest.finish); 50 </script> 51 </pre> 52 </body> 53 </html>