Isolate IPackageManager implementation
To avoid leaking IPackageManager methods directly into PackageManagerService, moves the IPM implementation into an inner class similar to PackageManagerInternal. This will help enforce snapshot consistency by ensuring that all non-IPM PMS methods can always take in a Computer instance to re-use. Bug: 217961172 Test: presubmit Change-Id: Ibf7bd3d1d90a40786279763ba8d62eb9348bb760
This commit is contained in:
@@ -41,6 +41,7 @@ import android.app.usage.UsageStatsManagerInternal;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.IPackageManager;
|
||||
import android.content.pm.PackageItemInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.PackageManagerInternal;
|
||||
@@ -1225,12 +1226,15 @@ public final class SystemServer implements Dumpable {
|
||||
mSystemServiceManager.startService(domainVerificationService);
|
||||
t.traceEnd();
|
||||
|
||||
IPackageManager iPackageManager;
|
||||
t.traceBegin("StartPackageManagerService");
|
||||
try {
|
||||
Watchdog.getInstance().pauseWatchingCurrentThread("packagemanagermain");
|
||||
mPackageManagerService = PackageManagerService.main(mSystemContext, installer,
|
||||
domainVerificationService, mFactoryTestMode != FactoryTest.FACTORY_TEST_OFF,
|
||||
mOnlyCore);
|
||||
Pair<PackageManagerService, IPackageManager> pmsPair = PackageManagerService.main(
|
||||
mSystemContext, installer, domainVerificationService,
|
||||
mFactoryTestMode != FactoryTest.FACTORY_TEST_OFF, mOnlyCore);
|
||||
mPackageManagerService = pmsPair.first;
|
||||
iPackageManager = pmsPair.second;
|
||||
} finally {
|
||||
Watchdog.getInstance().resumeWatchingCurrentThread("packagemanagermain");
|
||||
}
|
||||
@@ -1238,7 +1242,7 @@ public final class SystemServer implements Dumpable {
|
||||
// Now that the package manager has started, register the dex load reporter to capture any
|
||||
// dex files loaded by system server.
|
||||
// These dex files will be optimized by the BackgroundDexOptService.
|
||||
SystemServerDexLoadReporter.configureSystemServerDexReporter(mPackageManagerService);
|
||||
SystemServerDexLoadReporter.configureSystemServerDexReporter(iPackageManager);
|
||||
|
||||
mFirstBoot = mPackageManagerService.isFirstBoot();
|
||||
mPackageManager = mSystemContext.getPackageManager();
|
||||
|
||||
Reference in New Issue
Block a user