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/sync_setup_handler.h" | 5 #include "chrome/browser/ui/webui/sync_setup_handler.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.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/compiler_specific.h" | 11 #include "base/compiler_specific.h" |
12 #include "base/i18n/time_formatting.h" | 12 #include "base/i18n/time_formatting.h" |
13 #include "base/json/json_reader.h" | 13 #include "base/json/json_reader.h" |
14 #include "base/json/json_writer.h" | 14 #include "base/json/json_writer.h" |
15 #include "base/metrics/histogram.h" | 15 #include "base/metrics/histogram.h" |
16 #include "base/prefs/pref_service.h" | 16 #include "base/prefs/pref_service.h" |
17 #include "base/utf_string_conversions.h" | 17 #include "base/utf_string_conversions.h" |
18 #include "base/values.h" | 18 #include "base/values.h" |
19 #include "chrome/app/chrome_command_ids.h" | 19 #include "chrome/app/chrome_command_ids.h" |
20 #include "chrome/browser/google/google_util.h" | 20 #include "chrome/browser/google/google_util.h" |
21 #include "chrome/browser/lifetime/application_lifetime.h" | 21 #include "chrome/browser/lifetime/application_lifetime.h" |
22 #include "chrome/browser/profiles/profile.h" | 22 #include "chrome/browser/profiles/profile.h" |
23 #include "chrome/browser/profiles/profile_info_cache.h" | 23 #include "chrome/browser/profiles/profile_info_cache.h" |
24 #include "chrome/browser/profiles/profile_manager.h" | 24 #include "chrome/browser/profiles/profile_manager.h" |
25 #include "chrome/browser/profiles/profile_metrics.h" | 25 #include "chrome/browser/profiles/profile_metrics.h" |
26 #include "chrome/browser/signin/signin_manager.h" | |
27 #include "chrome/browser/signin/signin_manager_factory.h" | 26 #include "chrome/browser/signin/signin_manager_factory.h" |
28 #include "chrome/browser/sync/profile_sync_service.h" | 27 #include "chrome/browser/sync/profile_sync_service.h" |
29 #include "chrome/browser/sync/profile_sync_service_factory.h" | 28 #include "chrome/browser/sync/profile_sync_service_factory.h" |
30 #include "chrome/browser/ui/browser_finder.h" | 29 #include "chrome/browser/ui/browser_finder.h" |
31 #include "chrome/browser/ui/browser_navigator.h" | 30 #include "chrome/browser/ui/browser_navigator.h" |
32 #include "chrome/browser/ui/sync/signin_histogram.h" | 31 #include "chrome/browser/ui/sync/signin_histogram.h" |
33 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 32 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
34 #include "chrome/browser/ui/webui/signin/login_ui_service.h" | 33 #include "chrome/browser/ui/webui/signin/login_ui_service.h" |
35 #include "chrome/browser/ui/webui/signin/login_ui_service_factory.h" | 34 #include "chrome/browser/ui/webui/signin/login_ui_service_factory.h" |
36 #include "chrome/browser/ui/webui/sync_promo/sync_promo_ui.h" | 35 #include "chrome/browser/ui/webui/sync_promo/sync_promo_ui.h" |
37 #include "chrome/common/chrome_switches.h" | 36 #include "chrome/common/chrome_switches.h" |
38 #include "chrome/common/pref_names.h" | 37 #include "chrome/common/pref_names.h" |
39 #include "chrome/common/url_constants.h" | 38 #include "chrome/common/url_constants.h" |
40 #include "content/public/browser/render_view_host.h" | 39 #include "content/public/browser/render_view_host.h" |
41 #include "content/public/browser/web_contents.h" | 40 #include "content/public/browser/web_contents.h" |
42 #include "content/public/browser/web_contents_delegate.h" | 41 #include "content/public/browser/web_contents_delegate.h" |
43 #include "google_apis/gaia/gaia_auth_util.h" | 42 #include "google_apis/gaia/gaia_auth_util.h" |
44 #include "google_apis/gaia/gaia_constants.h" | 43 #include "google_apis/gaia/gaia_constants.h" |
45 #include "grit/chromium_strings.h" | 44 #include "grit/chromium_strings.h" |
46 #include "grit/generated_resources.h" | 45 #include "grit/generated_resources.h" |
47 #include "grit/locale_settings.h" | 46 #include "grit/locale_settings.h" |
48 #include "ui/base/l10n/l10n_util.h" | 47 #include "ui/base/l10n/l10n_util.h" |
49 | 48 |
| 49 #if defined(OS_CHROMEOS) |
| 50 #include "chrome/browser/signin/signin_manager_base.h" |
| 51 #else |
| 52 #include "chrome/browser/signin/signin_manager.h" |
| 53 #endif |
| 54 |
50 using content::WebContents; | 55 using content::WebContents; |
51 using l10n_util::GetStringFUTF16; | 56 using l10n_util::GetStringFUTF16; |
52 using l10n_util::GetStringUTF16; | 57 using l10n_util::GetStringUTF16; |
53 | 58 |
54 namespace { | 59 namespace { |
55 | 60 |
56 // A structure which contains all the configuration information for sync. | 61 // A structure which contains all the configuration information for sync. |
57 struct SyncConfigInfo { | 62 struct SyncConfigInfo { |
58 SyncConfigInfo(); | 63 SyncConfigInfo(); |
59 ~SyncConfigInfo(); | 64 ~SyncConfigInfo(); |
(...skipping 490 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
550 LoginUIService* service = GetLoginUIService(); | 555 LoginUIService* service = GetLoginUIService(); |
551 return service && (service->current_login_ui() == this); | 556 return service && (service->current_login_ui() == this); |
552 } | 557 } |
553 | 558 |
554 void SyncSetupHandler::RegisterMessages() { | 559 void SyncSetupHandler::RegisterMessages() { |
555 web_ui()->RegisterMessageCallback( | 560 web_ui()->RegisterMessageCallback( |
556 "SyncSetupDidClosePage", | 561 "SyncSetupDidClosePage", |
557 base::Bind(&SyncSetupHandler::OnDidClosePage, | 562 base::Bind(&SyncSetupHandler::OnDidClosePage, |
558 base::Unretained(this))); | 563 base::Unretained(this))); |
559 web_ui()->RegisterMessageCallback( | 564 web_ui()->RegisterMessageCallback( |
560 "SyncSetupSubmitAuth", | |
561 base::Bind(&SyncSetupHandler::HandleSubmitAuth, | |
562 base::Unretained(this))); | |
563 web_ui()->RegisterMessageCallback( | |
564 "SyncSetupConfigure", | 565 "SyncSetupConfigure", |
565 base::Bind(&SyncSetupHandler::HandleConfigure, | 566 base::Bind(&SyncSetupHandler::HandleConfigure, |
566 base::Unretained(this))); | 567 base::Unretained(this))); |
567 web_ui()->RegisterMessageCallback( | 568 web_ui()->RegisterMessageCallback( |
568 "SyncSetupAttachHandler", | 569 "SyncSetupAttachHandler", |
569 base::Bind(&SyncSetupHandler::HandleAttachHandler, | 570 base::Bind(&SyncSetupHandler::HandleAttachHandler, |
570 base::Unretained(this))); | 571 base::Unretained(this))); |
571 web_ui()->RegisterMessageCallback( | 572 web_ui()->RegisterMessageCallback( |
572 "SyncSetupShowErrorUI", | 573 "SyncSetupShowErrorUI", |
573 base::Bind(&SyncSetupHandler::HandleShowErrorUI, | 574 base::Bind(&SyncSetupHandler::HandleShowErrorUI, |
574 base::Unretained(this))); | 575 base::Unretained(this))); |
575 web_ui()->RegisterMessageCallback( | 576 web_ui()->RegisterMessageCallback( |
576 "SyncSetupShowSetupUI", | 577 "SyncSetupShowSetupUI", |
577 base::Bind(&SyncSetupHandler::HandleShowSetupUI, | 578 base::Bind(&SyncSetupHandler::HandleShowSetupUI, |
578 base::Unretained(this))); | 579 base::Unretained(this))); |
579 web_ui()->RegisterMessageCallback( | 580 web_ui()->RegisterMessageCallback( |
580 "SyncSetupShowSetupUIWithoutLogin", | 581 "SyncSetupShowSetupUIWithoutLogin", |
581 base::Bind(&SyncSetupHandler::HandleShowSetupUIWithoutLogin, | 582 base::Bind(&SyncSetupHandler::HandleShowSetupUIWithoutLogin, |
582 base::Unretained(this))); | 583 base::Unretained(this))); |
583 web_ui()->RegisterMessageCallback( | 584 web_ui()->RegisterMessageCallback( |
584 "SyncSetupDoSignOutOnAuthError", | 585 "SyncSetupDoSignOutOnAuthError", |
585 base::Bind(&SyncSetupHandler::HandleDoSignOutOnAuthError, | 586 base::Bind(&SyncSetupHandler::HandleDoSignOutOnAuthError, |
586 base::Unretained(this))); | 587 base::Unretained(this))); |
587 web_ui()->RegisterMessageCallback("CloseTimeout", | 588 web_ui()->RegisterMessageCallback("CloseTimeout", |
588 base::Bind(&SyncSetupHandler::HandleCloseTimeout, | 589 base::Bind(&SyncSetupHandler::HandleCloseTimeout, |
589 base::Unretained(this))); | 590 base::Unretained(this))); |
590 web_ui()->RegisterMessageCallback("SyncSetupStopSyncing", | 591 web_ui()->RegisterMessageCallback("SyncSetupStopSyncing", |
591 base::Bind(&SyncSetupHandler::HandleStopSyncing, | 592 base::Bind(&SyncSetupHandler::HandleStopSyncing, |
592 base::Unretained(this))); | 593 base::Unretained(this))); |
593 } | 594 #if !defined(OS_CHROMEOS) |
594 | 595 web_ui()->RegisterMessageCallback( |
595 SigninManager* SyncSetupHandler::GetSignin() const { | 596 "SyncSetupSubmitAuth", |
596 return SigninManagerFactory::GetForProfile(GetProfile()); | 597 base::Bind(&SyncSetupHandler::HandleSubmitAuth, |
| 598 base::Unretained(this))); |
| 599 #endif |
597 } | 600 } |
598 | 601 |
599 void SyncSetupHandler::DisplayGaiaLogin(bool fatal_error) { | 602 void SyncSetupHandler::DisplayGaiaLogin(bool fatal_error) { |
600 if (SyncPromoUI::UseWebBasedSigninFlow()) { | 603 if (SyncPromoUI::UseWebBasedSigninFlow()) { |
601 // Advanced options are no longer being configured if the login screen is | 604 // Advanced options are no longer being configured if the login screen is |
602 // visible. If the user exits the signin wizard after this without | 605 // visible. If the user exits the signin wizard after this without |
603 // configuring sync, CloseSyncSetup() will ensure they are logged out. | 606 // configuring sync, CloseSyncSetup() will ensure they are logged out. |
604 configuring_sync_ = false; | 607 configuring_sync_ = false; |
605 | 608 |
606 DisplayGaiaLoginInNewTabOrWindow(); | 609 DisplayGaiaLoginInNewTabOrWindow(); |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
671 user = last_attempted_user_email_; | 674 user = last_attempted_user_email_; |
672 error = last_signin_error_.state(); | 675 error = last_signin_error_.state(); |
673 captcha = last_signin_error_.captcha().image_url.spec(); | 676 captcha = last_signin_error_.captcha().image_url.spec(); |
674 editable_user = true; | 677 editable_user = true; |
675 | 678 |
676 if (local_error_message.empty()) | 679 if (local_error_message.empty()) |
677 local_error_message = UTF8ToUTF16(last_signin_error_.error_message()); | 680 local_error_message = UTF8ToUTF16(last_signin_error_.error_message()); |
678 } else { | 681 } else { |
679 // Fresh login attempt - lock in the authenticated username if there is | 682 // Fresh login attempt - lock in the authenticated username if there is |
680 // one (don't let the user change it). | 683 // one (don't let the user change it). |
681 user = GetSignin()->GetAuthenticatedUsername(); | 684 user = SigninManagerFactory::GetForProfile(GetProfile())-> |
| 685 GetAuthenticatedUsername(); |
682 error = 0; | 686 error = 0; |
683 editable_user = user.empty(); | 687 editable_user = user.empty(); |
684 } | 688 } |
685 DictionaryValue args; | 689 DictionaryValue args; |
686 args.SetString("user", user); | 690 args.SetString("user", user); |
687 args.SetInteger("error", error); | 691 args.SetInteger("error", error); |
688 | 692 |
689 // If the error is two-factor, then ask for an OTP if the ClientOAuth flow | 693 // If the error is two-factor, then ask for an OTP if the ClientOAuth flow |
690 // is enasbled. Otherwise ask for an ASP. If the error is catptcha required, | 694 // is enasbled. Otherwise ask for an ASP. If the error is catptcha required, |
691 // then we don't want to show username and password fields if ClientOAuth is | 695 // then we don't want to show username and password fields if ClientOAuth is |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
776 if (SyncPromoUI::UseWebBasedSigninFlow()) | 780 if (SyncPromoUI::UseWebBasedSigninFlow()) |
777 CloseGaiaSigninPage(); | 781 CloseGaiaSigninPage(); |
778 | 782 |
779 web_ui()->CallJavascriptFunction("SyncSetupOverlay.showSuccessAndSettingUp"); | 783 web_ui()->CallJavascriptFunction("SyncSetupOverlay.showSuccessAndSettingUp"); |
780 } | 784 } |
781 | 785 |
782 void SyncSetupHandler::OnDidClosePage(const ListValue* args) { | 786 void SyncSetupHandler::OnDidClosePage(const ListValue* args) { |
783 CloseSyncSetup(); | 787 CloseSyncSetup(); |
784 } | 788 } |
785 | 789 |
| 790 #if !defined (OS_CHROMEOS) |
786 void SyncSetupHandler::HandleSubmitAuth(const ListValue* args) { | 791 void SyncSetupHandler::HandleSubmitAuth(const ListValue* args) { |
787 std::string json; | 792 std::string json; |
788 if (!args->GetString(0, &json)) { | 793 if (!args->GetString(0, &json)) { |
789 NOTREACHED() << "Could not read JSON argument"; | 794 NOTREACHED() << "Could not read JSON argument"; |
790 return; | 795 return; |
791 } | 796 } |
792 | 797 |
793 if (json.empty()) | 798 if (json.empty()) |
794 return; | 799 return; |
795 | 800 |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
833 // Make sure we are listening for signin traffic. | 838 // Make sure we are listening for signin traffic. |
834 if (!signin_tracker_.get()) | 839 if (!signin_tracker_.get()) |
835 signin_tracker_.reset(new SigninTracker(GetProfile(), this)); | 840 signin_tracker_.reset(new SigninTracker(GetProfile(), this)); |
836 | 841 |
837 last_attempted_user_email_ = username; | 842 last_attempted_user_email_ = username; |
838 | 843 |
839 // User is trying to log in again so reset the cached error. | 844 // User is trying to log in again so reset the cached error. |
840 GoogleServiceAuthError current_error = last_signin_error_; | 845 GoogleServiceAuthError current_error = last_signin_error_; |
841 last_signin_error_ = GoogleServiceAuthError::AuthErrorNone(); | 846 last_signin_error_ = GoogleServiceAuthError::AuthErrorNone(); |
842 | 847 |
843 SigninManager* signin = GetSignin(); | 848 SigninManager* signin = SigninManagerFactory::GetForProfile(GetProfile()); |
844 | 849 |
845 // If we're just being called to provide an ASP, then pass it to the | 850 // If we're just being called to provide an ASP, then pass it to the |
846 // SigninManager and wait for the next step. | 851 // SigninManager and wait for the next step. |
847 if (!access_code.empty()) { | 852 if (!access_code.empty()) { |
848 signin->ProvideSecondFactorAccessCode(access_code); | 853 signin->ProvideSecondFactorAccessCode(access_code); |
849 return; | 854 return; |
850 } | 855 } |
851 | 856 |
852 // The user has submitted credentials, which indicates they don't want to | 857 // The user has submitted credentials, which indicates they don't want to |
853 // suppress start up anymore. We do this before starting the signin process, | 858 // suppress start up anymore. We do this before starting the signin process, |
854 // so the ProfileSyncService knows to listen to the cached password. | 859 // so the ProfileSyncService knows to listen to the cached password. |
855 ProfileSyncService* service = GetSyncService(); | 860 ProfileSyncService* service = GetSyncService(); |
856 if (service) | 861 if (service) |
857 service->UnsuppressAndStart(); | 862 service->UnsuppressAndStart(); |
858 | 863 |
859 // Kick off a sign-in through the signin manager. | 864 // Kick off a sign-in through the signin manager. |
860 signin->StartSignIn(username, password, current_error.captcha().token, | 865 signin->StartSignIn(username, password, current_error.captcha().token, |
861 solution); | 866 solution); |
862 } | 867 } |
| 868 #endif // !defined (OS_CHROMEOS) |
863 | 869 |
864 void SyncSetupHandler::GaiaCredentialsValid() { | 870 void SyncSetupHandler::GaiaCredentialsValid() { |
865 DCHECK(IsActiveLogin()); | 871 DCHECK(IsActiveLogin()); |
866 | 872 |
867 // Gaia credentials are valid - update the UI. | 873 // Gaia credentials are valid - update the UI. |
868 DisplayGaiaSuccessAndSettingUp(); | 874 DisplayGaiaSuccessAndSettingUp(); |
869 } | 875 } |
870 | 876 |
871 void SyncSetupHandler::SigninFailed(const GoogleServiceAuthError& error) { | 877 void SyncSetupHandler::SigninFailed(const GoogleServiceAuthError& error) { |
872 // Stop a timer to handle timeout in waiting for checking network connection. | 878 // Stop a timer to handle timeout in waiting for checking network connection. |
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1058 | 1064 |
1059 void SyncSetupHandler::HandleDoSignOutOnAuthError(const ListValue* args) { | 1065 void SyncSetupHandler::HandleDoSignOutOnAuthError(const ListValue* args) { |
1060 DLOG(INFO) << "Signing out the user to fix a sync error."; | 1066 DLOG(INFO) << "Signing out the user to fix a sync error."; |
1061 chrome::AttemptUserExit(); | 1067 chrome::AttemptUserExit(); |
1062 } | 1068 } |
1063 | 1069 |
1064 void SyncSetupHandler::HandleStopSyncing(const ListValue* args) { | 1070 void SyncSetupHandler::HandleStopSyncing(const ListValue* args) { |
1065 if (GetSyncService()) | 1071 if (GetSyncService()) |
1066 ProfileSyncService::SyncEvent(ProfileSyncService::STOP_FROM_OPTIONS); | 1072 ProfileSyncService::SyncEvent(ProfileSyncService::STOP_FROM_OPTIONS); |
1067 | 1073 |
1068 GetSignin()->SignOut(); | 1074 SigninManagerFactory::GetForProfile(GetProfile())->SignOut(); |
1069 } | 1075 } |
1070 | 1076 |
1071 void SyncSetupHandler::HandleCloseTimeout(const ListValue* args) { | 1077 void SyncSetupHandler::HandleCloseTimeout(const ListValue* args) { |
1072 CloseSyncSetup(); | 1078 CloseSyncSetup(); |
1073 } | 1079 } |
1074 | 1080 |
1075 void SyncSetupHandler::CloseSyncSetup() { | 1081 void SyncSetupHandler::CloseSyncSetup() { |
1076 // TODO(atwilson): Move UMA tracking of signin events out of sync module. | 1082 // TODO(atwilson): Move UMA tracking of signin events out of sync module. |
1077 ProfileSyncService* sync_service = GetSyncService(); | 1083 ProfileSyncService* sync_service = GetSyncService(); |
1078 if (IsActiveLogin()) { | 1084 if (IsActiveLogin()) { |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1111 // scenario: | 1117 // scenario: |
1112 // * User signs in while sync is disabled by policy. | 1118 // * User signs in while sync is disabled by policy. |
1113 // * Sync is re-enabled by policy. | 1119 // * Sync is re-enabled by policy. |
1114 // * User brings up sync setup dialog to do initial sync config. | 1120 // * User brings up sync setup dialog to do initial sync config. |
1115 // * User cancels out of the dialog. | 1121 // * User cancels out of the dialog. |
1116 // | 1122 // |
1117 // This case is indistinguishable from the "one click signin" case where | 1123 // This case is indistinguishable from the "one click signin" case where |
1118 // the user checks the "advanced setup" checkbox, then cancels out of | 1124 // the user checks the "advanced setup" checkbox, then cancels out of |
1119 // the setup box, which is a much more common scenario, so we do the | 1125 // the setup box, which is a much more common scenario, so we do the |
1120 // right thing for the one-click case. | 1126 // right thing for the one-click case. |
1121 GetSignin()->SignOut(); | 1127 SigninManagerFactory::GetForProfile(GetProfile())->SignOut(); |
1122 } | 1128 } |
1123 sync_service->DisableForUser(); | 1129 sync_service->DisableForUser(); |
1124 browser_sync::SyncPrefs sync_prefs(GetProfile()->GetPrefs()); | 1130 browser_sync::SyncPrefs sync_prefs(GetProfile()->GetPrefs()); |
1125 sync_prefs.SetStartSuppressed(true); | 1131 sync_prefs.SetStartSuppressed(true); |
1126 } | 1132 } |
1127 sync_service->SetSetupInProgress(false); | 1133 sync_service->SetSetupInProgress(false); |
1128 } | 1134 } |
1129 | 1135 |
1130 // Reset the attempted email address and error, otherwise the sync setup | 1136 // Reset the attempted email address and error, otherwise the sync setup |
1131 // overlay in the settings page will stay in whatever error state it was last | 1137 // overlay in the settings page will stay in whatever error state it was last |
(...skipping 19 matching lines...) Expand all Loading... |
1151 // 3) Previously working credentials have expired. | 1157 // 3) Previously working credentials have expired. |
1152 // 4) User is already signed in, but App Notifications needs to force another | 1158 // 4) User is already signed in, but App Notifications needs to force another |
1153 // login so it can fetch an oauth token (passes force_login=true) | 1159 // login so it can fetch an oauth token (passes force_login=true) |
1154 // 5) User is signed in, but has stopped sync via the google dashboard, and | 1160 // 5) User is signed in, but has stopped sync via the google dashboard, and |
1155 // signout is prohibited by policy so we need to force a re-auth. | 1161 // signout is prohibited by policy so we need to force a re-auth. |
1156 // 6) User clicks [Advanced Settings] button on options page while already | 1162 // 6) User clicks [Advanced Settings] button on options page while already |
1157 // logged in. | 1163 // logged in. |
1158 // 7) One-click signin (credentials are already available, so should display | 1164 // 7) One-click signin (credentials are already available, so should display |
1159 // sync configure UI, not login UI). | 1165 // sync configure UI, not login UI). |
1160 // 8) ChromeOS re-enable after disabling sync. | 1166 // 8) ChromeOS re-enable after disabling sync. |
1161 SigninManager* signin = GetSignin(); | 1167 SigninManagerBase* signin = |
| 1168 SigninManagerFactory::GetForProfile(GetProfile()); |
1162 if (force_login || | 1169 if (force_login || |
1163 signin->GetAuthenticatedUsername().empty() || | 1170 signin->GetAuthenticatedUsername().empty() || |
1164 #if !defined(OS_CHROMEOS) | 1171 #if !defined(OS_CHROMEOS) |
1165 (GetSyncService() && GetSyncService()->IsStartSuppressed()) || | 1172 (GetSyncService() && GetSyncService()->IsStartSuppressed()) || |
1166 #endif | 1173 #endif |
1167 signin->signin_global_error()->HasMenuItem()) { | 1174 signin->signin_global_error()->HasMenuItem()) { |
1168 // User is not logged in, or login has been specially requested - need to | 1175 // User is not logged in, or login has been specially requested - need to |
1169 // display login UI (cases 1-4). | 1176 // display login UI (cases 1-4). |
1170 DisplayGaiaLogin(false); | 1177 DisplayGaiaLogin(false); |
1171 } else { | 1178 } else { |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1294 | 1301 |
1295 bool SyncSetupHandler::IsLoginAuthDataValid(const std::string& username, | 1302 bool SyncSetupHandler::IsLoginAuthDataValid(const std::string& username, |
1296 string16* error_message) { | 1303 string16* error_message) { |
1297 if (username.empty()) | 1304 if (username.empty()) |
1298 return true; | 1305 return true; |
1299 | 1306 |
1300 // Can be null during some unit tests. | 1307 // Can be null during some unit tests. |
1301 if (!web_ui()) | 1308 if (!web_ui()) |
1302 return true; | 1309 return true; |
1303 | 1310 |
1304 if (!GetSignin()->IsAllowedUsername(username)) { | 1311 if (!SigninManagerFactory::GetForProfile( |
| 1312 GetProfile())->IsAllowedUsername(username)) { |
1305 *error_message = l10n_util::GetStringUTF16(IDS_SYNC_LOGIN_NAME_PROHIBITED); | 1313 *error_message = l10n_util::GetStringUTF16(IDS_SYNC_LOGIN_NAME_PROHIBITED); |
1306 return false; | 1314 return false; |
1307 } | 1315 } |
1308 | 1316 |
1309 // If running in a unit test, skip profile check. | 1317 // If running in a unit test, skip profile check. |
1310 if (!profile_manager_) | 1318 if (!profile_manager_) |
1311 return true; | 1319 return true; |
1312 | 1320 |
1313 // Check if the username is already in use by another profile. | 1321 // Check if the username is already in use by another profile. |
1314 const ProfileInfoCache& cache = profile_manager_->GetProfileInfoCache(); | 1322 const ProfileInfoCache& cache = profile_manager_->GetProfileInfoCache(); |
1315 size_t current_profile_index = | 1323 size_t current_profile_index = |
1316 cache.GetIndexOfProfileWithPath(GetProfile()->GetPath()); | 1324 cache.GetIndexOfProfileWithPath(GetProfile()->GetPath()); |
1317 string16 username_utf16 = UTF8ToUTF16(username); | 1325 string16 username_utf16 = UTF8ToUTF16(username); |
1318 | 1326 |
1319 for (size_t i = 0; i < cache.GetNumberOfProfiles(); ++i) { | 1327 for (size_t i = 0; i < cache.GetNumberOfProfiles(); ++i) { |
1320 if (i != current_profile_index && AreUserNamesEqual( | 1328 if (i != current_profile_index && AreUserNamesEqual( |
1321 cache.GetUserNameOfProfileAtIndex(i), username_utf16)) { | 1329 cache.GetUserNameOfProfileAtIndex(i), username_utf16)) { |
1322 *error_message = l10n_util::GetStringUTF16( | 1330 *error_message = l10n_util::GetStringUTF16( |
1323 IDS_SYNC_USER_NAME_IN_USE_ERROR); | 1331 IDS_SYNC_USER_NAME_IN_USE_ERROR); |
1324 return false; | 1332 return false; |
1325 } | 1333 } |
1326 } | 1334 } |
1327 | 1335 |
1328 return true; | 1336 return true; |
1329 } | 1337 } |
OLD | NEW |