From 83119e1bace1dcff9299b3582bc37d2fd81ca5e1 Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Thu, 11 Nov 2021 23:59:27 +0000 Subject: [PATCH] Fix issue with provided options not being applied when launching split tasks - Since SysUI/Shell is making the call to start the app pair tasks in a WCT, we also need to expand the restriction on who can freeze the list (to any caller with MANAGE_ACTIVITY_TASKS) Bug: 206000278 Test: Quickswitch from app pair and back Change-Id: I7f455fde87edfbcb7d856d842710c2a4542d7207 --- .../com/android/wm/shell/splitscreen/StageCoordinator.java | 1 + .../java/com/android/server/wm/ActivityTaskSupervisor.java | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java index 95886c8f3deb1..050d255bfd2d7 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java @@ -389,6 +389,7 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler, } else { ActivityOptions mainActivityOptions = ActivityOptions.fromBundle(mainOptions); mainActivityOptions.update(ActivityOptions.makeRemoteAnimation(wrappedAdapter)); + mainOptions = mainActivityOptions.toBundle(); } sideOptions = sideOptions != null ? sideOptions : new Bundle(); diff --git a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java index d4fed9947e8dd..ef4b8390413a4 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java +++ b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java @@ -19,6 +19,7 @@ package com.android.server.wm; import static android.Manifest.permission.ACTIVITY_EMBEDDING; import static android.Manifest.permission.CAMERA; import static android.Manifest.permission.INTERNAL_SYSTEM_WINDOW; +import static android.Manifest.permission.MANAGE_ACTIVITY_TASKS; import static android.Manifest.permission.START_ANY_ACTIVITY; import static android.app.ActivityManager.LOCK_TASK_MODE_LOCKED; import static android.app.ActivityManager.START_DELIVERED_TO_TOP; @@ -2506,7 +2507,8 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { activityType = activityOptions.getLaunchActivityType(); final int windowingMode = activityOptions.getLaunchWindowingMode(); if (activityOptions.freezeRecentTasksReordering() - && mRecentTasks.isCallerRecents(callingUid)) { + && mService.checkPermission(MANAGE_ACTIVITY_TASKS, callingPid, callingUid) + == PERMISSION_GRANTED) { mRecentTasks.setFreezeTaskListReordering(); } if (windowingMode == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY