test_bug246699.html 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <!DOCTYPE HTML>
  2. <html>
  3. <!--
  4. https://bugzilla.mozilla.org/show_bug.cgi?id=246699
  5. -->
  6. <head>
  7. <title>Test for Bug 246699</title>
  8. <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
  9. <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
  10. </head>
  11. <body>
  12. <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=246699">Mozilla Bug 246699</a>
  13. <p id="display"></p>
  14. <div id="content" style="display: none">
  15. <iframe id="load-frame"></iframe>
  16. </div>
  17. <pre id="test">
  18. <script class="testbody" type="text/javascript">
  19. /**
  20. ** Test for Bug 246699
  21. ** (should produce stack information for caps errors)
  22. **/
  23. function isError(e)
  24. {
  25. return e.constructor.name === "Error" || e.constructor.name === "TypeError";
  26. }
  27. function hasStack(e)
  28. {
  29. return isError(e) && /inciteCaps/.test(e.stack);
  30. }
  31. function inciteCaps(f)
  32. {
  33. try {
  34. f();
  35. return "operation succeeded";
  36. } catch (e if hasStack(e)) {
  37. return "denied-stack";
  38. } catch (e) {
  39. return "unexpected: " + e;
  40. }
  41. }
  42. function tryChromeLoad()
  43. {
  44. window.frames[0].location = "chrome://global/content/mozilla.xhtml";
  45. }
  46. function tryComponentsClasses()
  47. {
  48. return SpecialPowers.Components.classes["@mozilla.org/dummy;1"];
  49. }
  50. is(inciteCaps(tryChromeLoad), "denied-stack",
  51. "should get stack for content-loading-chrome rejection");
  52. is(inciteCaps(tryComponentsClasses), "denied-stack",
  53. "should get stack for SpecialPowers.Components.classes rejection");
  54. </script>
  55. </pre>
  56. </body>
  57. </html>