Bug 844561 - Avoid prompting about closing private windows unnecessarily. r=ehsan

This commit is contained in:
Josh Matthews 2013-03-01 09:08:53 -05:00
parent 9fa1d386f7
commit 157416a563
3 changed files with 18 additions and 4 deletions

View File

@ -6409,20 +6409,20 @@ function warnAboutClosingWindow() {
// Figure out if there's at least one other browser window around.
let e = Services.wm.getEnumerator("navigator:browser");
let otherPBWindowExists = false;
let warnAboutClosingTabs = false;
let nonPopupPresent = false;
while (e.hasMoreElements()) {
let win = e.getNext();
if (win != window) {
if (isPBWindow && PrivateBrowsingUtils.isWindowPrivate(win))
otherPBWindowExists = true;
if (win.toolbar.visible)
warnAboutClosingTabs = true;
nonPopupPresent = true;
// If the current window is not in private browsing mode we don't need to
// look for other pb windows, we can leave the loop when finding the
// first non-popup window. If however the current window is in private
// browsing mode then we need at least one other pb and one non-popup
// window to break out early.
if ((!isPBWindow || otherPBWindowExists) && warnAboutClosingTabs)
if ((!isPBWindow || otherPBWindowExists) && nonPopupPresent)
break;
}
}
@ -6437,7 +6437,8 @@ function warnAboutClosingWindow() {
if (exitingCanceled.data)
return false;
}
if (warnAboutClosingTabs)
if (!isPBWindow && nonPopupPresent)
return gBrowser.warnAboutClosingTabs(true);
let os = Services.obs;

View File

@ -315,6 +315,7 @@ _BROWSER_FILES = \
feed_tab.html \
browser_pluginCrashCommentAndURL.js \
pluginCrashCommentAndURL.html \
browser_private_no_prompt.js \
$(NULL)
ifneq (cocoa,$(MOZ_WIDGET_TOOLKIT))

View File

@ -0,0 +1,12 @@
function test() {
waitForExplicitFinish();
var privateWin = OpenBrowserWindow({private: true});
privateWin.addEventListener("load", function onload() {
privateWin.removeEventListener("load", onload, false);
privateWin.BrowserOpenTab();
privateWin.BrowserTryToCloseWindow();
ok(true, "didn't prompt");
finish();
}, false);
}