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

Commit b0e0e94c 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 am: 8b2da2e9

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



Change-Id: I43d6d846d134a80f8145bdeaa6ee5399ac461497
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 21569e17 8b2da2e9
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) {