From 61b8f80e3630353593b7d79648792438e987f4f0 Mon Sep 17 00:00:00 2001 From: Sandro Montanari Date: Thu, 25 Jan 2024 16:49:41 +0000 Subject: Flag getSdkSandboxApplicationInfoForInstrumentation The API is not present in the mainline prebuilts on U. Because of the missing API, we are getting runtime failures on next targets. Bug: 315018061 Test: m & flashall Change-Id: I3cbfb164ab88ba0285434e9b82d7994a91d3d019 --- .../android/server/am/ActivityManagerService.java | 23 +++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 74902f76b617..374a17a3a23f 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -135,6 +135,7 @@ import static android.view.Display.INVALID_DISPLAY; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_CONFIGURATION; import static com.android.internal.util.FrameworkStatsLog.UNSAFE_INTENT_EVENT_REPORTED__EVENT_TYPE__INTERNAL_NON_EXPORTED_COMPONENT_MATCH; import static com.android.internal.util.FrameworkStatsLog.UNSAFE_INTENT_EVENT_REPORTED__EVENT_TYPE__NEW_MUTABLE_IMPLICIT_PENDING_INTENT_RETRIEVED; +import static com.android.sdksandbox.flags.Flags.sdkSandboxInstrumentationInfo; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_ALL; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_ALLOWLISTS; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_BACKGROUND_CHECK; @@ -16141,10 +16142,22 @@ public class ActivityManagerService extends IActivityManager.Stub } final ApplicationInfo sdkSandboxInfo; + final String processName; try { - sdkSandboxInfo = - sandboxManagerLocal.getSdkSandboxApplicationInfoForInstrumentation( - sdkSandboxClientAppInfo, isSdkInSandbox); + if (sdkSandboxInstrumentationInfo()) { + sdkSandboxInfo = + sandboxManagerLocal.getSdkSandboxApplicationInfoForInstrumentation( + sdkSandboxClientAppInfo, isSdkInSandbox); + processName = sdkSandboxInfo.processName; + } else { + final PackageManager pm = mContext.getPackageManager(); + sdkSandboxInfo = + pm.getApplicationInfoAsUser(pm.getSdkSandboxPackageName(), 0, userId); + processName = + sandboxManagerLocal.getSdkSandboxProcessNameForInstrumentation( + sdkSandboxClientAppInfo); + sdkSandboxInfo.uid = Process.toSdkSandboxUid(sdkSandboxClientAppInfo.uid); + } } catch (NameNotFoundException e) { reportStartInstrumentationFailureLocked( watcher, className, "Can't find SdkSandbox package"); @@ -16153,7 +16166,7 @@ public class ActivityManagerService extends IActivityManager.Stub ActiveInstrumentation activeInstr = new ActiveInstrumentation(this); activeInstr.mClass = className; - activeInstr.mTargetProcesses = new String[]{sdkSandboxInfo.processName}; + activeInstr.mTargetProcesses = new String[]{processName}; activeInstr.mTargetInfo = sdkSandboxInfo; activeInstr.mIsSdkInSandbox = isSdkInSandbox; activeInstr.mProfileFile = profileFile; @@ -16196,7 +16209,7 @@ public class ActivityManagerService extends IActivityManager.Stub ProcessRecord app = addAppLocked( sdkSandboxInfo, - sdkSandboxInfo.processName, + processName, /* isolated= */ false, /* isSdkSandbox= */ true, sdkSandboxInfo.uid, -- cgit v1.2.3-59-g8ed1b