Loading packages/SystemUI/multivalentTests/src/com/android/systemui/lowlight/LowLightBehaviorCoreStartableTest.kt +32 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -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) Loading @@ -68,6 +72,7 @@ class LowLightBehaviorCoreStartableTest : SysuiTestCase() { Kosmos.Fixture { LowLightBehaviorCoreStartable( lowLightInteractor = lowLightInteractor, lowLightSettingsInteractor = lowLightSettingInteractor, dreamSettingsInteractor = dreamSettingsInteractorKosmos, displayStateInteractor = displayStateInteractor, logger = logger, Loading Loading @@ -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 Loading Loading @@ -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 { Loading packages/SystemUI/res/values/config.xml +3 −0 Original line number Diff line number Diff line Loading @@ -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" /> Loading packages/SystemUI/src/com/android/systemui/lowlight/LowLightBehaviorCoreStartable.kt +7 −1 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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, Loading Loading @@ -168,7 +170,11 @@ constructor( ), anyOf( isLowLight, not(userLockedInteractor.isUserUnlocked(UserHandle.CURRENT)), if (lowLightSettingsInteractor.allowLowLightBehaviorWhenLocked) { not(userLockedInteractor.isUserUnlocked(UserHandle.CURRENT)) } else { flowOf(false) }, ), ) } else { Loading packages/SystemUI/src/com/android/systemui/lowlight/data/repository/LowLightSettingsRepository.kt +7 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 Loading Loading @@ -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 Loading packages/SystemUI/src/com/android/systemui/lowlight/domain/interactor/LowLightSettingsInteractor.kt +3 −0 Original line number Diff line number Diff line Loading @@ -43,4 +43,7 @@ constructor( userInteractor.selectedUserInfo.flatMapLatestConflated { user -> settingsRepository.getLowLightDisplayBehaviorEnabled(user) } val allowLowLightBehaviorWhenLocked: Boolean get() = settingsRepository.allowLowLightBehaviorWhenLocked } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/lowlight/LowLightBehaviorCoreStartableTest.kt +32 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -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) Loading @@ -68,6 +72,7 @@ class LowLightBehaviorCoreStartableTest : SysuiTestCase() { Kosmos.Fixture { LowLightBehaviorCoreStartable( lowLightInteractor = lowLightInteractor, lowLightSettingsInteractor = lowLightSettingInteractor, dreamSettingsInteractor = dreamSettingsInteractorKosmos, displayStateInteractor = displayStateInteractor, logger = logger, Loading Loading @@ -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 Loading Loading @@ -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 { Loading
packages/SystemUI/res/values/config.xml +3 −0 Original line number Diff line number Diff line Loading @@ -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" /> Loading
packages/SystemUI/src/com/android/systemui/lowlight/LowLightBehaviorCoreStartable.kt +7 −1 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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, Loading Loading @@ -168,7 +170,11 @@ constructor( ), anyOf( isLowLight, not(userLockedInteractor.isUserUnlocked(UserHandle.CURRENT)), if (lowLightSettingsInteractor.allowLowLightBehaviorWhenLocked) { not(userLockedInteractor.isUserUnlocked(UserHandle.CURRENT)) } else { flowOf(false) }, ), ) } else { Loading
packages/SystemUI/src/com/android/systemui/lowlight/data/repository/LowLightSettingsRepository.kt +7 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 Loading Loading @@ -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 Loading
packages/SystemUI/src/com/android/systemui/lowlight/domain/interactor/LowLightSettingsInteractor.kt +3 −0 Original line number Diff line number Diff line Loading @@ -43,4 +43,7 @@ constructor( userInteractor.selectedUserInfo.flatMapLatestConflated { user -> settingsRepository.getLowLightDisplayBehaviorEnabled(user) } val allowLowLightBehaviorWhenLocked: Boolean get() = settingsRepository.allowLowLightBehaviorWhenLocked }