diff options
3 files changed, 39 insertions, 11 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/UserDetailView.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/UserDetailView.java index b6b657ec82f6..57a00c9a1620 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/UserDetailView.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/UserDetailView.java @@ -204,6 +204,15 @@ public class UserDetailView extends PseudoGridView { Trace.endSection(); } + @Override + public void onUserListItemClicked(@NonNull UserRecord record, + @Nullable UserSwitchDialogController.DialogShower dialogShower) { + if (dialogShower != null) { + mDialogShower.dismiss(); + } + super.onUserListItemClicked(record, dialogShower); + } + public void linkToViewGroup(ViewGroup viewGroup) { PseudoGridView.ViewGroupAdapterBridge.link(viewGroup, this); } 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 28a9b97b8ea6..cf4106c508cb 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BaseUserSwitcherAdapter.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BaseUserSwitcherAdapter.kt @@ -61,7 +61,7 @@ protected constructor( * animation to and from the parent dialog. */ @JvmOverloads - fun onUserListItemClicked( + open fun onUserListItemClicked( record: UserRecord, dialogShower: DialogShower? = null, ) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/UserDetailViewAdapterTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/UserDetailViewAdapterTest.kt index bc27bbc13f81..3131f60893c7 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/UserDetailViewAdapterTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/UserDetailViewAdapterTest.kt @@ -30,6 +30,7 @@ import com.android.systemui.R import com.android.systemui.SysuiTestCase import com.android.systemui.classifier.FalsingManagerFake import com.android.systemui.qs.QSUserSwitcherEvent +import com.android.systemui.qs.user.UserSwitchDialogController import com.android.systemui.statusbar.policy.UserSwitcherController import com.android.systemui.user.data.source.UserRecord import org.junit.Assert.assertEquals @@ -41,20 +42,27 @@ import org.mockito.ArgumentMatchers.any import org.mockito.ArgumentMatchers.anyBoolean import org.mockito.ArgumentMatchers.anyInt import org.mockito.Mock -import org.mockito.Mockito.verify import org.mockito.Mockito.`when` +import org.mockito.Mockito.mock +import org.mockito.Mockito.verify import org.mockito.MockitoAnnotations @RunWith(AndroidTestingRunner::class) @SmallTest class UserDetailViewAdapterTest : SysuiTestCase() { - @Mock private lateinit var mUserSwitcherController: UserSwitcherController - @Mock private lateinit var mParent: ViewGroup - @Mock private lateinit var mUserDetailItemView: UserDetailItemView - @Mock private lateinit var mOtherView: View - @Mock private lateinit var mInflatedUserDetailItemView: UserDetailItemView - @Mock private lateinit var mLayoutInflater: LayoutInflater + @Mock + private lateinit var mUserSwitcherController: UserSwitcherController + @Mock + private lateinit var mParent: ViewGroup + @Mock + private lateinit var mUserDetailItemView: UserDetailItemView + @Mock + private lateinit var mOtherView: View + @Mock + private lateinit var mInflatedUserDetailItemView: UserDetailItemView + @Mock + private lateinit var mLayoutInflater: LayoutInflater private var falsingManagerFake: FalsingManagerFake = FalsingManagerFake() private lateinit var adapter: UserDetailView.Adapter private lateinit var uiEventLogger: UiEventLoggerFake @@ -67,10 +75,12 @@ class UserDetailViewAdapterTest : SysuiTestCase() { mContext.addMockSystemService(Context.LAYOUT_INFLATER_SERVICE, mLayoutInflater) `when`(mLayoutInflater.inflate(anyInt(), any(ViewGroup::class.java), anyBoolean())) - .thenReturn(mInflatedUserDetailItemView) + .thenReturn(mInflatedUserDetailItemView) `when`(mParent.context).thenReturn(mContext) - adapter = UserDetailView.Adapter(mContext, mUserSwitcherController, uiEventLogger, - falsingManagerFake) + adapter = UserDetailView.Adapter( + mContext, mUserSwitcherController, uiEventLogger, + falsingManagerFake + ) mPicture = UserIcons.convertToBitmap(mContext.getDrawable(R.drawable.ic_avatar_user)) } @@ -145,6 +155,15 @@ class UserDetailViewAdapterTest : SysuiTestCase() { assertNull(adapter.users.find { it.isManageUsers }) } + @Test + fun clickDismissDialog() { + val shower: UserSwitchDialogController.DialogShower = + mock(UserSwitchDialogController.DialogShower::class.java) + adapter.injectDialogShower(shower) + adapter.onUserListItemClicked(createUserRecord(current = true, guest = false), shower) + verify(shower).dismiss() + } + private fun createUserRecord(current: Boolean, guest: Boolean) = UserRecord( UserInfo(0 /* id */, "name", 0 /* flags */), |