tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>