mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-14 22:05:44 +00:00
Bug 1364364 - Part 4: Add test case. r=smaug
MozReview-Commit-ID: BozQDPdx0MI --HG-- extra : rebase_source : 861931ed42bd00cb698e051818d98808d828d65e
This commit is contained in:
parent
6717899b75
commit
6d9efa467e
33
docshell/test/navigation/file_bug1364364-1.html
Normal file
33
docshell/test/navigation/file_bug1364364-1.html
Normal file
@ -0,0 +1,33 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>title</title>
|
||||
</head>
|
||||
<body onload="loadFramesAndNavigate();">
|
||||
<p id="content"></p>
|
||||
<div id="frameContainer">
|
||||
</div>
|
||||
<script type="application/javascript">
|
||||
function waitForLoad(frame) {
|
||||
return new Promise(r => frame.onload = r);
|
||||
}
|
||||
|
||||
async function loadFramesAndNavigate() {
|
||||
let dynamicFrame = document.createElement("iframe");
|
||||
dynamicFrame.src = "data:text/html,iframe1";
|
||||
document.querySelector("#frameContainer").appendChild(dynamicFrame);
|
||||
await waitForLoad(dynamicFrame);
|
||||
dynamicFrame.src = "data:text/html,iframe2";
|
||||
await waitForLoad(dynamicFrame);
|
||||
dynamicFrame.src = "data:text/html,iframe3";
|
||||
await waitForLoad(dynamicFrame);
|
||||
dynamicFrame.src = "data:text/html,iframe4";
|
||||
await waitForLoad(dynamicFrame);
|
||||
dynamicFrame.src = "data:text/html,iframe5";
|
||||
await waitForLoad(dynamicFrame);
|
||||
location.href = "file_bug1364364-2.html";
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
14
docshell/test/navigation/file_bug1364364-2.html
Normal file
14
docshell/test/navigation/file_bug1364364-2.html
Normal file
@ -0,0 +1,14 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>title</title>
|
||||
</head>
|
||||
<body onload="notifyOpener();">
|
||||
<script type="application/javascript">
|
||||
function notifyOpener() {
|
||||
opener.postMessage("navigation-done", "*");
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -47,6 +47,8 @@ support-files =
|
||||
file_contentpolicy_block_window.html
|
||||
file_bug1326251.html
|
||||
file_bug1326251_evict_cache.html
|
||||
file_bug1364364-1.html
|
||||
file_bug1364364-2.html
|
||||
file_bug1375833.html
|
||||
file_bug1375833-frame1.html
|
||||
file_bug1375833-frame2.html
|
||||
@ -61,6 +63,7 @@ skip-if = toolkit == "android" || toolkit == "windows" # disabled on Windows bec
|
||||
[test_bug430624.html]
|
||||
[test_bug430723.html]
|
||||
skip-if = (toolkit == 'android') || (!debug && (os == 'mac' || os == 'win')) # Bug 874423
|
||||
[test_bug1364364.html]
|
||||
[test_bug1375833.html]
|
||||
[test_child.html]
|
||||
[test_grandchild.html]
|
||||
|
56
docshell/test/navigation/test_bug1364364.html
Normal file
56
docshell/test/navigation/test_bug1364364.html
Normal file
@ -0,0 +1,56 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<!--
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1364364
|
||||
-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Test for Bug 1364364</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 1364364 **/
|
||||
let testWin, testDoc;
|
||||
async function test() {
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
testWin = window.open("file_bug1364364-1.html");
|
||||
await waitForLoad(testWin);
|
||||
testDoc = testWin.document;
|
||||
|
||||
// file_bug1364364-1.html will load a few dynamic iframes and then navigate
|
||||
// top browsing context to file_bug1364364-2.html, which will postMessage
|
||||
// back.
|
||||
}
|
||||
|
||||
function waitForLoad(win) {
|
||||
return new Promise(r => win.addEventListener("load", r, { once: true}));
|
||||
}
|
||||
|
||||
window.addEventListener("message", async function(msg) {
|
||||
if (msg.data == "navigation-done") {
|
||||
is(testWin.history.length, 6, "check history.length");
|
||||
|
||||
// Modify a document in bfcache should cause the cache being dropped tho
|
||||
// RemoveFromBFCacheAsync.
|
||||
testDoc.querySelector("#content").textContent = "modified";
|
||||
await new Promise(r => setTimeout(r, 0));
|
||||
|
||||
is(testWin.history.length, 2, "check history.length after bfcache dropped");
|
||||
testWin.close();
|
||||
SimpleTest.finish();
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body onload="test();">
|
||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1364364">Mozilla Bug 1364364</a>
|
||||
<p id="display"></p>
|
||||
<div id="content" style="display: none">
|
||||
|
||||
</div>
|
||||
<pre id="test">
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user