Loading services/core/java/com/android/server/pm/InstallPackageHelper.java +1 −1 Original line number Diff line number Diff line Loading @@ -830,7 +830,7 @@ final class InstallPackageHelper { doRestore = performRollbackManagerRestore(userId, token, request); } if (succeeded && !request.hasPostInstallRunnable()) { if (succeeded && doRestore && !request.hasPostInstallRunnable()) { boolean hasNeverBeenRestored = packageSetting != null && packageSetting.isPendingRestore(); request.setPostInstallRunnable(() -> { Loading services/core/java/com/android/server/pm/Settings.java +6 −0 Original line number Diff line number Diff line Loading @@ -3243,6 +3243,9 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile if (pkg.isForceQueryableOverride()) { serializer.attributeBoolean(null, "forceQueryable", true); } if (pkg.isPendingRestore()) { serializer.attributeBoolean(null, "pendingRestore", true); } if (pkg.isLoading()) { serializer.attributeBoolean(null, "isLoading", true); } Loading Loading @@ -4046,6 +4049,7 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile PackageSetting packageSetting = null; long versionCode = 0; boolean installedForceQueryable = false; boolean isPendingRestore = false; float loadingProgress = 0; long loadingCompletedTime = 0; UUID domainSetId; Loading @@ -4071,6 +4075,7 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile cpuAbiOverrideString = parser.getAttributeValue(null, "cpuAbiOverride"); updateAvailable = parser.getAttributeBoolean(null, "updateAvailable", false); installedForceQueryable = parser.getAttributeBoolean(null, "forceQueryable", false); isPendingRestore = parser.getAttributeBoolean(null, "pendingRestore", false); loadingProgress = parser.getAttributeFloat(null, "loadingProgress", 0); loadingCompletedTime = parser.getAttributeLongHex(null, "loadingCompletedTime", 0); Loading Loading @@ -4244,6 +4249,7 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile .setSecondaryCpuAbi(secondaryCpuAbiString) .setUpdateAvailable(updateAvailable) .setForceQueryableOverride(installedForceQueryable) .setPendingRestore(isPendingRestore) .setLoadingProgress(loadingProgress) .setLoadingCompletedTime(loadingCompletedTime) .setAppMetadataFilePath(appMetadataFilePath) Loading services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/PackageManagerSettingsTests.java +19 −0 Original line number Diff line number Diff line Loading @@ -1007,6 +1007,25 @@ public class PackageManagerSettingsTests { .containsExactlyElementsIn(ps2RequireAsList).inOrder(); } @Test public void testWriteReadPendingRestore() { Settings settings = makeSettings(); PackageSetting packageSetting = createPackageSetting(PACKAGE_NAME_1); packageSetting.setAppId(Process.FIRST_APPLICATION_UID); packageSetting.setPkg(PackageImpl.forTesting(PACKAGE_NAME_1).hideAsParsed() .setUid(packageSetting.getAppId()) .hideAsFinal()); packageSetting.setPendingRestore(true); settings.mPackages.put(PACKAGE_NAME_1, packageSetting); settings.writeLPr(computer, /*sync=*/true); settings.mPackages.clear(); assertThat(settings.readLPw(computer, createFakeUsers()), is(true)); assertThat(settings.getPackageLPr(PACKAGE_NAME_1).isPendingRestore(), is(true)); } @Test public void testWriteReadArchiveState() { Settings settings = makeSettings(); Loading Loading
services/core/java/com/android/server/pm/InstallPackageHelper.java +1 −1 Original line number Diff line number Diff line Loading @@ -830,7 +830,7 @@ final class InstallPackageHelper { doRestore = performRollbackManagerRestore(userId, token, request); } if (succeeded && !request.hasPostInstallRunnable()) { if (succeeded && doRestore && !request.hasPostInstallRunnable()) { boolean hasNeverBeenRestored = packageSetting != null && packageSetting.isPendingRestore(); request.setPostInstallRunnable(() -> { Loading
services/core/java/com/android/server/pm/Settings.java +6 −0 Original line number Diff line number Diff line Loading @@ -3243,6 +3243,9 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile if (pkg.isForceQueryableOverride()) { serializer.attributeBoolean(null, "forceQueryable", true); } if (pkg.isPendingRestore()) { serializer.attributeBoolean(null, "pendingRestore", true); } if (pkg.isLoading()) { serializer.attributeBoolean(null, "isLoading", true); } Loading Loading @@ -4046,6 +4049,7 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile PackageSetting packageSetting = null; long versionCode = 0; boolean installedForceQueryable = false; boolean isPendingRestore = false; float loadingProgress = 0; long loadingCompletedTime = 0; UUID domainSetId; Loading @@ -4071,6 +4075,7 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile cpuAbiOverrideString = parser.getAttributeValue(null, "cpuAbiOverride"); updateAvailable = parser.getAttributeBoolean(null, "updateAvailable", false); installedForceQueryable = parser.getAttributeBoolean(null, "forceQueryable", false); isPendingRestore = parser.getAttributeBoolean(null, "pendingRestore", false); loadingProgress = parser.getAttributeFloat(null, "loadingProgress", 0); loadingCompletedTime = parser.getAttributeLongHex(null, "loadingCompletedTime", 0); Loading Loading @@ -4244,6 +4249,7 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile .setSecondaryCpuAbi(secondaryCpuAbiString) .setUpdateAvailable(updateAvailable) .setForceQueryableOverride(installedForceQueryable) .setPendingRestore(isPendingRestore) .setLoadingProgress(loadingProgress) .setLoadingCompletedTime(loadingCompletedTime) .setAppMetadataFilePath(appMetadataFilePath) Loading
services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/PackageManagerSettingsTests.java +19 −0 Original line number Diff line number Diff line Loading @@ -1007,6 +1007,25 @@ public class PackageManagerSettingsTests { .containsExactlyElementsIn(ps2RequireAsList).inOrder(); } @Test public void testWriteReadPendingRestore() { Settings settings = makeSettings(); PackageSetting packageSetting = createPackageSetting(PACKAGE_NAME_1); packageSetting.setAppId(Process.FIRST_APPLICATION_UID); packageSetting.setPkg(PackageImpl.forTesting(PACKAGE_NAME_1).hideAsParsed() .setUid(packageSetting.getAppId()) .hideAsFinal()); packageSetting.setPendingRestore(true); settings.mPackages.put(PACKAGE_NAME_1, packageSetting); settings.writeLPr(computer, /*sync=*/true); settings.mPackages.clear(); assertThat(settings.readLPw(computer, createFakeUsers()), is(true)); assertThat(settings.getPackageLPr(PACKAGE_NAME_1).isPendingRestore(), is(true)); } @Test public void testWriteReadArchiveState() { Settings settings = makeSettings(); Loading