| Index: chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
|
| index 2a3a18a3f6f83ec2892e900cf5e6a9e8444520d9..5d2bcd99193dba66e781bf2cc24ab0c85430129a 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
|
| @@ -23,6 +23,7 @@
|
| import org.chromium.base.metrics.RecordUserAction;
|
| import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
|
| import org.chromium.chrome.browser.externalauth.UserRecoverableErrorHandler;
|
| +import org.chromium.signin.InvestigatedScenario;
|
| import org.chromium.sync.signin.AccountManagerHelper;
|
| import org.chromium.sync.signin.ChromeSigninController;
|
|
|
| @@ -291,7 +292,7 @@
|
| public void onSystemAccountsSeedingComplete() {
|
| if (mSignInState != null && mSignInState.blockedOnAccountSeeding) {
|
| mSignInState.blockedOnAccountSeeding = false;
|
| - progressSignInFlowCheckPolicy();
|
| + progressSignInFlowInvestigateScenario();
|
| }
|
| }
|
|
|
| @@ -365,7 +366,7 @@
|
|
|
| private void progressSignInFlowSeedSystemAccounts() {
|
| if (AccountTrackerService.get(mContext).checkAndSeedSystemAccounts()) {
|
| - progressSignInFlowCheckPolicy();
|
| + progressSignInFlowInvestigateScenario();
|
| } else if (AccountIdProvider.getInstance().canBeUsed(mContext)) {
|
| mSignInState.blockedOnAccountSeeding = true;
|
| } else {
|
| @@ -380,16 +381,51 @@
|
| }
|
|
|
| /**
|
| + * If sign-in is interactive and the user is changing accounts, display a confirmation dialog.
|
| + */
|
| + private void progressSignInFlowInvestigateScenario() {
|
| + if (!mSignInState.isInteractive()) {
|
| + progressSignInFlowCheckPolicy();
|
| + return;
|
| + }
|
| +
|
| + if (mSignInState.isActivityDestroyed()) {
|
| + abortSignIn();
|
| + return;
|
| + }
|
| +
|
| + // TODO(skym): Warn for high risk upgrade scenario, crbug.com/572754.
|
| + if (SigninInvestigator.investigate(mSignInState.account.name)
|
| + == InvestigatedScenario.DIFFERENT_ACCOUNT) {
|
| + mSignInState.displayedDialog =
|
| + ConfirmAccountChangeFragment.newInstance(mSignInState.account.name);
|
| + mSignInState.displayedDialog.show(
|
| + mSignInState.activity.getFragmentManager(), CONFIRM_ACCOUNT_CHANGED_DIALOG_TAG);
|
| + } else {
|
| + // Do not display dialog, just sign-in.
|
| + progressSignInFlowCheckPolicy();
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * Called from ConfirmAccountChangeFragment if the new account name was confirmed.
|
| + */
|
| + void progressInteractiveSignInFlowAccountConfirmed() {
|
| + if (mSignInState == null || mSignInState.displayedDialog == null) {
|
| + // Stop if sign-in was cancelled or this is a duplicate click event.
|
| + return;
|
| + }
|
| + mSignInState.displayedDialog = null;
|
| +
|
| + progressSignInFlowCheckPolicy();
|
| + }
|
| +
|
| + /**
|
| * Continues the signin flow by checking if there is a policy that the account is subject to.
|
| */
|
| private void progressSignInFlowCheckPolicy() {
|
| if (mSignInState == null) {
|
| Log.w(TAG, "Ignoring sign in progress request as no pending sign in.");
|
| - return;
|
| - }
|
| -
|
| - if (mSignInState.isActivityDestroyed()) {
|
| - abortSignIn();
|
| return;
|
| }
|
|
|
| @@ -429,7 +465,6 @@
|
| return;
|
| }
|
|
|
| - // TODO(peconn): Move this and other UI interactions into AccountSigninView.
|
| Log.d(TAG, "Account has policy management");
|
| mSignInState.displayedDialog = ConfirmManagedSigninFragment.newInstance(managementDomain);
|
| mSignInState.displayedDialog.show(
|
|
|