| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/ui/webui/settings/chromeos/change_picture_handler.h" | 5 #include "chrome/browser/ui/webui/settings/chromeos/change_picture_handler.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 109 web_ui()->RegisterMessageCallback( | 109 web_ui()->RegisterMessageCallback( |
| 110 "onChangePicturePageInitialized", | 110 "onChangePicturePageInitialized", |
| 111 base::Bind(&ChangePictureHandler::HandlePageInitialized, | 111 base::Bind(&ChangePictureHandler::HandlePageInitialized, |
| 112 base::Unretained(this))); | 112 base::Unretained(this))); |
| 113 web_ui()->RegisterMessageCallback( | 113 web_ui()->RegisterMessageCallback( |
| 114 "selectImage", base::Bind(&ChangePictureHandler::HandleSelectImage, | 114 "selectImage", base::Bind(&ChangePictureHandler::HandleSelectImage, |
| 115 base::Unretained(this))); | 115 base::Unretained(this))); |
| 116 } | 116 } |
| 117 | 117 |
| 118 void ChangePictureHandler::OnJavascriptAllowed() { | 118 void ChangePictureHandler::OnJavascriptAllowed() { |
| 119 registrar_.Add(this, chrome::NOTIFICATION_PROFILE_IMAGE_UPDATED, | 119 user_manager::UserManager::Get()->AddObserver(this); |
| 120 content::NotificationService::AllSources()); | |
| 121 registrar_.Add(this, chrome::NOTIFICATION_PROFILE_IMAGE_UPDATE_FAILED, | |
| 122 content::NotificationService::AllSources()); | |
| 123 registrar_.Add(this, chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED, | |
| 124 content::NotificationService::AllSources()); | |
| 125 | 120 |
| 126 camera_observer_.Add(CameraPresenceNotifier::GetInstance()); | 121 camera_observer_.Add(CameraPresenceNotifier::GetInstance()); |
| 127 } | 122 } |
| 128 | 123 |
| 129 void ChangePictureHandler::OnJavascriptDisallowed() { | 124 void ChangePictureHandler::OnJavascriptDisallowed() { |
| 130 registrar_.RemoveAll(); | 125 user_manager::UserManager::Get()->RemoveObserver(this); |
| 131 | 126 |
| 132 camera_observer_.Remove(CameraPresenceNotifier::GetInstance()); | 127 camera_observer_.Remove(CameraPresenceNotifier::GetInstance()); |
| 133 } | 128 } |
| 134 | 129 |
| 135 void ChangePictureHandler::SendDefaultImages() { | 130 void ChangePictureHandler::SendDefaultImages() { |
| 136 base::ListValue image_urls; | 131 base::ListValue image_urls; |
| 137 for (int i = default_user_image::kFirstDefaultImageIndex; | 132 for (int i = default_user_image::kFirstDefaultImageIndex; |
| 138 i < default_user_image::kDefaultImagesCount; ++i) { | 133 i < default_user_image::kDefaultImagesCount; ++i) { |
| 139 std::unique_ptr<base::DictionaryValue> image_data( | 134 std::unique_ptr<base::DictionaryValue> image_data( |
| 140 new base::DictionaryValue); | 135 new base::DictionaryValue); |
| (...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 375 void ChangePictureHandler::SetCameraPresent(bool present) { | 370 void ChangePictureHandler::SetCameraPresent(bool present) { |
| 376 CallJavascriptFunction("cr.webUIListenerCallback", | 371 CallJavascriptFunction("cr.webUIListenerCallback", |
| 377 base::StringValue("camera-presence-changed"), | 372 base::StringValue("camera-presence-changed"), |
| 378 base::FundamentalValue(present)); | 373 base::FundamentalValue(present)); |
| 379 } | 374 } |
| 380 | 375 |
| 381 void ChangePictureHandler::OnCameraPresenceCheckDone(bool is_camera_present) { | 376 void ChangePictureHandler::OnCameraPresenceCheckDone(bool is_camera_present) { |
| 382 SetCameraPresent(is_camera_present); | 377 SetCameraPresent(is_camera_present); |
| 383 } | 378 } |
| 384 | 379 |
| 385 void ChangePictureHandler::Observe( | 380 void ChangePictureHandler::OnUserImageChanged(const user_manager::User& user) { |
| 386 int type, | 381 // Not initialized yet. |
| 387 const content::NotificationSource& source, | 382 if (previous_image_index_ == user_manager::User::USER_IMAGE_INVALID) |
| 388 const content::NotificationDetails& details) { | 383 return; |
| 389 if (type == chrome::NOTIFICATION_PROFILE_IMAGE_UPDATED) { | 384 SendSelectedImage(); |
| 390 // User profile image has been updated. | 385 } |
| 391 SendProfileImage(*content::Details<const gfx::ImageSkia>(details).ptr(), | 386 |
| 392 false); | 387 void ChangePictureHandler::OnUserProfileImageUpdated( |
| 393 } else if (type == chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED) { | 388 const user_manager::User& user, |
| 394 // Not initialized yet. | 389 const gfx::ImageSkia& profile_image) { |
| 395 if (previous_image_index_ == user_manager::User::USER_IMAGE_INVALID) | 390 // User profile image has been updated. |
| 396 return; | 391 SendProfileImage(profile_image, false); |
| 397 SendSelectedImage(); | |
| 398 } | |
| 399 } | 392 } |
| 400 | 393 |
| 401 gfx::NativeWindow ChangePictureHandler::GetBrowserWindow() const { | 394 gfx::NativeWindow ChangePictureHandler::GetBrowserWindow() const { |
| 402 Browser* browser = | 395 Browser* browser = |
| 403 chrome::FindBrowserWithWebContents(web_ui()->GetWebContents()); | 396 chrome::FindBrowserWithWebContents(web_ui()->GetWebContents()); |
| 404 return browser->window()->GetNativeWindow(); | 397 return browser->window()->GetNativeWindow(); |
| 405 } | 398 } |
| 406 | 399 |
| 407 void ChangePictureHandler::OnImageDecoded(const SkBitmap& decoded_image) { | 400 void ChangePictureHandler::OnImageDecoded(const SkBitmap& decoded_image) { |
| 408 user_photo_ = gfx::ImageSkia::CreateFrom1xBitmap(decoded_image); | 401 user_photo_ = gfx::ImageSkia::CreateFrom1xBitmap(decoded_image); |
| 409 SetImageFromCamera(user_photo_); | 402 SetImageFromCamera(user_photo_); |
| 410 } | 403 } |
| 411 | 404 |
| 412 void ChangePictureHandler::OnDecodeImageFailed() { | 405 void ChangePictureHandler::OnDecodeImageFailed() { |
| 413 NOTREACHED() << "Failed to decode PNG image from WebUI"; | 406 NOTREACHED() << "Failed to decode PNG image from WebUI"; |
| 414 } | 407 } |
| 415 | 408 |
| 416 const user_manager::User* ChangePictureHandler::GetUser() const { | 409 const user_manager::User* ChangePictureHandler::GetUser() const { |
| 417 Profile* profile = Profile::FromWebUI(web_ui()); | 410 Profile* profile = Profile::FromWebUI(web_ui()); |
| 418 const user_manager::User* user = | 411 const user_manager::User* user = |
| 419 ProfileHelper::Get()->GetUserByProfile(profile); | 412 ProfileHelper::Get()->GetUserByProfile(profile); |
| 420 if (!user) | 413 if (!user) |
| 421 return user_manager::UserManager::Get()->GetActiveUser(); | 414 return user_manager::UserManager::Get()->GetActiveUser(); |
| 422 return user; | 415 return user; |
| 423 } | 416 } |
| 424 | 417 |
| 425 } // namespace settings | 418 } // namespace settings |
| 426 } // namespace chromeos | 419 } // namespace chromeos |
| OLD | NEW |