diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelper.java index 993c3801cecd7..b956207190b75 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelper.java @@ -354,7 +354,11 @@ class NotificationSwipeHelper extends SwipeHelper implements NotificationSwipeAc @Override protected void snapChild(final View animView, final float targetLeft, float velocity) { - superSnapChild(animView, targetLeft, velocity); + if (animView instanceof SwipeableView) { + // only perform the snapback animation on views that are swipeable inside the shade. + superSnapChild(animView, targetLeft, velocity); + } + mCallback.onDragCancelled(animView); if (targetLeft == 0) { handleMenuCoveredOrDismissed(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelperTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelperTest.java index 551499e0fb55d..7632d01d4d43a 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelperTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelperTest.java @@ -392,23 +392,32 @@ public class NotificationSwipeHelperTest extends SysuiTestCase { @Test public void testSnapchild_targetIsZero() { - doNothing().when(mSwipeHelper).superSnapChild(mView, 0, 0); - mSwipeHelper.snapChild(mView, 0, 0); + doNothing().when(mSwipeHelper).superSnapChild(mNotificationRow, 0, 0); + mSwipeHelper.snapChild(mNotificationRow, 0, 0); - verify(mCallback, times(1)).onDragCancelled(mView); - verify(mSwipeHelper, times(1)).superSnapChild(mView, 0, 0); + verify(mCallback, times(1)).onDragCancelled(mNotificationRow); + verify(mSwipeHelper, times(1)).superSnapChild(mNotificationRow, 0, 0); verify(mSwipeHelper, times(1)).handleMenuCoveredOrDismissed(); } @Test public void testSnapchild_targetNotZero() { + doNothing().when(mSwipeHelper).superSnapChild(mNotificationRow, 10, 0); + mSwipeHelper.snapChild(mNotificationRow, 10, 0); + + verify(mCallback, times(1)).onDragCancelled(mNotificationRow); + verify(mSwipeHelper, times(1)).superSnapChild(mNotificationRow, 10, 0); + verify(mSwipeHelper, times(0)).handleMenuCoveredOrDismissed(); + } + + @Test + public void testSnapchild_targetNotSwipeable() { doNothing().when(mSwipeHelper).superSnapChild(mView, 10, 0); mSwipeHelper.snapChild(mView, 10, 0); - verify(mCallback, times(1)).onDragCancelled(mView); - verify(mSwipeHelper, times(1)).superSnapChild(mView, 10, 0); - verify(mSwipeHelper, times(0)).handleMenuCoveredOrDismissed(); + verify(mCallback).onDragCancelled(mView); + verify(mSwipeHelper, never()).superSnapChild(mView, 10, 0); } @Test