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

Commit acbaeca7 authored by Anna Bauza's avatar Anna Bauza
Browse files

add ui event metric for user switch

Bug: 260732702
Test: atest UserInteractorTest
Change-Id: I28aaac7de0d5694914601a44d2894f29f1dcc0a7
parent 3690ef88
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ import com.android.systemui.user.legacyhelper.data.LegacyUserDataHelper
import com.android.systemui.user.shared.model.UserActionModel
import com.android.systemui.user.shared.model.UserModel
import com.android.systemui.user.utils.MultiUserActionsEvent
import com.android.systemui.user.utils.MultiUserActionsEventHelper
import com.android.systemui.util.kotlin.pairwise
import java.io.PrintWriter
import javax.inject.Inject
@@ -372,6 +373,9 @@ constructor(
        if (LegacyUserDataHelper.isUser(record)) {
            // It's safe to use checkNotNull around record.info because isUser only returns true
            // if record.info is not null.
            uiEventLogger.log(
                MultiUserActionsEventHelper.userSwitchMetric(checkNotNull(record.info))
            )
            selectUser(checkNotNull(record.info).id, dialogShower)
        } else {
            executeAction(LegacyUserDataHelper.toUserActionModel(record), dialogShower)
+7 −1
Original line number Diff line number Diff line
@@ -23,7 +23,13 @@ enum class MultiUserActionsEvent(val value: Int) : UiEventLogger.UiEventEnum {
    @UiEvent(doc = "Add User tap from User Switcher.") CREATE_USER_FROM_USER_SWITCHER(1257),
    @UiEvent(doc = "Add Guest tap from User Switcher.") CREATE_GUEST_FROM_USER_SWITCHER(1258),
    @UiEvent(doc = "Add Restricted User tap from User Switcher.")
    CREATE_RESTRICTED_USER_FROM_USER_SWITCHER(1259);
    CREATE_RESTRICTED_USER_FROM_USER_SWITCHER(1259),
    @UiEvent(doc = "Switch to   User tap from User Switcher.")
    SWITCH_TO_USER_FROM_USER_SWITCHER(1266),
    @UiEvent(doc = "Switch to  Guest User tap from User Switcher.")
    SWITCH_TO_GUEST_FROM_USER_SWITCHER(1267),
    @UiEvent(doc = "Switch to Restricted User tap from User Switcher.")
    SWITCH_TO_RESTRICTED_USER_FROM_USER_SWITCHER(1268);

    override fun getId(): Int {
        return value
+31 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2022 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.systemui.user.utils

import android.content.pm.UserInfo

class MultiUserActionsEventHelper {
    /** Return MultiUserActionsEvent based on UserInfo. */
    companion object {
        fun userSwitchMetric(userInfo: UserInfo): MultiUserActionsEvent {
            if (userInfo.isGuest) return MultiUserActionsEvent.SWITCH_TO_GUEST_FROM_USER_SWITCHER
            if (userInfo.isRestricted)
                return MultiUserActionsEvent.SWITCH_TO_RESTRICTED_USER_FROM_USER_SWITCHER
            return MultiUserActionsEvent.SWITCH_TO_USER_FROM_USER_SWITCHER
        }
    }
}
+33 −0
Original line number Diff line number Diff line
@@ -175,6 +175,8 @@ class UserInteractorTest : SysuiTestCase() {

            underTest.onRecordSelected(UserRecord(info = userInfos[1]), dialogShower)

            verify(uiEventLogger, times(1))
                .log(MultiUserActionsEvent.SWITCH_TO_USER_FROM_USER_SWITCHER)
            verify(dialogShower).dismiss()
            verify(activityManager).switchUser(userInfos[1].id)
            Unit
@@ -190,6 +192,33 @@ class UserInteractorTest : SysuiTestCase() {

            underTest.onRecordSelected(UserRecord(info = userInfos.last()))

            verify(uiEventLogger, times(1))
                .log(MultiUserActionsEvent.SWITCH_TO_GUEST_FROM_USER_SWITCHER)
            verify(activityManager).switchUser(userInfos.last().id)
            Unit
        }

    @Test
    fun `onRecordSelected - switch to restricted user`() =
        runBlocking(IMMEDIATE) {
            var userInfos = createUserInfos(count = 2, includeGuest = false).toMutableList()
            userInfos.add(
                UserInfo(
                    60,
                    "Restricted user",
                    /* iconPath= */ "",
                    /* flags= */ UserInfo.FLAG_FULL,
                    UserManager.USER_TYPE_FULL_RESTRICTED,
                )
            )
            userRepository.setUserInfos(userInfos)
            userRepository.setSelectedUserInfo(userInfos[0])
            userRepository.setSettings(UserSwitcherSettingsModel(isUserSwitcherEnabled = true))

            underTest.onRecordSelected(UserRecord(info = userInfos.last()))

            verify(uiEventLogger, times(1))
                .log(MultiUserActionsEvent.SWITCH_TO_RESTRICTED_USER_FROM_USER_SWITCHER)
            verify(activityManager).switchUser(userInfos.last().id)
            Unit
        }
@@ -206,6 +235,8 @@ class UserInteractorTest : SysuiTestCase() {

            underTest.onRecordSelected(UserRecord(isGuest = true), dialogShower)

            verify(uiEventLogger, times(1))
                .log(MultiUserActionsEvent.CREATE_GUEST_FROM_USER_SWITCHER)
            verify(dialogShower).dismiss()
            verify(manager).createGuest(any())
            Unit
@@ -221,6 +252,8 @@ class UserInteractorTest : SysuiTestCase() {

            underTest.onRecordSelected(UserRecord(isAddSupervisedUser = true), dialogShower)

            verify(uiEventLogger, times(1))
                .log(MultiUserActionsEvent.CREATE_RESTRICTED_USER_FROM_USER_SWITCHER)
            verify(dialogShower, never()).dismiss()
            verify(activityStarter).startActivity(any(), anyBoolean())
        }