Loading packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModelTest.kt +23 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import com.android.systemui.statusbar.StatusBarIconView import com.android.systemui.statusbar.chips.ui.model.ColorsModel import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel import com.android.systemui.statusbar.chips.ui.view.ChipBackgroundContainer import com.android.systemui.statusbar.core.StatusBarConnectedDisplays import com.android.systemui.statusbar.phone.ongoingcall.data.repository.ongoingCallRepository import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCallModel import com.android.systemui.statusbar.phone.ongoingcall.shared.model.inCallModel Loading Loading @@ -162,6 +163,28 @@ class CallChipViewModelTest : SysuiTestCase() { assertThat(actualIcon).isEqualTo(notifIcon) } @Test @EnableFlags(FLAG_STATUS_BAR_CALL_CHIP_NOTIFICATION_ICON, StatusBarConnectedDisplays.FLAG_NAME) fun chip_positiveStartTime_notifIconAndConnectedDisplaysFlagOn_iconIsNotifIcon() = testScope.runTest { val latest by collectLastValue(underTest.chip) val notifKey = "testNotifKey" repo.setOngoingCallState( inCallModel(startTimeMs = 1000, notificationIcon = null, notificationKey = notifKey) ) assertThat((latest as OngoingActivityChipModel.Shown).icon) .isInstanceOf( OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon::class.java ) val actualNotifKey = (((latest as OngoingActivityChipModel.Shown).icon) as OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon) .notificationKey assertThat(actualNotifKey).isEqualTo(notifKey) } @Test @DisableFlags(FLAG_STATUS_BAR_CALL_CHIP_NOTIFICATION_ICON) fun chip_zeroStartTime_notifIconFlagOff_iconIsPhone() = Loading packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/notification/domain/interactor/SingleNotificationChipInteractorTest.kt +47 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.systemui.statusbar.chips.notification.domain.interactor import android.platform.test.annotations.EnableFlags import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase Loading @@ -25,6 +26,8 @@ import com.android.systemui.kosmos.collectLastValue import com.android.systemui.kosmos.runTest import com.android.systemui.kosmos.useUnconfinedTestDispatcher import com.android.systemui.statusbar.StatusBarIconView import com.android.systemui.statusbar.chips.notification.domain.model.NotificationChipModel import com.android.systemui.statusbar.core.StatusBarConnectedDisplays import com.android.systemui.statusbar.notification.data.model.activeNotificationModel import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat Loading Loading @@ -110,6 +113,27 @@ class SingleNotificationChipInteractorTest : SysuiTestCase() { assertThat(latest).isNull() } @Test @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME) fun notificationChip_cdEnabled_missingStatusBarIconChipView_inConstructor_emitsNotNull() = kosmos.runTest { val underTest = factory.create( activeNotificationModel( key = "notif1", statusBarChipIcon = null, whenTime = 123L, ) ) val latest by collectLastValue(underTest.notificationChip) assertThat(latest) .isEqualTo( NotificationChipModel("notif1", statusBarChipIconView = null, whenTime = 123L) ) } @Test fun notificationChip_missingStatusBarIconChipView_inSet_emitsNull() = kosmos.runTest { Loading @@ -125,6 +149,29 @@ class SingleNotificationChipInteractorTest : SysuiTestCase() { assertThat(latest).isNull() } @Test @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME) fun notificationChip_missingStatusBarIconChipView_inSet_cdEnabled_emitsNotNull() = kosmos.runTest { val startingNotif = activeNotificationModel(key = "notif1", statusBarChipIcon = mock()) val underTest = factory.create(startingNotif) val latest by collectLastValue(underTest.notificationChip) assertThat(latest).isNotNull() underTest.setNotification( activeNotificationModel(key = "notif1", statusBarChipIcon = null, whenTime = 123L) ) assertThat(latest) .isEqualTo( NotificationChipModel( key = "notif1", statusBarChipIconView = null, whenTime = 123L, ) ) } @Test fun notificationChip_appIsVisibleOnCreation_emitsNull() = kosmos.runTest { Loading packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/notification/ui/viewmodel/NotifChipsViewModelTest.kt +67 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import com.android.systemui.statusbar.StatusBarIconView import com.android.systemui.statusbar.chips.notification.domain.interactor.statusBarNotificationChipsInteractor import com.android.systemui.statusbar.chips.notification.shared.StatusBarNotifChips import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel import com.android.systemui.statusbar.core.StatusBarConnectedDisplays import com.android.systemui.statusbar.notification.data.model.activeNotificationModel import com.android.systemui.statusbar.notification.data.repository.ActiveNotificationsStore import com.android.systemui.statusbar.notification.data.repository.activeNotificationListRepository Loading Loading @@ -106,6 +107,30 @@ class NotifChipsViewModelTest : SysuiTestCase() { assertThat(chip.icon).isEqualTo(OngoingActivityChipModel.ChipIcon.StatusBarView(icon)) } @Test @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME) fun chips_onePromotedNotif_connectedDisplaysFlagEnabled_statusBarIconMatches() = kosmos.runTest { val latest by collectLastValue(underTest.chips) val notifKey = "notif" setNotifs( listOf( activeNotificationModel( key = notifKey, statusBarChipIcon = null, promotedContent = PromotedNotificationContentModel.Builder(notifKey).build(), ) ) ) assertThat(latest).hasSize(1) val chip = latest!![0] assertThat(chip).isInstanceOf(OngoingActivityChipModel.Shown.ShortTimeDelta::class.java) assertThat(chip.icon) .isEqualTo(OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon(notifKey)) } @Test fun chips_onlyForPromotedNotifs() = kosmos.runTest { Loading Loading @@ -138,6 +163,41 @@ class NotifChipsViewModelTest : SysuiTestCase() { assertIsNotifChip(latest!![1], secondIcon) } @Test @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME) fun chips_connectedDisplaysFlagEnabled_onlyForPromotedNotifs() = kosmos.runTest { val latest by collectLastValue(underTest.chips) val firstKey = "notif1" val secondKey = "notif2" val thirdKey = "notif3" setNotifs( listOf( activeNotificationModel( key = firstKey, statusBarChipIcon = null, promotedContent = PromotedNotificationContentModel.Builder(firstKey).build(), ), activeNotificationModel( key = secondKey, statusBarChipIcon = null, promotedContent = PromotedNotificationContentModel.Builder(secondKey).build(), ), activeNotificationModel( key = thirdKey, statusBarChipIcon = null, promotedContent = null, ), ) ) assertThat(latest).hasSize(2) assertIsNotifKey(latest!![0], firstKey) assertIsNotifKey(latest!![1], secondKey) } @Test fun chips_clickingChipNotifiesInteractor() = kosmos.runTest { Loading Loading @@ -178,5 +238,12 @@ class NotifChipsViewModelTest : SysuiTestCase() { assertThat((latest as OngoingActivityChipModel.Shown).icon) .isEqualTo(OngoingActivityChipModel.ChipIcon.StatusBarView(expectedIcon)) } fun assertIsNotifKey(latest: OngoingActivityChipModel?, expectedKey: String) { assertThat(latest) .isInstanceOf(OngoingActivityChipModel.Shown.ShortTimeDelta::class.java) assertThat((latest as OngoingActivityChipModel.Shown).icon) .isEqualTo(OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon(expectedKey)) } } } packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/FakeHomeStatusBarViewBinder.kt +1 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ class FakeHomeStatusBarViewBinder : HomeStatusBarViewBinder { var listener: StatusBarVisibilityChangeListener? = null override fun bind( displayId: Int, view: View, viewModel: HomeStatusBarViewModel, systemEventChipAnimateIn: ((View) -> Unit)?, Loading packages/SystemUI/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModel.kt +9 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import com.android.systemui.statusbar.chips.ui.model.ColorsModel import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel import com.android.systemui.statusbar.chips.ui.view.ChipBackgroundContainer import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipViewModel import com.android.systemui.statusbar.core.StatusBarConnectedDisplays import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCallModel import com.android.systemui.util.time.SystemClock import javax.inject.Inject Loading Loading @@ -67,9 +68,17 @@ constructor( Flags.statusBarCallChipNotificationIcon() && state.notificationIconView != null ) { StatusBarConnectedDisplays.assertInLegacyMode() OngoingActivityChipModel.ChipIcon.StatusBarView( state.notificationIconView ) } else if ( StatusBarConnectedDisplays.isEnabled && Flags.statusBarCallChipNotificationIcon() ) { OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon( state.notificationKey ) } else { OngoingActivityChipModel.ChipIcon.SingleColorIcon(phoneIcon) } Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModelTest.kt +23 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import com.android.systemui.statusbar.StatusBarIconView import com.android.systemui.statusbar.chips.ui.model.ColorsModel import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel import com.android.systemui.statusbar.chips.ui.view.ChipBackgroundContainer import com.android.systemui.statusbar.core.StatusBarConnectedDisplays import com.android.systemui.statusbar.phone.ongoingcall.data.repository.ongoingCallRepository import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCallModel import com.android.systemui.statusbar.phone.ongoingcall.shared.model.inCallModel Loading Loading @@ -162,6 +163,28 @@ class CallChipViewModelTest : SysuiTestCase() { assertThat(actualIcon).isEqualTo(notifIcon) } @Test @EnableFlags(FLAG_STATUS_BAR_CALL_CHIP_NOTIFICATION_ICON, StatusBarConnectedDisplays.FLAG_NAME) fun chip_positiveStartTime_notifIconAndConnectedDisplaysFlagOn_iconIsNotifIcon() = testScope.runTest { val latest by collectLastValue(underTest.chip) val notifKey = "testNotifKey" repo.setOngoingCallState( inCallModel(startTimeMs = 1000, notificationIcon = null, notificationKey = notifKey) ) assertThat((latest as OngoingActivityChipModel.Shown).icon) .isInstanceOf( OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon::class.java ) val actualNotifKey = (((latest as OngoingActivityChipModel.Shown).icon) as OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon) .notificationKey assertThat(actualNotifKey).isEqualTo(notifKey) } @Test @DisableFlags(FLAG_STATUS_BAR_CALL_CHIP_NOTIFICATION_ICON) fun chip_zeroStartTime_notifIconFlagOff_iconIsPhone() = Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/notification/domain/interactor/SingleNotificationChipInteractorTest.kt +47 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.systemui.statusbar.chips.notification.domain.interactor import android.platform.test.annotations.EnableFlags import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase Loading @@ -25,6 +26,8 @@ import com.android.systemui.kosmos.collectLastValue import com.android.systemui.kosmos.runTest import com.android.systemui.kosmos.useUnconfinedTestDispatcher import com.android.systemui.statusbar.StatusBarIconView import com.android.systemui.statusbar.chips.notification.domain.model.NotificationChipModel import com.android.systemui.statusbar.core.StatusBarConnectedDisplays import com.android.systemui.statusbar.notification.data.model.activeNotificationModel import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat Loading Loading @@ -110,6 +113,27 @@ class SingleNotificationChipInteractorTest : SysuiTestCase() { assertThat(latest).isNull() } @Test @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME) fun notificationChip_cdEnabled_missingStatusBarIconChipView_inConstructor_emitsNotNull() = kosmos.runTest { val underTest = factory.create( activeNotificationModel( key = "notif1", statusBarChipIcon = null, whenTime = 123L, ) ) val latest by collectLastValue(underTest.notificationChip) assertThat(latest) .isEqualTo( NotificationChipModel("notif1", statusBarChipIconView = null, whenTime = 123L) ) } @Test fun notificationChip_missingStatusBarIconChipView_inSet_emitsNull() = kosmos.runTest { Loading @@ -125,6 +149,29 @@ class SingleNotificationChipInteractorTest : SysuiTestCase() { assertThat(latest).isNull() } @Test @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME) fun notificationChip_missingStatusBarIconChipView_inSet_cdEnabled_emitsNotNull() = kosmos.runTest { val startingNotif = activeNotificationModel(key = "notif1", statusBarChipIcon = mock()) val underTest = factory.create(startingNotif) val latest by collectLastValue(underTest.notificationChip) assertThat(latest).isNotNull() underTest.setNotification( activeNotificationModel(key = "notif1", statusBarChipIcon = null, whenTime = 123L) ) assertThat(latest) .isEqualTo( NotificationChipModel( key = "notif1", statusBarChipIconView = null, whenTime = 123L, ) ) } @Test fun notificationChip_appIsVisibleOnCreation_emitsNull() = kosmos.runTest { Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/notification/ui/viewmodel/NotifChipsViewModelTest.kt +67 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import com.android.systemui.statusbar.StatusBarIconView import com.android.systemui.statusbar.chips.notification.domain.interactor.statusBarNotificationChipsInteractor import com.android.systemui.statusbar.chips.notification.shared.StatusBarNotifChips import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel import com.android.systemui.statusbar.core.StatusBarConnectedDisplays import com.android.systemui.statusbar.notification.data.model.activeNotificationModel import com.android.systemui.statusbar.notification.data.repository.ActiveNotificationsStore import com.android.systemui.statusbar.notification.data.repository.activeNotificationListRepository Loading Loading @@ -106,6 +107,30 @@ class NotifChipsViewModelTest : SysuiTestCase() { assertThat(chip.icon).isEqualTo(OngoingActivityChipModel.ChipIcon.StatusBarView(icon)) } @Test @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME) fun chips_onePromotedNotif_connectedDisplaysFlagEnabled_statusBarIconMatches() = kosmos.runTest { val latest by collectLastValue(underTest.chips) val notifKey = "notif" setNotifs( listOf( activeNotificationModel( key = notifKey, statusBarChipIcon = null, promotedContent = PromotedNotificationContentModel.Builder(notifKey).build(), ) ) ) assertThat(latest).hasSize(1) val chip = latest!![0] assertThat(chip).isInstanceOf(OngoingActivityChipModel.Shown.ShortTimeDelta::class.java) assertThat(chip.icon) .isEqualTo(OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon(notifKey)) } @Test fun chips_onlyForPromotedNotifs() = kosmos.runTest { Loading Loading @@ -138,6 +163,41 @@ class NotifChipsViewModelTest : SysuiTestCase() { assertIsNotifChip(latest!![1], secondIcon) } @Test @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME) fun chips_connectedDisplaysFlagEnabled_onlyForPromotedNotifs() = kosmos.runTest { val latest by collectLastValue(underTest.chips) val firstKey = "notif1" val secondKey = "notif2" val thirdKey = "notif3" setNotifs( listOf( activeNotificationModel( key = firstKey, statusBarChipIcon = null, promotedContent = PromotedNotificationContentModel.Builder(firstKey).build(), ), activeNotificationModel( key = secondKey, statusBarChipIcon = null, promotedContent = PromotedNotificationContentModel.Builder(secondKey).build(), ), activeNotificationModel( key = thirdKey, statusBarChipIcon = null, promotedContent = null, ), ) ) assertThat(latest).hasSize(2) assertIsNotifKey(latest!![0], firstKey) assertIsNotifKey(latest!![1], secondKey) } @Test fun chips_clickingChipNotifiesInteractor() = kosmos.runTest { Loading Loading @@ -178,5 +238,12 @@ class NotifChipsViewModelTest : SysuiTestCase() { assertThat((latest as OngoingActivityChipModel.Shown).icon) .isEqualTo(OngoingActivityChipModel.ChipIcon.StatusBarView(expectedIcon)) } fun assertIsNotifKey(latest: OngoingActivityChipModel?, expectedKey: String) { assertThat(latest) .isInstanceOf(OngoingActivityChipModel.Shown.ShortTimeDelta::class.java) assertThat((latest as OngoingActivityChipModel.Shown).icon) .isEqualTo(OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon(expectedKey)) } } }
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/FakeHomeStatusBarViewBinder.kt +1 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ class FakeHomeStatusBarViewBinder : HomeStatusBarViewBinder { var listener: StatusBarVisibilityChangeListener? = null override fun bind( displayId: Int, view: View, viewModel: HomeStatusBarViewModel, systemEventChipAnimateIn: ((View) -> Unit)?, Loading
packages/SystemUI/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModel.kt +9 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import com.android.systemui.statusbar.chips.ui.model.ColorsModel import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel import com.android.systemui.statusbar.chips.ui.view.ChipBackgroundContainer import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipViewModel import com.android.systemui.statusbar.core.StatusBarConnectedDisplays import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCallModel import com.android.systemui.util.time.SystemClock import javax.inject.Inject Loading Loading @@ -67,9 +68,17 @@ constructor( Flags.statusBarCallChipNotificationIcon() && state.notificationIconView != null ) { StatusBarConnectedDisplays.assertInLegacyMode() OngoingActivityChipModel.ChipIcon.StatusBarView( state.notificationIconView ) } else if ( StatusBarConnectedDisplays.isEnabled && Flags.statusBarCallChipNotificationIcon() ) { OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon( state.notificationKey ) } else { OngoingActivityChipModel.ChipIcon.SingleColorIcon(phoneIcon) } Loading