Chromium Code Reviews| Index: chrome/browser/chromeos/login/supervised_user_manager_impl.cc |
| diff --git a/chrome/browser/chromeos/login/supervised_user_manager_impl.cc b/chrome/browser/chromeos/login/supervised_user_manager_impl.cc |
| index 72c02e616072dc2533ee540e5b844bc04133e0e8..42d6981e95f7285266c5eb307f3397d52bd1c96a 100644 |
| --- a/chrome/browser/chromeos/login/supervised_user_manager_impl.cc |
| +++ b/chrome/browser/chromeos/login/supervised_user_manager_impl.cc |
| @@ -74,6 +74,15 @@ const char kSupervisedUserPasswordSalt[] = |
| const char kSupervisedUserPasswordRevision[] = |
| "SupervisedUserPasswordRevision"; |
| +// A map from user id to flag indicating if password should be updated upon |
| +// signin. |
| +const char kSupervisedUserNeedPasswordUpdate[] = |
| + "SupervisedUserNeedPasswordUpdate"; |
| + |
| +// A map from user id to flag indicating if cryptohome does not have signature |
| +// key. |
| +const char kSupervisedUserIncompleteKey[] = "SupervisedUserHasIncompleteKey"; |
| + |
| std::string LoadSyncToken(base::FilePath profile_dir) { |
| std::string token; |
| base::FilePath token_file = |
| @@ -117,6 +126,9 @@ void SupervisedUserManager::RegisterPrefs(PrefRegistrySimple* registry) { |
| registry->RegisterDictionaryPref(kSupervisedUserPasswordSchema); |
| registry->RegisterDictionaryPref(kSupervisedUserPasswordSalt); |
| registry->RegisterDictionaryPref(kSupervisedUserPasswordRevision); |
| + |
| + registry->RegisterDictionaryPref(kSupervisedUserNeedPasswordUpdate); |
| + registry->RegisterDictionaryPref(kSupervisedUserIncompleteKey); |
| } |
| SupervisedUserManagerImpl::SupervisedUserManagerImpl(UserManagerImpl* owner) |
| @@ -253,6 +265,12 @@ void SupervisedUserManagerImpl::GetPasswordInformation( |
| if (GetUserIntegerValue(user_id, kSupervisedUserPasswordRevision, &value)) |
| result->SetIntegerWithoutPathExpansion(kPasswordRevision, value); |
| + bool flag; |
| + if (GetUserBooleanValue(user_id, kSupervisedUserNeedPasswordUpdate, &flag)) |
| + result->SetBooleanWithoutPathExpansion(kRequirePasswordUpdate, flag); |
| + if (GetUserBooleanValue(user_id, kSupervisedUserIncompleteKey, &flag)) |
| + result->SetBooleanWithoutPathExpansion(kHasIncompleteKey, flag); |
| + |
| std::string salt; |
| if (GetUserStringValue(user_id, kSupervisedUserPasswordSalt, &salt)) |
| result->SetStringWithoutPathExpansion(kSalt, salt); |
| @@ -267,6 +285,13 @@ void SupervisedUserManagerImpl::SetPasswordInformation( |
| if (password_info->GetIntegerWithoutPathExpansion(kPasswordRevision, &value)) |
| SetUserIntegerValue(user_id, kSupervisedUserPasswordRevision, value); |
| + bool flag; |
| + if (password_info->GetBooleanWithoutPathExpansion(kRequirePasswordUpdate, |
| + &flag)) |
|
Bernhard Bauer
2014/04/02 14:05:28
If the condition is more than one line, use braces
Denis Kuznetsov (DE-MUC)
2014/04/02 14:48:51
Done.
|
| + SetUserBooleanValue(user_id, kSupervisedUserNeedPasswordUpdate, flag); |
| + if (password_info->GetBooleanWithoutPathExpansion(kHasIncompleteKey, &flag)) |
| + SetUserBooleanValue(user_id, kSupervisedUserIncompleteKey, flag); |
| + |
| std::string salt; |
| if (password_info->GetStringWithoutPathExpansion(kSalt, &salt)) |
| SetUserStringValue(user_id, kSupervisedUserPasswordSalt, salt); |
| @@ -291,6 +316,14 @@ bool SupervisedUserManagerImpl::GetUserIntegerValue( |
| return dictionary->GetIntegerWithoutPathExpansion(user_id, out_value); |
| } |
| +bool SupervisedUserManagerImpl::GetUserBooleanValue(const std::string& user_id, |
| + const char* key, |
| + bool* out_value) const { |
| + PrefService* local_state = g_browser_process->local_state(); |
| + const base::DictionaryValue* dictionary = local_state->GetDictionary(key); |
| + return dictionary->GetBooleanWithoutPathExpansion(user_id, out_value); |
| +} |
| + |
| void SupervisedUserManagerImpl::SetUserStringValue( |
| const std::string& user_id, |
| const char* key, |
| @@ -309,6 +342,14 @@ void SupervisedUserManagerImpl::SetUserIntegerValue( |
| update->SetIntegerWithoutPathExpansion(user_id, value); |
| } |
| +void SupervisedUserManagerImpl::SetUserBooleanValue(const std::string& user_id, |
| + const char* key, |
| + const bool value) { |
| + PrefService* local_state = g_browser_process->local_state(); |
| + DictionaryPrefUpdate update(local_state, key); |
| + update->SetBooleanWithoutPathExpansion(user_id, value); |
| +} |
| + |
| const User* SupervisedUserManagerImpl::FindByDisplayName( |
| const base::string16& display_name) const { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| @@ -412,6 +453,8 @@ void SupervisedUserManagerImpl::RemoveNonCryptohomeData( |
| CleanPref(user_id, kSupervisedUserPasswordSalt); |
| CleanPref(user_id, kSupervisedUserPasswordSchema); |
| CleanPref(user_id, kSupervisedUserPasswordRevision); |
| + CleanPref(user_id, kSupervisedUserNeedPasswordUpdate); |
| + CleanPref(user_id, kSupervisedUserIncompleteKey); |
| } |
| void SupervisedUserManagerImpl::CleanPref(const std::string& user_id, |