test_bug390488.html 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <!DOCTYPE HTML>
  2. <html>
  3. <!--
  4. https://bugzilla.mozilla.org/show_bug.cgi?id=390488
  5. -->
  6. <head>
  7. <title>Test for Bug 390488</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=390488">Mozilla Bug 390488</a>
  13. <p id="display">
  14. <div id="testdiv" onclick="checkForStacks();" style="visibility:hidden">
  15. </div>
  16. </p>
  17. <div id="content" style="display: none">
  18. </div>
  19. <pre id="test">
  20. <script class="testbody" type="text/javascript">
  21. /** Test for Bug 390488 **/
  22. function getStack1() {
  23. var func = arguments.callee.caller;
  24. var stack = "";
  25. for (var i = 1; func && i < 8; i++) {
  26. stack += " " + i + ". " + func.name;
  27. func = func.caller;
  28. }
  29. return stack;
  30. }
  31. function getStack2() {
  32. var stack = new Error().stack;
  33. // Remove the two lines due to calling this
  34. return stack.substring(stack.indexOf("\n", stack.indexOf("\n")+1)+1);
  35. }
  36. function simulateClick() {
  37. var evt = document.createEvent("MouseEvents");
  38. evt.initMouseEvent("click", true, true, window,
  39. 0, 0, 0, 0, 0, false, false, false, false, 0, null);
  40. $("testdiv").dispatchEvent(evt);
  41. }
  42. function matches(s, p, name) {
  43. ok(s.match(p) != null, name,
  44. "got " + uneval(s) + ", expected a string matching " + uneval(p));
  45. }
  46. function checkForStacks() {
  47. matches(getStack1(), /checkForStacks .* onclick .* simulateClick/,
  48. "Stack from walking caller chain should be correct");
  49. isnot(getStack2().indexOf("simulateClick@"), -1,
  50. "Stack from |new Error().stack| should include simulateClick");
  51. }
  52. simulateClick();
  53. </script>
  54. </pre>
  55. </body>
  56. </html>