summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/BaseUserSwitcherAdapter.kt5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/user/data/repository/UserRepository.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/user/domain/interactor/UserInteractor.kt5
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BaseUserSwitcherAdapterTest.kt14
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcherAdapterTest.kt3
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/user/data/repository/FakeUserRepository.kt4
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
}