Chromium Code Reviews| 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 cc30fc02e518df618103910c478ea5065ba1c89a..a800de21ec191d204458ac65a8a84ff062fda50c 100644 |
| --- a/chrome/browser/ui/sync/one_click_signin_sync_starter.cc |
| +++ b/chrome/browser/ui/sync/one_click_signin_sync_starter.cc |
| @@ -12,6 +12,7 @@ |
| #include "chrome/browser/policy/cloud/user_policy_signin_service.h" |
| #include "chrome/browser/policy/cloud/user_policy_signin_service_factory.h" |
| #include "chrome/browser/profiles/profile.h" |
| +#include "chrome/browser/profiles/profile_attributes_entry.h" |
| #include "chrome/browser/profiles/profile_attributes_storage.h" |
| #include "chrome/browser/profiles/profile_avatar_icon_util.h" |
| #include "chrome/browser/profiles/profile_io_data.h" |
| @@ -141,6 +142,7 @@ void OneClickSigninSyncStarter::Initialize(Profile* profile, Browser* browser) { |
| // will not be able to complete successfully. |
| syncer::SyncPrefs sync_prefs(profile_->GetPrefs()); |
| sync_prefs.SetSyncRequested(true); |
| + skip_sync_confirm_ = false; |
| } |
| void OneClickSigninSyncStarter::ConfirmSignin(const std::string& oauth_token) { |
| @@ -310,6 +312,7 @@ void OneClickSigninSyncStarter::CompleteInitForNewProfile( |
| FinishProfileSyncServiceSetup(); |
| Initialize(new_profile, nullptr); |
| DCHECK_EQ(profile_, new_profile); |
| + skip_sync_confirm_ = true; |
| // We've transferred our credentials to the new profile - notify that |
| // the signin for the original profile was cancelled (must do this after |
| @@ -322,6 +325,15 @@ void OneClickSigninSyncStarter::CompleteInitForNewProfile( |
| // loading the signin process will complete. |
| LoadPolicyWithCachedCredentials(); |
| + // Unlock the new profile. |
| + ProfileAttributesEntry* entry; |
| + bool has_entry = |
| + g_browser_process->profile_manager() |
| + ->GetProfileAttributesStorage() |
| + .GetProfileAttributesWithPath(new_profile->GetPath(), &entry); |
| + DCHECK(has_entry); |
| + entry->SetIsSigninRequired(false); |
|
Roger Tawa OOO till Jul 10th
2016/11/02 13:20:39
Could we try to reuse the LockProfile() method you
zmin
2016/11/02 20:30:22
In the next CL(coming soon). The way of lock/unloc
|
| + |
| // Open the profile's first window, after all initialization. |
| profiles::FindOrCreateNewWindowForProfile( |
| new_profile, |
| @@ -466,6 +478,15 @@ void OneClickSigninSyncStarter::AccountAddedToCookie( |
| // Regardless of whether the account was successfully added or not, |
| // continue with sync starting. |
| + // TODO(zmin): Remove this hack once the https://crbug.com/657924 fixed. |
| + // Skip the Sync confirmation dialog if user choose to create a new profile |
| + // for the corp signin. This is because the dialog doesn't work properly |
| + // after the corp signin. |
| + if (skip_sync_confirm_) { |
| + OnSyncConfirmationUIClosed(LoginUIService::ABORT_SIGNIN); |
| + return; |
| + } |
| + |
| if (switches::UsePasswordSeparatedSigninFlow()) { |
| // Under the new signin flow, the sync confirmation dialog should always be |
| // shown regardless of |start_mode_|. |sync_setup_completed_callback_| will |