test_bug413310.html (3510B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 https://bugzilla.mozilla.org/show_bug.cgi?id=413310 5 --> 6 <head> 7 <title>Test for Bug 413310</title> 8 <script 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=413310">Mozilla Bug 413310</a> 13 <p id="display"> 14 <script class="testbody" type="text/javascript"> 15 16 if (navigator.platform.startsWith("Mac")) { 17 SimpleTest.expectAssertions(0, 2); 18 } else { 19 SimpleTest.expectAssertions(0, 1); 20 } 21 22 /** Test for Bug 413310 */ 23 24 // NOTE: If we ever make subframes do bfcache stuff, this test will need to be 25 // modified accordingly! It assumes that subframes do NOT get bfcached. 26 var onloadCount = 0; 27 28 var step = -1; // One increment will come from the initial subframe onload. 29 // Note that this script should come before the subframe, 30 // so that doNextStep is defined when its onload handler fires. 31 32 var textContent; 33 34 SimpleTest.waitForExplicitFinish(); 35 36 addLoadEvent(doNextStep); 37 38 function doNextStep() { 39 ++step; 40 switch (step) { 41 case 1: 42 is(onloadCount, 1, "Loaded initial page"); 43 is($("i").contentWindow.location.href, 44 location.href.replace(/test_bug413310.html/, 45 "bug413310-subframe.html"), 46 "Unexpected subframe location after initial load"); 47 $("i").contentDocument.forms[0].submit(); 48 break; 49 case 2: 50 is(onloadCount, 2, "Loaded POST result"); 51 52 is($("i").contentWindow.location.href, 53 location.href.replace(/test_bug413310.html/, 54 "bug413310-post.sjs"), 55 "Unexpected subframe location after POST load"); 56 57 textContent = $("i").contentDocument.body.textContent; 58 isDeeply(textContent.match(/^POST /), ["POST "], "Not a POST?"); 59 60 $("i").contentWindow.location.hash = "foo"; 61 setTimeout(doNextStep, 0); 62 break; 63 case 3: 64 is(onloadCount, 2, "Anchor scroll should not fire onload"); 65 is($("i").contentWindow.location.href, 66 location.href.replace(/test_bug413310.html/, 67 "bug413310-post.sjs#foo"), 68 "Unexpected subframe location after anchor scroll"); 69 is(textContent, $("i").contentDocument.body.textContent, 70 "Did a load when scrolling?"); 71 $("i").contentWindow.location.href = "bug413310-subframe.html"; 72 break; 73 case 4: 74 is(onloadCount, 3, "Done new load"); 75 is($("i").contentWindow.location.href, 76 location.href.replace(/test_bug413310.html/, 77 "bug413310-subframe.html"), 78 "Unexpected subframe location after new load"); 79 history.back(); 80 break; 81 case 5: 82 is(onloadCount, 4, 83 "History traversal didn't fire onload: bfcache issues!"); 84 is($("i").contentWindow.location.href, 85 location.href.replace(/test_bug413310.html/, 86 "bug413310-post.sjs#foo"), 87 "Unexpected subframe location"); 88 is(textContent, $("i").contentDocument.body.textContent, 89 "Did a load when going back?"); 90 SimpleTest.finish(); 91 break; 92 } 93 } 94 </script> 95 <!-- Use a timeout in onload so that we don't do a load immediately inside onload --> 96 <iframe id="i" src="bug413310-subframe.html" onload="setTimeout(doNextStep, 20)"> 97 </iframe> 98 </p> 99 <div id="content" style="display: none"> 100 101 </div> 102 <pre id="test"> 103 </pre> 104 </body> 105 </html>