home *** CD-ROM | disk | FTP | other *** search
/ GameStar 2005 October / Gamestar_77_2005-10_dvd.iso / Programy / nsb-install-8-0.exe / chrome / browser.jar / content / browser / pref / pref-privacy.js < prev    next >
Encoding:
Text File  |  2005-07-29  |  11.9 KB  |  288 lines

  1.  
  2.  
  3. var _elementIDs = ["histDay", "browserCacheDiskCache", "cookieBehavior",
  4. // MERC (DP):      "enableCookies", "enableCookiesForOriginatingSiteOnly",
  5.                    "historyClearOnExit", "searchClearOnExit", "downloadsClearOnExit", 
  6.                    "cacheClearOnExit", "networkCookieLifetime",
  7. // MERC JVL        "enableFormFill", "enablePasswords", 
  8.                    "downloadsRetentionPolicy"];
  9.  
  10. function Startup() {
  11.     search.Init();
  12.  
  13.   // Initially disable the clear buttons when needed
  14.   var globalHistory = Components.classes["@mozilla.org/browser/global-history;2"].getService(Components.interfaces.nsIBrowserHistory);
  15.   document.getElementById("history").setAttribute("cleardisabled", globalHistory.count == 0);
  16.   
  17.   // MERC - JCH: This is the only way I could find to check search history. Also, seems 
  18.   // the search history array never has length 0. So size 1 means it's empty.
  19.   var sarray = search.ReadSearchHistory();
  20.   document.getElementById("search").setAttribute("cleardisabled", sarray.length < 2);
  21.  
  22.  
  23.   var cookieMgr = Components.classes["@mozilla.org/cookiemanager;1"].getService();
  24.   cookieMgr = cookieMgr.QueryInterface(Components.interfaces.nsICookieManager);
  25.   var e = cookieMgr.enumerator;
  26.   document.getElementById("cookies").setAttribute("cleardisabled", !e.hasMoreElements());
  27.  
  28.   var passwdMgr = Components.classes["@mozilla.org/passwordmanager;1"].getService();
  29.   passwdMgr = passwdMgr.QueryInterface(Components.interfaces.nsIPasswordManager);
  30.   e = passwdMgr.enumerator;
  31.   document.getElementById("passwords").setAttribute("cleardisabled", !e.hasMoreElements());
  32.  
  33.   try {
  34.     e = PrivacyPanel.getDownloads();
  35.     var hasDownloads = e.hasMoreElements();
  36.   }
  37.   catch (e) {
  38.     hasDownloads = false;
  39.   }
  40.   document.getElementById("downloads").setAttribute("cleardisabled", !hasDownloads);
  41.   
  42.   //var formHistory = Components.classes["@mozilla.org/satchel/form-history;1"]
  43.   //                            .getService(Components.interfaces.nsIFormHistory);
  44.   //document.getElementById("formfill").setAttribute("cleardisabled", formHistory.rowCount == 0);
  45.   try {
  46.     var afDataMgr = Components.classes["autofill_datamgr.1"].getService();
  47.     dump("afDataMgr1:"+afDataMgr+"\n");
  48.     afDataMgr = afDataMgr.QueryInterface(Components.interfaces.nsIAFDataMgr);
  49.     dump("afDataMgr2:"+afDataMgr+"\n");
  50.     afDataMgr.readMainData();  
  51.   }
  52.   catch (e) {
  53.     document.getElementById("formfill").setAttribute("cleardisabled", null);
  54.   }
  55.   
  56.   // set up the pref checkboxes according to the network.cookie.cookieBehavior pref
  57.   // 0: enabled
  58.   // 1: enabled for originating website only
  59.   // 2: disabled
  60.   var cookieBehavior = document.getElementById("cookieBehavior").getAttribute("value");
  61.   //document.getElementById("enableCookies").checked = cookieBehavior != 2;
  62.   //document.getElementById("enableCookiesForOriginatingSiteOnly").checked = cookieBehavior == 1;
  63.   updateCookieBroadcaster();
  64.  
  65.   var categories = document.getElementById("privacyCategories");
  66.   categories.addEventListener("clear", PrivacyPanel.clear, false);
  67.  
  68.   // XXXben - we do this because of a bug with the download retention window menulist. 
  69.   // The bug is that when the Options dialog opens, or you switch from another panel to
  70.   // this panel, style is incompletely resolved on the menulist's display area anonymous
  71.   // content - it is resolved on the all a/c subcomponents *except* menulist-label (the
  72.   // text nodes)... and (as a result, I think) when style is resolved later as the menulist
  73.   // goes from visbility: collapse to being visible, the menulist-label has the wrong parent
  74.   // style context which causes the style context parent checking to complain heartily. The
  75.   // symptom is that the menulist is not initialized with the currently selected value from
  76.   // preferences. I suspect this is related to the fact that the menulist is inserted into
  77.   // an XBL insertion point, as this problem does not occur when the menulist is placed outside
  78.   // the bound element. dbaron is helping me with this with a reduced test case, but in 
  79.   // the meantime, I'm working around this bug by placing the menulist outside the bound element
  80.   // until it is completely initialized and then scooting it in, which is what this code does. 
  81.   var drb = document.getElementById("downloadsRetentionBox");
  82.   var drp = document.getElementById("downloadsRetentionPolicy");
  83.   drp.removeAttribute("hidden");
  84.   document.documentElement.removeChild(drp);
  85.   drb.appendChild(drp);
  86.   
  87.   setMasterPasswordButtonLabel();
  88.  
  89.   var prefServ = Components.classes["@mozilla.org/preferences-service;1"]
  90.                            .getService(Components.interfaces.nsIPrefBranch);
  91.   anonmodeToggle(prefServ.getBoolPref("privacy.anonMode.enabled"));
  92. }
  93.  
  94. function unload()
  95. {
  96.   var categories = document.getElementById("privacyCategories");
  97.   for (var i = 0; i < categories.childNodes.length; ++i) {
  98.     var expander = categories.childNodes[i];
  99.     document.persist(expander.id, "open");
  100.   }  
  101. }
  102.  
  103. function cookieViewerOnPrefsOK()
  104. {
  105.   var dataObject = parent.hPrefWindow.wsm.dataManager.pageData["chrome://browser/content/cookieviewer/CookieViewer.xul"].userData;
  106.   if ('deletedCookies' in dataObject) {
  107.     var cookiemanager = Components.classes["@mozilla.org/cookiemanager;1"].getService();
  108.     cookiemanager = cookiemanager.QueryInterface(Components.interfaces.nsICookieManager);
  109.  
  110.     for (var p = 0; p < dataObject.deletedCookies.length; ++p) {
  111.       cookiemanager.remove(dataObject.deletedCookies[p].host,
  112.                            dataObject.deletedCookies[p].name,
  113.                            dataObject.deletedCookies[p].path,
  114.                            dataObject.cookieBool);
  115.     }
  116.   }
  117. }
  118.  
  119.  
  120. function viewCookies() 
  121. {
  122.   window.openDialog("chrome://browser/content/cookieviewer/CookieViewer.xul","_blank",
  123.                     "chrome,resizable=yes", "cookieManager");
  124. }
  125.  
  126. function viewCookieExceptions()
  127. {
  128.   var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
  129.                      .getService(Components.interfaces.nsIWindowMediator);
  130.   var existingWindow = wm.getMostRecentWindow("exceptions");
  131.   if (existingWindow) {
  132.     existingWindow.setHost("");
  133.     existingWindow.focus();
  134.   }
  135.   else {
  136.     var params = { blockVisible   : true,
  137.                    sessionVisible : true,
  138.                    allowVisible   : true,
  139.                    prefilledHost  : "",
  140.                    permissionType : "cookie" };
  141.     window.openDialog("chrome://browser/content/cookieviewer/CookieExceptions.xul",
  142.                       "_blank", "chrome,modal,resizable=yes", params);
  143.   }
  144. }
  145.  
  146. function viewSignons() 
  147. {
  148.   // MERC JVL BEGIN
  149.   //var prefServ = Components.classes["@mozilla.org/preferences-service;1"]
  150.   //                         .getService(Components.interfaces.nsIPrefBranch);
  151.   //prefServ.setCharPref('browser.preferences.formfillORpasscard', 'passcardtab');
  152.   //window.top.switchPage('catFormFillButton');
  153.   window.openDialog("chrome://mozapps/content/autofill/pref-passcards.xul","_blank",
  154.                     "chrome,resizable=yes", "8");
  155. //  window.openDialog("chrome://passwordmgr/content/passwordManager.xul","_blank",
  156. //                    "chrome,resizable=yes", "8");
  157.   // MERC END
  158. }
  159.  
  160. function updateCookieBehavior()
  161. {
  162.   var cookiesEnabled = document.getElementById("enableCookies").checked;
  163.   var cookiesOriginating = document.getElementById("enableCookiesForOriginatingSiteOnly").checked;
  164.   document.getElementById("cookieBehavior").setAttribute("value", cookiesEnabled ? (cookiesOriginating ? 1 : 0) : 2);
  165. }
  166.  
  167. function updateCookieBroadcaster()
  168. {
  169.     return; // MERC (ccampbell)
  170.   cookieBehaviorIsLocked = parent.hPrefWindow.getPrefIsLocked("network.cookie.cookieBehavior");
  171.   cookieLifetimeIsLocked = parent.hPrefWindow.getPrefIsLocked("network.cookie.lifetimePolicy");
  172.  
  173.   var broadcaster = document.getElementById("cookieBroadcaster");
  174.   var checkbox    = document.getElementById("enableCookies");
  175.   var radiogroup  = document.getElementById("networkCookieLifetime");
  176.   if (!checkbox.checked) {
  177.     broadcaster.setAttribute("disabled", "true");
  178.     document.getElementById("enableCookiesForOriginatingSiteOnly").checked = false;
  179.     radiogroup.setAttribute("disabled", "true");
  180.   }
  181.   else {
  182.     broadcaster.removeAttribute("disabled");
  183.     if (!cookieLifetimeIsLocked)
  184.       radiogroup.removeAttribute("disabled");
  185.   }
  186.   if (cookieBehaviorIsLocked) {
  187.     checkbox.setAttribute("disabled", "true");
  188.     broadcaster.setAttribute("disabled", "true");
  189.   }
  190. }
  191.  
  192. function onPrefsOK()
  193. {
  194.   var permissionmanager = Components.classes["@mozilla.org/permissionmanager;1"].getService();
  195.   permissionmanager = permissionmanager.QueryInterface(Components.interfaces.nsIPermissionManager);
  196.  
  197.   var dataObject = parent.hPrefWindow.wsm.dataManager.pageData["chrome://browser/content/cookieviewer/CookieExceptions.xul"].userData;
  198.   if ('deletedPermissions' in dataObject) {
  199.     for (var p = 0; p < dataObject.deletedPermissions.length; ++p) {
  200.       permissionmanager.remove(dataObject.deletedPermissions[p].host, dataObject.deletedPermissions[p].type);
  201.     }
  202.   }
  203.   
  204.   if ('permissions' in dataObject) {
  205.     var uri = Components.classes["@mozilla.org/network/standard-url;1"]
  206.                         .createInstance(Components.interfaces.nsIURI);    
  207.  
  208.     for (p = 0; p < dataObject.permissions.length; ++p) {
  209.       uri.spec = dataObject.permissions[p].host;
  210.       if (permissionmanager.testPermission(uri, "cookie") != dataObject.permissions[p].perm)
  211.         permissionmanager.add(uri, "cookie", dataObject.permissions[p].perm);
  212.     }
  213.   }
  214. }
  215.  
  216. function unexpandOld(event)
  217. {
  218.   var box = document.getElementById("privacyCategories");
  219.   var newExpander = event.originalTarget.parentNode.parentNode;
  220.   for (var i = 0; i < box.childNodes.length; ++i) {
  221.     if (box.childNodes[i] != newExpander && box.childNodes[i].getAttribute("open"))
  222.       box.childNodes[i].open = false;
  223.   }
  224. }
  225.  
  226. function changeMasterPassword()
  227. {
  228.     // MERC JVL BEGIN
  229.     var title = "Set Master Password";
  230.     var pk11dbService = Components.classes["@mozilla.org/security/pk11tokendb;1"].getService(Components.interfaces.nsIPK11TokenDB);
  231.     if (pk11dbService)
  232.     {
  233.         var tokenName = "";
  234.         var token = pk11dbService.findTokenByName(tokenName);
  235.         if (token)
  236.         {
  237.             if (token.needsLogin())
  238.                 title = "Change Master Password";
  239.         }
  240.     }
  241.     // MERC END
  242.  
  243.   window.openDialog("chrome://browser/content/pref/pref-masterpass.xul","",
  244.                     "chrome,centerscreen,modal,resizable=yes", title);                // MERC JVL
  245.   setMasterPasswordButtonLabel();
  246. }
  247.  
  248. function setMasterPasswordButtonLabel()
  249. {
  250.   // see if there's a master password and set the button label accordingly
  251.   const nsPKCS11ModuleDB = "@mozilla.org/security/pkcs11moduledb;1";
  252.   const nsIPKCS11ModuleDB = Components.interfaces.nsIPKCS11ModuleDB;
  253.   const nsIPKCS11Slot = Components.interfaces.nsIPKCS11Slot;
  254.  
  255.   var secmoddb = Components.classes[nsPKCS11ModuleDB].getService(nsIPKCS11ModuleDB);
  256.   var slot = secmoddb.findSlotByName("");
  257.  
  258.   if (slot) {
  259.     var status = slot.status;
  260.     var masterPasswordBtn = document.getElementById("masterPasswordBtn");
  261.     var privacyBundle = document.getElementById("privacyBundle");
  262.     var buttonLabel = "";
  263.     if (status == nsIPKCS11Slot.SLOT_UNINITIALIZED
  264.       || status == nsIPKCS11Slot.SLOT_READY) {
  265.  
  266.       buttonLabel = privacyBundle.getString("setMasterPassword");
  267.       masterPasswordBtn.setAttribute("label",buttonLabel);
  268.     } else {
  269.       buttonLabel = privacyBundle.getString("changeMasterPassword");
  270.       masterPasswordBtn.setAttribute("label",buttonLabel);
  271.     }
  272.   }
  273. }
  274.  
  275. function anonmodeToggle(value) {
  276.     if (value) {
  277.         document.getElementById('historyClearOnExit').setAttribute('disabled','true');
  278.         document.getElementById('searchClearOnExit').setAttribute('disabled','true');
  279.         document.getElementById('downloadsClearOnExit').setAttribute('disabled','true');
  280.         document.getElementById('cacheClearOnExit').setAttribute('disabled','true');
  281.     } else {
  282.         document.getElementById('historyClearOnExit').removeAttribute('disabled');
  283.         document.getElementById('searchClearOnExit').removeAttribute('disabled');
  284.         document.getElementById('downloadsClearOnExit').removeAttribute('disabled');
  285.         document.getElementById('cacheClearOnExit').removeAttribute('disabled');
  286.     }
  287. }
  288.