Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 20aec82f authored by Aaron Liu's avatar Aaron Liu
Browse files

[User Switcher] dismiss dialog appropriately.

Dismisses the dialog in the phone user switcher when an action is
selected. This will dismiss the dialog when adding a user, adding a
supervised user, and going to manage users settings.

Bug: 254704051
Test: Unit tests and open phone user switcher. I spammed the buttons,
and observed that the dialog has disappeared. I switched users and
created guests.

Change-Id: Ib3929c8b7d95c5aed6da0c18c10a2c1f5793d163
parent fd6c3092
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -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);
        }
+1 −1
Original line number Diff line number Diff line
@@ -61,7 +61,7 @@ protected constructor(
     * animation to and from the parent dialog.
     */
    @JvmOverloads
    fun onUserListItemClicked(
    open fun onUserListItemClicked(
        record: UserRecord,
        dialogShower: DialogShower? = null,
    ) {
+29 −10
Original line number Diff line number Diff line
@@ -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
@@ -69,8 +77,10 @@ class UserDetailViewAdapterTest : SysuiTestCase() {
        `when`(mLayoutInflater.inflate(anyInt(), any(ViewGroup::class.java), anyBoolean()))
            .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 */),