Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4872)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java

Issue 2014833002: Show dialogs for syncing to managed accounts. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 37c0bb4a3805ff46e45fa4aa3842d3f1adb32376..6c4ee7bea3ba86702d11e5004098ee0e3de394ad 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;
@@ -144,11 +143,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
@@ -397,7 +391,7 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed
return;
}
- if (!nativeShouldLoadPolicyForUser(mSignInState.account.name)) {
+ if (!couldUserBeManaged(mSignInState.account.name)) {
// Proceed with the sign-in flow without checking for policy if it can be determined
// that this account can't have management enabled based on the username.
finishSignIn();
@@ -424,30 +418,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);
}
@@ -566,10 +537,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();
}
@@ -639,10 +606,32 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed
notifySignInAllowedChanged();
}
+ /**
+ * Performs a synchronous check to see if the user could be a managed user. We know some email
+ * domains (eg gmail) will never be managed so can quickly return a false in some cases.
+ * @return true if the account could be managed, you'll need to add a further check, false if
+ * the user is definitely not managed.
+ */
+ public static boolean couldUserBeManaged(String email) {
+ return nativeShouldLoadPolicyForUser(email);
+ }
+
+ /**
+ * Performs an asynchronous check to see if the user is a managed user.
+ * @param callback A callback that takes the management domain. This will be empty if the user
+ * is not managed.
+ */
+ public static void fetchManagementDomain(String email, Callback<String> callback) {
+ nativeFetchUserManagementDomain(email, callback);
+ }
+
+ private static native boolean nativeShouldLoadPolicyForUser(String username);
+ private static native void nativeFetchUserManagementDomain(String username,
+ Callback<String> callback);
+
// Native methods.
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);

Powered by Google App Engine
This is Rietveld 408576698