OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/chromeos/login/users/supervised_user_manager_impl.h" | 5 #include "chrome/browser/chromeos/login/users/supervised_user_manager_impl.h" |
6 | 6 |
7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
9 #include "base/prefs/pref_registry_simple.h" | 9 #include "base/prefs/pref_registry_simple.h" |
10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
11 #include "base/prefs/scoped_user_pref_update.h" | 11 #include "base/prefs/scoped_user_pref_update.h" |
12 #include "base/strings/string_util.h" | 12 #include "base/strings/string_util.h" |
13 #include "base/strings/stringprintf.h" | 13 #include "base/strings/stringprintf.h" |
14 #include "base/strings/utf_string_conversions.h" | 14 #include "base/strings/utf_string_conversions.h" |
15 #include "base/threading/sequenced_worker_pool.h" | 15 #include "base/threading/sequenced_worker_pool.h" |
16 #include "base/values.h" | 16 #include "base/values.h" |
17 #include "chrome/browser/browser_process.h" | 17 #include "chrome/browser/browser_process.h" |
18 #include "chrome/browser/chromeos/login/managed/locally_managed_user_constants.h
" | 18 #include "chrome/browser/chromeos/login/supervised/supervised_user_authenticatio
n.h" |
19 #include "chrome/browser/chromeos/login/managed/supervised_user_authentication.h
" | 19 #include "chrome/browser/chromeos/login/supervised/supervised_user_constants.h" |
20 #include "chrome/browser/chromeos/login/users/user_manager_impl.h" | 20 #include "chrome/browser/chromeos/login/users/user_manager_impl.h" |
21 #include "chrome/browser/chromeos/profiles/profile_helper.h" | 21 #include "chrome/browser/chromeos/profiles/profile_helper.h" |
22 #include "chrome/browser/supervised_user/supervised_user_service.h" | 22 #include "chrome/browser/supervised_user/supervised_user_service.h" |
23 #include "chrome/browser/supervised_user/supervised_user_service_factory.h" | 23 #include "chrome/browser/supervised_user/supervised_user_service_factory.h" |
24 #include "chromeos/login/user_names.h" | 24 #include "chromeos/login/user_names.h" |
25 #include "chromeos/settings/cros_settings_names.h" | 25 #include "chromeos/settings/cros_settings_names.h" |
26 #include "components/user_manager/user_type.h" | 26 #include "components/user_manager/user_type.h" |
27 #include "content/public/browser/browser_thread.h" | 27 #include "content/public/browser/browser_thread.h" |
28 #include "google_apis/gaia/gaia_auth_util.h" | 28 #include "google_apis/gaia/gaia_auth_util.h" |
29 | 29 |
30 using content::BrowserThread; | 30 using content::BrowserThread; |
31 | 31 |
32 namespace { | 32 namespace { |
33 | 33 |
34 // Names for pref keys in Local State. | 34 // Names for pref keys in Local State. |
35 // A map from locally managed user local user id to sync user id. | 35 // A map from supervised user local user id to sync user id. |
36 const char kSupervisedUserSyncId[] = | 36 const char kSupervisedUserSyncId[] = "ManagedUserSyncId"; |
37 "ManagedUserSyncId"; | |
38 | 37 |
39 // A map from locally managed user id to manager user id. | 38 // A map from supervised user id to manager user id. |
40 const char kSupervisedUserManagers[] = | 39 const char kSupervisedUserManagers[] = "ManagedUserManagers"; |
41 "ManagedUserManagers"; | |
42 | 40 |
43 // A map from locally managed user id to manager display name. | 41 // A map from supervised user id to manager display name. |
44 const char kSupervisedUserManagerNames[] = | 42 const char kSupervisedUserManagerNames[] = "ManagedUserManagerNames"; |
45 "ManagedUserManagerNames"; | |
46 | 43 |
47 // A map from locally managed user id to manager display e-mail. | 44 // A map from supervised user id to manager display e-mail. |
48 const char kSupervisedUserManagerDisplayEmails[] = | 45 const char kSupervisedUserManagerDisplayEmails[] = |
49 "ManagedUserManagerDisplayEmails"; | 46 "ManagedUserManagerDisplayEmails"; |
50 | 47 |
51 // A vector pref of the locally managed accounts defined on this device, that | 48 // A vector pref of the supervised accounts defined on this device, that had |
52 // had not logged in yet. | 49 // not logged in yet. |
53 const char kLocallyManagedUsersFirstRun[] = "LocallyManagedUsersFirstRun"; | 50 const char kSupervisedUsersFirstRun[] = "LocallyManagedUsersFirstRun"; |
54 | 51 |
55 // A pref of the next id for locally managed users generation. | 52 // A pref of the next id for supervised users generation. |
56 const char kLocallyManagedUsersNextId[] = | 53 const char kSupervisedUsersNextId[] = "LocallyManagedUsersNextId"; |
57 "LocallyManagedUsersNextId"; | |
58 | 54 |
59 // A pref of the next id for locally managed users generation. | 55 // A pref of the next id for supervised users generation. |
60 const char kLocallyManagedUserCreationTransactionDisplayName[] = | 56 const char kSupervisedUserCreationTransactionDisplayName[] = |
61 "LocallyManagedUserCreationTransactionDisplayName"; | 57 "LocallyManagedUserCreationTransactionDisplayName"; |
62 | 58 |
63 // A pref of the next id for locally managed users generation. | 59 // A pref of the next id for supervised users generation. |
64 const char kLocallyManagedUserCreationTransactionUserId[] = | 60 const char kSupervisedUserCreationTransactionUserId[] = |
65 "LocallyManagedUserCreationTransactionUserId"; | 61 "LocallyManagedUserCreationTransactionUserId"; |
66 | 62 |
67 // A map from user id to password schema id. | 63 // A map from user id to password schema id. |
68 const char kSupervisedUserPasswordSchema[] = | 64 const char kSupervisedUserPasswordSchema[] = |
69 "SupervisedUserPasswordSchema"; | 65 "SupervisedUserPasswordSchema"; |
70 | 66 |
71 // A map from user id to password salt. | 67 // A map from user id to password salt. |
72 const char kSupervisedUserPasswordSalt[] = | 68 const char kSupervisedUserPasswordSalt[] = |
73 "SupervisedUserPasswordSalt"; | 69 "SupervisedUserPasswordSalt"; |
74 | 70 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
107 const char kRequirePasswordUpdate[] = "RequirePasswordUpdate"; | 103 const char kRequirePasswordUpdate[] = "RequirePasswordUpdate"; |
108 const char kHasIncompleteKey[] = "HasIncompleteKey"; | 104 const char kHasIncompleteKey[] = "HasIncompleteKey"; |
109 const char kPasswordEncryptionKey[] = "password.hmac.encryption"; | 105 const char kPasswordEncryptionKey[] = "password.hmac.encryption"; |
110 const char kPasswordSignatureKey[] = "password.hmac.signature"; | 106 const char kPasswordSignatureKey[] = "password.hmac.signature"; |
111 | 107 |
112 const char kPasswordUpdateFile[] = "password.update"; | 108 const char kPasswordUpdateFile[] = "password.update"; |
113 const int kMinPasswordRevision = 1; | 109 const int kMinPasswordRevision = 1; |
114 | 110 |
115 // static | 111 // static |
116 void SupervisedUserManager::RegisterPrefs(PrefRegistrySimple* registry) { | 112 void SupervisedUserManager::RegisterPrefs(PrefRegistrySimple* registry) { |
117 registry->RegisterListPref(kLocallyManagedUsersFirstRun); | 113 registry->RegisterListPref(kSupervisedUsersFirstRun); |
118 registry->RegisterIntegerPref(kLocallyManagedUsersNextId, 0); | 114 registry->RegisterIntegerPref(kSupervisedUsersNextId, 0); |
119 registry->RegisterStringPref( | 115 registry->RegisterStringPref( |
120 kLocallyManagedUserCreationTransactionDisplayName, ""); | 116 kSupervisedUserCreationTransactionDisplayName, ""); |
121 registry->RegisterStringPref( | 117 registry->RegisterStringPref( |
122 kLocallyManagedUserCreationTransactionUserId, ""); | 118 kSupervisedUserCreationTransactionUserId, ""); |
123 registry->RegisterDictionaryPref(kSupervisedUserSyncId); | 119 registry->RegisterDictionaryPref(kSupervisedUserSyncId); |
124 registry->RegisterDictionaryPref(kSupervisedUserManagers); | 120 registry->RegisterDictionaryPref(kSupervisedUserManagers); |
125 registry->RegisterDictionaryPref(kSupervisedUserManagerNames); | 121 registry->RegisterDictionaryPref(kSupervisedUserManagerNames); |
126 registry->RegisterDictionaryPref(kSupervisedUserManagerDisplayEmails); | 122 registry->RegisterDictionaryPref(kSupervisedUserManagerDisplayEmails); |
127 | 123 |
128 registry->RegisterDictionaryPref(kSupervisedUserPasswordSchema); | 124 registry->RegisterDictionaryPref(kSupervisedUserPasswordSchema); |
129 registry->RegisterDictionaryPref(kSupervisedUserPasswordSalt); | 125 registry->RegisterDictionaryPref(kSupervisedUserPasswordSalt); |
130 registry->RegisterDictionaryPref(kSupervisedUserPasswordRevision); | 126 registry->RegisterDictionaryPref(kSupervisedUserPasswordRevision); |
131 | 127 |
132 registry->RegisterDictionaryPref(kSupervisedUserNeedPasswordUpdate); | 128 registry->RegisterDictionaryPref(kSupervisedUserNeedPasswordUpdate); |
133 registry->RegisterDictionaryPref(kSupervisedUserIncompleteKey); | 129 registry->RegisterDictionaryPref(kSupervisedUserIncompleteKey); |
134 } | 130 } |
135 | 131 |
136 SupervisedUserManagerImpl::SupervisedUserManagerImpl(UserManagerImpl* owner) | 132 SupervisedUserManagerImpl::SupervisedUserManagerImpl(UserManagerImpl* owner) |
137 : owner_(owner), | 133 : owner_(owner), |
138 cros_settings_(CrosSettings::Get()) { | 134 cros_settings_(CrosSettings::Get()) { |
139 // SupervisedUserManager instance should be used only on UI thread. | 135 // SupervisedUserManager instance should be used only on UI thread. |
140 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 136 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
141 authentication_.reset(new SupervisedUserAuthentication(this)); | 137 authentication_.reset(new SupervisedUserAuthentication(this)); |
142 } | 138 } |
143 | 139 |
144 SupervisedUserManagerImpl::~SupervisedUserManagerImpl() { | 140 SupervisedUserManagerImpl::~SupervisedUserManagerImpl() { |
145 } | 141 } |
146 | 142 |
147 std::string SupervisedUserManagerImpl::GenerateUserId() { | 143 std::string SupervisedUserManagerImpl::GenerateUserId() { |
148 int counter = g_browser_process->local_state()-> | 144 int counter = g_browser_process->local_state()-> |
149 GetInteger(kLocallyManagedUsersNextId); | 145 GetInteger(kSupervisedUsersNextId); |
150 std::string id; | 146 std::string id; |
151 bool user_exists; | 147 bool user_exists; |
152 do { | 148 do { |
153 id = base::StringPrintf( | 149 id = base::StringPrintf( |
154 "%d@%s", counter, chromeos::login::kLocallyManagedUserDomain); | 150 "%d@%s", counter, chromeos::login::kSupervisedUserDomain); |
155 counter++; | 151 counter++; |
156 user_exists = (NULL != owner_->FindUser(id)); | 152 user_exists = (NULL != owner_->FindUser(id)); |
157 DCHECK(!user_exists); | 153 DCHECK(!user_exists); |
158 if (user_exists) { | 154 if (user_exists) { |
159 LOG(ERROR) << "Supervised user with id " << id << " already exists."; | 155 LOG(ERROR) << "Supervised user with id " << id << " already exists."; |
160 } | 156 } |
161 } while (user_exists); | 157 } while (user_exists); |
162 | 158 |
163 g_browser_process->local_state()-> | 159 g_browser_process->local_state()-> |
164 SetInteger(kLocallyManagedUsersNextId, counter); | 160 SetInteger(kSupervisedUsersNextId, counter); |
165 | 161 |
166 g_browser_process->local_state()->CommitPendingWrite(); | 162 g_browser_process->local_state()->CommitPendingWrite(); |
167 return id; | 163 return id; |
168 } | 164 } |
169 | 165 |
170 bool SupervisedUserManagerImpl::HasSupervisedUsers( | 166 bool SupervisedUserManagerImpl::HasSupervisedUsers( |
171 const std::string& manager_id) const { | 167 const std::string& manager_id) const { |
172 const UserList& users = owner_->GetUsers(); | 168 const UserList& users = owner_->GetUsers(); |
173 for (UserList::const_iterator it = users.begin(); it != users.end(); ++it) { | 169 for (UserList::const_iterator it = users.begin(); it != users.end(); ++it) { |
174 if ((*it)->GetType() == user_manager::USER_TYPE_LOCALLY_MANAGED) { | 170 if ((*it)->GetType() == user_manager::USER_TYPE_SUPERVISED) { |
175 if (manager_id == GetManagerUserId((*it)->email())) | 171 if (manager_id == GetManagerUserId((*it)->email())) |
176 return true; | 172 return true; |
177 } | 173 } |
178 } | 174 } |
179 return false; | 175 return false; |
180 } | 176 } |
181 | 177 |
182 const User* SupervisedUserManagerImpl::CreateUserRecord( | 178 const User* SupervisedUserManagerImpl::CreateUserRecord( |
183 const std::string& manager_id, | 179 const std::string& manager_id, |
184 const std::string& local_user_id, | 180 const std::string& local_user_id, |
185 const std::string& sync_user_id, | 181 const std::string& sync_user_id, |
186 const base::string16& display_name) { | 182 const base::string16& display_name) { |
187 const User* user = FindByDisplayName(display_name); | 183 const User* user = FindByDisplayName(display_name); |
188 DCHECK(!user); | 184 DCHECK(!user); |
189 if (user) | 185 if (user) |
190 return user; | 186 return user; |
191 const User* manager = owner_->FindUser(manager_id); | 187 const User* manager = owner_->FindUser(manager_id); |
192 CHECK(manager); | 188 CHECK(manager); |
193 | 189 |
194 PrefService* local_state = g_browser_process->local_state(); | 190 PrefService* local_state = g_browser_process->local_state(); |
195 | 191 |
196 User* new_user = User::CreateLocallyManagedUser(local_user_id); | 192 User* new_user = User::CreateSupervisedUser(local_user_id); |
197 | 193 |
198 owner_->AddUserRecord(new_user); | 194 owner_->AddUserRecord(new_user); |
199 | 195 |
200 ListPrefUpdate prefs_new_users_update(local_state, | 196 ListPrefUpdate prefs_new_users_update(local_state, |
201 kLocallyManagedUsersFirstRun); | 197 kSupervisedUsersFirstRun); |
202 DictionaryPrefUpdate sync_id_update(local_state, kSupervisedUserSyncId); | 198 DictionaryPrefUpdate sync_id_update(local_state, kSupervisedUserSyncId); |
203 DictionaryPrefUpdate manager_update(local_state, kSupervisedUserManagers); | 199 DictionaryPrefUpdate manager_update(local_state, kSupervisedUserManagers); |
204 DictionaryPrefUpdate manager_name_update(local_state, | 200 DictionaryPrefUpdate manager_name_update(local_state, |
205 kSupervisedUserManagerNames); | 201 kSupervisedUserManagerNames); |
206 DictionaryPrefUpdate manager_email_update( | 202 DictionaryPrefUpdate manager_email_update( |
207 local_state, | 203 local_state, |
208 kSupervisedUserManagerDisplayEmails); | 204 kSupervisedUserManagerDisplayEmails); |
209 | 205 |
210 prefs_new_users_update->Insert(0, new base::StringValue(local_user_id)); | 206 prefs_new_users_update->Insert(0, new base::StringValue(local_user_id)); |
211 | 207 |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
354 PrefService* local_state = g_browser_process->local_state(); | 350 PrefService* local_state = g_browser_process->local_state(); |
355 DictionaryPrefUpdate update(local_state, key); | 351 DictionaryPrefUpdate update(local_state, key); |
356 update->SetBooleanWithoutPathExpansion(user_id, value); | 352 update->SetBooleanWithoutPathExpansion(user_id, value); |
357 } | 353 } |
358 | 354 |
359 const User* SupervisedUserManagerImpl::FindByDisplayName( | 355 const User* SupervisedUserManagerImpl::FindByDisplayName( |
360 const base::string16& display_name) const { | 356 const base::string16& display_name) const { |
361 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 357 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
362 const UserList& users = owner_->GetUsers(); | 358 const UserList& users = owner_->GetUsers(); |
363 for (UserList::const_iterator it = users.begin(); it != users.end(); ++it) { | 359 for (UserList::const_iterator it = users.begin(); it != users.end(); ++it) { |
364 if (((*it)->GetType() == user_manager::USER_TYPE_LOCALLY_MANAGED) && | 360 if (((*it)->GetType() == user_manager::USER_TYPE_SUPERVISED) && |
365 ((*it)->display_name() == display_name)) { | 361 ((*it)->display_name() == display_name)) { |
366 return *it; | 362 return *it; |
367 } | 363 } |
368 } | 364 } |
369 return NULL; | 365 return NULL; |
370 } | 366 } |
371 | 367 |
372 const User* SupervisedUserManagerImpl::FindBySyncId( | 368 const User* SupervisedUserManagerImpl::FindBySyncId( |
373 const std::string& sync_id) const { | 369 const std::string& sync_id) const { |
374 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 370 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
375 const UserList& users = owner_->GetUsers(); | 371 const UserList& users = owner_->GetUsers(); |
376 for (UserList::const_iterator it = users.begin(); it != users.end(); ++it) { | 372 for (UserList::const_iterator it = users.begin(); it != users.end(); ++it) { |
377 if (((*it)->GetType() == user_manager::USER_TYPE_LOCALLY_MANAGED) && | 373 if (((*it)->GetType() == user_manager::USER_TYPE_SUPERVISED) && |
378 (GetUserSyncId((*it)->email()) == sync_id)) { | 374 (GetUserSyncId((*it)->email()) == sync_id)) { |
379 return *it; | 375 return *it; |
380 } | 376 } |
381 } | 377 } |
382 return NULL; | 378 return NULL; |
383 } | 379 } |
384 | 380 |
385 void SupervisedUserManagerImpl::StartCreationTransaction( | 381 void SupervisedUserManagerImpl::StartCreationTransaction( |
386 const base::string16& display_name) { | 382 const base::string16& display_name) { |
387 g_browser_process->local_state()-> | 383 g_browser_process->local_state()-> |
388 SetString(kLocallyManagedUserCreationTransactionDisplayName, | 384 SetString(kSupervisedUserCreationTransactionDisplayName, |
389 base::UTF16ToASCII(display_name)); | 385 base::UTF16ToASCII(display_name)); |
390 g_browser_process->local_state()->CommitPendingWrite(); | 386 g_browser_process->local_state()->CommitPendingWrite(); |
391 } | 387 } |
392 | 388 |
393 void SupervisedUserManagerImpl::SetCreationTransactionUserId( | 389 void SupervisedUserManagerImpl::SetCreationTransactionUserId( |
394 const std::string& email) { | 390 const std::string& email) { |
395 g_browser_process->local_state()-> | 391 g_browser_process->local_state()-> |
396 SetString(kLocallyManagedUserCreationTransactionUserId, | 392 SetString(kSupervisedUserCreationTransactionUserId, |
397 email); | 393 email); |
398 g_browser_process->local_state()->CommitPendingWrite(); | 394 g_browser_process->local_state()->CommitPendingWrite(); |
399 } | 395 } |
400 | 396 |
401 void SupervisedUserManagerImpl::CommitCreationTransaction() { | 397 void SupervisedUserManagerImpl::CommitCreationTransaction() { |
402 g_browser_process->local_state()-> | 398 g_browser_process->local_state()-> |
403 ClearPref(kLocallyManagedUserCreationTransactionDisplayName); | 399 ClearPref(kSupervisedUserCreationTransactionDisplayName); |
404 g_browser_process->local_state()-> | 400 g_browser_process->local_state()-> |
405 ClearPref(kLocallyManagedUserCreationTransactionUserId); | 401 ClearPref(kSupervisedUserCreationTransactionUserId); |
406 g_browser_process->local_state()->CommitPendingWrite(); | 402 g_browser_process->local_state()->CommitPendingWrite(); |
407 } | 403 } |
408 | 404 |
409 bool SupervisedUserManagerImpl::HasFailedUserCreationTransaction() { | 405 bool SupervisedUserManagerImpl::HasFailedUserCreationTransaction() { |
410 return !(g_browser_process->local_state()-> | 406 return !(g_browser_process->local_state()-> |
411 GetString(kLocallyManagedUserCreationTransactionDisplayName). | 407 GetString(kSupervisedUserCreationTransactionDisplayName). |
412 empty()); | 408 empty()); |
413 } | 409 } |
414 | 410 |
415 void SupervisedUserManagerImpl::RollbackUserCreationTransaction() { | 411 void SupervisedUserManagerImpl::RollbackUserCreationTransaction() { |
416 PrefService* prefs = g_browser_process->local_state(); | 412 PrefService* prefs = g_browser_process->local_state(); |
417 | 413 |
418 std::string display_name = prefs-> | 414 std::string display_name = prefs-> |
419 GetString(kLocallyManagedUserCreationTransactionDisplayName); | 415 GetString(kSupervisedUserCreationTransactionDisplayName); |
420 std::string user_id = prefs-> | 416 std::string user_id = prefs-> |
421 GetString(kLocallyManagedUserCreationTransactionUserId); | 417 GetString(kSupervisedUserCreationTransactionUserId); |
422 | 418 |
423 LOG(WARNING) << "Cleaning up transaction for " | 419 LOG(WARNING) << "Cleaning up transaction for " |
424 << display_name << "/" << user_id; | 420 << display_name << "/" << user_id; |
425 | 421 |
426 if (user_id.empty()) { | 422 if (user_id.empty()) { |
427 // Not much to do - just remove transaction. | 423 // Not much to do - just remove transaction. |
428 prefs->ClearPref(kLocallyManagedUserCreationTransactionDisplayName); | 424 prefs->ClearPref(kSupervisedUserCreationTransactionDisplayName); |
429 prefs->CommitPendingWrite(); | 425 prefs->CommitPendingWrite(); |
430 return; | 426 return; |
431 } | 427 } |
432 | 428 |
433 if (gaia::ExtractDomainName(user_id) != | 429 if (gaia::ExtractDomainName(user_id) != |
434 chromeos::login::kLocallyManagedUserDomain) { | 430 chromeos::login::kSupervisedUserDomain) { |
435 LOG(WARNING) << "Clean up transaction for non-locally managed user found :" | 431 LOG(WARNING) << "Clean up transaction for non-supervised user found :" |
436 << user_id << ", will not remove data"; | 432 << user_id << ", will not remove data"; |
437 prefs->ClearPref(kLocallyManagedUserCreationTransactionDisplayName); | 433 prefs->ClearPref(kSupervisedUserCreationTransactionDisplayName); |
438 prefs->ClearPref(kLocallyManagedUserCreationTransactionUserId); | 434 prefs->ClearPref(kSupervisedUserCreationTransactionUserId); |
439 prefs->CommitPendingWrite(); | 435 prefs->CommitPendingWrite(); |
440 return; | 436 return; |
441 } | 437 } |
442 owner_->RemoveNonOwnerUserInternal(user_id, NULL); | 438 owner_->RemoveNonOwnerUserInternal(user_id, NULL); |
443 | 439 |
444 prefs->ClearPref(kLocallyManagedUserCreationTransactionDisplayName); | 440 prefs->ClearPref(kSupervisedUserCreationTransactionDisplayName); |
445 prefs->ClearPref(kLocallyManagedUserCreationTransactionUserId); | 441 prefs->ClearPref(kSupervisedUserCreationTransactionUserId); |
446 prefs->CommitPendingWrite(); | 442 prefs->CommitPendingWrite(); |
447 } | 443 } |
448 | 444 |
449 void SupervisedUserManagerImpl::RemoveNonCryptohomeData( | 445 void SupervisedUserManagerImpl::RemoveNonCryptohomeData( |
450 const std::string& user_id) { | 446 const std::string& user_id) { |
451 PrefService* prefs = g_browser_process->local_state(); | 447 PrefService* prefs = g_browser_process->local_state(); |
452 ListPrefUpdate prefs_new_users_update(prefs, kLocallyManagedUsersFirstRun); | 448 ListPrefUpdate prefs_new_users_update(prefs, kSupervisedUsersFirstRun); |
453 prefs_new_users_update->Remove(base::StringValue(user_id), NULL); | 449 prefs_new_users_update->Remove(base::StringValue(user_id), NULL); |
454 | 450 |
455 CleanPref(user_id, kSupervisedUserSyncId); | 451 CleanPref(user_id, kSupervisedUserSyncId); |
456 CleanPref(user_id, kSupervisedUserManagers); | 452 CleanPref(user_id, kSupervisedUserManagers); |
457 CleanPref(user_id, kSupervisedUserManagerNames); | 453 CleanPref(user_id, kSupervisedUserManagerNames); |
458 CleanPref(user_id, kSupervisedUserManagerDisplayEmails); | 454 CleanPref(user_id, kSupervisedUserManagerDisplayEmails); |
459 CleanPref(user_id, kSupervisedUserPasswordSalt); | 455 CleanPref(user_id, kSupervisedUserPasswordSalt); |
460 CleanPref(user_id, kSupervisedUserPasswordSchema); | 456 CleanPref(user_id, kSupervisedUserPasswordSchema); |
461 CleanPref(user_id, kSupervisedUserPasswordRevision); | 457 CleanPref(user_id, kSupervisedUserPasswordRevision); |
462 CleanPref(user_id, kSupervisedUserNeedPasswordUpdate); | 458 CleanPref(user_id, kSupervisedUserNeedPasswordUpdate); |
463 CleanPref(user_id, kSupervisedUserIncompleteKey); | 459 CleanPref(user_id, kSupervisedUserIncompleteKey); |
464 } | 460 } |
465 | 461 |
466 void SupervisedUserManagerImpl::CleanPref(const std::string& user_id, | 462 void SupervisedUserManagerImpl::CleanPref(const std::string& user_id, |
467 const char* key) { | 463 const char* key) { |
468 PrefService* prefs = g_browser_process->local_state(); | 464 PrefService* prefs = g_browser_process->local_state(); |
469 DictionaryPrefUpdate dict_update(prefs, key); | 465 DictionaryPrefUpdate dict_update(prefs, key); |
470 dict_update->RemoveWithoutPathExpansion(user_id, NULL); | 466 dict_update->RemoveWithoutPathExpansion(user_id, NULL); |
471 } | 467 } |
472 | 468 |
473 bool SupervisedUserManagerImpl::CheckForFirstRun(const std::string& user_id) { | 469 bool SupervisedUserManagerImpl::CheckForFirstRun(const std::string& user_id) { |
474 ListPrefUpdate prefs_new_users_update(g_browser_process->local_state(), | 470 ListPrefUpdate prefs_new_users_update(g_browser_process->local_state(), |
475 kLocallyManagedUsersFirstRun); | 471 kSupervisedUsersFirstRun); |
476 return prefs_new_users_update->Remove(base::StringValue(user_id), NULL); | 472 return prefs_new_users_update->Remove(base::StringValue(user_id), NULL); |
477 } | 473 } |
478 | 474 |
479 void SupervisedUserManagerImpl::UpdateManagerName(const std::string& manager_id, | 475 void SupervisedUserManagerImpl::UpdateManagerName(const std::string& manager_id, |
480 const base::string16& new_display_name) { | 476 const base::string16& new_display_name) { |
481 PrefService* local_state = g_browser_process->local_state(); | 477 PrefService* local_state = g_browser_process->local_state(); |
482 | 478 |
483 const base::DictionaryValue* manager_ids = | 479 const base::DictionaryValue* manager_ids = |
484 local_state->GetDictionary(kSupervisedUserManagers); | 480 local_state->GetDictionary(kSupervisedUserManagers); |
485 | 481 |
(...skipping 30 matching lines...) Expand all Loading... |
516 } | 512 } |
517 | 513 |
518 void SupervisedUserManagerImpl::ConfigureSyncWithToken( | 514 void SupervisedUserManagerImpl::ConfigureSyncWithToken( |
519 Profile* profile, | 515 Profile* profile, |
520 const std::string& token) { | 516 const std::string& token) { |
521 if (!token.empty()) | 517 if (!token.empty()) |
522 SupervisedUserServiceFactory::GetForProfile(profile)->InitSync(token); | 518 SupervisedUserServiceFactory::GetForProfile(profile)->InitSync(token); |
523 } | 519 } |
524 | 520 |
525 } // namespace chromeos | 521 } // namespace chromeos |
OLD | NEW |