diff options
Diffstat (limited to 'layout/base/tests/test_bug607529.html')
-rw-r--r-- | layout/base/tests/test_bug607529.html | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/layout/base/tests/test_bug607529.html b/layout/base/tests/test_bug607529.html new file mode 100644 index 0000000000..40b8c2cf8f --- /dev/null +++ b/layout/base/tests/test_bug607529.html @@ -0,0 +1,89 @@ +<!DOCTYPE HTML> +<html> +<!-- +https://bugzilla.mozilla.org/show_bug.cgi?id=607529 +--> +<head> + <title>Test for Bug 607529</title> + <script src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> +</head> +<body> +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=607529">Mozilla Bug 607529</a> +<p id="display"></p> +<div id="content" style="display: none"> + +</div> +<pre id="test"> +<script type="application/javascript"> + SimpleTest.waitForExplicitFinish(); + + /* General idea: Open a new window (needed because we don't bfcache + subframes) that uses requestAnimationFrame, navigate it, navigate it + back, and verify that the animations are still running. */ + + var doneOneLoad = false; + var done = false; + + /** Test for Bug 607529 **/ + + function closeWindowAndFinish() { + w.close(); + window.onmessage = null; + SimpleTest.finish(); + } + + window.onmessage = function(e) { + isnot(e.data, "notcached", "Should never end up not being cached"); + + if (e.data == "loaded") { + if (!doneOneLoad) { + doneOneLoad = true; + w.location = "file_bug607529-1.html"; + } else { + // This is unexpected, but it can happen on Android, probably when + // bfcache gets purged due to memory pressure. Hence, "soft fail" there. + var message = "onload handler shouldn't fire on restore from bfcache"; + if (navigator.appVersion.includes("Android")) { + todo(false, message); + } else { + ok(false, message); + } + // In any case, more messages aren't coming, so finish up. + closeWindowAndFinish(); + } + } + else if (e.data == "goback") { + w.history.back(); + } + else if (e.data == "revived") { + w.postMessage("report", "*"); + } + else if (e.data == "callbackHappened") { + // We might get this message more than once, if the other page queues up + // more than one callbackHappened message before we manage to close it. + // Protect against calling SimpleTest.finish() more than once. + if (!done) { + closeWindowAndFinish(); + done = true; + } + } else { + try { + var msg = JSON.parse(e.data); + } catch (ex) { + // In case JSON.parse throws, we pause to print the string that it + // choked on, and then resume throwing the exception. + ok(false, "JSON.parse threw, when passed string '" + e.data + "'"); + throw ex; + } + if (msg.error) { + window.onerror(msg.msg, msg.url, msg.line); + } + } + }; + + var w = window.open("file_bug607529.html"); +</script> +</pre> +</body> +</html> |