summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Makoto Onuki <omakoto@google.com> 2019-05-22 12:26:56 -0700
committer Makoto Onuki <omakoto@google.com> 2019-05-22 12:30:53 -0700
commit76f0e0d282dadc3f8b4ad81831fa02d590af9dd3 (patch)
treed9a2adc2cd458af13390452d6a10475042d6005c
parentd31c9628c9af7940f24ad135acaf8a9faa856167 (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.java2
-rw-r--r--services/core/java/com/android/server/content/SyncStorageEngine.java10
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);