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

Commit 076d5a08 authored by Pavel Grafov's avatar Pavel Grafov
Browse files

Fix logic checking if suspension changed

Currently newSuspendParams is always non-null and oldSuspendParams is
always null because the wrong package was used to query the map
(suspended vs. suspending). As a result `changed` is always true.

Bug: 263464464
Test: atest SuspendPackageHelperTest
Test: atest CtsSuspendAppsTestCases:android.suspendapps.cts.SuspendPackagesTest
Change-Id: Ie70c008af4ecbcaeda4ac51014339dec004eb6b9
parent c91700a7
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -120,8 +120,8 @@ public final class SuspendPackageHelper {
            return packageNames;
        }

        final SuspendParams newSuspendParams =
                new SuspendParams(dialogInfo, appExtras, launcherExtras, quarantined);
        final SuspendParams newSuspendParams = suspended
                ? new SuspendParams(dialogInfo, appExtras, launcherExtras, quarantined) : null;

        final List<String> unmodifiablePackages = new ArrayList<>(packageNames.length);

@@ -156,8 +156,8 @@ public final class SuspendPackageHelper {

            final WatchedArrayMap<String, SuspendParams> suspendParamsMap =
                    packageState.getUserStateOrDefault(userId).getSuspendParams();
            SuspendParams oldSuspendParams = suspendParamsMap == null
                    ? null : suspendParamsMap.get(packageName);
            final SuspendParams oldSuspendParams = suspendParamsMap == null
                    ? null : suspendParamsMap.get(callingPackage);
            boolean changed = !Objects.equals(oldSuspendParams, newSuspendParams);

            if (suspended && !changed) {