diff options
| author | 2019-05-22 12:26:56 -0700 | |
|---|---|---|
| committer | 2019-05-22 12:30:53 -0700 | |
| commit | 76f0e0d282dadc3f8b4ad81831fa02d590af9dd3 (patch) | |
| tree | d9a2adc2cd458af13390452d6a10475042d6005c | |
| parent | d31c9628c9af7940f24ad135acaf8a9faa856167 (diff) | |
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
| -rw-r--r-- | services/core/java/com/android/server/content/SyncManager.java | 2 | ||||
| -rw-r--r-- | services/core/java/com/android/server/content/SyncStorageEngine.java | 10 |
2 files changed, 7 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/content/SyncManager.java b/services/core/java/com/android/server/content/SyncManager.java index d8b7c2eb5d4c..fa8c48bdc7f7 100644 --- a/services/core/java/com/android/server/content/SyncManager.java +++ b/services/core/java/com/android/server/content/SyncManager.java @@ -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) { diff --git a/services/core/java/com/android/server/content/SyncStorageEngine.java b/services/core/java/com/android/server/content/SyncStorageEngine.java index c7a3f4b173c3..e09c661c627b 100644 --- a/services/core/java/com/android/server/content/SyncStorageEngine.java +++ b/services/core/java/com/android/server/content/SyncStorageEngine.java @@ -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); |