diff options
| author | Winson <chiuwinson@google.com> | 2022-02-07 11:41:08 -0800 |
|---|---|---|
| committer | Winson <chiuwinson@google.com> | 2022-03-07 23:10:41 -0800 |
| commit | eb403e7d372fc3cd7c1da4f6f8e24b681d96c451 (patch) | |
| tree | 5fbe411116d9288abe8665f664025afdceff6387 /services/java/com/android/server/SystemServer.java | |
| parent | 4b2ee74ebda362f345297b6ab6f0dd9bfaba0043 (diff) | |
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
Diffstat (limited to 'services/java/com/android/server/SystemServer.java')
| -rw-r--r-- | services/java/com/android/server/SystemServer.java | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index 294dc8941983..fa2850a5157d 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -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(); |
