From afc32bca49fad3c13a4f6651a7dd5ce3931ba91f Mon Sep 17 00:00:00 2001 From: Ehsan Akhgari Date: Fri, 7 Nov 2008 00:10:05 +0330 Subject: [PATCH] Bug 463189 - Provide an easy method for theme developers to style the browser in private browsing mode; r=mconnor,gavin a1.9.1b2=mconnor --- browser/base/content/browser.js | 2 + browser/base/content/browser.xul | 1 + .../privatebrowsing/test/browser/Makefile.in | 1 + .../browser_privatebrowsing_theming.js | 67 +++++++++++++++++++ 4 files changed, 71 insertions(+) create mode 100644 browser/components/privatebrowsing/test/browser/browser_privatebrowsing_theming.js diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js index aa5b2fd9ce1f..222b6ab0a252 100644 --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js @@ -6840,6 +6840,7 @@ let gPrivateBrowsingUI = { docElement.setAttribute("titlemodifier", docElement.getAttribute("titlemodifier_privatebrowsing")); #endif + docElement.setAttribute("browsingmode", "private"); } else { // Disable the menu item in auto-start mode @@ -6868,6 +6869,7 @@ let gPrivateBrowsingUI = { docElement.setAttribute("titlemodifier", docElement.getAttribute("titlemodifier_normal")); #endif + docElement.setAttribute("browsingmode", "normal"); } else this._privateBrowsingAutoStarted = false; diff --git a/browser/base/content/browser.xul b/browser/base/content/browser.xul index b8a2c0e176aa..535d441acc46 100644 --- a/browser/base/content/browser.xul +++ b/browser/base/content/browser.xul @@ -74,6 +74,7 @@ titlemenuseparator="&mainWindow.titlemodifiermenuseparator;" windowtype="navigator:browser" screenX="4" screenY="4" + browsingmode="normal" persist="screenX screenY width height sizemode"> # All JS files which are not content (only) dependent that browser.xul diff --git a/browser/components/privatebrowsing/test/browser/Makefile.in b/browser/components/privatebrowsing/test/browser/Makefile.in index 8fee5c98829e..1fd1f8a92ae0 100644 --- a/browser/components/privatebrowsing/test/browser/Makefile.in +++ b/browser/components/privatebrowsing/test/browser/Makefile.in @@ -46,6 +46,7 @@ include $(topsrcdir)/config/rules.mk _BROWSER_TEST_FILES = \ browser_console_clear.js \ + browser_privatebrowsing_theming.js \ $(NULL) ifeq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT))) diff --git a/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_theming.js b/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_theming.js new file mode 100644 index 000000000000..9494d9f80470 --- /dev/null +++ b/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_theming.js @@ -0,0 +1,67 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Private Browsing Tests. + * + * The Initial Developer of the Original Code is + * Ehsan Akhgari. + * Portions created by the Initial Developer are Copyright (C) 2008 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Ehsan Akhgari (Original Author) + * + * Alternatively, the contents of this file may be used under the terms of + * either of the GNU General Public License Version 2 or later (the "GPL"), + * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +// This test makes sure that browsingmode attribute of the window is correctly +// switched with private browsing mode changes. + +function test() { + // initialization + let prefBranch = Cc["@mozilla.org/preferences-service;1"]. + getService(Ci.nsIPrefBranch); + prefBranch.setBoolPref("browser.privatebrowsing.keep_current_session", true); + let pb = Cc["@mozilla.org/privatebrowsing;1"]. + getService(Ci.nsIPrivateBrowsingService); + let docRoot = document.documentElement; + + is(docRoot.getAttribute("browsingmode"), "normal", + "browsingmode should be \"normal\" initially"); + + // enter private browsing mode + pb.privateBrowsingEnabled = true; + + is(docRoot.getAttribute("browsingmode"), "private", + "browsingmode should be \"private\" inside the private browsing mode"); + + // leave private browsing mode + pb.privateBrowsingEnabled = false; + + is(docRoot.getAttribute("browsingmode"), "normal", + "browsingmode should be \"normal\" outside the private browsing mode"); + + // cleanup + prefBranch.clearUserPref("browser.privatebrowsing.keep_current_session"); +}