From c6990a019f90149a8033d0ee09224bf1bad037f5 Mon Sep 17 00:00:00 2001 From: Rohan Shah Date: Fri, 23 Mar 2018 17:24:17 -0700 Subject: [PATCH] [Notif] Disable long click listener after dismiss Fix for blocking helper - disable long click after the main notification has been dismissed, in preparation for the blocking helper (which can't be long pressed) Test: Visually Change-Id: I78795df4e77cb8d51382c1103bfa4ce02c1a11f3 Fixes: 76227576 --- .../statusbar/ExpandableNotificationRow.java | 1 + .../ExpandableNotificationRowTest.java | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java index 6b9567dd9d8a9..b087a2921420f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java @@ -1061,6 +1061,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView } public void setDismissed(boolean fromAccessibility) { + setLongPressListener(null); mDismissed = true; mGroupParentWhenDismissed = mNotificationParent; mRefocusOnDismiss = fromAccessibility; diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/ExpandableNotificationRowTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/ExpandableNotificationRowTest.java index 231a186686a0c..af29ab47886c5 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/ExpandableNotificationRowTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/ExpandableNotificationRowTest.java @@ -18,7 +18,9 @@ package com.android.systemui.statusbar; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.reset; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -32,6 +34,7 @@ import android.view.NotificationHeaderView; import android.view.View; import com.android.systemui.SysuiTestCase; +import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin; import com.android.systemui.statusbar.notification.AboveShelfChangedListener; import com.android.systemui.statusbar.stack.NotificationChildrenContainer; @@ -158,6 +161,22 @@ public class ExpandableNotificationRowTest extends SysuiTestCase { mGroup.isSoundEffectsEnabled()); } + @Test + public void testSetDismissed_longPressListenerRemoved() { + ExpandableNotificationRow.LongPressListener listener = + mock(ExpandableNotificationRow.LongPressListener.class); + mGroup.setLongPressListener(listener); + mGroup.doLongClickCallback(0,0); + verify(listener, times(1)).onLongPress(eq(mGroup), eq(0), eq(0), + any(NotificationMenuRowPlugin.MenuItem.class)); + reset(listener); + + mGroup.setDismissed(true); + mGroup.doLongClickCallback(0,0); + verify(listener, times(0)).onLongPress(eq(mGroup), eq(0), eq(0), + any(NotificationMenuRowPlugin.MenuItem.class)); + } + @Test public void testShowAppOps_noHeader() { // public notification is custom layout - no header