summaryrefslogtreecommitdiffstats
path: root/layout/base/tests/test_bug607529.html
diff options
context:
space:
mode:
Diffstat (limited to 'layout/base/tests/test_bug607529.html')
-rw-r--r--layout/base/tests/test_bug607529.html89
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>