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

Commit 7f89bdb9 authored by Winson Chung's avatar Winson Chung
Browse files

Ensure that recents transition binder death handler executes on shell main thread

Flag: EXEMPT bugfix
Fixes: 376962814
Fixes: 385179788
Test: atest WMShellUnitTests
Change-Id: Id7ca73fca37bdd9aeb6ddb03911341796dd9722c
parent bfbc20d3
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -411,10 +411,12 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler,
            mInstanceId = System.identityHashCode(this);
            mListener = listener;
            mDeathHandler = () -> {
                mExecutor.execute(() -> {
                    ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION,
                            "[%d] RecentsController.DeathRecipient: binder died", mInstanceId);
                    finishInner(mWillFinishToHome, false /* leaveHint */, null /* finishCb */,
                            "deathRecipient");
                });
            };
            try {
                mListener.asBinder().linkToDeath(mDeathHandler, 0 /* flags */);
@@ -1273,6 +1275,11 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler,
                    "requested"));
        }

        /**
         * @param runnerFinishCb The remote finish callback to run after finish is complete, this is
         *                       not the same as mFinishCb which reports the transition is finished
         *                       to WM.
         */
        private void finishInner(boolean toHome, boolean sendUserLeaveHint,
                IResultReceiver runnerFinishCb, String reason) {
            if (finishSyntheticTransition(runnerFinishCb, reason)) {