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

Commit 1d3d9602 authored by András Kurucz's avatar András Kurucz Committed by Android (Google) Code Review
Browse files

Merge "Avoid duplicate calls to the FalsingManager upon Notification dismissals" into tm-qpr-dev

parents 710d3976 655f0a37
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -251,13 +251,13 @@ class NotificationSwipeHelper extends SwipeHelper implements NotificationSwipeAc
                || (isFastNonDismissGesture && isAbleToShowMenu);
        int menuSnapTarget = menuRow.getMenuSnapTarget();
        boolean isNonFalseMenuRevealingGesture =
                !isFalseGesture() && isMenuRevealingGestureAwayFromMenu;
                isMenuRevealingGestureAwayFromMenu && !isFalseGesture();
        if ((isNonDismissGestureTowardsMenu || isNonFalseMenuRevealingGesture)
                && menuSnapTarget != 0) {
            // Menu has not been snapped to previously and this is menu revealing gesture
            snapOpen(animView, menuSnapTarget, velocity);
            menuRow.onSnapOpen();
        } else if (isDismissGesture(ev) && !gestureTowardsMenu) {
        } else if (isDismissGesture && !gestureTowardsMenu) {
            dismiss(animView, velocity);
            menuRow.onDismiss();
        } else {
+145 −4
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static junit.framework.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyFloat;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
@@ -227,14 +228,154 @@ public class NotificationSwipeHelperTest extends SysuiTestCase {
    }

    @Test
    public void testHandleUpEvent_menuRow() {
        when(mSwipeHelper.getCurrentMenuRow()).thenReturn(mMenuRow);
        doNothing().when(mSwipeHelper).handleMenuRowSwipe(mEvent, mView, 0, mMenuRow);
    public void testHandleUpEvent_menuRowWithoutMenu_dismiss() {
        doNothing().when(mSwipeHelper).dismiss(any(), anyFloat());
        doReturn(true).when(mSwipeHelper).isDismissGesture(any());
        doReturn(true).when(mSwipeHelper).swipedFarEnough();
        when(mMenuRow.shouldShowMenu()).thenReturn(true);
        mSwipeHelper.setCurrentMenuRow(mMenuRow);

        assertTrue("Menu row exists",
                mSwipeHelper.handleUpEvent(mEvent, mView, 0, 0));
        verify(mMenuRow, times(1)).onTouchEnd();
        verify(mSwipeHelper, times(1)).isDismissGesture(mEvent);
        verify(mSwipeHelper, times(1)).dismiss(mView, 0);
        verify(mSwipeHelper, never()).isFalseGesture();
    }

    @Test
    public void testHandleUpEvent_menuRowWithoutMenu_snapback() {
        doNothing().when(mSwipeHelper).snapChild(any(), anyInt(), anyFloat());
        doReturn(false).when(mSwipeHelper).isDismissGesture(any());
        doReturn(true).when(mSwipeHelper).swipedFarEnough();
        when(mMenuRow.shouldShowMenu()).thenReturn(true);
        mSwipeHelper.setCurrentMenuRow(mMenuRow);

        assertTrue("Menu row exists",
                mSwipeHelper.handleUpEvent(mEvent, mView, 0, 0));
        verify(mMenuRow, times(1)).onTouchEnd();
        verify(mSwipeHelper, times(1)).isDismissGesture(mEvent);
        verify(mSwipeHelper, times(1)).snapClosed(mView, 0);
        verify(mMenuRow, times(1)).onSnapClosed();
        verify(mSwipeHelper, never()).isFalseGesture();
    }

    @Test
    public void testHandleUpEvent_menuRowWithOpenMenu_dismissed() {
        doNothing().when(mSwipeHelper).dismiss(any(), anyFloat());
        doReturn(true).when(mSwipeHelper).isDismissGesture(any());
        doReturn(true).when(mSwipeHelper).swipedFarEnough();
        when(mMenuRow.shouldShowMenu()).thenReturn(true);
        when(mMenuRow.isSnappedAndOnSameSide()).thenReturn(true);
        mSwipeHelper.setCurrentMenuRow(mMenuRow);

        assertTrue("Menu row exists",
                mSwipeHelper.handleUpEvent(mEvent, mView, 0, 0));
        verify(mMenuRow, times(1)).onTouchEnd();
        verify(mSwipeHelper, times(1)).isDismissGesture(mEvent);
        verify(mSwipeHelper, times(1)).dismiss(mView, 0);
        verify(mSwipeHelper, never()).isFalseGesture();
    }

    @Test
    public void testHandleUpEvent_menuRowWithOpenMenu_snapback() {
        doNothing().when(mSwipeHelper).snapChild(any(), anyInt(), anyFloat());
        doReturn(false).when(mSwipeHelper).isDismissGesture(any());
        doReturn(true).when(mSwipeHelper).swipedFarEnough();
        when(mMenuRow.shouldShowMenu()).thenReturn(true);
        when(mMenuRow.isSnappedAndOnSameSide()).thenReturn(true);
        mSwipeHelper.setCurrentMenuRow(mMenuRow);

        assertTrue("Menu row exists",
                mSwipeHelper.handleUpEvent(mEvent, mView, 0, 0));
        verify(mMenuRow, times(1)).onTouchEnd();
        verify(mSwipeHelper, times(1)).isDismissGesture(mEvent);
        verify(mSwipeHelper, times(1)).snapClosed(mView, 0);
        verify(mMenuRow, times(1)).onSnapClosed();
        verify(mSwipeHelper, never()).isFalseGesture();
    }

    @Test
    public void testHandleUpEvent_menuRowWithClosedMenu_dismissed() {
        doNothing().when(mSwipeHelper).dismiss(any(), anyFloat());
        doReturn(true).when(mSwipeHelper).isDismissGesture(any());
        doReturn(true).when(mSwipeHelper).swipedFarEnough();
        when(mMenuRow.shouldShowMenu()).thenReturn(true);
        when(mMenuRow.isSnappedAndOnSameSide()).thenReturn(false);
        mSwipeHelper.setCurrentMenuRow(mMenuRow);

        assertTrue("Menu row exists",
                mSwipeHelper.handleUpEvent(mEvent, mView, 0, 0));
        verify(mMenuRow, times(1)).onTouchEnd();
        verify(mSwipeHelper, times(1)).handleMenuRowSwipe(mEvent, mView, 0, mMenuRow);
        verify(mSwipeHelper, times(1)).isDismissGesture(mEvent);
        verify(mSwipeHelper, times(1)).dismiss(mView, 0);
        verify(mSwipeHelper, never()).isFalseGesture();
    }

    @Test
    public void testHandleUpEvent_menuRowWithClosedMenu_snapback() {
        doNothing().when(mSwipeHelper).snapChild(any(), anyInt(), anyFloat());
        doReturn(false).when(mSwipeHelper).isDismissGesture(any());
        doReturn(true).when(mSwipeHelper).swipedFarEnough();
        when(mMenuRow.shouldShowMenu()).thenReturn(true);
        when(mMenuRow.isSnappedAndOnSameSide()).thenReturn(false);
        mSwipeHelper.setCurrentMenuRow(mMenuRow);

        assertTrue("Menu row exists",
                mSwipeHelper.handleUpEvent(mEvent, mView, 0, 0));
        verify(mMenuRow, times(1)).onTouchEnd();
        verify(mSwipeHelper, times(1)).isDismissGesture(mEvent);
        verify(mSwipeHelper, times(1)).snapClosed(mView, 0);
        verify(mMenuRow, times(1)).onSnapClosed();
        verify(mSwipeHelper, never()).isFalseGesture();
    }

    @Test
    public void testIsDismissGesture() {
        doReturn(false).when(mSwipeHelper).isFalseGesture();
        doReturn(true).when(mSwipeHelper).swipedFarEnough();
        doReturn(true).when(mSwipeHelper).swipedFastEnough();
        when(mCallback.canChildBeDismissedInDirection(any(), anyBoolean())).thenReturn(true);
        when(mEvent.getActionMasked()).thenReturn(MotionEvent.ACTION_UP);

        assertTrue("Should be a dismiss gesture", mSwipeHelper.isDismissGesture(mEvent));
        verify(mSwipeHelper, times(1)).isFalseGesture();
    }

    @Test
    public void testIsDismissGesture_falseGesture() {
        doReturn(true).when(mSwipeHelper).isFalseGesture();
        doReturn(true).when(mSwipeHelper).swipedFarEnough();
        doReturn(true).when(mSwipeHelper).swipedFastEnough();
        when(mCallback.canChildBeDismissedInDirection(any(), anyBoolean())).thenReturn(true);
        when(mEvent.getActionMasked()).thenReturn(MotionEvent.ACTION_UP);

        assertFalse("False gesture should stop dismissal", mSwipeHelper.isDismissGesture(mEvent));
        verify(mSwipeHelper, times(1)).isFalseGesture();
    }

    @Test
    public void testIsDismissGesture_farEnough() {
        doReturn(false).when(mSwipeHelper).isFalseGesture();
        doReturn(true).when(mSwipeHelper).swipedFarEnough();
        doReturn(false).when(mSwipeHelper).swipedFastEnough();
        when(mCallback.canChildBeDismissedInDirection(any(), anyBoolean())).thenReturn(true);
        when(mEvent.getActionMasked()).thenReturn(MotionEvent.ACTION_UP);

        assertTrue("Should be a dismissal", mSwipeHelper.isDismissGesture(mEvent));
        verify(mSwipeHelper, times(1)).isFalseGesture();
    }

    @Test
    public void testIsDismissGesture_notFarOrFastEnough() {
        doReturn(false).when(mSwipeHelper).isFalseGesture();
        doReturn(false).when(mSwipeHelper).swipedFarEnough();
        doReturn(false).when(mSwipeHelper).swipedFastEnough();
        when(mCallback.canChildBeDismissedInDirection(any(), anyBoolean())).thenReturn(true);
        when(mEvent.getActionMasked()).thenReturn(MotionEvent.ACTION_UP);

        assertFalse("Should not be a dismissal", mSwipeHelper.isDismissGesture(mEvent));
        verify(mSwipeHelper, times(1)).isFalseGesture();
    }

    @Test