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

Commit 47ca1b31 authored by TYM Tsai's avatar TYM Tsai
Browse files

Minify the scope to wait an app to be killed

Only waiting an app to be killed for clear app data

Bug: 31009094
Test: atest CtsPackageManagerTestCases
Change-Id: I99c6e1b1fe757f37aeaf598766850ab80ca7b07f
parent fa98986b
Loading
Loading
Loading
Loading
+7 −1
Original line number Original line Diff line number Diff line
@@ -62,6 +62,12 @@ final class PackageFreezer implements AutoCloseable {


    PackageFreezer(String packageName, int userId, String killReason,
    PackageFreezer(String packageName, int userId, String killReason,
            PackageManagerService pm, int exitInfoReason, @Nullable InstallRequest request) {
            PackageManagerService pm, int exitInfoReason, @Nullable InstallRequest request) {
        this(packageName, userId, killReason, pm, exitInfoReason, request, false);
    }

    PackageFreezer(String packageName, int userId, String killReason,
            PackageManagerService pm, int exitInfoReason, @Nullable InstallRequest request,
            boolean waitAppKilled) {
        mPm = pm;
        mPm = pm;
        mPackageName = packageName;
        mPackageName = packageName;
        mInstallRequest = request;
        mInstallRequest = request;
@@ -77,7 +83,7 @@ final class PackageFreezer implements AutoCloseable {
            ps = mPm.mSettings.getPackageLPr(mPackageName);
            ps = mPm.mSettings.getPackageLPr(mPackageName);
        }
        }
        if (ps != null) {
        if (ps != null) {
            if (Flags.waitApplicationKilled()) {
            if (waitAppKilled && Flags.waitApplicationKilled()) {
                mPm.killApplicationSync(ps.getPackageName(), ps.getAppId(), userId, killReason,
                mPm.killApplicationSync(ps.getPackageName(), ps.getAppId(), userId, killReason,
                        exitInfoReason);
                        exitInfoReason);
            } else {
            } else {
+10 −2
Original line number Original line Diff line number Diff line
@@ -4372,7 +4372,14 @@ public class PackageManagerService implements PackageSender, TestUtilityService


    public PackageFreezer freezePackage(String packageName, int userId, String killReason,
    public PackageFreezer freezePackage(String packageName, int userId, String killReason,
            int exitInfoReason, InstallRequest request) {
            int exitInfoReason, InstallRequest request) {
        return new PackageFreezer(packageName, userId, killReason, this, exitInfoReason, request);
        return freezePackage(packageName, userId, killReason, exitInfoReason, request,
                /* waitAppKilled= */ false);
    }

    private PackageFreezer freezePackage(String packageName, int userId, String killReason,
            int exitInfoReason, InstallRequest request, boolean waitAppKilled) {
        return new PackageFreezer(packageName, userId, killReason, this, exitInfoReason, request,
                waitAppKilled);
    }
    }


    public PackageFreezer freezePackageForDelete(String packageName, int userId, int deleteFlags,
    public PackageFreezer freezePackageForDelete(String packageName, int userId, int deleteFlags,
@@ -4797,7 +4804,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService
                    final boolean succeeded;
                    final boolean succeeded;
                    try (PackageFreezer freezer = freezePackage(packageName, UserHandle.USER_ALL,
                    try (PackageFreezer freezer = freezePackage(packageName, UserHandle.USER_ALL,
                            "clearApplicationUserData",
                            "clearApplicationUserData",
                            ApplicationExitInfo.REASON_USER_REQUESTED, null /* request */)) {
                            ApplicationExitInfo.REASON_USER_REQUESTED, null /* request */,
                            /* waitAppKilled= */ true)) {
                        try (PackageManagerTracedLock installLock = mInstallLock.acquireLock()) {
                        try (PackageManagerTracedLock installLock = mInstallLock.acquireLock()) {
                            succeeded = clearApplicationUserDataLIF(snapshotComputer(), packageName,
                            succeeded = clearApplicationUserDataLIF(snapshotComputer(), packageName,
                                    userId);
                                    userId);