diff options
| author | 2017-09-11 22:25:29 +0000 | |
|---|---|---|
| committer | 2017-09-11 22:25:29 +0000 | |
| commit | 0597a93629dd9ab09a705e00b3e49c22c74735e3 (patch) | |
| tree | 059435b7d219c90fe8e447f0556416a773f3ef50 | |
| parent | 53a2e46036dec565821153c1b45523b4d3a723dd (diff) | |
| parent | 4a9d358448ef150cae259e9c5b5ed1227a1d6d9c (diff) | |
Revert "Clearing up invalid entries when SyncStorageEngine starts"
am: 4a9d358448
Change-Id: I3844594302279f859f7834a6bb29093162914ae6
| -rw-r--r-- | services/core/java/com/android/server/content/SyncStorageEngine.java | 65 |
1 files changed, 5 insertions, 60 deletions
diff --git a/services/core/java/com/android/server/content/SyncStorageEngine.java b/services/core/java/com/android/server/content/SyncStorageEngine.java index af52c6a901e5..6adb37eb334e 100644 --- a/services/core/java/com/android/server/content/SyncStorageEngine.java +++ b/services/core/java/com/android/server/content/SyncStorageEngine.java @@ -18,7 +18,6 @@ package com.android.server.content; import android.accounts.Account; import android.accounts.AccountAndUser; -import android.accounts.AccountManager; import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; @@ -27,7 +26,6 @@ import android.content.PeriodicSync; import android.content.SyncInfo; import android.content.SyncRequest; import android.content.SyncStatusInfo; -import android.content.pm.PackageManager; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; @@ -406,49 +404,6 @@ public class SyncStorageEngine extends Handler { public void onSyncRequest(EndPoint info, int reason, Bundle extras); } - /** - * Validator that maintains a lazy cache of accounts and providers to tell if an authority or - * account is valid. - */ - private static class AccountAuthorityValidator { - final private AccountManager mAccountManager; - final private PackageManager mPackageManager; - final private SparseArray<Account[]> mAccountsCache; - final private SparseArray<ArrayMap<String, Boolean>> mProvidersPerUserCache; - - AccountAuthorityValidator(Context context) { - mAccountManager = context.getSystemService(AccountManager.class); - mPackageManager = context.getPackageManager(); - mAccountsCache = new SparseArray<>(); - mProvidersPerUserCache = new SparseArray<>(); - } - - // An account is valid if an installed authenticator has previously created that account - // on the device - boolean isAccountValid(Account account, int userId) { - Account[] accountsForUser = mAccountsCache.get(userId); - if (accountsForUser == null) { - accountsForUser = mAccountManager.getAccountsAsUser(userId); - mAccountsCache.put(userId, accountsForUser); - } - return ArrayUtils.contains(accountsForUser, account); - } - - // An authority is only valid if it has a content provider installed on the system - boolean isAuthorityValid(String authority, int userId) { - ArrayMap<String, Boolean> authorityMap = mProvidersPerUserCache.get(userId); - if (authorityMap == null) { - authorityMap = new ArrayMap<>(); - mProvidersPerUserCache.put(userId, authorityMap); - } - if (!authorityMap.containsKey(authority)) { - authorityMap.put(authority, - mPackageManager.resolveContentProviderAsUser(authority, 0, userId) != null); - } - return authorityMap.get(authority); - } - } - // Primary list of all syncable authorities. Also our global lock. private final SparseArray<AuthorityInfo> mAuthorities = new SparseArray<AuthorityInfo>(); @@ -1907,13 +1862,12 @@ public class SyncStorageEngine extends Handler { eventType = parser.next(); AuthorityInfo authority = null; PeriodicSync periodicSync = null; - AccountAuthorityValidator validator = new AccountAuthorityValidator(mContext); do { if (eventType == XmlPullParser.START_TAG) { tagName = parser.getName(); if (parser.getDepth() == 2) { if ("authority".equals(tagName)) { - authority = parseAuthority(parser, version, validator); + authority = parseAuthority(parser, version); periodicSync = null; if (authority != null) { if (authority.ident > highestAuthorityId) { @@ -2046,8 +2000,7 @@ public class SyncStorageEngine extends Handler { mMasterSyncAutomatically.put(userId, listen); } - private AuthorityInfo parseAuthority(XmlPullParser parser, int version, - AccountAuthorityValidator validator) { + private AuthorityInfo parseAuthority(XmlPullParser parser, int version) { AuthorityInfo authority = null; int id = -1; try { @@ -2092,22 +2045,12 @@ public class SyncStorageEngine extends Handler { info = new EndPoint( new Account(accountName, accountType), authorityName, userId); - if (validator.isAccountValid(info.account, userId) - && validator.isAuthorityValid(authorityName, userId)) { - authority = getOrCreateAuthorityLocked(info, id, false); - } else { - EventLog.writeEvent(0x534e4554, "35028827", -1, - "account:" + info.account + " provider:" + authorityName + " user:" - + userId); - } } else { info = new EndPoint( new ComponentName(packageName, className), userId); - authority = getOrCreateAuthorityLocked(info, id, false); } - } - if (authority != null) { + authority = getOrCreateAuthorityLocked(info, id, false); // If the version is 0 then we are upgrading from a file format that did not // know about periodic syncs. In that case don't clear the list since we // want the default, which is a daily periodic sync. @@ -2116,6 +2059,8 @@ public class SyncStorageEngine extends Handler { if (version > 0) { authority.periodicSyncs.clear(); } + } + if (authority != null) { authority.enabled = enabled == null || Boolean.parseBoolean(enabled); if ("unknown".equals(syncable)) { authority.syncable = -1; |