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

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

Issue 10836066: [cros] Define a range of stock user images availables for selection. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge Created 8 years, 4 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
« no previous file with comments | « chrome/browser/ui/webui/chromeos/login/user_image_screen_handler.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/options2/chromeos/change_picture_options_handl er.h" 5 #include "chrome/browser/ui/webui/options2/chromeos/change_picture_options_handl er.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 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 web_ui()->RegisterMessageCallback("onChangePicturePageInitialized", 129 web_ui()->RegisterMessageCallback("onChangePicturePageInitialized",
130 base::Bind(&ChangePictureOptionsHandler::HandlePageInitialized, 130 base::Bind(&ChangePictureOptionsHandler::HandlePageInitialized,
131 base::Unretained(this))); 131 base::Unretained(this)));
132 web_ui()->RegisterMessageCallback("selectImage", 132 web_ui()->RegisterMessageCallback("selectImage",
133 base::Bind(&ChangePictureOptionsHandler::HandleSelectImage, 133 base::Bind(&ChangePictureOptionsHandler::HandleSelectImage,
134 base::Unretained(this))); 134 base::Unretained(this)));
135 } 135 }
136 136
137 void ChangePictureOptionsHandler::SendDefaultImages() { 137 void ChangePictureOptionsHandler::SendDefaultImages() {
138 ListValue image_urls; 138 ListValue image_urls;
139 for (int i = 0; i < kDefaultImagesCount; ++i) { 139 for (int i = kFirstDefaultImageIndex; i < kDefaultImagesCount; ++i) {
140 image_urls.Append(new StringValue(GetDefaultImageUrl(i))); 140 image_urls.Append(new StringValue(GetDefaultImageUrl(i)));
141 } 141 }
142 web_ui()->CallJavascriptFunction("ChangePictureOptions.setDefaultImages", 142 web_ui()->CallJavascriptFunction("ChangePictureOptions.setDefaultImages",
143 image_urls); 143 image_urls);
144 } 144 }
145 145
146 void ChangePictureOptionsHandler::HandleChooseFile(const ListValue* args) { 146 void ChangePictureOptionsHandler::HandleChooseFile(const ListValue* args) {
147 DCHECK(args && args->empty()); 147 DCHECK(args && args->empty());
148 select_file_dialog_ = ui::SelectFileDialog::Create( 148 select_file_dialog_ = ui::SelectFileDialog::Create(
149 this, new ChromeSelectFilePolicy(web_ui()->GetWebContents())); 149 this, new ChromeSelectFilePolicy(web_ui()->GetWebContents()));
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 break; 244 break;
245 } 245 }
246 case User::kProfileImageIndex: { 246 case User::kProfileImageIndex: {
247 // User has his/her Profile image as the current image. 247 // User has his/her Profile image as the current image.
248 SendProfileImage(user.image(), true); 248 SendProfileImage(user.image(), true);
249 break; 249 break;
250 } 250 }
251 default: { 251 default: {
252 DCHECK(previous_image_index_ >= 0 && 252 DCHECK(previous_image_index_ >= 0 &&
253 previous_image_index_ < kDefaultImagesCount); 253 previous_image_index_ < kDefaultImagesCount);
254 // User has image from the set of default images. 254 if (previous_image_index_ >= kFirstDefaultImageIndex) {
255 base::StringValue image_url(GetDefaultImageUrl(previous_image_index_)); 255 // User has image from the current set of default images.
256 web_ui()->CallJavascriptFunction("ChangePictureOptions.setSelectedImage", 256 base::StringValue image_url(GetDefaultImageUrl(previous_image_index_));
257 image_url); 257 web_ui()->CallJavascriptFunction(
258 "ChangePictureOptions.setSelectedImage", image_url);
259 } else {
260 // User has an old default image, so present it in the same manner as a
261 // previous image from file.
262 web_ui()->CallJavascriptFunction("ChangePictureOptions.setOldImage");
263 }
258 } 264 }
259 } 265 }
260 } 266 }
261 267
262 void ChangePictureOptionsHandler::SendProfileImage(const gfx::ImageSkia& image, 268 void ChangePictureOptionsHandler::SendProfileImage(const gfx::ImageSkia& image,
263 bool should_select) { 269 bool should_select) {
264 base::StringValue data_url(web_ui_util::GetImageDataUrl(image)); 270 base::StringValue data_url(web_ui_util::GetImageDataUrl(image));
265 base::FundamentalValue select(should_select); 271 base::FundamentalValue select(should_select);
266 web_ui()->CallJavascriptFunction("ChangePictureOptions.setProfileImage", 272 web_ui()->CallJavascriptFunction("ChangePictureOptions.setProfileImage",
267 data_url, select); 273 data_url, select);
(...skipping 20 matching lines...) Expand all
288 return; 294 return;
289 } 295 }
290 DCHECK(!image_url.empty()); 296 DCHECK(!image_url.empty());
291 297
292 UserManager* user_manager = UserManager::Get(); 298 UserManager* user_manager = UserManager::Get();
293 const User& user = user_manager->GetLoggedInUser(); 299 const User& user = user_manager->GetLoggedInUser();
294 int image_index = User::kInvalidImageIndex; 300 int image_index = User::kInvalidImageIndex;
295 bool waiting_for_camera_photo = false; 301 bool waiting_for_camera_photo = false;
296 302
297 if (StartsWithASCII(image_url, chrome::kChromeUIUserImageURL, false)) { 303 if (StartsWithASCII(image_url, chrome::kChromeUIUserImageURL, false)) {
298 // Image from file/camera uses kChromeUIUserImageURL as URL while 304 // Image from file/camera uses |kChromeUIUserImageURL| as URL while
299 // current profile image always has a full data URL. 305 // current profile image always has a full data URL.
300 // This way transition from (current profile image) to 306 // This way transition from (current profile image) to
301 // (profile image, current image from file) is easier. 307 // (profile image, current image from file) is easier.
308 // Also, old (not available for selection any more) default images use
309 // this URL, too.
302 310
303 DCHECK(!previous_image_.empty()); 311 if (previous_image_index_ == User::kExternalImageIndex) {
304 user_manager->SaveUserImage(user.email(), 312 DCHECK(!previous_image_.empty());
305 UserImage::CreateAndEncode(previous_image_)); 313 user_manager->SaveUserImage(user.email(),
314 UserImage::CreateAndEncode(previous_image_));
315 } else {
316 DCHECK(previous_image_index_ >= 0 &&
317 previous_image_index_ < kFirstDefaultImageIndex);
318 user_manager->SaveUserDefaultImageIndex(user.email(),
319 previous_image_index_);
320 }
306 321
307 UMA_HISTOGRAM_ENUMERATION("UserImage.ChangeChoice", 322 UMA_HISTOGRAM_ENUMERATION("UserImage.ChangeChoice",
308 kHistogramImageOld, 323 kHistogramImageOld,
309 kHistogramImagesCount); 324 kHistogramImagesCount);
310 VLOG(1) << "Selected old user image"; 325 VLOG(1) << "Selected old user image";
311 } else if (IsDefaultImageUrl(image_url, &image_index)) { 326 } else if (IsDefaultImageUrl(image_url, &image_index)) {
312 // One of the default user images. 327 // One of the default user images.
313 user_manager->SaveUserDefaultImageIndex(user.email(), image_index); 328 user_manager->SaveUserDefaultImageIndex(user.email(), image_index);
314 329
315 UMA_HISTOGRAM_ENUMERATION("UserImage.ChangeChoice", 330 UMA_HISTOGRAM_ENUMERATION("UserImage.ChangeChoice",
316 image_index, 331 GetDefaultImageHistogramValue(image_index),
317 kHistogramImagesCount); 332 kHistogramImagesCount);
318 VLOG(1) << "Selected default user image: " << image_index; 333 VLOG(1) << "Selected default user image: " << image_index;
319 } else if (image_url == user_photo_data_url_) { 334 } else if (image_url == user_photo_data_url_) {
320 // Camera image is selected. 335 // Camera image is selected.
321 if (user_photo_.empty()) { 336 if (user_photo_.empty()) {
322 DCHECK(image_decoder_.get()); 337 DCHECK(image_decoder_.get());
323 waiting_for_camera_photo = true; 338 waiting_for_camera_photo = true;
324 VLOG(1) << "Still waiting for camera image to decode"; 339 VLOG(1) << "Still waiting for camera image to decode";
325 } else { 340 } else {
326 OnPhotoAccepted(user_photo_); 341 OnPhotoAccepted(user_photo_);
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 OnPhotoAccepted(user_photo_); 435 OnPhotoAccepted(user_photo_);
421 } 436 }
422 437
423 void ChangePictureOptionsHandler::OnDecodeImageFailed( 438 void ChangePictureOptionsHandler::OnDecodeImageFailed(
424 const ImageDecoder* decoder) { 439 const ImageDecoder* decoder) {
425 NOTREACHED() << "Failed to decode PNG image from WebUI"; 440 NOTREACHED() << "Failed to decode PNG image from WebUI";
426 } 441 }
427 442
428 } // namespace options2 443 } // namespace options2
429 } // namespace chromeos 444 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/chromeos/login/user_image_screen_handler.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698