From e925023873ce9d723484263ed51f019f22daceca Mon Sep 17 00:00:00 2001 From: Hani Kazmi Date: Wed, 25 Sep 2024 12:13:02 +0000 Subject: Reintroduce grace period for ASM Grace period restriction was found impacting async launched activities, see go/asm-graceperiod-problems for details. This CL reverted the following changes introduced in ag/26293253: a) Grace period restrictions for ASM. b) Opt-in Home and recent apps into ASM. Bug: 367702727 Test: atest ActivitySecurityModelTest ActivitySecurityModelEmbeddingTest BackgroundActivityLaunchTest Flag: android.security.asm_reintroduce_grace_period Change-Id: Ic6266661dda63dc5e164f5c8ad3dcd3c2512acf1 --- core/java/android/security/responsible_apis_flags.aconfig | 11 +++++++++++ .../server/wm/BackgroundActivityStartController.java | 15 +++++++++++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/core/java/android/security/responsible_apis_flags.aconfig b/core/java/android/security/responsible_apis_flags.aconfig index 45e9def2c15f..5457bbee8ad3 100644 --- a/core/java/android/security/responsible_apis_flags.aconfig +++ b/core/java/android/security/responsible_apis_flags.aconfig @@ -23,6 +23,17 @@ flag { bug: "230590090" } +flag { + name: "asm_reintroduce_grace_period" + namespace: "responsible_apis" + description: "Allow launches within the grace period for ASM apps" + bug: "367702727" + metadata { + purpose: PURPOSE_BUGFIX + } +} + + flag { name: "content_uri_permission_apis" is_exported: true diff --git a/services/core/java/com/android/server/wm/BackgroundActivityStartController.java b/services/core/java/com/android/server/wm/BackgroundActivityStartController.java index 2259b5a5b08c..515f148ac2ff 100644 --- a/services/core/java/com/android/server/wm/BackgroundActivityStartController.java +++ b/services/core/java/com/android/server/wm/BackgroundActivityStartController.java @@ -1120,7 +1120,9 @@ public class BackgroundActivityStartController { @Nullable Task targetTask, int launchFlags, int balCode, int callingUid, int realCallingUid, TaskDisplayArea preferredTaskDisplayArea) { // BAL Exception allowed in all cases - if (balCode == BAL_ALLOW_ALLOWLISTED_UID) { + if (balCode == BAL_ALLOW_ALLOWLISTED_UID + || (android.security.Flags.asmReintroduceGracePeriod() + && balCode == BAL_ALLOW_GRACE_PERIOD)) { return true; } @@ -1173,10 +1175,15 @@ public class BackgroundActivityStartController { ArrayList visibleTasks = displayArea.getVisibleTasks(); for (int i = 0; i < visibleTasks.size(); i++) { Task task = visibleTasks.get(i); - if (visibleTasks.size() == 1 && task.isActivityTypeHomeOrRecents()) { - bas.optedIn(task.getTopMostActivity()); - } else { + if (android.security.Flags.asmReintroduceGracePeriod()) { bas = checkTopActivityForAsm(task, callingUid, /*sourceRecord*/null, bas); + } else { + if (visibleTasks.size() == 1 && task.isActivityTypeHomeOrRecents()) { + bas.optedIn(task.getTopMostActivity()); + } else { + bas = checkTopActivityForAsm( + task, callingUid, /*sourceRecord*/null, bas); + } } } } -- cgit v1.2.3-59-g8ed1b