AccountManager: add startUpdateCredentials API.
Adding startUpdateCredentials API to AccountManager and
AbstractAccountAuthenticator.
Change-Id: Id9a1ff86764f2fde01fd8482594e4ae34e1f3bd1
diff --git a/services/core/java/com/android/server/accounts/AccountManagerService.java b/services/core/java/com/android/server/accounts/AccountManagerService.java
index 37d47c3..93eaf0e 100644
--- a/services/core/java/com/android/server/accounts/AccountManagerService.java
+++ b/services/core/java/com/android/server/accounts/AccountManagerService.java
@@ -2286,8 +2286,11 @@
}
@Override
- public void startAddAccountSession(final IAccountManagerResponse response, final String accountType,
- final String authTokenType, final String[] requiredFeatures,
+ public void startAddAccountSession(
+ final IAccountManagerResponse response,
+ final String accountType,
+ final String authTokenType,
+ final String[] requiredFeatures,
final boolean expectActivityLaunch,
final Bundle optionsIn) {
if (Log.isLoggable(TAG, Log.VERBOSE)) {
@@ -2571,6 +2574,60 @@
}
@Override
+ public void startUpdateCredentialsSession(
+ IAccountManagerResponse response,
+ final Account account,
+ final String authTokenType,
+ final boolean expectActivityLaunch,
+ final Bundle loginOptions) {
+ if (Log.isLoggable(TAG, Log.VERBOSE)) {
+ Log.v(TAG,
+ "startUpdateCredentialsSession: " + account + ", response " + response
+ + ", authTokenType " + authTokenType + ", expectActivityLaunch "
+ + expectActivityLaunch + ", caller's uid " + Binder.getCallingUid()
+ + ", pid " + Binder.getCallingPid());
+ }
+ if (response == null) {
+ throw new IllegalArgumentException("response is null");
+ }
+ if (account == null) {
+ throw new IllegalArgumentException("account is null");
+ }
+ int userId = UserHandle.getCallingUserId();
+ long identityToken = clearCallingIdentity();
+ try {
+ UserAccounts accounts = getUserAccounts(userId);
+ new StartAccountSession(
+ accounts,
+ response,
+ account.type,
+ expectActivityLaunch,
+ account.name,
+ false /* authDetailsRequired */,
+ true /* updateLastCredentialTime */) {
+ @Override
+ public void run() throws RemoteException {
+ mAuthenticator.startUpdateCredentialsSession(this, account, authTokenType,
+ loginOptions);
+ }
+
+ @Override
+ protected String toDebugString(long now) {
+ if (loginOptions != null)
+ loginOptions.keySet();
+ return super.toDebugString(now)
+ + ", startUpdateCredentialsSession"
+ + ", " + account
+ + ", authTokenType " + authTokenType
+ + ", loginOptions " + loginOptions;
+ }
+ }.bind();
+ } finally {
+ restoreCallingIdentity(identityToken);
+ }
+ }
+
+ @Override
public void editProperties(IAccountManagerResponse response, final String accountType,
final boolean expectActivityLaunch) {
final int callingUid = Binder.getCallingUid();