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

Commit d0c68b38 authored by Anna Bauza's avatar Anna Bauza Committed by Android (Google) Code Review
Browse files

Merge "add settings log to remove and switch user"

parents b842f4c5 225c81df
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -127,7 +127,12 @@ public class UserDetailsSettings extends SettingsPreferenceFragment

    @Override
    public boolean onPreferenceClick(Preference preference) {
        if (preference != null && preference.getKey() != null) {
            mMetricsFeatureProvider.logSettingsTileClick(preference.getKey(), getMetricsCategory());
        }
        if (preference == mRemoveUserPref) {
            mMetricsFeatureProvider.action(getActivity(),
                    UserMetricsUtils.getRemoveUserMetricCategory(mUserInfo));
            if (canDeleteUser()) {
                if (mUserInfo.isGuest()) {
                    showDialog(DIALOG_CONFIRM_RESET_GUEST);
@@ -137,6 +142,8 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
                return true;
            }
        } else if (preference == mSwitchUserPref) {
            mMetricsFeatureProvider.action(getActivity(),
                    UserMetricsUtils.getSwitchUserMetricCategory(mUserInfo));
            if (canSwitchUserNow()) {
                if (shouldShowSetupPromptDialog()) {
                    showDialog(DIALOG_SETUP_USER);
@@ -164,9 +171,13 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        if (preference == mPhonePref) {
            if (Boolean.TRUE.equals(newValue)) {
                mMetricsFeatureProvider.action(getActivity(),
                        SettingsEnums.ACTION_ENABLE_USER_CALL);
                showDialog(DIALOG_CONFIRM_ENABLE_CALLING_AND_SMS);
                return false;
            }
            mMetricsFeatureProvider.action(getActivity(),
                    SettingsEnums.ACTION_DISABLE_USER_CALL);
            enableCallsAndSms(false);
        }
        return true;
@@ -364,9 +375,6 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
    void switchUser() {
        Trace.beginSection("UserDetailSettings.switchUser");
        try {
            if (mUserInfo.isGuest()) {
                mMetricsFeatureProvider.action(getActivity(), SettingsEnums.ACTION_SWITCH_TO_GUEST);
            }
            if (mUserCaps.mIsGuest && mUserCaps.mIsEphemeral) {
                int guestUserId = UserHandle.myUserId();
                // Using markGuestForDeletion allows us to create a new guest before this one is
+56 −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.settings.users;

import android.app.settings.SettingsEnums;
import android.content.pm.UserInfo;

/**
 * Utils class for metrics to avoid user characteristics checks in code
 */
public class UserMetricsUtils {

    /**
     * Returns relevant remove SettingsEnum key depending on UserInfo
     * @param userInfo information about user
     * @return list of RestrictionEntry objects with user-visible text.
     */
    public static int getRemoveUserMetricCategory(UserInfo userInfo) {
        if (userInfo.isGuest()) {
            return  SettingsEnums.ACTION_REMOVE_GUEST_USER;
        }
        if (userInfo.isRestricted()) {
            return SettingsEnums.ACTION_REMOVE_RESTRICTED_USER;
        }
        return SettingsEnums.ACTION_REMOVE_USER;
    }

    /**
     * Returns relevant switch user SettingsEnum key depending on UserInfo
     * @param userInfo information about user
     * @return SettingsEnums.
     */
    public static int getSwitchUserMetricCategory(UserInfo userInfo) {
        if (userInfo.isGuest()) {
            return  SettingsEnums.ACTION_SWITCH_TO_GUEST;
        }
        if (userInfo.isRestricted()) {
            return SettingsEnums.ACTION_SWITCH_TO_RESTRICTED_USER;
        }
        return SettingsEnums.ACTION_SWITCH_TO_USER;
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -1568,6 +1568,7 @@ public class UserSettings extends SettingsPreferenceFragment

    @Override
    public boolean onPreferenceClick(Preference pref) {
        mMetricsFeatureProvider.logSettingsTileClick(pref.getKey(), getMetricsCategory());
        if (isCurrentUserGuest()) {
            if (mGuestResetPreference != null && pref == mGuestResetPreference) {
                showDialog(DIALOG_CONFIRM_RESET_AND_RESTART_GUEST);
+55 −2
Original line number Diff line number Diff line
@@ -91,6 +91,7 @@ public class UserDetailsSettingsTest {
    private static final String KEY_APP_COPYING = "app_copying";

    private static final int DIALOG_CONFIRM_REMOVE = 1;
    private static final int DIALOG_CONFIRM_RESET_GUEST = 4;

    @Mock
    private TelephonyManager mTelephonyManager;
@@ -469,8 +470,24 @@ public class UserDetailsSettingsTest {
        mFragment.onPreferenceClick(mSwitchUserPref);

        verify(mFragment).switchUser();
        verify(mMetricsFeatureProvider, never()).action(any(),
                eq(SettingsEnums.ACTION_SWITCH_TO_GUEST));
        verify(mMetricsFeatureProvider).action(any(),
                eq(SettingsEnums.ACTION_SWITCH_TO_USER));
    }

    @Test
    public void onPreferenceClick_switchToRestrictedClicked_canSwitch_shouldSwitch() {
        setupSelectedRestrictedUser();
        mUserManager.setSwitchabilityStatus(SWITCHABILITY_STATUS_OK);
        mFragment.mSwitchUserPref = mSwitchUserPref;
        mFragment.mRemoveUserPref = mRemoveUserPref;
        mFragment.mAppAndContentAccessPref = mAppAndContentAccessPref;
        mFragment.mUserInfo = mUserInfo;

        mFragment.onPreferenceClick(mSwitchUserPref);

        verify(mFragment).switchUser();
        verify(mMetricsFeatureProvider).action(any(),
                eq(SettingsEnums.ACTION_SWITCH_TO_RESTRICTED_USER));
    }

    @Test
@@ -502,6 +519,41 @@ public class UserDetailsSettingsTest {
        verify(mFragment, never()).switchUser();
    }

    @Test
    public void onPreferenceClick_removeGuestClicked_canDelete_shouldShowDialog() {
        setupSelectedGuest();
        mFragment.mUserInfo = mUserInfo;
        mUserManager.setIsAdminUser(true);
        mFragment.mSwitchUserPref = mSwitchUserPref;
        mFragment.mRemoveUserPref = mRemoveUserPref;
        mFragment.mAppAndContentAccessPref = mAppAndContentAccessPref;
        doNothing().when(mFragment).showDialog(anyInt());

        mFragment.onPreferenceClick(mRemoveUserPref);

        verify(mMetricsFeatureProvider).action(any(), eq(SettingsEnums.ACTION_REMOVE_GUEST_USER));
        verify(mFragment).canDeleteUser();
        verify(mFragment).showDialog(DIALOG_CONFIRM_RESET_GUEST);
    }

    @Test
    public void onPreferenceClick_removeRestrictedClicked_canDelete_shouldShowDialog() {
        setupSelectedRestrictedUser();
        mFragment.mUserInfo = mUserInfo;
        mUserManager.setIsAdminUser(true);
        mFragment.mSwitchUserPref = mSwitchUserPref;
        mFragment.mRemoveUserPref = mRemoveUserPref;
        mFragment.mAppAndContentAccessPref = mAppAndContentAccessPref;
        doNothing().when(mFragment).showDialog(anyInt());

        mFragment.onPreferenceClick(mRemoveUserPref);

        verify(mMetricsFeatureProvider)
                .action(any(), eq(SettingsEnums.ACTION_REMOVE_RESTRICTED_USER));
        verify(mFragment).canDeleteUser();
        verify(mFragment).showDialog(DIALOG_CONFIRM_REMOVE);
    }

    @Test
    public void onPreferenceClick_removeClicked_canDelete_shouldShowDialog() {
        setupSelectedUser();
@@ -514,6 +566,7 @@ public class UserDetailsSettingsTest {

        mFragment.onPreferenceClick(mRemoveUserPref);

        verify(mMetricsFeatureProvider).action(any(), eq(SettingsEnums.ACTION_REMOVE_USER));
        verify(mFragment).canDeleteUser();
        verify(mFragment).showDialog(DIALOG_CONFIRM_REMOVE);
    }