diff options
author | bauerb <bauerb@chromium.org> | 2015-06-16 05:38:45 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-06-16 12:40:02 +0000 |
commit | ec276d658f681221b4de3d32971fd77960522e50 (patch) | |
tree | a2e5cb7a9f6bef6fa33c7a6c7dec6515acc70687 /sync/android | |
parent | 2785597a86381c176f16bfdb7270bc37caa4f2a7 (diff) | |
download | chromium_src-ec276d658f681221b4de3d32971fd77960522e50.zip chromium_src-ec276d658f681221b4de3d32971fd77960522e50.tar.gz chromium_src-ec276d658f681221b4de3d32971fd77960522e50.tar.bz2 |
Listen for account changes and update child account status correspondingly.
BUG=482889
Review URL: https://codereview.chromium.org/1160813005
Cr-Commit-Position: refs/heads/master@{#334588}
Diffstat (limited to 'sync/android')
3 files changed, 34 insertions, 0 deletions
diff --git a/sync/android/java/src/org/chromium/sync/signin/AccountManagerDelegate.java b/sync/android/java/src/org/chromium/sync/signin/AccountManagerDelegate.java index 0fd5a39..ba7bc46 100644 --- a/sync/android/java/src/org/chromium/sync/signin/AccountManagerDelegate.java +++ b/sync/android/java/src/org/chromium/sync/signin/AccountManagerDelegate.java @@ -49,4 +49,7 @@ public interface AccountManagerDelegate { String peekAuthToken(Account account, String authTokenType); AuthenticatorDescription[] getAuthenticatorTypes(); + + AccountManagerFuture<Boolean> hasFeatures(Account account, String[] features, + AccountManagerCallback<Boolean> callback, Handler handler); } diff --git a/sync/android/java/src/org/chromium/sync/signin/AccountManagerHelper.java b/sync/android/java/src/org/chromium/sync/signin/AccountManagerHelper.java index 856a5a0..4d2b292 100644 --- a/sync/android/java/src/org/chromium/sync/signin/AccountManagerHelper.java +++ b/sync/android/java/src/org/chromium/sync/signin/AccountManagerHelper.java @@ -8,6 +8,7 @@ package org.chromium.sync.signin; import android.Manifest; import android.accounts.Account; import android.accounts.AccountManager; +import android.accounts.AccountManagerCallback; import android.accounts.AccountManagerFuture; import android.accounts.AuthenticatorDescription; import android.accounts.AuthenticatorException; @@ -51,6 +52,12 @@ public class AccountManagerHelper { public static final String GOOGLE_ACCOUNT_TYPE = "com.google"; + /** + * An account feature (corresponding to a Gaia service flag) that specifies whether the account + * is a child account. + */ + @VisibleForTesting public static final String FEATURE_IS_CHILD_ACCOUNT_KEY = "service_uca"; + private static final Object sLock = new Object(); private static final int MAX_TRIES = 3; @@ -130,6 +137,18 @@ public class AccountManagerHelper { return mAccountManager.getAccountsByType(GOOGLE_ACCOUNT_TYPE); } + /** + * Convenience method to get the single Google account on the device. Should only be + * called if it has been determined that there is exactly one account. + * + * @return The single account to sign into. + */ + public Account getSingleGoogleAccount() { + Account[] googleAccounts = getGoogleAccounts(); + assert googleAccounts.length == 1; + return googleAccounts[0]; + } + public boolean hasGoogleAccounts() { return getGoogleAccounts().length > 0; } @@ -370,4 +389,10 @@ public class AccountManagerHelper { mAccountManager.invalidateAuthToken(GOOGLE_ACCOUNT_TYPE, authToken); } } + + public AccountManagerFuture<Boolean> checkChildAccount( + Account account, AccountManagerCallback<Boolean> callback) { + String[] features = {FEATURE_IS_CHILD_ACCOUNT_KEY}; + return mAccountManager.hasFeatures(account, features, callback, null /* handler */); + } } diff --git a/sync/android/java/src/org/chromium/sync/signin/SystemAccountManagerDelegate.java b/sync/android/java/src/org/chromium/sync/signin/SystemAccountManagerDelegate.java index 5defa3a..e8f8abb 100644 --- a/sync/android/java/src/org/chromium/sync/signin/SystemAccountManagerDelegate.java +++ b/sync/android/java/src/org/chromium/sync/signin/SystemAccountManagerDelegate.java @@ -102,4 +102,10 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { public AuthenticatorDescription[] getAuthenticatorTypes() { return mAccountManager.getAuthenticatorTypes(); } + + @Override + public AccountManagerFuture<Boolean> hasFeatures(Account account, String[] features, + AccountManagerCallback<Boolean> callback, Handler handler) { + return mAccountManager.hasFeatures(account, features, callback, handler); + } } |