Merge "Add confirmation dialog when granting/revoking admin privileges." into udc-dev

This commit is contained in:
Tetiana Meronyk
2023-04-20 15:12:57 +00:00
committed by Android (Google) Code Review
2 changed files with 53 additions and 21 deletions

View File

@@ -41,6 +41,7 @@ import com.android.settings.core.SubSettingLauncher;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.RestrictedPreference;
import com.android.settingslib.utils.CustomDialogHelper;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -74,6 +75,7 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
private static final int DIALOG_CONFIRM_RESET_GUEST = 4;
private static final int DIALOG_CONFIRM_RESET_GUEST_AND_SWITCH_USER = 5;
private static final int DIALOG_CONFIRM_REVOKE_ADMIN = 6;
private static final int DIALOG_CONFIRM_GRANT_ADMIN = 7;
/** Whether to enable the app_copying fragment. */
private static final boolean SHOW_APP_COPYING_PREF = false;
@@ -188,11 +190,12 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
mMetricsFeatureProvider.action(getActivity(),
SettingsEnums.ACTION_REVOKE_ADMIN_FROM_SETTINGS);
showDialog(DIALOG_CONFIRM_REVOKE_ADMIN);
return false;
} else {
mMetricsFeatureProvider.action(getActivity(),
SettingsEnums.ACTION_GRANT_ADMIN_FROM_SETTINGS);
showDialog(DIALOG_CONFIRM_GRANT_ADMIN);
}
mMetricsFeatureProvider.action(getActivity(),
SettingsEnums.ACTION_GRANT_ADMIN_FROM_SETTINGS);
updateUserAdminStatus(true);
return false;
}
return true;
}
@@ -208,6 +211,8 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
return SettingsEnums.DIALOG_USER_ENABLE_CALLING_AND_SMS;
case DIALOG_CONFIRM_REVOKE_ADMIN:
return SettingsEnums.DIALOG_REVOKE_USER_ADMIN;
case DIALOG_CONFIRM_GRANT_ADMIN:
return SettingsEnums.DIALOG_GRANT_USER_ADMIN;
case DIALOG_SETUP_USER:
return SettingsEnums.DIALOG_USER_SETUP;
default:
@@ -252,12 +257,54 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
(dialog, which) -> switchUser());
}
case DIALOG_CONFIRM_REVOKE_ADMIN:
return UserDialogs.createConfirmRevokeAdmin(getActivity(),
(dialog, which) -> updateUserAdminStatus(false));
return createRevokeAdminDialog(getContext());
case DIALOG_CONFIRM_GRANT_ADMIN:
return createGrantAdminDialog(getContext());
}
throw new IllegalArgumentException("Unsupported dialogId " + dialogId);
}
/**
* Creates dialog to confirm revoking admin rights.
* @return created confirmation dialog
*/
private Dialog createRevokeAdminDialog(Context context) {
CustomDialogHelper dialogHelper = new CustomDialogHelper(context);
dialogHelper.setIcon(
context.getDrawable(com.android.settingslib.R.drawable.ic_admin_panel_settings));
dialogHelper.setTitle(R.string.user_revoke_admin_confirm_title);
dialogHelper.setMessage(R.string.user_revoke_admin_confirm_message);
dialogHelper.setPositiveButton(R.string.remove, view -> {
updateUserAdminStatus(false);
dialogHelper.getDialog().dismiss();
});
dialogHelper.setBackButton(R.string.cancel, view -> {
dialogHelper.getDialog().dismiss();
});
return dialogHelper.getDialog();
}
/**
* Creates dialog to confirm granting admin rights.
* @return created confirmation dialog
*/
private Dialog createGrantAdminDialog(Context context) {
CustomDialogHelper dialogHelper = new CustomDialogHelper(context);
dialogHelper.setIcon(
context.getDrawable(com.android.settingslib.R.drawable.ic_admin_panel_settings));
dialogHelper.setTitle(com.android.settingslib.R.string.user_grant_admin_title);
dialogHelper.setMessage(com.android.settingslib.R.string.user_grant_admin_message);
dialogHelper.setPositiveButton(com.android.settingslib.R.string.user_grant_admin_button,
view -> {
updateUserAdminStatus(true);
dialogHelper.getDialog().dismiss();
});
dialogHelper.setBackButton(R.string.cancel, view -> {
dialogHelper.getDialog().dismiss();
});
return dialogHelper.getDialog();
}
/**
* Erase the current guest user and create a new one in the background. UserSettings will
* handle guest creation after receiving the {@link UserSettings.RESULT_GUEST_REMOVED} result.

View File

@@ -202,19 +202,4 @@ public final class UserDialogs {
.setNegativeButton(android.R.string.cancel, null)
.create();
}
/**
* Creates a dialog to confirm that the admin privileges of the user should be revoked.
*
* @param onConfirmListener Callback object for positive action
*/
public static Dialog createConfirmRevokeAdmin(Context context,
DialogInterface.OnClickListener onConfirmListener) {
return new AlertDialog.Builder(context)
.setTitle(R.string.user_revoke_admin_confirm_title)
.setMessage(R.string.user_revoke_admin_confirm_message)
.setPositiveButton(R.string.remove, onConfirmListener)
.setNegativeButton(android.R.string.cancel, null)
.create();
}
}