Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/CommonVisualInterruptionSuppressors.kt +30 −2 Original line number Diff line number Diff line Loading @@ -19,6 +19,9 @@ package com.android.systemui.statusbar.notification.interruption import android.Manifest.permission.RECEIVE_EMERGENCY_BROADCAST import android.app.Notification import android.app.Notification.BubbleMetadata import android.app.Notification.CATEGORY_ALARM import android.app.Notification.CATEGORY_CAR_EMERGENCY import android.app.Notification.CATEGORY_CAR_WARNING import android.app.Notification.CATEGORY_EVENT import android.app.Notification.CATEGORY_REMINDER import android.app.Notification.VISIBILITY_PRIVATE Loading @@ -42,6 +45,7 @@ import android.provider.Settings.Global.HEADS_UP_OFF import android.service.notification.Flags import com.android.internal.logging.UiEvent import com.android.internal.logging.UiEventLogger import com.android.internal.logging.UiEventLogger.UiEventEnum.RESERVE_NEW_UI_EVENT_ID import com.android.internal.messages.nano.SystemMessageProto.SystemMessage import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.plugins.statusbar.StatusBarStateController Loading Loading @@ -307,6 +311,9 @@ class AvalancheSuppressor( ALLOW_CALLSTYLE, ALLOW_CATEGORY_REMINDER, ALLOW_CATEGORY_EVENT, ALLOW_CATEGORY_ALARM, ALLOW_CATEGORY_CAR_EMERGENCY, ALLOW_CATEGORY_CAR_WARNING, ALLOW_FSI_WITH_PERMISSION_ON, ALLOW_COLORIZED, ALLOW_EMERGENCY, Loading @@ -333,8 +340,13 @@ class AvalancheSuppressor( @UiEvent(doc = "HUN allowed during avalanche because it is colorized.") AVALANCHE_SUPPRESSOR_HUN_ALLOWED_COLORIZED(1832), @UiEvent(doc = "HUN allowed during avalanche because it is an emergency notification.") AVALANCHE_SUPPRESSOR_HUN_ALLOWED_EMERGENCY(1833); AVALANCHE_SUPPRESSOR_HUN_ALLOWED_EMERGENCY(1833), @UiEvent(doc = "HUN allowed during avalanche because it is an alarm.") AVALANCHE_SUPPRESSOR_HUN_ALLOWED_CATEGORY_ALARM(1867), @UiEvent(doc = "HUN allowed during avalanche because it is a car emergency.") AVALANCHE_SUPPRESSOR_HUN_ALLOWED_CATEGORY_CAR_EMERGENCY(1868), @UiEvent(doc = "HUN allowed during avalanche because it is a car warning") AVALANCHE_SUPPRESSOR_HUN_ALLOWED_CATEGORY_CAR_WARNING(1869); override fun getId(): Int { return id } Loading Loading @@ -423,6 +435,22 @@ class AvalancheSuppressor( return State.ALLOW_CATEGORY_REMINDER } if (entry.sbn.notification.category == CATEGORY_ALARM) { uiEventLogger.log(AvalancheEvent.AVALANCHE_SUPPRESSOR_HUN_ALLOWED_CATEGORY_ALARM) return State.ALLOW_CATEGORY_ALARM } if (entry.sbn.notification.category == CATEGORY_CAR_EMERGENCY) { uiEventLogger.log( AvalancheEvent.AVALANCHE_SUPPRESSOR_HUN_ALLOWED_CATEGORY_CAR_EMERGENCY) return State.ALLOW_CATEGORY_CAR_EMERGENCY } if (entry.sbn.notification.category == CATEGORY_CAR_WARNING) { uiEventLogger.log(AvalancheEvent.AVALANCHE_SUPPRESSOR_HUN_ALLOWED_CATEGORY_CAR_WARNING) return State.ALLOW_CATEGORY_CAR_WARNING } if (entry.sbn.notification.category == CATEGORY_EVENT) { uiEventLogger.log(AvalancheEvent.AVALANCHE_SUPPRESSOR_HUN_ALLOWED_CATEGORY_EVENT) return State.ALLOW_CATEGORY_EVENT Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/VisualInterruptionDecisionProviderImplTest.kt +58 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,9 @@ package com.android.systemui.statusbar.notification.interruption import android.Manifest.permission import android.app.Notification.CATEGORY_ALARM import android.app.Notification.CATEGORY_CAR_EMERGENCY import android.app.Notification.CATEGORY_CAR_WARNING import android.app.Notification.CATEGORY_EVENT import android.app.Notification.CATEGORY_REMINDER import android.app.NotificationManager Loading Loading @@ -255,6 +258,61 @@ class VisualInterruptionDecisionProviderImplTest : VisualInterruptionDecisionPro } } @Test fun testAvalancheFilter_duringAvalanche_allowCategoryAlarm() { avalancheProvider.startTime = whenAgo(10) withFilter( AvalancheSuppressor(avalancheProvider, systemClock, settingsInteractor, packageManager, uiEventLogger, context, notificationManager) ) { ensurePeekState() assertShouldHeadsUp( buildEntry { importance = NotificationManager.IMPORTANCE_HIGH category = CATEGORY_ALARM } ) } } @Test fun testAvalancheFilter_duringAvalanche_allowCategoryCarEmergency() { avalancheProvider.startTime = whenAgo(10) withFilter( AvalancheSuppressor(avalancheProvider, systemClock, settingsInteractor, packageManager, uiEventLogger, context, notificationManager) ) { ensurePeekState() assertShouldHeadsUp( buildEntry { importance = NotificationManager.IMPORTANCE_HIGH category = CATEGORY_CAR_EMERGENCY } ) } } @Test fun testAvalancheFilter_duringAvalanche_allowCategoryCarWarning() { avalancheProvider.startTime = whenAgo(10) withFilter( AvalancheSuppressor(avalancheProvider, systemClock, settingsInteractor, packageManager, uiEventLogger, context, notificationManager) ) { ensurePeekState() assertShouldHeadsUp( buildEntry { importance = NotificationManager.IMPORTANCE_HIGH category = CATEGORY_CAR_WARNING } ) } } @Test fun testAvalancheFilter_duringAvalanche_allowFsi() { avalancheProvider.startTime = whenAgo(10) Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/CommonVisualInterruptionSuppressors.kt +30 −2 Original line number Diff line number Diff line Loading @@ -19,6 +19,9 @@ package com.android.systemui.statusbar.notification.interruption import android.Manifest.permission.RECEIVE_EMERGENCY_BROADCAST import android.app.Notification import android.app.Notification.BubbleMetadata import android.app.Notification.CATEGORY_ALARM import android.app.Notification.CATEGORY_CAR_EMERGENCY import android.app.Notification.CATEGORY_CAR_WARNING import android.app.Notification.CATEGORY_EVENT import android.app.Notification.CATEGORY_REMINDER import android.app.Notification.VISIBILITY_PRIVATE Loading @@ -42,6 +45,7 @@ import android.provider.Settings.Global.HEADS_UP_OFF import android.service.notification.Flags import com.android.internal.logging.UiEvent import com.android.internal.logging.UiEventLogger import com.android.internal.logging.UiEventLogger.UiEventEnum.RESERVE_NEW_UI_EVENT_ID import com.android.internal.messages.nano.SystemMessageProto.SystemMessage import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.plugins.statusbar.StatusBarStateController Loading Loading @@ -307,6 +311,9 @@ class AvalancheSuppressor( ALLOW_CALLSTYLE, ALLOW_CATEGORY_REMINDER, ALLOW_CATEGORY_EVENT, ALLOW_CATEGORY_ALARM, ALLOW_CATEGORY_CAR_EMERGENCY, ALLOW_CATEGORY_CAR_WARNING, ALLOW_FSI_WITH_PERMISSION_ON, ALLOW_COLORIZED, ALLOW_EMERGENCY, Loading @@ -333,8 +340,13 @@ class AvalancheSuppressor( @UiEvent(doc = "HUN allowed during avalanche because it is colorized.") AVALANCHE_SUPPRESSOR_HUN_ALLOWED_COLORIZED(1832), @UiEvent(doc = "HUN allowed during avalanche because it is an emergency notification.") AVALANCHE_SUPPRESSOR_HUN_ALLOWED_EMERGENCY(1833); AVALANCHE_SUPPRESSOR_HUN_ALLOWED_EMERGENCY(1833), @UiEvent(doc = "HUN allowed during avalanche because it is an alarm.") AVALANCHE_SUPPRESSOR_HUN_ALLOWED_CATEGORY_ALARM(1867), @UiEvent(doc = "HUN allowed during avalanche because it is a car emergency.") AVALANCHE_SUPPRESSOR_HUN_ALLOWED_CATEGORY_CAR_EMERGENCY(1868), @UiEvent(doc = "HUN allowed during avalanche because it is a car warning") AVALANCHE_SUPPRESSOR_HUN_ALLOWED_CATEGORY_CAR_WARNING(1869); override fun getId(): Int { return id } Loading Loading @@ -423,6 +435,22 @@ class AvalancheSuppressor( return State.ALLOW_CATEGORY_REMINDER } if (entry.sbn.notification.category == CATEGORY_ALARM) { uiEventLogger.log(AvalancheEvent.AVALANCHE_SUPPRESSOR_HUN_ALLOWED_CATEGORY_ALARM) return State.ALLOW_CATEGORY_ALARM } if (entry.sbn.notification.category == CATEGORY_CAR_EMERGENCY) { uiEventLogger.log( AvalancheEvent.AVALANCHE_SUPPRESSOR_HUN_ALLOWED_CATEGORY_CAR_EMERGENCY) return State.ALLOW_CATEGORY_CAR_EMERGENCY } if (entry.sbn.notification.category == CATEGORY_CAR_WARNING) { uiEventLogger.log(AvalancheEvent.AVALANCHE_SUPPRESSOR_HUN_ALLOWED_CATEGORY_CAR_WARNING) return State.ALLOW_CATEGORY_CAR_WARNING } if (entry.sbn.notification.category == CATEGORY_EVENT) { uiEventLogger.log(AvalancheEvent.AVALANCHE_SUPPRESSOR_HUN_ALLOWED_CATEGORY_EVENT) return State.ALLOW_CATEGORY_EVENT Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/VisualInterruptionDecisionProviderImplTest.kt +58 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,9 @@ package com.android.systemui.statusbar.notification.interruption import android.Manifest.permission import android.app.Notification.CATEGORY_ALARM import android.app.Notification.CATEGORY_CAR_EMERGENCY import android.app.Notification.CATEGORY_CAR_WARNING import android.app.Notification.CATEGORY_EVENT import android.app.Notification.CATEGORY_REMINDER import android.app.NotificationManager Loading Loading @@ -255,6 +258,61 @@ class VisualInterruptionDecisionProviderImplTest : VisualInterruptionDecisionPro } } @Test fun testAvalancheFilter_duringAvalanche_allowCategoryAlarm() { avalancheProvider.startTime = whenAgo(10) withFilter( AvalancheSuppressor(avalancheProvider, systemClock, settingsInteractor, packageManager, uiEventLogger, context, notificationManager) ) { ensurePeekState() assertShouldHeadsUp( buildEntry { importance = NotificationManager.IMPORTANCE_HIGH category = CATEGORY_ALARM } ) } } @Test fun testAvalancheFilter_duringAvalanche_allowCategoryCarEmergency() { avalancheProvider.startTime = whenAgo(10) withFilter( AvalancheSuppressor(avalancheProvider, systemClock, settingsInteractor, packageManager, uiEventLogger, context, notificationManager) ) { ensurePeekState() assertShouldHeadsUp( buildEntry { importance = NotificationManager.IMPORTANCE_HIGH category = CATEGORY_CAR_EMERGENCY } ) } } @Test fun testAvalancheFilter_duringAvalanche_allowCategoryCarWarning() { avalancheProvider.startTime = whenAgo(10) withFilter( AvalancheSuppressor(avalancheProvider, systemClock, settingsInteractor, packageManager, uiEventLogger, context, notificationManager) ) { ensurePeekState() assertShouldHeadsUp( buildEntry { importance = NotificationManager.IMPORTANCE_HIGH category = CATEGORY_CAR_WARNING } ) } } @Test fun testAvalancheFilter_duringAvalanche_allowFsi() { avalancheProvider.startTime = whenAgo(10) Loading