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

Commit 58f27dde authored by Jeff DeCew's avatar Jeff DeCew Committed by Automerger Merge Worker
Browse files

Merge "Reset internal and visual swipe state whenever the shade collapses."...

Merge "Reset internal and visual swipe state whenever the shade collapses." into udc-dev am: b91f5bac

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



Change-Id: I860466f31552893df220d4172ed96d913599f9c2
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents ce8707c1 b91f5bac
Loading
Loading
Loading
Loading
+14 −4
Original line number Diff line number Diff line
@@ -374,11 +374,10 @@ public class SwipeHelper implements Gefingerpoken {
            case MotionEvent.ACTION_UP:
            case MotionEvent.ACTION_CANCEL:
                final boolean captured = (mIsSwiping || mLongPressSent || mMenuRowIntercepting);
                mIsSwiping = false;
                mTouchedView = null;
                mLongPressSent = false;
                mCallback.onLongPressSent(null);
                mMenuRowIntercepting = false;
                resetSwipeState();
                cancelLongPress();
                if (captured) return true;
                break;
@@ -491,7 +490,7 @@ public class SwipeHelper implements Gefingerpoken {
                }
                if (!mCancelled || wasRemoved) {
                    mCallback.onChildDismissed(animView);
                    resetSwipeState();
                    resetSwipeOfView(animView);
                }
                if (endAction != null) {
                    endAction.accept(mCancelled);
@@ -546,7 +545,7 @@ public class SwipeHelper implements Gefingerpoken {

            if (!cancelled) {
                updateSwipeProgressFromOffset(animView, canBeDismissed);
                resetSwipeState();
                resetSwipeOfView(animView);
            }
            onChildSnappedBack(animView, targetLeft);
        });
@@ -806,9 +805,20 @@ public class SwipeHelper implements Gefingerpoken {
        return mIsSwiping ? mTouchedView : null;
    }

    protected void resetSwipeOfView(View view) {
        if (getSwipedView() == view) {
            resetSwipeState();
        }
    }

    public void resetSwipeState() {
        View swipedView = getSwipedView();
        mTouchedView = null;
        mIsSwiping = false;
        if (swipedView != null) {
            snapChildIfNeeded(swipedView, false, 0);
            onChildSnappedBack(swipedView, 0);
        }
    }

    private float getTouchSlop(MotionEvent event) {
+9 −5
Original line number Diff line number Diff line
@@ -4189,10 +4189,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
            mCentralSurfaces.resetUserExpandedStates();
            clearTemporaryViews();
            clearUserLockedViews();
            if (mSwipeHelper.isSwiping()) {
                mSwipeHelper.resetSwipeState();
                updateContinuousShadowDrawing();
            }
            cancelActiveSwipe();
        }
    }

@@ -4264,6 +4261,9 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
            if (!mIsExpanded) {
                mGroupExpansionManager.collapseGroups();
                mExpandHelper.cancelImmediately();
                if (!mIsExpansionChanging) {
                    cancelActiveSwipe();
                }
            }
            updateNotificationAnimationStates();
            updateChronometers();
@@ -6113,7 +6113,11 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
        }
    }

    @ShadeViewRefactor(RefactorComponent.STATE_RESOLVER)
    private void cancelActiveSwipe() {
        mSwipeHelper.resetSwipeState();
        updateContinuousShadowDrawing();
    }

    void updateContinuousShadowDrawing() {
        boolean continuousShadowUpdate = mAnimationRunning
                || mSwipeHelper.isSwiping();
+28 −0
Original line number Diff line number Diff line
@@ -800,6 +800,34 @@ public class NotificationStackScrollLayoutTest extends SysuiTestCase {
        assertEquals(mAmbientState.getScrollY(), 0);
    }

    @Test
    public void onShadeClosesWithAnimationWillResetSwipeState() {
        // GIVEN shade is expanded
        mStackScroller.setIsExpanded(true);
        clearInvocations(mNotificationSwipeHelper);

        // WHEN closing the shade with the animations
        mStackScroller.onExpansionStarted();
        mStackScroller.setIsExpanded(false);
        mStackScroller.onExpansionStopped();

        // VERIFY swipe is reset
        verify(mNotificationSwipeHelper).resetSwipeState();
    }

    @Test
    public void onShadeClosesWithoutAnimationWillResetSwipeState() {
        // GIVEN shade is expanded
        mStackScroller.setIsExpanded(true);
        clearInvocations(mNotificationSwipeHelper);

        // WHEN closing the shade without the animation
        mStackScroller.setIsExpanded(false);

        // VERIFY swipe is reset
        verify(mNotificationSwipeHelper).resetSwipeState();
    }

    @Test
    public void testSplitShade_hasTopOverscroll() {
        mTestableResources