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-utils.js < prev    next >
Encoding:
Text File  |  2005-07-29  |  15.7 KB  |  459 lines

  1.  
  2.  
  3. //Merc, SLiu , blocking message processing when clear action is in process
  4. const nsIAppShellService = Components.interfaces.nsIAppShellService;
  5. var gAppShellService=null;
  6. const nsIInternetSearchService = Components.interfaces.nsIInternetSearchService;
  7. var gSearchService=null;
  8.  
  9. var PrivacyPanel;
  10. if (!PrivacyPanel) {
  11.  
  12. dump("Initing PRIVACYPANEL\n");
  13.  
  14. PrivacyPanel = {
  15.  
  16.   /*
  17.   confirm: function (aTitle, aMessage, aActionButtonLabel)
  18.   {
  19.     var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"].getService(Components.interfaces.nsIPromptService);
  20.  
  21.     var flags = promptService.BUTTON_TITLE_IS_STRING * promptService.BUTTON_POS_0;
  22.     flags += promptService.BUTTON_TITLE_CANCEL * promptService.BUTTON_POS_1;
  23.  
  24.     rv = promptService.confirmEx(window, aTitle, aMessage, flags, aActionButtonLabel, null, null, null, { value: 0 });
  25.     return rv == 0;
  26.   },
  27.   */
  28.   privacyBundle: function()
  29.   {
  30.     return document.getElementById("privacyBundle");
  31.   },
  32.  
  33.   prefService: function()
  34.   {
  35.     return Components.classes["@mozilla.org/preferences-service;1"]
  36.                      .getService(Components.interfaces.nsIPrefBranch);
  37.   },
  38.  
  39.   clear: function (aEvent) {
  40.     if (aEvent.target.localName != "expander") 
  41.       return;
  42.     
  43.     // MERC (DP): disable clear button only onOK of confirm dialog
  44.     if(PrivacyPanel.clearData[aEvent.target.id]())
  45.       aEvent.target.setAttribute("cleardisabled", "true");
  46.   },
  47.   
  48.   // clear all histories
  49.   clearAll: function (disableButtons) {
  50.     dump("\nclear all of pref-privacy-utils.js called...\n\n");
  51.       
  52.     var title = PrivacyPanel.privacyBundle().getString("clearTitle");
  53.     var msg = PrivacyPanel.privacyBundle().getString("clearAllConfirm");
  54.     if(this.confirm(title, msg)) {
  55.       // call every clear function in privacy panel
  56.       for (var fn in this.clearData) {
  57.  
  58.         var funcName = fn.toString();
  59.  
  60.         // MERC - JCH: Do not clear these two as per PRD 1.9.3 (10.12.9)
  61.         if(funcName == "formfill" || funcName == "passwords")
  62.             continue;
  63.  
  64.         this.clearData[fn](true);
  65.         if(disableButtons)
  66.           document.getElementById(fn).setAttribute("cleardisabled", "true");
  67.       }
  68.     }
  69.   },
  70.   
  71.   getDownloads: function() {
  72.     var dlMgr = Components.classes["@mozilla.org/download-manager;1"].getService(Components.interfaces.nsIDownloadManager);
  73.     var ds = dlMgr.datasource;
  74.     
  75.     var rdfs = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
  76.     var root = rdfs.GetResource("NC:DownloadsRoot");
  77.     
  78.     var rdfc = Components.classes["@mozilla.org/rdf/container;1"].createInstance(Components.interfaces.nsIRDFContainer);
  79.     rdfc.Init(ds, root);
  80.   
  81.     return rdfc.GetElements();
  82.   },
  83.   
  84.   confirm: function(aTitle, aMessage) {
  85.     if(!PrivacyPanel.prefService().getBoolPref("clearhistories.button.dialog")) {
  86.       var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
  87.                                     .getService(Components.interfaces.nsIPromptService);
  88.       
  89.       var checkResult = {};
  90.       var result = promptService.confirmCheck(window,
  91.                                            aTitle,
  92.                                            aMessage,
  93.                                            "Don't show this message again",
  94.                                            checkResult);
  95.       
  96.       // (ccampbell) As per BLT Bug #133350, this pref should not be set
  97.       // if the user cancels the dialog
  98.       if (result && checkResult.value)
  99.         PrivacyPanel.prefService()
  100.                     .setBoolPref("clearhistories.button.dialog", true);
  101.       
  102.       return result;
  103.     }
  104.     return true;
  105.   },
  106.   
  107.   clearData: { 
  108.     // The names of these functions match the id of the expander in the XUL file that correspond
  109.     // to them. 
  110.     // clear page history
  111.  
  112.     history: function (suppressConfirm)
  113.     {
  114.       dump("\nPref-privacy-utils.js: clear history of pref-privacy-utils.js called...\n");
  115.       
  116.       var result = true;
  117.       if(!suppressConfirm) {
  118.         var title = PrivacyPanel.privacyBundle().getString("clearTitle");
  119.         var msg = PrivacyPanel.privacyBundle().getString("clearPageHistoryConfirm");
  120.         result = PrivacyPanel.confirm(title, msg);
  121.       }
  122.  
  123.       if(result) {
  124.         var globalHistory = Components.classes["@mozilla.org/browser/global-history;2"]
  125.                                       .getService(Components.interfaces.nsIBrowserHistory);
  126.         globalHistory.removeAllPages();
  127.   
  128.         var os = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
  129.         os.notifyObservers(null, "browser:purge-session-history", "");
  130.         
  131.         return true;
  132.       }
  133.     
  134.       return false;
  135.     },
  136.     
  137.     // clear search history
  138.     search: function (suppressConfirm)
  139.     {
  140.       dump("\nclear search of pref-privacy-utils.js called...\n\n");
  141.  
  142.       // MERC - JCH: Needed for clearing search history
  143.       // DON'T MAKE THESE VARS GLOBAL UNLESS YOU WANT TO CHANGE clearAll() ABOVE.
  144.       var profileDir = null;
  145.       var PR_RDONLY = 1;
  146.       var SEARCH_HISTORY_FILE = "search-history.txt";
  147.  
  148.       var result = true;
  149.       if(!suppressConfirm) {
  150.         var title = PrivacyPanel.privacyBundle().getString("clearTitle");
  151.         var msg = PrivacyPanel.privacyBundle().getString("clearSearchHistoryConfirm");
  152.         result = PrivacyPanel.confirm(title, msg);
  153.       }
  154.       
  155.       if(result) {
  156.         
  157.         /*if (!gSearchService)
  158.         {
  159.            gSearchService = Components.classes["@mozilla.org/rdf/datasource;1?name=internetsearch"]
  160.                                       .getService(Components.interfaces.nsIInternetSearchService);
  161.         }
  162.         if(gSearchService)
  163.         {
  164.            gSearchService.ClearResults(true);
  165.             gSearchService.ClearResultSearchSites();
  166.         }
  167.         */
  168.  
  169.  
  170.         // MERC - JCH: The following was purloined from search.js in order to delete search history.
  171.         // Get the user's profile directory
  172.         if (!profileDir) {
  173.              profileDir = Components.classes["@mozilla.org/file/directory_service;1"]
  174.                                         .getService(Components.interfaces.nsIProperties)
  175.                                         .get("ProfD", Components.interfaces.nsILocalFile);
  176.         }
  177.  
  178.         if (!profileDir)
  179.           return false;
  180.  
  181.         var file = profileDir.clone();
  182.         file.append(SEARCH_HISTORY_FILE);
  183.  
  184.         if (file.exists()) {
  185.             // Init the file input stream
  186.             var fis = Components.classes["@mozilla.org/network/file-input-stream;1"]
  187.                                 .createInstance(Components.interfaces.nsIFileInputStream);
  188.             fis.init(file, PR_RDONLY, 0,
  189.                      Components.interfaces.nsIFileInputStream.DELETE_ON_CLOSE);
  190.             fis.close();
  191.         }
  192.      
  193.         return true;
  194.       }
  195.       return false;
  196.     },
  197.  
  198.   
  199.     // clear cache
  200.     cache: function (suppressConfirm)
  201.     {
  202.       dump("\nclear cache of pref-privacy-utils.js called...\n\n");
  203.       function clearCacheOfType(aType)
  204.       {
  205.         var classID = Components.classes["@mozilla.org/network/cache-service;1"];
  206.         if (!classID)
  207.             return;
  208.         var cacheService = classID.getService(Components.interfaces.nsICacheService);
  209.         if (!cacheService)
  210.             return;
  211.         cacheService.evictEntries(aType);
  212.       }
  213.  
  214.       var result = true;
  215.       if(!suppressConfirm) {
  216.         var title = PrivacyPanel.privacyBundle().getString("clearTitle");
  217.         var msg = PrivacyPanel.privacyBundle().getString("clearCacheConfirm");
  218.         result = PrivacyPanel.confirm(title, msg);
  219.       }
  220.       
  221.       if(result) {
  222.         clearCacheOfType(Components.interfaces.nsICache.STORE_ON_DISK);
  223.         clearCacheOfType(Components.interfaces.nsICache.STORE_IN_MEMORY);
  224.         
  225.         return true;
  226.       }
  227.       return false;
  228.     },
  229.     
  230.     // clear cookies
  231.     cookies: function (suppressConfirm)
  232.     { 
  233.       dump("\nclear cookies of pref-privacy-utils.js called...\n\n");
  234.  
  235.       var result = true;
  236.       if(!suppressConfirm) {
  237.         var title = PrivacyPanel.privacyBundle().getString("clearTitle");
  238.         var msg = PrivacyPanel.privacyBundle().getString("clearCookieConfirm");
  239.         result = PrivacyPanel.confirm(title, msg);
  240.       }
  241.       
  242.       if(result) {
  243.         var cookieMgr = Components.classes["@mozilla.org/cookiemanager;1"].getService();
  244.         cookieMgr = cookieMgr.QueryInterface(Components.interfaces.nsICookieManager);
  245.   
  246.         var e = cookieMgr.enumerator;
  247.         var cookies = [];
  248.         while (e.hasMoreElements()) {
  249.           var cookie = e.getNext().QueryInterface(Components.interfaces.nsICookie);
  250.           cookies.push(cookie);
  251.         }
  252.   
  253.         for (var i = 0; i < cookies.length; ++i)
  254.           cookieMgr.remove(cookies[i].host, cookies[i].name, cookies[i].path, false);
  255.         
  256.         cookieMgr.removeAll();
  257.   
  258.         return true;
  259.       }
  260.       return false;
  261.     },
  262.     
  263.     // clear formfill
  264.     formfill: function (suppressConfirm)
  265.     {
  266.       dump("\nclear formfill of pref-privacy-utils.js called...\n\n");   
  267.  
  268.       if (!suppressConfirm) {
  269.         var title = PrivacyPanel.privacyBundle().getString("clearTitle");
  270.         var msg = PrivacyPanel.privacyBundle().getString("clearDatacardManagerConfirm");
  271.         if (!PrivacyPanel.confirm(title, msg)) return false;
  272.       }
  273.       
  274.       datacardUtils.DeleteAllDatacards();
  275.       return true;
  276.     },
  277.  
  278.     // clear download manager history
  279.     downloads: function (suppressConfirm)
  280.     { 
  281.       dump("\nclear downloads of pref-privacy-utils.js called...\n\n");
  282.  
  283.       var result = true;
  284.       if(!suppressConfirm) {
  285.         var title = PrivacyPanel.privacyBundle().getString("clearTitle");
  286.         var msg = PrivacyPanel.privacyBundle().getString("clearDownloadManagerHistoryConfirm");
  287.         result = PrivacyPanel.confirm(title, msg);
  288.       }
  289.       
  290.       if(result) {
  291.         var bFailed=false;
  292.         if(!gAppShellService)
  293.            gAppShellService=Components.classes["@mozilla.org/appshell/appShellService;1"].getService(Components.interfaces.nsIAppShellService);   
  294.         if(gAppShellService)
  295.            gAppShellService.enableWait(nsIAppShellService.keyPress + nsIAppShellService.mouseClick);   
  296.         var dlMgr = Components.classes["@mozilla.org/download-manager;1"].getService(Components.interfaces.nsIDownloadManager);
  297.         try {
  298.           var downloads = PrivacyPanel.getDownloads();
  299.         }
  300.         catch (e) {
  301.           bFailed=true;
  302.         }
  303.         if(!bFailed)
  304.         {
  305.            var rdfs = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
  306.            var state = rdfs.GetResource("http://home.netscape.com/NC-rdf#DownloadState");
  307.            var ds = dlMgr.datasource;
  308.            var dls = [];
  309.         
  310.            while (downloads.hasMoreElements()) 
  311.            {
  312.               var download = downloads.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
  313.               dls.push(download);
  314.            }
  315.            dlMgr.startBatchUpdate();
  316.            for (var i = 0; i < dls.length; ++i) 
  317.            {
  318.              try 
  319.              {
  320.                dlMgr.removeDownload(dls[i].Value);
  321.              }
  322.              catch (e) {}             
  323.            }
  324.            dlMgr.endBatchUpdate();  
  325.         }
  326.         if(gAppShellService)                                                                          
  327.            gAppShellService.disableWait();
  328.         
  329.         return true;
  330.       }
  331.       return false;     
  332.     },
  333.     // clear password manager history
  334.     passwords: function (suppressConfirm)
  335.     {
  336.       dump("\nclear passwords of pref-privacy-utils.js called...\n\n");
  337.       var result = true;
  338.       if(!suppressConfirm) {
  339.         var title = PrivacyPanel.privacyBundle().getString("clearTitle");
  340.         var msg = PrivacyPanel.privacyBundle().getString("clearPasscardManagerConfirm");
  341.         result = PrivacyPanel.confirm(title, msg);
  342.       }
  343.       
  344.       if(result) {  
  345.         if(!gAppShellService)
  346.            gAppShellService=Components.classes["@mozilla.org/appshell/appShellService;1"].getService(Components.interfaces.nsIAppShellService);   
  347.         if(gAppShellService)
  348.            gAppShellService.enableWait(nsIAppShellService.keyPress + nsIAppShellService.mouseClick);   
  349.   
  350.         var passwdMgr = Components.classes["@mozilla.org/passwordmanager;1"].getService();
  351.         passwdMgr = passwdMgr.QueryInterface(Components.interfaces.nsIPasswordManager);
  352.   
  353.         var e = passwdMgr.enumerator;
  354.         var passwds = [];
  355.         while (e.hasMoreElements()) 
  356.         {
  357.            var passwd = e.getNext().QueryInterface(Components.interfaces.nsIPassword);
  358.            passwds.push(passwd);
  359.         }
  360.           
  361.         for (var i = 0; i < passwds.length; ++i)
  362.            passwdMgr.removeUser(passwds[i].host, passwds[i].user);        
  363.   
  364.         if(gAppShellService)                                                                          
  365.            gAppShellService.disableWait();
  366.         
  367.         return true;
  368.       }
  369.       return false;
  370.     }
  371.   }  
  372. }
  373. }
  374.  
  375. // MERC - Brad Lewis - created for nav bar button Clear History (with no Privacy Panel button updated)
  376. // MERC (DP): deprecated
  377. function clearHistoryClearAll() 
  378. {
  379.   dump("\nclearHistoryClearAll pref-privacy-utils.js called...\n\n");
  380.     
  381.   var title = PrivacyPanel.privacyBundle().getString("clearTitle");
  382.   var msg = PrivacyPanel.privacyBundle().getString("clearAllConfirm");
  383.   if(PrivacyPanel.confirm(title, msg)) {
  384.     // call every clear function in privacy panel
  385.     for (var fn in PrivacyPanel.clearData) {
  386.       PrivacyPanel.clearData[fn](true);
  387.     }
  388.   }
  389. }
  390.  
  391. function enableAnonymousMode()
  392. {
  393.          
  394.     var displayAnonMsg = PrivacyPanel.prefService().getBoolPref("privacy.displayAnonModeMsg");
  395.         
  396.     if (displayAnonMsg){
  397.         
  398.         // get service to display dialog box explaining what Anonymous Mode does
  399.         var promptService =
  400.                 Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
  401.                           .getService(Components.interfaces.nsIPromptService);
  402.         
  403.         //default to true: if it were false, we wouldn't get this far
  404.         var displayAnonModeMsg = {value:true};
  405.     
  406.         // display dialog box
  407.         var buttonPressed = promptService.confirmEx(    window,
  408.             gNavigatorBundle.getString('clearHistory.anonModeMsgTitle'),
  409.             gNavigatorBundle.getString('clearHistory.anonModeMsg'),
  410.             (promptService.BUTTON_TITLE_IS_STRING * promptService.BUTTON_POS_0)
  411.                 + (promptService.BUTTON_TITLE_CANCEL * promptService.BUTTON_POS_1),
  412.                 gNavigatorBundle.getString('clearHistory.anonModeMsgButton'),
  413.                 null, 
  414.                 null,
  415.                 gNavigatorBundle.getString('clearHistory.anonModePromptMe'),
  416.                 displayAnonModeMsg);
  417.         
  418.         var continuePressed = 0;  
  419.         // var cancelPressed = 1;
  420.         
  421.         if (buttonPressed == continuePressed) {
  422.             if(displayAnonModeMsg.value == false) {
  423.                 // set profile variable
  424.                 dump("\nTurning off displayAnonModeMsg message...\n\n");
  425.                 PrivacyPanel.prefService().setBoolPref("privacy.displayAnonModeMsg", false);
  426.                 
  427.             }
  428.             dump("\nEnabling Anonymous mode...\n\n");
  429.             PrivacyPanel.prefService().setBoolPref("privacy.anonMode.enabled",true);
  430.         } // if continue button pressed
  431.         
  432.     } else {
  433.         
  434.         dump("\nEnabling Anonymous mode...\n\n");
  435.         PrivacyPanel.prefService().setBoolPref("privacy.anonMode.enabled",true);
  436.     } // if not diplaying anonymous mode message
  437. }
  438. // END MERC - Brad Lewis
  439.  
  440. function disableAnonymousMode() {    
  441.       //  dump("\nDisabling Anonymous mode...\n\n");
  442.         PrivacyPanel.prefService().setBoolPref("privacy.anonMode.enabled",false);
  443. }
  444.  
  445. function toggleAnonymousMode() {
  446.     var isSet = PrivacyPanel.prefService().getBoolPref("privacy.anonMode.enabled");
  447.     if (isSet) {
  448.         disableAnonymousMode();    
  449.     } else {
  450.         enableAnonymousMode();    
  451.     }
  452.     
  453.     /*
  454.     var button = document.getElementById("clearHistoryAnonymousMode");
  455.     if (!button) return;
  456.       button.checked = isSet;
  457.       */
  458.       
  459. }