summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ioana Alexandru <aioana@google.com> 2024-11-13 10:29:59 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-11-13 10:29:59 +0000
commitae2d3b1079acc0967b70fb06073f423fd12b957f (patch)
treeb118e6da02a4d9a9b61e9ba1c183f3bddec1db37
parentc7ebd30233246ed09bd49f6436085799e6a89a0a (diff)
parentb54233e88a63c1e48c60875feb0c2b65c8412819 (diff)
Merge "Fix up kotlin files for footer inlining" into main
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/render/RenderStageManagerTest.kt71
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt129
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/DataStoreCoordinator.kt12
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/StackCoordinator.kt13
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NotifViewRenderer.kt28
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/RenderStageManager.kt25
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/data/repository/ActiveNotificationListRepository.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsController.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerImpl.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerStub.kt12
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/DataStoreCoordinatorTest.kt60
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/StackCoordinatorTest.kt146
12 files changed, 283 insertions, 219 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/render/RenderStageManagerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/render/RenderStageManagerTest.kt
index ca75ca679c31..a70d24efada7 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/render/RenderStageManagerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/render/RenderStageManagerTest.kt
@@ -28,43 +28,41 @@ import com.android.systemui.statusbar.notification.collection.ShadeListBuilder
import com.android.systemui.statusbar.notification.collection.listbuilder.OnAfterRenderEntryListener
import com.android.systemui.statusbar.notification.collection.listbuilder.OnAfterRenderGroupListener
import com.android.systemui.statusbar.notification.collection.listbuilder.OnAfterRenderListListener
-import com.android.systemui.util.mockito.any
-import com.android.systemui.util.mockito.mock
-import com.android.systemui.util.mockito.withArgCaptor
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-import org.mockito.Mock
-import org.mockito.Mockito.inOrder
-import org.mockito.Mockito.never
-import org.mockito.Mockito.spy
-import org.mockito.Mockito.times
-import org.mockito.Mockito.verify
-import org.mockito.Mockito.verifyNoMoreInteractions
-import org.mockito.MockitoAnnotations
+import org.mockito.kotlin.any
+import org.mockito.kotlin.argumentCaptor
+import org.mockito.kotlin.inOrder
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.never
+import org.mockito.kotlin.spy
+import org.mockito.kotlin.times
+import org.mockito.kotlin.verify
+import org.mockito.kotlin.verifyNoMoreInteractions
@SmallTest
@RunWith(AndroidJUnit4::class)
class RenderStageManagerTest : SysuiTestCase() {
- @Mock private lateinit var shadeListBuilder: ShadeListBuilder
- @Mock private lateinit var onAfterRenderListListener: OnAfterRenderListListener
- @Mock private lateinit var onAfterRenderGroupListener: OnAfterRenderGroupListener
- @Mock private lateinit var onAfterRenderEntryListener: OnAfterRenderEntryListener
+ private val shadeListBuilder: ShadeListBuilder = mock()
+ private val onAfterRenderListListener: OnAfterRenderListListener = mock()
+ private val onAfterRenderGroupListener: OnAfterRenderGroupListener = mock()
+ private val onAfterRenderEntryListener: OnAfterRenderEntryListener = mock()
+ private val spyViewRenderer = spy(FakeNotifViewRenderer())
private lateinit var onRenderListListener: ShadeListBuilder.OnRenderListListener
+
private lateinit var renderStageManager: RenderStageManager
- private val spyViewRenderer = spy(FakeNotifViewRenderer())
@Before
fun setUp() {
- MockitoAnnotations.initMocks(this)
-
renderStageManager = RenderStageManager()
renderStageManager.attach(shadeListBuilder)
- onRenderListListener = withArgCaptor {
- verify(shadeListBuilder).setOnRenderListListener(capture())
- }
+
+ val captor = argumentCaptor<ShadeListBuilder.OnRenderListListener>()
+ verify(shadeListBuilder).setOnRenderListListener(captor.capture())
+ onRenderListListener = captor.lastValue
}
private fun setUpRenderer() {
@@ -89,7 +87,7 @@ class RenderStageManagerTest : SysuiTestCase() {
verifyNoMoreInteractions(
onAfterRenderListListener,
onAfterRenderGroupListener,
- onAfterRenderEntryListener
+ onAfterRenderEntryListener,
)
}
@@ -171,7 +169,7 @@ class RenderStageManagerTest : SysuiTestCase() {
verifyNoMoreInteractions(
onAfterRenderListListener,
onAfterRenderGroupListener,
- onAfterRenderEntryListener
+ onAfterRenderEntryListener,
)
}
@@ -191,30 +189,27 @@ class RenderStageManagerTest : SysuiTestCase() {
verifyNoMoreInteractions(
onAfterRenderListListener,
onAfterRenderGroupListener,
- onAfterRenderEntryListener
+ onAfterRenderEntryListener,
)
}
- private fun listWith2Groups8Entries() = listOf(
- group(
- notif(1),
- notif(2),
- notif(3)
- ),
- notif(4),
- group(
- notif(5),
- notif(6),
- notif(7)
- ),
- notif(8)
- )
+ private fun listWith2Groups8Entries() =
+ listOf(
+ group(notif(1), notif(2), notif(3)),
+ notif(4),
+ group(notif(5), notif(6), notif(7)),
+ notif(8),
+ )
private class FakeNotifViewRenderer : NotifViewRenderer {
override fun onRenderList(notifList: List<ListEntry>) {}
+
override fun getStackController(): NotifStackController = mock()
+
override fun getGroupController(group: GroupEntry): NotifGroupController = mock()
+
override fun getRowController(entry: NotificationEntry): NotifRowController = mock()
+
override fun onDispatchComplete() {}
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt
index b2a485c48860..b877456ab604 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt
@@ -32,23 +32,19 @@ import com.android.systemui.statusbar.notification.row.ExpandableView
import com.android.systemui.statusbar.notification.shared.NotificationsImprovedHunAnimation
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager
import com.android.systemui.statusbar.policy.AvalancheController
-import com.android.systemui.util.mockito.mock
import com.google.common.truth.Expect
import com.google.common.truth.Truth.assertThat
-import junit.framework.Assert.assertEquals
-import junit.framework.Assert.assertFalse
-import junit.framework.Assert.assertTrue
import kotlinx.coroutines.ExperimentalCoroutinesApi
import org.junit.Assume
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
-import org.mockito.Mockito.any
-import org.mockito.Mockito.eq
-import org.mockito.Mockito.mock
-import org.mockito.Mockito.verify
-import org.mockito.Mockito.`when` as whenever
+import org.mockito.kotlin.any
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
@@ -846,7 +842,7 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
val viewStart = 0f
val shelfStart = 1f
- val expandableView = mock(ExpandableView::class.java)
+ val expandableView = mock<ExpandableView>()
whenever(expandableView.isExpandAnimationRunning).thenReturn(false)
whenever(expandableView.hasExpandingChild()).thenReturn(false)
@@ -854,7 +850,7 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
expandableViewState.yTranslation = viewStart
stackScrollAlgorithm.updateViewWithShelf(expandableView, expandableViewState, shelfStart)
- assertFalse(expandableViewState.hidden)
+ assertThat(expandableViewState.hidden).isFalse()
}
@Test
@@ -862,7 +858,7 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
val shelfStart = 0f
val viewStart = 1f
- val expandableView = mock(ExpandableView::class.java)
+ val expandableView = mock<ExpandableView>()
whenever(expandableView.isExpandAnimationRunning).thenReturn(false)
whenever(expandableView.hasExpandingChild()).thenReturn(false)
@@ -870,7 +866,7 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
expandableViewState.yTranslation = viewStart
stackScrollAlgorithm.updateViewWithShelf(expandableView, expandableViewState, shelfStart)
- assertTrue(expandableViewState.hidden)
+ assertThat(expandableViewState.hidden).isTrue()
}
@Test
@@ -878,7 +874,7 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
val shelfStart = 0f
val viewStart = 1f
- val expandableView = mock(ExpandableView::class.java)
+ val expandableView = mock<ExpandableView>()
whenever(expandableView.isExpandAnimationRunning).thenReturn(true)
whenever(expandableView.hasExpandingChild()).thenReturn(true)
@@ -886,7 +882,7 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
expandableViewState.yTranslation = viewStart
stackScrollAlgorithm.updateViewWithShelf(expandableView, expandableViewState, shelfStart)
- assertFalse(expandableViewState.hidden)
+ assertThat(expandableViewState.hidden).isFalse()
}
@Test
@@ -898,12 +894,12 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
expandableViewState,
/* isShadeExpanded= */ true,
/* mustStayOnScreen= */ true,
- /* isViewEndVisible= */ true,
+ /* topVisible = */ true,
/* viewEnd= */ 0f,
- /* maxHunY= */ 10f,
+ /* hunMax = */ 10f,
)
- assertTrue(expandableViewState.headsUpIsVisible)
+ assertThat(expandableViewState.headsUpIsVisible).isTrue()
}
@Test
@@ -915,12 +911,12 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
expandableViewState,
/* isShadeExpanded= */ true,
/* mustStayOnScreen= */ true,
- /* isViewEndVisible= */ true,
+ /* topVisible = */ true,
/* viewEnd= */ 10f,
- /* maxHunY= */ 0f,
+ /* hunMax = */ 0f,
)
- assertFalse(expandableViewState.headsUpIsVisible)
+ assertThat(expandableViewState.headsUpIsVisible).isFalse()
}
@Test
@@ -932,12 +928,12 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
expandableViewState,
/* isShadeExpanded= */ false,
/* mustStayOnScreen= */ true,
- /* isViewEndVisible= */ true,
+ /* topVisible = */ true,
/* viewEnd= */ 10f,
- /* maxHunY= */ 1f,
+ /* hunMax = */ 1f,
)
- assertTrue(expandableViewState.headsUpIsVisible)
+ assertThat(expandableViewState.headsUpIsVisible).isTrue()
}
@Test
@@ -949,12 +945,12 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
expandableViewState,
/* isShadeExpanded= */ true,
/* mustStayOnScreen= */ false,
- /* isViewEndVisible= */ true,
+ /* topVisible = */ true,
/* viewEnd= */ 10f,
- /* maxHunY= */ 1f,
+ /* hunMax = */ 1f,
)
- assertTrue(expandableViewState.headsUpIsVisible)
+ assertThat(expandableViewState.headsUpIsVisible).isTrue()
}
@Test
@@ -966,12 +962,12 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
expandableViewState,
/* isShadeExpanded= */ true,
/* mustStayOnScreen= */ true,
- /* isViewEndVisible= */ false,
+ /* topVisible = */ false,
/* viewEnd= */ 10f,
- /* maxHunY= */ 1f,
+ /* hunMax = */ 1f,
)
- assertTrue(expandableViewState.headsUpIsVisible)
+ assertThat(expandableViewState.headsUpIsVisible).isTrue()
}
@Test
@@ -986,7 +982,7 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
)
// qqs (10 + 0) < viewY (50)
- assertEquals(50f, expandableViewState.yTranslation)
+ assertThat(expandableViewState.yTranslation).isEqualTo(50f)
}
@Test
@@ -1001,7 +997,7 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
)
// qqs (10 + 0) > viewY (-10)
- assertEquals(10f, expandableViewState.yTranslation)
+ assertThat(expandableViewState.yTranslation).isEqualTo(10f)
}
@Test
@@ -1019,7 +1015,7 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
// newTranslation = max(10, -100) = 10
// distToRealY = 10 - (-100f) = 110
// height = max(20 - 110, 10f)
- assertEquals(10, expandableViewState.height)
+ assertThat(expandableViewState.height).isEqualTo(10)
}
@Test
@@ -1037,7 +1033,7 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
// newTranslation = max(10, 5) = 10
// distToRealY = 10 - 5 = 5
// height = max(20 - 5, 10) = 15
- assertEquals(15, expandableViewState.height)
+ assertThat(expandableViewState.height).isEqualTo(15)
}
@Test
@@ -1047,9 +1043,9 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
/* hostViewHeight= */ 100f,
/* stackY= */ 110f,
/* viewMaxHeight= */ 20f,
- /* originalCornerRoundness= */ 0f,
+ /* originalCornerRadius = */ 0f,
)
- assertEquals(1f, currentRoundness)
+ assertThat(currentRoundness).isEqualTo(1f)
}
@Test
@@ -1059,9 +1055,9 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
/* hostViewHeight= */ 100f,
/* stackY= */ 90f,
/* viewMaxHeight= */ 20f,
- /* originalCornerRoundness= */ 0f,
+ /* originalCornerRadius = */ 0f,
)
- assertEquals(0.5f, currentRoundness)
+ assertThat(currentRoundness).isEqualTo(0.5f)
}
@Test
@@ -1071,9 +1067,9 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
/* hostViewHeight= */ 100f,
/* stackY= */ 0f,
/* viewMaxHeight= */ 20f,
- /* originalCornerRoundness= */ 0f,
+ /* originalCornerRadius = */ 0f,
)
- assertEquals(0f, currentRoundness)
+ assertThat(currentRoundness).isZero()
}
@Test
@@ -1083,9 +1079,9 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
/* hostViewHeight= */ 100f,
/* stackY= */ 0f,
/* viewMaxHeight= */ 20f,
- /* originalCornerRoundness= */ 1f,
+ /* originalCornerRadius = */ 1f,
)
- assertEquals(1f, currentRoundness)
+ assertThat(currentRoundness).isEqualTo(1f)
}
@Test
@@ -1105,13 +1101,14 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
stackScrollAlgorithm.updateChildZValue(
/* i= */ 0,
/* childrenOnTop= */ 0.0f,
- /* StackScrollAlgorithmState= */ algorithmState,
+ /* algorithmState = */ algorithmState,
/* ambientState= */ ambientState,
- /* shouldElevateHun= */ true,
+ /* isTopHun = */ true,
)
// Then: full shadow would be applied
- assertEquals(px(R.dimen.heads_up_pinned_elevation), childHunView.viewState.zTranslation)
+ assertThat(childHunView.viewState.zTranslation)
+ .isEqualTo(px(R.dimen.heads_up_pinned_elevation))
}
@Test
@@ -1133,9 +1130,9 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
stackScrollAlgorithm.updateChildZValue(
/* i= */ 0,
/* childrenOnTop= */ 0.0f,
- /* StackScrollAlgorithmState= */ algorithmState,
+ /* algorithmState = */ algorithmState,
/* ambientState= */ ambientState,
- /* shouldElevateHun= */ true,
+ /* isTopHun = */ true,
)
// Then: HUN should have shadow, but not as full size
@@ -1166,13 +1163,13 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
stackScrollAlgorithm.updateChildZValue(
/* i= */ 0,
/* childrenOnTop= */ 0.0f,
- /* StackScrollAlgorithmState= */ algorithmState,
+ /* algorithmState = */ algorithmState,
/* ambientState= */ ambientState,
- /* shouldElevateHun= */ true,
+ /* isTopHun = */ true,
)
// Then: HUN should not have shadow
- assertEquals(0f, childHunView.viewState.zTranslation)
+ assertThat(childHunView.viewState.zTranslation).isZero()
}
@Test
@@ -1195,13 +1192,14 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
stackScrollAlgorithm.updateChildZValue(
/* i= */ 0,
/* childrenOnTop= */ 0.0f,
- /* StackScrollAlgorithmState= */ algorithmState,
+ /* algorithmState = */ algorithmState,
/* ambientState= */ ambientState,
- /* shouldElevateHun= */ true,
+ /* isTopHun = */ true,
)
// Then: HUN should have full shadow
- assertEquals(px(R.dimen.heads_up_pinned_elevation), childHunView.viewState.zTranslation)
+ assertThat(childHunView.viewState.zTranslation)
+ .isEqualTo(px(R.dimen.heads_up_pinned_elevation))
}
@Test
@@ -1225,9 +1223,9 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
stackScrollAlgorithm.updateChildZValue(
/* i= */ 0,
/* childrenOnTop= */ 0.0f,
- /* StackScrollAlgorithmState= */ algorithmState,
+ /* algorithmState = */ algorithmState,
/* ambientState= */ ambientState,
- /* shouldElevateHun= */ true,
+ /* isTopHun = */ true,
)
// Then: HUN should have shadow, but not as full size
@@ -1251,7 +1249,7 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
stackScrollAlgorithm.updatePulsingStates(algorithmState, ambientState)
// Then: ambientState.pulsingRow should still be pulsingNotificationView
- assertTrue(ambientState.isPulsingRow(pulsingNotificationView))
+ assertThat(ambientState.isPulsingRow(pulsingNotificationView)).isTrue()
}
@Test
@@ -1268,7 +1266,7 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
stackScrollAlgorithm.updatePulsingStates(algorithmState, ambientState)
// Then: ambientState.pulsingRow should record the pulsingNotificationView
- assertTrue(ambientState.isPulsingRow(pulsingNotificationView))
+ assertThat(ambientState.isPulsingRow(pulsingNotificationView)).isTrue()
}
@Test
@@ -1287,7 +1285,7 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
stackScrollAlgorithm.updatePulsingStates(algorithmState, ambientState)
// Then: ambientState.pulsingRow should be null
- assertTrue(ambientState.isPulsingRow(null))
+ assertThat(ambientState.isPulsingRow(null)).isTrue()
}
@Test
@@ -1310,10 +1308,8 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
stackScrollAlgorithm.resetViewStates(ambientState, 0)
// Then: pulsingNotificationView should show at full height
- assertEquals(
- stackScrollAlgorithm.getMaxAllowedChildHeight(pulsingNotificationView),
- pulsingNotificationView.viewState.height,
- )
+ assertThat(pulsingNotificationView.viewState.height)
+ .isEqualTo(stackScrollAlgorithm.getMaxAllowedChildHeight(pulsingNotificationView))
// After: reset dozeAmount and expansionFraction
ambientState.dozeAmount = 0f
@@ -1418,7 +1414,7 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
yTranslation = ambientState.maxHeadsUpTranslation - height // move it to the max
}
- assertTrue(stackScrollAlgorithm.shouldHunAppearFromBottom(ambientState, viewState))
+ assertThat(stackScrollAlgorithm.shouldHunAppearFromBottom(ambientState, viewState)).isTrue()
}
@Test
@@ -1431,7 +1427,8 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
ambientState.maxHeadsUpTranslation - height - 1 // move it below the max
}
- assertFalse(stackScrollAlgorithm.shouldHunAppearFromBottom(ambientState, viewState))
+ assertThat(stackScrollAlgorithm.shouldHunAppearFromBottom(ambientState, viewState))
+ .isFalse()
}
// endregion
@@ -1579,13 +1576,13 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
}
private fun mockExpandableNotificationRow(): ExpandableNotificationRow {
- return mock(ExpandableNotificationRow::class.java).apply {
+ return mock<ExpandableNotificationRow>().apply {
whenever(viewState).thenReturn(ExpandableViewState())
}
}
private fun mockFooterView(height: Int): FooterView {
- return mock(FooterView::class.java).apply {
+ return mock<FooterView>().apply {
whenever(viewState).thenReturn(FooterViewState())
whenever(intrinsicHeight).thenReturn(height)
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/DataStoreCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/DataStoreCoordinator.kt
index dc8ff63865a2..90212ed5b5f7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/DataStoreCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/DataStoreCoordinator.kt
@@ -27,13 +27,13 @@ import com.android.systemui.statusbar.notification.collection.render.requireSumm
import javax.inject.Inject
/**
- * A small coordinator which updates the notif stack (the view layer which holds notifications)
- * with high-level data after the stack is populated with the final entries.
+ * A small coordinator which updates the notif stack (the view layer which holds notifications) with
+ * high-level data after the stack is populated with the final entries.
*/
@CoordinatorScope
-class DataStoreCoordinator @Inject internal constructor(
- private val notifLiveDataStoreImpl: NotifLiveDataStoreImpl
-) : CoreCoordinator {
+class DataStoreCoordinator
+@Inject
+internal constructor(private val notifLiveDataStoreImpl: NotifLiveDataStoreImpl) : CoreCoordinator {
override fun attach(pipeline: NotifPipeline) {
pipeline.addOnAfterRenderListListener { entries, _ -> onAfterRenderList(entries) }
@@ -61,4 +61,4 @@ class DataStoreCoordinator @Inject internal constructor(
}
}
}
-} \ No newline at end of file
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/StackCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/StackCoordinator.kt
index e9292f8c3cb8..32de65be5b5b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/StackCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/StackCoordinator.kt
@@ -43,8 +43,7 @@ internal constructor(
private val groupExpansionManagerImpl: GroupExpansionManagerImpl,
private val renderListInteractor: RenderNotificationListInteractor,
private val activeNotificationsInteractor: ActiveNotificationsInteractor,
- private val sensitiveNotificationProtectionController:
- SensitiveNotificationProtectionController,
+ private val sensitiveNotificationProtectionController: SensitiveNotificationProtectionController,
) : Coordinator {
override fun attach(pipeline: NotifPipeline) {
@@ -52,7 +51,7 @@ internal constructor(
groupExpansionManagerImpl.attach(pipeline)
}
- fun onAfterRenderList(entries: List<ListEntry>, controller: NotifStackController) =
+ private fun onAfterRenderList(entries: List<ListEntry>, controller: NotifStackController) =
traceSection("StackCoordinator.onAfterRenderList") {
val notifStats = calculateNotifStats(entries)
if (FooterViewRefactor.isEnabled) {
@@ -78,13 +77,13 @@ internal constructor(
val isSilent = section.bucket == BUCKET_SILENT
// NOTE: NotificationEntry.isClearable will internally check group children to ensure
// the group itself definitively clearable.
- val isClearable = !isSensitiveContentProtectionActive && entry.isClearable
- && !entry.isSensitive.value
+ val isClearable =
+ !isSensitiveContentProtectionActive && entry.isClearable && !entry.isSensitive.value
when {
isSilent && isClearable -> hasClearableSilentNotifs = true
isSilent && !isClearable -> hasNonClearableSilentNotifs = true
!isSilent && isClearable -> hasClearableAlertingNotifs = true
- !isSilent && !isClearable -> hasNonClearableAlertingNotifs = true
+ else -> hasNonClearableAlertingNotifs = true
}
}
return NotifStats(
@@ -92,7 +91,7 @@ internal constructor(
hasNonClearableAlertingNotifs = hasNonClearableAlertingNotifs,
hasClearableAlertingNotifs = hasClearableAlertingNotifs,
hasNonClearableSilentNotifs = hasNonClearableSilentNotifs,
- hasClearableSilentNotifs = hasClearableSilentNotifs
+ hasClearableSilentNotifs = hasClearableSilentNotifs,
)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NotifViewRenderer.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NotifViewRenderer.kt
index 1ea574b2f386..410b78b9d3bf 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NotifViewRenderer.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NotifViewRenderer.kt
@@ -21,15 +21,15 @@ import com.android.systemui.statusbar.notification.collection.ListEntry
import com.android.systemui.statusbar.notification.collection.NotificationEntry
/**
- * This interface and the interfaces it returns define the main API surface that must be
- * implemented by the view implementation. The term "render" is used to indicate a handoff
- * to the view system, whether that be to attach views to the hierarchy or to update independent
- * view models, data stores, or adapters.
+ * This interface and the interfaces it returns define the main API surface that must be implemented
+ * by the view implementation. The term "render" is used to indicate a handoff to the view system,
+ * whether that be to attach views to the hierarchy or to update independent view models, data
+ * stores, or adapters.
*/
interface NotifViewRenderer {
/**
- * Hand off the list of notifications to the view implementation. This may attach views to the
+ * Hand off the list of notifications to the view implementation. This may attach views to the
* hierarchy or simply update an independent datastore, but once called, the implementer myst
* also ensure that future calls to [getStackController], [getGroupController], and
* [getRowController] will provide valid results.
@@ -37,21 +37,21 @@ interface NotifViewRenderer {
fun onRenderList(notifList: List<ListEntry>)
/**
- * Provides an interface for the pipeline to update the overall shade.
- * This will be called at most once for each time [onRenderList] is called.
+ * Provides an interface for the pipeline to update the overall shade. This will be called at
+ * most once for each time [onRenderList] is called.
*/
fun getStackController(): NotifStackController
/**
- * Provides an interface for the pipeline to update individual groups.
- * This will be called at most once for each group in the most recent call to [onRenderList].
+ * Provides an interface for the pipeline to update individual groups. This will be called at
+ * most once for each group in the most recent call to [onRenderList].
*/
fun getGroupController(group: GroupEntry): NotifGroupController
/**
- * Provides an interface for the pipeline to update individual entries.
- * This will be called at most once for each entry in the most recent call to [onRenderList].
- * This includes top level entries, group summaries, and group children.
+ * Provides an interface for the pipeline to update individual entries. This will be called at
+ * most once for each entry in the most recent call to [onRenderList]. This includes top level
+ * entries, group summaries, and group children.
*/
fun getRowController(entry: NotificationEntry): NotifRowController
@@ -62,8 +62,8 @@ interface NotifViewRenderer {
* logic now that all data from the pipeline is known to have been set for this execution.
*
* When this is called, the view system can expect that no more calls will be made to the
- * getters on this interface until after the next call to [onRenderList]. Additionally, there
+ * getters on this interface until after the next call to [onRenderList]. Additionally, there
* should be no further calls made on the objects previously returned by those getters.
*/
fun onDispatchComplete() {}
-} \ No newline at end of file
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/RenderStageManager.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/RenderStageManager.kt
index 9b5521018f97..9d3b098fa966 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/RenderStageManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/RenderStageManager.kt
@@ -16,6 +16,7 @@
package com.android.systemui.statusbar.notification.collection.render
+import com.android.app.tracing.traceSection
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.statusbar.notification.collection.GroupEntry
import com.android.systemui.statusbar.notification.collection.ListEntry
@@ -26,7 +27,6 @@ import com.android.systemui.statusbar.notification.collection.ShadeListBuilder
import com.android.systemui.statusbar.notification.collection.listbuilder.OnAfterRenderEntryListener
import com.android.systemui.statusbar.notification.collection.listbuilder.OnAfterRenderGroupListener
import com.android.systemui.statusbar.notification.collection.listbuilder.OnAfterRenderListListener
-import com.android.app.tracing.traceSection
import javax.inject.Inject
/**
@@ -77,16 +77,17 @@ class RenderStageManager @Inject constructor() : PipelineDumpable {
onAfterRenderEntryListeners.add(listener)
}
- override fun dumpPipeline(d: PipelineDumper) = with(d) {
- dump("viewRenderer", viewRenderer)
- dump("onAfterRenderListListeners", onAfterRenderListListeners)
- dump("onAfterRenderGroupListeners", onAfterRenderGroupListeners)
- dump("onAfterRenderEntryListeners", onAfterRenderEntryListeners)
- }
+ override fun dumpPipeline(d: PipelineDumper) =
+ with(d) {
+ dump("viewRenderer", viewRenderer)
+ dump("onAfterRenderListListeners", onAfterRenderListListeners)
+ dump("onAfterRenderGroupListeners", onAfterRenderGroupListeners)
+ dump("onAfterRenderEntryListeners", onAfterRenderEntryListeners)
+ }
private fun dispatchOnAfterRenderList(
viewRenderer: NotifViewRenderer,
- entries: List<ListEntry>
+ entries: List<ListEntry>,
) {
traceSection("RenderStageManager.dispatchOnAfterRenderList") {
val stackController = viewRenderer.getStackController()
@@ -98,7 +99,7 @@ class RenderStageManager @Inject constructor() : PipelineDumpable {
private fun dispatchOnAfterRenderGroups(
viewRenderer: NotifViewRenderer,
- entries: List<ListEntry>
+ entries: List<ListEntry>,
) {
traceSection("RenderStageManager.dispatchOnAfterRenderGroups") {
if (onAfterRenderGroupListeners.isEmpty()) {
@@ -115,7 +116,7 @@ class RenderStageManager @Inject constructor() : PipelineDumpable {
private fun dispatchOnAfterRenderEntries(
viewRenderer: NotifViewRenderer,
- entries: List<ListEntry>
+ entries: List<ListEntry>,
) {
traceSection("RenderStageManager.dispatchOnAfterRenderEntries") {
if (onAfterRenderEntryListeners.isEmpty()) {
@@ -131,8 +132,8 @@ class RenderStageManager @Inject constructor() : PipelineDumpable {
}
/**
- * Performs a forward, depth-first traversal of the list where the group's summary
- * immediately precedes the group's children.
+ * Performs a forward, depth-first traversal of the list where the group's summary immediately
+ * precedes the group's children.
*/
private inline fun List<ListEntry>.forEachNotificationEntry(
action: (NotificationEntry) -> Unit
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/data/repository/ActiveNotificationListRepository.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/data/repository/ActiveNotificationListRepository.kt
index 45d1034f2cfb..2b9e49372a63 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/data/repository/ActiveNotificationListRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/data/repository/ActiveNotificationListRepository.kt
@@ -66,7 +66,7 @@ data class ActiveNotificationsStore(
* Map of notification key to rank, where rank is the 0-based index of the notification on the
* system server, meaning that in the unfiltered flattened list of notification entries.
*/
- val rankingsMap: Map<String, Int> = emptyMap()
+ val rankingsMap: Map<String, Int> = emptyMap(),
) {
operator fun get(key: Key): ActiveNotificationEntryModel? {
return when (key) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsController.kt
index 76e228bb54d2..2c5d9c2e449b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsController.kt
@@ -38,6 +38,8 @@ interface NotificationsController {
)
fun resetUserExpandedStates()
+
fun setNotificationSnoozed(sbn: StatusBarNotification, snoozeOption: SnoozeOption)
+
fun getActiveNotificationsCount(): Int
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerImpl.kt
index 1677418c5c30..ea6a60bd7a1c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerImpl.kt
@@ -129,7 +129,7 @@ constructor(
} else {
notificationListener.snoozeNotification(
sbn.key,
- snoozeOption.minutesToSnoozeFor * 60 * 1000.toLong()
+ snoozeOption.minutesToSnoozeFor * 60 * 1000.toLong(),
)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerStub.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerStub.kt
index 65ba6de5b5cb..148b3f021643 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerStub.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerStub.kt
@@ -28,9 +28,9 @@ import javax.inject.Inject
/**
* Implementation of [NotificationsController] that's used when notifications rendering is disabled.
*/
-class NotificationsControllerStub @Inject constructor(
- private val notificationListener: NotificationListener
-) : NotificationsController {
+class NotificationsControllerStub
+@Inject
+constructor(private val notificationListener: NotificationListener) : NotificationsController {
override fun initialize(
presenter: NotificationPresenter,
@@ -43,11 +43,9 @@ class NotificationsControllerStub @Inject constructor(
notificationListener.registerAsSystemService()
}
- override fun resetUserExpandedStates() {
- }
+ override fun resetUserExpandedStates() {}
- override fun setNotificationSnoozed(sbn: StatusBarNotification, snoozeOption: SnoozeOption) {
- }
+ override fun setNotificationSnoozed(sbn: StatusBarNotification, snoozeOption: SnoozeOption) {}
override fun getActiveNotificationsCount(): Int {
return 0
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/DataStoreCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/DataStoreCoordinatorTest.kt
index e72109d4d8e3..a3c518128b47 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/DataStoreCoordinatorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/DataStoreCoordinatorTest.kt
@@ -27,16 +27,15 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntryB
import com.android.systemui.statusbar.notification.collection.listbuilder.NotifSection
import com.android.systemui.statusbar.notification.collection.listbuilder.OnAfterRenderListListener
import com.android.systemui.statusbar.notification.collection.render.NotifStackController
-import com.android.systemui.util.mockito.eq
import com.android.systemui.util.mockito.withArgCaptor
import com.google.common.truth.Truth.assertThat
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-import org.mockito.Mock
-import org.mockito.Mockito.verify
-import org.mockito.Mockito.verifyNoMoreInteractions
-import org.mockito.MockitoAnnotations.initMocks
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.verify
+import org.mockito.kotlin.verifyNoMoreInteractions
@SmallTest
@RunWith(AndroidJUnit4::class)
@@ -47,14 +46,13 @@ class DataStoreCoordinatorTest : SysuiTestCase() {
private lateinit var entry: NotificationEntry
- @Mock private lateinit var pipeline: NotifPipeline
- @Mock private lateinit var notifLiveDataStoreImpl: NotifLiveDataStoreImpl
- @Mock private lateinit var stackController: NotifStackController
- @Mock private lateinit var section: NotifSection
+ private val pipeline: NotifPipeline = mock()
+ private val notifLiveDataStoreImpl: NotifLiveDataStoreImpl = mock()
+ private val stackController: NotifStackController = mock()
+ private val section: NotifSection = mock()
@Before
fun setUp() {
- initMocks(this)
entry = NotificationEntryBuilder().setSection(section).build()
coordinator = DataStoreCoordinator(notifLiveDataStoreImpl)
coordinator.attach(pipeline)
@@ -76,31 +74,35 @@ class DataStoreCoordinatorTest : SysuiTestCase() {
listOf(
notificationEntry("foo", 1),
notificationEntry("foo", 2),
- GroupEntryBuilder().setSummary(
- notificationEntry("bar", 1)
- ).setChildren(
- listOf(
- notificationEntry("bar", 2),
- notificationEntry("bar", 3),
- notificationEntry("bar", 4)
+ GroupEntryBuilder()
+ .setSummary(notificationEntry("bar", 1))
+ .setChildren(
+ listOf(
+ notificationEntry("bar", 2),
+ notificationEntry("bar", 3),
+ notificationEntry("bar", 4),
+ )
)
- ).setSection(section).build(),
- notificationEntry("baz", 1)
+ .setSection(section)
+ .build(),
+ notificationEntry("baz", 1),
),
- stackController
+ stackController,
)
val list: List<NotificationEntry> = withArgCaptor {
verify(notifLiveDataStoreImpl).setActiveNotifList(capture())
}
- assertThat(list.map { it.key }).containsExactly(
- "0|foo|1|null|0",
- "0|foo|2|null|0",
- "0|bar|1|null|0",
- "0|bar|2|null|0",
- "0|bar|3|null|0",
- "0|bar|4|null|0",
- "0|baz|1|null|0"
- ).inOrder()
+ assertThat(list.map { it.key })
+ .containsExactly(
+ "0|foo|1|null|0",
+ "0|foo|2|null|0",
+ "0|bar|1|null|0",
+ "0|bar|2|null|0",
+ "0|bar|3|null|0",
+ "0|bar|4|null|0",
+ "0|baz|1|null|0",
+ )
+ .inOrder()
verifyNoMoreInteractions(notifLiveDataStoreImpl)
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/StackCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/StackCoordinatorTest.kt
index 56b70bde2cca..2c37f510a45c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/StackCoordinatorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/StackCoordinatorTest.kt
@@ -38,41 +38,37 @@ import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
import com.android.systemui.statusbar.notification.stack.BUCKET_ALERTING
import com.android.systemui.statusbar.notification.stack.BUCKET_SILENT
import com.android.systemui.statusbar.policy.SensitiveNotificationProtectionController
-import com.android.systemui.util.mockito.eq
-import com.android.systemui.util.mockito.withArgCaptor
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-import org.mockito.Mock
-import org.mockito.Mockito.verify
-import org.mockito.Mockito.verifyNoMoreInteractions
-import org.mockito.MockitoAnnotations.initMocks
-import org.mockito.Mockito.`when` as whenever
+import org.mockito.kotlin.argumentCaptor
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.verify
+import org.mockito.kotlin.verifyNoMoreInteractions
+import org.mockito.kotlin.whenever
@SmallTest
@RunWith(AndroidJUnit4::class)
@RunWithLooper
class StackCoordinatorTest : SysuiTestCase() {
+ private lateinit var entry: NotificationEntry
private lateinit var coordinator: StackCoordinator
private lateinit var afterRenderListListener: OnAfterRenderListListener
- private lateinit var entry: NotificationEntry
-
- @Mock private lateinit var pipeline: NotifPipeline
- @Mock private lateinit var groupExpansionManagerImpl: GroupExpansionManagerImpl
- @Mock private lateinit var renderListInteractor: RenderNotificationListInteractor
- @Mock private lateinit var activeNotificationsInteractor: ActiveNotificationsInteractor
- @Mock
- private lateinit var sensitiveNotificationProtectionController:
- SensitiveNotificationProtectionController
- @Mock private lateinit var stackController: NotifStackController
- @Mock private lateinit var section: NotifSection
- @Mock private lateinit var row: ExpandableNotificationRow
+ private val pipeline: NotifPipeline = mock()
+ private val groupExpansionManagerImpl: GroupExpansionManagerImpl = mock()
+ private val renderListInteractor: RenderNotificationListInteractor = mock()
+ private val activeNotificationsInteractor: ActiveNotificationsInteractor = mock()
+ private val sensitiveNotificationProtectionController:
+ SensitiveNotificationProtectionController =
+ mock()
+ private val stackController: NotifStackController = mock()
+ private val section: NotifSection = mock()
+ private val row: ExpandableNotificationRow = mock()
@Before
fun setUp() {
- initMocks(this)
-
whenever(sensitiveNotificationProtectionController.isSensitiveStateActive).thenReturn(false)
entry = NotificationEntryBuilder().setSection(section).build()
@@ -86,9 +82,9 @@ class StackCoordinatorTest : SysuiTestCase() {
sensitiveNotificationProtectionController,
)
coordinator.attach(pipeline)
- afterRenderListListener = withArgCaptor {
- verify(pipeline).addOnAfterRenderListListener(capture())
- }
+ val captor = argumentCaptor<OnAfterRenderListListener>()
+ verify(pipeline).addOnAfterRenderListListener(captor.capture())
+ afterRenderListListener = captor.lastValue
}
@Test
@@ -109,7 +105,16 @@ class StackCoordinatorTest : SysuiTestCase() {
fun testSetNotificationStats_clearableAlerting() {
whenever(section.bucket).thenReturn(BUCKET_ALERTING)
afterRenderListListener.onAfterRenderList(listOf(entry), stackController)
- verify(stackController).setNotifStats(NotifStats(1, false, true, false, false))
+ verify(stackController)
+ .setNotifStats(
+ NotifStats(
+ 1,
+ hasNonClearableAlertingNotifs = false,
+ hasClearableAlertingNotifs = true,
+ hasNonClearableSilentNotifs = false,
+ hasClearableSilentNotifs = false,
+ )
+ )
verifyNoMoreInteractions(activeNotificationsInteractor)
}
@@ -120,7 +125,16 @@ class StackCoordinatorTest : SysuiTestCase() {
whenever(sensitiveNotificationProtectionController.isSensitiveStateActive).thenReturn(true)
whenever(section.bucket).thenReturn(BUCKET_ALERTING)
afterRenderListListener.onAfterRenderList(listOf(entry), stackController)
- verify(stackController).setNotifStats(NotifStats(1, true, false, false, false))
+ verify(stackController)
+ .setNotifStats(
+ NotifStats(
+ 1,
+ hasNonClearableAlertingNotifs = true,
+ hasClearableAlertingNotifs = false,
+ hasNonClearableSilentNotifs = false,
+ hasClearableSilentNotifs = false,
+ )
+ )
verifyNoMoreInteractions(activeNotificationsInteractor)
}
@@ -129,7 +143,16 @@ class StackCoordinatorTest : SysuiTestCase() {
fun testSetNotificationStats_clearableSilent() {
whenever(section.bucket).thenReturn(BUCKET_SILENT)
afterRenderListListener.onAfterRenderList(listOf(entry), stackController)
- verify(stackController).setNotifStats(NotifStats(1, false, false, false, true))
+ verify(stackController)
+ .setNotifStats(
+ NotifStats(
+ 1,
+ hasNonClearableAlertingNotifs = false,
+ hasClearableAlertingNotifs = false,
+ hasNonClearableSilentNotifs = false,
+ hasClearableSilentNotifs = true,
+ )
+ )
verifyNoMoreInteractions(activeNotificationsInteractor)
}
@@ -140,7 +163,16 @@ class StackCoordinatorTest : SysuiTestCase() {
whenever(sensitiveNotificationProtectionController.isSensitiveStateActive).thenReturn(true)
whenever(section.bucket).thenReturn(BUCKET_SILENT)
afterRenderListListener.onAfterRenderList(listOf(entry), stackController)
- verify(stackController).setNotifStats(NotifStats(1, false, false, true, false))
+ verify(stackController)
+ .setNotifStats(
+ NotifStats(
+ 1,
+ hasNonClearableAlertingNotifs = false,
+ hasClearableAlertingNotifs = false,
+ hasNonClearableSilentNotifs = true,
+ hasClearableSilentNotifs = false,
+ )
+ )
verifyNoMoreInteractions(activeNotificationsInteractor)
}
@@ -150,7 +182,15 @@ class StackCoordinatorTest : SysuiTestCase() {
whenever(section.bucket).thenReturn(BUCKET_ALERTING)
afterRenderListListener.onAfterRenderList(listOf(entry), stackController)
verify(activeNotificationsInteractor)
- .setNotifStats(NotifStats(1, false, true, false, false))
+ .setNotifStats(
+ NotifStats(
+ 1,
+ hasNonClearableAlertingNotifs = false,
+ hasClearableAlertingNotifs = true,
+ hasNonClearableSilentNotifs = false,
+ hasClearableSilentNotifs = false,
+ )
+ )
verifyNoMoreInteractions(stackController)
}
@@ -158,14 +198,22 @@ class StackCoordinatorTest : SysuiTestCase() {
@EnableFlags(
FooterViewRefactor.FLAG_NAME,
FLAG_SCREENSHARE_NOTIFICATION_HIDING,
- FLAG_SCREENSHARE_NOTIFICATION_HIDING_BUG_FIX
+ FLAG_SCREENSHARE_NOTIFICATION_HIDING_BUG_FIX,
)
fun testSetNotificationStats_footerFlagOn_isSensitiveStateActive_nonClearableAlerting() {
whenever(sensitiveNotificationProtectionController.isSensitiveStateActive).thenReturn(true)
whenever(section.bucket).thenReturn(BUCKET_ALERTING)
afterRenderListListener.onAfterRenderList(listOf(entry), stackController)
verify(activeNotificationsInteractor)
- .setNotifStats(NotifStats(1, true, false, false, false))
+ .setNotifStats(
+ NotifStats(
+ 1,
+ hasNonClearableAlertingNotifs = true,
+ hasClearableAlertingNotifs = false,
+ hasNonClearableSilentNotifs = false,
+ hasClearableSilentNotifs = false,
+ )
+ )
verifyNoMoreInteractions(stackController)
}
@@ -175,7 +223,15 @@ class StackCoordinatorTest : SysuiTestCase() {
whenever(section.bucket).thenReturn(BUCKET_SILENT)
afterRenderListListener.onAfterRenderList(listOf(entry), stackController)
verify(activeNotificationsInteractor)
- .setNotifStats(NotifStats(1, false, false, false, true))
+ .setNotifStats(
+ NotifStats(
+ 1,
+ hasNonClearableAlertingNotifs = false,
+ hasClearableAlertingNotifs = false,
+ hasNonClearableSilentNotifs = false,
+ hasClearableSilentNotifs = true,
+ )
+ )
verifyNoMoreInteractions(stackController)
}
@@ -183,27 +239,41 @@ class StackCoordinatorTest : SysuiTestCase() {
@EnableFlags(
FooterViewRefactor.FLAG_NAME,
FLAG_SCREENSHARE_NOTIFICATION_HIDING,
- FLAG_SCREENSHARE_NOTIFICATION_HIDING_BUG_FIX
+ FLAG_SCREENSHARE_NOTIFICATION_HIDING_BUG_FIX,
)
fun testSetNotificationStats_footerFlagOn_isSensitiveStateActive_nonClearableSilent() {
whenever(sensitiveNotificationProtectionController.isSensitiveStateActive).thenReturn(true)
whenever(section.bucket).thenReturn(BUCKET_SILENT)
afterRenderListListener.onAfterRenderList(listOf(entry), stackController)
verify(activeNotificationsInteractor)
- .setNotifStats(NotifStats(1, false, false, true, false))
+ .setNotifStats(
+ NotifStats(
+ 1,
+ hasNonClearableAlertingNotifs = false,
+ hasClearableAlertingNotifs = false,
+ hasNonClearableSilentNotifs = true,
+ hasClearableSilentNotifs = false,
+ )
+ )
verifyNoMoreInteractions(stackController)
}
@Test
- @EnableFlags(
- FooterViewRefactor.FLAG_NAME
- )
+ @EnableFlags(FooterViewRefactor.FLAG_NAME)
fun testSetNotificationStats_footerFlagOn_nonClearableRedacted() {
entry.setSensitive(true, true)
whenever(section.bucket).thenReturn(BUCKET_ALERTING)
afterRenderListListener.onAfterRenderList(listOf(entry), stackController)
verify(activeNotificationsInteractor)
- .setNotifStats(NotifStats(1, hasNonClearableAlertingNotifs = true, false, false, false))
+ .setNotifStats(
+ NotifStats(
+ 1,
+ hasNonClearableAlertingNotifs = true,
+ hasClearableAlertingNotifs = false,
+ hasNonClearableSilentNotifs = false,
+ hasClearableSilentNotifs = false,
+ )
+ )
verifyNoMoreInteractions(stackController)
}
}