From 4b196a0cdc2b584fc4c4904c57b4dedb6ee7c92f Mon Sep 17 00:00:00 2001 From: Ehsan Akhgari Date: Wed, 13 Mar 2013 15:15:05 -0400 Subject: [PATCH] Bug 845592 - Adjust the New Window menu entries in permanent private browsing mode; r=gavin --HG-- extra : rebase_source : aebca8d6686cdb0b0f8ee8ee44a743b9dfbe8c17 --- browser/base/content/browser.js | 19 ++++++++- .../test/browser_private_browsing_window.js | 39 ++++++++++++++++++- 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js index 3b3b3937010..be24637649c 100644 --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js @@ -7198,7 +7198,6 @@ let gPrivateBrowsingUI = { // temporary fix until bug 463607 is fixed document.getElementById("Tools:Sanitize").setAttribute("disabled", "true"); - // Adjust the window's title if (window.location.href == getBrowserURL()) { #ifdef XP_MACOSX if (!PrivateBrowsingUtils.permanentPrivateBrowsing) { @@ -7206,6 +7205,7 @@ let gPrivateBrowsingUI = { } #endif + // Adjust the window's title let docElement = document.documentElement; docElement.setAttribute("title", docElement.getAttribute("title_privatebrowsing")); @@ -7214,6 +7214,23 @@ let gPrivateBrowsingUI = { docElement.setAttribute("privatebrowsingmode", PrivateBrowsingUtils.permanentPrivateBrowsing ? "permanent" : "temporary"); gBrowser.updateTitlebar(); + + if (PrivateBrowsingUtils.permanentPrivateBrowsing) { + // Adjust the New Window menu entries + [ + { normal: "menu_newNavigator", private: "menu_newPrivateWindow" }, + { normal: "appmenu_newNavigator", private: "appmenu_newPrivateWindow" }, + ].forEach(function(menu) { + let newWindow = document.getElementById(menu.normal); + let newPrivateWindow = document.getElementById(menu.private); + if (newWindow && newPrivateWindow) { + newPrivateWindow.hidden = true; + newWindow.label = newPrivateWindow.label; + newWindow.accessKey = newPrivateWindow.accessKey; + newWindow.command = newPrivateWindow.command; + } + }); + } } if (gURLBar) { diff --git a/browser/base/content/test/browser_private_browsing_window.js b/browser/base/content/test/browser_private_browsing_window.js index d71f98e27f5..49b030a660d 100644 --- a/browser/base/content/test/browser_private_browsing_window.js +++ b/browser/base/content/test/browser_private_browsing_window.js @@ -16,9 +16,46 @@ function test() { whenDelayedStartupFinished(privateWin, function() { nonPrivateWin = privateWin.OpenBrowserWindow({private: false}); ok(!PrivateBrowsingUtils.isWindowPrivate(nonPrivateWin), "privateWin.OpenBrowserWindow({private: false}) should open a normal window"); + nonPrivateWin.close(); + + [ + { normal: "menu_newNavigator", private: "menu_newPrivateWindow" }, + { normal: "appmenu_newNavigator", private: "appmenu_newPrivateWindow" }, + ].forEach(function(menu) { + let newWindow = privateWin.document.getElementById(menu.normal); + let newPrivateWindow = privateWin.document.getElementById(menu.private); + if (newWindow && newPrivateWindow) { + ok(!newPrivateWindow.hidden, "New Private Window menu item should be hidden"); + isnot(newWindow.label, newPrivateWindow.label, "New Window's label shouldn't be overwritten"); + isnot(newWindow.accessKey, newPrivateWindow.accessKey, "New Window's accessKey shouldn't be overwritten"); + isnot(newWindow.command, newPrivateWindow.command, "New Window's command shouldn't be overwritten"); + } + }); + privateWin.close(); - finish(); + + Services.prefs.setBoolPref("browser.privatebrowsing.autostart", true); + privateWin = OpenBrowserWindow({private: true}); + whenDelayedStartupFinished(privateWin, function() { + [ + { normal: "menu_newNavigator", private: "menu_newPrivateWindow" }, + { normal: "appmenu_newNavigator", private: "appmenu_newPrivateWindow" }, + ].forEach(function(menu) { + let newWindow = privateWin.document.getElementById(menu.normal); + let newPrivateWindow = privateWin.document.getElementById(menu.private); + if (newWindow && newPrivateWindow) { + ok(newPrivateWindow.hidden, "New Private Window menu item should be hidden"); + is(newWindow.label, newPrivateWindow.label, "New Window's label should be overwritten"); + is(newWindow.accessKey, newPrivateWindow.accessKey, "New Window's accessKey should be overwritten"); + is(newWindow.command, newPrivateWindow.command, "New Window's command should be overwritten"); + } + }); + + privateWin.close(); + Services.prefs.clearUserPref("browser.privatebrowsing.autostart"); + finish(); + }); }); }