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
This commit is contained in:
Hai Zhang
2022-12-17 21:06:45 -08:00
parent 46a23cd074
commit 8e8ccad69a
2 changed files with 4 additions and 2 deletions

View File

@@ -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();

View File

@@ -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)