import android.os.Handler;
import android.util.Log;
+import org.chromium.base.ActivityState;
+import org.chromium.base.ApplicationStatus;
import org.chromium.base.CalledByNative;
import org.chromium.base.ObserverList;
import org.chromium.base.ThreadUtils;
private AlertDialog mPolicyConfirmationDialog;
+ private boolean mSigninAllowedByPolicy;
+
/**
* SignInAllowedObservers will be notified once signing-in becomes allowed or disallowed.
*/
ThreadUtils.assertOnUiThread();
mContext = context.getApplicationContext();
mNativeSigninManagerAndroid = nativeInit();
+ mSigninAllowedByPolicy = nativeIsSigninAllowedByPolicy(mNativeSigninManagerAndroid);
}
/**
* Returns true if signin can be started now.
*/
public boolean isSignInAllowed() {
- return !mFirstRunCheckIsPending &&
+ return mSigninAllowedByPolicy &&
+ !mFirstRunCheckIsPending &&
mSignInAccount == null &&
ChromeSigninController.get(mContext).getSignedInUser() == null;
}
+ /**
+ * Returns true if signin is disabled by policy.
+ */
+ public boolean isSigninDisabledByPolicy() {
+ return !mSigninAllowedByPolicy;
+ }
+
public void addSignInAllowedObserver(SignInAllowedObserver observer) {
mSignInAllowedObservers.addObserver(observer);
}
return;
}
- if (mSignInActivity.isDestroyed()) {
+ if (mSignInActivity != null &&
+ ApplicationStatus.getStateForActivity(mSignInActivity) == ActivityState.DESTROYED) {
// The activity is no longer running, cancel sign in.
cancelSignIn();
return;
mPolicyConfirmationDialog = null;
}
});
- builder.setOnDismissListener(
+ mPolicyConfirmationDialog = builder.create();
+ mPolicyConfirmationDialog.setOnDismissListener(
new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
}
}
});
- mPolicyConfirmationDialog = builder.create();
mPolicyConfirmationDialog.show();
}
return nativeIsNewProfileManagementEnabled();
}
+ @CalledByNative
+ private void onSigninAllowedByPolicyChanged(boolean newSigninAllowedByPolicy) {
+ mSigninAllowedByPolicy = newSigninAllowedByPolicy;
+ notifySignInAllowedChanged();
+ }
+
// 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);