Loading services/core/java/com/android/server/wm/ActivityTaskSupervisor.java +2 −2 Original line number Diff line number Diff line Loading @@ -75,7 +75,7 @@ import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLAS import static com.android.server.wm.ActivityTaskManagerService.ANIMATE; import static com.android.server.wm.ActivityTaskManagerService.H.FIRST_SUPERVISOR_TASK_MSG; import static com.android.server.wm.ActivityTaskManagerService.RELAUNCH_REASON_NONE; import static com.android.server.wm.ClientLifecycleManager.shouldDispatchCompatClientTransactionIndependently; import static com.android.server.wm.ClientLifecycleManager.shouldDispatchLaunchActivityItemIndependently; import static com.android.server.wm.LockTaskController.LOCK_TASK_AUTH_ALLOWLISTED; import static com.android.server.wm.LockTaskController.LOCK_TASK_AUTH_LAUNCHABLE; import static com.android.server.wm.LockTaskController.LOCK_TASK_AUTH_LAUNCHABLE_PRIV; Loading Loading @@ -953,7 +953,7 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { } // Schedule transaction. if (shouldDispatchCompatClientTransactionIndependently(r.mTargetSdk)) { if (shouldDispatchLaunchActivityItemIndependently(r.info.packageName, r.getUid())) { // LaunchActivityItem has @UnsupportedAppUsage usages. // Guard the bundleClientTransactionFlag feature with targetSDK on Android 15+. // To not bundle the transaction, dispatch the pending before schedule new Loading services/core/java/com/android/server/wm/ClientLifecycleManager.java +20 −11 Original line number Diff line number Diff line Loading @@ -18,14 +18,19 @@ package com.android.server.wm; import android.annotation.NonNull; import android.app.IApplicationThread; import android.app.compat.CompatChanges; import android.app.servertransaction.ActivityLifecycleItem; import android.app.servertransaction.ClientTransaction; import android.app.servertransaction.ClientTransactionItem; import android.app.servertransaction.LaunchActivityItem; import android.compat.annotation.ChangeId; import android.compat.annotation.EnabledSince; import android.os.Binder; import android.os.Build; import android.os.IBinder; import android.os.RemoteException; import android.os.Trace; import android.os.UserHandle; import android.util.ArrayMap; import android.util.Slog; Loading @@ -42,6 +47,15 @@ class ClientLifecycleManager { private static final String TAG = "ClientLifecycleManager"; /** * To prevent any existing apps from having app compat issue with the non-sdk usages of * {@link ClientTransaction#getActivityToken()}, only allow bundling {@link LaunchActivityItem} * for apps with targetSDK of V and above. */ @ChangeId @EnabledSince(targetSdkVersion = Build.VERSION_CODES.VANILLA_ICE_CREAM) private static final long ENABLE_BUNDLE_LAUNCH_ACTIVITY_ITEM = 324203798L; /** Mapping from client process binder to its pending transaction. */ @VisibleForTesting final ArrayMap<IBinder, ClientTransaction> mPendingTransactions = new ArrayMap<>(); Loading Loading @@ -251,16 +265,11 @@ class ClientLifecycleManager { && !mWms.mWindowPlacerLocked.isInLayout(); } /** * Guards the bundleClientTransactionFlag feature with targetSDK on Android 15+. * * Suppressing because it can't guard with @EnabledSince on VANILLA_ICE_CREAM yet since the * version is not published. * * TODO(b/324203798): update in V */ @SuppressWarnings("AndroidFrameworkCompatChange") static boolean shouldDispatchCompatClientTransactionIndependently(int appTargetSdk) { return appTargetSdk <= Build.VERSION_CODES.UPSIDE_DOWN_CAKE; /** Guards bundling {@link LaunchActivityItem} with targetSDK. */ static boolean shouldDispatchLaunchActivityItemIndependently( @NonNull String appPackageName, int appUid) { return !CompatChanges.isChangeEnabled(ENABLE_BUNDLE_LAUNCH_ACTIVITY_ITEM, appPackageName, UserHandle.getUserHandleForUid(appUid)); } } Loading
services/core/java/com/android/server/wm/ActivityTaskSupervisor.java +2 −2 Original line number Diff line number Diff line Loading @@ -75,7 +75,7 @@ import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLAS import static com.android.server.wm.ActivityTaskManagerService.ANIMATE; import static com.android.server.wm.ActivityTaskManagerService.H.FIRST_SUPERVISOR_TASK_MSG; import static com.android.server.wm.ActivityTaskManagerService.RELAUNCH_REASON_NONE; import static com.android.server.wm.ClientLifecycleManager.shouldDispatchCompatClientTransactionIndependently; import static com.android.server.wm.ClientLifecycleManager.shouldDispatchLaunchActivityItemIndependently; import static com.android.server.wm.LockTaskController.LOCK_TASK_AUTH_ALLOWLISTED; import static com.android.server.wm.LockTaskController.LOCK_TASK_AUTH_LAUNCHABLE; import static com.android.server.wm.LockTaskController.LOCK_TASK_AUTH_LAUNCHABLE_PRIV; Loading Loading @@ -953,7 +953,7 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { } // Schedule transaction. if (shouldDispatchCompatClientTransactionIndependently(r.mTargetSdk)) { if (shouldDispatchLaunchActivityItemIndependently(r.info.packageName, r.getUid())) { // LaunchActivityItem has @UnsupportedAppUsage usages. // Guard the bundleClientTransactionFlag feature with targetSDK on Android 15+. // To not bundle the transaction, dispatch the pending before schedule new Loading
services/core/java/com/android/server/wm/ClientLifecycleManager.java +20 −11 Original line number Diff line number Diff line Loading @@ -18,14 +18,19 @@ package com.android.server.wm; import android.annotation.NonNull; import android.app.IApplicationThread; import android.app.compat.CompatChanges; import android.app.servertransaction.ActivityLifecycleItem; import android.app.servertransaction.ClientTransaction; import android.app.servertransaction.ClientTransactionItem; import android.app.servertransaction.LaunchActivityItem; import android.compat.annotation.ChangeId; import android.compat.annotation.EnabledSince; import android.os.Binder; import android.os.Build; import android.os.IBinder; import android.os.RemoteException; import android.os.Trace; import android.os.UserHandle; import android.util.ArrayMap; import android.util.Slog; Loading @@ -42,6 +47,15 @@ class ClientLifecycleManager { private static final String TAG = "ClientLifecycleManager"; /** * To prevent any existing apps from having app compat issue with the non-sdk usages of * {@link ClientTransaction#getActivityToken()}, only allow bundling {@link LaunchActivityItem} * for apps with targetSDK of V and above. */ @ChangeId @EnabledSince(targetSdkVersion = Build.VERSION_CODES.VANILLA_ICE_CREAM) private static final long ENABLE_BUNDLE_LAUNCH_ACTIVITY_ITEM = 324203798L; /** Mapping from client process binder to its pending transaction. */ @VisibleForTesting final ArrayMap<IBinder, ClientTransaction> mPendingTransactions = new ArrayMap<>(); Loading Loading @@ -251,16 +265,11 @@ class ClientLifecycleManager { && !mWms.mWindowPlacerLocked.isInLayout(); } /** * Guards the bundleClientTransactionFlag feature with targetSDK on Android 15+. * * Suppressing because it can't guard with @EnabledSince on VANILLA_ICE_CREAM yet since the * version is not published. * * TODO(b/324203798): update in V */ @SuppressWarnings("AndroidFrameworkCompatChange") static boolean shouldDispatchCompatClientTransactionIndependently(int appTargetSdk) { return appTargetSdk <= Build.VERSION_CODES.UPSIDE_DOWN_CAKE; /** Guards bundling {@link LaunchActivityItem} with targetSDK. */ static boolean shouldDispatchLaunchActivityItemIndependently( @NonNull String appPackageName, int appUid) { return !CompatChanges.isChangeEnabled(ENABLE_BUNDLE_LAUNCH_ACTIVITY_ITEM, appPackageName, UserHandle.getUserHandleForUid(appUid)); } }