toolkit/content/globalOverlay.js

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     1 /* This Source Code Form is subject to the terms of the Mozilla Public
     2  * License, v. 2.0. If a copy of the MPL was not distributed with this
     3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     5 function closeWindow(aClose, aPromptFunction)
     6 {
     7 # Closing the last window doesn't quit the application on OS X.
     8 #ifndef XP_MACOSX
     9   var windowCount = 0;
    10   var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
    11                      .getService(Components.interfaces.nsIWindowMediator);
    12   var e = wm.getEnumerator(null);
    14   while (e.hasMoreElements()) {
    15     var w = e.getNext();
    16     if (w.closed) {
    17       continue;
    18     }
    19     if (++windowCount == 2) 
    20       break;
    21   }
    23   // If we're down to the last window and someone tries to shut down, check to make sure we can!
    24   if (windowCount == 1 && !canQuitApplication("lastwindow"))
    25     return false;
    26   else if (windowCount != 1)
    27 #endif
    28     if (typeof(aPromptFunction) == "function" && !aPromptFunction())
    29       return false;
    31   if (aClose)    
    32     window.close();
    34   return true;
    35 }
    37 function canQuitApplication(aData)
    38 {
    39   var os = Components.classes["@mozilla.org/observer-service;1"]
    40                      .getService(Components.interfaces.nsIObserverService);
    41   if (!os) return true;
    43   try {
    44     var cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"]
    45                               .createInstance(Components.interfaces.nsISupportsPRBool);
    46     os.notifyObservers(cancelQuit, "quit-application-requested", aData || null);
    48     // Something aborted the quit process. 
    49     if (cancelQuit.data)
    50       return false;
    51   }
    52   catch (ex) { }
    53   return true;
    54 }
    56 function goQuitApplication()
    57 {
    58   if (!canQuitApplication())
    59     return false;
    61   var appStartup = Components.classes['@mozilla.org/toolkit/app-startup;1'].
    62                      getService(Components.interfaces.nsIAppStartup);
    64   appStartup.quit(Components.interfaces.nsIAppStartup.eAttemptQuit);
    65   return true;
    66 }
    68 //
    69 // Command Updater functions
    70 //
    71 function goUpdateCommand(aCommand)
    72 {
    73   try {
    74     var controller = top.document.commandDispatcher
    75                         .getControllerForCommand(aCommand);
    77     var enabled = false;
    78     if (controller)
    79       enabled = controller.isCommandEnabled(aCommand);
    81     goSetCommandEnabled(aCommand, enabled);
    82   }
    83   catch (e) {
    84     Components.utils.reportError("An error occurred updating the " +
    85                                  aCommand + " command: " + e);
    86   }
    87 }
    89 function goDoCommand(aCommand)
    90 {
    91   try {
    92     var controller = top.document.commandDispatcher
    93                         .getControllerForCommand(aCommand);
    94     if (controller && controller.isCommandEnabled(aCommand))
    95       controller.doCommand(aCommand);
    96   }
    97   catch (e) {
    98     Components.utils.reportError("An error occurred executing the " +
    99                                  aCommand + " command: " + e);
   100   }
   101 }
   104 function goSetCommandEnabled(aID, aEnabled)
   105 {
   106   var node = document.getElementById(aID);
   108   if (node) {
   109     if (aEnabled)
   110       node.removeAttribute("disabled");
   111     else
   112       node.setAttribute("disabled", "true");
   113   }
   114 }
   116 function goSetMenuValue(aCommand, aLabelAttribute)
   117 {
   118   var commandNode = top.document.getElementById(aCommand);
   119   if (commandNode) {
   120     var label = commandNode.getAttribute(aLabelAttribute);
   121     if (label)
   122       commandNode.setAttribute("label", label);
   123   }
   124 }
   126 function goSetAccessKey(aCommand, aValueAttribute)
   127 {
   128   var commandNode = top.document.getElementById(aCommand);
   129   if (commandNode) {
   130     var value = commandNode.getAttribute(aValueAttribute);
   131     if (value)
   132       commandNode.setAttribute("accesskey", value);
   133   }
   134 }
   136 // this function is used to inform all the controllers attached to a node that an event has occurred
   137 // (e.g. the tree controllers need to be informed of blur events so that they can change some of the
   138 // menu items back to their default values)
   139 function goOnEvent(aNode, aEvent)
   140 {
   141   var numControllers = aNode.controllers.getControllerCount();
   142   var controller;
   144   for (var controllerIndex = 0; controllerIndex < numControllers; controllerIndex++) {
   145     controller = aNode.controllers.getControllerAt(controllerIndex);
   146     if (controller)
   147       controller.onEvent(aEvent);
   148   }
   149 }
   151 function visitLink(aEvent) {
   152   var node = aEvent.target;
   153   while (node.nodeType != Node.ELEMENT_NODE)
   154     node = node.parentNode;
   155   var url = node.getAttribute("link");
   156   if (!url)
   157     return;
   159   var protocolSvc = Components.classes["@mozilla.org/uriloader/external-protocol-service;1"]
   160                               .getService(Components.interfaces.nsIExternalProtocolService);
   161   var ioService = Components.classes["@mozilla.org/network/io-service;1"]
   162                             .getService(Components.interfaces.nsIIOService);
   163   var uri = ioService.newURI(url, null, null);
   165   // if the scheme is not an exposed protocol, then opening this link
   166   // should be deferred to the system's external protocol handler
   167   if (protocolSvc.isExposedProtocol(uri.scheme)) {
   168     var win = window.top;
   169     if (win instanceof Components.interfaces.nsIDOMChromeWindow) {
   170       while (win.opener && !win.opener.closed)
   171         win = win.opener;
   172     }
   173     win.open(uri.spec);
   174   }
   175   else
   176     protocolSvc.loadUrl(uri);
   177 }
   179 function setTooltipText(aID, aTooltipText)
   180 {
   181   var element = document.getElementById(aID);
   182   if (element)
   183     element.setAttribute("tooltiptext", aTooltipText);
   184 }
   186 this.__defineGetter__("NS_ASSERT", function() {
   187   delete this.NS_ASSERT;
   188   var tmpScope = {};
   189   Components.utils.import("resource://gre/modules/debug.js", tmpScope);
   190   return this.NS_ASSERT = tmpScope.NS_ASSERT;
   191 });

mercurial