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/bind.h" | 7 #include "base/bind.h" |
8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
9 #include "base/bind_helpers.h" | 9 #include "base/bind_helpers.h" |
10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
(...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
414 // We're done configuring, so notify ProfileSyncService that it is OK to | 414 // We're done configuring, so notify ProfileSyncService that it is OK to |
415 // start syncing. | 415 // start syncing. |
416 service->SetSyncSetupCompleted(); | 416 service->SetSyncSetupCompleted(); |
417 } | 417 } |
418 } | 418 } |
419 | 419 |
420 bool SyncSetupHandler::IsActiveLogin() const { | 420 bool SyncSetupHandler::IsActiveLogin() const { |
421 // LoginUIService can be NULL if page is brought up in incognito mode | 421 // LoginUIService can be NULL if page is brought up in incognito mode |
422 // (i.e. if the user is running in guest mode in cros and brings up settings). | 422 // (i.e. if the user is running in guest mode in cros and brings up settings). |
423 LoginUIService* service = GetLoginUIService(); | 423 LoginUIService* service = GetLoginUIService(); |
424 return service && (service->current_login_ui() == web_ui()); | 424 return service && (service->current_login_ui() == this); |
425 } | 425 } |
426 | 426 |
427 void SyncSetupHandler::RegisterMessages() { | 427 void SyncSetupHandler::RegisterMessages() { |
428 web_ui()->RegisterMessageCallback( | 428 web_ui()->RegisterMessageCallback( |
429 "SyncSetupDidClosePage", | 429 "SyncSetupDidClosePage", |
430 base::Bind(&SyncSetupHandler::OnDidClosePage, | 430 base::Bind(&SyncSetupHandler::OnDidClosePage, |
431 base::Unretained(this))); | 431 base::Unretained(this))); |
432 web_ui()->RegisterMessageCallback( | 432 web_ui()->RegisterMessageCallback( |
433 "SyncSetupSubmitAuth", | 433 "SyncSetupSubmitAuth", |
434 base::Bind(&SyncSetupHandler::HandleSubmitAuth, | 434 base::Bind(&SyncSetupHandler::HandleSubmitAuth, |
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
749 DCHECK(service); | 749 DCHECK(service); |
750 | 750 |
751 #if defined(OS_CHROMEOS) | 751 #if defined(OS_CHROMEOS) |
752 if (service->GetAuthError().state() != GoogleServiceAuthError::NONE) { | 752 if (service->GetAuthError().state() != GoogleServiceAuthError::NONE) { |
753 DLOG(INFO) << "Signing out the user to fix a sync error."; | 753 DLOG(INFO) << "Signing out the user to fix a sync error."; |
754 BrowserList::GetLastActive()->ExecuteCommand(IDC_EXIT); | 754 BrowserList::GetLastActive()->ExecuteCommand(IDC_EXIT); |
755 return; | 755 return; |
756 } | 756 } |
757 #endif | 757 #endif |
758 | 758 |
759 LoginUIServiceFactory::GetForProfile(GetProfile())->ShowLoginUI(false); | 759 // Bring up the existing wizard, or just display it on this page. |
| 760 if (!FocusExistingWizardIfPresent()) |
| 761 OpenSyncSetup(false); |
760 } | 762 } |
761 | 763 |
762 void SyncSetupHandler::HandleShowSetupUI(const ListValue* args) { | 764 void SyncSetupHandler::HandleShowSetupUI(const ListValue* args) { |
763 DCHECK(!configuring_sync_); | 765 DCHECK(!configuring_sync_); |
764 OpenSyncSetup(false); | 766 OpenSyncSetup(false); |
765 } | 767 } |
766 | 768 |
767 void SyncSetupHandler::HandleStopSyncing(const ListValue* args) { | 769 void SyncSetupHandler::HandleStopSyncing(const ListValue* args) { |
768 ProfileSyncService* service = GetSyncService(); | 770 ProfileSyncService* service = GetSyncService(); |
769 DCHECK(service); | 771 DCHECK(service); |
(...skipping 15 matching lines...) Expand all Loading... |
785 } else if (configuring_sync_) { | 787 } else if (configuring_sync_) { |
786 ProfileSyncService::SyncEvent( | 788 ProfileSyncService::SyncEvent( |
787 ProfileSyncService::CANCEL_DURING_CONFIGURE); | 789 ProfileSyncService::CANCEL_DURING_CONFIGURE); |
788 } else { | 790 } else { |
789 ProfileSyncService::SyncEvent( | 791 ProfileSyncService::SyncEvent( |
790 ProfileSyncService::CANCEL_FROM_SIGNON_WITHOUT_AUTH); | 792 ProfileSyncService::CANCEL_FROM_SIGNON_WITHOUT_AUTH); |
791 } | 793 } |
792 } | 794 } |
793 | 795 |
794 // Let the various services know that we're no longer active. | 796 // Let the various services know that we're no longer active. |
795 GetLoginUIService()->LoginUIClosed(web_ui()); | 797 GetLoginUIService()->LoginUIClosed(this); |
796 if (sync_service) | 798 if (sync_service) |
797 sync_service->set_setup_in_progress(false); | 799 sync_service->set_setup_in_progress(false); |
798 | 800 |
799 // Make sure user isn't left half-logged-in (signed in, but without sync | 801 // Make sure user isn't left half-logged-in (signed in, but without sync |
800 // started up). If the user hasn't finished setting up sync, then sign out | 802 // started up). If the user hasn't finished setting up sync, then sign out |
801 // and shut down sync. | 803 // and shut down sync. |
802 if (sync_service && !sync_service->HasSyncSetupCompleted()) { | 804 if (sync_service && !sync_service->HasSyncSetupCompleted()) { |
803 DVLOG(1) << "Signin aborted by user action"; | 805 DVLOG(1) << "Signin aborted by user action"; |
804 sync_service->DisableForUser(); | 806 sync_service->DisableForUser(); |
805 #if !defined(OS_CHROMEOS) | 807 #if !defined(OS_CHROMEOS) |
(...skipping 22 matching lines...) Expand all Loading... |
828 } | 830 } |
829 | 831 |
830 // If the wizard is already visible, just focus that one. | 832 // If the wizard is already visible, just focus that one. |
831 if (FocusExistingWizardIfPresent()) { | 833 if (FocusExistingWizardIfPresent()) { |
832 if (!IsActiveLogin()) | 834 if (!IsActiveLogin()) |
833 CloseOverlay(); | 835 CloseOverlay(); |
834 return; | 836 return; |
835 } | 837 } |
836 | 838 |
837 // Notify services that we are now active. | 839 // Notify services that we are now active. |
838 GetLoginUIService()->SetLoginUI(web_ui()); | 840 GetLoginUIService()->SetLoginUI(this); |
839 service->set_setup_in_progress(true); | 841 service->set_setup_in_progress(true); |
840 | 842 |
841 // There are several different UI flows that can bring the user here: | 843 // There are several different UI flows that can bring the user here: |
842 // 1) Signin promo (passes force_login=true) | 844 // 1) Signin promo (passes force_login=true) |
843 // 2) Normal signin through options page (AreCredentialsAvailable() will | 845 // 2) Normal signin through options page (AreCredentialsAvailable() will |
844 // return false). | 846 // return false). |
845 // 3) Previously working credentials have expired | 847 // 3) Previously working credentials have expired |
846 // (service->GetAuthError() != NONE). | 848 // (service->GetAuthError() != NONE). |
847 // 4) User is already signed in, but App Notifications needs to force another | 849 // 4) User is already signed in, but App Notifications needs to force another |
848 // login so it can fetch an oauth token (passes force_login=true) | 850 // login so it can fetch an oauth token (passes force_login=true) |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
880 new SigninTracker(GetProfile(), this, | 882 new SigninTracker(GetProfile(), this, |
881 SigninTracker::SERVICES_INITIALIZING)); | 883 SigninTracker::SERVICES_INITIALIZING)); |
882 service->set_setup_in_progress(true); | 884 service->set_setup_in_progress(true); |
883 service->UnsuppressAndStart(); | 885 service->UnsuppressAndStart(); |
884 DisplaySpinner(); | 886 DisplaySpinner(); |
885 } else { | 887 } else { |
886 DisplayConfigureSync(true, false); | 888 DisplayConfigureSync(true, false); |
887 } | 889 } |
888 } | 890 } |
889 | 891 |
| 892 void SyncSetupHandler::FocusUI() { |
| 893 DCHECK(IsActiveLogin()); |
| 894 web_ui()->GetWebContents()->GetRenderViewHost()->GetDelegate()->Activate(); |
| 895 } |
| 896 |
| 897 void SyncSetupHandler::CloseUI() { |
| 898 DCHECK(IsActiveLogin()); |
| 899 CloseOverlay(); |
| 900 } |
| 901 |
890 // Private member functions. | 902 // Private member functions. |
891 | 903 |
892 bool SyncSetupHandler::FocusExistingWizardIfPresent() { | 904 bool SyncSetupHandler::FocusExistingWizardIfPresent() { |
893 LoginUIService* service = GetLoginUIService(); | 905 LoginUIService* service = GetLoginUIService(); |
894 if (!service->current_login_ui()) | 906 if (!service->current_login_ui()) |
895 return false; | 907 return false; |
896 service->FocusLoginUI(); | 908 service->current_login_ui()->FocusUI(); |
897 return true; | 909 return true; |
898 } | 910 } |
899 | 911 |
900 LoginUIService* SyncSetupHandler::GetLoginUIService() const { | 912 LoginUIService* SyncSetupHandler::GetLoginUIService() const { |
901 return LoginUIServiceFactory::GetForProfile(GetProfile()); | 913 return LoginUIServiceFactory::GetForProfile(GetProfile()); |
902 } | 914 } |
903 | 915 |
904 void SyncSetupHandler::CloseOverlay() { | 916 void SyncSetupHandler::CloseOverlay() { |
905 CloseSyncSetup(); | 917 CloseSyncSetup(); |
906 web_ui()->CallJavascriptFunction("OptionsPage.closeOverlay"); | 918 web_ui()->CallJavascriptFunction("OptionsPage.closeOverlay"); |
(...skipping 18 matching lines...) Expand all Loading... |
925 if (i != current_profile_index && AreUserNamesEqual( | 937 if (i != current_profile_index && AreUserNamesEqual( |
926 cache.GetUserNameOfProfileAtIndex(i), username_utf16)) { | 938 cache.GetUserNameOfProfileAtIndex(i), username_utf16)) { |
927 *error_message = l10n_util::GetStringUTF16( | 939 *error_message = l10n_util::GetStringUTF16( |
928 IDS_SYNC_USER_NAME_IN_USE_ERROR); | 940 IDS_SYNC_USER_NAME_IN_USE_ERROR); |
929 return false; | 941 return false; |
930 } | 942 } |
931 } | 943 } |
932 | 944 |
933 return true; | 945 return true; |
934 } | 946 } |
OLD | NEW |