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 cfdb33b07a8bccd9a1ca274eedcd19fbfd4e7ae6..f992f5780a4155bb32d5c72551bc381ecd936c5f 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 |
@@ -6,7 +6,6 @@ package org.chromium.chrome.browser.signin; |
import android.accounts.Account; |
import android.app.Activity; |
-import android.app.DialogFragment; |
import android.content.Context; |
import android.os.Handler; |
@@ -18,7 +17,6 @@ import org.chromium.base.Log; |
import org.chromium.base.ObserverList; |
import org.chromium.base.Promise; |
import org.chromium.base.ThreadUtils; |
-import org.chromium.base.VisibleForTesting; |
import org.chromium.base.annotations.CalledByNative; |
import org.chromium.base.metrics.RecordHistogram; |
import org.chromium.base.metrics.RecordUserAction; |
@@ -43,12 +41,6 @@ import javax.annotation.Nullable; |
public class SigninManager implements AccountTrackerService.OnSystemAccountsSeededListener { |
private static final String TAG = "SigninManager"; |
- private static final String CONFIRM_ACCOUNT_CHANGED_DIALOG_TAG = |
- "confirm_account_changed_dialog_tag"; |
- @VisibleForTesting |
- public static final String CONFIRM_MANAGED_SIGNIN_DIALOG_TAG = |
- "confirm_managed_signin_dialog_tag"; |
- |
private static SigninManager sSigninManager; |
private static int sSignInAccessPoint = SigninAccessPoint.UNKNOWN; |
@@ -146,11 +138,6 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed |
public final SignInCallback callback; |
/** |
- * The dialog currently being displayed to the user, if any. |
- */ |
- public DialogFragment displayedDialog = null; |
- |
- /** |
* If the system accounts need to be seeded, the sign in flow will block for that to occur. |
* This boolean should be set to true during that time and then reset back to false |
* afterwards. This allows the manager to know if it should progress the flow when the |
@@ -426,30 +413,7 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed |
return; |
} |
- if (!mSignInState.isInteractive()) { |
- // If this is a forced sign-in then don't show the confirmation dialog. |
- // This will call back to onPolicyFetchedBeforeSignIn. |
- nativeFetchPolicyBeforeSignIn(mNativeSigninManagerAndroid); |
- 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( |
- mSignInState.activity.getFragmentManager(), CONFIRM_MANAGED_SIGNIN_DIALOG_TAG); |
- } |
- |
- /** |
- * Called from ConfirmManagedSigninFragment if the managed account was confirmed. |
- */ |
- void progressInteractiveSignInFlowManagedConfirmed() { |
- if (mSignInState == null || mSignInState.displayedDialog == null) { |
- // Stop if sign-in was cancelled or this is a duplicate click event. |
- return; |
- } |
- mSignInState.displayedDialog = null; |
- |
+ // The user has already been notified that they are signing into a managed account. |
// This will call back to onPolicyFetchedBeforeSignIn. |
nativeFetchPolicyBeforeSignIn(mNativeSigninManagerAndroid); |
} |
@@ -586,10 +550,6 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed |
assert signInState != null; |
mSignInState = null; |
- if (signInState.displayedDialog != null) { |
- signInState.displayedDialog.dismiss(); |
- } |
- |
if (signInState.callback != null) { |
signInState.callback.onSignInAborted(); |
} |
@@ -671,10 +631,37 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed |
notifySignInAllowedChanged(); |
} |
+ /** |
+ * Performs an asynchronous check to see if the user is a managed user. |
+ * @param callback A callback to be called with true if the user is a managed user and false |
+ * otherwise. |
+ */ |
+ public static void isUserManaged(String email, final Callback<Boolean> callback) { |
+ if (nativeShouldLoadPolicyForUser(email)) { |
+ nativeIsUserManaged(email, callback); |
+ } else { |
+ // Although we know the result immediately, the caller may not be able to handle the |
+ // callback being executed during this method call. So we post the callback on the |
+ // looper. |
+ ThreadUtils.postOnUiThread(new Runnable() { |
+ @Override |
+ public void run() { |
+ callback.onResult(false); |
+ } |
+ }); |
+ } |
+ } |
+ |
+ public static String extractDomainName(String email) { |
+ return nativeExtractDomainName(email); |
+ } |
+ |
// Native methods. |
+ private static native String nativeExtractDomainName(String email); |
+ private static native boolean nativeShouldLoadPolicyForUser(String username); |
+ private static native void nativeIsUserManaged(String username, Callback<Boolean> callback); |
private native long nativeInit(); |
private native boolean nativeIsSigninAllowedByPolicy(long nativeSigninManagerAndroid); |
- private native boolean nativeShouldLoadPolicyForUser(String username); |
private native void nativeCheckPolicyBeforeSignIn( |
long nativeSigninManagerAndroid, String username); |
private native void nativeFetchPolicyBeforeSignIn(long nativeSigninManagerAndroid); |