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

Commit 7aa3ba4c authored by Austin Delgado's avatar Austin Delgado Committed by Automerger Merge Worker
Browse files

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

Merge "Pilfer once per gesture for UdfpsControllerOverlay" into udc-d1-dev am: be4612ca am: 2e366454

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23797186



Change-Id: I192718818fcc5cfbb40c2f553c32688b21dcd094
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 02223b2b 2e366454
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -189,6 +189,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.
@@ -560,6 +562,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);
@@ -633,10 +640,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
@@ -1316,12 +1316,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());
    }