| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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.h" | 5 #include "chrome/browser/chromeos/login/user_manager.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
| 10 #include "base/file_path.h" | 10 #include "base/file_path.h" |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 #include "chrome/browser/chromeos/login/ownership_service.h" | 33 #include "chrome/browser/chromeos/login/ownership_service.h" |
| 34 #include "chrome/browser/chromeos/user_cros_settings_provider.h" | 34 #include "chrome/browser/chromeos/user_cros_settings_provider.h" |
| 35 #include "chrome/browser/defaults.h" | 35 #include "chrome/browser/defaults.h" |
| 36 #include "chrome/browser/prefs/pref_service.h" | 36 #include "chrome/browser/prefs/pref_service.h" |
| 37 #include "chrome/browser/prefs/scoped_user_pref_update.h" | 37 #include "chrome/browser/prefs/scoped_user_pref_update.h" |
| 38 #include "chrome/browser/ui/webui/web_ui_util.h" | 38 #include "chrome/browser/ui/webui/web_ui_util.h" |
| 39 #include "chrome/common/chrome_notification_types.h" | 39 #include "chrome/common/chrome_notification_types.h" |
| 40 #include "chrome/common/chrome_paths.h" | 40 #include "chrome/common/chrome_paths.h" |
| 41 #include "chrome/common/chrome_switches.h" | 41 #include "chrome/common/chrome_switches.h" |
| 42 #include "content/browser/browser_thread.h" | 42 #include "content/browser/browser_thread.h" |
| 43 #include "content/common/notification_service.h" | 43 #include "content/public/browser/notification_service.h" |
| 44 #include "ui/base/resource/resource_bundle.h" | 44 #include "ui/base/resource/resource_bundle.h" |
| 45 #include "ui/gfx/codec/png_codec.h" | 45 #include "ui/gfx/codec/png_codec.h" |
| 46 | 46 |
| 47 #if defined(TOOLKIT_USES_GTK) | 47 #if defined(TOOLKIT_USES_GTK) |
| 48 #include "chrome/browser/chromeos/wm_ipc.h" | 48 #include "chrome/browser/chromeos/wm_ipc.h" |
| 49 #endif | 49 #endif |
| 50 | 50 |
| 51 namespace chromeos { | 51 namespace chromeos { |
| 52 | 52 |
| 53 namespace { | 53 namespace { |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 DictionaryPrefUpdate images_update(local_state, kUserImages); | 223 DictionaryPrefUpdate images_update(local_state, kUserImages); |
| 224 base::DictionaryValue* image_properties = new base::DictionaryValue(); | 224 base::DictionaryValue* image_properties = new base::DictionaryValue(); |
| 225 image_properties->Set(kImagePathNodeName, new StringValue(image_path)); | 225 image_properties->Set(kImagePathNodeName, new StringValue(image_path)); |
| 226 image_properties->Set(kImageIndexNodeName, | 226 image_properties->Set(kImageIndexNodeName, |
| 227 new base::FundamentalValue(image_index)); | 227 new base::FundamentalValue(image_index)); |
| 228 images_update->SetWithoutPathExpansion(username, image_properties); | 228 images_update->SetWithoutPathExpansion(username, image_properties); |
| 229 DVLOG(1) << "Saving path to user image in Local State."; | 229 DVLOG(1) << "Saving path to user image in Local State."; |
| 230 local_state->SavePersistentPrefs(); | 230 local_state->SavePersistentPrefs(); |
| 231 | 231 |
| 232 NotifyLocalStateChanged(); | 232 NotifyLocalStateChanged(); |
| 233 NotificationService::current()->Notify( | 233 content::NotificationService::current()->Notify( |
| 234 chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED, | 234 chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED, |
| 235 content::Source<UserManager>(this), | 235 content::Source<UserManager>(this), |
| 236 content::Details<const User>(&logged_in_user_)); | 236 content::Details<const User>(&logged_in_user_)); |
| 237 } | 237 } |
| 238 | 238 |
| 239 void UserManager::SaveImageToFile(const SkBitmap& image, | 239 void UserManager::SaveImageToFile(const SkBitmap& image, |
| 240 const FilePath& image_path, | 240 const FilePath& image_path, |
| 241 const std::string& username, | 241 const std::string& username, |
| 242 int image_index) { | 242 int image_index) { |
| 243 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); | 243 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 267 if (!file_util::Delete(image_path, false)) { | 267 if (!file_util::Delete(image_path, false)) { |
| 268 LOG(ERROR) << "Failed to remove user image."; | 268 LOG(ERROR) << "Failed to remove user image."; |
| 269 return; | 269 return; |
| 270 } | 270 } |
| 271 } | 271 } |
| 272 | 272 |
| 273 void UserManager::UpdateOwnership(bool is_owner) { | 273 void UserManager::UpdateOwnership(bool is_owner) { |
| 274 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 274 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 275 | 275 |
| 276 set_current_user_is_owner(is_owner); | 276 set_current_user_is_owner(is_owner); |
| 277 NotificationService::current()->Notify( | 277 content::NotificationService::current()->Notify( |
| 278 chrome::NOTIFICATION_OWNERSHIP_CHECKED, | 278 chrome::NOTIFICATION_OWNERSHIP_CHECKED, |
| 279 NotificationService::AllSources(), | 279 content::NotificationService::AllSources(), |
| 280 NotificationService::NoDetails()); | 280 content::NotificationService::NoDetails()); |
| 281 if (is_owner) { | 281 if (is_owner) { |
| 282 // Also update cached value. | 282 // Also update cached value. |
| 283 UserCrosSettingsProvider::UpdateCachedOwner(logged_in_user_.email()); | 283 UserCrosSettingsProvider::UpdateCachedOwner(logged_in_user_.email()); |
| 284 } | 284 } |
| 285 } | 285 } |
| 286 | 286 |
| 287 void UserManager::CheckOwnership() { | 287 void UserManager::CheckOwnership() { |
| 288 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); | 288 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
| 289 bool is_owner = OwnershipService::GetSharedInstance()->CurrentUserIsOwner(); | 289 bool is_owner = OwnershipService::GetSharedInstance()->CurrentUserIsOwner(); |
| 290 VLOG(1) << "Current user " << (is_owner ? "is owner" : "is not owner"); | 290 VLOG(1) << "Current user " << (is_owner ? "is owner" : "is not owner"); |
| (...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 683 VLOG(1) << "Downloaded profile image for logged-in user."; | 683 VLOG(1) << "Downloaded profile image for logged-in user."; |
| 684 | 684 |
| 685 std::string current_image_data_url = | 685 std::string current_image_data_url = |
| 686 web_ui_util::GetImageDataUrl(logged_in_user_.image()); | 686 web_ui_util::GetImageDataUrl(logged_in_user_.image()); |
| 687 std::string new_image_data_url = | 687 std::string new_image_data_url = |
| 688 web_ui_util::GetImageDataUrl(image); | 688 web_ui_util::GetImageDataUrl(image); |
| 689 if (current_image_data_url != new_image_data_url) { | 689 if (current_image_data_url != new_image_data_url) { |
| 690 VLOG(1) << "Updating profile image for logged-in user"; | 690 VLOG(1) << "Updating profile image for logged-in user"; |
| 691 SetLoggedInUserImage(image, User::kProfileImageIndex); | 691 SetLoggedInUserImage(image, User::kProfileImageIndex); |
| 692 SaveUserImage(logged_in_user_.email(), image, User::kProfileImageIndex); | 692 SaveUserImage(logged_in_user_.email(), image, User::kProfileImageIndex); |
| 693 NotificationService::current()->Notify( | 693 content::NotificationService::current()->Notify( |
| 694 chrome::NOTIFICATION_PROFILE_IMAGE_UPDATED, | 694 chrome::NOTIFICATION_PROFILE_IMAGE_UPDATED, |
| 695 content::Source<UserManager>(this), | 695 content::Source<UserManager>(this), |
| 696 content::Details<const UserManager::User>(&logged_in_user())); | 696 content::Details<const UserManager::User>(&logged_in_user())); |
| 697 } | 697 } |
| 698 } | 698 } |
| 699 | 699 |
| 700 bool UserManager::IsLoggedInAsGuest() const { | 700 bool UserManager::IsLoggedInAsGuest() const { |
| 701 return logged_in_user().email() == kGuestUser; | 701 return logged_in_user().email() == kGuestUser; |
| 702 } | 702 } |
| 703 | 703 |
| 704 // Private constructor and destructor. Do nothing. | 704 // Private constructor and destructor. Do nothing. |
| 705 UserManager::UserManager() | 705 UserManager::UserManager() |
| 706 : ALLOW_THIS_IN_INITIALIZER_LIST(image_loader_(new UserImageLoader(this))), | 706 : ALLOW_THIS_IN_INITIALIZER_LIST(image_loader_(new UserImageLoader(this))), |
| 707 offline_login_(false), | 707 offline_login_(false), |
| 708 current_user_is_owner_(false), | 708 current_user_is_owner_(false), |
| 709 current_user_is_new_(false), | 709 current_user_is_new_(false), |
| 710 user_is_logged_in_(false), | 710 user_is_logged_in_(false), |
| 711 last_image_set_async_(false) { | 711 last_image_set_async_(false) { |
| 712 registrar_.Add(this, chrome::NOTIFICATION_OWNER_KEY_FETCH_ATTEMPT_SUCCEEDED, | 712 registrar_.Add(this, chrome::NOTIFICATION_OWNER_KEY_FETCH_ATTEMPT_SUCCEEDED, |
| 713 NotificationService::AllSources()); | 713 content::NotificationService::AllSources()); |
| 714 } | 714 } |
| 715 | 715 |
| 716 UserManager::~UserManager() { | 716 UserManager::~UserManager() { |
| 717 image_loader_->set_delegate(NULL); | 717 image_loader_->set_delegate(NULL); |
| 718 } | 718 } |
| 719 | 719 |
| 720 FilePath UserManager::GetImagePathForUser(const std::string& username) { | 720 FilePath UserManager::GetImagePathForUser(const std::string& username) { |
| 721 std::string filename = username + ".png"; | 721 std::string filename = username + ".png"; |
| 722 FilePath user_data_dir; | 722 FilePath user_data_dir; |
| 723 PathService::Get(chrome::DIR_USER_DATA, &user_data_dir); | 723 PathService::Get(chrome::DIR_USER_DATA, &user_data_dir); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 751 std::string local_user_pin; | 751 std::string local_user_pin; |
| 752 CrosLibrary::Get()->GetCryptohomeLibrary()->Pkcs11GetTpmTokenInfo( | 752 CrosLibrary::Get()->GetCryptohomeLibrary()->Pkcs11GetTpmTokenInfo( |
| 753 &local_token_name, &local_user_pin); | 753 &local_token_name, &local_user_pin); |
| 754 if (token_name) | 754 if (token_name) |
| 755 *token_name = local_token_name; | 755 *token_name = local_token_name; |
| 756 if (user_pin) | 756 if (user_pin) |
| 757 *user_pin = local_user_pin; | 757 *user_pin = local_user_pin; |
| 758 } | 758 } |
| 759 | 759 |
| 760 void UserManager::NotifyOnLogin() { | 760 void UserManager::NotifyOnLogin() { |
| 761 NotificationService::current()->Notify( | 761 content::NotificationService::current()->Notify( |
| 762 chrome::NOTIFICATION_LOGIN_USER_CHANGED, | 762 chrome::NOTIFICATION_LOGIN_USER_CHANGED, |
| 763 content::Source<UserManager>(this), | 763 content::Source<UserManager>(this), |
| 764 content::Details<const User>(&logged_in_user_)); | 764 content::Details<const User>(&logged_in_user_)); |
| 765 | 765 |
| 766 chromeos::input_method::InputMethodManager::GetInstance()-> | 766 chromeos::input_method::InputMethodManager::GetInstance()-> |
| 767 SetDeferImeStartup(false); | 767 SetDeferImeStartup(false); |
| 768 // Shut down the IME so that it will reload the user's settings. | 768 // Shut down the IME so that it will reload the user's settings. |
| 769 chromeos::input_method::InputMethodManager::GetInstance()-> | 769 chromeos::input_method::InputMethodManager::GetInstance()-> |
| 770 StopInputMethodDaemon(); | 770 StopInputMethodDaemon(); |
| 771 | 771 |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 828 observer_list_, | 828 observer_list_, |
| 829 LocalStateChanged(this)); | 829 LocalStateChanged(this)); |
| 830 } | 830 } |
| 831 | 831 |
| 832 void UserManager::DownloadProfileImage() { | 832 void UserManager::DownloadProfileImage() { |
| 833 profile_image_downloader_.reset(new ProfileImageDownloader(this)); | 833 profile_image_downloader_.reset(new ProfileImageDownloader(this)); |
| 834 profile_image_downloader_->Start(); | 834 profile_image_downloader_->Start(); |
| 835 } | 835 } |
| 836 | 836 |
| 837 } // namespace chromeos | 837 } // namespace chromeos |
| OLD | NEW |