diff options
| author | 2017-07-19 15:21:32 +0000 | |
|---|---|---|
| committer | 2017-07-19 15:21:32 +0000 | |
| commit | dc7b2bc5e3b1d00f02b5c9a9dc8fde2a3c459bff (patch) | |
| tree | 12aec93d1d66ef70cca0c608ca00d6bbfc14891c | |
| parent | 3dc5e0ae3ab8b69f52dc43f3515d77891dc47e23 (diff) | |
| parent | 38159cee769ae239574bbd5f24a3e97306704f61 (diff) | |
Merge ""Block notifications screen off" setting is used" into oc-dr1-dev
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java | 10 | ||||
| -rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java | 77 |
2 files changed, 85 insertions, 2 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index 4d3395d8e322..23969f985e32 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -102,6 +102,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; @@ -562,7 +563,7 @@ public class StatusBar extends SystemUI implements DemoMode, }}; private boolean mWaitingForKeyguardExit; - private boolean mDozing; + protected boolean mDozing; private boolean mDozingRequested; protected boolean mScrimSrcModeEnabled; @@ -7233,7 +7234,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; } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java index 8a4983c330a2..c33897e6b3a1 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java @@ -334,6 +334,83 @@ public class StatusBarTest extends SysuiTestCase { } @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 { mStatusBar.handleVisibleToUserChanged(false); |