Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinator.kt +5 −5 Original line number Diff line number Diff line Loading @@ -37,8 +37,8 @@ import com.android.systemui.statusbar.notification.collection.coordinator.dagger import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener import com.android.systemui.statusbar.notification.collection.provider.SectionHeaderVisibilityProvider import com.android.systemui.statusbar.notification.collection.provider.SeenNotificationsProviderImpl import com.android.systemui.statusbar.notification.interruption.KeyguardNotificationVisibilityProvider import com.android.systemui.statusbar.notification.stack.domain.interactor.NotificationListInteractor import com.android.systemui.statusbar.policy.HeadsUpManager import com.android.systemui.statusbar.policy.headsUpEvents import com.android.systemui.util.asIndenting Loading Loading @@ -85,7 +85,7 @@ constructor( @Application private val scope: CoroutineScope, private val sectionHeaderVisibilityProvider: SectionHeaderVisibilityProvider, private val secureSettings: SecureSettings, private val seenNotifsProvider: SeenNotificationsProviderImpl, private val notificationListInteractor: NotificationListInteractor, private val statusBarStateController: StatusBarStateController, ) : Coordinator, Dumpable { Loading Loading @@ -351,7 +351,7 @@ constructor( override fun onCleanup() { logger.logProviderHasFilteredOutSeenNotifs(hasFilteredAnyNotifs) seenNotifsProvider.hasFilteredOutSeenNotifications = hasFilteredAnyNotifs notificationListInteractor.setHasFilteredOutSeenNotifications(hasFilteredAnyNotifs) hasFilteredAnyNotifs = false } } Loading Loading @@ -388,8 +388,8 @@ constructor( override fun dump(pw: PrintWriter, args: Array<out String>) = with(pw.asIndenting()) { println( "seenNotifsProvider.hasFilteredOutSeenNotifications=" + seenNotifsProvider.hasFilteredOutSeenNotifications "notificationListInteractor.hasFilteredOutSeenNotifications.value=" + notificationListInteractor.hasFilteredOutSeenNotifications.value ) println("unseen notifications:") indentIfPossible { Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java +0 −2 Original line number Diff line number Diff line Loading @@ -45,7 +45,6 @@ import com.android.systemui.statusbar.notification.collection.notifcollection.Co import com.android.systemui.statusbar.notification.collection.provider.NotificationDismissibilityProvider; import com.android.systemui.statusbar.notification.collection.provider.NotificationDismissibilityProviderImpl; import com.android.systemui.statusbar.notification.collection.provider.NotificationVisibilityProviderImpl; import com.android.systemui.statusbar.notification.collection.provider.SeenNotificationsProviderModule; import com.android.systemui.statusbar.notification.collection.provider.VisibilityLocationProviderDelegator; import com.android.systemui.statusbar.notification.collection.render.GroupExpansionManager; import com.android.systemui.statusbar.notification.collection.render.GroupExpansionManagerImpl; Loading Loading @@ -95,7 +94,6 @@ import javax.inject.Provider; @Module(includes = { CoordinatorsModule.class, KeyguardNotificationVisibilityProviderModule.class, SeenNotificationsProviderModule.class, ShadeEventsModule.class, NotifPipelineChoreographerModule.class, NotificationSectionHeadersModule.class, Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java +5 −5 Original line number Diff line number Diff line Loading @@ -99,7 +99,6 @@ import com.android.systemui.statusbar.notification.collection.PipelineDumper; import com.android.systemui.statusbar.notification.collection.notifcollection.DismissedByUserStats; import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener; import com.android.systemui.statusbar.notification.collection.provider.NotificationDismissibilityProvider; import com.android.systemui.statusbar.notification.collection.provider.SeenNotificationsProvider; import com.android.systemui.statusbar.notification.collection.provider.VisibilityLocationProviderDelegator; import com.android.systemui.statusbar.notification.collection.render.GroupExpansionManager; import com.android.systemui.statusbar.notification.collection.render.NotifStackController; Loading @@ -115,6 +114,7 @@ import com.android.systemui.statusbar.notification.row.ExpandableView; import com.android.systemui.statusbar.notification.row.NotificationGuts; import com.android.systemui.statusbar.notification.row.NotificationGutsManager; import com.android.systemui.statusbar.notification.row.NotificationSnooze; import com.android.systemui.statusbar.notification.stack.domain.interactor.NotificationListInteractor; import com.android.systemui.statusbar.notification.stack.ui.viewbinder.NotificationListViewBinder; import com.android.systemui.statusbar.notification.stack.ui.viewmodel.NotificationListViewModel; import com.android.systemui.statusbar.phone.HeadsUpAppearanceController; Loading Loading @@ -194,7 +194,7 @@ public class NotificationStackScrollLayoutController { private final GroupExpansionManager mGroupExpansionManager; private final NotifPipelineFlags mNotifPipelineFlags; private final SeenNotificationsProvider mSeenNotificationsProvider; private final NotificationListInteractor mNotificationListInteractor; private final KeyguardTransitionRepository mKeyguardTransitionRepo; private NotificationStackScrollLayout mView; Loading Loading @@ -662,7 +662,7 @@ public class NotificationStackScrollLayoutController { UiEventLogger uiEventLogger, NotificationRemoteInputManager remoteInputManager, VisibilityLocationProviderDelegator visibilityLocationProviderDelegator, SeenNotificationsProvider seenNotificationsProvider, NotificationListInteractor notificationListInteractor, ShadeController shadeController, InteractionJankMonitor jankMonitor, StackStateLogger stackLogger, Loading Loading @@ -715,7 +715,7 @@ public class NotificationStackScrollLayoutController { mUiEventLogger = uiEventLogger; mRemoteInputManager = remoteInputManager; mVisibilityLocationProviderDelegator = visibilityLocationProviderDelegator; mSeenNotificationsProvider = seenNotificationsProvider; mNotificationListInteractor = notificationListInteractor; mShadeController = shadeController; mNotifIconAreaController = notifIconAreaController; mFeatureFlags = featureFlags; Loading Loading @@ -2006,7 +2006,7 @@ public class NotificationStackScrollLayoutController { public void setNotifStats(@NonNull NotifStats notifStats) { mNotifStats = notifStats; mView.setHasFilteredOutSeenNotifications( mSeenNotificationsProvider.getHasFilteredOutSeenNotifications()); mNotificationListInteractor.getHasFilteredOutSeenNotifications().getValue()); updateFooter(); updateShowEmptyShadeView(); } Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/data/repository/NotificationListRepository.kt 0 → 100644 +35 −0 Original line number Diff line number Diff line /* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.systemui.statusbar.notification.stack.data.repository import com.android.systemui.dagger.SysUISingleton import javax.inject.Inject import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow /** Repository for information about the current notification list. */ @SysUISingleton class NotificationListRepository @Inject constructor() { private val _hasFilteredOutSeenNotifications = MutableStateFlow(false) val hasFilteredOutSeenNotifications: StateFlow<Boolean> = _hasFilteredOutSeenNotifications.asStateFlow() fun setHasFilteredOutSeenNotifications(value: Boolean) { _hasFilteredOutSeenNotifications.value = value } } packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/SeenNotificationsProvider.kt→packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/domain/interactor/NotificationListInteractor.kt +38 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 The Android Open Source Project * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Loading @@ -14,28 +14,25 @@ * limitations under the License. */ package com.android.systemui.statusbar.notification.collection.provider package com.android.systemui.statusbar.notification.stack.domain.interactor import com.android.systemui.dagger.SysUISingleton import dagger.Binds import dagger.Module import com.android.systemui.statusbar.notification.stack.data.repository.NotificationListRepository import javax.inject.Inject import kotlinx.coroutines.flow.StateFlow /** Keeps track of whether "seen" notification content has been filtered out of the shade. */ interface SeenNotificationsProvider { /** Interactor for business logic associated with the notification stack. */ @SysUISingleton class NotificationListInteractor @Inject constructor( private val notificationListRepository: NotificationListRepository, ) { /** Are any already-seen notifications currently filtered out of the shade? */ val hasFilteredOutSeenNotifications: Boolean } val hasFilteredOutSeenNotifications: StateFlow<Boolean> get() = notificationListRepository.hasFilteredOutSeenNotifications @Module interface SeenNotificationsProviderModule { @Binds fun bindSeenNotificationsProvider( impl: SeenNotificationsProviderImpl ): SeenNotificationsProvider fun setHasFilteredOutSeenNotifications(value: Boolean) { notificationListRepository.setHasFilteredOutSeenNotifications(value) } @SysUISingleton class SeenNotificationsProviderImpl @Inject constructor() : SeenNotificationsProvider { override var hasFilteredOutSeenNotifications: Boolean = false } Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinator.kt +5 −5 Original line number Diff line number Diff line Loading @@ -37,8 +37,8 @@ import com.android.systemui.statusbar.notification.collection.coordinator.dagger import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener import com.android.systemui.statusbar.notification.collection.provider.SectionHeaderVisibilityProvider import com.android.systemui.statusbar.notification.collection.provider.SeenNotificationsProviderImpl import com.android.systemui.statusbar.notification.interruption.KeyguardNotificationVisibilityProvider import com.android.systemui.statusbar.notification.stack.domain.interactor.NotificationListInteractor import com.android.systemui.statusbar.policy.HeadsUpManager import com.android.systemui.statusbar.policy.headsUpEvents import com.android.systemui.util.asIndenting Loading Loading @@ -85,7 +85,7 @@ constructor( @Application private val scope: CoroutineScope, private val sectionHeaderVisibilityProvider: SectionHeaderVisibilityProvider, private val secureSettings: SecureSettings, private val seenNotifsProvider: SeenNotificationsProviderImpl, private val notificationListInteractor: NotificationListInteractor, private val statusBarStateController: StatusBarStateController, ) : Coordinator, Dumpable { Loading Loading @@ -351,7 +351,7 @@ constructor( override fun onCleanup() { logger.logProviderHasFilteredOutSeenNotifs(hasFilteredAnyNotifs) seenNotifsProvider.hasFilteredOutSeenNotifications = hasFilteredAnyNotifs notificationListInteractor.setHasFilteredOutSeenNotifications(hasFilteredAnyNotifs) hasFilteredAnyNotifs = false } } Loading Loading @@ -388,8 +388,8 @@ constructor( override fun dump(pw: PrintWriter, args: Array<out String>) = with(pw.asIndenting()) { println( "seenNotifsProvider.hasFilteredOutSeenNotifications=" + seenNotifsProvider.hasFilteredOutSeenNotifications "notificationListInteractor.hasFilteredOutSeenNotifications.value=" + notificationListInteractor.hasFilteredOutSeenNotifications.value ) println("unseen notifications:") indentIfPossible { Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java +0 −2 Original line number Diff line number Diff line Loading @@ -45,7 +45,6 @@ import com.android.systemui.statusbar.notification.collection.notifcollection.Co import com.android.systemui.statusbar.notification.collection.provider.NotificationDismissibilityProvider; import com.android.systemui.statusbar.notification.collection.provider.NotificationDismissibilityProviderImpl; import com.android.systemui.statusbar.notification.collection.provider.NotificationVisibilityProviderImpl; import com.android.systemui.statusbar.notification.collection.provider.SeenNotificationsProviderModule; import com.android.systemui.statusbar.notification.collection.provider.VisibilityLocationProviderDelegator; import com.android.systemui.statusbar.notification.collection.render.GroupExpansionManager; import com.android.systemui.statusbar.notification.collection.render.GroupExpansionManagerImpl; Loading Loading @@ -95,7 +94,6 @@ import javax.inject.Provider; @Module(includes = { CoordinatorsModule.class, KeyguardNotificationVisibilityProviderModule.class, SeenNotificationsProviderModule.class, ShadeEventsModule.class, NotifPipelineChoreographerModule.class, NotificationSectionHeadersModule.class, Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java +5 −5 Original line number Diff line number Diff line Loading @@ -99,7 +99,6 @@ import com.android.systemui.statusbar.notification.collection.PipelineDumper; import com.android.systemui.statusbar.notification.collection.notifcollection.DismissedByUserStats; import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener; import com.android.systemui.statusbar.notification.collection.provider.NotificationDismissibilityProvider; import com.android.systemui.statusbar.notification.collection.provider.SeenNotificationsProvider; import com.android.systemui.statusbar.notification.collection.provider.VisibilityLocationProviderDelegator; import com.android.systemui.statusbar.notification.collection.render.GroupExpansionManager; import com.android.systemui.statusbar.notification.collection.render.NotifStackController; Loading @@ -115,6 +114,7 @@ import com.android.systemui.statusbar.notification.row.ExpandableView; import com.android.systemui.statusbar.notification.row.NotificationGuts; import com.android.systemui.statusbar.notification.row.NotificationGutsManager; import com.android.systemui.statusbar.notification.row.NotificationSnooze; import com.android.systemui.statusbar.notification.stack.domain.interactor.NotificationListInteractor; import com.android.systemui.statusbar.notification.stack.ui.viewbinder.NotificationListViewBinder; import com.android.systemui.statusbar.notification.stack.ui.viewmodel.NotificationListViewModel; import com.android.systemui.statusbar.phone.HeadsUpAppearanceController; Loading Loading @@ -194,7 +194,7 @@ public class NotificationStackScrollLayoutController { private final GroupExpansionManager mGroupExpansionManager; private final NotifPipelineFlags mNotifPipelineFlags; private final SeenNotificationsProvider mSeenNotificationsProvider; private final NotificationListInteractor mNotificationListInteractor; private final KeyguardTransitionRepository mKeyguardTransitionRepo; private NotificationStackScrollLayout mView; Loading Loading @@ -662,7 +662,7 @@ public class NotificationStackScrollLayoutController { UiEventLogger uiEventLogger, NotificationRemoteInputManager remoteInputManager, VisibilityLocationProviderDelegator visibilityLocationProviderDelegator, SeenNotificationsProvider seenNotificationsProvider, NotificationListInteractor notificationListInteractor, ShadeController shadeController, InteractionJankMonitor jankMonitor, StackStateLogger stackLogger, Loading Loading @@ -715,7 +715,7 @@ public class NotificationStackScrollLayoutController { mUiEventLogger = uiEventLogger; mRemoteInputManager = remoteInputManager; mVisibilityLocationProviderDelegator = visibilityLocationProviderDelegator; mSeenNotificationsProvider = seenNotificationsProvider; mNotificationListInteractor = notificationListInteractor; mShadeController = shadeController; mNotifIconAreaController = notifIconAreaController; mFeatureFlags = featureFlags; Loading Loading @@ -2006,7 +2006,7 @@ public class NotificationStackScrollLayoutController { public void setNotifStats(@NonNull NotifStats notifStats) { mNotifStats = notifStats; mView.setHasFilteredOutSeenNotifications( mSeenNotificationsProvider.getHasFilteredOutSeenNotifications()); mNotificationListInteractor.getHasFilteredOutSeenNotifications().getValue()); updateFooter(); updateShowEmptyShadeView(); } Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/data/repository/NotificationListRepository.kt 0 → 100644 +35 −0 Original line number Diff line number Diff line /* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.systemui.statusbar.notification.stack.data.repository import com.android.systemui.dagger.SysUISingleton import javax.inject.Inject import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow /** Repository for information about the current notification list. */ @SysUISingleton class NotificationListRepository @Inject constructor() { private val _hasFilteredOutSeenNotifications = MutableStateFlow(false) val hasFilteredOutSeenNotifications: StateFlow<Boolean> = _hasFilteredOutSeenNotifications.asStateFlow() fun setHasFilteredOutSeenNotifications(value: Boolean) { _hasFilteredOutSeenNotifications.value = value } }
packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/SeenNotificationsProvider.kt→packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/domain/interactor/NotificationListInteractor.kt +38 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 The Android Open Source Project * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Loading @@ -14,28 +14,25 @@ * limitations under the License. */ package com.android.systemui.statusbar.notification.collection.provider package com.android.systemui.statusbar.notification.stack.domain.interactor import com.android.systemui.dagger.SysUISingleton import dagger.Binds import dagger.Module import com.android.systemui.statusbar.notification.stack.data.repository.NotificationListRepository import javax.inject.Inject import kotlinx.coroutines.flow.StateFlow /** Keeps track of whether "seen" notification content has been filtered out of the shade. */ interface SeenNotificationsProvider { /** Interactor for business logic associated with the notification stack. */ @SysUISingleton class NotificationListInteractor @Inject constructor( private val notificationListRepository: NotificationListRepository, ) { /** Are any already-seen notifications currently filtered out of the shade? */ val hasFilteredOutSeenNotifications: Boolean } val hasFilteredOutSeenNotifications: StateFlow<Boolean> get() = notificationListRepository.hasFilteredOutSeenNotifications @Module interface SeenNotificationsProviderModule { @Binds fun bindSeenNotificationsProvider( impl: SeenNotificationsProviderImpl ): SeenNotificationsProvider fun setHasFilteredOutSeenNotifications(value: Boolean) { notificationListRepository.setHasFilteredOutSeenNotifications(value) } @SysUISingleton class SeenNotificationsProviderImpl @Inject constructor() : SeenNotificationsProvider { override var hasFilteredOutSeenNotifications: Boolean = false }