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

Commit 931efa54 authored by Ikram Gabiyev's avatar Ikram Gabiyev
Browse files

Make mCurrentPipTaskToken null when app crashes

PipTransition#mCurrentPipTaskToken needs to be nullified
after exit. Otherwise, we end up calling resetPrevPip()
without startEnterAnimation() later on when running PinnedStackTests.

Bug: 287989186
Test: atest PinnedStackTests
Test: run "adb shell am force-stop <pip activity package name>"
	after entering PiP, and then check for
	mCurrentPipTaskToken in sysdump
Change-Id: Id869f78dbf85f009509082181590e224a6d7f893
Merged-In: Id869f78dbf85f009509082181590e224a6d7f893
(cherry picked from commit 755d0c3d)
parent 22c2e769
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1927,6 +1927,7 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
        pw.println(innerPrefix + "mLeash=" + mLeash);
        pw.println(innerPrefix + "mState=" + mPipTransitionState.getTransitionState());
        pw.println(innerPrefix + "mPictureInPictureParams=" + mPictureInPictureParams);
        mPipTransitionController.dump(pw, innerPrefix);
    }

    @Override
+12 −0
Original line number Diff line number Diff line
@@ -72,6 +72,7 @@ import com.android.wm.shell.transition.CounterRotatorHelper;
import com.android.wm.shell.transition.Transitions;
import com.android.wm.shell.util.TransitionUtil;

import java.io.PrintWriter;
import java.util.Optional;

/**
@@ -451,6 +452,9 @@ public class PipTransition extends PipTransitionController {

    @Override
    public void forceFinishTransition() {
        // mFinishCallback might be null with an outdated mCurrentPipTaskToken
        // for example, when app crashes while in PiP and exit transition has not started
        mCurrentPipTaskToken = null;
        if (mFinishCallback == null) return;
        mFinishCallback.onTransitionFinished(null /* wct */, null /* callback */);
        mFinishCallback = null;
@@ -1137,4 +1141,12 @@ public class PipTransition extends PipTransitionController {
                PipMenuController.ALPHA_NO_CHANGE);
        mPipMenuController.updateMenuBounds(destinationBounds);
    }

    @Override
    public void dump(PrintWriter pw, String prefix) {
        final String innerPrefix = prefix + "  ";
        pw.println(prefix + TAG);
        pw.println(innerPrefix + "mCurrentPipTaskToken=" + mCurrentPipTaskToken);
        pw.println(innerPrefix + "mFinishCallback=" + mFinishCallback);
    }
}
+6 −0
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ import com.android.wm.shell.common.split.SplitScreenUtils;
import com.android.wm.shell.sysui.ShellInit;
import com.android.wm.shell.transition.Transitions;

import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

@@ -283,4 +284,9 @@ public abstract class PipTransitionController implements Transitions.TransitionH
         */
        void onPipTransitionCanceled(int direction);
    }

    /**
     * Dumps internal states.
     */
    public void dump(PrintWriter pw, String prefix) {}
}