Loading src/com/android/settings/users/UserDetailsSettings.java +11 −3 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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); Loading Loading @@ -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; Loading Loading @@ -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 Loading src/com/android/settings/users/UserMetricsUtils.java 0 → 100644 +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; } } src/com/android/settings/users/UserSettings.java +1 −0 Original line number Diff line number Diff line Loading @@ -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); Loading tests/robotests/src/com/android/settings/users/UserDetailsSettingsTest.java +55 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading Loading @@ -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(); Loading @@ -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); } Loading Loading
src/com/android/settings/users/UserDetailsSettings.java +11 −3 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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); Loading Loading @@ -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; Loading Loading @@ -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 Loading
src/com/android/settings/users/UserMetricsUtils.java 0 → 100644 +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; } }
src/com/android/settings/users/UserSettings.java +1 −0 Original line number Diff line number Diff line Loading @@ -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); Loading
tests/robotests/src/com/android/settings/users/UserDetailsSettingsTest.java +55 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading Loading @@ -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(); Loading @@ -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); } Loading