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

Commit 88098a86 authored by Bryce Lee's avatar Bryce Lee Committed by Android (Google) Code Review
Browse files

Merge "Only enable low light behavior by config when locked." into main

parents 8ef1bc5e f64730ca
Loading
Loading
Loading
Loading
+32 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
 */
package com.android.systemui.lowlight

import android.content.res.mockResources
import android.platform.test.annotations.EnableFlags
import android.provider.Settings
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -37,12 +38,14 @@ import com.android.systemui.log.logcatLogBuffer
import com.android.systemui.lowlight.data.repository.lowLightRepository
import com.android.systemui.lowlight.data.repository.lowLightSettingsRepository
import com.android.systemui.lowlight.domain.interactor.lowLightInteractor
import com.android.systemui.lowlight.domain.interactor.lowLightSettingInteractor
import com.android.systemui.lowlight.shared.model.LowLightDisplayBehavior
import com.android.systemui.lowlight.shell.lowLightBehaviorShellCommand
import com.android.systemui.lowlight.shell.lowLightShellCommand
import com.android.systemui.lowlightclock.LowLightLogger
import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAwakeForTest
import com.android.systemui.power.domain.interactor.powerInteractor
import com.android.systemui.res.R
import com.android.systemui.settings.userTracker
import com.android.systemui.testKosmos
import com.android.systemui.user.data.repository.fakeUserRepository
@@ -54,6 +57,7 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.kotlin.mock
import org.mockito.kotlin.whenever

@SmallTest
@RunWith(AndroidJUnit4::class)
@@ -68,6 +72,7 @@ class LowLightBehaviorCoreStartableTest : SysuiTestCase() {
        Kosmos.Fixture {
            LowLightBehaviorCoreStartable(
                lowLightInteractor = lowLightInteractor,
                lowLightSettingsInteractor = lowLightSettingInteractor,
                dreamSettingsInteractor = dreamSettingsInteractorKosmos,
                displayStateInteractor = displayStateInteractor,
                logger = logger,
@@ -98,6 +103,11 @@ class LowLightBehaviorCoreStartableTest : SysuiTestCase() {
        fakeUserRepository.setUserUnlocked(selectedUserInteractor.getSelectedUserId(), unlocked)
    }

    private fun Kosmos.setAllowLowLightWhenLocked(allowed: Boolean) {
        whenever(mockResources.getBoolean(R.bool.config_allowLowLightBehaviorWhenLocked))
            .thenReturn(allowed)
    }

    private val action = FakeActivatable()

    @Before
@@ -148,6 +158,28 @@ class LowLightBehaviorCoreStartableTest : SysuiTestCase() {
            assertThat(action.activationCount).isEqualTo(1)
        }

    @Test
    fun testWhenAllowLowLightBehaviorWhenLockedAndUserLocked_lowLightBehaviorActivates() =
        kosmos.runTest {
            setUserUnlocked(false)
            setAllowLowLightWhenLocked(true)
            underTest.start()
            setDisplayOn(true)

            assertThat(action.activationCount).isEqualTo(1)
        }

    @Test
    fun testWhenDisallowLowLightBehaviorWhenLockedAndUserLocked_LowLightBehaviorDoesNotActivate() =
        kosmos.runTest {
            setUserUnlocked(false)
            setAllowLowLightWhenLocked(false)
            underTest.start()
            setDisplayOn(true)

            assertThat(action.activationCount).isEqualTo(0)
        }

    @Test
    fun testSetAmbientLowLightWhenDisabledInLowLight() =
        kosmos.runTest {
+3 −0
Original line number Diff line number Diff line
@@ -1116,6 +1116,9 @@
    <!-- The dream component used when the device is low light environment. -->
    <string translatable="false" name="config_lowLightDreamComponent"/>

    <!-- Determines whether low light should be allowed pre-unlock -->
    <bool translatable="false" name="config_allowLowLightBehaviorWhenLocked">false</bool>

    <!-- Configuration for wallpaper focal area -->
    <bool name="center_align_focal_area_shape">false</bool>
    <string name="focal_area_target" translatable="false" />
+7 −1
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import com.android.systemui.dreams.domain.interactor.DreamSettingsInteractor
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
import com.android.systemui.keyguard.shared.model.DozeStateModel.Companion.isDozeOff
import com.android.systemui.lowlight.domain.interactor.LowLightInteractor
import com.android.systemui.lowlight.domain.interactor.LowLightSettingsInteractor
import com.android.systemui.lowlight.shared.model.LowLightActionEntry
import com.android.systemui.lowlight.shared.model.LowLightDisplayBehavior
import com.android.systemui.lowlight.shared.model.ScreenState
@@ -63,6 +64,7 @@ constructor(
    private val dreamSettingsInteractor: DreamSettingsInteractor,
    displayStateInteractor: DisplayStateInteractor,
    private val lowLightInteractor: LowLightInteractor,
    private val lowLightSettingsInteractor: LowLightSettingsInteractor,
    private val logger: LowLightLogger,
    @Background private val scope: CoroutineScope,
    private val userLockedInteractor: UserLockedInteractor,
@@ -168,7 +170,11 @@ constructor(
                        ),
                        anyOf(
                            isLowLight,
                            not(userLockedInteractor.isUserUnlocked(UserHandle.CURRENT)),
                            if (lowLightSettingsInteractor.allowLowLightBehaviorWhenLocked) {
                                not(userLockedInteractor.isUserUnlocked(UserHandle.CURRENT))
                            } else {
                                flowOf(false)
                            },
                        ),
                    )
                } else {
+7 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.provider.Settings
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.lowlight.shared.model.LowLightDisplayBehavior
import com.android.systemui.res.R
import com.android.systemui.util.kotlin.emitOnStart
import com.android.systemui.util.settings.SecureSettings
import com.android.systemui.util.settings.SettingsProxyExt.observerFlow
@@ -57,6 +58,8 @@ interface LowLightSettingsRepository {

    /** Sets the {@link LowLightDisplayBehavior} for the given user. */
    fun setLowLightDisplayBehavior(user: UserInfo, behavior: LowLightDisplayBehavior)

    val allowLowLightBehaviorWhenLocked: Boolean
}

class LowLightSettingsRepositoryImpl
@@ -133,6 +136,10 @@ constructor(
        )
    }

    override val allowLowLightBehaviorWhenLocked by lazy {
        resources.getBoolean(R.bool.config_allowLowLightBehaviorWhenLocked)
    }

    private fun Int.toLowLightDisplayBehavior(): LowLightDisplayBehavior {
        return when (this) {
            Settings.Secure.LOW_LIGHT_DISPLAY_BEHAVIOR_NO_DREAM -> LowLightDisplayBehavior.NO_DREAM
+3 −0
Original line number Diff line number Diff line
@@ -43,4 +43,7 @@ constructor(
        userInteractor.selectedUserInfo.flatMapLatestConflated { user ->
            settingsRepository.getLowLightDisplayBehaviorEnabled(user)
        }

    val allowLowLightBehaviorWhenLocked: Boolean
        get() = settingsRepository.allowLowLightBehaviorWhenLocked
}
Loading