Do not wake AOD for hidden notifications

Fixes: 161530512
Test: NotificationInterruptStateProviderImplTest
Test: Hide notificationchannel from LS. Post notification on
delay; validate AOD does not wake up/flicker
Test: Unhide notificationchannel. Post HUN notification on
delay; validate notificatoin HUNs on AOD

Change-Id: I28fbbbff9a2540fb1e88d91555c032c7ac2aa981
This commit is contained in:
Julia Reynolds
2023-03-24 11:29:13 -04:00
parent 4a3b5e4b1e
commit 6591b87cce
3 changed files with 32 additions and 0 deletions

View File

@@ -234,6 +234,14 @@ class NotificationInterruptLogger @Inject constructor(
})
}
fun logNoPulsingNotificationHidden(entry: NotificationEntry) {
buffer.log(TAG, DEBUG, {
str1 = entry.logKey
}, {
"No pulsing: notification hidden on lock screen: $str1"
})
}
fun logNoPulsingNotImportant(entry: NotificationEntry) {
buffer.log(TAG, DEBUG, {
str1 = entry.logKey

View File

@@ -482,6 +482,12 @@ public class NotificationInterruptStateProviderImpl implements NotificationInter
return false;
}
if (entry.getRanking().getLockscreenVisibilityOverride()
== Notification.VISIBILITY_PRIVATE) {
if (log) mLogger.logNoPulsingNotificationHidden(entry);
return false;
}
if (entry.getImportance() < NotificationManager.IMPORTANCE_DEFAULT) {
if (log) mLogger.logNoPulsingNotImportant(entry);
return false;

View File

@@ -19,12 +19,14 @@ package com.android.systemui.statusbar.notification.interruption;
import static android.app.Notification.FLAG_BUBBLE;
import static android.app.Notification.FLAG_FOREGROUND_SERVICE;
import static android.app.Notification.GROUP_ALERT_SUMMARY;
import static android.app.Notification.VISIBILITY_PRIVATE;
import static android.app.NotificationManager.IMPORTANCE_DEFAULT;
import static android.app.NotificationManager.IMPORTANCE_HIGH;
import static android.app.NotificationManager.IMPORTANCE_LOW;
import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_AMBIENT;
import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_FULL_SCREEN_INTENT;
import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_PEEK;
import static android.app.NotificationManager.VISIBILITY_NO_OVERRIDE;
import static com.android.systemui.statusbar.NotificationEntryHelper.modifyRanking;
import static com.android.systemui.statusbar.StatusBarState.KEYGUARD;
@@ -222,9 +224,25 @@ public class NotificationInterruptStateProviderImplTest extends SysuiTestCase {
ensureStateForHeadsUpWhenDozing();
NotificationEntry entry = createNotification(IMPORTANCE_DEFAULT);
modifyRanking(entry)
.setVisibilityOverride(VISIBILITY_NO_OVERRIDE)
.build();
assertThat(mNotifInterruptionStateProvider.shouldHeadsUp(entry)).isTrue();
}
@Test
public void testShouldHeadsUpWhenDozing_hiddenOnLockscreen() {
ensureStateForHeadsUpWhenDozing();
NotificationEntry entry = createNotification(IMPORTANCE_DEFAULT);
modifyRanking(entry)
.setVisibilityOverride(VISIBILITY_PRIVATE)
.build();
assertThat(mNotifInterruptionStateProvider.shouldHeadsUp(entry)).isFalse();
}
@Test
public void testShouldNotHeadsUpWhenDozing_pulseDisabled() {
// GIVEN state for "heads up when dozing" is true