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

Commit b4189ea4 authored by Song Chun Fan's avatar Song Chun Fan Committed by Android (Google) Code Review
Browse files

Merge "[pm] make sure setInstalled and setCeDataInode are locked" into main

parents 1390d4a4 ef2eb84a
Loading
Loading
Loading
Loading
+30 −24
Original line number Diff line number Diff line
@@ -292,9 +292,11 @@ final class RemovePackageHelper {
        // Step 2: destroy app data.
        mAppDataHelper.destroyAppDataLIF(resolvedPkg, userId, appDataDeletionFlags);
        if (userId != UserHandle.USER_ALL) {
            synchronized (mPm.mLock) {
                ps.setCeDataInode(-1, userId);
                ps.setDeDataInode(-1, userId);
            }
        }

        final PreferredActivityHelper preferredActivityHelper = new PreferredActivityHelper(mPm,
                mBroadcastHelper);
@@ -425,6 +427,7 @@ final class RemovePackageHelper {
            }
            final boolean isArchive = (flags & PackageManager.DELETE_ARCHIVE) != 0;
            final long currentTimeMillis = System.currentTimeMillis();
            synchronized (mPm.mLock) {
                for (int userId : outInfo.mRemovedUsers) {
                    if (DEBUG_REMOVE) {
                        final boolean wasInstalled = deletedPs.getInstalled(userId);
@@ -433,13 +436,14 @@ final class RemovePackageHelper {
                    deletedPs.setInstalled(/* installed= */ false, userId);
                }

            // Preserve split apk information for downgrade check with DELETE_KEEP_DATA and archived
            // app cases
                // Preserve split apk information for downgrade check with DELETE_KEEP_DATA and
                // archived app cases
                if (deletedPkg != null && deletedPkg.getSplitNames() != null) {
                    deletedPs.setSplitNames(deletedPkg.getSplitNames());
                    deletedPs.setSplitRevisionCodes(deletedPkg.getSplitRevisionCodes());
                }
            }
        }

        // make sure to preserve per-user installed state if this removal was just
        // a downgrade of a system app to the factory package
@@ -448,6 +452,7 @@ final class RemovePackageHelper {
            if (DEBUG_REMOVE) {
                Slog.d(TAG, "Propagating install state across downgrade");
            }
            synchronized (mPm.mLock) {
                for (int userId : allUserHandles) {
                    final boolean installed = ArrayUtils.contains(outInfo.mOrigUsers, userId);
                    if (DEBUG_REMOVE) {
@@ -462,6 +467,7 @@ final class RemovePackageHelper {
                    }
                }
            }
        }
        synchronized (mPm.mLock) {
            // can downgrade to reader
            if (writeSettings) {