"Block notifications screen off" setting is used

Fixes: 63520128

Test: runtest -x packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java

Change-Id: Ib0f737999aac9fc944812fb90644a5be5c801da2
(cherry picked from commit 6cfa71486e)
This commit is contained in:
Beverly
2017-07-13 16:39:24 -04:00
committed by Beverly Tai
parent f54dbc5253
commit 38159cee76
2 changed files with 85 additions and 2 deletions

View File

@@ -104,6 +104,7 @@ import android.os.UserHandle;
import android.os.UserManager;
import android.os.Vibrator;
import android.provider.Settings;
import android.service.notification.NotificationListenerService;
import android.service.notification.NotificationListenerService.RankingMap;
import android.service.notification.StatusBarNotification;
import android.service.vr.IVrManager;
@@ -564,7 +565,7 @@ public class StatusBar extends SystemUI implements DemoMode,
}};
private boolean mWaitingForKeyguardExit;
private boolean mDozing;
protected boolean mDozing;
private boolean mDozingRequested;
protected boolean mScrimSrcModeEnabled;
@@ -7215,7 +7216,12 @@ public class StatusBar extends SystemUI implements DemoMode,
return false;
}
if (mNotificationData.shouldSuppressScreenOn(sbn.getKey())) {
if (!isDozing() && mNotificationData.shouldSuppressScreenOn(sbn.getKey())) {
if (DEBUG) Log.d(TAG, "No peeking: suppressed by DND: " + sbn.getKey());
return false;
}
if (isDozing() && mNotificationData.shouldSuppressScreenOff(sbn.getKey())) {
if (DEBUG) Log.d(TAG, "No peeking: suppressed by DND: " + sbn.getKey());
return false;
}

View File

@@ -333,6 +333,83 @@ public class StatusBarTest extends SysuiTestCase {
assertFalse(mStatusBar.shouldPeek(entry, sbn));
}
@Test
public void testShouldPeek_suppressedScreenOn_dozing() {
when(mPowerManager.isScreenOn()).thenReturn(true);
when(mHeadsUpManager.isSnoozed(anyString())).thenReturn(false);
when(mNotificationData.shouldFilterOut(any())).thenReturn(false);
when(mSystemServicesProxy.isDreaming()).thenReturn(false);
when(mNotificationData.getImportance(any())).thenReturn(IMPORTANCE_HIGH);
mStatusBar.mDozing = true;
when(mNotificationData.shouldSuppressScreenOn(any())).thenReturn(true);
when(mNotificationData.shouldSuppressScreenOff(any())).thenReturn(false);
Notification n = new Notification.Builder(getContext(), "a").build();
StatusBarNotification sbn = new StatusBarNotification("a", "a", 0, "a", 0, 0, n,
UserHandle.of(0), null, 0);
NotificationData.Entry entry = new NotificationData.Entry(sbn);
assertTrue(mStatusBar.shouldPeek(entry, sbn));
}
@Test
public void testShouldPeek_suppressedScreenOn_noDoze() {
when(mPowerManager.isScreenOn()).thenReturn(true);
when(mHeadsUpManager.isSnoozed(anyString())).thenReturn(false);
when(mNotificationData.shouldFilterOut(any())).thenReturn(false);
when(mSystemServicesProxy.isDreaming()).thenReturn(false);
when(mNotificationData.getImportance(any())).thenReturn(IMPORTANCE_HIGH);
mStatusBar.mDozing = false;
when(mNotificationData.shouldSuppressScreenOn(any())).thenReturn(true);
when(mNotificationData.shouldSuppressScreenOff(any())).thenReturn(false);
Notification n = new Notification.Builder(getContext(), "a").build();
StatusBarNotification sbn = new StatusBarNotification("a", "a", 0, "a", 0, 0, n,
UserHandle.of(0), null, 0);
NotificationData.Entry entry = new NotificationData.Entry(sbn);
assertFalse(mStatusBar.shouldPeek(entry, sbn));
}
@Test
public void testShouldPeek_suppressedScreenOff_dozing() {
when(mPowerManager.isScreenOn()).thenReturn(true);
when(mHeadsUpManager.isSnoozed(anyString())).thenReturn(false);
when(mNotificationData.shouldFilterOut(any())).thenReturn(false);
when(mSystemServicesProxy.isDreaming()).thenReturn(false);
when(mNotificationData.getImportance(any())).thenReturn(IMPORTANCE_HIGH);
mStatusBar.mDozing = true;
when(mNotificationData.shouldSuppressScreenOn(any())).thenReturn(false);
when(mNotificationData.shouldSuppressScreenOff(any())).thenReturn(true);
Notification n = new Notification.Builder(getContext(), "a").build();
StatusBarNotification sbn = new StatusBarNotification("a", "a", 0, "a", 0, 0, n,
UserHandle.of(0), null, 0);
NotificationData.Entry entry = new NotificationData.Entry(sbn);
assertFalse(mStatusBar.shouldPeek(entry, sbn));
}
@Test
public void testShouldPeek_suppressedScreenOff_noDoze() {
when(mPowerManager.isScreenOn()).thenReturn(true);
when(mHeadsUpManager.isSnoozed(anyString())).thenReturn(false);
when(mNotificationData.shouldFilterOut(any())).thenReturn(false);
when(mSystemServicesProxy.isDreaming()).thenReturn(false);
when(mNotificationData.getImportance(any())).thenReturn(IMPORTANCE_HIGH);
mStatusBar.mDozing = false;
when(mNotificationData.shouldSuppressScreenOn(any())).thenReturn(false);
when(mNotificationData.shouldSuppressScreenOff(any())).thenReturn(true);
Notification n = new Notification.Builder(getContext(), "a").build();
StatusBarNotification sbn = new StatusBarNotification("a", "a", 0, "a", 0, 0, n,
UserHandle.of(0), null, 0);
NotificationData.Entry entry = new NotificationData.Entry(sbn);
assertTrue(mStatusBar.shouldPeek(entry, sbn));
}
@Test
public void testLogHidden() {
try {