Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 132f2617 authored by Caitlin Shkuratov's avatar Caitlin Shkuratov Committed by Android (Google) Code Review
Browse files

Merge changes I317d76f3,Ic53a5147,Ib6c5e4ab into main

* changes:
  [SB][Chip] Update SBModeRepoImplTest for ChipsModernization flag.
  [SB][Call] Update CallChipInteractorTest to use helper methods.
  [SB][Call] Update CallChipViewModelTest to use helper methods.
parents 5f2dd99e 29edce16
Loading
Loading
Loading
Loading
+13 −12
Original line number Original line Diff line number Diff line
@@ -20,11 +20,14 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.collectLastValue
import com.android.systemui.kosmos.testScope
import com.android.systemui.kosmos.runTest
import com.android.systemui.kosmos.useUnconfinedTestDispatcher
import com.android.systemui.statusbar.phone.ongoingcall.data.repository.ongoingCallRepository
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.OngoingCallModel
import com.android.systemui.statusbar.phone.ongoingcall.shared.model.inCallModel
import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCallTestHelper.addOngoingCallState
import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCallTestHelper.removeOngoingCallState
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertThat
import kotlin.test.Test
import kotlin.test.Test
import kotlinx.coroutines.test.runTest
import kotlinx.coroutines.test.runTest
@@ -33,22 +36,20 @@ import org.junit.runner.RunWith
@SmallTest
@SmallTest
@RunWith(AndroidJUnit4::class)
@RunWith(AndroidJUnit4::class)
class CallChipInteractorTest : SysuiTestCase() {
class CallChipInteractorTest : SysuiTestCase() {
    val kosmos = Kosmos()
    val kosmos = testKosmos().useUnconfinedTestDispatcher()
    val repo = kosmos.ongoingCallRepository
    val repo = kosmos.ongoingCallRepository


    val underTest = kosmos.callChipInteractor
    val underTest = kosmos.callChipInteractor


    @Test
    @Test
    fun ongoingCallState_matchesRepo() =
    fun ongoingCallState_matchesState() =
        kosmos.testScope.runTest {
        kosmos.runTest {
            val latest by collectLastValue(underTest.ongoingCallState)
            val latest by collectLastValue(underTest.ongoingCallState)


            val inCall = inCallModel(startTimeMs = 1000)
            addOngoingCallState(key = "testKey")
            repo.setOngoingCallState(inCall)
            assertThat(latest).isInstanceOf(OngoingCallModel.InCall::class.java)
            assertThat(latest).isEqualTo(inCall)


            val noCall = OngoingCallModel.NoCall
            removeOngoingCallState(key = "testKey")
            repo.setOngoingCallState(noCall)
            assertThat(latest).isEqualTo(OngoingCallModel.NoCall)
            assertThat(latest).isEqualTo(noCall)
        }
        }
}
}
+55 −105
Original line number Original line Diff line number Diff line
@@ -27,7 +27,9 @@ import com.android.systemui.animation.Expandable
import com.android.systemui.common.shared.model.ContentDescription.Companion.loadContentDescription
import com.android.systemui.common.shared.model.ContentDescription.Companion.loadContentDescription
import com.android.systemui.common.shared.model.Icon
import com.android.systemui.common.shared.model.Icon
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.testScope
import com.android.systemui.kosmos.collectLastValue
import com.android.systemui.kosmos.runTest
import com.android.systemui.kosmos.useUnconfinedTestDispatcher
import com.android.systemui.plugins.activityStarter
import com.android.systemui.plugins.activityStarter
import com.android.systemui.res.R
import com.android.systemui.res.R
import com.android.systemui.statusbar.StatusBarIconView
import com.android.systemui.statusbar.StatusBarIconView
@@ -35,17 +37,11 @@ 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.model.OngoingActivityChipModel
import com.android.systemui.statusbar.chips.ui.view.ChipBackgroundContainer
import com.android.systemui.statusbar.chips.ui.view.ChipBackgroundContainer
import com.android.systemui.statusbar.core.StatusBarConnectedDisplays
import com.android.systemui.statusbar.core.StatusBarConnectedDisplays
import com.android.systemui.statusbar.notification.data.model.activeNotificationModel
import com.android.systemui.statusbar.notification.data.repository.ActiveNotificationListRepository
import com.android.systemui.statusbar.notification.data.repository.ActiveNotificationsStore
import com.android.systemui.statusbar.notification.data.repository.activeNotificationListRepository
import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel
import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel
import com.android.systemui.statusbar.notification.shared.CallType
import com.android.systemui.statusbar.phone.ongoingcall.DisableChipsModernization
import com.android.systemui.statusbar.phone.ongoingcall.DisableChipsModernization
import com.android.systemui.statusbar.phone.ongoingcall.EnableChipsModernization
import com.android.systemui.statusbar.phone.ongoingcall.EnableChipsModernization
import com.android.systemui.statusbar.phone.ongoingcall.data.repository.ongoingCallRepository
import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCallTestHelper.addOngoingCallState
import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCallModel
import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCallTestHelper.removeOngoingCallState
import com.android.systemui.statusbar.phone.ongoingcall.shared.model.inCallModel
import com.android.systemui.testKosmos
import com.android.systemui.testKosmos
import com.android.systemui.util.time.fakeSystemClock
import com.android.systemui.util.time.fakeSystemClock
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertThat
@@ -60,10 +56,7 @@ import org.mockito.kotlin.whenever
@SmallTest
@SmallTest
@RunWith(AndroidJUnit4::class)
@RunWith(AndroidJUnit4::class)
class CallChipViewModelTest : SysuiTestCase() {
class CallChipViewModelTest : SysuiTestCase() {
    private val kosmos = testKosmos()
    private val kosmos = testKosmos().useUnconfinedTestDispatcher()
    private val notificationListRepository = kosmos.activeNotificationListRepository
    private val testScope = kosmos.testScope
    private val repo = kosmos.ongoingCallRepository


    private val chipBackgroundView = mock<ChipBackgroundContainer>()
    private val chipBackgroundView = mock<ChipBackgroundContainer>()
    private val chipView =
    private val chipView =
@@ -82,53 +75,53 @@ class CallChipViewModelTest : SysuiTestCase() {


    @Test
    @Test
    fun chip_noCall_isHidden() =
    fun chip_noCall_isHidden() =
        testScope.runTest {
        kosmos.runTest {
            val latest by collectLastValue(underTest.chip)
            val latest by collectLastValue(underTest.chip)


            repo.setOngoingCallState(OngoingCallModel.NoCall)
            removeOngoingCallState("testKey")


            assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
            assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
        }
        }


    @Test
    @Test
    fun chip_inCall_zeroStartTime_isShownAsIconOnly() =
    fun chip_inCall_zeroStartTime_isShownAsIconOnly() =
        testScope.runTest {
        kosmos.runTest {
            val latest by collectLastValue(underTest.chip)
            val latest by collectLastValue(underTest.chip)


            repo.setOngoingCallState(inCallModel(startTimeMs = 0))
            addOngoingCallState(startTimeMs = 0)


            assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active.IconOnly::class.java)
            assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active.IconOnly::class.java)
        }
        }


    @Test
    @Test
    fun chip_inCall_negativeStartTime_isShownAsIconOnly() =
    fun chip_inCall_negativeStartTime_isShownAsIconOnly() =
        testScope.runTest {
        kosmos.runTest {
            val latest by collectLastValue(underTest.chip)
            val latest by collectLastValue(underTest.chip)


            repo.setOngoingCallState(inCallModel(startTimeMs = -2))
            addOngoingCallState(startTimeMs = -2)


            assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active.IconOnly::class.java)
            assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active.IconOnly::class.java)
        }
        }


    @Test
    @Test
    fun chip_inCall_positiveStartTime_isShownAsTimer() =
    fun chip_inCall_positiveStartTime_isShownAsTimer() =
        testScope.runTest {
        kosmos.runTest {
            val latest by collectLastValue(underTest.chip)
            val latest by collectLastValue(underTest.chip)


            repo.setOngoingCallState(inCallModel(startTimeMs = 345))
            addOngoingCallState(startTimeMs = 345)


            assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
            assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
        }
        }


    @Test
    @Test
    fun chip_inCall_startTimeConvertedToElapsedRealtime() =
    fun chip_inCall_startTimeConvertedToElapsedRealtime() =
        testScope.runTest {
        kosmos.runTest {
            val latest by collectLastValue(underTest.chip)
            val latest by collectLastValue(underTest.chip)


            kosmos.fakeSystemClock.setCurrentTimeMillis(3000)
            kosmos.fakeSystemClock.setCurrentTimeMillis(3000)
            kosmos.fakeSystemClock.setElapsedRealtime(400_000)
            kosmos.fakeSystemClock.setElapsedRealtime(400_000)


            repo.setOngoingCallState(inCallModel(startTimeMs = 1000))
            addOngoingCallState(startTimeMs = 1000)


            // The OngoingCallModel start time is relative to currentTimeMillis, so this call
            // The OngoingCallModel start time is relative to currentTimeMillis, so this call
            // started 2000ms ago (1000 - 3000). The OngoingActivityChipModel start time needs to be
            // started 2000ms ago (1000 - 3000). The OngoingActivityChipModel start time needs to be
@@ -141,13 +134,11 @@ class CallChipViewModelTest : SysuiTestCase() {
    @Test
    @Test
    @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME)
    @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME)
    fun chip_positiveStartTime_connectedDisplaysFlagOn_iconIsNotifIcon() =
    fun chip_positiveStartTime_connectedDisplaysFlagOn_iconIsNotifIcon() =
        testScope.runTest {
        kosmos.runTest {
            val latest by collectLastValue(underTest.chip)
            val latest by collectLastValue(underTest.chip)


            val notifKey = "testNotifKey"
            val notifKey = "testNotifKey"
            repo.setOngoingCallState(
            addOngoingCallState(startTimeMs = 1000, statusBarChipIconView = null, key = notifKey)
                inCallModel(startTimeMs = 1000, notificationIcon = null, notificationKey = notifKey)
            )


            assertThat((latest as OngoingActivityChipModel.Active).icon)
            assertThat((latest as OngoingActivityChipModel.Active).icon)
                .isInstanceOf(
                .isInstanceOf(
@@ -163,17 +154,15 @@ class CallChipViewModelTest : SysuiTestCase() {
    @Test
    @Test
    @DisableFlags(StatusBarConnectedDisplays.FLAG_NAME)
    @DisableFlags(StatusBarConnectedDisplays.FLAG_NAME)
    fun chip_zeroStartTime_cdFlagOff_iconIsNotifIcon_withContentDescription() =
    fun chip_zeroStartTime_cdFlagOff_iconIsNotifIcon_withContentDescription() =
        testScope.runTest {
        kosmos.runTest {
            val latest by collectLastValue(underTest.chip)
            val latest by collectLastValue(underTest.chip)


            val notifIcon = createStatusBarIconViewOrNull()
            val notifIcon = createStatusBarIconViewOrNull()
            repo.setOngoingCallState(
            addOngoingCallState(
                inCallModel(
                startTimeMs = 0,
                startTimeMs = 0,
                    notificationIcon = notifIcon,
                statusBarChipIconView = notifIcon,
                appName = "Fake app name",
                appName = "Fake app name",
            )
            )
            )


            assertThat((latest as OngoingActivityChipModel.Active).icon)
            assertThat((latest as OngoingActivityChipModel.Active).icon)
                .isInstanceOf(OngoingActivityChipModel.ChipIcon.StatusBarView::class.java)
                .isInstanceOf(OngoingActivityChipModel.ChipIcon.StatusBarView::class.java)
@@ -190,17 +179,14 @@ class CallChipViewModelTest : SysuiTestCase() {
    @Test
    @Test
    @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME)
    @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME)
    fun chip_zeroStartTime_cdFlagOn_iconIsNotifKeyIcon_withContentDescription() =
    fun chip_zeroStartTime_cdFlagOn_iconIsNotifKeyIcon_withContentDescription() =
        testScope.runTest {
        kosmos.runTest {
            val latest by collectLastValue(underTest.chip)
            val latest by collectLastValue(underTest.chip)


            repo.setOngoingCallState(
            addOngoingCallState(
                inCallModel(
                key = "notifKey",
                    startTimeMs = 0,
                statusBarChipIconView = createStatusBarIconViewOrNull(),
                    notificationIcon = createStatusBarIconViewOrNull(),
                    notificationKey = "notifKey",
                appName = "Fake app name",
                appName = "Fake app name",
            )
            )
            )


            assertThat((latest as OngoingActivityChipModel.Active).icon)
            assertThat((latest as OngoingActivityChipModel.Active).icon)
                .isInstanceOf(
                .isInstanceOf(
@@ -219,10 +205,10 @@ class CallChipViewModelTest : SysuiTestCase() {
    @Test
    @Test
    @DisableFlags(StatusBarConnectedDisplays.FLAG_NAME)
    @DisableFlags(StatusBarConnectedDisplays.FLAG_NAME)
    fun chip_notifIconFlagOn_butNullNotifIcon_cdFlagOff_iconIsPhone() =
    fun chip_notifIconFlagOn_butNullNotifIcon_cdFlagOff_iconIsPhone() =
        testScope.runTest {
        kosmos.runTest {
            val latest by collectLastValue(underTest.chip)
            val latest by collectLastValue(underTest.chip)


            repo.setOngoingCallState(inCallModel(startTimeMs = 1000, notificationIcon = null))
            addOngoingCallState(statusBarChipIconView = null)


            assertThat((latest as OngoingActivityChipModel.Active).icon)
            assertThat((latest as OngoingActivityChipModel.Active).icon)
                .isInstanceOf(OngoingActivityChipModel.ChipIcon.SingleColorIcon::class.java)
                .isInstanceOf(OngoingActivityChipModel.ChipIcon.SingleColorIcon::class.java)
@@ -237,17 +223,14 @@ class CallChipViewModelTest : SysuiTestCase() {
    @Test
    @Test
    @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME)
    @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME)
    fun chip_notifIconFlagOn_butNullNotifIcon_cdFlagOn_iconIsNotifKeyIcon_withContentDescription() =
    fun chip_notifIconFlagOn_butNullNotifIcon_cdFlagOn_iconIsNotifKeyIcon_withContentDescription() =
        testScope.runTest {
        kosmos.runTest {
            val latest by collectLastValue(underTest.chip)
            val latest by collectLastValue(underTest.chip)


            repo.setOngoingCallState(
            addOngoingCallState(
                inCallModel(
                key = "notifKey",
                    startTimeMs = 1000,
                statusBarChipIconView = null,
                    notificationIcon = null,
                    notificationKey = "notifKey",
                appName = "Fake app name",
                appName = "Fake app name",
            )
            )
            )


            assertThat((latest as OngoingActivityChipModel.Active).icon)
            assertThat((latest as OngoingActivityChipModel.Active).icon)
                .isInstanceOf(
                .isInstanceOf(
@@ -265,10 +248,10 @@ class CallChipViewModelTest : SysuiTestCase() {


    @Test
    @Test
    fun chip_positiveStartTime_colorsAreAccentThemed() =
    fun chip_positiveStartTime_colorsAreAccentThemed() =
        testScope.runTest {
        kosmos.runTest {
            val latest by collectLastValue(underTest.chip)
            val latest by collectLastValue(underTest.chip)


            repo.setOngoingCallState(inCallModel(startTimeMs = 1000, promotedContent = null))
            addOngoingCallState(startTimeMs = 1000, promotedContent = null)


            assertThat((latest as OngoingActivityChipModel.Active).colors)
            assertThat((latest as OngoingActivityChipModel.Active).colors)
                .isEqualTo(ColorsModel.AccentThemed)
                .isEqualTo(ColorsModel.AccentThemed)
@@ -276,10 +259,10 @@ class CallChipViewModelTest : SysuiTestCase() {


    @Test
    @Test
    fun chip_zeroStartTime_colorsAreAccentThemed() =
    fun chip_zeroStartTime_colorsAreAccentThemed() =
        testScope.runTest {
        kosmos.runTest {
            val latest by collectLastValue(underTest.chip)
            val latest by collectLastValue(underTest.chip)


            repo.setOngoingCallState(inCallModel(startTimeMs = 0, promotedContent = null))
            addOngoingCallState(startTimeMs = 0, promotedContent = null)


            assertThat((latest as OngoingActivityChipModel.Active).colors)
            assertThat((latest as OngoingActivityChipModel.Active).colors)
                .isEqualTo(ColorsModel.AccentThemed)
                .isEqualTo(ColorsModel.AccentThemed)
@@ -287,19 +270,19 @@ class CallChipViewModelTest : SysuiTestCase() {


    @Test
    @Test
    fun chip_resetsCorrectly() =
    fun chip_resetsCorrectly() =
        testScope.runTest {
        kosmos.runTest {
            val latest by collectLastValue(underTest.chip)
            val latest by collectLastValue(underTest.chip)
            kosmos.fakeSystemClock.setCurrentTimeMillis(3000)
            kosmos.fakeSystemClock.setCurrentTimeMillis(3000)
            kosmos.fakeSystemClock.setElapsedRealtime(400_000)
            kosmos.fakeSystemClock.setElapsedRealtime(400_000)


            // Start a call
            // Start a call
            repo.setOngoingCallState(inCallModel(startTimeMs = 1000))
            addOngoingCallState(key = "testKey", startTimeMs = 1000)
            assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active::class.java)
            assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active::class.java)
            assertThat((latest as OngoingActivityChipModel.Active.Timer).startTimeMs)
            assertThat((latest as OngoingActivityChipModel.Active.Timer).startTimeMs)
                .isEqualTo(398_000)
                .isEqualTo(398_000)


            // End the call
            // End the call
            repo.setOngoingCallState(OngoingCallModel.NoCall)
            removeOngoingCallState(key = "testKey")
            assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
            assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)


            // Let 100_000ms elapse
            // Let 100_000ms elapse
@@ -307,7 +290,7 @@ class CallChipViewModelTest : SysuiTestCase() {
            kosmos.fakeSystemClock.setElapsedRealtime(500_000)
            kosmos.fakeSystemClock.setElapsedRealtime(500_000)


            // Start a new call, which started 1000ms ago
            // Start a new call, which started 1000ms ago
            repo.setOngoingCallState(inCallModel(startTimeMs = 102_000))
            addOngoingCallState(key = "testKey", startTimeMs = 102_000)
            assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active::class.java)
            assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active::class.java)
            assertThat((latest as OngoingActivityChipModel.Active.Timer).startTimeMs)
            assertThat((latest as OngoingActivityChipModel.Active.Timer).startTimeMs)
                .isEqualTo(499_000)
                .isEqualTo(499_000)
@@ -316,10 +299,10 @@ class CallChipViewModelTest : SysuiTestCase() {
    @Test
    @Test
    @DisableChipsModernization
    @DisableChipsModernization
    fun chip_inCall_nullIntent_nullClickListener() =
    fun chip_inCall_nullIntent_nullClickListener() =
        testScope.runTest {
        kosmos.runTest {
            val latest by collectLastValue(underTest.chip)
            val latest by collectLastValue(underTest.chip)


            repo.setOngoingCallState(inCallModel(startTimeMs = 1000, intent = null))
            addOngoingCallState(contentIntent = null)


            assertThat((latest as OngoingActivityChipModel.Active).onClickListenerLegacy).isNull()
            assertThat((latest as OngoingActivityChipModel.Active).onClickListenerLegacy).isNull()
        }
        }
@@ -327,11 +310,11 @@ class CallChipViewModelTest : SysuiTestCase() {
    @Test
    @Test
    @DisableChipsModernization
    @DisableChipsModernization
    fun chip_inCall_positiveStartTime_validIntent_clickListenerLaunchesIntent() =
    fun chip_inCall_positiveStartTime_validIntent_clickListenerLaunchesIntent() =
        testScope.runTest {
        kosmos.runTest {
            val latest by collectLastValue(underTest.chip)
            val latest by collectLastValue(underTest.chip)


            val pendingIntent = mock<PendingIntent>()
            val pendingIntent = mock<PendingIntent>()
            repo.setOngoingCallState(inCallModel(startTimeMs = 1000, intent = pendingIntent))
            addOngoingCallState(startTimeMs = 1000, contentIntent = pendingIntent)
            val clickListener = (latest as OngoingActivityChipModel.Active).onClickListenerLegacy
            val clickListener = (latest as OngoingActivityChipModel.Active).onClickListenerLegacy
            assertThat(clickListener).isNotNull()
            assertThat(clickListener).isNotNull()


@@ -345,11 +328,11 @@ class CallChipViewModelTest : SysuiTestCase() {
    @Test
    @Test
    @DisableChipsModernization
    @DisableChipsModernization
    fun chip_inCall_zeroStartTime_validIntent_clickListenerLaunchesIntent() =
    fun chip_inCall_zeroStartTime_validIntent_clickListenerLaunchesIntent() =
        testScope.runTest {
        kosmos.runTest {
            val latest by collectLastValue(underTest.chip)
            val latest by collectLastValue(underTest.chip)


            val pendingIntent = mock<PendingIntent>()
            val pendingIntent = mock<PendingIntent>()
            repo.setOngoingCallState(inCallModel(startTimeMs = 0, intent = pendingIntent))
            addOngoingCallState(startTimeMs = 0, contentIntent = pendingIntent)
            val clickListener = (latest as OngoingActivityChipModel.Active).onClickListenerLegacy
            val clickListener = (latest as OngoingActivityChipModel.Active).onClickListenerLegacy


            assertThat(clickListener).isNotNull()
            assertThat(clickListener).isNotNull()
@@ -364,14 +347,10 @@ class CallChipViewModelTest : SysuiTestCase() {
    @Test
    @Test
    @EnableChipsModernization
    @EnableChipsModernization
    fun chip_inCall_nullIntent_noneClickBehavior() =
    fun chip_inCall_nullIntent_noneClickBehavior() =
        testScope.runTest {
        kosmos.runTest {
            val latest by collectLastValue(underTest.chip)
            val latest by collectLastValue(underTest.chip)


            postOngoingCallNotification(
            addOngoingCallState(startTimeMs = 1000, contentIntent = null)
                repository = notificationListRepository,
                startTimeMs = 1000L,
                intent = null,
            )


            assertThat((latest as OngoingActivityChipModel.Active).clickBehavior)
            assertThat((latest as OngoingActivityChipModel.Active).clickBehavior)
                .isInstanceOf(OngoingActivityChipModel.ClickBehavior.None::class.java)
                .isInstanceOf(OngoingActivityChipModel.ClickBehavior.None::class.java)
@@ -380,15 +359,11 @@ class CallChipViewModelTest : SysuiTestCase() {
    @Test
    @Test
    @EnableChipsModernization
    @EnableChipsModernization
    fun chip_inCall_positiveStartTime_validIntent_clickBehaviorLaunchesIntent() =
    fun chip_inCall_positiveStartTime_validIntent_clickBehaviorLaunchesIntent() =
        testScope.runTest {
        kosmos.runTest {
            val latest by collectLastValue(underTest.chip)
            val latest by collectLastValue(underTest.chip)


            val pendingIntent = mock<PendingIntent>()
            val pendingIntent = mock<PendingIntent>()
            postOngoingCallNotification(
            addOngoingCallState(startTimeMs = 1000, contentIntent = pendingIntent)
                repository = notificationListRepository,
                startTimeMs = 1000L,
                intent = pendingIntent,
            )


            val clickBehavior = (latest as OngoingActivityChipModel.Active).clickBehavior
            val clickBehavior = (latest as OngoingActivityChipModel.Active).clickBehavior
            assertThat(clickBehavior)
            assertThat(clickBehavior)
@@ -405,15 +380,11 @@ class CallChipViewModelTest : SysuiTestCase() {
    @Test
    @Test
    @EnableChipsModernization
    @EnableChipsModernization
    fun chip_inCall_zeroStartTime_validIntent_clickBehaviorLaunchesIntent() =
    fun chip_inCall_zeroStartTime_validIntent_clickBehaviorLaunchesIntent() =
        testScope.runTest {
        kosmos.runTest {
            val latest by collectLastValue(underTest.chip)
            val latest by collectLastValue(underTest.chip)


            val pendingIntent = mock<PendingIntent>()
            val pendingIntent = mock<PendingIntent>()
            postOngoingCallNotification(
            addOngoingCallState(startTimeMs = 0, contentIntent = pendingIntent)
                repository = notificationListRepository,
                startTimeMs = 0L,
                intent = pendingIntent,
            )


            val clickBehavior = (latest as OngoingActivityChipModel.Active).clickBehavior
            val clickBehavior = (latest as OngoingActivityChipModel.Active).clickBehavior
            assertThat(clickBehavior)
            assertThat(clickBehavior)
@@ -435,27 +406,6 @@ class CallChipViewModelTest : SysuiTestCase() {
                mock<StatusBarIconView>()
                mock<StatusBarIconView>()
            }
            }


        fun postOngoingCallNotification(
            repository: ActiveNotificationListRepository,
            startTimeMs: Long,
            intent: PendingIntent?,
        ) {
            repository.activeNotifications.value =
                ActiveNotificationsStore.Builder()
                    .apply {
                        addIndividualNotif(
                            activeNotificationModel(
                                key = "notif1",
                                whenTime = startTimeMs,
                                callType = CallType.Ongoing,
                                statusBarChipIcon = null,
                                contentIntent = intent,
                            )
                        )
                    }
                    .build()
        }

        private val PROMOTED_CONTENT_WITH_COLOR =
        private val PROMOTED_CONTENT_WITH_COLOR =
            PromotedNotificationContentModel.Builder("notif")
            PromotedNotificationContentModel.Builder("notif")
                .apply {
                .apply {
+48 −0
Original line number Original line Diff line number Diff line
@@ -37,6 +37,8 @@ import com.android.systemui.statusbar.layout.LetterboxAppearance
import com.android.systemui.statusbar.layout.LetterboxAppearanceCalculator
import com.android.systemui.statusbar.layout.LetterboxAppearanceCalculator
import com.android.systemui.statusbar.layout.StatusBarBoundsProvider
import com.android.systemui.statusbar.layout.StatusBarBoundsProvider
import com.android.systemui.statusbar.phone.fragment.dagger.HomeStatusBarComponent
import com.android.systemui.statusbar.phone.fragment.dagger.HomeStatusBarComponent
import com.android.systemui.statusbar.phone.ongoingcall.DisableChipsModernization
import com.android.systemui.statusbar.phone.ongoingcall.EnableChipsModernization
import com.android.systemui.statusbar.phone.ongoingcall.data.repository.ongoingCallRepository
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.OngoingCallModel
import com.android.systemui.statusbar.phone.ongoingcall.shared.model.inCallModel
import com.android.systemui.statusbar.phone.ongoingcall.shared.model.inCallModel
@@ -387,6 +389,7 @@ class StatusBarModeRepositoryImplTest : SysuiTestCase() {
        }
        }


    @Test
    @Test
    @DisableChipsModernization
    fun statusBarMode_ongoingCallAndFullscreen_semiTransparent() =
    fun statusBarMode_ongoingCallAndFullscreen_semiTransparent() =
        testScope.runTest {
        testScope.runTest {
            val latest by collectLastValue(underTest.statusBarAppearance)
            val latest by collectLastValue(underTest.statusBarAppearance)
@@ -398,6 +401,19 @@ class StatusBarModeRepositoryImplTest : SysuiTestCase() {
        }
        }


    @Test
    @Test
    @EnableChipsModernization
    fun statusBarMode_ongoingProcessRequiresStatusBarVisible_andFullscreen_semiTransparent() =
        testScope.runTest {
            val latest by collectLastValue(underTest.statusBarAppearance)

            underTest.setOngoingProcessRequiresStatusBarVisible(true)
            onSystemBarAttributesChanged(requestedVisibleTypes = WindowInsets.Type.navigationBars())

            assertThat(latest!!.mode).isEqualTo(StatusBarMode.SEMI_TRANSPARENT)
        }

    @Test
    @DisableChipsModernization
    fun statusBarMode_ongoingCallButNotFullscreen_matchesAppearance() =
    fun statusBarMode_ongoingCallButNotFullscreen_matchesAppearance() =
        testScope.runTest {
        testScope.runTest {
            val latest by collectLastValue(underTest.statusBarAppearance)
            val latest by collectLastValue(underTest.statusBarAppearance)
@@ -413,6 +429,23 @@ class StatusBarModeRepositoryImplTest : SysuiTestCase() {
        }
        }


    @Test
    @Test
    @EnableChipsModernization
    fun statusBarMode_ongoingProcessRequiresStatusBarVisible_butNotFullscreen_matchesAppearance() =
        testScope.runTest {
            val latest by collectLastValue(underTest.statusBarAppearance)

            underTest.setOngoingProcessRequiresStatusBarVisible(true)

            onSystemBarAttributesChanged(
                requestedVisibleTypes = WindowInsets.Type.statusBars(),
                appearance = APPEARANCE_OPAQUE_STATUS_BARS,
            )

            assertThat(latest!!.mode).isEqualTo(StatusBarMode.OPAQUE)
        }

    @Test
    @DisableChipsModernization
    fun statusBarMode_fullscreenButNotOngoingCall_matchesAppearance() =
    fun statusBarMode_fullscreenButNotOngoingCall_matchesAppearance() =
        testScope.runTest {
        testScope.runTest {
            val latest by collectLastValue(underTest.statusBarAppearance)
            val latest by collectLastValue(underTest.statusBarAppearance)
@@ -426,6 +459,21 @@ class StatusBarModeRepositoryImplTest : SysuiTestCase() {
            assertThat(latest!!.mode).isEqualTo(StatusBarMode.OPAQUE)
            assertThat(latest!!.mode).isEqualTo(StatusBarMode.OPAQUE)
        }
        }


    @Test
    @EnableChipsModernization
    fun statusBarMode_fullscreen_butNotOngoingProcessRequiresStatusBarVisible_matchesAppearance() =
        testScope.runTest {
            val latest by collectLastValue(underTest.statusBarAppearance)

            underTest.setOngoingProcessRequiresStatusBarVisible(false)
            onSystemBarAttributesChanged(
                requestedVisibleTypes = WindowInsets.Type.navigationBars(),
                appearance = APPEARANCE_OPAQUE_STATUS_BARS,
            )

            assertThat(latest!!.mode).isEqualTo(StatusBarMode.OPAQUE)
        }

    @Test
    @Test
    fun statusBarMode_transientShown_semiTransparent() =
    fun statusBarMode_transientShown_semiTransparent() =
        testScope.runTest {
        testScope.runTest {
+9 −17
Original line number Original line Diff line number Diff line
@@ -22,9 +22,9 @@ import com.android.systemui.log.LogBuffer
import com.android.systemui.log.core.LogLevel
import com.android.systemui.log.core.LogLevel
import com.android.systemui.statusbar.chips.StatusBarChipLogTags.pad
import com.android.systemui.statusbar.chips.StatusBarChipLogTags.pad
import com.android.systemui.statusbar.chips.StatusBarChipsLog
import com.android.systemui.statusbar.chips.StatusBarChipsLog
import com.android.systemui.statusbar.phone.ongoingcall.StatusBarChipsModernization
import com.android.systemui.statusbar.phone.ongoingcall.data.repository.OngoingCallRepository
import com.android.systemui.statusbar.phone.ongoingcall.data.repository.OngoingCallRepository
import com.android.systemui.statusbar.phone.ongoingcall.domain.interactor.OngoingCallInteractor
import com.android.systemui.statusbar.phone.ongoingcall.domain.interactor.OngoingCallInteractor
import com.android.systemui.statusbar.phone.ongoingcall.StatusBarChipsModernization
import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCallModel
import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCallModel
import javax.inject.Inject
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.CoroutineScope
@@ -44,23 +44,15 @@ constructor(
    @StatusBarChipsLog private val logger: LogBuffer,
    @StatusBarChipsLog private val logger: LogBuffer,
) {
) {
    val ongoingCallState: StateFlow<OngoingCallModel> =
    val ongoingCallState: StateFlow<OngoingCallModel> =
        (if (StatusBarChipsModernization.isEnabled)
        (if (StatusBarChipsModernization.isEnabled) {
                ongoingCallInteractor.ongoingCallState
                ongoingCallInteractor.ongoingCallState
        else
            } else {
            repository.ongoingCallState)
                repository.ongoingCallState
            })
            .onEach {
            .onEach {
                logger.log(
                logger.log(TAG, LogLevel.INFO, { str1 = it::class.simpleName }, { "State: $str1" })
                    TAG,
                    LogLevel.INFO,
                    { str1 = it::class.simpleName },
                    { "State: $str1" }
                )
            }
            }
            .stateIn(
            .stateIn(scope, SharingStarted.Lazily, OngoingCallModel.NoCall)
                scope,
                SharingStarted.Lazily,
                OngoingCallModel.NoCall
            )


    companion object {
    companion object {
        private val TAG = "OngoingCall".pad()
        private val TAG = "OngoingCall".pad()
+3 −0
Original line number Original line Diff line number Diff line
@@ -76,6 +76,7 @@ object OngoingCallTestHelper {
        promotedContent: PromotedNotificationContentModel? = null,
        promotedContent: PromotedNotificationContentModel? = null,
        contentIntent: PendingIntent? = null,
        contentIntent: PendingIntent? = null,
        uid: Int = DEFAULT_UID,
        uid: Int = DEFAULT_UID,
        appName: String = "Fake name",
    ) {
    ) {
        if (StatusBarChipsModernization.isEnabled) {
        if (StatusBarChipsModernization.isEnabled) {
            activeNotificationListRepository.addNotif(
            activeNotificationListRepository.addNotif(
@@ -87,6 +88,7 @@ object OngoingCallTestHelper {
                    contentIntent = contentIntent,
                    contentIntent = contentIntent,
                    promotedContent = promotedContent,
                    promotedContent = promotedContent,
                    uid = uid,
                    uid = uid,
                    appName = appName,
                )
                )
            )
            )
        } else {
        } else {
@@ -96,6 +98,7 @@ object OngoingCallTestHelper {
                    notificationIcon = statusBarChipIconView,
                    notificationIcon = statusBarChipIconView,
                    intent = contentIntent,
                    intent = contentIntent,
                    notificationKey = key,
                    notificationKey = key,
                    appName = appName,
                    promotedContent = promotedContent,
                    promotedContent = promotedContent,
                )
                )
            )
            )