am 63fba8c1: Merge "Add new primary accounts to secondary limited users" into jb-mr2-dev
* commit '63fba8c12e3cf3e1fba39d9b76e230e25f98953c': Add new primary accounts to secondary limited users
This commit is contained in:
@@ -116,6 +116,7 @@ public class AccountManagerService
|
||||
|
||||
// Messages that can be sent on mHandler
|
||||
private static final int MESSAGE_TIMED_OUT = 3;
|
||||
private static final int MESSAGE_COPY_SHARED_ACCOUNT = 4;
|
||||
|
||||
private final IAccountAuthenticatorCache mAuthenticatorCache;
|
||||
|
||||
@@ -619,7 +620,17 @@ public class AccountManagerService
|
||||
}
|
||||
|
||||
public void run() throws RemoteException {
|
||||
mAuthenticator.addAccountFromCredentials(this, account, result);
|
||||
// Confirm that the owner's account still exists before this step.
|
||||
UserAccounts owner = getUserAccounts(UserHandle.USER_OWNER);
|
||||
synchronized (owner.cacheLock) {
|
||||
Account[] ownerAccounts = getAccounts(UserHandle.USER_OWNER);
|
||||
for (Account acc : ownerAccounts) {
|
||||
if (acc.equals(account)) {
|
||||
mAuthenticator.addAccountFromCredentials(this, account, result);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void onResult(Bundle result) {
|
||||
@@ -692,7 +703,33 @@ public class AccountManagerService
|
||||
db.endTransaction();
|
||||
}
|
||||
sendAccountsChangedBroadcast(accounts.userId);
|
||||
return true;
|
||||
}
|
||||
if (accounts.userId == UserHandle.USER_OWNER) {
|
||||
addAccountToLimitedUsers(account);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the account to all limited users as shared accounts. If the user is currently
|
||||
* running, then clone the account too.
|
||||
* @param account the account to share with limited users
|
||||
*/
|
||||
private void addAccountToLimitedUsers(Account account) {
|
||||
List<UserInfo> users = mUserManager.getUsers();
|
||||
for (UserInfo user : users) {
|
||||
if (user.isRestricted()) {
|
||||
addSharedAccountAsUser(account, user.id);
|
||||
try {
|
||||
if (ActivityManagerNative.getDefault().isUserRunning(user.id, false)) {
|
||||
mMessageHandler.sendMessage(mMessageHandler.obtainMessage(
|
||||
MESSAGE_COPY_SHARED_ACCOUNT, UserHandle.USER_OWNER, user.id,
|
||||
account));
|
||||
}
|
||||
} catch (RemoteException re) {
|
||||
// Shouldn't happen
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2161,6 +2198,10 @@ public class AccountManagerService
|
||||
session.onTimedOut();
|
||||
break;
|
||||
|
||||
case MESSAGE_COPY_SHARED_ACCOUNT:
|
||||
copyAccountToUser((Account) msg.obj, msg.arg1, msg.arg2);
|
||||
break;
|
||||
|
||||
default:
|
||||
throw new IllegalStateException("unhandled message: " + msg.what);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user