Files
sousa-gecko/docshell/test/chrome/test_bug608669.xhtml
T
Vincent Hilla 9812cb2647 Bug 543435 - Only reuse inner window for uncommitted initial documents. r=smaug,asuth,credential-management-reviewers,webrtc-reviewers,pehrsons,hsivonen,dimi
The conceptual change is small but it requires several test changes.

In principle, tests cannot open a new empty window, modify the global, then
load their target document and expect their modifications to stick. Only if the
target URI is opened directly, the synchronously available window is reused. So
either tests need to do that, or rely on messages.

Differential Revision: https://phabricator.services.mozilla.com/D265268
2025-11-24 05:34:29 +00:00

82 lines
2.3 KiB
HTML

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=608669
-->
<window title="Mozilla Bug 608669"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<!-- test results are displayed in the html:body -->
<body xmlns="http://www.w3.org/1999/xhtml">
<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=608669"
target="_blank">Mozilla Bug 608669</a>
</body>
<!-- test code goes here -->
<script type="application/javascript"><![CDATA[
/** Test for Bug 608669 */
SimpleTest.waitForExplicitFinish();
addLoadEvent(nextTest);
let gen = doTest();
function nextTest() {
gen.next();
}
let chromeWindow = window.browsingContext.topChromeWindow;
function* doTest() {
var notificationCount = 0;
var observer = {
observe(aSubject, aTopic, aData) {
is(aTopic, "chrome-document-global-created",
"correct topic");
is(aData, "null",
"correct data");
notificationCount++;
}
};
var os = SpecialPowers.Services.obs;
os.addObserver(observer, "chrome-document-global-created");
os.addObserver(observer, "content-document-global-created");
is(notificationCount, 0, "initial count");
// create a new window
var testWin = chromeWindow.open("bug608669.xhtml", "bug 608669", "chrome,width=600,height=600");
// Synchronously modify the transient about:blank window
testWin.x = "y";
is(testWin.location.href, 'about:blank');
is(notificationCount, 0, "after created window");
// Wait for the window to load
chromeWindow.onmessage = nextTest;
yield undefined;
is(notificationCount, 1, "after first load");
is(testWin.x, "y", "reused window");
// Try loading again in the window
testWin.location = "bug608669.xhtml?x";
chromeWindow.onmessage = nextTest;
yield undefined;
is(notificationCount, 2, "after second load");
is("x" in testWin, false, "didn't reuse window");
chromeWindow.onmessage = null;
testWin.close();
os.removeObserver(observer, "chrome-document-global-created");
os.removeObserver(observer, "content-document-global-created");
SimpleTest.finish();
}
]]></script>
</window>