Merge "Add UI metrics for granting admin rights from User Switcher"

This commit is contained in:
Tetiana Meronyk
2023-01-19 23:00:11 +00:00
committed by Android (Google) Code Review
4 changed files with 53 additions and 0 deletions

View File

@@ -185,9 +185,13 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
enableCallsAndSms(false);
} else if (preference == mGrantAdminPref) {
if (Boolean.FALSE.equals(newValue)) {
mMetricsFeatureProvider.action(getActivity(),
SettingsEnums.ACTION_REVOKE_ADMIN_FROM_SETTINGS);
showDialog(DIALOG_CONFIRM_REVOKE_ADMIN);
return false;
}
mMetricsFeatureProvider.action(getActivity(),
SettingsEnums.ACTION_GRANT_ADMIN_FROM_SETTINGS);
updateUserAdminStatus(true);
}
return true;

View File

@@ -948,6 +948,13 @@ public class UserSettings extends SettingsPreferenceFragment
getActivity(),
(grantAdmin) -> {
mGrantAdmin = grantAdmin;
if (mGrantAdmin) {
mMetricsFeatureProvider.action(getActivity(),
SettingsEnums.ACTION_GRANT_ADMIN_FROM_SETTINGS_CREATION_DIALOG);
} else {
mMetricsFeatureProvider.action(getActivity(),
SettingsEnums.ACTION_NOT_GRANT_ADMIN_FROM_SETTINGS_CREATION_DIALOG);
}
showDialog(DIALOG_USER_PROFILE_EDITOR_ADD_USER);
},
() -> {

View File

@@ -263,4 +263,11 @@ public class ShadowUserManager extends org.robolectric.shadows.ShadowUserManager
}
return isSuccess;
}
@Implementation
protected void setUserAdmin(@UserIdInt int userId) {
for (int i = 0; i < mUserProfileInfos.size(); i++) {
mUserProfileInfos.get(i).flags |= UserInfo.FLAG_ADMIN;
}
}
}

View File

@@ -725,6 +725,32 @@ public class UserDetailsSettingsTest {
verify(mFragment).removePreference(KEY_GRANT_ADMIN);
}
@Test
public void onPreferenceChange_grantAdminClicked_isNotAdmin_shouldLogGrantAdmin() {
setupSelectedUser();
mFragment.mUserInfo = mUserInfo;
mFragment.mGrantAdminPref = mGrantAdminPref;
doNothing().when(mFragment).showDialog(anyInt());
mFragment.onPreferenceChange(mGrantAdminPref, true);
verify(mMetricsFeatureProvider).action(any(),
eq(SettingsEnums.ACTION_GRANT_ADMIN_FROM_SETTINGS));
}
@Test
public void onPreferenceChange_grantAdminClicked_isAdmin_shouldLogRevokeAdmin() {
setupSelectedAdminUser();
mFragment.mUserInfo = mUserInfo;
mFragment.mGrantAdminPref = mGrantAdminPref;
doNothing().when(mFragment).showDialog(anyInt());
mFragment.onPreferenceChange(mGrantAdminPref, false);
verify(mMetricsFeatureProvider).action(any(),
eq(SettingsEnums.ACTION_REVOKE_ADMIN_FROM_SETTINGS));
}
private void setupSelectedUser() {
mArguments.putInt("user_id", 1);
mUserInfo = new UserInfo(1, "Tom", null,
@@ -743,6 +769,15 @@ public class UserDetailsSettingsTest {
mUserManager.addProfile(mUserInfo);
}
private void setupSelectedAdminUser() {
mArguments.putInt("user_id", 12);
mUserInfo = new UserInfo(12, "Andy", null,
UserInfo.FLAG_FULL | UserInfo.FLAG_INITIALIZED | UserInfo.FLAG_ADMIN,
UserManager.USER_TYPE_FULL_SECONDARY);
mUserManager.addProfile(mUserInfo);
}
private void setupSelectedGuest() {
mArguments.putInt("user_id", 23);
mUserInfo = new UserInfo(23, "Guest", null,