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

Commit bed15005 authored by Mohammad Samiul Islam's avatar Mohammad Samiul Islam Committed by Automerger Merge Worker
Browse files

Merge "Fix deadlock in StagingManager.getSessions() method" into rvc-dev am:...

Merge "Fix deadlock in StagingManager.getSessions() method" into rvc-dev am: c25a56ca am: 2ebf7b36 am: 10dc5a37

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12117348

Change-Id: I0f210c2102c6dfa43777b6a949576fe3d9a425af
parents 710e07bf 10dc5a37
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -865,7 +865,16 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements

    @Override
    public ParceledListSlice<SessionInfo> getStagedSessions() {
        return mStagingManager.getSessions(Binder.getCallingUid());
        final List<SessionInfo> result = new ArrayList<>();
        synchronized (mSessions) {
            for (int i = 0; i < mSessions.size(); i++) {
                final PackageInstallerSession session = mSessions.valueAt(i);
                if (session.isStaged() && !session.isDestroyed()) {
                    result.add(session.generateInfoForCaller(false, Binder.getCallingUid()));
                }
            }
        }
        return new ParceledListSlice<>(result);
    }

    @Override
+0 −15
Original line number Diff line number Diff line
@@ -38,7 +38,6 @@ import android.content.pm.PackageManagerInternal;
import android.content.pm.PackageParser.PackageParserException;
import android.content.pm.PackageParser.SigningDetails;
import android.content.pm.PackageParser.SigningDetails.SignatureSchemeVersion;
import android.content.pm.ParceledListSlice;
import android.content.pm.parsing.PackageInfoWithoutStateUtils;
import android.content.rollback.IRollbackManager;
import android.content.rollback.RollbackInfo;
@@ -180,20 +179,6 @@ public class StagingManager {
        }
    }

    ParceledListSlice<PackageInstaller.SessionInfo> getSessions(int callingUid) {
        final List<PackageInstaller.SessionInfo> result = new ArrayList<>();
        synchronized (mStagedSessions) {
            for (int i = 0; i < mStagedSessions.size(); i++) {
                final PackageInstallerSession stagedSession = mStagedSessions.valueAt(i);
                if (stagedSession.isDestroyed()) {
                    continue;
                }
                result.add(stagedSession.generateInfoForCaller(false /*icon*/, callingUid));
            }
        }
        return new ParceledListSlice<>(result);
    }

    /**
     * Validates the signature used to sign the container of the new apex package
     *