Loading packages/SystemUI/multivalentTests/src/com/android/systemui/user/data/repository/UserRepositoryImplTest.kt +5 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import com.android.systemui.broadcast.broadcastDispatcher import com.android.systemui.kosmos.testDispatcher import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.useUnconfinedTestDispatcher import com.android.systemui.res.R import com.android.systemui.settings.FakeUserTracker import com.android.systemui.testKosmos import com.android.systemui.user.data.model.SelectedUserModel Loading Loading @@ -74,6 +75,10 @@ class UserRepositoryImplTest : SysuiTestCase() { fun setUp() { MockitoAnnotations.initMocks(this) tracker = FakeUserTracker() context.orCreateTestableResources.addOverride( R.bool.config_userSwitchingMustGoThroughLoginScreen, false, ) } @Test Loading packages/SystemUI/src/com/android/systemui/user/data/repository/UserRepository.kt +47 −36 Original line number Diff line number Diff line Loading @@ -348,6 +348,17 @@ constructor( private suspend fun getSettings(): UserSwitcherSettingsModel { return withContext(backgroundDispatcher) { if ( // TODO(b/378068979): remove once login screen-specific logic // is implemented at framework level. appContext.resources.getBoolean(R.bool.config_userSwitchingMustGoThroughLoginScreen) ) { UserSwitcherSettingsModel( isSimpleUserSwitcher = false, isAddUsersFromLockscreen = false, isUserSwitcherEnabled = false, ) } else { val isSimpleUserSwitcher = globalSettings.getInt( SETTING_SIMPLE_USER_SWITCHER, Loading Loading @@ -378,7 +389,6 @@ constructor( 0 }, ) != 0 UserSwitcherSettingsModel( isSimpleUserSwitcher = isSimpleUserSwitcher, isAddUsersFromLockscreen = isAddUsersFromLockscreen, Loading @@ -386,6 +396,7 @@ constructor( ) } } } companion object { private const val TAG = "UserRepository" Loading packages/SystemUI/src/com/android/systemui/user/data/repository/UserSwitcherRepository.kt +11 −2 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.graphics.drawable.Drawable import android.os.Handler import android.os.UserManager import android.provider.Settings.Global.USER_SWITCHER_ENABLED import com.android.app.tracing.coroutines.launchTraced as launch import com.android.systemui.common.coroutine.ChannelExt.trySendWithFailureLogging import com.android.systemui.common.coroutine.ConflatedCallbackFlow.conflatedCallbackFlow import com.android.systemui.dagger.SysUISingleton Loading @@ -40,7 +41,6 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.flowOf import com.android.app.tracing.coroutines.launchTraced as launch import kotlinx.coroutines.withContext interface UserSwitcherRepository { Loading @@ -67,6 +67,9 @@ constructor( private val showUserSwitcherForSingleUser = context.resources.getBoolean(R.bool.qs_show_user_switcher_for_single_user) private val userSwitchingMustGoThroughLoginScreen = context.resources.getBoolean(R.bool.config_userSwitchingMustGoThroughLoginScreen) override val isEnabled: Flow<Boolean> = conflatedCallbackFlow { suspend fun updateState() { trySendWithFailureLogging(isUserSwitcherEnabled(), TAG) Loading Loading @@ -135,9 +138,15 @@ constructor( private suspend fun isUserSwitcherEnabled(): Boolean { return withContext(bgDispatcher) { // TODO(b/378068979): remove once login screen-specific logic // is implemented at framework level. if (userSwitchingMustGoThroughLoginScreen) { false } else { userManager.isUserSwitcherEnabled(showUserSwitcherForSingleUser) } } } private suspend fun getCurrentUser(): String? { return withContext(bgDispatcher) { userSwitcherController.currentUserName } Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/user/data/repository/UserRepositoryImplTest.kt +5 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import com.android.systemui.broadcast.broadcastDispatcher import com.android.systemui.kosmos.testDispatcher import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.useUnconfinedTestDispatcher import com.android.systemui.res.R import com.android.systemui.settings.FakeUserTracker import com.android.systemui.testKosmos import com.android.systemui.user.data.model.SelectedUserModel Loading Loading @@ -74,6 +75,10 @@ class UserRepositoryImplTest : SysuiTestCase() { fun setUp() { MockitoAnnotations.initMocks(this) tracker = FakeUserTracker() context.orCreateTestableResources.addOverride( R.bool.config_userSwitchingMustGoThroughLoginScreen, false, ) } @Test Loading
packages/SystemUI/src/com/android/systemui/user/data/repository/UserRepository.kt +47 −36 Original line number Diff line number Diff line Loading @@ -348,6 +348,17 @@ constructor( private suspend fun getSettings(): UserSwitcherSettingsModel { return withContext(backgroundDispatcher) { if ( // TODO(b/378068979): remove once login screen-specific logic // is implemented at framework level. appContext.resources.getBoolean(R.bool.config_userSwitchingMustGoThroughLoginScreen) ) { UserSwitcherSettingsModel( isSimpleUserSwitcher = false, isAddUsersFromLockscreen = false, isUserSwitcherEnabled = false, ) } else { val isSimpleUserSwitcher = globalSettings.getInt( SETTING_SIMPLE_USER_SWITCHER, Loading Loading @@ -378,7 +389,6 @@ constructor( 0 }, ) != 0 UserSwitcherSettingsModel( isSimpleUserSwitcher = isSimpleUserSwitcher, isAddUsersFromLockscreen = isAddUsersFromLockscreen, Loading @@ -386,6 +396,7 @@ constructor( ) } } } companion object { private const val TAG = "UserRepository" Loading
packages/SystemUI/src/com/android/systemui/user/data/repository/UserSwitcherRepository.kt +11 −2 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.graphics.drawable.Drawable import android.os.Handler import android.os.UserManager import android.provider.Settings.Global.USER_SWITCHER_ENABLED import com.android.app.tracing.coroutines.launchTraced as launch import com.android.systemui.common.coroutine.ChannelExt.trySendWithFailureLogging import com.android.systemui.common.coroutine.ConflatedCallbackFlow.conflatedCallbackFlow import com.android.systemui.dagger.SysUISingleton Loading @@ -40,7 +41,6 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.flowOf import com.android.app.tracing.coroutines.launchTraced as launch import kotlinx.coroutines.withContext interface UserSwitcherRepository { Loading @@ -67,6 +67,9 @@ constructor( private val showUserSwitcherForSingleUser = context.resources.getBoolean(R.bool.qs_show_user_switcher_for_single_user) private val userSwitchingMustGoThroughLoginScreen = context.resources.getBoolean(R.bool.config_userSwitchingMustGoThroughLoginScreen) override val isEnabled: Flow<Boolean> = conflatedCallbackFlow { suspend fun updateState() { trySendWithFailureLogging(isUserSwitcherEnabled(), TAG) Loading Loading @@ -135,9 +138,15 @@ constructor( private suspend fun isUserSwitcherEnabled(): Boolean { return withContext(bgDispatcher) { // TODO(b/378068979): remove once login screen-specific logic // is implemented at framework level. if (userSwitchingMustGoThroughLoginScreen) { false } else { userManager.isUserSwitcherEnabled(showUserSwitcherForSingleUser) } } } private suspend fun getCurrentUser(): String? { return withContext(bgDispatcher) { userSwitcherController.currentUserName } Loading