Loading packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalSettingsRepositoryImplTest.kt +0 −87 Original line number Diff line number Diff line Loading @@ -27,7 +27,6 @@ import android.os.UserManager.USER_TYPE_PROFILE_MANAGED import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import android.platform.test.flag.junit.FlagsParameterization import android.provider.Settings import androidx.test.filters.SmallTest import com.android.systemui.Flags.FLAG_COMMUNAL_HUB import com.android.systemui.Flags.FLAG_GLANCEABLE_HUB_BLURRED_BACKGROUND Loading @@ -36,7 +35,6 @@ import com.android.systemui.SysuiTestCase import com.android.systemui.broadcast.broadcastDispatcher import com.android.systemui.communal.data.repository.CommunalSettingsRepositoryImpl.Companion.GLANCEABLE_HUB_BACKGROUND_SETTING import com.android.systemui.communal.shared.model.CommunalBackgroundType import com.android.systemui.communal.shared.model.WhenToDream import com.android.systemui.flags.Flags.COMMUNAL_SERVICE_ENABLED import com.android.systemui.flags.fakeFeatureFlagsClassic import com.android.systemui.kosmos.Kosmos Loading Loading @@ -237,91 +235,6 @@ class CommunalSettingsRepositoryImplTest(flags: FlagsParameterization?) : SysuiT } } @Test fun whenToDream_charging() = kosmos.runTest { val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) fakeSettings.putIntForUser( Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, 1, PRIMARY_USER.id, ) assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_CHARGING) } @Test fun whenToDream_charging_defaultValue() = kosmos.runTest { mContext.orCreateTestableResources.addOverride( com.android.internal.R.bool.config_dreamsActivatedOnSleepByDefault, true, ) val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_CHARGING) } @Test fun whenToDream_docked() = kosmos.runTest { val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) fakeSettings.putIntForUser( Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK, 1, PRIMARY_USER.id, ) assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_DOCKED) } @Test fun whenToDream_docked_defaultValue() = kosmos.runTest { mContext.orCreateTestableResources.addOverride( com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault, true, ) val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_DOCKED) } @Test fun whenToDream_postured() = kosmos.runTest { val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) fakeSettings.putIntForUser( Settings.Secure.SCREENSAVER_ACTIVATE_ON_POSTURED, 1, PRIMARY_USER.id, ) assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_POSTURED) } @Test fun whenToDream_postured_defaultValue() = kosmos.runTest { mContext.orCreateTestableResources.addOverride( com.android.internal.R.bool.config_dreamsActivatedOnPosturedByDefault, true, ) val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_POSTURED) } @Test fun whenToDream_default() = kosmos.runTest { val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) assertThat(whenToDreamState).isEqualTo(WhenToDream.NEVER) } private fun setKeyguardFeaturesDisabled(user: UserInfo, disabledFlags: Int) { whenever(kosmos.devicePolicyManager.getKeyguardDisabledFeatures(nullable(), eq(user.id))) .thenReturn(disabledFlags) Loading packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/data/repository/DreamSettingsRepositoryImplTest.kt 0 → 100644 +190 −0 Original line number Diff line number Diff line /* * Copyright (C) 2025 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.systemui.dreams.data.repository import android.content.pm.UserInfo import android.content.res.mainResources import android.provider.Settings import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.dreams.shared.model.WhenToDream import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.collectLastValue import com.android.systemui.kosmos.runTest import com.android.systemui.kosmos.useUnconfinedTestDispatcher import com.android.systemui.testKosmos import com.android.systemui.util.settings.fakeSettings import com.google.common.truth.Truth.assertThat import org.junit.After import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @SmallTest @RunWith(AndroidJUnit4::class) class DreamSettingsRepositoryImplTest : SysuiTestCase() { private val kosmos = testKosmos() .apply { mainResources = mContext.orCreateTestableResources.resources } .useUnconfinedTestDispatcher() private val Kosmos.underTest by Kosmos.Fixture { dreamSettingsRepository } @Before fun setUp() { mContext.orCreateTestableResources.addOverride( com.android.internal.R.bool.config_dreamsEnabledByDefault, true, ) mContext.orCreateTestableResources.addOverride( com.android.internal.R.bool.config_dreamsActivatedOnSleepByDefault, false, ) mContext.orCreateTestableResources.addOverride( com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault, false, ) mContext.orCreateTestableResources.addOverride( com.android.internal.R.bool.config_dreamsActivatedOnPosturedByDefault, false, ) } @After fun tearDown() { mContext.orCreateTestableResources.removeOverride( com.android.internal.R.bool.config_dreamsActivatedOnSleepByDefault ) mContext.orCreateTestableResources.removeOverride( com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault ) mContext.orCreateTestableResources.removeOverride( com.android.internal.R.bool.config_dreamsActivatedOnPosturedByDefault ) } @Test fun whenToDream_charging() = kosmos.runTest { val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) fakeSettings.putIntForUser( Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, 1, PRIMARY_USER.id, ) assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_CHARGING) } @Test fun whenToDream_charging_defaultValue() = kosmos.runTest { mContext.orCreateTestableResources.addOverride( com.android.internal.R.bool.config_dreamsActivatedOnSleepByDefault, true, ) val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_CHARGING) } @Test fun whenToDream_docked() = kosmos.runTest { val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) fakeSettings.putIntForUser( Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK, 1, PRIMARY_USER.id, ) assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_DOCKED) } @Test fun whenToDream_docked_defaultValue() = kosmos.runTest { mContext.orCreateTestableResources.addOverride( com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault, true, ) val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_DOCKED) } @Test fun whenToDream_postured() = kosmos.runTest { val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) fakeSettings.putIntForUser( Settings.Secure.SCREENSAVER_ACTIVATE_ON_POSTURED, 1, PRIMARY_USER.id, ) assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_POSTURED) } @Test fun whenToDream_postured_defaultValue() = kosmos.runTest { mContext.orCreateTestableResources.addOverride( com.android.internal.R.bool.config_dreamsActivatedOnPosturedByDefault, true, ) val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_POSTURED) } @Test fun whenToDream_overriddenByEnabled() = kosmos.runTest { mContext.orCreateTestableResources.addOverride( com.android.internal.R.bool.config_dreamsActivatedOnPosturedByDefault, true, ) fakeSettings.putBoolForUser(Settings.Secure.SCREENSAVER_ENABLED, false, PRIMARY_USER.id) val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) assertThat(whenToDreamState).isEqualTo(WhenToDream.NEVER) fakeSettings.putBoolForUser(Settings.Secure.SCREENSAVER_ENABLED, true, PRIMARY_USER.id) assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_POSTURED) } @Test fun whenToDream_default() = kosmos.runTest { val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) assertThat(whenToDreamState).isEqualTo(WhenToDream.NEVER) } private companion object { val PRIMARY_USER = UserInfo(/* id= */ 0, /* name= */ "primary user", /* flags= */ UserInfo.FLAG_MAIN) } } packages/SystemUI/src/com/android/systemui/communal/DevicePosturingListener.kt +4 −4 Original line number Diff line number Diff line Loading @@ -22,12 +22,12 @@ import android.service.dreams.Flags.allowDreamWhenPostured import com.android.app.tracing.coroutines.launchInTraced import com.android.systemui.CoreStartable import com.android.systemui.common.domain.interactor.BatteryInteractor import com.android.systemui.communal.domain.interactor.CommunalSettingsInteractor import com.android.systemui.communal.posturing.domain.interactor.PosturingInteractor import com.android.systemui.communal.posturing.shared.model.PosturedState import com.android.systemui.communal.shared.model.WhenToDream import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dreams.domain.interactor.DreamSettingsInteractor import com.android.systemui.dreams.shared.model.WhenToDream import com.android.systemui.log.dagger.CommunalTableLog import com.android.systemui.log.table.TableLogBuffer import com.android.systemui.log.table.logDiffsForTable Loading @@ -50,7 +50,7 @@ constructor( private val commandRegistry: CommandRegistry, private val dreamManager: DreamManager, private val posturingInteractor: PosturingInteractor, communalSettingsInteractor: CommunalSettingsInteractor, dreamSettingsInteractor: DreamSettingsInteractor, batteryInteractor: BatteryInteractor, @Background private val bgScope: CoroutineScope, @CommunalTableLog private val tableLogBuffer: TableLogBuffer, Loading @@ -62,7 +62,7 @@ constructor( private val postured = allOf( batteryInteractor.isDevicePluggedIn, communalSettingsInteractor.whenToDream.map { it == WhenToDream.WHILE_POSTURED }, dreamSettingsInteractor.whenToDream.map { it == WhenToDream.WHILE_POSTURED }, ) .flatMapLatestConflated { shouldListen -> if (shouldListen) { Loading packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalSettingsRepository.kt +2 −65 Original line number Diff line number Diff line Loading @@ -31,7 +31,6 @@ import com.android.systemui.communal.data.model.FEATURE_ALL import com.android.systemui.communal.data.model.SuppressionReason import com.android.systemui.communal.data.repository.CommunalSettingsRepositoryModule.Companion.DEFAULT_BACKGROUND_TYPE import com.android.systemui.communal.shared.model.CommunalBackgroundType import com.android.systemui.communal.shared.model.WhenToDream import com.android.systemui.communal.shared.model.WhenToStartHub import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Background Loading Loading @@ -59,12 +58,6 @@ interface CommunalSettingsRepository { */ fun setSuppressionReasons(reasons: List<SuppressionReason>) /** * Returns a [WhenToDream] for the specified user, indicating what state the device should be in * to trigger dreams. */ fun getWhenToDreamState(user: UserInfo): Flow<WhenToDream> /** * Returns a[WhenToStartHub] for the specified user, indicating what state the device should be * in to automatically display the hub. Loading @@ -90,8 +83,8 @@ interface CommunalSettingsRepository { * Returns true if the Android config config_glanceableHubEnabled and the glanceable_hub_v2 flag * are enabled. * * This should be used to flag off new glanceable hub or dream behavior that should launch * together with the new hub experience that brings the hub to mobile. * This should be used to flag off new glanceable hub that should launch together with the new * hub experience that brings the hub to mobile. * * The trunk-stable flag is controlled by server rollout and is on all devices. The Android * config flag is enabled via resource overlay only on products we want the hub to be present Loading @@ -118,19 +111,6 @@ constructor( private val devicePolicyManager: DevicePolicyManager, @Named(DEFAULT_BACKGROUND_TYPE) private val defaultBackgroundType: CommunalBackgroundType, ) : CommunalSettingsRepository { private val dreamsActivatedOnSleepByDefault by lazy { resources.getBoolean(com.android.internal.R.bool.config_dreamsActivatedOnSleepByDefault) } private val dreamsActivatedOnDockByDefault by lazy { resources.getBoolean(com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault) } private val dreamsActivatedOnPosturedByDefault by lazy { resources.getBoolean(com.android.internal.R.bool.config_dreamsActivatedOnPosturedByDefault) } private val whenToStartHubByDefault by lazy { resources.getInteger(com.android.internal.R.integer.config_whenToStartHubModeDefault) } Loading Loading @@ -163,49 +143,6 @@ constructor( glanceableHubV2() } override fun getWhenToDreamState(user: UserInfo): Flow<WhenToDream> = secureSettings .observerFlow( userId = user.id, names = arrayOf( Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK, Settings.Secure.SCREENSAVER_ACTIVATE_ON_POSTURED, ), ) .emitOnStart() .map { if ( secureSettings.getBoolForUser( Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, dreamsActivatedOnSleepByDefault, user.id, ) ) { WhenToDream.WHILE_CHARGING } else if ( secureSettings.getBoolForUser( Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK, dreamsActivatedOnDockByDefault, user.id, ) ) { WhenToDream.WHILE_DOCKED } else if ( secureSettings.getBoolForUser( Settings.Secure.SCREENSAVER_ACTIVATE_ON_POSTURED, dreamsActivatedOnPosturedByDefault, user.id, ) ) { WhenToDream.WHILE_POSTURED } else { WhenToDream.NEVER } } .flowOn(bgDispatcher) override fun getWhenToStartHubState(user: UserInfo): Flow<WhenToStartHub> { if (!getV2FlagEnabled()) { return MutableStateFlow(WhenToStartHub.NEVER) Loading packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalSettingsInteractor.kt +0 −7 Original line number Diff line number Diff line Loading @@ -23,7 +23,6 @@ import com.android.systemui.communal.data.model.FEATURE_MANUAL_OPEN import com.android.systemui.communal.data.model.SuppressionReason import com.android.systemui.communal.data.repository.CommunalSettingsRepository import com.android.systemui.communal.shared.model.CommunalBackgroundType import com.android.systemui.communal.shared.model.WhenToDream import com.android.systemui.communal.shared.model.WhenToStartHub import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Background Loading Loading @@ -74,12 +73,6 @@ constructor( .isEnabled(FEATURE_AUTO_OPEN) .stateIn(scope = bgScope, started = SharingStarted.Eagerly, initialValue = false) /** When to dream for the currently selected user. */ val whenToDream: Flow<WhenToDream> = userInteractor.selectedUserInfo.flatMapLatestConflated { user -> repository.getWhenToDreamState(user) } /** When to automatically start hub for the currently selected user. */ val whenToStartHub: Flow<WhenToStartHub> = userInteractor.selectedUserInfo.flatMapLatest { user -> Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalSettingsRepositoryImplTest.kt +0 −87 Original line number Diff line number Diff line Loading @@ -27,7 +27,6 @@ import android.os.UserManager.USER_TYPE_PROFILE_MANAGED import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import android.platform.test.flag.junit.FlagsParameterization import android.provider.Settings import androidx.test.filters.SmallTest import com.android.systemui.Flags.FLAG_COMMUNAL_HUB import com.android.systemui.Flags.FLAG_GLANCEABLE_HUB_BLURRED_BACKGROUND Loading @@ -36,7 +35,6 @@ import com.android.systemui.SysuiTestCase import com.android.systemui.broadcast.broadcastDispatcher import com.android.systemui.communal.data.repository.CommunalSettingsRepositoryImpl.Companion.GLANCEABLE_HUB_BACKGROUND_SETTING import com.android.systemui.communal.shared.model.CommunalBackgroundType import com.android.systemui.communal.shared.model.WhenToDream import com.android.systemui.flags.Flags.COMMUNAL_SERVICE_ENABLED import com.android.systemui.flags.fakeFeatureFlagsClassic import com.android.systemui.kosmos.Kosmos Loading Loading @@ -237,91 +235,6 @@ class CommunalSettingsRepositoryImplTest(flags: FlagsParameterization?) : SysuiT } } @Test fun whenToDream_charging() = kosmos.runTest { val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) fakeSettings.putIntForUser( Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, 1, PRIMARY_USER.id, ) assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_CHARGING) } @Test fun whenToDream_charging_defaultValue() = kosmos.runTest { mContext.orCreateTestableResources.addOverride( com.android.internal.R.bool.config_dreamsActivatedOnSleepByDefault, true, ) val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_CHARGING) } @Test fun whenToDream_docked() = kosmos.runTest { val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) fakeSettings.putIntForUser( Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK, 1, PRIMARY_USER.id, ) assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_DOCKED) } @Test fun whenToDream_docked_defaultValue() = kosmos.runTest { mContext.orCreateTestableResources.addOverride( com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault, true, ) val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_DOCKED) } @Test fun whenToDream_postured() = kosmos.runTest { val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) fakeSettings.putIntForUser( Settings.Secure.SCREENSAVER_ACTIVATE_ON_POSTURED, 1, PRIMARY_USER.id, ) assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_POSTURED) } @Test fun whenToDream_postured_defaultValue() = kosmos.runTest { mContext.orCreateTestableResources.addOverride( com.android.internal.R.bool.config_dreamsActivatedOnPosturedByDefault, true, ) val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_POSTURED) } @Test fun whenToDream_default() = kosmos.runTest { val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) assertThat(whenToDreamState).isEqualTo(WhenToDream.NEVER) } private fun setKeyguardFeaturesDisabled(user: UserInfo, disabledFlags: Int) { whenever(kosmos.devicePolicyManager.getKeyguardDisabledFeatures(nullable(), eq(user.id))) .thenReturn(disabledFlags) Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/data/repository/DreamSettingsRepositoryImplTest.kt 0 → 100644 +190 −0 Original line number Diff line number Diff line /* * Copyright (C) 2025 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.systemui.dreams.data.repository import android.content.pm.UserInfo import android.content.res.mainResources import android.provider.Settings import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.dreams.shared.model.WhenToDream import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.collectLastValue import com.android.systemui.kosmos.runTest import com.android.systemui.kosmos.useUnconfinedTestDispatcher import com.android.systemui.testKosmos import com.android.systemui.util.settings.fakeSettings import com.google.common.truth.Truth.assertThat import org.junit.After import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @SmallTest @RunWith(AndroidJUnit4::class) class DreamSettingsRepositoryImplTest : SysuiTestCase() { private val kosmos = testKosmos() .apply { mainResources = mContext.orCreateTestableResources.resources } .useUnconfinedTestDispatcher() private val Kosmos.underTest by Kosmos.Fixture { dreamSettingsRepository } @Before fun setUp() { mContext.orCreateTestableResources.addOverride( com.android.internal.R.bool.config_dreamsEnabledByDefault, true, ) mContext.orCreateTestableResources.addOverride( com.android.internal.R.bool.config_dreamsActivatedOnSleepByDefault, false, ) mContext.orCreateTestableResources.addOverride( com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault, false, ) mContext.orCreateTestableResources.addOverride( com.android.internal.R.bool.config_dreamsActivatedOnPosturedByDefault, false, ) } @After fun tearDown() { mContext.orCreateTestableResources.removeOverride( com.android.internal.R.bool.config_dreamsActivatedOnSleepByDefault ) mContext.orCreateTestableResources.removeOverride( com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault ) mContext.orCreateTestableResources.removeOverride( com.android.internal.R.bool.config_dreamsActivatedOnPosturedByDefault ) } @Test fun whenToDream_charging() = kosmos.runTest { val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) fakeSettings.putIntForUser( Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, 1, PRIMARY_USER.id, ) assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_CHARGING) } @Test fun whenToDream_charging_defaultValue() = kosmos.runTest { mContext.orCreateTestableResources.addOverride( com.android.internal.R.bool.config_dreamsActivatedOnSleepByDefault, true, ) val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_CHARGING) } @Test fun whenToDream_docked() = kosmos.runTest { val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) fakeSettings.putIntForUser( Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK, 1, PRIMARY_USER.id, ) assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_DOCKED) } @Test fun whenToDream_docked_defaultValue() = kosmos.runTest { mContext.orCreateTestableResources.addOverride( com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault, true, ) val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_DOCKED) } @Test fun whenToDream_postured() = kosmos.runTest { val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) fakeSettings.putIntForUser( Settings.Secure.SCREENSAVER_ACTIVATE_ON_POSTURED, 1, PRIMARY_USER.id, ) assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_POSTURED) } @Test fun whenToDream_postured_defaultValue() = kosmos.runTest { mContext.orCreateTestableResources.addOverride( com.android.internal.R.bool.config_dreamsActivatedOnPosturedByDefault, true, ) val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_POSTURED) } @Test fun whenToDream_overriddenByEnabled() = kosmos.runTest { mContext.orCreateTestableResources.addOverride( com.android.internal.R.bool.config_dreamsActivatedOnPosturedByDefault, true, ) fakeSettings.putBoolForUser(Settings.Secure.SCREENSAVER_ENABLED, false, PRIMARY_USER.id) val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) assertThat(whenToDreamState).isEqualTo(WhenToDream.NEVER) fakeSettings.putBoolForUser(Settings.Secure.SCREENSAVER_ENABLED, true, PRIMARY_USER.id) assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_POSTURED) } @Test fun whenToDream_default() = kosmos.runTest { val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER)) assertThat(whenToDreamState).isEqualTo(WhenToDream.NEVER) } private companion object { val PRIMARY_USER = UserInfo(/* id= */ 0, /* name= */ "primary user", /* flags= */ UserInfo.FLAG_MAIN) } }
packages/SystemUI/src/com/android/systemui/communal/DevicePosturingListener.kt +4 −4 Original line number Diff line number Diff line Loading @@ -22,12 +22,12 @@ import android.service.dreams.Flags.allowDreamWhenPostured import com.android.app.tracing.coroutines.launchInTraced import com.android.systemui.CoreStartable import com.android.systemui.common.domain.interactor.BatteryInteractor import com.android.systemui.communal.domain.interactor.CommunalSettingsInteractor import com.android.systemui.communal.posturing.domain.interactor.PosturingInteractor import com.android.systemui.communal.posturing.shared.model.PosturedState import com.android.systemui.communal.shared.model.WhenToDream import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dreams.domain.interactor.DreamSettingsInteractor import com.android.systemui.dreams.shared.model.WhenToDream import com.android.systemui.log.dagger.CommunalTableLog import com.android.systemui.log.table.TableLogBuffer import com.android.systemui.log.table.logDiffsForTable Loading @@ -50,7 +50,7 @@ constructor( private val commandRegistry: CommandRegistry, private val dreamManager: DreamManager, private val posturingInteractor: PosturingInteractor, communalSettingsInteractor: CommunalSettingsInteractor, dreamSettingsInteractor: DreamSettingsInteractor, batteryInteractor: BatteryInteractor, @Background private val bgScope: CoroutineScope, @CommunalTableLog private val tableLogBuffer: TableLogBuffer, Loading @@ -62,7 +62,7 @@ constructor( private val postured = allOf( batteryInteractor.isDevicePluggedIn, communalSettingsInteractor.whenToDream.map { it == WhenToDream.WHILE_POSTURED }, dreamSettingsInteractor.whenToDream.map { it == WhenToDream.WHILE_POSTURED }, ) .flatMapLatestConflated { shouldListen -> if (shouldListen) { Loading
packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalSettingsRepository.kt +2 −65 Original line number Diff line number Diff line Loading @@ -31,7 +31,6 @@ import com.android.systemui.communal.data.model.FEATURE_ALL import com.android.systemui.communal.data.model.SuppressionReason import com.android.systemui.communal.data.repository.CommunalSettingsRepositoryModule.Companion.DEFAULT_BACKGROUND_TYPE import com.android.systemui.communal.shared.model.CommunalBackgroundType import com.android.systemui.communal.shared.model.WhenToDream import com.android.systemui.communal.shared.model.WhenToStartHub import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Background Loading Loading @@ -59,12 +58,6 @@ interface CommunalSettingsRepository { */ fun setSuppressionReasons(reasons: List<SuppressionReason>) /** * Returns a [WhenToDream] for the specified user, indicating what state the device should be in * to trigger dreams. */ fun getWhenToDreamState(user: UserInfo): Flow<WhenToDream> /** * Returns a[WhenToStartHub] for the specified user, indicating what state the device should be * in to automatically display the hub. Loading @@ -90,8 +83,8 @@ interface CommunalSettingsRepository { * Returns true if the Android config config_glanceableHubEnabled and the glanceable_hub_v2 flag * are enabled. * * This should be used to flag off new glanceable hub or dream behavior that should launch * together with the new hub experience that brings the hub to mobile. * This should be used to flag off new glanceable hub that should launch together with the new * hub experience that brings the hub to mobile. * * The trunk-stable flag is controlled by server rollout and is on all devices. The Android * config flag is enabled via resource overlay only on products we want the hub to be present Loading @@ -118,19 +111,6 @@ constructor( private val devicePolicyManager: DevicePolicyManager, @Named(DEFAULT_BACKGROUND_TYPE) private val defaultBackgroundType: CommunalBackgroundType, ) : CommunalSettingsRepository { private val dreamsActivatedOnSleepByDefault by lazy { resources.getBoolean(com.android.internal.R.bool.config_dreamsActivatedOnSleepByDefault) } private val dreamsActivatedOnDockByDefault by lazy { resources.getBoolean(com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault) } private val dreamsActivatedOnPosturedByDefault by lazy { resources.getBoolean(com.android.internal.R.bool.config_dreamsActivatedOnPosturedByDefault) } private val whenToStartHubByDefault by lazy { resources.getInteger(com.android.internal.R.integer.config_whenToStartHubModeDefault) } Loading Loading @@ -163,49 +143,6 @@ constructor( glanceableHubV2() } override fun getWhenToDreamState(user: UserInfo): Flow<WhenToDream> = secureSettings .observerFlow( userId = user.id, names = arrayOf( Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK, Settings.Secure.SCREENSAVER_ACTIVATE_ON_POSTURED, ), ) .emitOnStart() .map { if ( secureSettings.getBoolForUser( Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, dreamsActivatedOnSleepByDefault, user.id, ) ) { WhenToDream.WHILE_CHARGING } else if ( secureSettings.getBoolForUser( Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK, dreamsActivatedOnDockByDefault, user.id, ) ) { WhenToDream.WHILE_DOCKED } else if ( secureSettings.getBoolForUser( Settings.Secure.SCREENSAVER_ACTIVATE_ON_POSTURED, dreamsActivatedOnPosturedByDefault, user.id, ) ) { WhenToDream.WHILE_POSTURED } else { WhenToDream.NEVER } } .flowOn(bgDispatcher) override fun getWhenToStartHubState(user: UserInfo): Flow<WhenToStartHub> { if (!getV2FlagEnabled()) { return MutableStateFlow(WhenToStartHub.NEVER) Loading
packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalSettingsInteractor.kt +0 −7 Original line number Diff line number Diff line Loading @@ -23,7 +23,6 @@ import com.android.systemui.communal.data.model.FEATURE_MANUAL_OPEN import com.android.systemui.communal.data.model.SuppressionReason import com.android.systemui.communal.data.repository.CommunalSettingsRepository import com.android.systemui.communal.shared.model.CommunalBackgroundType import com.android.systemui.communal.shared.model.WhenToDream import com.android.systemui.communal.shared.model.WhenToStartHub import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Background Loading Loading @@ -74,12 +73,6 @@ constructor( .isEnabled(FEATURE_AUTO_OPEN) .stateIn(scope = bgScope, started = SharingStarted.Eagerly, initialValue = false) /** When to dream for the currently selected user. */ val whenToDream: Flow<WhenToDream> = userInteractor.selectedUserInfo.flatMapLatestConflated { user -> repository.getWhenToDreamState(user) } /** When to automatically start hub for the currently selected user. */ val whenToStartHub: Flow<WhenToStartHub> = userInteractor.selectedUserInfo.flatMapLatest { user -> Loading