From 6f30f18ebe49896a5087b7192020ba6b74936d64 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Thu, 23 May 2019 15:41:41 -0700 Subject: [PATCH] Work on issue #112467931: APR about content provider without package While investigating, I found code that is still using the old 32-bit version code, which should be using the new longVersionCode. Then I looked around and found more stuff doing this. WTF. Fixed. Bug: 112467931 Test: manual Change-Id: I058fe1ef49121b430c7ff96348156a17f529838e --- .../statusbar/notification/InstantAppNotifier.java | 2 +- .../com/android/server/am/ActivityManagerService.java | 8 ++++---- .../core/java/com/android/server/am/BroadcastQueue.java | 2 +- services/core/java/com/android/server/am/ProcessList.java | 4 ++-- .../core/java/com/android/server/am/ServiceRecord.java | 5 +++-- .../src/com/android/server/webkit/TestSystemImpl.java | 2 +- 6 files changed, 12 insertions(+), 11 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/InstantAppNotifier.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/InstantAppNotifier.java index 77485325d8c9d..c67512c119225 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/InstantAppNotifier.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/InstantAppNotifier.java @@ -322,7 +322,7 @@ public class InstantAppNotifier extends SystemUI .putExtra( Intent.EXTRA_VERSION_CODE, (int) (appInfo.versionCode & 0x7fffffff)) - .putExtra(Intent.EXTRA_LONG_VERSION_CODE, appInfo.versionCode) + .putExtra(Intent.EXTRA_LONG_VERSION_CODE, appInfo.longVersionCode) .putExtra(Intent.EXTRA_INSTANT_APP_FAILURE, pendingIntent); PendingIntent webPendingIntent = diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 7a9375373557b..2d6e7d4537678 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -4916,7 +4916,7 @@ public class ActivityManagerService extends IActivityManager.Stub AutofillManagerInternal.class); if (afm != null) { autofillOptions = afm.getAutofillOptions( - app.info.packageName, app.info.versionCode, app.userId); + app.info.packageName, app.info.longVersionCode, app.userId); } } ContentCaptureOptions contentCaptureOptions = null; @@ -6361,8 +6361,8 @@ public class ActivityManagerService extends IActivityManager.Stub // to run in multiple processes, because this is actually // part of the framework so doesn't make sense to track as a // separate apk in the process. - app.addPackage(cpi.applicationInfo.packageName, cpi.applicationInfo.versionCode, - mProcessStats); + app.addPackage(cpi.applicationInfo.packageName, + cpi.applicationInfo.longVersionCode, mProcessStats); } notifyPackageUse(cpi.applicationInfo.packageName, PackageManager.NOTIFY_PACKAGE_USE_CONTENT_PROVIDER); @@ -14998,7 +14998,7 @@ public class ActivityManagerService extends IActivityManager.Stub ApplicationInfo ai = AppGlobals.getPackageManager(). getApplicationInfo(ssp, STOCK_PM_FLAGS, 0); mBatteryStatsService.notePackageInstalled(ssp, - ai != null ? ai.versionCode : 0); + ai != null ? ai.longVersionCode : 0); } catch (RemoteException e) { } } diff --git a/services/core/java/com/android/server/am/BroadcastQueue.java b/services/core/java/com/android/server/am/BroadcastQueue.java index 1c2f51bea5949..746c250308de5 100644 --- a/services/core/java/com/android/server/am/BroadcastQueue.java +++ b/services/core/java/com/android/server/am/BroadcastQueue.java @@ -1605,7 +1605,7 @@ public final class BroadcastQueue { if (app != null && app.thread != null && !app.killed) { try { app.addPackage(info.activityInfo.packageName, - info.activityInfo.applicationInfo.versionCode, mService.mProcessStats); + info.activityInfo.applicationInfo.longVersionCode, mService.mProcessStats); maybeAddAllowBackgroundActivityStartsToken(app, r); processCurBroadcastLocked(r, app, skipOomAdj); return; diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java index dc94c1e012506..943fe75b425ae 100644 --- a/services/core/java/com/android/server/am/ProcessList.java +++ b/services/core/java/com/android/server/am/ProcessList.java @@ -1918,7 +1918,7 @@ public final class ProcessList { // come up (we have a pid but not yet its thread), so keep it. if (DEBUG_PROCESSES) Slog.v(TAG_PROCESSES, "App already running: " + app); // If this is a new package in the process, add the package to the list - app.addPackage(info.packageName, info.versionCode, mService.mProcessStats); + app.addPackage(info.packageName, info.longVersionCode, mService.mProcessStats); checkSlow(startTime, "startProcess: done, added package to proc"); return app; } @@ -1946,7 +1946,7 @@ public final class ProcessList { checkSlow(startTime, "startProcess: done creating new process record"); } else { // If this is a new package in the process, add the package to the list - app.addPackage(info.packageName, info.versionCode, mService.mProcessStats); + app.addPackage(info.packageName, info.longVersionCode, mService.mProcessStats); checkSlow(startTime, "startProcess: added package to existing proc"); } diff --git a/services/core/java/com/android/server/am/ServiceRecord.java b/services/core/java/com/android/server/am/ServiceRecord.java index 446b12833096e..dee8e3b285a77 100644 --- a/services/core/java/com/android/server/am/ServiceRecord.java +++ b/services/core/java/com/android/server/am/ServiceRecord.java @@ -512,7 +512,7 @@ final class ServiceRecord extends Binder implements ComponentName.WithComponentN } if ((serviceInfo.applicationInfo.flags&ApplicationInfo.FLAG_PERSISTENT) == 0) { tracker = ams.mProcessStats.getServiceStateLocked(serviceInfo.packageName, - serviceInfo.applicationInfo.uid, serviceInfo.applicationInfo.versionCode, + serviceInfo.applicationInfo.uid, serviceInfo.applicationInfo.longVersionCode, serviceInfo.processName, serviceInfo.name); tracker.applyNewOwner(this); } @@ -530,7 +530,8 @@ final class ServiceRecord extends Binder implements ComponentName.WithComponentN if (restartTracker == null) { if ((serviceInfo.applicationInfo.flags&ApplicationInfo.FLAG_PERSISTENT) == 0) { restartTracker = ams.mProcessStats.getServiceStateLocked(serviceInfo.packageName, - serviceInfo.applicationInfo.uid, serviceInfo.applicationInfo.versionCode, + serviceInfo.applicationInfo.uid, + serviceInfo.applicationInfo.longVersionCode, serviceInfo.processName, serviceInfo.name); } if (restartTracker == null) { diff --git a/services/tests/servicestests/src/com/android/server/webkit/TestSystemImpl.java b/services/tests/servicestests/src/com/android/server/webkit/TestSystemImpl.java index 8cde10675fe3b..8cba69f6ddcbb 100644 --- a/services/tests/servicestests/src/com/android/server/webkit/TestSystemImpl.java +++ b/services/tests/servicestests/src/com/android/server/webkit/TestSystemImpl.java @@ -166,7 +166,7 @@ public class TestSystemImpl implements SystemInterface { pi = userPackages.get(PRIMARY_USER_ID); if (pi != null && pi.applicationInfo.isSystemApp()) { - return pi.applicationInfo.versionCode; + return pi.applicationInfo.longVersionCode; } throw new NameNotFoundException(); }