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

Commit cdd79ecd authored by Nan Wu's avatar Nan Wu
Browse files

Return BAL_ALLOW_VISIBLE_WINDOW for bound by fg UID BAL case

When bound by foreground UID and opted-in, we should consider the app as
BAL_ALLOW_VISIBLE_WINDOW, so ASM doesn't block the launch.
Without this change, tests broke. This change got lost during a code
rebase, merge conflict resolving.

Bug: 266716343
Test: atest BackgroundActivityLaunchTest
      testBalOptInBindToService_whenOptedIn_allowsActivityStarts
      testBalOptInBindToService_whenNotOptedInAndSdk33_allowsActivityStart

Change-Id: I41664e814ed0ab1eb38ff833e4ef073e5352b827
parent f0f201ad
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -86,7 +86,8 @@ public class BackgroundActivityStartController {
    /** Apps that fulfill a certain role that can can always launch new tasks */
    static final int BAL_ALLOW_ALLOWLISTED_COMPONENT = 3;

    /** Apps which currently have a visible window */
    /** Apps which currently have a visible window or are bound by a service with a visible
     * window */
    static final int BAL_ALLOW_VISIBLE_WINDOW = 4;

    /** Allowed due to the PendingIntent sender */
+2 −1
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import static com.android.server.wm.ActivityTaskManagerService.APP_SWITCH_FG_ONL
import static com.android.server.wm.BackgroundActivityStartController.BAL_ALLOW_BAL_PERMISSION;
import static com.android.server.wm.BackgroundActivityStartController.BAL_ALLOW_FOREGROUND;
import static com.android.server.wm.BackgroundActivityStartController.BAL_ALLOW_GRACE_PERIOD;
import static com.android.server.wm.BackgroundActivityStartController.BAL_ALLOW_VISIBLE_WINDOW;
import static com.android.server.wm.BackgroundActivityStartController.BAL_BLOCK;

import static java.util.Objects.requireNonNull;
@@ -152,7 +153,7 @@ class BackgroundLaunchProcessController {
                Slog.d(TAG, "[Process(" + pid
                        + ")] Activity start allowed: process bound by foreground uid");
            }
            return BAL_ALLOW_FOREGROUND;
            return BAL_ALLOW_VISIBLE_WINDOW;
        }
        // Allow if the flag was explicitly set.
        if (isBackgroundStartAllowedByToken(uid, packageName, isCheckingForFgsStart)) {