Loading core/java/com/android/internal/pm/parsing/pkg/PackageImpl.java +5 −0 Original line number Diff line number Diff line Loading @@ -3281,6 +3281,11 @@ public class PackageImpl implements ParsedPackage, AndroidPackageInternal, } public PackageImpl(Parcel in) { this(in, /* callback */ null); } public PackageImpl(@NonNull Parcel in, @Nullable ParsingPackageUtils.Callback callback) { mCallback = callback; // We use the boot classloader for all classes that we load. final ClassLoader boot = Object.class.getClassLoader(); this.supportsSmallScreens = sForBoolean.unparcel(in); Loading services/core/java/com/android/server/pm/InstallPackageHelper.java +2 −1 Original line number Diff line number Diff line Loading @@ -3601,7 +3601,8 @@ final class InstallPackageHelper { continue; } if ((scanFlags & SCAN_DROP_CACHE) != 0) { final PackageCacher cacher = new PackageCacher(mPm.getCacheDir()); final PackageCacher cacher = new PackageCacher(mPm.getCacheDir(), mPm.mPackageParserCallback); Log.w(TAG, "Dropping cache of " + file.getAbsolutePath()); cacher.cleanCachedResult(file); } Loading services/core/java/com/android/server/pm/PackageManagerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -1739,7 +1739,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService () -> LocalServices.getService(UserManagerInternal.class)), (i, pm) -> new DisplayMetrics(), (i, pm) -> new PackageParser2(pm.mSeparateProcesses, i.getDisplayMetrics(), new PackageCacher(pm.mCacheDir), new PackageCacher(pm.mCacheDir, pm.mPackageParserCallback), pm.mPackageParserCallback) /* scanningCachingPackageParserProducer */, (i, pm) -> new PackageParser2(pm.mSeparateProcesses, i.getDisplayMetrics(), null, pm.mPackageParserCallback) /* scanningPackageParserProducer */, Loading services/core/java/com/android/server/pm/parsing/PackageCacher.java +18 −3 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.server.pm.parsing; import android.annotation.NonNull; import android.annotation.Nullable; import android.content.pm.PackageParserCacheHelper; import android.os.Environment; import android.os.FileUtils; Loading @@ -29,8 +30,10 @@ import android.util.Slog; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.pm.parsing.IPackageCacher; import com.android.internal.pm.parsing.PackageParser2; import com.android.internal.pm.parsing.pkg.PackageImpl; import com.android.internal.pm.parsing.pkg.ParsedPackage; import com.android.internal.pm.pkg.parsing.ParsingPackageUtils; import com.android.server.pm.ApexManager; import libcore.io.IoUtils; Loading @@ -51,9 +54,16 @@ public class PackageCacher implements IPackageCacher { @NonNull private final File mCacheDir; @Nullable private final PackageParser2.Callback mCallback; public PackageCacher(@NonNull File cacheDir) { public PackageCacher(File cacheDir) { this(cacheDir, null); } public PackageCacher(File cacheDir, @Nullable PackageParser2.Callback callback) { this.mCacheDir = cacheDir; this.mCallback = callback; } /** Loading @@ -71,12 +81,17 @@ public class PackageCacher implements IPackageCacher { @VisibleForTesting protected ParsedPackage fromCacheEntry(byte[] bytes) { return fromCacheEntryStatic(bytes); return fromCacheEntryStatic(bytes, mCallback); } /** static version of {@link #fromCacheEntry} for unit tests. */ @VisibleForTesting public static ParsedPackage fromCacheEntryStatic(byte[] bytes) { return fromCacheEntryStatic(bytes, null); } private static ParsedPackage fromCacheEntryStatic(byte[] bytes, @Nullable ParsingPackageUtils.Callback callback) { final Parcel p = Parcel.obtain(); p.unmarshall(bytes, 0, bytes.length); p.setDataPosition(0); Loading @@ -85,7 +100,7 @@ public class PackageCacher implements IPackageCacher { new PackageParserCacheHelper.ReadHelper(p); helper.startAndInstall(); ParsedPackage pkg = new PackageImpl(p); ParsedPackage pkg = new PackageImpl(p, callback); p.recycle(); Loading Loading
core/java/com/android/internal/pm/parsing/pkg/PackageImpl.java +5 −0 Original line number Diff line number Diff line Loading @@ -3281,6 +3281,11 @@ public class PackageImpl implements ParsedPackage, AndroidPackageInternal, } public PackageImpl(Parcel in) { this(in, /* callback */ null); } public PackageImpl(@NonNull Parcel in, @Nullable ParsingPackageUtils.Callback callback) { mCallback = callback; // We use the boot classloader for all classes that we load. final ClassLoader boot = Object.class.getClassLoader(); this.supportsSmallScreens = sForBoolean.unparcel(in); Loading
services/core/java/com/android/server/pm/InstallPackageHelper.java +2 −1 Original line number Diff line number Diff line Loading @@ -3601,7 +3601,8 @@ final class InstallPackageHelper { continue; } if ((scanFlags & SCAN_DROP_CACHE) != 0) { final PackageCacher cacher = new PackageCacher(mPm.getCacheDir()); final PackageCacher cacher = new PackageCacher(mPm.getCacheDir(), mPm.mPackageParserCallback); Log.w(TAG, "Dropping cache of " + file.getAbsolutePath()); cacher.cleanCachedResult(file); } Loading
services/core/java/com/android/server/pm/PackageManagerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -1739,7 +1739,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService () -> LocalServices.getService(UserManagerInternal.class)), (i, pm) -> new DisplayMetrics(), (i, pm) -> new PackageParser2(pm.mSeparateProcesses, i.getDisplayMetrics(), new PackageCacher(pm.mCacheDir), new PackageCacher(pm.mCacheDir, pm.mPackageParserCallback), pm.mPackageParserCallback) /* scanningCachingPackageParserProducer */, (i, pm) -> new PackageParser2(pm.mSeparateProcesses, i.getDisplayMetrics(), null, pm.mPackageParserCallback) /* scanningPackageParserProducer */, Loading
services/core/java/com/android/server/pm/parsing/PackageCacher.java +18 −3 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.server.pm.parsing; import android.annotation.NonNull; import android.annotation.Nullable; import android.content.pm.PackageParserCacheHelper; import android.os.Environment; import android.os.FileUtils; Loading @@ -29,8 +30,10 @@ import android.util.Slog; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.pm.parsing.IPackageCacher; import com.android.internal.pm.parsing.PackageParser2; import com.android.internal.pm.parsing.pkg.PackageImpl; import com.android.internal.pm.parsing.pkg.ParsedPackage; import com.android.internal.pm.pkg.parsing.ParsingPackageUtils; import com.android.server.pm.ApexManager; import libcore.io.IoUtils; Loading @@ -51,9 +54,16 @@ public class PackageCacher implements IPackageCacher { @NonNull private final File mCacheDir; @Nullable private final PackageParser2.Callback mCallback; public PackageCacher(@NonNull File cacheDir) { public PackageCacher(File cacheDir) { this(cacheDir, null); } public PackageCacher(File cacheDir, @Nullable PackageParser2.Callback callback) { this.mCacheDir = cacheDir; this.mCallback = callback; } /** Loading @@ -71,12 +81,17 @@ public class PackageCacher implements IPackageCacher { @VisibleForTesting protected ParsedPackage fromCacheEntry(byte[] bytes) { return fromCacheEntryStatic(bytes); return fromCacheEntryStatic(bytes, mCallback); } /** static version of {@link #fromCacheEntry} for unit tests. */ @VisibleForTesting public static ParsedPackage fromCacheEntryStatic(byte[] bytes) { return fromCacheEntryStatic(bytes, null); } private static ParsedPackage fromCacheEntryStatic(byte[] bytes, @Nullable ParsingPackageUtils.Callback callback) { final Parcel p = Parcel.obtain(); p.unmarshall(bytes, 0, bytes.length); p.setDataPosition(0); Loading @@ -85,7 +100,7 @@ public class PackageCacher implements IPackageCacher { new PackageParserCacheHelper.ReadHelper(p); helper.startAndInstall(); ParsedPackage pkg = new PackageImpl(p); ParsedPackage pkg = new PackageImpl(p, callback); p.recycle(); Loading