mirror of
https://github.com/Feodor2/Mypal68.git
synced 2025-06-19 15:25:50 -04:00
118 lines
3.1 KiB
JavaScript
118 lines
3.1 KiB
JavaScript
/* 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/. */
|
|
|
|
const URIS_PINNED = ["about:license", "about:about"];
|
|
const URIS_NORMAL_A = ["about:mozilla"];
|
|
const URIS_NORMAL_B = ["about:buildconfig"];
|
|
|
|
function test() {
|
|
waitForExplicitFinish();
|
|
|
|
isnot(
|
|
Services.prefs.getIntPref("browser.startup.page"),
|
|
3,
|
|
"pref to save session must not be set for this test"
|
|
);
|
|
ok(
|
|
!Services.prefs.getBoolPref("browser.sessionstore.resume_session_once"),
|
|
"pref to save session once must not be set for this test"
|
|
);
|
|
|
|
document.documentElement.setAttribute(
|
|
"windowtype",
|
|
"navigator:browsertestdummy"
|
|
);
|
|
|
|
openWinWithCb(closeFirstWin, URIS_PINNED.concat(URIS_NORMAL_A));
|
|
}
|
|
|
|
function closeFirstWin(win) {
|
|
win.gBrowser.pinTab(win.gBrowser.tabs[0]);
|
|
win.gBrowser.pinTab(win.gBrowser.tabs[1]);
|
|
|
|
let winClosed = BrowserTestUtils.windowClosed(win);
|
|
// We need to call BrowserTryToCloseWindow in order to trigger
|
|
// the machinery that chooses whether or not to save the session
|
|
// for the last window.
|
|
win.BrowserTryToCloseWindow();
|
|
ok(win.closed, "window closed");
|
|
|
|
winClosed.then(() => {
|
|
openWinWithCb(
|
|
checkSecondWin,
|
|
URIS_NORMAL_B,
|
|
URIS_PINNED.concat(URIS_NORMAL_B)
|
|
);
|
|
});
|
|
}
|
|
|
|
function checkSecondWin(win) {
|
|
is(
|
|
win.gBrowser.browsers[0].currentURI.spec,
|
|
URIS_PINNED[0],
|
|
"first pinned tab restored"
|
|
);
|
|
is(
|
|
win.gBrowser.browsers[1].currentURI.spec,
|
|
URIS_PINNED[1],
|
|
"second pinned tab restored"
|
|
);
|
|
ok(win.gBrowser.tabs[0].pinned, "first pinned tab is still pinned");
|
|
ok(win.gBrowser.tabs[1].pinned, "second pinned tab is still pinned");
|
|
|
|
BrowserTestUtils.closeWindow(win).then(() => {
|
|
// cleanup
|
|
document.documentElement.setAttribute("windowtype", "navigator:browser");
|
|
finish();
|
|
});
|
|
}
|
|
|
|
function openWinWithCb(cb, argURIs, expectedURIs) {
|
|
if (!expectedURIs) {
|
|
expectedURIs = argURIs;
|
|
}
|
|
|
|
var win = openDialog(
|
|
AppConstants.BROWSER_CHROME_URL,
|
|
"_blank",
|
|
"chrome,all,dialog=no",
|
|
argURIs.join("|")
|
|
);
|
|
|
|
win.addEventListener(
|
|
"load",
|
|
function() {
|
|
info("the window loaded");
|
|
|
|
var expectedLoads = expectedURIs.length;
|
|
|
|
win.gBrowser.addTabsProgressListener({
|
|
onStateChange(aBrowser, aWebProgress, aRequest, aStateFlags, aStatus) {
|
|
if (
|
|
aRequest &&
|
|
aStateFlags & Ci.nsIWebProgressListener.STATE_STOP &&
|
|
aStateFlags & Ci.nsIWebProgressListener.STATE_IS_NETWORK &&
|
|
expectedURIs.indexOf(
|
|
aRequest.QueryInterface(Ci.nsIChannel).originalURI.spec
|
|
) > -1 &&
|
|
--expectedLoads <= 0
|
|
) {
|
|
win.gBrowser.removeTabsProgressListener(this);
|
|
info("all tabs loaded");
|
|
is(
|
|
win.gBrowser.tabs.length,
|
|
expectedURIs.length,
|
|
"didn't load any unexpected tabs"
|
|
);
|
|
executeSoon(function() {
|
|
cb(win);
|
|
});
|
|
}
|
|
},
|
|
});
|
|
},
|
|
{ once: true }
|
|
);
|
|
}
|