OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/signin/signin_create_profile_handler.h" | 5 #include "chrome/browser/ui/webui/signin/signin_create_profile_handler.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 new base::DictionaryValue()); | 184 new base::DictionaryValue()); |
185 avatar_info->SetString("url", profiles::GetDefaultAvatarIconUrl(i)); | 185 avatar_info->SetString("url", profiles::GetDefaultAvatarIconUrl(i)); |
186 avatar_info->SetString( | 186 avatar_info->SetString( |
187 "label", | 187 "label", |
188 l10n_util::GetStringUTF16( | 188 l10n_util::GetStringUTF16( |
189 profiles::GetDefaultAvatarLabelResourceIDAtIndex(i))); | 189 profiles::GetDefaultAvatarLabelResourceIDAtIndex(i))); |
190 | 190 |
191 image_url_list.Append(std::move(avatar_info)); | 191 image_url_list.Append(std::move(avatar_info)); |
192 } | 192 } |
193 | 193 |
194 web_ui()->CallJavascriptFunction("cr.webUIListenerCallback", | 194 web_ui()->CallJavascriptFunctionUnsafe( |
195 base::StringValue("profile-icons-received"), | 195 "cr.webUIListenerCallback", base::StringValue("profile-icons-received"), |
196 image_url_list); | 196 image_url_list); |
197 | 197 |
198 SendNewProfileDefaults(); | 198 SendNewProfileDefaults(); |
199 } | 199 } |
200 | 200 |
201 void SigninCreateProfileHandler::SendNewProfileDefaults() { | 201 void SigninCreateProfileHandler::SendNewProfileDefaults() { |
202 ProfileAttributesStorage& storage = | 202 ProfileAttributesStorage& storage = |
203 g_browser_process->profile_manager()->GetProfileAttributesStorage(); | 203 g_browser_process->profile_manager()->GetProfileAttributesStorage(); |
204 base::DictionaryValue profile_info; | 204 base::DictionaryValue profile_info; |
205 profile_info.SetString("name", storage.ChooseNameForNewProfile(0)); | 205 profile_info.SetString("name", storage.ChooseNameForNewProfile(0)); |
206 | 206 |
207 web_ui()->CallJavascriptFunction( | 207 web_ui()->CallJavascriptFunctionUnsafe( |
208 "cr.webUIListenerCallback", | 208 "cr.webUIListenerCallback", |
209 base::StringValue("profile-defaults-received"), | 209 base::StringValue("profile-defaults-received"), profile_info); |
210 profile_info); | |
211 } | 210 } |
212 | 211 |
213 void SigninCreateProfileHandler::RequestSignedInProfiles( | 212 void SigninCreateProfileHandler::RequestSignedInProfiles( |
214 const base::ListValue* args) { | 213 const base::ListValue* args) { |
215 base::ListValue user_info_list; | 214 base::ListValue user_info_list; |
216 std::vector<ProfileAttributesEntry*> entries = | 215 std::vector<ProfileAttributesEntry*> entries = |
217 g_browser_process->profile_manager()-> | 216 g_browser_process->profile_manager()-> |
218 GetProfileAttributesStorage().GetAllProfilesAttributesSortedByName(); | 217 GetProfileAttributesStorage().GetAllProfilesAttributesSortedByName(); |
219 for (ProfileAttributesEntry* entry : entries) { | 218 for (ProfileAttributesEntry* entry : entries) { |
220 base::string16 username = entry->GetUserName(); | 219 base::string16 username = entry->GetUserName(); |
221 if (username.empty()) | 220 if (username.empty()) |
222 continue; | 221 continue; |
223 base::string16 profile_path = entry->GetPath().AsUTF16Unsafe(); | 222 base::string16 profile_path = entry->GetPath().AsUTF16Unsafe(); |
224 std::unique_ptr<base::DictionaryValue> user_info( | 223 std::unique_ptr<base::DictionaryValue> user_info( |
225 new base::DictionaryValue()); | 224 new base::DictionaryValue()); |
226 user_info->SetString("username", username); | 225 user_info->SetString("username", username); |
227 user_info->SetString("profilePath", profile_path); | 226 user_info->SetString("profilePath", profile_path); |
228 | 227 |
229 user_info_list.Append(std::move(user_info)); | 228 user_info_list.Append(std::move(user_info)); |
230 } | 229 } |
231 web_ui()->CallJavascriptFunction("cr.webUIListenerCallback", | 230 web_ui()->CallJavascriptFunctionUnsafe( |
232 base::StringValue("signedin-users-received"), | 231 "cr.webUIListenerCallback", base::StringValue("signedin-users-received"), |
233 user_info_list); | 232 user_info_list); |
234 } | 233 } |
235 | 234 |
236 void SigninCreateProfileHandler::CreateProfile(const base::ListValue* args) { | 235 void SigninCreateProfileHandler::CreateProfile(const base::ListValue* args) { |
237 if (!profiles::IsMultipleProfilesEnabled()) | 236 if (!profiles::IsMultipleProfilesEnabled()) |
238 return; | 237 return; |
239 | 238 |
240 // We can have only one in progress profile creation | 239 // We can have only one in progress profile creation |
241 // at any given moment, if new ones are initiated just | 240 // at any given moment, if new ones are initiated just |
242 // ignore them until we are done with the old one. | 241 // ignore them until we are done with the old one. |
243 if (profile_creation_type_ != NO_CREATION_IN_PROGRESS) | 242 if (profile_creation_type_ != NO_CREATION_IN_PROGRESS) |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
393 | 392 |
394 if (is_supervised) { | 393 if (is_supervised) { |
395 DCHECK(custodian_profile); | 394 DCHECK(custodian_profile); |
396 if (custodian_profile) { | 395 if (custodian_profile) { |
397 std::string custodian_username = custodian_profile->GetProfileUserName(); | 396 std::string custodian_username = custodian_profile->GetProfileUserName(); |
398 dict.SetString("custodianUsername", custodian_username); | 397 dict.SetString("custodianUsername", custodian_username); |
399 } | 398 } |
400 } | 399 } |
401 #endif | 400 #endif |
402 | 401 |
403 web_ui()->CallJavascriptFunction( | 402 web_ui()->CallJavascriptFunctionUnsafe( |
404 "cr.webUIListenerCallback", | 403 "cr.webUIListenerCallback", |
405 GetWebUIListenerName(PROFILE_CREATION_SUCCESS), | 404 GetWebUIListenerName(PROFILE_CREATION_SUCCESS), dict); |
406 dict); | |
407 | 405 |
408 if (open_new_window) { | 406 if (open_new_window) { |
409 // Opening the new window must be the last action, after all callbacks | 407 // Opening the new window must be the last action, after all callbacks |
410 // have been run, to give them a chance to initialize the profile. | 408 // have been run, to give them a chance to initialize the profile. |
411 OpenNewWindowForProfile(profile, Profile::CREATE_STATUS_INITIALIZED); | 409 OpenNewWindowForProfile(profile, Profile::CREATE_STATUS_INITIALIZED); |
412 } | 410 } |
413 profile_creation_type_ = NO_CREATION_IN_PROGRESS; | 411 profile_creation_type_ = NO_CREATION_IN_PROGRESS; |
414 } | 412 } |
415 | 413 |
416 void SigninCreateProfileHandler::OpenNewWindowForProfile( | 414 void SigninCreateProfileHandler::OpenNewWindowForProfile( |
417 Profile* profile, | 415 Profile* profile, |
418 Profile::CreateStatus status) { | 416 Profile::CreateStatus status) { |
419 profiles::OpenBrowserWindowForProfile( | 417 profiles::OpenBrowserWindowForProfile( |
420 base::Bind(&SigninCreateProfileHandler::OnBrowserReadyCallback, | 418 base::Bind(&SigninCreateProfileHandler::OnBrowserReadyCallback, |
421 weak_ptr_factory_.GetWeakPtr()), | 419 weak_ptr_factory_.GetWeakPtr()), |
422 false, // Don't create a window if one already exists. | 420 false, // Don't create a window if one already exists. |
423 true, // Create a first run window. | 421 true, // Create a first run window. |
424 profile, | 422 profile, |
425 status); | 423 status); |
426 } | 424 } |
427 | 425 |
428 void SigninCreateProfileHandler::ShowProfileCreationError( | 426 void SigninCreateProfileHandler::ShowProfileCreationError( |
429 Profile* profile, | 427 Profile* profile, |
430 const base::string16& error) { | 428 const base::string16& error) { |
431 DCHECK_NE(NO_CREATION_IN_PROGRESS, profile_creation_type_); | 429 DCHECK_NE(NO_CREATION_IN_PROGRESS, profile_creation_type_); |
432 web_ui()->CallJavascriptFunction("cr.webUIListenerCallback", | 430 web_ui()->CallJavascriptFunctionUnsafe( |
433 GetWebUIListenerName(PROFILE_CREATION_ERROR), | 431 "cr.webUIListenerCallback", GetWebUIListenerName(PROFILE_CREATION_ERROR), |
434 base::StringValue(error)); | 432 base::StringValue(error)); |
435 // The ProfileManager calls us back with a NULL profile in some cases. | 433 // The ProfileManager calls us back with a NULL profile in some cases. |
436 if (profile) { | 434 if (profile) { |
437 webui::DeleteProfileAtPath(profile->GetPath(), | 435 webui::DeleteProfileAtPath(profile->GetPath(), |
438 web_ui(), | 436 web_ui(), |
439 ProfileMetrics::DELETE_PROFILE_SETTINGS); | 437 ProfileMetrics::DELETE_PROFILE_SETTINGS); |
440 } | 438 } |
441 profile_creation_type_ = NO_CREATION_IN_PROGRESS; | 439 profile_creation_type_ = NO_CREATION_IN_PROGRESS; |
442 profile_path_being_created_.clear(); | 440 profile_path_being_created_.clear(); |
443 } | 441 } |
444 | 442 |
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
755 error_msg = GetProfileCreateErrorMessageSignin(); | 753 error_msg = GetProfileCreateErrorMessageSignin(); |
756 } else { | 754 } else { |
757 error_msg = GetProfileCreateErrorMessageRemote(); | 755 error_msg = GetProfileCreateErrorMessageRemote(); |
758 } | 756 } |
759 ShowProfileCreationError(profile, error_msg); | 757 ShowProfileCreationError(profile, error_msg); |
760 } | 758 } |
761 | 759 |
762 void SigninCreateProfileHandler::ShowProfileCreationWarning( | 760 void SigninCreateProfileHandler::ShowProfileCreationWarning( |
763 const base::string16& warning) { | 761 const base::string16& warning) { |
764 DCHECK_EQ(SUPERVISED_PROFILE_CREATION, profile_creation_type_); | 762 DCHECK_EQ(SUPERVISED_PROFILE_CREATION, profile_creation_type_); |
765 web_ui()->CallJavascriptFunction("cr.webUIListenerCallback", | 763 web_ui()->CallJavascriptFunctionUnsafe( |
766 base::StringValue("create-profile-warning"), | 764 "cr.webUIListenerCallback", base::StringValue("create-profile-warning"), |
767 base::StringValue(warning)); | 765 base::StringValue(warning)); |
768 } | 766 } |
769 | 767 |
770 void SigninCreateProfileHandler::RecordSupervisedProfileCreationMetrics( | 768 void SigninCreateProfileHandler::RecordSupervisedProfileCreationMetrics( |
771 GoogleServiceAuthError::State error_state) { | 769 GoogleServiceAuthError::State error_state) { |
772 if (profile_creation_type_ == SUPERVISED_PROFILE_CREATION) { | 770 if (profile_creation_type_ == SUPERVISED_PROFILE_CREATION) { |
773 UMA_HISTOGRAM_ENUMERATION("Profile.SupervisedProfileCreateError", | 771 UMA_HISTOGRAM_ENUMERATION("Profile.SupervisedProfileCreateError", |
774 error_state, GoogleServiceAuthError::NUM_STATES); | 772 error_state, GoogleServiceAuthError::NUM_STATES); |
775 UMA_HISTOGRAM_MEDIUM_TIMES( | 773 UMA_HISTOGRAM_MEDIUM_TIMES( |
776 "Profile.SupervisedProfileTotalCreateTime", | 774 "Profile.SupervisedProfileTotalCreateTime", |
777 base::TimeTicks::Now() - profile_creation_start_time_); | 775 base::TimeTicks::Now() - profile_creation_start_time_); |
(...skipping 25 matching lines...) Expand all Loading... |
803 profiles::OpenBrowserWindowForProfile( | 801 profiles::OpenBrowserWindowForProfile( |
804 base::Bind(&SigninCreateProfileHandler::OnBrowserReadyCallback, | 802 base::Bind(&SigninCreateProfileHandler::OnBrowserReadyCallback, |
805 weak_ptr_factory_.GetWeakPtr()), | 803 weak_ptr_factory_.GetWeakPtr()), |
806 false, // Don't create a window if one already exists. | 804 false, // Don't create a window if one already exists. |
807 true, // Create a first run window. | 805 true, // Create a first run window. |
808 profile, | 806 profile, |
809 Profile::CREATE_STATUS_INITIALIZED); | 807 Profile::CREATE_STATUS_INITIALIZED); |
810 } | 808 } |
811 | 809 |
812 #endif | 810 #endif |
OLD | NEW |