Loading services/core/java/com/android/server/pm/InstallPackageHelper.java +3 −3 Original line number Diff line number Diff line Loading @@ -701,7 +701,7 @@ final class InstallPackageHelper { pkgSetting.setUninstallReason(PackageManager.UNINSTALL_REASON_UNKNOWN, userId); pkgSetting.setFirstInstallTime(System.currentTimeMillis(), userId); // Clear any existing archive state. mPm.mInstallerService.mPackageArchiver.clearArchiveState(packageName, userId); mPm.mInstallerService.mPackageArchiver.clearArchiveState(pkgSetting, userId); mPm.mSettings.writePackageRestrictionsLPr(userId); mPm.mSettings.writeKernelMappingLPr(pkgSetting); installed = true; Loading Loading @@ -2327,7 +2327,7 @@ final class InstallPackageHelper { installerPackageName); } // Clear any existing archive state. mPm.mInstallerService.mPackageArchiver.clearArchiveState(pkgName, userId); mPm.mInstallerService.mPackageArchiver.clearArchiveState(ps, userId); } else if (allUsers != null) { // The caller explicitly specified INSTALL_ALL_USERS flag. // Thus, updating the settings to install the app for all users. Loading @@ -2351,7 +2351,7 @@ final class InstallPackageHelper { installerPackageName); } // Clear any existing archive state. mPm.mInstallerService.mPackageArchiver.clearArchiveState(pkgName, mPm.mInstallerService.mPackageArchiver.clearArchiveState(ps, currentUserId); } else { ps.setInstalled(false, currentUserId); Loading services/core/java/com/android/server/pm/PackageArchiver.java +20 −5 Original line number Diff line number Diff line Loading @@ -356,19 +356,34 @@ public class PackageArchiver { } void clearArchiveState(String packageName, int userId) { final PackageSetting ps; synchronized (mPm.mLock) { PackageSetting ps = mPm.mSettings.getPackageLPr(packageName); if (ps != null) { ps.setArchiveState(/* archiveState= */ null, userId); ps = mPm.mSettings.getPackageLPr(packageName); } clearArchiveState(ps, userId); } File iconsDir = getIconsDir(packageName, userId); void clearArchiveState(PackageSetting ps, int userId) { synchronized (mPm.mLock) { if (ps == null || ps.getUserStateOrDefault(userId).getArchiveState() == null) { // No archive states to clear return; } if (DEBUG) { Slog.e(TAG, "Clearing archive states for " + ps.getPackageName()); } ps.setArchiveState(/* archiveState= */ null, userId); } File iconsDir = getIconsDir(ps.getPackageName(), userId); if (!iconsDir.exists()) { if (DEBUG) { Slog.e(TAG, "Icons are already deleted at " + iconsDir.getAbsolutePath()); } return; } // TODO(b/319238030) Move this into installd. if (!FileUtils.deleteContentsAndDir(iconsDir)) { Slog.e(TAG, "Failed to clean up archive files for " + packageName); Slog.e(TAG, "Failed to clean up archive files for " + ps.getPackageName()); } else { if (DEBUG) { Slog.e(TAG, "Deleted icons at " + iconsDir.getAbsolutePath()); Loading Loading
services/core/java/com/android/server/pm/InstallPackageHelper.java +3 −3 Original line number Diff line number Diff line Loading @@ -701,7 +701,7 @@ final class InstallPackageHelper { pkgSetting.setUninstallReason(PackageManager.UNINSTALL_REASON_UNKNOWN, userId); pkgSetting.setFirstInstallTime(System.currentTimeMillis(), userId); // Clear any existing archive state. mPm.mInstallerService.mPackageArchiver.clearArchiveState(packageName, userId); mPm.mInstallerService.mPackageArchiver.clearArchiveState(pkgSetting, userId); mPm.mSettings.writePackageRestrictionsLPr(userId); mPm.mSettings.writeKernelMappingLPr(pkgSetting); installed = true; Loading Loading @@ -2327,7 +2327,7 @@ final class InstallPackageHelper { installerPackageName); } // Clear any existing archive state. mPm.mInstallerService.mPackageArchiver.clearArchiveState(pkgName, userId); mPm.mInstallerService.mPackageArchiver.clearArchiveState(ps, userId); } else if (allUsers != null) { // The caller explicitly specified INSTALL_ALL_USERS flag. // Thus, updating the settings to install the app for all users. Loading @@ -2351,7 +2351,7 @@ final class InstallPackageHelper { installerPackageName); } // Clear any existing archive state. mPm.mInstallerService.mPackageArchiver.clearArchiveState(pkgName, mPm.mInstallerService.mPackageArchiver.clearArchiveState(ps, currentUserId); } else { ps.setInstalled(false, currentUserId); Loading
services/core/java/com/android/server/pm/PackageArchiver.java +20 −5 Original line number Diff line number Diff line Loading @@ -356,19 +356,34 @@ public class PackageArchiver { } void clearArchiveState(String packageName, int userId) { final PackageSetting ps; synchronized (mPm.mLock) { PackageSetting ps = mPm.mSettings.getPackageLPr(packageName); if (ps != null) { ps.setArchiveState(/* archiveState= */ null, userId); ps = mPm.mSettings.getPackageLPr(packageName); } clearArchiveState(ps, userId); } File iconsDir = getIconsDir(packageName, userId); void clearArchiveState(PackageSetting ps, int userId) { synchronized (mPm.mLock) { if (ps == null || ps.getUserStateOrDefault(userId).getArchiveState() == null) { // No archive states to clear return; } if (DEBUG) { Slog.e(TAG, "Clearing archive states for " + ps.getPackageName()); } ps.setArchiveState(/* archiveState= */ null, userId); } File iconsDir = getIconsDir(ps.getPackageName(), userId); if (!iconsDir.exists()) { if (DEBUG) { Slog.e(TAG, "Icons are already deleted at " + iconsDir.getAbsolutePath()); } return; } // TODO(b/319238030) Move this into installd. if (!FileUtils.deleteContentsAndDir(iconsDir)) { Slog.e(TAG, "Failed to clean up archive files for " + packageName); Slog.e(TAG, "Failed to clean up archive files for " + ps.getPackageName()); } else { if (DEBUG) { Slog.e(TAG, "Deleted icons at " + iconsDir.getAbsolutePath()); Loading