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

Side by Side Diff: chrome/browser/ui/webui/options/chromeos/change_picture_options_handler.cc

Issue 398753004: [cros] Move User class to user_manager component. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 5 months 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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/options/chromeos/change_picture_options_handle r.h" 5 #include "chrome/browser/ui/webui/options/chromeos/change_picture_options_handle r.h"
6 6
7 #include "ash/audio/sounds.h" 7 #include "ash/audio/sounds.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/bind_helpers.h" 9 #include "base/bind_helpers.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
11 #include "base/metrics/histogram.h" 11 #include "base/metrics/histogram.h"
12 #include "base/path_service.h" 12 #include "base/path_service.h"
13 #include "base/strings/string_util.h" 13 #include "base/strings/string_util.h"
14 #include "base/strings/utf_string_conversions.h" 14 #include "base/strings/utf_string_conversions.h"
15 #include "base/values.h" 15 #include "base/values.h"
16 #include "chrome/browser/chrome_notification_types.h" 16 #include "chrome/browser/chrome_notification_types.h"
17 #include "chrome/browser/chromeos/camera_presence_notifier.h" 17 #include "chrome/browser/chromeos/camera_presence_notifier.h"
18 #include "chrome/browser/chromeos/login/users/avatar/user_image_manager.h" 18 #include "chrome/browser/chromeos/login/users/avatar/user_image_manager.h"
19 #include "chrome/browser/chromeos/login/users/user_manager.h" 19 #include "chrome/browser/chromeos/login/users/user_manager.h"
20 #include "chrome/browser/chromeos/profiles/profile_helper.h" 20 #include "chrome/browser/chromeos/profiles/profile_helper.h"
21 #include "chrome/browser/ui/browser_finder.h" 21 #include "chrome/browser/ui/browser_finder.h"
22 #include "chrome/browser/ui/browser_window.h" 22 #include "chrome/browser/ui/browser_window.h"
23 #include "chrome/browser/ui/chrome_select_file_policy.h" 23 #include "chrome/browser/ui/chrome_select_file_policy.h"
24 #include "chrome/common/chrome_paths.h" 24 #include "chrome/common/chrome_paths.h"
25 #include "chrome/common/chrome_switches.h" 25 #include "chrome/common/chrome_switches.h"
26 #include "chrome/common/url_constants.h" 26 #include "chrome/common/url_constants.h"
27 #include "chromeos/audio/chromeos_sounds.h" 27 #include "chromeos/audio/chromeos_sounds.h"
28 #include "components/user_manager/user.h"
28 #include "components/user_manager/user_image/default_user_images.h" 29 #include "components/user_manager/user_image/default_user_images.h"
29 #include "components/user_manager/user_image/user_image.h" 30 #include "components/user_manager/user_image/user_image.h"
30 #include "content/public/browser/browser_thread.h" 31 #include "content/public/browser/browser_thread.h"
31 #include "content/public/browser/notification_service.h" 32 #include "content/public/browser/notification_service.h"
32 #include "content/public/browser/web_ui.h" 33 #include "content/public/browser/web_ui.h"
33 #include "content/public/common/url_constants.h" 34 #include "content/public/common/url_constants.h"
34 #include "grit/browser_resources.h" 35 #include "grit/browser_resources.h"
35 #include "grit/generated_resources.h" 36 #include "grit/generated_resources.h"
36 #include "grit/theme_resources.h" 37 #include "grit/theme_resources.h"
37 #include "net/base/data_url.h" 38 #include "net/base/data_url.h"
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 return file_type_info; 71 return file_type_info;
71 } 72 }
72 73
73 // Time histogram suffix for profile image download. 74 // Time histogram suffix for profile image download.
74 const char kProfileDownloadReason[] = "Preferences"; 75 const char kProfileDownloadReason[] = "Preferences";
75 76
76 } // namespace 77 } // namespace
77 78
78 ChangePictureOptionsHandler::ChangePictureOptionsHandler() 79 ChangePictureOptionsHandler::ChangePictureOptionsHandler()
79 : previous_image_url_(url::kAboutBlankURL), 80 : previous_image_url_(url::kAboutBlankURL),
80 previous_image_index_(User::kInvalidImageIndex) { 81 previous_image_index_(user_manager::User::USER_IMAGE_INVALID) {
81 registrar_.Add(this, chrome::NOTIFICATION_PROFILE_IMAGE_UPDATED, 82 registrar_.Add(this, chrome::NOTIFICATION_PROFILE_IMAGE_UPDATED,
82 content::NotificationService::AllSources()); 83 content::NotificationService::AllSources());
83 registrar_.Add(this, chrome::NOTIFICATION_PROFILE_IMAGE_UPDATE_FAILED, 84 registrar_.Add(this, chrome::NOTIFICATION_PROFILE_IMAGE_UPDATE_FAILED,
84 content::NotificationService::AllSources()); 85 content::NotificationService::AllSources());
85 registrar_.Add(this, chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED, 86 registrar_.Add(this, chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED,
86 content::NotificationService::AllSources()); 87 content::NotificationService::AllSources());
87 88
88 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); 89 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
89 media::SoundsManager* manager = media::SoundsManager::Get(); 90 media::SoundsManager* manager = media::SoundsManager::Get();
90 manager->Initialize(SOUND_OBJECT_DELETE, 91 manager->Initialize(SOUND_OBJECT_DELETE,
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 UpdateProfileImage(); 261 UpdateProfileImage();
261 CameraPresenceNotifier::GetInstance()->AddObserver(this); 262 CameraPresenceNotifier::GetInstance()->AddObserver(this);
262 } 263 }
263 264
264 void ChangePictureOptionsHandler::HandlePageHidden( 265 void ChangePictureOptionsHandler::HandlePageHidden(
265 const base::ListValue* args) { 266 const base::ListValue* args) {
266 CameraPresenceNotifier::GetInstance()->RemoveObserver(this); 267 CameraPresenceNotifier::GetInstance()->RemoveObserver(this);
267 } 268 }
268 269
269 void ChangePictureOptionsHandler::SendSelectedImage() { 270 void ChangePictureOptionsHandler::SendSelectedImage() {
270 const User* user = GetUser(); 271 const user_manager::User* user = GetUser();
271 DCHECK(!user->email().empty()); 272 DCHECK(!user->email().empty());
272 273
273 previous_image_index_ = user->image_index(); 274 previous_image_index_ = user->image_index();
274 switch (previous_image_index_) { 275 switch (previous_image_index_) {
275 case User::kExternalImageIndex: { 276 case user_manager::User::USER_IMAGE_EXTERNAL: {
276 // User has image from camera/file, record it and add to the image list. 277 // User has image from camera/file, record it and add to the image list.
277 previous_image_ = user->GetImage(); 278 previous_image_ = user->GetImage();
278 SendOldImage(webui::GetBitmapDataUrl(*previous_image_.bitmap())); 279 SendOldImage(webui::GetBitmapDataUrl(*previous_image_.bitmap()));
279 break; 280 break;
280 } 281 }
281 case User::kProfileImageIndex: { 282 case user_manager::User::USER_IMAGE_PROFILE: {
282 // User has his/her Profile image as the current image. 283 // User has his/her Profile image as the current image.
283 SendProfileImage(user->GetImage(), true); 284 SendProfileImage(user->GetImage(), true);
284 break; 285 break;
285 } 286 }
286 default: { 287 default: {
287 DCHECK(previous_image_index_ >= 0 && 288 DCHECK(previous_image_index_ >= 0 &&
288 previous_image_index_ < user_manager::kDefaultImagesCount); 289 previous_image_index_ < user_manager::kDefaultImagesCount);
289 if (previous_image_index_ >= user_manager::kFirstDefaultImageIndex) { 290 if (previous_image_index_ >= user_manager::kFirstDefaultImageIndex) {
290 // User has image from the current set of default images. 291 // User has image from the current set of default images.
291 base::StringValue image_url( 292 base::StringValue image_url(
(...skipping 15 matching lines...) Expand all
307 base::FundamentalValue select(should_select); 308 base::FundamentalValue select(should_select);
308 web_ui()->CallJavascriptFunction("ChangePictureOptions.setProfileImage", 309 web_ui()->CallJavascriptFunction("ChangePictureOptions.setProfileImage",
309 data_url, select); 310 data_url, select);
310 } 311 }
311 312
312 void ChangePictureOptionsHandler::UpdateProfileImage() { 313 void ChangePictureOptionsHandler::UpdateProfileImage() {
313 UserImageManager* user_image_manager = 314 UserImageManager* user_image_manager =
314 UserManager::Get()->GetUserImageManager(GetUser()->email()); 315 UserManager::Get()->GetUserImageManager(GetUser()->email());
315 // If we have a downloaded profile image and haven't sent it in 316 // If we have a downloaded profile image and haven't sent it in
316 // |SendSelectedImage|, send it now (without selecting). 317 // |SendSelectedImage|, send it now (without selecting).
317 if (previous_image_index_ != User::kProfileImageIndex && 318 if (previous_image_index_ != user_manager::User::USER_IMAGE_PROFILE &&
318 !user_image_manager->DownloadedProfileImage().isNull()) 319 !user_image_manager->DownloadedProfileImage().isNull())
319 SendProfileImage(user_image_manager->DownloadedProfileImage(), false); 320 SendProfileImage(user_image_manager->DownloadedProfileImage(), false);
320 321
321 user_image_manager->DownloadProfileImage(kProfileDownloadReason); 322 user_image_manager->DownloadProfileImage(kProfileDownloadReason);
322 } 323 }
323 324
324 void ChangePictureOptionsHandler::SendOldImage(const std::string& image_url) { 325 void ChangePictureOptionsHandler::SendOldImage(const std::string& image_url) {
325 previous_image_url_ = image_url; 326 previous_image_url_ = image_url;
326 base::StringValue url(image_url); 327 base::StringValue url(image_url);
327 web_ui()->CallJavascriptFunction("ChangePictureOptions.setOldImage", url); 328 web_ui()->CallJavascriptFunction("ChangePictureOptions.setOldImage", url);
328 } 329 }
329 330
330 void ChangePictureOptionsHandler::HandleSelectImage( 331 void ChangePictureOptionsHandler::HandleSelectImage(
331 const base::ListValue* args) { 332 const base::ListValue* args) {
332 std::string image_url; 333 std::string image_url;
333 std::string image_type; 334 std::string image_type;
334 if (!args || 335 if (!args ||
335 args->GetSize() != 2 || 336 args->GetSize() != 2 ||
336 !args->GetString(0, &image_url) || 337 !args->GetString(0, &image_url) ||
337 !args->GetString(1, &image_type)) { 338 !args->GetString(1, &image_type)) {
338 NOTREACHED(); 339 NOTREACHED();
339 return; 340 return;
340 } 341 }
341 DCHECK(!image_url.empty()); 342 DCHECK(!image_url.empty());
342 DCHECK(!image_type.empty()); 343 DCHECK(!image_type.empty());
343 344
344 UserImageManager* user_image_manager = 345 UserImageManager* user_image_manager =
345 UserManager::Get()->GetUserImageManager(GetUser()->email()); 346 UserManager::Get()->GetUserImageManager(GetUser()->email());
346 int image_index = User::kInvalidImageIndex; 347 int image_index = user_manager::User::USER_IMAGE_INVALID;
347 bool waiting_for_camera_photo = false; 348 bool waiting_for_camera_photo = false;
348 349
349 if (image_type == "old") { 350 if (image_type == "old") {
350 // Previous image (from camera or manually uploaded) re-selected. 351 // Previous image (from camera or manually uploaded) re-selected.
351 DCHECK(!previous_image_.isNull()); 352 DCHECK(!previous_image_.isNull());
352 user_image_manager->SaveUserImage( 353 user_image_manager->SaveUserImage(
353 user_manager::UserImage::CreateAndEncode(previous_image_)); 354 user_manager::UserImage::CreateAndEncode(previous_image_));
354 355
355 UMA_HISTOGRAM_ENUMERATION("UserImage.ChangeChoice", 356 UMA_HISTOGRAM_ENUMERATION("UserImage.ChangeChoice",
356 user_manager::kHistogramImageOld, 357 user_manager::kHistogramImageOld,
(...skipping 15 matching lines...) Expand all
372 DCHECK(image_decoder_.get()); 373 DCHECK(image_decoder_.get());
373 waiting_for_camera_photo = true; 374 waiting_for_camera_photo = true;
374 VLOG(1) << "Still waiting for camera image to decode"; 375 VLOG(1) << "Still waiting for camera image to decode";
375 } else { 376 } else {
376 SetImageFromCamera(user_photo_); 377 SetImageFromCamera(user_photo_);
377 } 378 }
378 } else if (image_type == "profile") { 379 } else if (image_type == "profile") {
379 // Profile image selected. Could be previous (old) user image. 380 // Profile image selected. Could be previous (old) user image.
380 user_image_manager->SaveUserImageFromProfileImage(); 381 user_image_manager->SaveUserImageFromProfileImage();
381 382
382 if (previous_image_index_ == User::kProfileImageIndex) { 383 if (previous_image_index_ == user_manager::User::USER_IMAGE_PROFILE) {
383 UMA_HISTOGRAM_ENUMERATION("UserImage.ChangeChoice", 384 UMA_HISTOGRAM_ENUMERATION("UserImage.ChangeChoice",
384 user_manager::kHistogramImageOld, 385 user_manager::kHistogramImageOld,
385 user_manager::kHistogramImagesCount); 386 user_manager::kHistogramImagesCount);
386 VLOG(1) << "Selected old (profile) user image"; 387 VLOG(1) << "Selected old (profile) user image";
387 } else { 388 } else {
388 UMA_HISTOGRAM_ENUMERATION("UserImage.ChangeChoice", 389 UMA_HISTOGRAM_ENUMERATION("UserImage.ChangeChoice",
389 user_manager::kHistogramImageFromProfile, 390 user_manager::kHistogramImageFromProfile,
390 user_manager::kHistogramImagesCount); 391 user_manager::kHistogramImagesCount);
391 VLOG(1) << "Selected profile image"; 392 VLOG(1) << "Selected profile image";
392 } 393 }
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 void ChangePictureOptionsHandler::Observe( 438 void ChangePictureOptionsHandler::Observe(
438 int type, 439 int type,
439 const content::NotificationSource& source, 440 const content::NotificationSource& source,
440 const content::NotificationDetails& details) { 441 const content::NotificationDetails& details) {
441 if (type == chrome::NOTIFICATION_PROFILE_IMAGE_UPDATED) { 442 if (type == chrome::NOTIFICATION_PROFILE_IMAGE_UPDATED) {
442 // User profile image has been updated. 443 // User profile image has been updated.
443 SendProfileImage(*content::Details<const gfx::ImageSkia>(details).ptr(), 444 SendProfileImage(*content::Details<const gfx::ImageSkia>(details).ptr(),
444 false); 445 false);
445 } else if (type == chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED) { 446 } else if (type == chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED) {
446 // Not initialized yet. 447 // Not initialized yet.
447 if (previous_image_index_ == User::kInvalidImageIndex) 448 if (previous_image_index_ == user_manager::User::USER_IMAGE_INVALID)
448 return; 449 return;
449 SendSelectedImage(); 450 SendSelectedImage();
450 } 451 }
451 } 452 }
452 453
453 gfx::NativeWindow ChangePictureOptionsHandler::GetBrowserWindow() const { 454 gfx::NativeWindow ChangePictureOptionsHandler::GetBrowserWindow() const {
454 Browser* browser = 455 Browser* browser =
455 chrome::FindBrowserWithWebContents(web_ui()->GetWebContents()); 456 chrome::FindBrowserWithWebContents(web_ui()->GetWebContents());
456 return browser->window()->GetNativeWindow(); 457 return browser->window()->GetNativeWindow();
457 } 458 }
458 459
459 void ChangePictureOptionsHandler::OnImageDecoded( 460 void ChangePictureOptionsHandler::OnImageDecoded(
460 const ImageDecoder* decoder, 461 const ImageDecoder* decoder,
461 const SkBitmap& decoded_image) { 462 const SkBitmap& decoded_image) {
462 DCHECK_EQ(image_decoder_.get(), decoder); 463 DCHECK_EQ(image_decoder_.get(), decoder);
463 image_decoder_ = NULL; 464 image_decoder_ = NULL;
464 user_photo_ = gfx::ImageSkia::CreateFrom1xBitmap(decoded_image); 465 user_photo_ = gfx::ImageSkia::CreateFrom1xBitmap(decoded_image);
465 SetImageFromCamera(user_photo_); 466 SetImageFromCamera(user_photo_);
466 } 467 }
467 468
468 void ChangePictureOptionsHandler::OnDecodeImageFailed( 469 void ChangePictureOptionsHandler::OnDecodeImageFailed(
469 const ImageDecoder* decoder) { 470 const ImageDecoder* decoder) {
470 NOTREACHED() << "Failed to decode PNG image from WebUI"; 471 NOTREACHED() << "Failed to decode PNG image from WebUI";
471 } 472 }
472 473
473 User* ChangePictureOptionsHandler::GetUser() const { 474 user_manager::User* ChangePictureOptionsHandler::GetUser() const {
474 Profile* profile = Profile::FromWebUI(web_ui()); 475 Profile* profile = Profile::FromWebUI(web_ui());
475 User* user = ProfileHelper::Get()->GetUserByProfile(profile); 476 user_manager::User* user = ProfileHelper::Get()->GetUserByProfile(profile);
476 if (!user) 477 if (!user)
477 return UserManager::Get()->GetActiveUser(); 478 return UserManager::Get()->GetActiveUser();
478 return user; 479 return user;
479 } 480 }
480 481
481 } // namespace options 482 } // namespace options
482 } // namespace chromeos 483 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698