summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/NotificationInfo.java6
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationInfoTest.java38
2 files changed, 41 insertions, 3 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationInfo.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationInfo.java
index 98e926807431..9b4554e80118 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationInfo.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationInfo.java
@@ -300,9 +300,11 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G
private void saveImportance() {
if (!mIsNonblockable) {
- // Only go through the lock screen/bouncer if the user didn't hit 'Keep showing'.
+ // Only go through the lock screen/bouncer if the user hit 'Stop notifications'.
+ // Otherwise, update the importance immediately.
if (mCheckSaveListener != null
- && !NotificationCounters.BLOCKING_HELPER_KEEP_SHOWING.equals(mExitReason)) {
+ && NotificationCounters.BLOCKING_HELPER_STOP_NOTIFICATIONS.equals(
+ mExitReason)) {
mCheckSaveListener.checkSave(this::updateImportance, mSbn);
} else {
updateImportance();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationInfoTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationInfoTest.java
index bdeb8bcd6fb8..a72fed4a2b41 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationInfoTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationInfoTest.java
@@ -508,7 +508,6 @@ public class NotificationInfoTest extends SysuiTestCase {
anyString(), eq(TEST_UID), eq(true));
}
-
@Test
public void testCloseControls_nonNullCheckSaveListenerDoesntDelayKeepShowing()
throws Exception {
@@ -537,6 +536,43 @@ public class NotificationInfoTest extends SysuiTestCase {
anyString(), eq(TEST_UID), eq(true));
}
+ @Test
+ public void testCloseControls_nonNullCheckSaveListenerDoesntDelayDismiss()
+ throws Exception {
+ NotificationInfo.CheckSaveListener listener =
+ mock(NotificationInfo.CheckSaveListener.class);
+ mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
+ TEST_PACKAGE_NAME, mNotificationChannel /* notificationChannel */,
+ 10 /* numUniqueChannelsInRow */, mSbn, listener /* checkSaveListener */,
+ null /* onSettingsClick */, null /* onAppSettingsClick */ ,
+ false /* isNonblockable */, true /* isForBlockingHelper */,
+ true /* isUserSentimentNegative */);
+
+ mNotificationInfo.handleCloseControls(true /* save */, false /* force */);
+
+ mTestableLooper.processAllMessages();
+ verify(listener, times(0)).checkSave(any(Runnable.class), eq(mSbn));
+ }
+
+ @Test
+ public void testCloseControls_checkSaveListenerDelaysStopNotifications()
+ throws Exception {
+ NotificationInfo.CheckSaveListener listener =
+ mock(NotificationInfo.CheckSaveListener.class);
+ mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager,
+ TEST_PACKAGE_NAME, mNotificationChannel /* notificationChannel */,
+ 10 /* numUniqueChannelsInRow */, mSbn, listener /* checkSaveListener */,
+ null /* onSettingsClick */, null /* onAppSettingsClick */ ,
+ false /* isNonblockable */, true /* isForBlockingHelper */,
+ true /* isUserSentimentNegative */);
+
+ mNotificationInfo.findViewById(R.id.block).performClick();
+ waitForUndoButton();
+ mNotificationInfo.handleCloseControls(true /* save */, false /* force */);
+
+ mTestableLooper.processAllMessages();
+ verify(listener).checkSave(any(Runnable.class), eq(mSbn));
+ }
@Test
public void testCloseControls_blockingHelperDismissedIfShown() throws Exception {