Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6a994d2c authored by Svet Ganov's avatar Svet Ganov Committed by Svetoslav Ganov
Browse files

Merge commit 'a81bf719' into manual_merge_a81bf71

Change-Id: I1eb5158cc79c5537c8a4de85ce05852c62cf31aa
parent 96e602e1
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -2042,8 +2042,10 @@ public class AccountManagerService
            /*
             * Database transaction was successful. Clean up cached
             * data associated with the account in the user profile.
             * The account is now being tracked for remote access.
             */
            insertAccountIntoCacheLocked(accounts, renamedAccount);
            renamedAccount = insertAccountIntoCacheLocked(accounts, renamedAccount);

            /*
             * Extract the data and token caches before removing the
             * old account to preserve the user data associated with
@@ -6035,16 +6037,22 @@ public class AccountManagerService

    /**
     * This assumes that the caller has already checked that the account is not already present.
     * IMPORTANT: The account being inserted will begin to be tracked for access in remote
     * processes and if you will return this account to apps you should return the result.
     * @return The inserted account which is a new instance that is being tracked.
     */
    private void insertAccountIntoCacheLocked(UserAccounts accounts, Account account) {
    private Account insertAccountIntoCacheLocked(UserAccounts accounts, Account account) {
        Account[] accountsForType = accounts.accountCache.get(account.type);
        int oldLength = (accountsForType != null) ? accountsForType.length : 0;
        Account[] newAccountsForType = new Account[oldLength + 1];
        if (accountsForType != null) {
            System.arraycopy(accountsForType, 0, newAccountsForType, 0, oldLength);
        }
        newAccountsForType[oldLength] = new Account(account, new AccountAccessTracker());
        IAccountAccessTracker accessTracker = account.getAccessTracker() != null
                ? account.getAccessTracker() : new AccountAccessTracker();
        newAccountsForType[oldLength] = new Account(account, accessTracker);
        accounts.accountCache.put(account.type, newAccountsForType);
        return newAccountsForType[oldLength];
    }

    private Account[] filterSharedAccounts(UserAccounts userAccounts, Account[] unfiltered,