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

Commit be4612ca authored by Austin Delgado's avatar Austin Delgado Committed by Android (Google) Code Review
Browse files

Merge "Pilfer once per gesture for UdfpsControllerOverlay" into udc-d1-dev

parents 12437235 04813362
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -188,6 +188,8 @@ public class UdfpsController implements DozeReceiver, Dumpable {
    @Nullable private VelocityTracker mVelocityTracker;
    // The ID of the pointer for which ACTION_DOWN has occurred. -1 means no pointer is active.
    private int mActivePointerId = -1;
    // Whether a pointer has been pilfered for current gesture
    private boolean mPointerPilfered = false;
    // The timestamp of the most recent touch log.
    private long mTouchLogTime;
    // The timestamp of the most recent log of a touch InteractionEvent.
@@ -557,6 +559,11 @@ public class UdfpsController implements DozeReceiver, Dumpable {
                || mPrimaryBouncerInteractor.isInTransit()) {
            return false;
        }
        if (event.getAction() == MotionEvent.ACTION_DOWN
                || event.getAction() == MotionEvent.ACTION_HOVER_ENTER) {
            // Reset on ACTION_DOWN, start of new gesture
            mPointerPilfered = false;
        }

        final TouchProcessorResult result = mTouchProcessor.processTouch(event, mActivePointerId,
                mOverlayParams);
@@ -630,10 +637,11 @@ public class UdfpsController implements DozeReceiver, Dumpable {
            shouldPilfer = true;
        }

        // Execute the pilfer
        if (shouldPilfer) {
        // Pilfer only once per gesture
        if (shouldPilfer && !mPointerPilfered) {
            mInputManager.pilferPointers(
                    mOverlay.getOverlayView().getViewRootImpl().getInputToken());
            mPointerPilfered = true;
        }

        return processedTouch.getTouchData().isWithinBounds(mOverlayParams.getNativeSensorBounds());
+14 −4
Original line number Diff line number Diff line
@@ -1300,12 +1300,22 @@ public class UdfpsControllerTest extends SysuiTestCase {
        // WHEN ACTION_DOWN is received
        when(mSinglePointerTouchProcessor.processTouch(any(), anyInt(), any())).thenReturn(
                processorResultDown);
        MotionEvent downEvent = MotionEvent.obtain(0, 0, ACTION_DOWN, 0, 0, 0);
        mTouchListenerCaptor.getValue().onTouch(mUdfpsView, downEvent);
        MotionEvent event = MotionEvent.obtain(0, 0, ACTION_DOWN, 0, 0, 0);
        mTouchListenerCaptor.getValue().onTouch(mUdfpsView, event);
        mBiometricExecutor.runAllReady();
        downEvent.recycle();

        // THEN the touch is pilfered
        // WHEN ACTION_MOVE is received after
        final TouchProcessorResult processorResultUnchanged =
                new TouchProcessorResult.ProcessedTouch(
                        InteractionEvent.UNCHANGED, 1 /* pointerId */, touchData);
        when(mSinglePointerTouchProcessor.processTouch(any(), anyInt(), any())).thenReturn(
                processorResultUnchanged);
        event.setAction(ACTION_MOVE);
        mTouchListenerCaptor.getValue().onTouch(mUdfpsView, event);
        mBiometricExecutor.runAllReady();
        event.recycle();

        // THEN only pilfer once on the initial down
        verify(mInputManager).pilferPointers(any());
    }