gecko-dev/docshell/test/chrome/bug112564_window.xul
Gijs Kruitbosch cb6c0c81ac Bug 1322414 - part 2,3,4: use a separate 'primary' attribute for primary child browsers, r=bz,mconley
MozReview-Commit-ID: 2yb0WGFYBsH

--HG--
extra : rebase_source : 376171077c577e41e82cec5e994c425c6d9f2d80
extra : histedit_source : 39aad91381749a263042cd0452fe32019a1974b8
2016-12-09 09:23:24 -10:00

116 lines
3.7 KiB
XML

<?xml version="1.0"?>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<window id="112564Test"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
width="600"
height="600"
onload="onLoad();"
title="112564 test">
<script type="application/javascript"><![CDATA[
const LISTEN_EVENTS = ["load", "unload", "pageshow", "pagehide"];
var gBrowser;
var gTestsIterator;
var gExpected = [];
function ok(condition, message) {
window.opener.wrappedJSObject.SimpleTest.ok(condition, message);
}
function is(a, b, message) {
window.opener.wrappedJSObject.SimpleTest.is(a, b, message);
}
function finish() {
for (let eventType of LISTEN_EVENTS) {
gBrowser.removeEventListener(eventType, eventListener, true);
}
// Work around bug 467960
var history = gBrowser.webNavigation.sessionHistory;
history.PurgeHistory(history.count);
window.close();
window.opener.wrappedJSObject.SimpleTest.finish();
}
function onLoad() {
gBrowser = document.getElementById("content");
for (let eventType of LISTEN_EVENTS) {
gBrowser.addEventListener(eventType, eventListener, true);
}
gTestsIterator = testsIterator();
nextTest();
}
function eventListener(event) {
ok(gExpected.length >= 1, "Unexpected event " + event.type);
if (gExpected.length == 0) {
// in case of unexpected event, try to continue anyway
setTimeout(nextTest, 0);
return;
}
var exp = gExpected.shift();
is(event.type, exp.type, "Invalid event received");
if (typeof(exp.persisted) != "undefined") {
is(event.persisted, exp.persisted, "Invalid persisted state");
}
if (exp.title) {
ok(event.originalTarget instanceof HTMLDocument,
"originalTarget not a HTMLDocument");
is(event.originalTarget.title, exp.title, "titles don't match");
}
if (gExpected.length == 0) {
setTimeout(nextTest, 0);
}
}
function nextTest() {
gTestsIterator.next();
}
function* testsIterator() {
// Load a secure page with a no-cache header, followed by a simple page.
// no-cache should not interfere with the bfcache in the way no-store
// does.
var test1DocURI = "https://example.com:443/tests/docshell/test/chrome/112564_nocache.html";
gExpected = [{type: "pagehide", persisted: true},
{type: "load", title: "test1"},
{type: "pageshow", title: "test1", persisted: false}];
gBrowser.loadURI(test1DocURI);
yield undefined;
var test2Doc = "data:text/html,<html><head><title>test2</title></head>" +
"<body>test2</body></html>";
gExpected = [{type: "pagehide", title: "test1", persisted: true},
{type: "load", title: "test2"},
{type: "pageshow", title: "test2", persisted: false}];
gBrowser.loadURI(test2Doc);
yield undefined;
// Now go back in history. First page has been cached.
// Check persisted property to confirm
gExpected = [{type: "pagehide", title: "test2", persisted: true},
{type: "pageshow", title: "test1", persisted: true}];
gBrowser.goBack();
yield undefined;
finish();
}
]]></script>
<browser type="content" primary="true" flex="1" id="content" src="about:blank"/>
</window>