diff options
| author | 2022-05-06 20:28:02 +0000 | |
|---|---|---|
| committer | 2022-05-06 21:22:38 +0000 | |
| commit | f587ce8d0553b2263f14cc669002d6f4327cd2b9 (patch) | |
| tree | cd56d4f11514489fdc2f4ba70e0150c1be51c98f | |
| parent | 430761bb29ccc92d919a9f264ac1854c28a9a822 (diff) | |
Add multiuser support to StatsPullAtomService
Including incremental packages from all users instead on only system
user in pullInstalledIncrementalPackagesLocked.
Bug: 197784344
Test: install incremental package as secondary user
Test: statsd_testdrive 10114
Change-Id: I5435c1bb74266a8881cc95140f3ed15461377368
| -rw-r--r-- | services/core/java/com/android/server/stats/pull/StatsPullAtomService.java | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java index 5e7b5860629d..977f6fd7b528 100644 --- a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java +++ b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java @@ -204,6 +204,7 @@ import com.android.server.SystemServiceManager; import com.android.server.am.MemoryStatUtil.MemoryStat; import com.android.server.health.HealthServiceWrapper; import com.android.server.notification.NotificationManagerService; +import com.android.server.pm.UserManagerInternal; import com.android.server.stats.pull.IonMemoryUtil.IonAllocations; import com.android.server.stats.pull.ProcfsMemoryUtil.MemorySnapshot; import com.android.server.stats.pull.netstats.NetworkStatsExt; @@ -4106,11 +4107,24 @@ public class StatsPullAtomService extends SystemService { // Incremental is not enabled on this device. The result list will be empty. return StatsManager.PULL_SUCCESS; } - List<PackageInfo> installedPackages = pm.getInstalledPackages(0); - for (PackageInfo pi : installedPackages) { - if (IncrementalManager.isIncrementalPath(pi.applicationInfo.getBaseCodePath())) { - pulledData.add(FrameworkStatsLog.buildStatsEvent(atomTag, pi.applicationInfo.uid)); + final long token = Binder.clearCallingIdentity(); + try { + int[] userIds = LocalServices.getService(UserManagerInternal.class).getUserIds(); + for (int userId : userIds) { + List<PackageInfo> installedPackages = pm.getInstalledPackagesAsUser(0, userId); + for (PackageInfo pi : installedPackages) { + if (IncrementalManager.isIncrementalPath( + pi.applicationInfo.getBaseCodePath())) { + pulledData.add( + FrameworkStatsLog.buildStatsEvent(atomTag, pi.applicationInfo.uid)); + } + } } + } catch (Exception e) { + Slog.e(TAG, "failed to pullInstalledIncrementalPackagesLocked", e); + return StatsManager.PULL_SKIP; + } finally { + Binder.restoreCallingIdentity(token); } return StatsManager.PULL_SUCCESS; } |