forked from mirrors/gecko-dev
49 lines
1.9 KiB
JavaScript
49 lines
1.9 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/. */
|
|
|
|
function test() {
|
|
// We need to open a new window for this so that its docshell would get destroyed
|
|
// when clearing the PB mode flag.
|
|
function runTest(aCloseWindow, aCallback) {
|
|
let newWin = OpenBrowserWindow({private: true});
|
|
SimpleTest.waitForFocus(function() {
|
|
let expectedExiting = true;
|
|
let expectedExited = false;
|
|
let observerExiting = {
|
|
observe: function(aSubject, aTopic, aData) {
|
|
is(aTopic, "last-pb-context-exiting", "Correct topic should be dispatched (exiting)");
|
|
is(expectedExiting, true, "notification not expected yet (exiting)");
|
|
expectedExited = true;
|
|
Services.obs.removeObserver(observerExiting, "last-pb-context-exiting");
|
|
}
|
|
};
|
|
let observerExited = {
|
|
observe: function(aSubject, aTopic, aData) {
|
|
is(aTopic, "last-pb-context-exited", "Correct topic should be dispatched (exited)");
|
|
is(expectedExited, true, "notification not expected yet (exited)");
|
|
Services.obs.removeObserver(observerExited, "last-pb-context-exited");
|
|
aCallback();
|
|
}
|
|
};
|
|
Services.obs.addObserver(observerExiting, "last-pb-context-exiting", false);
|
|
Services.obs.addObserver(observerExited, "last-pb-context-exited", false);
|
|
expectedExiting = true;
|
|
aCloseWindow(newWin);
|
|
newWin = null;
|
|
SpecialPowers.forceGC();
|
|
}, newWin);
|
|
}
|
|
|
|
waitForExplicitFinish();
|
|
|
|
runTest(function(newWin) {
|
|
// Simulate pressing the window close button
|
|
newWin.document.getElementById("cmd_closeWindow").doCommand();
|
|
}, function () {
|
|
runTest(function(newWin) {
|
|
// Simulate closing the last tab
|
|
newWin.document.getElementById("cmd_close").doCommand();
|
|
}, finish);
|
|
});
|
|
}
|