Commit e2bf93de authored by Patricia Hongo's avatar Patricia Hongo Committed by Commit Bot

Compute if sign out is allowed on every app startup.

The existing sign out pref is written just once, which makes sense for Android
EDU devices, but not for child accounts. These accounts may become
unsupervised, in which case they should be able to sign out.

Test: verified that the "Sign out of Chrome" button is hidden while an
existing consumer account is supervised, and enabled after the account chooses
to leave supervision. Didn't test on an Android EDU device yet.

Bug: 894618
Change-Id: I81e4f75857bf7f8346ef4a48caa3e32edae95848
Reviewed-on: https://chromium-review.googlesource.com/c/1306654Reviewed-by: default avatarBoris Sazonov <bsazonov@chromium.org>
Commit-Queue: P H <phongo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#606059}
parent ff7c4824
...@@ -18,7 +18,6 @@ import org.chromium.chrome.browser.signin.SigninManager; ...@@ -18,7 +18,6 @@ import org.chromium.chrome.browser.signin.SigninManager;
import org.chromium.chrome.browser.util.FeatureUtilities; import org.chromium.chrome.browser.util.FeatureUtilities;
import org.chromium.components.signin.AccountManagerFacade; import org.chromium.components.signin.AccountManagerFacade;
import org.chromium.components.signin.ChildAccountStatus; import org.chromium.components.signin.ChildAccountStatus;
import org.chromium.components.signin.ChromeSigninController;
import javax.annotation.Nullable; import javax.annotation.Nullable;
...@@ -48,17 +47,19 @@ public final class ForcedSigninProcessor { ...@@ -48,17 +47,19 @@ public final class ForcedSigninProcessor {
* changes with early exit if an account has already been signed in. * changes with early exit if an account has already been signed in.
*/ */
public static void start(final Context appContext, @Nullable final Runnable onComplete) { public static void start(final Context appContext, @Nullable final Runnable onComplete) {
if (ChromeSigninController.get().isSignedIn()) return;
new AndroidEduAndChildAccountHelper() { new AndroidEduAndChildAccountHelper() {
@Override @Override
public void onParametersReady() { public void onParametersReady() {
boolean isAndroidEduDevice = isAndroidEduDevice(); boolean isAndroidEduDevice = isAndroidEduDevice();
boolean hasChildAccount = ChildAccountStatus.isChild(getChildAccountStatus()); boolean hasChildAccount = ChildAccountStatus.isChild(getChildAccountStatus());
// If neither a child account or and EDU device, we return.
if (!isAndroidEduDevice && !hasChildAccount) return;
// Child account and EDU device at the same time is not supported. // Child account and EDU device at the same time is not supported.
assert !(isAndroidEduDevice && hasChildAccount); assert !(isAndroidEduDevice && hasChildAccount);
processForcedSignIn(appContext, onComplete);
boolean forceSignin = isAndroidEduDevice || hasChildAccount;
AccountManagementFragment.setSignOutAllowedPreferenceValue(!forceSignin);
if (forceSignin) {
processForcedSignIn(appContext, onComplete);
}
} }
}.start(); }.start();
} }
...@@ -86,8 +87,6 @@ public final class ForcedSigninProcessor { ...@@ -86,8 +87,6 @@ public final class ForcedSigninProcessor {
signinManager.signIn(accounts[0], null, new SigninManager.SignInCallback() { signinManager.signIn(accounts[0], null, new SigninManager.SignInCallback() {
@Override @Override
public void onSignInComplete() { public void onSignInComplete() {
// Since this is a forced signin, signout is not allowed.
AccountManagementFragment.setSignOutAllowedPreferenceValue(false);
if (onComplete != null) { if (onComplete != null) {
onComplete.run(); onComplete.run();
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment