| Index: chrome/browser/ui/sync/one_click_signin_sync_starter.cc
|
| diff --git a/chrome/browser/ui/sync/one_click_signin_sync_starter.cc b/chrome/browser/ui/sync/one_click_signin_sync_starter.cc
|
| index 8c713f84ed9c102655be49f0ae12b14ba2bd6c0d..a459fc5b5c58bf71397a85aa66e2bc27ba7b7862 100644
|
| --- a/chrome/browser/ui/sync/one_click_signin_sync_starter.cc
|
| +++ b/chrome/browser/ui/sync/one_click_signin_sync_starter.cc
|
| @@ -34,7 +34,6 @@
|
| #include "chrome/browser/ui/chrome_pages.h"
|
| #include "chrome/browser/ui/sync/one_click_signin_sync_observer.h"
|
| #include "chrome/browser/ui/tabs/tab_strip_model.h"
|
| -#include "chrome/browser/ui/webui/signin/login_ui_service.h"
|
| #include "chrome/browser/ui/webui/signin/login_ui_service_factory.h"
|
| #include "chrome/browser/ui/webui/signin/profile_signin_confirmation_dialog.h"
|
| #include "chrome/common/url_constants.h"
|
| @@ -95,7 +94,7 @@ OneClickSigninSyncStarter::OneClickSigninSyncStarter(
|
| DCHECK(profile);
|
| DCHECK(web_contents || continue_url.is_empty());
|
| BrowserList::AddObserver(this);
|
| -
|
| + LoginUIServiceFactory::GetForProfile(profile)->AddObserver(this);
|
| Initialize(profile, browser);
|
|
|
| // Policy is enabled, so pass in a callback to do extra policy-related UI
|
| @@ -114,6 +113,7 @@ void OneClickSigninSyncStarter::OnBrowserRemoved(Browser* browser) {
|
|
|
| OneClickSigninSyncStarter::~OneClickSigninSyncStarter() {
|
| BrowserList::RemoveObserver(this);
|
| + LoginUIServiceFactory::GetForProfile(profile_)->RemoveObserver(this);
|
| }
|
|
|
| void OneClickSigninSyncStarter::Initialize(Profile* profile, Browser* browser) {
|
| @@ -376,6 +376,20 @@ void OneClickSigninSyncStarter::UntrustedSigninConfirmed(
|
| }
|
| }
|
|
|
| +void OneClickSigninSyncStarter::OnSyncConfirmationUIClosed(
|
| + bool configure_sync_first) {
|
| + if (configure_sync_first) {
|
| + chrome::ShowSettingsSubPage(browser_, chrome::kSyncSetupSubPage);
|
| + } else {
|
| + ProfileSyncService* profile_sync_service = GetProfileSyncService();
|
| + if (profile_sync_service)
|
| + profile_sync_service->SetSyncSetupCompleted();
|
| + FinishProfileSyncServiceSetup();
|
| + }
|
| +
|
| + delete this;
|
| +}
|
| +
|
| void OneClickSigninSyncStarter::SigninFailed(
|
| const GoogleServiceAuthError& error) {
|
| if (!sync_setup_completed_callback_.is_null())
|
| @@ -431,6 +445,9 @@ void OneClickSigninSyncStarter::MergeSessionComplete(
|
| }
|
| break;
|
| }
|
| + case CONFIRM_SYNC_SETTINGS_FIRST:
|
| + // Blocks sync until the sync settings confirmation UI is closed.
|
| + return;
|
| case CONFIGURE_SYNC_FIRST:
|
| ShowSettingsPage(true); // Show sync config UI.
|
| break;
|
|
|