Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit db032450 authored by Songchun Fan's avatar Songchun Fan Committed by Song Chun Fan
Browse files

[pm] make archiveTimeMillis as part of ArchiveState

Make this timestamp set at the time when ArchiveState is created. This
way we don't need to set the timestamp separately. The timestamp is
still preserved during serialization/deserialization. It will be deleted
along with the ArchiveState if the app is updated.

BUG: 310027113
Test: atest com.android.server.pm.PackageUserStateTest
Test: atest android.content.pm.cts.PackageInstallerArchiveTest#archiveApp_getArchiveTimeMillis
Test: atest android.content.pm.cts.PackageInstallerArchiveTest#archiveApp_archiveStateClearedAfterUpdate

Change-Id: I09f4f382ed3db21d4c45f9d9e93d15dcf9a07f2c
parent 5e8e346c
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -1533,7 +1533,9 @@ public class ComputerEngine implements Computer {
                    ai, flags, state, userId);
            pi.signingInfo = ps.getSigningInfo();
            pi.signatures = getDeprecatedSignatures(pi.signingInfo.getSigningDetails(), flags);
            pi.setArchiveTimeMillis(state.getArchiveTimeMillis());
            if (state.getArchiveState() != null) {
                pi.setArchiveTimeMillis(state.getArchiveState().getArchiveTimeMillis());
            }

            if (DEBUG_PACKAGE_INFO) {
                Log.v(TAG, "ps.pkg is n/a for ["
+0 −5
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ import static android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS;
import static android.content.pm.Flags.sdkLibIndependence;
import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
import static android.content.pm.PackageManager.DELETE_ARCHIVE;
import static android.content.pm.PackageManager.DELETE_KEEP_DATA;
import static android.content.pm.PackageManager.DELETE_SUCCEEDED;
import static android.content.pm.PackageManager.MATCH_KNOWN_PACKAGES;
@@ -613,10 +612,6 @@ final class DeletePackageHelper {
                    firstInstallTime,
                    PackageManager.USER_MIN_ASPECT_RATIO_UNSET,
                    archiveState);

            if ((flags & DELETE_ARCHIVE) != 0) {
                ps.modifyUserState(nextUserId).setArchiveTimeMillis(System.currentTimeMillis());
            }
        }
        mPm.mSettings.writeKernelMappingLPr(ps);
    }
+0 −3
Original line number Diff line number Diff line
@@ -691,7 +691,6 @@ final class InstallPackageHelper {
                    pkgSetting.setUninstallReason(PackageManager.UNINSTALL_REASON_UNKNOWN, userId);
                    pkgSetting.setFirstInstallTime(System.currentTimeMillis(), userId);
                    // Clear any existing archive state.
                    pkgSetting.setArchiveTimeMillis(0, userId);
                    pkgSetting.setArchiveState(null, userId);
                    mPm.mSettings.writePackageRestrictionsLPr(userId);
                    mPm.mSettings.writeKernelMappingLPr(pkgSetting);
@@ -2268,7 +2267,6 @@ final class InstallPackageHelper {
                    }
                    // Clear any existing archive state.
                    ps.setArchiveState(null, userId);
                    ps.setArchiveTimeMillis(0, userId);
                } else if (allUsers != null) {
                    // The caller explicitly specified INSTALL_ALL_USERS flag.
                    // Thus, updating the settings to install the app for all users.
@@ -2293,7 +2291,6 @@ final class InstallPackageHelper {
                            }
                            // Clear any existing archive state.
                            ps.setArchiveState(null, currentUserId);
                            ps.setArchiveTimeMillis(0, currentUserId);
                        } else {
                            ps.setInstalled(false, currentUserId);
                        }
+0 −5
Original line number Diff line number Diff line
@@ -775,11 +775,6 @@ public class PackageSetting extends SettingBase implements PackageStateInternal
        onChanged();
    }

    void setArchiveTimeMillis(long value, int userId) {
        modifyUserState(userId).setArchiveTimeMillis(value);
        onChanged();
    }

    boolean getInstalled(int userId) {
        return readUserState(userId).isInstalled();
    }
+0 −3
Original line number Diff line number Diff line
@@ -419,9 +419,6 @@ final class RemovePackageHelper {
                    Slog.d(TAG, "    user " + userId + ": " + wasInstalled + " => " + false);
                }
                deletedPs.setInstalled(/* installed= */ false, userId);
                if (isArchive) {
                    deletedPs.modifyUserState(userId).setArchiveTimeMillis(currentTimeMillis);
                }
            }
        }
        // make sure to preserve per-user installed state if this removal was just
Loading