diff options
| author | 2023-09-14 11:49:56 +0000 | |
|---|---|---|
| committer | 2023-09-14 11:49:56 +0000 | |
| commit | 039648c87110ed86e2a8b0bd7ea529466108705b (patch) | |
| tree | 44af0b0b04460c24ddfbbb8fa2675fe4acaf81e3 | |
| parent | 2dec1eb5a2da8b8d4ab5344d4fa6eca042a1d993 (diff) | |
| parent | a3907dac15ef5019e0bd0698d8110cf1c3d22793 (diff) | |
Merge "Request transition when disposing TF organizer" into udc-qpr-dev am: 5dbb7ebf1c am: a3907dac15
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/24692206
Change-Id: I917442577d2e810349083dc1109a843947f31381
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | services/core/java/com/android/server/wm/TaskFragmentOrganizerController.java | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/TaskFragmentOrganizerController.java b/services/core/java/com/android/server/wm/TaskFragmentOrganizerController.java index a27cc3ad9973..ea722b61be6f 100644 --- a/services/core/java/com/android/server/wm/TaskFragmentOrganizerController.java +++ b/services/core/java/com/android/server/wm/TaskFragmentOrganizerController.java @@ -184,14 +184,31 @@ public class TaskFragmentOrganizerController extends ITaskFragmentOrganizerContr } void dispose() { + boolean wasVisible = false; for (int i = mOrganizedTaskFragments.size() - 1; i >= 0; i--) { + final TaskFragment taskFragment = mOrganizedTaskFragments.get(i); + if (taskFragment.isVisibleRequested()) { + wasVisible = true; + } // Cleanup the TaskFragmentOrganizer from all TaskFragments it organized before // removing the windows to prevent it from adding any additional TaskFragment // pending event. - final TaskFragment taskFragment = mOrganizedTaskFragments.get(i); taskFragment.onTaskFragmentOrganizerRemoved(); } + final TransitionController transitionController = mAtmService.getTransitionController(); + if (wasVisible && transitionController.isShellTransitionsEnabled() + && !transitionController.isCollecting()) { + final Task task = mOrganizedTaskFragments.get(0).getTask(); + final boolean containsNonEmbeddedActivity = + task != null && task.getActivity(a -> !a.isEmbedded()) != null; + transitionController.requestStartTransition( + transitionController.createTransition(WindowManager.TRANSIT_CLOSE), + // The task will be removed if all its activities are embedded, then the + // task is the trigger. + containsNonEmbeddedActivity ? null : task, + null /* remoteTransition */, null /* displayChange */); + } // Defer to avoid unnecessary layout when there are multiple TaskFragments removal. mAtmService.deferWindowLayout(); try { |