test_on_promise_settled.html 1.5 KB

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