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

Commit d16f00c7 authored by Wei Sheng Shih's avatar Wei Sheng Shih Committed by Android (Google) Code Review
Browse files

Merge "Fixes system server crash from window detached from hierarchy..." into main

parents b12e7572 814a7684
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -767,6 +767,10 @@ class BackNavigationController {
        if (!isMonitoringTransition() || targets.isEmpty()) {
            return;
        }
        if (mAnimationHandler.hasTargetDetached()) {
            mNavigationMonitor.cancelBackNavigating("targetDetached");
            return;
        }
        for (int i = targets.size() - 1; i >= 0; --i) {
            final WindowContainer wc = targets.get(i).mContainer;
            if (wc.asActivityRecord() == null && wc.asTask() == null
@@ -1141,6 +1145,21 @@ class BackNavigationController {
                    || containTarget(openApps, false /* open */));
        }

        /**
         * Check if any animation target is detached, possibly due to app crash.
         */
        boolean hasTargetDetached() {
            if (!mComposed) {
                return false;
            }
            for (int i = mOpenAnimAdaptor.mAdaptors.length - 1; i >= 0; --i) {
                if (!mOpenAnimAdaptor.mAdaptors[i].mTarget.isAttached()) {
                    return true;
                }
            }
            return !mCloseAdaptor.mTarget.isAttached();
        }

        @Override
        public String toString() {
            return "AnimationTargets{"
@@ -1678,6 +1697,10 @@ class BackNavigationController {
    }

    private static void restoreLaunchBehind(@NonNull ActivityRecord activity) {
        if (!activity.isAttached()) {
            // The activity was detached from hierarchy.
            return;
        }
        activity.mDisplayContent.continueUpdateOrientationForDiffOrienLaunchingApp();

        // Restore the launch-behind state.