forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			71 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
	
		
			2.4 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/. */
 | 
						|
 | 
						|
const kAutoStartPref = "browser.privatebrowsing.autostart";
 | 
						|
 | 
						|
// This will be set to true when the PB mode is autostarted from the command
 | 
						|
// line for the current session.
 | 
						|
var gTemporaryAutoStartMode = false;
 | 
						|
 | 
						|
export var PrivateBrowsingUtils = {
 | 
						|
  get enabled() {
 | 
						|
    return Services.policies.isAllowed("privatebrowsing");
 | 
						|
  },
 | 
						|
 | 
						|
  // Rather than passing content windows to this function, please use
 | 
						|
  // isBrowserPrivate since it works with e10s.
 | 
						|
  isWindowPrivate: function pbu_isWindowPrivate(aWindow) {
 | 
						|
    if (!aWindow.isChromeWindow) {
 | 
						|
      dump(
 | 
						|
        "WARNING: content window passed to PrivateBrowsingUtils.isWindowPrivate. " +
 | 
						|
          "Use isContentWindowPrivate instead (but only for frame scripts).\n" +
 | 
						|
          new Error().stack
 | 
						|
      );
 | 
						|
    }
 | 
						|
 | 
						|
    return this.privacyContextFromWindow(aWindow).usePrivateBrowsing;
 | 
						|
  },
 | 
						|
 | 
						|
  // This should be used only in frame scripts.
 | 
						|
  isContentWindowPrivate: function pbu_isWindowPrivate(aWindow) {
 | 
						|
    return this.privacyContextFromWindow(aWindow).usePrivateBrowsing;
 | 
						|
  },
 | 
						|
 | 
						|
  isBrowserPrivate(aBrowser) {
 | 
						|
    let chromeWin = aBrowser.ownerGlobal;
 | 
						|
    if (chromeWin.gMultiProcessBrowser || !aBrowser.contentWindow) {
 | 
						|
      // In e10s we have to look at the chrome window's private
 | 
						|
      // browsing status since the only alternative is to check the
 | 
						|
      // content window, which is in another process.  If the browser
 | 
						|
      // is lazy or is running in windowless configuration then the
 | 
						|
      // content window doesn't exist.
 | 
						|
      return this.isWindowPrivate(chromeWin);
 | 
						|
    }
 | 
						|
    return this.privacyContextFromWindow(aBrowser.contentWindow)
 | 
						|
      .usePrivateBrowsing;
 | 
						|
  },
 | 
						|
 | 
						|
  privacyContextFromWindow: function pbu_privacyContextFromWindow(aWindow) {
 | 
						|
    return aWindow.docShell.QueryInterface(Ci.nsILoadContext);
 | 
						|
  },
 | 
						|
 | 
						|
  get permanentPrivateBrowsing() {
 | 
						|
    try {
 | 
						|
      return (
 | 
						|
        gTemporaryAutoStartMode || Services.prefs.getBoolPref(kAutoStartPref)
 | 
						|
      );
 | 
						|
    } catch (e) {
 | 
						|
      // The pref does not exist
 | 
						|
      return false;
 | 
						|
    }
 | 
						|
  },
 | 
						|
 | 
						|
  // These should only be used from internal code
 | 
						|
  enterTemporaryAutoStartMode: function pbu_enterTemporaryAutoStartMode() {
 | 
						|
    gTemporaryAutoStartMode = true;
 | 
						|
  },
 | 
						|
  get isInTemporaryAutoStartMode() {
 | 
						|
    return gTemporaryAutoStartMode;
 | 
						|
  },
 | 
						|
};
 |