Loading services/core/java/android/content/pm/PackageManagerInternal.java +5 −0 Original line number Diff line number Diff line Loading @@ -1251,4 +1251,9 @@ public abstract class PackageManagerInternal implements PackageSettingsSnapshotP * @return the number of freed bytes or -1 if there was an error in the process. */ public abstract long deleteOatArtifactsOfPackage(String packageName); /** * Reconcile all app data for the given user. */ public abstract void reconcileAppsData(int userId, int flags, boolean migrateAppsData); } services/core/java/com/android/server/pm/AppDataHelper.java 0 → 100644 +588 −0 File added.Preview size limit exceeded, changes collapsed. Show changes services/core/java/com/android/server/pm/DeletePackageHelper.java +10 −12 Original line number Diff line number Diff line Loading @@ -50,7 +50,6 @@ import android.os.Process; import android.os.RemoteException; import android.os.UserHandle; import android.os.UserManager; import android.os.incremental.IncrementalManager; import android.util.EventLog; import android.util.Log; import android.util.Slog; Loading Loading @@ -78,33 +77,32 @@ final class DeletePackageHelper { private static final boolean DEBUG_SD_INSTALL = false; private final PackageManagerService mPm; private final IncrementalManager mIncrementalManager; private final Installer mInstaller; private final UserManagerInternal mUserManagerInternal; private final PermissionManagerServiceInternal mPermissionManager; private final RemovePackageHelper mRemovePackageHelper; private final InitAndSystemPackageHelper mInitAndSystemPackageHelper; private final AppDataHelper mAppDataHelper; // TODO(b/198166813): remove PMS dependency DeletePackageHelper(PackageManagerService pm, RemovePackageHelper removePackageHelper, InitAndSystemPackageHelper initAndSystemPackageHelper) { InitAndSystemPackageHelper initAndSystemPackageHelper, AppDataHelper appDataHelper) { mPm = pm; mIncrementalManager = mPm.mInjector.getIncrementalManager(); mInstaller = mPm.mInjector.getInstaller(); mUserManagerInternal = mPm.mInjector.getUserManagerInternal(); mPermissionManager = mPm.mInjector.getPermissionManagerServiceInternal(); mRemovePackageHelper = removePackageHelper; mInitAndSystemPackageHelper = initAndSystemPackageHelper; mAppDataHelper = appDataHelper; } DeletePackageHelper(PackageManagerService pm) { mPm = pm; mIncrementalManager = mPm.mInjector.getIncrementalManager(); mInstaller = mPm.mInjector.getInstaller(); mAppDataHelper = new AppDataHelper(mPm); mUserManagerInternal = mPm.mInjector.getUserManagerInternal(); mPermissionManager = mPm.mInjector.getPermissionManagerServiceInternal(); mRemovePackageHelper = new RemovePackageHelper(mPm); mInitAndSystemPackageHelper = new InitAndSystemPackageHelper(mPm, mRemovePackageHelper); mRemovePackageHelper = new RemovePackageHelper(mPm, mAppDataHelper); mInitAndSystemPackageHelper = new InitAndSystemPackageHelper(mPm, mRemovePackageHelper, mAppDataHelper); } /** Loading Loading @@ -457,7 +455,7 @@ final class DeletePackageHelper { pkg = mPm.mPackages.get(ps.getPackageName()); } mRemovePackageHelper.destroyAppProfilesLIF(pkg); mAppDataHelper.destroyAppProfilesLIF(pkg); final SharedUserSetting sus = ps.getSharedUser(); List<AndroidPackage> sharedUserPkgs = sus != null ? sus.getPackages() : null; Loading @@ -472,7 +470,7 @@ final class DeletePackageHelper { + nextUserId); } if ((flags & PackageManager.DELETE_KEEP_DATA) == 0) { mRemovePackageHelper.destroyAppDataLIF(pkg, nextUserId, mAppDataHelper.destroyAppDataLIF(pkg, nextUserId, FLAG_STORAGE_DE | FLAG_STORAGE_CE | FLAG_STORAGE_EXTERNAL); } PackageManagerService.removeKeystoreDataIfNeeded(mUserManagerInternal, nextUserId, Loading services/core/java/com/android/server/pm/InitAndSystemPackageHelper.java +9 −5 Original line number Diff line number Diff line Loading @@ -88,11 +88,14 @@ import java.util.concurrent.ExecutorService; final class InitAndSystemPackageHelper { private final PackageManagerService mPm; private final RemovePackageHelper mRemovePackageHelper; private final AppDataHelper mAppDataHelper; // TODO(b/198166813): remove PMS dependency InitAndSystemPackageHelper(PackageManagerService pm, RemovePackageHelper removePackageHelper) { InitAndSystemPackageHelper(PackageManagerService pm, RemovePackageHelper removePackageHelper, AppDataHelper appDataHelper) { mPm = pm; mRemovePackageHelper = removePackageHelper; mAppDataHelper = appDataHelper; } /** Loading Loading @@ -571,7 +574,7 @@ final class InitAndSystemPackageHelper { mPm.freezePackage(stubPkg.getPackageName(), "setEnabledSetting")) { pkg = installStubPackageLI(stubPkg, parseFlags, 0 /*scanFlags*/); synchronized (mPm.mLock) { mPm.prepareAppDataAfterInstallLIF(pkg); mAppDataHelper.prepareAppDataAfterInstallLIF(pkg); try { mPm.updateSharedLibrariesLocked(pkg, stubPkgSetting, null, null, Collections.unmodifiableMap(mPm.mPackages)); Loading Loading @@ -615,8 +618,9 @@ final class InitAndSystemPackageHelper { } return false; } mPm.clearAppDataLIF(pkg, UserHandle.USER_ALL, FLAG_STORAGE_DE | FLAG_STORAGE_CE | FLAG_STORAGE_EXTERNAL | Installer.FLAG_CLEAR_CODE_CACHE_ONLY); mAppDataHelper.clearAppDataLIF(pkg, UserHandle.USER_ALL, FLAG_STORAGE_DE | FLAG_STORAGE_CE | FLAG_STORAGE_EXTERNAL | Installer.FLAG_CLEAR_CODE_CACHE_ONLY); mPm.getDexManager().notifyPackageUpdated(pkg.getPackageName(), pkg.getBaseApkPath(), pkg.getSplitCodePaths()); } Loading Loading @@ -839,7 +843,7 @@ final class InitAndSystemPackageHelper { Slog.e(TAG, "updateAllSharedLibrariesLPw failed: " + e.getMessage()); } mPm.prepareAppDataAfterInstallLIF(pkg); mAppDataHelper.prepareAppDataAfterInstallLIF(pkg); // writer synchronized (mPm.mLock) { Loading services/core/java/com/android/server/pm/InstallParams.java +5 −3 Original line number Diff line number Diff line Loading @@ -1840,6 +1840,7 @@ final class InstallParams extends HandlerParams { */ private void executePostCommitSteps(CommitRequest commitRequest) { final ArraySet<IncrementalStorage> incrementalStorages = new ArraySet<>(); final AppDataHelper appDataHelper = new AppDataHelper(mPm); for (ReconciledPackage reconciledPkg : commitRequest.mReconciledPackages.values()) { final boolean instantApp = ((reconciledPkg.mScanResult.mRequest.mScanFlags & SCAN_AS_INSTANT_APP) != 0); Loading @@ -1856,10 +1857,11 @@ final class InstallParams extends HandlerParams { } incrementalStorages.add(storage); } mPm.prepareAppDataAfterInstallLIF(pkg); appDataHelper.prepareAppDataAfterInstallLIF(pkg); if (reconciledPkg.mPrepareResult.mClearCodeCache) { mPm.clearAppDataLIF(pkg, UserHandle.USER_ALL, FLAG_STORAGE_DE | FLAG_STORAGE_CE | FLAG_STORAGE_EXTERNAL | Installer.FLAG_CLEAR_CODE_CACHE_ONLY); appDataHelper.clearAppDataLIF(pkg, UserHandle.USER_ALL, FLAG_STORAGE_DE | FLAG_STORAGE_CE | FLAG_STORAGE_EXTERNAL | Installer.FLAG_CLEAR_CODE_CACHE_ONLY); } if (reconciledPkg.mPrepareResult.mReplace) { mPm.getDexManager().notifyPackageUpdated(pkg.getPackageName(), Loading Loading
services/core/java/android/content/pm/PackageManagerInternal.java +5 −0 Original line number Diff line number Diff line Loading @@ -1251,4 +1251,9 @@ public abstract class PackageManagerInternal implements PackageSettingsSnapshotP * @return the number of freed bytes or -1 if there was an error in the process. */ public abstract long deleteOatArtifactsOfPackage(String packageName); /** * Reconcile all app data for the given user. */ public abstract void reconcileAppsData(int userId, int flags, boolean migrateAppsData); }
services/core/java/com/android/server/pm/AppDataHelper.java 0 → 100644 +588 −0 File added.Preview size limit exceeded, changes collapsed. Show changes
services/core/java/com/android/server/pm/DeletePackageHelper.java +10 −12 Original line number Diff line number Diff line Loading @@ -50,7 +50,6 @@ import android.os.Process; import android.os.RemoteException; import android.os.UserHandle; import android.os.UserManager; import android.os.incremental.IncrementalManager; import android.util.EventLog; import android.util.Log; import android.util.Slog; Loading Loading @@ -78,33 +77,32 @@ final class DeletePackageHelper { private static final boolean DEBUG_SD_INSTALL = false; private final PackageManagerService mPm; private final IncrementalManager mIncrementalManager; private final Installer mInstaller; private final UserManagerInternal mUserManagerInternal; private final PermissionManagerServiceInternal mPermissionManager; private final RemovePackageHelper mRemovePackageHelper; private final InitAndSystemPackageHelper mInitAndSystemPackageHelper; private final AppDataHelper mAppDataHelper; // TODO(b/198166813): remove PMS dependency DeletePackageHelper(PackageManagerService pm, RemovePackageHelper removePackageHelper, InitAndSystemPackageHelper initAndSystemPackageHelper) { InitAndSystemPackageHelper initAndSystemPackageHelper, AppDataHelper appDataHelper) { mPm = pm; mIncrementalManager = mPm.mInjector.getIncrementalManager(); mInstaller = mPm.mInjector.getInstaller(); mUserManagerInternal = mPm.mInjector.getUserManagerInternal(); mPermissionManager = mPm.mInjector.getPermissionManagerServiceInternal(); mRemovePackageHelper = removePackageHelper; mInitAndSystemPackageHelper = initAndSystemPackageHelper; mAppDataHelper = appDataHelper; } DeletePackageHelper(PackageManagerService pm) { mPm = pm; mIncrementalManager = mPm.mInjector.getIncrementalManager(); mInstaller = mPm.mInjector.getInstaller(); mAppDataHelper = new AppDataHelper(mPm); mUserManagerInternal = mPm.mInjector.getUserManagerInternal(); mPermissionManager = mPm.mInjector.getPermissionManagerServiceInternal(); mRemovePackageHelper = new RemovePackageHelper(mPm); mInitAndSystemPackageHelper = new InitAndSystemPackageHelper(mPm, mRemovePackageHelper); mRemovePackageHelper = new RemovePackageHelper(mPm, mAppDataHelper); mInitAndSystemPackageHelper = new InitAndSystemPackageHelper(mPm, mRemovePackageHelper, mAppDataHelper); } /** Loading Loading @@ -457,7 +455,7 @@ final class DeletePackageHelper { pkg = mPm.mPackages.get(ps.getPackageName()); } mRemovePackageHelper.destroyAppProfilesLIF(pkg); mAppDataHelper.destroyAppProfilesLIF(pkg); final SharedUserSetting sus = ps.getSharedUser(); List<AndroidPackage> sharedUserPkgs = sus != null ? sus.getPackages() : null; Loading @@ -472,7 +470,7 @@ final class DeletePackageHelper { + nextUserId); } if ((flags & PackageManager.DELETE_KEEP_DATA) == 0) { mRemovePackageHelper.destroyAppDataLIF(pkg, nextUserId, mAppDataHelper.destroyAppDataLIF(pkg, nextUserId, FLAG_STORAGE_DE | FLAG_STORAGE_CE | FLAG_STORAGE_EXTERNAL); } PackageManagerService.removeKeystoreDataIfNeeded(mUserManagerInternal, nextUserId, Loading
services/core/java/com/android/server/pm/InitAndSystemPackageHelper.java +9 −5 Original line number Diff line number Diff line Loading @@ -88,11 +88,14 @@ import java.util.concurrent.ExecutorService; final class InitAndSystemPackageHelper { private final PackageManagerService mPm; private final RemovePackageHelper mRemovePackageHelper; private final AppDataHelper mAppDataHelper; // TODO(b/198166813): remove PMS dependency InitAndSystemPackageHelper(PackageManagerService pm, RemovePackageHelper removePackageHelper) { InitAndSystemPackageHelper(PackageManagerService pm, RemovePackageHelper removePackageHelper, AppDataHelper appDataHelper) { mPm = pm; mRemovePackageHelper = removePackageHelper; mAppDataHelper = appDataHelper; } /** Loading Loading @@ -571,7 +574,7 @@ final class InitAndSystemPackageHelper { mPm.freezePackage(stubPkg.getPackageName(), "setEnabledSetting")) { pkg = installStubPackageLI(stubPkg, parseFlags, 0 /*scanFlags*/); synchronized (mPm.mLock) { mPm.prepareAppDataAfterInstallLIF(pkg); mAppDataHelper.prepareAppDataAfterInstallLIF(pkg); try { mPm.updateSharedLibrariesLocked(pkg, stubPkgSetting, null, null, Collections.unmodifiableMap(mPm.mPackages)); Loading Loading @@ -615,8 +618,9 @@ final class InitAndSystemPackageHelper { } return false; } mPm.clearAppDataLIF(pkg, UserHandle.USER_ALL, FLAG_STORAGE_DE | FLAG_STORAGE_CE | FLAG_STORAGE_EXTERNAL | Installer.FLAG_CLEAR_CODE_CACHE_ONLY); mAppDataHelper.clearAppDataLIF(pkg, UserHandle.USER_ALL, FLAG_STORAGE_DE | FLAG_STORAGE_CE | FLAG_STORAGE_EXTERNAL | Installer.FLAG_CLEAR_CODE_CACHE_ONLY); mPm.getDexManager().notifyPackageUpdated(pkg.getPackageName(), pkg.getBaseApkPath(), pkg.getSplitCodePaths()); } Loading Loading @@ -839,7 +843,7 @@ final class InitAndSystemPackageHelper { Slog.e(TAG, "updateAllSharedLibrariesLPw failed: " + e.getMessage()); } mPm.prepareAppDataAfterInstallLIF(pkg); mAppDataHelper.prepareAppDataAfterInstallLIF(pkg); // writer synchronized (mPm.mLock) { Loading
services/core/java/com/android/server/pm/InstallParams.java +5 −3 Original line number Diff line number Diff line Loading @@ -1840,6 +1840,7 @@ final class InstallParams extends HandlerParams { */ private void executePostCommitSteps(CommitRequest commitRequest) { final ArraySet<IncrementalStorage> incrementalStorages = new ArraySet<>(); final AppDataHelper appDataHelper = new AppDataHelper(mPm); for (ReconciledPackage reconciledPkg : commitRequest.mReconciledPackages.values()) { final boolean instantApp = ((reconciledPkg.mScanResult.mRequest.mScanFlags & SCAN_AS_INSTANT_APP) != 0); Loading @@ -1856,10 +1857,11 @@ final class InstallParams extends HandlerParams { } incrementalStorages.add(storage); } mPm.prepareAppDataAfterInstallLIF(pkg); appDataHelper.prepareAppDataAfterInstallLIF(pkg); if (reconciledPkg.mPrepareResult.mClearCodeCache) { mPm.clearAppDataLIF(pkg, UserHandle.USER_ALL, FLAG_STORAGE_DE | FLAG_STORAGE_CE | FLAG_STORAGE_EXTERNAL | Installer.FLAG_CLEAR_CODE_CACHE_ONLY); appDataHelper.clearAppDataLIF(pkg, UserHandle.USER_ALL, FLAG_STORAGE_DE | FLAG_STORAGE_CE | FLAG_STORAGE_EXTERNAL | Installer.FLAG_CLEAR_CODE_CACHE_ONLY); } if (reconciledPkg.mPrepareResult.mReplace) { mPm.getDexManager().notifyPackageUpdated(pkg.getPackageName(), Loading