83 lines
2.7 KiB
HTML
83 lines
2.7 KiB
HTML
<?xml version="1.0"?>
|
|
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
|
|
<window title="Mozilla Bug 449780" onload="setTimeout(doTheTest, 0);"
|
|
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
|
|
|
<hbox id="parent">
|
|
</hbox>
|
|
|
|
<!-- test code goes here -->
|
|
<script type="application/javascript" src="chrome://mochikit/content/chrome-harness.js" />
|
|
<script type="application/javascript" src="docshell_helpers.js" />
|
|
<script type="application/javascript"><![CDATA[
|
|
function addBrowser(parent, width, height) {
|
|
var b =
|
|
document.createElementNS("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "browser");
|
|
b.setAttribute("type", "content");
|
|
b.setAttribute("id", "content");
|
|
b.setAttribute("width", width);
|
|
b.setAttribute("height", height);
|
|
b.setAttribute("remote", SpecialPowers.Services.appinfo.sessionHistoryInParent);
|
|
if (SpecialPowers.Services.appinfo.sessionHistoryInParent) {
|
|
b.setAttribute("maychangeremoteness", "true");
|
|
}
|
|
document.getElementById("parent").appendChild(b);
|
|
return b;
|
|
}
|
|
|
|
let f1 = addBrowser("parent", 300, 200);
|
|
|
|
/** Test for Bug 449780 */
|
|
var doc1 = "data:text/html,<html><body>This is a test</body></html>";
|
|
var doc2 = "data:text/html,<html><body>This is a second test</body></html>";
|
|
|
|
async function doTheTest() {
|
|
await promisePageNavigation({
|
|
uri: doc1,
|
|
});
|
|
let { origDOM, modifiedDOM } = await SpecialPowers.spawn(f1, [], () => {
|
|
var origDOM = content.document.documentElement.innerHTML;
|
|
content.document.body.textContent = "Modified";
|
|
var modifiedDOM = content.document.documentElement.innerHTML;
|
|
isnot(origDOM, modifiedDOM, "DOM should be different");
|
|
return { origDOM, modifiedDOM };
|
|
});
|
|
|
|
await promisePageNavigation({
|
|
uri: doc2,
|
|
});
|
|
|
|
await promisePageNavigation({
|
|
back: true,
|
|
});
|
|
|
|
await SpecialPowers.spawn(f1, [modifiedDOM], (modifiedDOM) => {
|
|
is(content.document.documentElement.innerHTML, modifiedDOM, "Should have been bfcached");
|
|
});
|
|
|
|
await promisePageNavigation({
|
|
forward: true,
|
|
});
|
|
|
|
f1.removeAttribute("id");
|
|
let f2 = addBrowser("parent", 300, 200);
|
|
|
|
// Make sure there's a document or the swap will fail.
|
|
await promisePageNavigation({
|
|
uri: "about:blank",
|
|
});
|
|
|
|
f1.swapDocShells(f2);
|
|
|
|
await promisePageNavigation({
|
|
back: true,
|
|
});
|
|
|
|
await SpecialPowers.spawn(f2, [origDOM], (origDOM) => {
|
|
is(content.document.documentElement.innerHTML, origDOM, "Should not have been bfcached");
|
|
});
|
|
|
|
finish();
|
|
}
|
|
]]></script>
|
|
</window>
|