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 >
Wrap
Text File
|
2005-07-29
|
4KB
|
146 lines
const nsPK11TokenDB = "@mozilla.org/security/pk11tokendb;1";
const nsIPK11TokenDB = Components.interfaces.nsIPK11TokenDB;
const nsIPK11Token = Components.interfaces.nsIPK11Token;
const nsPrefService = "@mozilla.org/preferences-service;1";
const nsIPrefService = Components.interfaces.nsIPrefBranch;
const masterPasswordPref = "masterpassword.timeout.init";
const askForPref = "security.ask_for_password";
const lifetimePref = "security.password_lifetime";
const defaultTimeout = 120;
const defaultTimeoutType = 1;
var gPK11Token = null;
var gAskEveryTimeHidden = false;
var gAskTimes = 0;
var gTimeout = 0;
/*
Defined in http://lxr.mozilla.org/aviarybranch/source/security/manager/ssl/public/nsIPK11Token.idl
ASK_FIRST_TIME = 0;
ASK_EVERY_TIME = -1;
ASK_EXPIRE_TIME = 1;
*/
/*
* On Load
*/
function setTimeoutOnLoad()
{
if (!GetPK11Token())
return;
var prefService = Components.classes[nsPrefService].getService(nsIPrefService);
if (prefService &&
prefService.getPrefType(masterPasswordPref) == prefService.PREF_BOOL &&
prefService.getBoolPref(masterPasswordPref))
{
// retrieve the default values from security-prefs.js
// if this is the first time Master Password is used
gAskTimes = defaultTimeoutType;
gTimeout = defaultTimeout;
if (prefService.getPrefType(askForPref) == prefService.PREF_INT)
gAskTimes = prefService.getIntPref(askForPref);
if (prefService.getPrefType(lifetimePref) == prefService.PREF_INT)
gTimeout = prefService.getIntPref(lifetimePref);
// next time, retrieve the values from security token
prefService.setBoolPref(masterPasswordPref, false);
}
else
{
// retrieve the values from security token
gAskTimes = GetPK11Token().getAskPasswordTimes();
gTimeout = GetPK11Token().getAskPasswordTimeout();
}
switch (gAskTimes) {
case nsIPK11Token.ASK_FIRST_TIME: gAskTimes = 0; break;
// MERC JVL - Bug in Mozilla? Remove for now. case nsIPK11Token.ASK_EVERY_TIME: gAskTimes = 1; break;
case nsIPK11Token.ASK_EXPIRE_TIME: gAskTimes = 2; break;
}
var radioitem;
switch (gAskTimes) {
case 0: radioitem = document.getElementById("askFirstTime"); break;
// MERC JVL - Bug in Mozilla? Remove for now. case 1: radioitem = document.getElementById("askEveryTime"); break;
case 2: radioitem = document.getElementById("askTimeout"); break;
}
var radiogroup = document.getElementById("passwordAskTimes");
radiogroup.selectedItem = radioitem;
var timeoutField = document.getElementById("passwordTimeout");
timeoutField.setAttribute("value", gTimeout);
changePasswordSettings(false);
}
/*
* Update state
*/
function changePasswordSettings(setFocus)
{
var timeoutField = document.getElementById("passwordTimeout");
var radiogroup = document.getElementById("passwordAskTimes");
switch ( radiogroup.value ) {
case "0":
timeoutField.setAttribute("disabled", true);
gAskTimes = nsIPK11Token.ASK_FIRST_TIME;
break;
/* MERC JVL - Bug in Mozilla? Remove for now.
case "1":
timeoutField.setAttribute("disabled", true);
gAskTimes = nsIPK11Token.ASK_EVERY_TIME;
break;
*/
case "2":
timeoutField.removeAttribute("disabled");
if ( setFocus ) {
timeoutField.focus();
}
gTimeout = timeoutField.value;
var re = new RegExp("^[0-9]+$");
if (!re.test(gTimeout)) {
gTimeout = "1";
}
gAskTimes = nsIPK11Token.ASK_EXPIRE_TIME;
break;
}
// MERC JVL - Bug in Mozilla? Remove for now. gAskEveryTimeHidden = (radiogroup.value == 1) ? true : false;
}
/*
* Handle OK
*/
function setTimeoutOnAccept()
{
// save values in security token
GetPK11Token().setAskPasswordDefaults(gAskTimes, gTimeout);
// set hidden elements in the caller window
var contentDoc = window.opener.document;
if (contentDoc)
{
var timeoutField = contentDoc.getElementById("passwordTimeout");
timeoutField.setAttribute("value", gTimeout);
var timeoutSelect = contentDoc.getElementById("passwordAskTimes");
timeoutSelect.setAttribute("value", gAskTimes);
var askEveryTimeHidden = contentDoc.getElementById("askEveryTimeHidden");
askEveryTimeHidden.checked = gAskEveryTimeHidden;
}
}
/*
* Get security token
*/
function GetPK11Token()
{
if (!gPK11Token)
{
var service = Components.classes[nsPK11TokenDB].getService(nsIPK11TokenDB);
if (service)
gPK11Token = service.getInternalKeyToken();
}
return gPK11Token;
}