mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 03:15:11 +00:00
Lazily decrypt username/password in nsIPassword objects so that requesting an enumerator doesn't immediately prompt for the master password.
This commit is contained in:
parent
897845fdfe
commit
40ce193c74
@ -106,6 +106,7 @@ protected:
|
||||
nsCString mHost;
|
||||
nsString mUser;
|
||||
nsString mPassword;
|
||||
PRBool mDecrypted[2];
|
||||
};
|
||||
|
||||
NS_IMPL_ISUPPORTS1(nsPasswordManager::PasswordEntry, nsIPassword)
|
||||
@ -114,9 +115,11 @@ nsPasswordManager::PasswordEntry::PasswordEntry(const nsACString& aKey,
|
||||
SignonDataEntry* aData)
|
||||
: mHost(aKey)
|
||||
{
|
||||
mDecrypted[0] = mDecrypted[1] = PR_FALSE;
|
||||
|
||||
if (aData) {
|
||||
nsPasswordManager::DecryptData(aData->userValue, mUser);
|
||||
nsPasswordManager::DecryptData(aData->passValue, mPassword);
|
||||
mUser.Assign(aData->userValue);
|
||||
mPassword.Assign(aData->passValue);
|
||||
}
|
||||
}
|
||||
|
||||
@ -130,6 +133,11 @@ nsPasswordManager::PasswordEntry::GetHost(nsACString& aHost)
|
||||
NS_IMETHODIMP
|
||||
nsPasswordManager::PasswordEntry::GetUser(nsAString& aUser)
|
||||
{
|
||||
if (!mUser.IsEmpty() && !mDecrypted[0]) {
|
||||
DecryptData(mUser, mUser);
|
||||
mDecrypted[0] = PR_TRUE;
|
||||
}
|
||||
|
||||
aUser.Assign(mUser);
|
||||
return NS_OK;
|
||||
}
|
||||
@ -137,6 +145,11 @@ nsPasswordManager::PasswordEntry::GetUser(nsAString& aUser)
|
||||
NS_IMETHODIMP
|
||||
nsPasswordManager::PasswordEntry::GetPassword(nsAString& aPassword)
|
||||
{
|
||||
if (!mPassword.IsEmpty() && !mDecrypted[1]) {
|
||||
DecryptData(mPassword, mPassword);
|
||||
mDecrypted[1] = PR_TRUE;
|
||||
}
|
||||
|
||||
aPassword.Assign(mPassword);
|
||||
return NS_OK;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user