Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8b2da2e9 authored by Wei Sheng Shih's avatar Wei Sheng Shih Committed by Automerger Merge Worker
Browse files

Merge "Fix extra transition animation played after back gesture trigger." into...

Merge "Fix extra transition animation played after back gesture trigger." into udc-dev am: 58aab277

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22240772



Change-Id: I2451970fed72355b2d20049b1d59efffcb4e06ae
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 9274fbb7 58aab277
Loading
Loading
Loading
Loading
+25 −10
Original line number Diff line number Diff line
@@ -675,14 +675,29 @@ class BackNavigationController {
        private static final int TASK_SWITCH = 1;
        private static final int ACTIVITY_SWITCH = 2;

        private static boolean isActivitySwitch(WindowContainer close, WindowContainer open) {
            if (close.asActivityRecord() == null || open.asActivityRecord() == null
                    || (close.asActivityRecord().getTask()
                    != open.asActivityRecord().getTask())) {
                return false;
            }
            return true;
        }

        private static boolean isTaskSwitch(WindowContainer close, WindowContainer open) {
            if (close.asTask() == null || open.asTask() == null
                    || (close.asTask() == open.asTask())) {
                return false;
            }
            return true;
        }

        private void initiate(WindowContainer close, WindowContainer open)  {
            WindowContainer closeTarget;
            if (close.asActivityRecord() != null && open.asActivityRecord() != null
                    && (close.asActivityRecord().getTask() == open.asActivityRecord().getTask())) {
            if (isActivitySwitch(close, open)) {
                mSwitchType = ACTIVITY_SWITCH;
                closeTarget = close.asActivityRecord();
            } else if (close.asTask() != null && open.asTask() != null
                    && close.asTask() != open.asTask()) {
            } else if (isTaskSwitch(close, open)) {
                mSwitchType = TASK_SWITCH;
                closeTarget = close.asTask().getTopNonFinishingActivity();
            } else {
@@ -757,15 +772,15 @@ class BackNavigationController {
        }

        boolean isTarget(WindowContainer wc, boolean open) {
            if (open) {
                return wc == mOpenAdaptor.mTarget || mOpenAdaptor.mTarget.hasChild(wc);
            if (!mComposed) {
                return false;
            }

            final WindowContainer target = open ? mOpenAdaptor.mTarget : mCloseAdaptor.mTarget;
            if (mSwitchType == TASK_SWITCH) {
                return  wc == mCloseAdaptor.mTarget
                        || (wc.asTask() != null && wc.hasChild(mCloseAdaptor.mTarget));
                return  wc == target
                        || (wc.asTask() != null && wc.hasChild(target));
            } else if (mSwitchType == ACTIVITY_SWITCH) {
                return wc == mCloseAdaptor.mTarget;
                return wc == target || (wc.asTaskFragment() != null && wc.hasChild(target));
            }
            return false;
        }
+4 −14
Original line number Diff line number Diff line
@@ -2363,6 +2363,9 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
            if (isTranslucent(wc)) {
                flags |= FLAG_TRANSLUCENT;
            }
            if (wc.mWmService.mAtmService.mBackNavigationController.isMonitorTransitionTarget(wc)) {
                flags |= TransitionInfo.FLAG_BACK_GESTURE_ANIMATED;
            }
            final Task task = wc.asTask();
            if (task != null) {
                final ActivityRecord topActivity = task.getTopNonFinishingActivity();
@@ -2371,19 +2374,10 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
                            && topActivity.mStartingData.hasImeSurface()) {
                        flags |= FLAG_WILL_IME_SHOWN;
                    }
                    if (topActivity.mAtmService.mBackNavigationController
                            .isMonitorTransitionTarget(topActivity)) {
                        flags |= TransitionInfo.FLAG_BACK_GESTURE_ANIMATED;
                    }
                    if (topActivity != null && topActivity.mLaunchTaskBehind) {
                    if (topActivity.mLaunchTaskBehind) {
                        Slog.e(TAG, "Unexpected launch-task-behind operation in shell transition");
                        flags |= FLAG_TASK_LAUNCHING_BEHIND;
                    }
                } else {
                    if (task.mAtmService.mBackNavigationController
                            .isMonitorTransitionTarget(task)) {
                        flags |= TransitionInfo.FLAG_BACK_GESTURE_ANIMATED;
                    }
                }
                if (task.voiceSession != null) {
                    flags |= FLAG_IS_VOICE_INTERACTION;
@@ -2397,10 +2391,6 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
                    flags |= FLAG_IS_VOICE_INTERACTION;
                }
                flags |= record.mTransitionChangeFlags;
                if (record.mAtmService.mBackNavigationController
                        .isMonitorTransitionTarget(record)) {
                    flags |= TransitionInfo.FLAG_BACK_GESTURE_ANIMATED;
                }
            }
            final TaskFragment taskFragment = wc.asTaskFragment();
            if (taskFragment != null && task == null) {