From 4a1722411f989df0f0c9ab9808142670a478f692 Mon Sep 17 00:00:00 2001 From: wilsonshih Date: Thu, 8 Sep 2022 11:01:57 +0800 Subject: [PATCH] [RESTRICT AUTOMERGE]Animate back gesture with focusd window activity Correct the animation target, top most activity can be finishing so shouldn't be choose as animation target. Bug: 245467978 Test: Start two activities in a task. Finish top activity, before the exit animation done, drive another back gesture. Verify the target should not point to the top activity. Change-Id: I4d9d61bd566cafbeef90916cdf40a6fc9c8e13d7 --- .../com/android/server/wm/BackNavigationController.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/wm/BackNavigationController.java b/services/core/java/com/android/server/wm/BackNavigationController.java index 35a39c048e57f..028d4b3e08711 100644 --- a/services/core/java/com/android/server/wm/BackNavigationController.java +++ b/services/core/java/com/android/server/wm/BackNavigationController.java @@ -310,7 +310,7 @@ class BackNavigationController { mBackNaviAnimationController = new BackNaviAnimationController( backAnimationAdaptor.getRunner(), this, currentActivity.getDisplayId()); - prepareBackToHomeTransition(currentTask, prevTask); + prepareBackToHomeTransition(currentActivity, prevTask); infoBuilder.setPrepareAnimation(true); } } else { @@ -489,8 +489,8 @@ class BackNavigationController { mWindowManagerService = wm; } - private void prepareBackToHomeTransition(Task currentTask, Task homeTask) { - final DisplayContent dc = currentTask.getDisplayContent(); + private void prepareBackToHomeTransition(ActivityRecord currentActivity, Task homeTask) { + final DisplayContent dc = currentActivity.getDisplayContent(); final ActivityRecord homeActivity = homeTask.getTopNonFinishingActivity(); if (!homeActivity.mVisibleRequested) { homeActivity.setVisibility(true); @@ -499,7 +499,7 @@ class BackNavigationController { dc.ensureActivitiesVisible( null /* starting */, 0 /* configChanges */, false /* preserveWindows */, true); - mBackNaviAnimationController.initialize(homeActivity, currentTask.getTopMostActivity()); + mBackNaviAnimationController.initialize(homeActivity, currentActivity); } void finishAnimation() {