Chromium Code Reviews| 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/options/sync_setup_handler.h" | 5 #include "chrome/browser/ui/webui/options/sync_setup_handler.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/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
| (...skipping 631 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 642 // blank setup overlay on this page by showing the "done" page. This can | 642 // blank setup overlay on this page by showing the "done" page. This can |
| 643 // happen if the user navigates to chrome://settings/syncSetup in more than | 643 // happen if the user navigates to chrome://settings/syncSetup in more than |
| 644 // one tab. See crbug.com/261566. | 644 // one tab. See crbug.com/261566. |
| 645 // Note: The following block will transfer focus to the existing wizard. | 645 // Note: The following block will transfer focus to the existing wizard. |
| 646 if (IsExistingWizardPresent() && !IsActiveLogin()) | 646 if (IsExistingWizardPresent() && !IsActiveLogin()) |
| 647 CloseUI(); | 647 CloseUI(); |
| 648 | 648 |
| 649 // If a setup wizard is present on this page or another, bring it to focus. | 649 // If a setup wizard is present on this page or another, bring it to focus. |
| 650 // Otherwise, display a new one on this page. | 650 // Otherwise, display a new one on this page. |
| 651 if (!FocusExistingWizardIfPresent()) | 651 if (!FocusExistingWizardIfPresent()) |
| 652 OpenSyncSetup(args); | 652 OpenSyncSetup(false /* creating_supervised_user */); |
| 653 } | 653 } |
| 654 | 654 |
| 655 #if defined(OS_CHROMEOS) | 655 #if defined(OS_CHROMEOS) |
| 656 // On ChromeOS, we need to sign out the user session to fix an auth error, so | 656 // On ChromeOS, we need to sign out the user session to fix an auth error, so |
| 657 // the user goes through the real signin flow to generate a new auth token. | 657 // the user goes through the real signin flow to generate a new auth token. |
| 658 void SyncSetupHandler::HandleDoSignOutOnAuthError(const base::ListValue* args) { | 658 void SyncSetupHandler::HandleDoSignOutOnAuthError(const base::ListValue* args) { |
| 659 DVLOG(1) << "Signing out the user to fix a sync error."; | 659 DVLOG(1) << "Signing out the user to fix a sync error."; |
| 660 chrome::AttemptUserExit(); | 660 chrome::AttemptUserExit(); |
| 661 } | 661 } |
| 662 #endif | 662 #endif |
| 663 | 663 |
| 664 #if !defined(OS_CHROMEOS) | 664 #if !defined(OS_CHROMEOS) |
| 665 void SyncSetupHandler::HandleStartSignin(const base::ListValue* args) { | 665 void SyncSetupHandler::HandleStartSignin(const base::ListValue* args) { |
| 666 // Should only be called if the user is not already signed in. | 666 // Should only be called if the user is not already signed in. |
| 667 DCHECK(!SigninManagerFactory::GetForProfile(GetProfile())-> | 667 DCHECK(!SigninManagerFactory::GetForProfile(GetProfile())->IsAuthenticated()); |
| 668 IsAuthenticated()); | 668 bool creating_supervised_user = false; |
| 669 OpenSyncSetup(args); | 669 std::string access_point; |
| 670 if (args->GetString(0, &access_point)) | |
| 671 creating_supervised_user = access_point == "access-point-supervised-user"; | |
|
dschuyler
2016/01/20 02:16:21
(optional) What do you think of:
std::string acce
tommycli
2016/01/20 19:17:12
Done. Yes that def better.
| |
| 672 OpenSyncSetup(creating_supervised_user); | |
| 670 } | 673 } |
| 671 | 674 |
| 672 void SyncSetupHandler::HandleStopSyncing(const base::ListValue* args) { | 675 void SyncSetupHandler::HandleStopSyncing(const base::ListValue* args) { |
| 673 if (GetSyncService()) | 676 if (GetSyncService()) |
| 674 ProfileSyncService::SyncEvent(ProfileSyncService::STOP_FROM_OPTIONS); | 677 ProfileSyncService::SyncEvent(ProfileSyncService::STOP_FROM_OPTIONS); |
| 675 SigninManagerFactory::GetForProfile(GetProfile())->SignOut( | 678 SigninManagerFactory::GetForProfile(GetProfile())->SignOut( |
| 676 signin_metrics::USER_CLICKED_SIGNOUT_SETTINGS); | 679 signin_metrics::USER_CLICKED_SIGNOUT_SETTINGS); |
| 677 | 680 |
| 678 bool delete_profile = false; | 681 bool delete_profile = false; |
| 679 if (args->GetBoolean(0, &delete_profile) && delete_profile) { | 682 if (args->GetBoolean(0, &delete_profile) && delete_profile) { |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 731 | 734 |
| 732 // Alert the sync service anytime the sync setup dialog is closed. This can | 735 // Alert the sync service anytime the sync setup dialog is closed. This can |
| 733 // happen due to the user clicking the OK or Cancel button, or due to the | 736 // happen due to the user clicking the OK or Cancel button, or due to the |
| 734 // dialog being closed by virtue of sync being disabled in the background. | 737 // dialog being closed by virtue of sync being disabled in the background. |
| 735 if (sync_service) | 738 if (sync_service) |
| 736 sync_service->SetSetupInProgress(false); | 739 sync_service->SetSetupInProgress(false); |
| 737 | 740 |
| 738 configuring_sync_ = false; | 741 configuring_sync_ = false; |
| 739 } | 742 } |
| 740 | 743 |
| 741 void SyncSetupHandler::OpenSyncSetup(const base::ListValue* args) { | 744 void SyncSetupHandler::OpenSyncSetup(bool creating_supervised_user) { |
| 742 if (!PrepareSyncSetup()) | 745 if (!PrepareSyncSetup()) |
| 743 return; | 746 return; |
| 744 | 747 |
| 745 // There are several different UI flows that can bring the user here: | 748 // There are several different UI flows that can bring the user here: |
| 746 // 1) Signin promo. | 749 // 1) Signin promo. |
| 747 // 2) Normal signin through settings page (IsAuthenticated() is false). | 750 // 2) Normal signin through settings page (IsAuthenticated() is false). |
| 748 // 3) Previously working credentials have expired. | 751 // 3) Previously working credentials have expired. |
| 749 // 4) User is signed in, but has stopped sync via the google dashboard, and | 752 // 4) User is signed in, but has stopped sync via the google dashboard, and |
| 750 // signout is prohibited by policy so we need to force a re-auth. | 753 // signout is prohibited by policy so we need to force a re-auth. |
| 751 // 5) User clicks [Advanced Settings] button on options page while already | 754 // 5) User clicks [Advanced Settings] button on options page while already |
| 752 // logged in. | 755 // logged in. |
| 753 // 6) One-click signin (credentials are already available, so should display | 756 // 6) One-click signin (credentials are already available, so should display |
| 754 // sync configure UI, not login UI). | 757 // sync configure UI, not login UI). |
| 755 // 7) User re-enables sync after disabling it via advanced settings. | 758 // 7) User re-enables sync after disabling it via advanced settings. |
| 756 #if !defined(OS_CHROMEOS) | 759 #if !defined(OS_CHROMEOS) |
| 757 SigninManagerBase* signin = | 760 SigninManagerBase* signin = |
| 758 SigninManagerFactory::GetForProfile(GetProfile()); | 761 SigninManagerFactory::GetForProfile(GetProfile()); |
| 759 | 762 |
| 760 if (!signin->IsAuthenticated() || | 763 if (!signin->IsAuthenticated() || |
| 761 SigninErrorControllerFactory::GetForProfile(GetProfile())->HasError()) { | 764 SigninErrorControllerFactory::GetForProfile(GetProfile())->HasError()) { |
| 762 // User is not logged in (cases 1-2), or login has been specially requested | 765 // User is not logged in (cases 1-2), or login has been specially requested |
| 763 // because previously working credentials have expired (case 3). Close sync | 766 // because previously working credentials have expired (case 3). Close sync |
| 764 // setup including any visible overlays, and display the gaia auth page. | 767 // setup including any visible overlays, and display the gaia auth page. |
| 765 // Control will be returned to the sync settings page once auth is complete. | 768 // Control will be returned to the sync settings page once auth is complete. |
| 766 CloseUI(); | 769 CloseUI(); |
| 767 if (args) { | 770 DisplayGaiaLogin(creating_supervised_user ? |
| 768 std::string access_point = base::UTF16ToUTF8(ExtractStringValue(args)); | 771 signin_metrics::AccessPoint::ACCESS_POINT_SUPERVISED_USER : |
| 769 if (access_point == "access-point-supervised-user") { | 772 signin_metrics::AccessPoint::ACCESS_POINT_SETTINGS); |
| 770 DisplayGaiaLogin( | |
| 771 signin_metrics::AccessPoint::ACCESS_POINT_SUPERVISED_USER); | |
| 772 return; | |
| 773 } | |
| 774 } | |
| 775 DisplayGaiaLogin(signin_metrics::AccessPoint::ACCESS_POINT_SETTINGS); | |
| 776 return; | 773 return; |
| 777 } | 774 } |
| 778 #endif | 775 #endif |
| 779 if (!GetSyncService()) { | 776 if (!GetSyncService()) { |
| 780 // This can happen if the user directly navigates to /settings/syncSetup. | 777 // This can happen if the user directly navigates to /settings/syncSetup. |
| 781 DLOG(WARNING) << "Cannot display sync UI when sync is disabled"; | 778 DLOG(WARNING) << "Cannot display sync UI when sync is disabled"; |
| 782 CloseUI(); | 779 CloseUI(); |
| 783 return; | 780 return; |
| 784 } | 781 } |
| 785 | 782 |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 953 "SyncSetupOverlay.showSyncSetupPage", page, args); | 950 "SyncSetupOverlay.showSyncSetupPage", page, args); |
| 954 | 951 |
| 955 // Make sure the tab used for the Gaia sign in does not cover the settings | 952 // Make sure the tab used for the Gaia sign in does not cover the settings |
| 956 // tab. | 953 // tab. |
| 957 FocusUI(); | 954 FocusUI(); |
| 958 } | 955 } |
| 959 | 956 |
| 960 LoginUIService* SyncSetupHandler::GetLoginUIService() const { | 957 LoginUIService* SyncSetupHandler::GetLoginUIService() const { |
| 961 return LoginUIServiceFactory::GetForProfile(GetProfile()); | 958 return LoginUIServiceFactory::GetForProfile(GetProfile()); |
| 962 } | 959 } |
| OLD | NEW |