summaryrefslogtreecommitdiffstats
path: root/dom/bindings/test/test_async_stacks.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/bindings/test/test_async_stacks.html')
-rw-r--r--dom/bindings/test/test_async_stacks.html108
1 files changed, 108 insertions, 0 deletions
diff --git a/dom/bindings/test/test_async_stacks.html b/dom/bindings/test/test_async_stacks.html
new file mode 100644
index 000000000..8b655a14d
--- /dev/null
+++ b/dom/bindings/test/test_async_stacks.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1148593
+-->
+<head>
+ <meta charset="utf-8">
+ <title>Test for Bug 1148593</title>
+ <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+ <script type="application/javascript">
+
+ /** Test for Bug 1148593 **/
+
+ SimpleTest.waitForExplicitFinish();
+
+ var TESTS;
+
+ function nextTest() {
+ var t = TESTS.pop();
+ if (t) {
+ t();
+ } else {
+ SimpleTest.finish();
+ }
+ }
+
+ function checkStack(functionName) {
+ try {
+ noSuchFunction();
+ } catch (e) {
+ ok(e.stack.indexOf(functionName) >= 0, "stack includes " + functionName);
+ }
+ nextTest();
+ }
+
+ function eventListener() {
+ checkStack("registerEventListener");
+ }
+ function registerEventListener(link) {
+ link.onload = eventListener;
+ }
+ function eventTest() {
+ var link = document.createElement("link");
+ link.rel = "stylesheet";
+ link.href = "data:text/css,";
+ registerEventListener(link);
+ document.body.appendChild(link);
+ }
+
+ function xhrListener() {
+ checkStack("xhrTest");
+ }
+ function xhrTest() {
+ var ourFile = location.href;
+ var x = new XMLHttpRequest();
+ x.onload = xhrListener;
+ x.open("get", ourFile, true);
+ x.send();
+ }
+
+ function rafListener() {
+ checkStack("rafTest");
+ }
+ function rafTest() {
+ requestAnimationFrame(rafListener);
+ }
+
+ var intervalId;
+ function intervalHandler() {
+ clearInterval(intervalId);
+ checkStack("intervalTest");
+ }
+ function intervalTest() {
+ intervalId = setInterval(intervalHandler, 5);
+ }
+
+ function postMessageHandler(ev) {
+ ev.stopPropagation();
+ checkStack("postMessageTest");
+ }
+ function postMessageTest() {
+ window.addEventListener("message", postMessageHandler, true);
+ window.postMessage("whatever", "*");
+ }
+
+ function runTests() {
+ TESTS = [postMessageTest, intervalTest, rafTest, xhrTest, eventTest];
+ nextTest();
+ }
+
+ addLoadEvent(function() {
+ SpecialPowers.pushPrefEnv(
+ {"set": [['javascript.options.asyncstack', true]]},
+ runTests);
+ });
+ </script>
+</head>
+<body>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1148593">Mozilla Bug 1148593</a>
+<p id="display"></p>
+<div id="content" style="display: none">
+
+</div>
+<pre id="test">
+</pre>
+</body>
+</html>