mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-20 14:17:30 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
72
browser/components/sessionstore/test/browser_526613.js
Normal file
72
browser/components/sessionstore/test/browser_526613.js
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
/* 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/. */
|
||||
|
||||
function test() {
|
||||
/** Test for Bug 526613 **/
|
||||
|
||||
// test setup
|
||||
waitForExplicitFinish();
|
||||
|
||||
function browserWindowsCount(expected) {
|
||||
let count = 0;
|
||||
let e = Services.wm.getEnumerator("navigator:browser");
|
||||
while (e.hasMoreElements()) {
|
||||
if (!e.getNext().closed)
|
||||
++count;
|
||||
}
|
||||
is(count, expected,
|
||||
"number of open browser windows according to nsIWindowMediator");
|
||||
let state = ss.getBrowserState();
|
||||
info(state);
|
||||
is(JSON.parse(state).windows.length, expected,
|
||||
"number of open browser windows according to getBrowserState");
|
||||
}
|
||||
|
||||
browserWindowsCount(1);
|
||||
|
||||
// backup old state
|
||||
let oldState = ss.getBrowserState();
|
||||
// create a new state for testing
|
||||
let testState = {
|
||||
windows: [
|
||||
{ tabs: [{ entries: [{ url: "http://example.com/" }] }], selected: 1 },
|
||||
{ tabs: [{ entries: [{ url: "about:mozilla" }] }], selected: 1 },
|
||||
],
|
||||
// make sure the first window is focused, otherwise when restoring the
|
||||
// old state, the first window is closed and the test harness gets unloaded
|
||||
selectedWindow: 1
|
||||
};
|
||||
|
||||
let pass = 1;
|
||||
function observer(aSubject, aTopic, aData) {
|
||||
is(aTopic, "sessionstore-browser-state-restored",
|
||||
"The sessionstore-browser-state-restored notification was observed");
|
||||
|
||||
if (pass++ == 1) {
|
||||
browserWindowsCount(2);
|
||||
|
||||
// let the first window be focused (see above)
|
||||
function pollMostRecentWindow() {
|
||||
if (Services.wm.getMostRecentWindow("navigator:browser") == window) {
|
||||
ss.setBrowserState(oldState);
|
||||
} else {
|
||||
info("waiting for the current window to become active");
|
||||
setTimeout(pollMostRecentWindow, 0);
|
||||
window.focus(); //XXX Why is this needed?
|
||||
}
|
||||
}
|
||||
pollMostRecentWindow();
|
||||
}
|
||||
else {
|
||||
browserWindowsCount(1);
|
||||
ok(!window.closed, "Restoring the old state should have left this window open");
|
||||
Services.obs.removeObserver(observer, "sessionstore-browser-state-restored");
|
||||
finish();
|
||||
}
|
||||
}
|
||||
Services.obs.addObserver(observer, "sessionstore-browser-state-restored", false);
|
||||
|
||||
// set browser to test state
|
||||
ss.setBrowserState(JSON.stringify(testState));
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue