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

Commit ff36d54d authored by Tetiana Meronyk's avatar Tetiana Meronyk
Browse files

Add UI metrics for granting admin rights from User Switcher

Bug: 260697326
Test: manual
Change-Id: Ia4f3053bb84c5daaedb9a471b8a8f5dbaad66dba
parent d445e30a
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -185,9 +185,13 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
            enableCallsAndSms(false);
            enableCallsAndSms(false);
        } else if (preference == mGrantAdminPref) {
        } else if (preference == mGrantAdminPref) {
            if (Boolean.FALSE.equals(newValue)) {
            if (Boolean.FALSE.equals(newValue)) {
                mMetricsFeatureProvider.action(getActivity(),
                        SettingsEnums.ACTION_REVOKE_ADMIN_FROM_SETTINGS);
                showDialog(DIALOG_CONFIRM_REVOKE_ADMIN);
                showDialog(DIALOG_CONFIRM_REVOKE_ADMIN);
                return false;
                return false;
            }
            }
            mMetricsFeatureProvider.action(getActivity(),
                    SettingsEnums.ACTION_GRANT_ADMIN_FROM_SETTINGS);
            updateUserAdminStatus(true);
            updateUserAdminStatus(true);
        }
        }
        return true;
        return true;
+7 −0
Original line number Original line Diff line number Diff line
@@ -948,6 +948,13 @@ public class UserSettings extends SettingsPreferenceFragment
                getActivity(),
                getActivity(),
                (grantAdmin) -> {
                (grantAdmin) -> {
                    mGrantAdmin = 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);
                    showDialog(DIALOG_USER_PROFILE_EDITOR_ADD_USER);
                },
                },
                () -> {
                () -> {
+7 −0
Original line number Original line Diff line number Diff line
@@ -263,4 +263,11 @@ public class ShadowUserManager extends org.robolectric.shadows.ShadowUserManager
        }
        }
        return isSuccess;
        return isSuccess;
    }
    }

    @Implementation
    protected void setUserAdmin(@UserIdInt int userId) {
        for (int i = 0; i < mUserProfileInfos.size(); i++) {
            mUserProfileInfos.get(i).flags |= UserInfo.FLAG_ADMIN;
        }
    }
}
}
+35 −0
Original line number Original line Diff line number Diff line
@@ -715,6 +715,32 @@ public class UserDetailsSettingsTest {
        verify(mFragment).removePreference(KEY_GRANT_ADMIN);
        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() {
    private void setupSelectedUser() {
        mArguments.putInt("user_id", 1);
        mArguments.putInt("user_id", 1);
        mUserInfo = new UserInfo(1, "Tom", null,
        mUserInfo = new UserInfo(1, "Tom", null,
@@ -733,6 +759,15 @@ public class UserDetailsSettingsTest {
        mUserManager.addProfile(mUserInfo);
        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() {
    private void setupSelectedGuest() {
        mArguments.putInt("user_id", 23);
        mArguments.putInt("user_id", 23);
        mUserInfo = new UserInfo(23, "Guest", null,
        mUserInfo = new UserInfo(23, "Guest", null,