diff --git a/mozilla/extensions/wallet/resources/content/pref-passwords.xul b/mozilla/extensions/wallet/resources/content/pref-passwords.xul index 7b1b4a4e222..d3feb182e22 100644 --- a/mozilla/extensions/wallet/resources/content/pref-passwords.xul +++ b/mozilla/extensions/wallet/resources/content/pref-passwords.xul @@ -36,7 +36,7 @@ @@ -63,6 +63,23 @@ wallet.WALLET_InitReencryptCallback(window); } + function encryptionTest() { + var checkbox = document.getElementById("encryptExpire"); + var checked = checkbox.getAttribute("checked"); + + var wallet = Components.classes['@mozilla.org/wallet/wallet-service;1']; + wallet = wallet.getService(); + wallet = wallet.QueryInterface(Components.interfaces.nsIWalletService); + try { + wallet.WALLET_Encrypt("dummy"); + } catch (ex) { + // user could not supply master password, leave checkbox in original state + checkbox.setAttribute("checked", !checked); + return false; + } + return true; + } + ]]> @@ -87,11 +104,14 @@ &encryptDescription.label; - + - + + diff --git a/mozilla/extensions/wallet/resources/locale/en-US/pref-passwords.dtd b/mozilla/extensions/wallet/resources/locale/en-US/pref-passwords.dtd index ce32922b270..80bd8b78d4d 100644 --- a/mozilla/extensions/wallet/resources/locale/en-US/pref-passwords.dtd +++ b/mozilla/extensions/wallet/resources/locale/en-US/pref-passwords.dtd @@ -12,3 +12,5 @@ + + diff --git a/mozilla/extensions/wallet/src/nsWalletService.cpp b/mozilla/extensions/wallet/src/nsWalletService.cpp index a3e900b24db..5fad2e724be 100644 --- a/mozilla/extensions/wallet/src/nsWalletService.cpp +++ b/mozilla/extensions/wallet/src/nsWalletService.cpp @@ -272,6 +272,23 @@ nsWalletlibService::UnregisterProc(nsIComponentManager *aCompMgr, return NS_OK; } +PRBool expireMasterPassword = PR_FALSE; +#define expireMasterPasswordPref "signon.expireMasterPassword" + +MODULE_PRIVATE int PR_CALLBACK +ExpireMasterPasswordPrefChanged(const char * newpref, void * data) { + nsresult rv; + nsCOMPtr prefs(do_GetService(NS_PREF_CONTRACTID, &rv)); + if (NS_FAILED(prefs->GetBoolPref(expireMasterPasswordPref, &expireMasterPassword))) { + expireMasterPassword = PR_FALSE; + } + if (expireMasterPassword) { + PRBool status; + WLLT_ExpirePassword(&status); + } + return 0; +} + nsresult nsWalletlibService::Init() { nsresult rv; @@ -299,6 +316,13 @@ nsresult nsWalletlibService::Init() else NS_ASSERTION(PR_FALSE, "Could not get nsIDocumentLoader"); + /* initialize the expire-master-password feature */ + nsCOMPtr prefs(do_GetService(NS_PREF_CONTRACTID, &rv)); + if (NS_SUCCEEDED(rv)) { + prefs->RegisterCallback(expireMasterPasswordPref, ExpireMasterPasswordPrefChanged, NULL); + prefs->GetBoolPref(expireMasterPasswordPref, &expireMasterPassword); + } + return NS_OK; } @@ -448,6 +472,10 @@ nsWalletlibService::OnStateChange(nsIWebProgress* aWebProgress, } } } + if (expireMasterPassword) { + PRBool status; + WLLT_ExpirePassword(&status); + } return rv; }