Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(69)

Side by Side Diff: chrome/browser/ui/webui/settings/chromeos/change_picture_handler.cc

Issue 2568973002: chromeos: Replace user image notifications with observer (Closed)
Patch Set: rebase Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698