home *** CD-ROM | disk | FTP | other *** search
/ GameStar 2005 October / Gamestar_77_2005-10_dvd.iso / Programy / nsb-install-8-0.exe / chrome / toolkit.jar / content / mozapps / autofill / ChangeTimeoutDialog.js < prev    next >
Text File  |  2005-07-29  |  4KB  |  146 lines

  1. const nsPK11TokenDB = "@mozilla.org/security/pk11tokendb;1";
  2. const nsIPK11TokenDB = Components.interfaces.nsIPK11TokenDB;
  3. const nsIPK11Token = Components.interfaces.nsIPK11Token;
  4. const nsPrefService = "@mozilla.org/preferences-service;1";
  5. const nsIPrefService = Components.interfaces.nsIPrefBranch;
  6.  
  7. const masterPasswordPref = "masterpassword.timeout.init";
  8. const askForPref = "security.ask_for_password";
  9. const lifetimePref = "security.password_lifetime";
  10. const defaultTimeout = 120;
  11. const defaultTimeoutType = 1;
  12.  
  13. var gPK11Token = null;
  14. var gAskEveryTimeHidden = false;
  15. var gAskTimes = 0;
  16. var gTimeout = 0;
  17.  
  18. /*
  19. Defined in http://lxr.mozilla.org/aviarybranch/source/security/manager/ssl/public/nsIPK11Token.idl
  20. ASK_FIRST_TIME  =  0;
  21. ASK_EVERY_TIME  = -1;
  22. ASK_EXPIRE_TIME =  1;
  23. */
  24.  
  25. /*
  26.  * On Load
  27.  */
  28. function setTimeoutOnLoad()
  29. {
  30.     if (!GetPK11Token())
  31.         return;
  32.  
  33.     var prefService = Components.classes[nsPrefService].getService(nsIPrefService);
  34.     if (prefService &&
  35.         prefService.getPrefType(masterPasswordPref) == prefService.PREF_BOOL &&
  36.         prefService.getBoolPref(masterPasswordPref))
  37.     {
  38.         // retrieve the default values from security-prefs.js
  39.         // if this is the first time Master Password is used
  40.         gAskTimes = defaultTimeoutType;
  41.         gTimeout = defaultTimeout;
  42.  
  43.         if (prefService.getPrefType(askForPref) == prefService.PREF_INT)
  44.             gAskTimes = prefService.getIntPref(askForPref);
  45.         if (prefService.getPrefType(lifetimePref) == prefService.PREF_INT)
  46.             gTimeout = prefService.getIntPref(lifetimePref);
  47.  
  48.         // next time, retrieve the values from security token
  49.         prefService.setBoolPref(masterPasswordPref, false);
  50.     }
  51.     else
  52.     {
  53.         // retrieve the values from security token
  54.         gAskTimes = GetPK11Token().getAskPasswordTimes();
  55.         gTimeout = GetPK11Token().getAskPasswordTimeout();
  56.     }
  57.  
  58.     switch (gAskTimes) {
  59.         case nsIPK11Token.ASK_FIRST_TIME:  gAskTimes = 0; break;
  60. // MERC JVL - Bug in Mozilla? Remove for now.        case nsIPK11Token.ASK_EVERY_TIME:  gAskTimes = 1; break;
  61.         case nsIPK11Token.ASK_EXPIRE_TIME: gAskTimes = 2; break;
  62.     }
  63.     var radioitem;
  64.     switch (gAskTimes) {
  65.         case 0: radioitem = document.getElementById("askFirstTime"); break;
  66. // MERC JVL - Bug in Mozilla? Remove for now.        case 1: radioitem = document.getElementById("askEveryTime"); break;
  67.         case 2: radioitem = document.getElementById("askTimeout"); break;
  68.     }
  69.     var radiogroup = document.getElementById("passwordAskTimes");
  70.     radiogroup.selectedItem = radioitem;
  71.     var timeoutField = document.getElementById("passwordTimeout");
  72.     timeoutField.setAttribute("value", gTimeout);
  73.  
  74.     changePasswordSettings(false);
  75. }
  76.  
  77. /*
  78.  * Update state
  79.  */
  80. function changePasswordSettings(setFocus)
  81. {
  82.     var timeoutField = document.getElementById("passwordTimeout");
  83.     var radiogroup = document.getElementById("passwordAskTimes");
  84.     switch ( radiogroup.value ) {
  85.         case "0": 
  86.             timeoutField.setAttribute("disabled", true);
  87.             gAskTimes = nsIPK11Token.ASK_FIRST_TIME;
  88.             break;
  89. /* MERC JVL - Bug in Mozilla? Remove for now.
  90.         case "1": 
  91.             timeoutField.setAttribute("disabled", true);
  92.             gAskTimes = nsIPK11Token.ASK_EVERY_TIME;
  93.             break;
  94. */
  95.         case "2":
  96.             timeoutField.removeAttribute("disabled");
  97.             if ( setFocus ) {
  98.                 timeoutField.focus();
  99.             }
  100.             gTimeout = timeoutField.value;
  101.             var re = new RegExp("^[0-9]+$");
  102.             if (!re.test(gTimeout)) {
  103.                 gTimeout = "1";
  104.             }
  105.             gAskTimes = nsIPK11Token.ASK_EXPIRE_TIME;
  106.             break;
  107.     }
  108.  
  109. // MERC JVL - Bug in Mozilla? Remove for now.    gAskEveryTimeHidden = (radiogroup.value == 1) ? true : false;
  110. }
  111.  
  112. /*
  113.  * Handle OK
  114.  */
  115. function setTimeoutOnAccept()
  116. {
  117.     // save values in security token
  118.     GetPK11Token().setAskPasswordDefaults(gAskTimes, gTimeout);
  119.  
  120.     // set hidden elements in the caller window
  121.     var contentDoc = window.opener.document;
  122.     if (contentDoc)
  123.     {
  124.         var timeoutField = contentDoc.getElementById("passwordTimeout");
  125.         timeoutField.setAttribute("value", gTimeout);
  126.         var timeoutSelect = contentDoc.getElementById("passwordAskTimes");
  127.         timeoutSelect.setAttribute("value", gAskTimes);
  128.         var askEveryTimeHidden = contentDoc.getElementById("askEveryTimeHidden");
  129.         askEveryTimeHidden.checked = gAskEveryTimeHidden;
  130.     }
  131. }
  132.  
  133. /*
  134.  * Get security token
  135.  */
  136. function GetPK11Token()
  137. {
  138.     if (!gPK11Token)
  139.     {
  140.         var service = Components.classes[nsPK11TokenDB].getService(nsIPK11TokenDB);
  141.         if (service)
  142.             gPK11Token = service.getInternalKeyToken();
  143.     }
  144.     return gPK11Token;
  145. }
  146.