Loading packages/SystemUI/src/com/android/systemui/user/data/repository/UserRepository.kt +2 −0 Original line number Diff line number Diff line Loading @@ -321,6 +321,7 @@ constructor( return when { isAddUser -> false isAddSupervisedUser -> false isManageUsers -> false isGuest -> info != null else -> true } Loading @@ -346,6 +347,7 @@ constructor( isAddUser -> UserActionModel.ADD_USER isAddSupervisedUser -> UserActionModel.ADD_SUPERVISED_USER isGuest -> UserActionModel.ENTER_GUEST_MODE isManageUsers -> UserActionModel.NAVIGATE_TO_USER_MANAGEMENT else -> error("Don't know how to convert to UserActionModel: $this") } } Loading packages/SystemUI/src/com/android/systemui/user/domain/interactor/UserInteractor.kt +1 −12 Original line number Diff line number Diff line Loading @@ -236,18 +236,7 @@ constructor( } .flatMapLatest { isActionable -> if (isActionable) { repository.actions.map { actions -> actions + if (actions.isNotEmpty()) { // If we have actions, we add NAVIGATE_TO_USER_MANAGEMENT // because that's a user switcher specific action that is // not known to the our data source or other features. listOf(UserActionModel.NAVIGATE_TO_USER_MANAGEMENT) } else { // If no actions, don't add the navigate action. emptyList() } } repository.actions } else { // If not actionable it means that we're not allowed to show actions // when Loading packages/SystemUI/src/com/android/systemui/user/ui/viewmodel/UserSwitcherViewModel.kt +1 −11 Original line number Diff line number Diff line Loading @@ -62,17 +62,7 @@ private constructor( val isMenuVisible: Flow<Boolean> = _isMenuVisible /** The user action menu. */ val menu: Flow<List<UserActionViewModel>> = userInteractor.actions.map { actions -> if (isNewImpl && actions.isNotEmpty()) { // If we have actions, we add NAVIGATE_TO_USER_MANAGEMENT because that's a user // switcher specific action that is not known to the our data source or other // features. actions + listOf(UserActionModel.NAVIGATE_TO_USER_MANAGEMENT) } else { actions } .map { action -> toViewModel(action) } } userInteractor.actions.map { actions -> actions.map { action -> toViewModel(action) } } /** Whether the button to open the user action menu is visible. */ val isOpenMenuButtonVisible: Flow<Boolean> = menu.map { it.isNotEmpty() } Loading packages/SystemUI/tests/src/com/android/systemui/user/data/repository/UserRepositoryImplUnrefactoredTest.kt +5 −1 Original line number Diff line number Diff line Loading @@ -97,6 +97,7 @@ class UserRepositoryImplUnrefactoredTest : UserRepositoryImplTest() { createUserRecord(2), createActionRecord(UserActionModel.ADD_SUPERVISED_USER), createActionRecord(UserActionModel.ENTER_GUEST_MODE), createActionRecord(UserActionModel.NAVIGATE_TO_USER_MANAGEMENT), ) ) var models: List<UserModel>? = null Loading Loading @@ -176,15 +177,17 @@ class UserRepositoryImplUnrefactoredTest : UserRepositoryImplTest() { createUserRecord(2), createActionRecord(UserActionModel.ADD_SUPERVISED_USER), createActionRecord(UserActionModel.ENTER_GUEST_MODE), createActionRecord(UserActionModel.NAVIGATE_TO_USER_MANAGEMENT), ) ) var models: List<UserActionModel>? = null val job = underTest.actions.onEach { models = it }.launchIn(this) assertThat(models).hasSize(3) assertThat(models).hasSize(4) assertThat(models?.get(0)).isEqualTo(UserActionModel.ADD_USER) assertThat(models?.get(1)).isEqualTo(UserActionModel.ADD_SUPERVISED_USER) assertThat(models?.get(2)).isEqualTo(UserActionModel.ENTER_GUEST_MODE) assertThat(models?.get(3)).isEqualTo(UserActionModel.NAVIGATE_TO_USER_MANAGEMENT) job.cancel() } Loading @@ -200,6 +203,7 @@ class UserRepositoryImplUnrefactoredTest : UserRepositoryImplTest() { isAddUser = action == UserActionModel.ADD_USER, isAddSupervisedUser = action == UserActionModel.ADD_SUPERVISED_USER, isGuest = action == UserActionModel.ENTER_GUEST_MODE, isManageUsers = action == UserActionModel.NAVIGATE_TO_USER_MANAGEMENT, ) } } packages/SystemUI/tests/src/com/android/systemui/user/domain/interactor/UserInteractorUnrefactoredTest.kt +7 −21 Original line number Diff line number Diff line Loading @@ -64,13 +64,7 @@ open class UserInteractorUnrefactoredTest : UserInteractorTest() { @Test fun `actions - not actionable when locked and not locked`() = runBlocking(IMMEDIATE) { userRepository.setActions( listOf( UserActionModel.ENTER_GUEST_MODE, UserActionModel.ADD_USER, UserActionModel.ADD_SUPERVISED_USER, ) ) setActions() userRepository.setActionableWhenLocked(false) keyguardRepository.setKeyguardShowing(false) Loading @@ -92,13 +86,7 @@ open class UserInteractorUnrefactoredTest : UserInteractorTest() { @Test fun `actions - actionable when locked and not locked`() = runBlocking(IMMEDIATE) { userRepository.setActions( listOf( UserActionModel.ENTER_GUEST_MODE, UserActionModel.ADD_USER, UserActionModel.ADD_SUPERVISED_USER, ) ) setActions() userRepository.setActionableWhenLocked(true) keyguardRepository.setKeyguardShowing(false) Loading @@ -120,13 +108,7 @@ open class UserInteractorUnrefactoredTest : UserInteractorTest() { @Test fun `actions - actionable when locked and locked`() = runBlocking(IMMEDIATE) { userRepository.setActions( listOf( UserActionModel.ENTER_GUEST_MODE, UserActionModel.ADD_USER, UserActionModel.ADD_SUPERVISED_USER, ) ) setActions() userRepository.setActionableWhenLocked(true) keyguardRepository.setKeyguardShowing(true) Loading Loading @@ -182,6 +164,10 @@ open class UserInteractorUnrefactoredTest : UserInteractorTest() { verify(activityStarter).startActivity(any(), anyBoolean()) } private fun setActions() { userRepository.setActions(UserActionModel.values().toList()) } companion object { private val IMMEDIATE = Dispatchers.Main.immediate } Loading Loading
packages/SystemUI/src/com/android/systemui/user/data/repository/UserRepository.kt +2 −0 Original line number Diff line number Diff line Loading @@ -321,6 +321,7 @@ constructor( return when { isAddUser -> false isAddSupervisedUser -> false isManageUsers -> false isGuest -> info != null else -> true } Loading @@ -346,6 +347,7 @@ constructor( isAddUser -> UserActionModel.ADD_USER isAddSupervisedUser -> UserActionModel.ADD_SUPERVISED_USER isGuest -> UserActionModel.ENTER_GUEST_MODE isManageUsers -> UserActionModel.NAVIGATE_TO_USER_MANAGEMENT else -> error("Don't know how to convert to UserActionModel: $this") } } Loading
packages/SystemUI/src/com/android/systemui/user/domain/interactor/UserInteractor.kt +1 −12 Original line number Diff line number Diff line Loading @@ -236,18 +236,7 @@ constructor( } .flatMapLatest { isActionable -> if (isActionable) { repository.actions.map { actions -> actions + if (actions.isNotEmpty()) { // If we have actions, we add NAVIGATE_TO_USER_MANAGEMENT // because that's a user switcher specific action that is // not known to the our data source or other features. listOf(UserActionModel.NAVIGATE_TO_USER_MANAGEMENT) } else { // If no actions, don't add the navigate action. emptyList() } } repository.actions } else { // If not actionable it means that we're not allowed to show actions // when Loading
packages/SystemUI/src/com/android/systemui/user/ui/viewmodel/UserSwitcherViewModel.kt +1 −11 Original line number Diff line number Diff line Loading @@ -62,17 +62,7 @@ private constructor( val isMenuVisible: Flow<Boolean> = _isMenuVisible /** The user action menu. */ val menu: Flow<List<UserActionViewModel>> = userInteractor.actions.map { actions -> if (isNewImpl && actions.isNotEmpty()) { // If we have actions, we add NAVIGATE_TO_USER_MANAGEMENT because that's a user // switcher specific action that is not known to the our data source or other // features. actions + listOf(UserActionModel.NAVIGATE_TO_USER_MANAGEMENT) } else { actions } .map { action -> toViewModel(action) } } userInteractor.actions.map { actions -> actions.map { action -> toViewModel(action) } } /** Whether the button to open the user action menu is visible. */ val isOpenMenuButtonVisible: Flow<Boolean> = menu.map { it.isNotEmpty() } Loading
packages/SystemUI/tests/src/com/android/systemui/user/data/repository/UserRepositoryImplUnrefactoredTest.kt +5 −1 Original line number Diff line number Diff line Loading @@ -97,6 +97,7 @@ class UserRepositoryImplUnrefactoredTest : UserRepositoryImplTest() { createUserRecord(2), createActionRecord(UserActionModel.ADD_SUPERVISED_USER), createActionRecord(UserActionModel.ENTER_GUEST_MODE), createActionRecord(UserActionModel.NAVIGATE_TO_USER_MANAGEMENT), ) ) var models: List<UserModel>? = null Loading Loading @@ -176,15 +177,17 @@ class UserRepositoryImplUnrefactoredTest : UserRepositoryImplTest() { createUserRecord(2), createActionRecord(UserActionModel.ADD_SUPERVISED_USER), createActionRecord(UserActionModel.ENTER_GUEST_MODE), createActionRecord(UserActionModel.NAVIGATE_TO_USER_MANAGEMENT), ) ) var models: List<UserActionModel>? = null val job = underTest.actions.onEach { models = it }.launchIn(this) assertThat(models).hasSize(3) assertThat(models).hasSize(4) assertThat(models?.get(0)).isEqualTo(UserActionModel.ADD_USER) assertThat(models?.get(1)).isEqualTo(UserActionModel.ADD_SUPERVISED_USER) assertThat(models?.get(2)).isEqualTo(UserActionModel.ENTER_GUEST_MODE) assertThat(models?.get(3)).isEqualTo(UserActionModel.NAVIGATE_TO_USER_MANAGEMENT) job.cancel() } Loading @@ -200,6 +203,7 @@ class UserRepositoryImplUnrefactoredTest : UserRepositoryImplTest() { isAddUser = action == UserActionModel.ADD_USER, isAddSupervisedUser = action == UserActionModel.ADD_SUPERVISED_USER, isGuest = action == UserActionModel.ENTER_GUEST_MODE, isManageUsers = action == UserActionModel.NAVIGATE_TO_USER_MANAGEMENT, ) } }
packages/SystemUI/tests/src/com/android/systemui/user/domain/interactor/UserInteractorUnrefactoredTest.kt +7 −21 Original line number Diff line number Diff line Loading @@ -64,13 +64,7 @@ open class UserInteractorUnrefactoredTest : UserInteractorTest() { @Test fun `actions - not actionable when locked and not locked`() = runBlocking(IMMEDIATE) { userRepository.setActions( listOf( UserActionModel.ENTER_GUEST_MODE, UserActionModel.ADD_USER, UserActionModel.ADD_SUPERVISED_USER, ) ) setActions() userRepository.setActionableWhenLocked(false) keyguardRepository.setKeyguardShowing(false) Loading @@ -92,13 +86,7 @@ open class UserInteractorUnrefactoredTest : UserInteractorTest() { @Test fun `actions - actionable when locked and not locked`() = runBlocking(IMMEDIATE) { userRepository.setActions( listOf( UserActionModel.ENTER_GUEST_MODE, UserActionModel.ADD_USER, UserActionModel.ADD_SUPERVISED_USER, ) ) setActions() userRepository.setActionableWhenLocked(true) keyguardRepository.setKeyguardShowing(false) Loading @@ -120,13 +108,7 @@ open class UserInteractorUnrefactoredTest : UserInteractorTest() { @Test fun `actions - actionable when locked and locked`() = runBlocking(IMMEDIATE) { userRepository.setActions( listOf( UserActionModel.ENTER_GUEST_MODE, UserActionModel.ADD_USER, UserActionModel.ADD_SUPERVISED_USER, ) ) setActions() userRepository.setActionableWhenLocked(true) keyguardRepository.setKeyguardShowing(true) Loading Loading @@ -182,6 +164,10 @@ open class UserInteractorUnrefactoredTest : UserInteractorTest() { verify(activityStarter).startActivity(any(), anyBoolean()) } private fun setActions() { userRepository.setActions(UserActionModel.values().toList()) } companion object { private val IMMEDIATE = Dispatchers.Main.immediate } Loading