[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
This commit is contained in:
wilsonshih
2022-09-08 11:01:57 +08:00
parent dd2f290170
commit 4a1722411f

View File

@@ -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() {