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

Commit 76f0e0d2 authored by Makoto Onuki's avatar Makoto Onuki
Browse files

Don't purge *all* sync information when a user is deleted.

Bug: 132869699
Test: Manual:
1. Add two accounts
(Wait for a while)
2. Remove one
(Wait for a while)
3. Make sure the other account's sync adapter states are intact using
"dumpsys content".
4. Add a guest user
(Wait for a while)
5. Remove the guest user
(Wait for a while)
3. Make sure user-0's sync adapter states are intact using
"dumpsys content".

Change-Id: I1fc11a37d6b4672ecd4c62f338d75a7381a2df6b
parent d31c9628
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1170,7 +1170,7 @@ public class SyncManager {
    }

    private void removeSyncsForAuthority(EndPoint info, String why) {
        mLogger.log("removeSyncsForAuthority: ", info);
        mLogger.log("removeSyncsForAuthority: ", info, why);
        verifyJobScheduler();
        List<SyncOperation> ops = getAllPendingSyncs();
        for (SyncOperation op: ops) {
+6 −4
Original line number Diff line number Diff line
@@ -1027,7 +1027,7 @@ public class SyncStorageEngine {
     * Called when the set of account has changed, given the new array of
     * active accounts.
     */
    public void removeStaleAccounts(@Nullable Account[] accounts, int userId) {
    public void removeStaleAccounts(@Nullable Account[] currentAccounts, int userId) {
        synchronized (mAuthorities) {
            if (Log.isLoggable(TAG, Log.VERBOSE)) {
                Slog.v(TAG, "Updating for new accounts...");
@@ -1036,9 +1036,11 @@ public class SyncStorageEngine {
            Iterator<AccountInfo> accIt = mAccounts.values().iterator();
            while (accIt.hasNext()) {
                AccountInfo acc = accIt.next();
                if ((accounts == null) || (
                        (acc.accountAndUser.userId == userId)
                        && !ArrayUtils.contains(accounts, acc.accountAndUser.account))) {
                if (acc.accountAndUser.userId != userId) {
                    continue; // Irrelevant user.
                }
                if ((currentAccounts == null)
                        || !ArrayUtils.contains(currentAccounts, acc.accountAndUser.account)) {
                    // This account no longer exists...
                    if (Log.isLoggable(TAG, Log.VERBOSE)) {
                        Slog.v(TAG, "Account removed: " + acc.accountAndUser);