diff options
| author | 2018-08-09 11:31:14 -0700 | |
|---|---|---|
| committer | 2018-08-09 11:31:14 -0700 | |
| commit | 850045d4f4fe0cff32f9c8aebbaaba552da57178 (patch) | |
| tree | d0ad3559c3ff96865e8e438ffc1c70dc7a340ed8 | |
| parent | 7388dd54196ac06311838ea9c8c326dff7c61d30 (diff) | |
Fix race with wasPackageEverLaunched.
Change-Id: I1b9c234866903436af7a1380dfbc783ec89d6f60
Fixes: 112418799
Test: manually trigger sync
| -rw-r--r-- | services/core/java/com/android/server/content/SyncManager.java | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/content/SyncManager.java b/services/core/java/com/android/server/content/SyncManager.java index d06e78514a5c..f4d20b332e2f 100644 --- a/services/core/java/com/android/server/content/SyncManager.java +++ b/services/core/java/com/android/server/content/SyncManager.java @@ -1014,12 +1014,7 @@ public class SyncManager { Bundle finalExtras = new Bundle(extras); String packageName = syncAdapterInfo.componentName.getPackageName(); // If the app did not run and has no account access, done - try { - if (!mPackageManagerInternal.wasPackageEverLaunched(packageName, userId)) { - continue; - } - } catch (IllegalArgumentException e) { - // Package not found, race with an uninstall + if (!wasPackageEverLaunched(packageName, userId)) { continue; } mAccountManagerInternal.requestAccountAccess(account.account, @@ -3352,7 +3347,7 @@ public class SyncManager { String packageName = op.owningPackage; final int userId = UserHandle.getUserId(op.owningUid); // If the app did not run and has no account access, done - if (!mPackageManagerInternal.wasPackageEverLaunched(packageName, userId)) { + if (!wasPackageEverLaunched(packageName, userId)) { return; } mAccountManagerInternal.requestAccountAccess(op.target.account, @@ -4059,4 +4054,12 @@ public class SyncManager { public void resetTodayStats() { mSyncStorageEngine.resetTodayStats(/*force=*/ true); } + + private boolean wasPackageEverLaunched(String packageName, int userId) { + try { + return mPackageManagerInternal.wasPackageEverLaunched(packageName, userId); + } catch (IllegalArgumentException e) { + return false; // Package has been removed. + } + } } |