test_bug415498.xul 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?xml version="1.0"?>
  2. <?xml-stylesheet href="chrome://global/skin" type="text/css"?>
  3. <?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
  4. type="text/css"?>
  5. <!--
  6. https://bugzilla.mozilla.org/show_bug.cgi?id=415498
  7. -->
  8. <window title="Mozilla Bug 415498"
  9. xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
  10. onload="init()">
  11. <script type="application/javascript"
  12. src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
  13. <script type="application/javascript"
  14. src="chrome://mochikit/content/chrome-harness.js"></script>
  15. <body xmlns="http://www.w3.org/1999/xhtml">
  16. <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=415498">Mozilla Bug 415498</a>
  17. <p id="display"></p>
  18. <pre id="test">
  19. <script class="testbody" type="application/javascript"><![CDATA[
  20. /** Test for Bug 415498 **/
  21. if (Cc === undefined) {
  22. var Cc = Components.classes;
  23. var Ci = Components.interfaces;
  24. }
  25. var Cr = Components.results;
  26. SimpleTest.waitForExplicitFinish();
  27. var gTestsIterator;
  28. var gConsole;
  29. var gConsoleListener;
  30. var gMessages = [];
  31. function init() {
  32. gTestsIterator = testsIterator();
  33. gConsole = Cc["@mozilla.org/consoleservice;1"].
  34. getService(Ci.nsIConsoleService);
  35. gConsoleListener = {
  36. observe: function(aObject) {
  37. gMessages.push(aObject);
  38. }
  39. };
  40. gConsole.registerListener(gConsoleListener);
  41. nextTest();
  42. }
  43. function nextTest() {
  44. try {
  45. gTestsIterator.next();
  46. } catch (err) {
  47. ok(err instanceof StopIteration,
  48. "Some other exception was thrown than what we expected!");
  49. if (gConsole && gConsoleListener) {
  50. gConsole.unregisterListener(gConsoleListener);
  51. }
  52. SimpleTest.finish();
  53. }
  54. }
  55. function testsIterator() {
  56. var browser = $("browser");
  57. browser.addEventListener("load", function() {
  58. setTimeout(nextTest, 0)
  59. }, false);
  60. // 1) This document uses addEventListener to register a method throwing an exception
  61. var chromeDir = getRootDirectory(window.location.href);
  62. browser.loadURI(chromeDir + "bug415498-doc1.html");
  63. yield undefined;
  64. ok(verifyErrorReceived("HierarchyRequestError"),
  65. "Error message not reported in event listener callback!");
  66. gMessages = [];
  67. // 2) This document sets window.onload to register a method throwing an exception
  68. var chromeDir = getRootDirectory(window.location.href);
  69. browser.loadURI(chromeDir + "bug415498-doc2.html");
  70. yield undefined;
  71. ok(verifyErrorReceived("HierarchyRequestError"),
  72. "Error message not reported in window.onload!");
  73. }
  74. function verifyErrorReceived(errorString) {
  75. for (var i = 0; i < gMessages.length; i++) {
  76. if (gMessages[i].message.indexOf(errorString) != -1)
  77. return true;
  78. }
  79. return false;
  80. }
  81. ]]></script>
  82. </pre>
  83. </body>
  84. <browser id="browser" type="content" flex="1" src="about:blank"/>
  85. </window>