From cdd79ecd31623973411bcf7e882e975a8c3c558a Mon Sep 17 00:00:00 2001 From: Nan Wu Date: Wed, 25 Jan 2023 19:39:38 +0000 Subject: [PATCH] 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 --- .../android/server/wm/BackgroundActivityStartController.java | 3 ++- .../android/server/wm/BackgroundLaunchProcessController.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/wm/BackgroundActivityStartController.java b/services/core/java/com/android/server/wm/BackgroundActivityStartController.java index 7aa734bb12467..cd79f2ecbe79a 100644 --- a/services/core/java/com/android/server/wm/BackgroundActivityStartController.java +++ b/services/core/java/com/android/server/wm/BackgroundActivityStartController.java @@ -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 */ diff --git a/services/core/java/com/android/server/wm/BackgroundLaunchProcessController.java b/services/core/java/com/android/server/wm/BackgroundLaunchProcessController.java index bdb06a97a037d..63dc7d28dd1f1 100644 --- a/services/core/java/com/android/server/wm/BackgroundLaunchProcessController.java +++ b/services/core/java/com/android/server/wm/BackgroundLaunchProcessController.java @@ -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)) {