From 8e8ccad69aaae60da642e71086649f99a1470407 Mon Sep 17 00:00:00 2001 From: Hai Zhang Date: Sat, 17 Dec 2022 21:06:45 -0800 Subject: [PATCH] Expose PackageManagerLocal earlier for system components to use. The new permission service would like to consistently use PackageManagerLocal to access package information, but that is needed when the internal storage volume is scanned in the PackageManagerService constructor. So move the exposure of PackageManagerLocal from PackageManagerService main() to constructor where PackageManagerInternal is also exposed. Bug: 252884423 Test: presubmit Change-Id: I2f2569fb6e83f7c3efdc6fcfd92374220d1dec18 --- .../java/com/android/server/pm/PackageManagerService.java | 4 ++-- .../src/com/android/server/pm/MockSystem.kt | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index edc6b4a085f68..7443b779477bd 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -1597,8 +1597,6 @@ public class PackageManagerService implements PackageSender, TestUtilityService ServiceManager.addService("package", iPackageManager); final PackageManagerNative pmn = new PackageManagerNative(m); ServiceManager.addService("package_native", pmn); - LocalManagerRegistry.addManager(PackageManagerLocal.class, - new PackageManagerLocalImpl(m)); return m; } @@ -1797,6 +1795,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService // Expose private service for system components to use. LocalServices.addService(PackageManagerInternal.class, new PackageManagerInternalImpl()); + LocalManagerRegistry.addManager(PackageManagerLocal.class, + new PackageManagerLocalImpl(this)); LocalServices.addService(TestUtilityService.class, this); mTestUtilityService = LocalServices.getService(TestUtilityService.class); mUserManager = injector.getUserManagerService(); diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/MockSystem.kt b/services/tests/mockingservicestests/src/com/android/server/pm/MockSystem.kt index 4f562710c789b..6dc45c30bd66d 100644 --- a/services/tests/mockingservicestests/src/com/android/server/pm/MockSystem.kt +++ b/services/tests/mockingservicestests/src/com/android/server/pm/MockSystem.kt @@ -55,6 +55,7 @@ import com.android.dx.mockito.inline.extended.ExtendedMockito.spy import com.android.dx.mockito.inline.extended.StaticMockitoSession import com.android.dx.mockito.inline.extended.StaticMockitoSessionBuilder import com.android.internal.R +import com.android.server.LocalManagerRegistry import com.android.server.LocalServices import com.android.server.LockGuard import com.android.server.SystemConfig @@ -148,6 +149,7 @@ class MockSystem(withSession: (StaticMockitoSessionBuilder) -> Unit = {}) { .mockStatic(LockGuard::class.java) .mockStatic(EventLog::class.java) .mockStatic(LocalServices::class.java) + .mockStatic(LocalManagerRegistry::class.java) .mockStatic(DeviceConfig::class.java) .mockStatic(HexEncoding::class.java) .apply(withSession)