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

Side by Side Diff: chrome/browser/ui/webui/chromeos/login/user_image_screen_handler.cc

Issue 14208014: Simplify adding callbacks. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 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/chromeos/login/user_image_screen_handler.h" 5 #include "chrome/browser/ui/webui/chromeos/login/user_image_screen_handler.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 #include "base/values.h" 10 #include "base/values.h"
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 } 137 }
138 138
139 void UserImageScreenHandler::OnProfileImageAbsent() { 139 void UserImageScreenHandler::OnProfileImageAbsent() {
140 profile_picture_absent_ = true; 140 profile_picture_absent_ = true;
141 if (page_is_ready()) { 141 if (page_is_ready()) {
142 scoped_ptr<base::Value> null_value(base::Value::CreateNullValue()); 142 scoped_ptr<base::Value> null_value(base::Value::CreateNullValue());
143 CallJS("oobe.UserImageScreen.setProfileImage", *null_value); 143 CallJS("oobe.UserImageScreen.setProfileImage", *null_value);
144 } 144 }
145 } 145 }
146 146
147 void UserImageScreenHandler::HandleGetImages(const base::ListValue* args) { 147 void UserImageScreenHandler::HandleGetImages() {
148 DCHECK(args && !args->GetSize());
149
150 base::ListValue image_urls; 148 base::ListValue image_urls;
151 for (int i = kFirstDefaultImageIndex; i < kDefaultImagesCount; ++i) { 149 for (int i = kFirstDefaultImageIndex; i < kDefaultImagesCount; ++i) {
152 scoped_ptr<base::DictionaryValue> image_data(new base::DictionaryValue); 150 scoped_ptr<base::DictionaryValue> image_data(new base::DictionaryValue);
153 image_data->SetString("url", GetDefaultImageUrl(i)); 151 image_data->SetString("url", GetDefaultImageUrl(i));
154 image_data->SetString( 152 image_data->SetString(
155 "author", l10n_util::GetStringUTF16(kDefaultImageAuthorIDs[i])); 153 "author", l10n_util::GetStringUTF16(kDefaultImageAuthorIDs[i]));
156 image_data->SetString( 154 image_data->SetString(
157 "website", l10n_util::GetStringUTF16(kDefaultImageWebsiteIDs[i])); 155 "website", l10n_util::GetStringUTF16(kDefaultImageWebsiteIDs[i]));
158 image_data->SetString("title", GetDefaultImageDescription(i)); 156 image_data->SetString("title", GetDefaultImageDescription(i));
159 image_urls.Append(image_data.release()); 157 image_urls.Append(image_data.release());
160 } 158 }
161 CallJS("oobe.UserImageScreen.setDefaultImages", image_urls); 159 CallJS("oobe.UserImageScreen.setDefaultImages", image_urls);
162 160
163 if (selected_image_ != User::kInvalidImageIndex) 161 if (selected_image_ != User::kInvalidImageIndex)
164 SelectImage(selected_image_); 162 SelectImage(selected_image_);
165 163
166 if (profile_picture_data_url_ != chrome::kAboutBlankURL) 164 if (profile_picture_data_url_ != chrome::kAboutBlankURL)
167 SendProfileImage(profile_picture_data_url_); 165 SendProfileImage(profile_picture_data_url_);
168 else if (profile_picture_absent_) 166 else if (profile_picture_absent_)
169 OnProfileImageAbsent(); 167 OnProfileImageAbsent();
170 } 168 }
171 169
172 void UserImageScreenHandler::HandlePhotoTaken(const base::ListValue* args) { 170 void UserImageScreenHandler::HandlePhotoTaken(const std::string& image_url) {
173 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 171 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
174 std::string image_url;
175 if (!args || args->GetSize() != 1 || !args->GetString(0, &image_url))
176 NOTREACHED();
177 DCHECK(!image_url.empty());
178
179 std::string mime_type, charset, raw_data; 172 std::string mime_type, charset, raw_data;
180 if (!net::DataURL::Parse(GURL(image_url), &mime_type, &charset, &raw_data)) 173 if (!net::DataURL::Parse(GURL(image_url), &mime_type, &charset, &raw_data))
181 NOTREACHED(); 174 NOTREACHED();
182 DCHECK_EQ("image/png", mime_type); 175 DCHECK_EQ("image/png", mime_type);
183 176
184 user_photo_ = gfx::ImageSkia(); 177 user_photo_ = gfx::ImageSkia();
185 user_photo_data_url_ = image_url; 178 user_photo_data_url_ = image_url;
186 179
187 if (image_decoder_.get()) 180 if (image_decoder_.get())
188 image_decoder_->set_delegate(NULL); 181 image_decoder_->set_delegate(NULL);
189 image_decoder_ = new ImageDecoder(this, raw_data, 182 image_decoder_ = new ImageDecoder(this, raw_data,
190 ImageDecoder::DEFAULT_CODEC); 183 ImageDecoder::DEFAULT_CODEC);
191 scoped_refptr<base::MessageLoopProxy> task_runner = 184 scoped_refptr<base::MessageLoopProxy> task_runner =
192 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI); 185 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI);
193 image_decoder_->Start(task_runner); 186 image_decoder_->Start(task_runner);
194 } 187 }
195 188
196 void UserImageScreenHandler::HandleCheckCameraPresence( 189 void UserImageScreenHandler::HandleCheckCameraPresence() {
197 const base::ListValue* args) {
198 DCHECK(args->empty());
199 CheckCameraPresence(); 190 CheckCameraPresence();
200 } 191 }
201 192
202 void UserImageScreenHandler::HandleSelectImage(const base::ListValue* args) { 193 void UserImageScreenHandler::HandleSelectImage(const std::string& image_url,
203 std::string image_url; 194 const std::string& image_type) {
204 std::string image_type;
205 if (!args ||
206 args->GetSize() != 2 ||
207 !args->GetString(0, &image_url) ||
208 !args->GetString(1, &image_type)) {
209 NOTREACHED();
210 return;
211 }
212 if (image_url.empty()) 195 if (image_url.empty())
213 return; 196 return;
214 197
215 int user_image_index = User::kInvalidImageIndex; 198 int user_image_index = User::kInvalidImageIndex;
216 if (image_type == "default" && 199 if (image_type == "default" &&
217 IsDefaultImageUrl(image_url, &user_image_index)) { 200 IsDefaultImageUrl(image_url, &user_image_index)) {
218 selected_image_ = user_image_index; 201 selected_image_ = user_image_index;
219 } else if (image_type == "camera") { 202 } else if (image_type == "camera") {
220 selected_image_ = User::kExternalImageIndex; 203 selected_image_ = User::kExternalImageIndex;
221 } else if (image_type == "profile") { 204 } else if (image_type == "profile") {
222 selected_image_ = User::kProfileImageIndex; 205 selected_image_ = User::kProfileImageIndex;
223 } else { 206 } else {
224 NOTREACHED() << "Unexpected image type: " << image_type; 207 NOTREACHED() << "Unexpected image type: " << image_type;
225 } 208 }
226 } 209 }
227 210
228 void UserImageScreenHandler::HandleImageAccepted(const base::ListValue* args) { 211 void UserImageScreenHandler::HandleImageAccepted() {
229 DCHECK(args && args->empty());
230 if (!screen_) 212 if (!screen_)
231 return; 213 return;
232 switch (selected_image_) { 214 switch (selected_image_) {
233 case User::kExternalImageIndex: 215 case User::kExternalImageIndex:
234 // Photo decoding may not have been finished yet. 216 // Photo decoding may not have been finished yet.
235 if (user_photo_.isNull()) 217 if (user_photo_.isNull())
236 accept_photo_after_decoding_ = true; 218 accept_photo_after_decoding_ = true;
237 else 219 else
238 screen_->OnPhotoTaken(user_photo_); 220 screen_->OnPhotoTaken(user_photo_);
239 break; 221 break;
240 222
241 case User::kProfileImageIndex: 223 case User::kProfileImageIndex:
242 screen_->OnProfileImageSelected(); 224 screen_->OnProfileImageSelected();
243 break; 225 break;
244 226
245 default: 227 default:
246 DCHECK(selected_image_ >= 0 && selected_image_ < kDefaultImagesCount); 228 DCHECK(selected_image_ >= 0 && selected_image_ < kDefaultImagesCount);
247 screen_->OnDefaultImageSelected(selected_image_); 229 screen_->OnDefaultImageSelected(selected_image_);
248 } 230 }
249 } 231 }
250 232
251 void UserImageScreenHandler::HandleScreenShown(const base::ListValue* args) { 233 void UserImageScreenHandler::HandleScreenShown() {
252 DCHECK(args && args->empty());
253 DCHECK(!screen_show_time_.is_null()); 234 DCHECK(!screen_show_time_.is_null());
254 235
255 base::TimeDelta delta = base::Time::Now() - screen_show_time_; 236 base::TimeDelta delta = base::Time::Now() - screen_show_time_;
256 VLOG(1) << "Screen load time: " << delta.InSecondsF(); 237 VLOG(1) << "Screen load time: " << delta.InSecondsF();
257 UMA_HISTOGRAM_TIMES("UserImage.ScreenIsShownTime", delta); 238 UMA_HISTOGRAM_TIMES("UserImage.ScreenIsShownTime", delta);
258 } 239 }
259 240
260 void UserImageScreenHandler::OnCameraPresenceCheckDone() { 241 void UserImageScreenHandler::OnCameraPresenceCheckDone() {
261 base::FundamentalValue present_value( 242 base::FundamentalValue present_value(
262 CameraDetector::camera_presence() == CameraDetector::kCameraPresent); 243 CameraDetector::camera_presence() == CameraDetector::kCameraPresent);
(...skipping 11 matching lines...) Expand all
274 void UserImageScreenHandler::OnDecodeImageFailed(const ImageDecoder* decoder) { 255 void UserImageScreenHandler::OnDecodeImageFailed(const ImageDecoder* decoder) {
275 NOTREACHED() << "Failed to decode PNG image from WebUI"; 256 NOTREACHED() << "Failed to decode PNG image from WebUI";
276 } 257 }
277 258
278 void UserImageScreenHandler::SetProfilePictureEnabled(bool enabled) { 259 void UserImageScreenHandler::SetProfilePictureEnabled(bool enabled) {
279 base::FundamentalValue present_value(enabled); 260 base::FundamentalValue present_value(enabled);
280 CallJS("oobe.UserImageScreen.setProfilePictureEnabled", present_value); 261 CallJS("oobe.UserImageScreen.setProfilePictureEnabled", present_value);
281 } 262 }
282 263
283 } // namespace chromeos 264 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698