diff options
7 files changed, 39 insertions, 1 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BaseUserSwitcherAdapter.kt b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BaseUserSwitcherAdapter.kt index 2b4f51c63043..4c6374b75f82 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BaseUserSwitcherAdapter.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BaseUserSwitcherAdapter.kt @@ -35,7 +35,10 @@ protected constructor( ) : BaseAdapter() { protected open val users: List<UserRecord> - get() = controller.users.filter { !controller.isKeyguardShowing || !it.isRestricted } + get() = controller.users.filter { + (!controller.isKeyguardShowing || !it.isRestricted) && + (controller.isUserSwitcherEnabled || it.isCurrent) + } init { controller.addAdapter(WeakReference(this)) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.kt index 1e223b1920ed..f88339a4d077 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.kt @@ -67,6 +67,9 @@ constructor( val isSimpleUserSwitcher: Boolean get() = userInteractor.isSimpleUserSwitcher + val isUserSwitcherEnabled: Boolean + get() = userInteractor.isUserSwitcherEnabled + /** The [UserRecord] of the current user or `null` when none. */ val currentUserRecord: UserRecord? get() = userInteractor.selectedUserRecord.value diff --git a/packages/SystemUI/src/com/android/systemui/user/data/repository/UserRepository.kt b/packages/SystemUI/src/com/android/systemui/user/data/repository/UserRepository.kt index a0b56aa6f5c3..3de75ca2ed87 100644 --- a/packages/SystemUI/src/com/android/systemui/user/data/repository/UserRepository.kt +++ b/packages/SystemUI/src/com/android/systemui/user/data/repository/UserRepository.kt @@ -105,6 +105,8 @@ interface UserRepository { fun getSelectedUserInfo(): UserInfo fun isSimpleUserSwitcher(): Boolean + + fun isUserSwitcherEnabled(): Boolean } @SysUISingleton @@ -206,6 +208,10 @@ constructor( return _userSwitcherSettings.value.isSimpleUserSwitcher } + override fun isUserSwitcherEnabled(): Boolean { + return _userSwitcherSettings.value.isUserSwitcherEnabled + } + private fun observeUserSwitching() { conflatedCallbackFlow { val callback = diff --git a/packages/SystemUI/src/com/android/systemui/user/domain/interactor/UserInteractor.kt b/packages/SystemUI/src/com/android/systemui/user/domain/interactor/UserInteractor.kt index 27c348ba329a..a487f538e59c 100644 --- a/packages/SystemUI/src/com/android/systemui/user/domain/interactor/UserInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/user/domain/interactor/UserInteractor.kt @@ -294,6 +294,10 @@ constructor( val isSimpleUserSwitcher: Boolean get() = repository.isSimpleUserSwitcher() + + val isUserSwitcherEnabled: Boolean + get() = repository.isUserSwitcherEnabled() + val keyguardUpdateMonitorCallback = object : KeyguardUpdateMonitorCallback() { override fun onKeyguardGoingAway() { @@ -370,6 +374,7 @@ constructor( } pw.println("isSimpleUserSwitcher=$isSimpleUserSwitcher") + pw.println("isUserSwitcherEnabled=$isUserSwitcherEnabled") pw.println("isGuestUserAutoCreated=$isGuestUserAutoCreated") } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BaseUserSwitcherAdapterTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BaseUserSwitcherAdapterTest.kt index 67727ae21641..d1c38f6cbea7 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BaseUserSwitcherAdapterTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BaseUserSwitcherAdapterTest.kt @@ -77,6 +77,7 @@ class BaseUserSwitcherAdapterTest : SysuiTestCase() { ) whenever(controller.users).thenAnswer { users } + whenever(controller.isUserSwitcherEnabled).thenReturn(true) underTest = object : BaseUserSwitcherAdapter(controller) { @@ -162,6 +163,19 @@ class BaseUserSwitcherAdapterTest : SysuiTestCase() { } @Test + fun count_onlyShowsCurrentUserWhenMultiUserDisabled() { + whenever(controller.isUserSwitcherEnabled).thenReturn(false) + assertThat(underTest.count).isEqualTo(1) + assertThat(underTest.getItem(0).isCurrent).isTrue() + } + + @Test + fun count_doesNotIgnoreAllOtherUsersWhenMultiUserEnabled() { + whenever(controller.isUserSwitcherEnabled).thenReturn(true) + assertThat(underTest.count).isEqualTo(users.size) + } + + @Test fun getItem() { assertThat((0 until underTest.count).map { position -> underTest.getItem(position) }) .isEqualTo(users) diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcherAdapterTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcherAdapterTest.kt index 8290dab19bdf..1ab62d00d307 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcherAdapterTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcherAdapterTest.kt @@ -29,6 +29,7 @@ import com.android.systemui.R import com.android.systemui.SysuiTestCase import com.android.systemui.qs.tiles.UserDetailItemView import com.android.systemui.user.data.source.UserRecord +import com.android.systemui.util.mockito.whenever import org.junit.Assert.assertFalse import org.junit.Assert.assertNotNull import org.junit.Assert.assertTrue @@ -68,6 +69,8 @@ class KeyguardUserSwitcherAdapterTest : SysuiTestCase() { fun setUp() { MockitoAnnotations.initMocks(this) + whenever(userSwitcherController.isUserSwitcherEnabled).thenReturn(true) + mContext.addMockSystemService(Context.LAYOUT_INFLATER_SERVICE, layoutInflater) `when`(layoutInflater.inflate(anyInt(), any(ViewGroup::class.java), anyBoolean())) .thenReturn(inflatedUserDetailItemView) diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/user/data/repository/FakeUserRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/user/data/repository/FakeUserRepository.kt index fbc2381c3031..61e5b5fc27ea 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/user/data/repository/FakeUserRepository.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/user/data/repository/FakeUserRepository.kt @@ -79,6 +79,10 @@ class FakeUserRepository : UserRepository { return _userSwitcherSettings.value.isSimpleUserSwitcher } + override fun isUserSwitcherEnabled(): Boolean { + return _userSwitcherSettings.value.isUserSwitcherEnabled + } + fun setUserInfos(infos: List<UserInfo>) { _userInfos.value = infos } |