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

Commit a71729fb authored by Dave Mankoff's avatar Dave Mankoff Committed by Android (Google) Code Review
Browse files

Merge "Ignore ACTION_OUTSIDE in FalsingManager" into tm-dev

parents 22149274 853d666f
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -309,6 +309,10 @@ class FalsingCollectorImpl implements FalsingCollector {
            avoidGesture();
            return;
        }
        if (ev.getActionMasked() == MotionEvent.ACTION_OUTSIDE) {
            return;
        }

        // We delay processing down events to see if another component wants to process them.
        // If #avoidGesture is called after a MotionEvent.ACTION_DOWN, all following motion events
        // will be ignored by the collector until another MotionEvent.ACTION_DOWN is passed in.
+1 −2
Original line number Diff line number Diff line
@@ -152,8 +152,7 @@ public class WalletActivity extends LifecycleActivity implements
                        Log.w(TAG, "Unable to create wallet app intent.");
                        return;
                    }
                    if (!mKeyguardStateController.isUnlocked()
                            && mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
                    if (mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
                        return;
                    }

+7 −1
Original line number Diff line number Diff line
@@ -81,6 +81,12 @@ public class WalletCardCarousel extends RecyclerView {
    private float mCardCenterToScreenCenterDistancePx = Float.MAX_VALUE;

    interface OnSelectionListener {
        /**
         * A non-centered card was clicked.
         * @param position
         */
        void onUncenteredClick(int position);

        /**
         * The card was moved to the center, thus selecting it.
         */
@@ -403,7 +409,7 @@ public class WalletCardCarousel extends RecyclerView {
            viewHolder.mCardView.setOnClickListener(
                    v -> {
                        if (position != mCenteredAdapterPosition) {
                            smoothScrollToPosition(position);
                            mSelectionListener.onUncenteredClick(position);
                        } else {
                            mSelectionListener.onCardClicked(cardViewInfo);
                        }
+9 −2
Original line number Diff line number Diff line
@@ -180,6 +180,14 @@ public class WalletScreenController implements
        queryWalletCards();
    }

    @Override
    public void onUncenteredClick(int position) {
        if (mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
            return;
        }
        mCardCarousel.smoothScrollToPosition(position);
    }

    @Override
    public void onCardSelected(@NonNull WalletCardViewInfo card) {
        if (mIsDismissed) {
@@ -208,8 +216,7 @@ public class WalletScreenController implements

    @Override
    public void onCardClicked(@NonNull WalletCardViewInfo cardInfo) {
        if (!mKeyguardStateController.isUnlocked()
                && mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
        if (mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
            return;
        }
        if (!(cardInfo instanceof QAWalletCardViewInfo)
+14 −0
Original line number Diff line number Diff line
@@ -198,6 +198,20 @@ public class FalsingCollectorImplTest extends SysuiTestCase {
        verify(mFalsingDataProvider, never()).onMotionEvent(any(MotionEvent.class));
    }

    @Test
    public void testIgnoreActionOutside() {
        MotionEvent outside = MotionEvent.obtain(0, 0, MotionEvent.ACTION_OUTSIDE, 0, 0, 0);
        MotionEvent up = MotionEvent.obtain(0, 0, MotionEvent.ACTION_UP, 0, 0, 0);

        // Nothing passed initially. The outside event will be completely ignored.
        mFalsingCollector.onTouchEvent(outside);
        verify(mFalsingDataProvider, never()).onMotionEvent(any(MotionEvent.class));

        // Up event flushes, and the outside event isn't passed through.
        mFalsingCollector.onTouchEvent(up);
        verify(mFalsingDataProvider).onMotionEvent(up);
    }

    @Test
    public void testAvoidUnlocked() {
        MotionEvent down = MotionEvent.obtain(0, 0, MotionEvent.ACTION_DOWN, 0, 0, 0);