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

Commit e86e616e authored by Darrell Shi's avatar Darrell Shi Committed by Android (Google) Code Review
Browse files

Merge "Do not force home status bar on dream" into main

parents dd1c4a05 63b4fb28
Loading
Loading
Loading
Loading
+60 −0
Original line number Diff line number Diff line
@@ -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
@@ -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
    }
+13 −3
Original line number Diff line number Diff line
@@ -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
@@ -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)
@@ -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].
+11 −9
Original line number Diff line number Diff line
@@ -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
@@ -34,6 +35,7 @@ val Kosmos.ongoingCallInteractor: OngoingCallInteractor by
            statusBarModeRepositoryStore = fakeStatusBarModeRepository,
            statusBarWindowControllerStore = fakeStatusBarWindowControllerStore,
            swipeStatusBarAwayGestureHandler = swipeStatusBarAwayGestureHandler,
            keyguardInteractor = keyguardInteractor,
            logBuffer = logcatLogBuffer("OngoingCallInteractorKosmos"),
        )
    }