From 4a9d358448ef150cae259e9c5b5ed1227a1d6d9c Mon Sep 17 00:00:00 2001 From: Suprabh Shukla Date: Mon, 11 Sep 2017 19:50:51 +0000 Subject: Revert "Clearing up invalid entries when SyncStorageEngine starts" API getSystemService(Class) was not present in lmp-dev. This reverts commit 89c0dbca0f52987571b62e929f114f3126c29455. Bug: 35028827 Change-Id: I19846d2a3ee27aecbae2367a74ee49082eea154d --- .../android/server/content/SyncStorageEngine.java | 65 ++-------------------- 1 file 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 mAccountsCache; - final private SparseArray> 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 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 mAuthorities = new SparseArray(); @@ -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; -- cgit v1.2.3-59-g8ed1b