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

Commit b689a377 authored by Will Leshner's avatar Will Leshner
Browse files

Attempted fix for IllegalStateException

This change attempts to fix an IllegalStateException that can occur when
dragging the bouncer while dreaming.

Test: atest BouncerSwipeTouchHandlerTest
Bug: 270736945
Change-Id: Ie243c2224d97cf070beb7a323b572deffcfcdc38
parent 12cc569e
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -254,7 +254,10 @@ public class BouncerSwipeTouchHandler implements DreamTouchHandler {
        mCurrentScrimController = mScrimManager.getCurrentController();

        session.registerCallback(() -> {
            if (mVelocityTracker != null) {
                mVelocityTracker.recycle();
                mVelocityTracker = null;
            }
            mScrimManager.removeCallback(mScrimManagerCallback);
            mCapture = null;
            mNotificationShadeWindowController.setForcePluginOpen(false, this);
+9 −0
Original line number Diff line number Diff line
@@ -450,6 +450,15 @@ public class BouncerSwipeTouchHandlerTest extends SysuiTestCase {
        swipeToPosition(0f, Direction.DOWN, 0);
    }

    @Test
    public void testTouchSessionOnRemovedCalledTwice() {
        mTouchHandler.onSessionStart(mTouchSession);
        ArgumentCaptor<DreamTouchHandler.TouchSession.Callback> onRemovedCallbackCaptor =
                ArgumentCaptor.forClass(DreamTouchHandler.TouchSession.Callback.class);
        verify(mTouchSession).registerCallback(onRemovedCallbackCaptor.capture());
        onRemovedCallbackCaptor.getValue().onRemoved();
        onRemovedCallbackCaptor.getValue().onRemoved();
    }

    private void swipeToPosition(float percent, Direction direction, float velocityY) {
        Mockito.clearInvocations(mTouchSession);