| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/user_manager_impl.h" | 5 #include "chrome/browser/chromeos/login/user_manager_impl.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "ash/shell.h" | 9 #include "ash/shell.h" |
| 10 #include "ash/desktop_background/desktop_background_controller.h" | 10 #include "ash/desktop_background/desktop_background_controller.h" |
| (...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 281 } | 281 } |
| 282 | 282 |
| 283 } // namespace | 283 } // namespace |
| 284 | 284 |
| 285 UserManagerImpl::UserManagerImpl() | 285 UserManagerImpl::UserManagerImpl() |
| 286 : ALLOW_THIS_IN_INITIALIZER_LIST(image_loader_(new UserImageLoader)), | 286 : ALLOW_THIS_IN_INITIALIZER_LIST(image_loader_(new UserImageLoader)), |
| 287 logged_in_user_(NULL), | 287 logged_in_user_(NULL), |
| 288 is_current_user_owner_(false), | 288 is_current_user_owner_(false), |
| 289 is_current_user_new_(false), | 289 is_current_user_new_(false), |
| 290 is_current_user_ephemeral_(false), | 290 is_current_user_ephemeral_(false), |
| 291 key_store_loaded_(false), |
| 291 ephemeral_users_enabled_(false), | 292 ephemeral_users_enabled_(false), |
| 292 observed_sync_service_(NULL), | 293 observed_sync_service_(NULL), |
| 293 last_image_set_async_(false), | 294 last_image_set_async_(false), |
| 294 downloaded_profile_image_data_url_(chrome::kAboutBlankURL) { | 295 downloaded_profile_image_data_url_(chrome::kAboutBlankURL) { |
| 295 // Use stub as the logged-in user for test paths without login. | 296 // Use stub as the logged-in user for test paths without login. |
| 296 if (!base::chromeos::IsRunningOnChromeOS()) | 297 if (!base::chromeos::IsRunningOnChromeOS()) |
| 297 StubUserLoggedIn(); | 298 StubUserLoggedIn(); |
| 298 registrar_.Add(this, chrome::NOTIFICATION_OWNER_KEY_FETCH_ATTEMPT_SUCCEEDED, | 299 registrar_.Add(this, chrome::NOTIFICATION_OWNER_KEY_FETCH_ATTEMPT_SUCCEEDED, |
| 299 content::NotificationService::AllSources()); | 300 content::NotificationService::AllSources()); |
| 300 registrar_.Add(this, chrome::NOTIFICATION_PROFILE_ADDED, | 301 registrar_.Add(this, chrome::NOTIFICATION_PROFILE_ADDED, |
| (...skipping 566 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 867 return NULL; | 868 return NULL; |
| 868 } | 869 } |
| 869 | 870 |
| 870 void UserManagerImpl::NotifyOnLogin() { | 871 void UserManagerImpl::NotifyOnLogin() { |
| 871 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 872 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 872 content::NotificationService::current()->Notify( | 873 content::NotificationService::current()->Notify( |
| 873 chrome::NOTIFICATION_LOGIN_USER_CHANGED, | 874 chrome::NOTIFICATION_LOGIN_USER_CHANGED, |
| 874 content::Source<UserManagerImpl>(this), | 875 content::Source<UserManagerImpl>(this), |
| 875 content::Details<const User>(logged_in_user_)); | 876 content::Details<const User>(logged_in_user_)); |
| 876 | 877 |
| 878 LoadKeyStore(); |
| 879 |
| 880 // Schedules current user ownership check on file thread. |
| 881 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, |
| 882 base::Bind(&UserManagerImpl::CheckOwnership, |
| 883 base::Unretained(this))); |
| 884 } |
| 885 |
| 886 void UserManagerImpl::LoadKeyStore() { |
| 887 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 888 if (key_store_loaded_) |
| 889 return; |
| 890 |
| 877 // Ensure we've opened the real user's key/certificate database. | 891 // Ensure we've opened the real user's key/certificate database. |
| 878 crypto::OpenPersistentNSSDB(); | 892 crypto::OpenPersistentNSSDB(); |
| 879 | 893 |
| 880 // Only load the Opencryptoki library into NSS if we have this switch. | 894 // Only load the Opencryptoki library into NSS if we have this switch. |
| 881 // TODO(gspencer): Remove this switch once cryptohomed work is finished: | 895 // TODO(gspencer): Remove this switch once cryptohomed work is finished: |
| 882 // http://crosbug.com/12295 and http://crosbug.com/12304 | 896 // http://crosbug.com/12295 and http://crosbug.com/12304 |
| 883 if (CommandLine::ForCurrentProcess()->HasSwitch( | 897 if (CommandLine::ForCurrentProcess()->HasSwitch( |
| 884 switches::kLoadOpencryptoki)) { | 898 switches::kLoadOpencryptoki)) { |
| 885 crypto::EnableTPMTokenForNSS(new RealTPMTokenInfoDelegate()); | 899 crypto::EnableTPMTokenForNSS(new RealTPMTokenInfoDelegate()); |
| 886 CertLibrary* cert_library; | 900 CertLibrary* cert_library; |
| 887 cert_library = chromeos::CrosLibrary::Get()->GetCertLibrary(); | 901 cert_library = chromeos::CrosLibrary::Get()->GetCertLibrary(); |
| 888 // Note: this calls crypto::EnsureTPMTokenReady() | 902 // Note: this calls crypto::EnsureTPMTokenReady() |
| 889 cert_library->RequestCertificates(); | 903 cert_library->RequestCertificates(); |
| 890 } | 904 } |
| 891 | 905 key_store_loaded_ = true; |
| 892 // Schedules current user ownership check on file thread. | |
| 893 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, | |
| 894 base::Bind(&UserManagerImpl::CheckOwnership, | |
| 895 base::Unretained(this))); | |
| 896 } | 906 } |
| 897 | 907 |
| 898 void UserManagerImpl::SetInitialUserImage(const std::string& username) { | 908 void UserManagerImpl::SetInitialUserImage(const std::string& username) { |
| 899 // Choose a random default image. | 909 // Choose a random default image. |
| 900 int image_id = base::RandInt(0, kDefaultImagesCount - 1); | 910 int image_id = base::RandInt(0, kDefaultImagesCount - 1); |
| 901 SaveUserDefaultImageIndex(username, image_id); | 911 SaveUserDefaultImageIndex(username, image_id); |
| 902 } | 912 } |
| 903 | 913 |
| 904 int UserManagerImpl::GetUserWallpaper(const std::string& username) { | 914 int UserManagerImpl::GetUserWallpaper(const std::string& username) { |
| 905 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 915 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| (...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1212 BrowserThread::PostTask( | 1222 BrowserThread::PostTask( |
| 1213 BrowserThread::FILE, | 1223 BrowserThread::FILE, |
| 1214 FROM_HERE, | 1224 FROM_HERE, |
| 1215 base::Bind(&UserManagerImpl::DeleteUserImage, | 1225 base::Bind(&UserManagerImpl::DeleteUserImage, |
| 1216 base::Unretained(this), | 1226 base::Unretained(this), |
| 1217 image_path)); | 1227 image_path)); |
| 1218 } | 1228 } |
| 1219 } | 1229 } |
| 1220 | 1230 |
| 1221 } // namespace chromeos | 1231 } // namespace chromeos |
| OLD | NEW |