Loading packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ongoingcall/domain/interactor/OngoingCallInteractorTest.kt +60 −0 Original line number Diff line number Diff line Loading @@ -17,12 +17,16 @@ package com.android.systemui.statusbar.phone.ongoingcall.domain.interactor import android.app.PendingIntent import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.activity.data.repository.activityManagerRepository import com.android.systemui.activity.data.repository.fake import com.android.systemui.ambient.statusbar.shared.flag.OngoingActivityChipsOnDream import com.android.systemui.coroutines.collectLastValue import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository import com.android.systemui.kosmos.collectLastValue import com.android.systemui.kosmos.runTest import com.android.systemui.kosmos.useUnconfinedTestDispatcher Loading Loading @@ -343,6 +347,62 @@ class OngoingCallInteractorTest : SysuiTestCase() { assertThat(requiresStatusBarVisibleInWindowController).isFalse() } @DisableFlags(OngoingActivityChipsOnDream.FLAG_NAME) @Test fun ongoingCallNotificationAndDreaming_flagDisabled_setsRequiresStatusBarVisibleTrue() = kosmos.runTest { val isStatusBarRequired by collectLastValue(underTest.isStatusBarRequiredForOngoingCall) val requiresStatusBarVisibleInRepository by collectLastValue( kosmos.fakeStatusBarModeRepository.defaultDisplay .ongoingProcessRequiresStatusBarVisible ) val requiresStatusBarVisibleInWindowController by collectLastValue( kosmos.fakeStatusBarWindowControllerStore.defaultDisplay .ongoingProcessRequiresStatusBarVisible ) addOngoingCallState() assertThat(isStatusBarRequired).isTrue() assertThat(requiresStatusBarVisibleInRepository).isTrue() assertThat(requiresStatusBarVisibleInWindowController).isTrue() kosmos.fakeKeyguardRepository.setDreamingWithOverlay(true) assertThat(isStatusBarRequired).isTrue() assertThat(requiresStatusBarVisibleInRepository).isTrue() assertThat(requiresStatusBarVisibleInWindowController).isTrue() } @EnableFlags(OngoingActivityChipsOnDream.FLAG_NAME) @Test fun ongoingCallNotificationAndDreaming_flagEnabled_setsRequiresStatusBarVisibleFalse() = kosmos.runTest { val isStatusBarRequired by collectLastValue(underTest.isStatusBarRequiredForOngoingCall) val requiresStatusBarVisibleInRepository by collectLastValue( kosmos.fakeStatusBarModeRepository.defaultDisplay .ongoingProcessRequiresStatusBarVisible ) val requiresStatusBarVisibleInWindowController by collectLastValue( kosmos.fakeStatusBarWindowControllerStore.defaultDisplay .ongoingProcessRequiresStatusBarVisible ) addOngoingCallState() assertThat(isStatusBarRequired).isTrue() assertThat(requiresStatusBarVisibleInRepository).isTrue() assertThat(requiresStatusBarVisibleInWindowController).isTrue() kosmos.fakeKeyguardRepository.setDreamingWithOverlay(true) assertThat(isStatusBarRequired).isFalse() assertThat(requiresStatusBarVisibleInRepository).isFalse() assertThat(requiresStatusBarVisibleInWindowController).isFalse() } companion object { private const val UID = 885 } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/domain/interactor/OngoingCallInteractor.kt +13 −3 Original line number Diff line number Diff line Loading @@ -19,8 +19,10 @@ package com.android.systemui.statusbar.phone.ongoingcall.domain.interactor import androidx.annotation.VisibleForTesting import com.android.systemui.CoreStartable import com.android.systemui.activity.data.repository.ActivityManagerRepository import com.android.systemui.ambient.statusbar.shared.flag.OngoingActivityChipsOnDream import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor import com.android.systemui.log.LogBuffer import com.android.systemui.log.core.Logger import com.android.systemui.statusbar.data.repository.StatusBarModeRepositoryStore Loading Loading @@ -63,6 +65,7 @@ constructor( private val statusBarWindowControllerStore: StatusBarWindowControllerStore, private val swipeStatusBarAwayGestureHandler: SwipeStatusBarAwayGestureHandler, activeNotificationsInteractor: ActiveNotificationsInteractor, keyguardInteractor: KeyguardInteractor, @OngoingCallLog private val logBuffer: LogBuffer, ) : CoreStartable { private val logger = Logger(logBuffer, TAG) Loading @@ -86,9 +89,16 @@ constructor( // TODO(b/400720280): maybe put this inside [OngoingCallModel]. @VisibleForTesting val isStatusBarRequiredForOngoingCall = combine(ongoingCallState, isChipSwipedAway) { callState, chipSwipedAway -> combine(ongoingCallState, isChipSwipedAway, keyguardInteractor.isDreamingWithOverlay) { callState, chipSwipedAway, isDreamingWithOverlay -> callState.willCallChipBeVisible() && // Don't force-show the status bar if the user has already swiped it away. callState.willCallChipBeVisible() && !chipSwipedAway !chipSwipedAway && // Don't force-show the status bar if currently dreaming with overlay, as the // overlay render its own status bar !(OngoingActivityChipsOnDream.isEnabled && isDreamingWithOverlay) } // TODO(b/400720280): maybe put this inside [OngoingCallModel]. Loading packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ongoingcall/domain/interactor/OngoingCallInteractorKosmos.kt +11 −9 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.systemui.statusbar.phone.ongoingcall.domain.interactor import com.android.systemui.activity.data.repository.activityManagerRepository import com.android.systemui.keyguard.domain.interactor.keyguardInteractor import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.applicationCoroutineScope import com.android.systemui.log.logcatLogBuffer Loading @@ -34,6 +35,7 @@ val Kosmos.ongoingCallInteractor: OngoingCallInteractor by statusBarModeRepositoryStore = fakeStatusBarModeRepository, statusBarWindowControllerStore = fakeStatusBarWindowControllerStore, swipeStatusBarAwayGestureHandler = swipeStatusBarAwayGestureHandler, keyguardInteractor = keyguardInteractor, logBuffer = logcatLogBuffer("OngoingCallInteractorKosmos"), ) } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ongoingcall/domain/interactor/OngoingCallInteractorTest.kt +60 −0 Original line number Diff line number Diff line Loading @@ -17,12 +17,16 @@ package com.android.systemui.statusbar.phone.ongoingcall.domain.interactor import android.app.PendingIntent import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.activity.data.repository.activityManagerRepository import com.android.systemui.activity.data.repository.fake import com.android.systemui.ambient.statusbar.shared.flag.OngoingActivityChipsOnDream import com.android.systemui.coroutines.collectLastValue import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository import com.android.systemui.kosmos.collectLastValue import com.android.systemui.kosmos.runTest import com.android.systemui.kosmos.useUnconfinedTestDispatcher Loading Loading @@ -343,6 +347,62 @@ class OngoingCallInteractorTest : SysuiTestCase() { assertThat(requiresStatusBarVisibleInWindowController).isFalse() } @DisableFlags(OngoingActivityChipsOnDream.FLAG_NAME) @Test fun ongoingCallNotificationAndDreaming_flagDisabled_setsRequiresStatusBarVisibleTrue() = kosmos.runTest { val isStatusBarRequired by collectLastValue(underTest.isStatusBarRequiredForOngoingCall) val requiresStatusBarVisibleInRepository by collectLastValue( kosmos.fakeStatusBarModeRepository.defaultDisplay .ongoingProcessRequiresStatusBarVisible ) val requiresStatusBarVisibleInWindowController by collectLastValue( kosmos.fakeStatusBarWindowControllerStore.defaultDisplay .ongoingProcessRequiresStatusBarVisible ) addOngoingCallState() assertThat(isStatusBarRequired).isTrue() assertThat(requiresStatusBarVisibleInRepository).isTrue() assertThat(requiresStatusBarVisibleInWindowController).isTrue() kosmos.fakeKeyguardRepository.setDreamingWithOverlay(true) assertThat(isStatusBarRequired).isTrue() assertThat(requiresStatusBarVisibleInRepository).isTrue() assertThat(requiresStatusBarVisibleInWindowController).isTrue() } @EnableFlags(OngoingActivityChipsOnDream.FLAG_NAME) @Test fun ongoingCallNotificationAndDreaming_flagEnabled_setsRequiresStatusBarVisibleFalse() = kosmos.runTest { val isStatusBarRequired by collectLastValue(underTest.isStatusBarRequiredForOngoingCall) val requiresStatusBarVisibleInRepository by collectLastValue( kosmos.fakeStatusBarModeRepository.defaultDisplay .ongoingProcessRequiresStatusBarVisible ) val requiresStatusBarVisibleInWindowController by collectLastValue( kosmos.fakeStatusBarWindowControllerStore.defaultDisplay .ongoingProcessRequiresStatusBarVisible ) addOngoingCallState() assertThat(isStatusBarRequired).isTrue() assertThat(requiresStatusBarVisibleInRepository).isTrue() assertThat(requiresStatusBarVisibleInWindowController).isTrue() kosmos.fakeKeyguardRepository.setDreamingWithOverlay(true) assertThat(isStatusBarRequired).isFalse() assertThat(requiresStatusBarVisibleInRepository).isFalse() assertThat(requiresStatusBarVisibleInWindowController).isFalse() } companion object { private const val UID = 885 } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/domain/interactor/OngoingCallInteractor.kt +13 −3 Original line number Diff line number Diff line Loading @@ -19,8 +19,10 @@ package com.android.systemui.statusbar.phone.ongoingcall.domain.interactor import androidx.annotation.VisibleForTesting import com.android.systemui.CoreStartable import com.android.systemui.activity.data.repository.ActivityManagerRepository import com.android.systemui.ambient.statusbar.shared.flag.OngoingActivityChipsOnDream import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor import com.android.systemui.log.LogBuffer import com.android.systemui.log.core.Logger import com.android.systemui.statusbar.data.repository.StatusBarModeRepositoryStore Loading Loading @@ -63,6 +65,7 @@ constructor( private val statusBarWindowControllerStore: StatusBarWindowControllerStore, private val swipeStatusBarAwayGestureHandler: SwipeStatusBarAwayGestureHandler, activeNotificationsInteractor: ActiveNotificationsInteractor, keyguardInteractor: KeyguardInteractor, @OngoingCallLog private val logBuffer: LogBuffer, ) : CoreStartable { private val logger = Logger(logBuffer, TAG) Loading @@ -86,9 +89,16 @@ constructor( // TODO(b/400720280): maybe put this inside [OngoingCallModel]. @VisibleForTesting val isStatusBarRequiredForOngoingCall = combine(ongoingCallState, isChipSwipedAway) { callState, chipSwipedAway -> combine(ongoingCallState, isChipSwipedAway, keyguardInteractor.isDreamingWithOverlay) { callState, chipSwipedAway, isDreamingWithOverlay -> callState.willCallChipBeVisible() && // Don't force-show the status bar if the user has already swiped it away. callState.willCallChipBeVisible() && !chipSwipedAway !chipSwipedAway && // Don't force-show the status bar if currently dreaming with overlay, as the // overlay render its own status bar !(OngoingActivityChipsOnDream.isEnabled && isDreamingWithOverlay) } // TODO(b/400720280): maybe put this inside [OngoingCallModel]. Loading
packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ongoingcall/domain/interactor/OngoingCallInteractorKosmos.kt +11 −9 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.systemui.statusbar.phone.ongoingcall.domain.interactor import com.android.systemui.activity.data.repository.activityManagerRepository import com.android.systemui.keyguard.domain.interactor.keyguardInteractor import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.applicationCoroutineScope import com.android.systemui.log.logcatLogBuffer Loading @@ -34,6 +35,7 @@ val Kosmos.ongoingCallInteractor: OngoingCallInteractor by statusBarModeRepositoryStore = fakeStatusBarModeRepository, statusBarWindowControllerStore = fakeStatusBarWindowControllerStore, swipeStatusBarAwayGestureHandler = swipeStatusBarAwayGestureHandler, keyguardInteractor = keyguardInteractor, logBuffer = logcatLogBuffer("OngoingCallInteractorKosmos"), ) }