Bug 439164: refactor test_bug413310 to avoid intermittent timing-related failures
--- a/docshell/test/test_bug413310.html
+++ b/docshell/test/test_bug413310.html
@@ -7,32 +7,27 @@ https://bugzilla.mozilla.org/show_bug.cg
<title>Test for Bug 413310</title>
<script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
<script type="text/javascript" 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=413310">Mozilla Bug 413310</a>
<p id="display">
-<iframe id="i" src="bug413310-subframe.html" onload="setTimeout(doNextStep, 20)">
-</iframe>
-</p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
<script class="testbody" type="text/javascript">
/** Test for Bug 413310 **/
// NOTE: If we ever make subframes do bfcache stuff, this test will need to be
-// modified accordingly! It assumes that subframes do not get bfcached.
+// modified accordingly! It assumes that subframes do NOTget bfcached.
var onloadCount = 0;
var step = -1; // One increment will come from the initial subframe onload.
+ // Note that this script should come before the subframe,
+ // so that doNextStep is defined when its onload handler fires.
var textContent;
SimpleTest.waitForExplicitFinish();
addLoadEvent(doNextStep);
function doNextStep() {
@@ -87,12 +82,20 @@ function doNextStep() {
"Unexpected subframe location");
is(textContent, $("i").contentDocument.body.textContent,
"Did a load when going back?");
SimpleTest.finish();
break;
}
}
</script>
+<!-- Use a timeout in onload so that we don't do a load immediately inside onload -->
+<iframe id="i" src="bug413310-subframe.html" onload="setTimeout(doNextStep, 20)">
+</iframe>
+</p>
+<div id="content" style="display: none">
+
+</div>
+<pre id="test">
</pre>
</body>
</html>