| 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/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 "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
| (...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 278 web_ui()->CallJavascriptFunction("ChangePictureOptions.setProfileImage", | 278 web_ui()->CallJavascriptFunction("ChangePictureOptions.setProfileImage", |
| 279 data_url, select); | 279 data_url, select); |
| 280 } | 280 } |
| 281 | 281 |
| 282 void ChangePictureOptionsHandler::UpdateProfileImage() { | 282 void ChangePictureOptionsHandler::UpdateProfileImage() { |
| 283 UserManager* user_manager = UserManager::Get(); | 283 UserManager* user_manager = UserManager::Get(); |
| 284 | 284 |
| 285 // If we have a downloaded profile image and haven't sent it in | 285 // If we have a downloaded profile image and haven't sent it in |
| 286 // |SendSelectedImage|, send it now (without selecting). | 286 // |SendSelectedImage|, send it now (without selecting). |
| 287 if (previous_image_index_ != User::kProfileImageIndex && | 287 if (previous_image_index_ != User::kProfileImageIndex && |
| 288 !user_manager->DownloadedProfileImage().empty()) | 288 !user_manager->DownloadedProfileImage().isNull()) |
| 289 SendProfileImage(user_manager->DownloadedProfileImage(), false); | 289 SendProfileImage(user_manager->DownloadedProfileImage(), false); |
| 290 | 290 |
| 291 user_manager->DownloadProfileImage(kProfileDownloadReason); | 291 user_manager->DownloadProfileImage(kProfileDownloadReason); |
| 292 } | 292 } |
| 293 | 293 |
| 294 void ChangePictureOptionsHandler::HandleSelectImage(const ListValue* args) { | 294 void ChangePictureOptionsHandler::HandleSelectImage(const ListValue* args) { |
| 295 std::string image_url; | 295 std::string image_url; |
| 296 if (!args || | 296 if (!args || |
| 297 args->GetSize() != 1 || | 297 args->GetSize() != 1 || |
| 298 !args->GetString(0, &image_url)) { | 298 !args->GetString(0, &image_url)) { |
| 299 NOTREACHED(); | 299 NOTREACHED(); |
| 300 return; | 300 return; |
| 301 } | 301 } |
| 302 DCHECK(!image_url.empty()); | 302 DCHECK(!image_url.empty()); |
| 303 | 303 |
| 304 UserManager* user_manager = UserManager::Get(); | 304 UserManager* user_manager = UserManager::Get(); |
| 305 const User& user = user_manager->GetLoggedInUser(); | 305 const User& user = user_manager->GetLoggedInUser(); |
| 306 int image_index = User::kInvalidImageIndex; | 306 int image_index = User::kInvalidImageIndex; |
| 307 bool waiting_for_camera_photo = false; | 307 bool waiting_for_camera_photo = false; |
| 308 | 308 |
| 309 if (StartsWithASCII(image_url, chrome::kChromeUIUserImageURL, false)) { | 309 if (StartsWithASCII(image_url, chrome::kChromeUIUserImageURL, false)) { |
| 310 // Image from file/camera uses |kChromeUIUserImageURL| as URL while | 310 // Image from file/camera uses |kChromeUIUserImageURL| as URL while |
| 311 // current profile image always has a full data URL. | 311 // current profile image always has a full data URL. |
| 312 // This way transition from (current profile image) to | 312 // This way transition from (current profile image) to |
| 313 // (profile image, current image from file) is easier. | 313 // (profile image, current image from file) is easier. |
| 314 // Also, old (not available for selection any more) default images use | 314 // Also, old (not available for selection any more) default images use |
| 315 // this URL, too. | 315 // this URL, too. |
| 316 | 316 |
| 317 if (previous_image_index_ == User::kExternalImageIndex) { | 317 if (previous_image_index_ == User::kExternalImageIndex) { |
| 318 DCHECK(!previous_image_.empty()); | 318 DCHECK(!previous_image_.isNull()); |
| 319 user_manager->SaveUserImage(user.email(), | 319 user_manager->SaveUserImage(user.email(), |
| 320 UserImage::CreateAndEncode(previous_image_)); | 320 UserImage::CreateAndEncode(previous_image_)); |
| 321 } else { | 321 } else { |
| 322 DCHECK(previous_image_index_ >= 0 && | 322 DCHECK(previous_image_index_ >= 0 && |
| 323 previous_image_index_ < kFirstDefaultImageIndex); | 323 previous_image_index_ < kFirstDefaultImageIndex); |
| 324 user_manager->SaveUserDefaultImageIndex(user.email(), | 324 user_manager->SaveUserDefaultImageIndex(user.email(), |
| 325 previous_image_index_); | 325 previous_image_index_); |
| 326 } | 326 } |
| 327 | 327 |
| 328 UMA_HISTOGRAM_ENUMERATION("UserImage.ChangeChoice", | 328 UMA_HISTOGRAM_ENUMERATION("UserImage.ChangeChoice", |
| 329 kHistogramImageOld, | 329 kHistogramImageOld, |
| 330 kHistogramImagesCount); | 330 kHistogramImagesCount); |
| 331 VLOG(1) << "Selected old user image"; | 331 VLOG(1) << "Selected old user image"; |
| 332 } else if (IsDefaultImageUrl(image_url, &image_index)) { | 332 } else if (IsDefaultImageUrl(image_url, &image_index)) { |
| 333 // One of the default user images. | 333 // One of the default user images. |
| 334 user_manager->SaveUserDefaultImageIndex(user.email(), image_index); | 334 user_manager->SaveUserDefaultImageIndex(user.email(), image_index); |
| 335 | 335 |
| 336 UMA_HISTOGRAM_ENUMERATION("UserImage.ChangeChoice", | 336 UMA_HISTOGRAM_ENUMERATION("UserImage.ChangeChoice", |
| 337 GetDefaultImageHistogramValue(image_index), | 337 GetDefaultImageHistogramValue(image_index), |
| 338 kHistogramImagesCount); | 338 kHistogramImagesCount); |
| 339 VLOG(1) << "Selected default user image: " << image_index; | 339 VLOG(1) << "Selected default user image: " << image_index; |
| 340 } else if (image_url == user_photo_data_url_) { | 340 } else if (image_url == user_photo_data_url_) { |
| 341 // Camera image is selected. | 341 // Camera image is selected. |
| 342 if (user_photo_.empty()) { | 342 if (user_photo_.isNull()) { |
| 343 DCHECK(image_decoder_.get()); | 343 DCHECK(image_decoder_.get()); |
| 344 waiting_for_camera_photo = true; | 344 waiting_for_camera_photo = true; |
| 345 VLOG(1) << "Still waiting for camera image to decode"; | 345 VLOG(1) << "Still waiting for camera image to decode"; |
| 346 } else { | 346 } else { |
| 347 OnPhotoAccepted(user_photo_); | 347 OnPhotoAccepted(user_photo_); |
| 348 } | 348 } |
| 349 } else { | 349 } else { |
| 350 // Profile image selected. Could be previous (old) user image. | 350 // Profile image selected. Could be previous (old) user image. |
| 351 user_manager->SaveUserImageFromProfileImage(user.email()); | 351 user_manager->SaveUserImageFromProfileImage(user.email()); |
| 352 | 352 |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 441 OnPhotoAccepted(user_photo_); | 441 OnPhotoAccepted(user_photo_); |
| 442 } | 442 } |
| 443 | 443 |
| 444 void ChangePictureOptionsHandler::OnDecodeImageFailed( | 444 void ChangePictureOptionsHandler::OnDecodeImageFailed( |
| 445 const ImageDecoder* decoder) { | 445 const ImageDecoder* decoder) { |
| 446 NOTREACHED() << "Failed to decode PNG image from WebUI"; | 446 NOTREACHED() << "Failed to decode PNG image from WebUI"; |
| 447 } | 447 } |
| 448 | 448 |
| 449 } // namespace options | 449 } // namespace options |
| 450 } // namespace chromeos | 450 } // namespace chromeos |
| OLD | NEW |