Further refactoring on ActionDisabledByAdminDialog classes.

Bug: 184107103
Bug: 188836559

Test: m -j RunSettingsRoboTests ROBOTEST_FILTER=ActionDisabledByAdminDialogHelperTest
Test: atest ActionDisabledLearnMoreButtonLauncherImplTest
Test: adb shell am start -e android.app.extra.RESTRICTION no_install_unknown-sources -a android.settings.SHOW_ADMIN_SUPPORT_DETAILS
Test: manual verification with CtsVerifier

Change-Id: I3c4056d82834b5e2a4afbd958be7c9d0b9af543e
This commit is contained in:
Felipe Leme
2021-05-24 19:06:53 -07:00
parent 8e67634830
commit e89c2fd4b8
4 changed files with 126 additions and 151 deletions

View File

@@ -45,30 +45,25 @@ import java.util.Objects;
/**
* Helper class for {@link ActionDisabledByAdminDialog} which sets up the dialog.
*/
public class ActionDisabledByAdminDialogHelper {
public final class ActionDisabledByAdminDialogHelper {
private static final String TAG = ActionDisabledByAdminDialogHelper.class.getName();
@VisibleForTesting EnforcedAdmin mEnforcedAdmin;
private ViewGroup mDialogView;
private String mRestriction = null;
private final Activity mActivity;
private String mRestriction;
private final ActionDisabledByAdminController mActionDisabledByAdminController;
private final Activity mActivity;
public ActionDisabledByAdminDialogHelper(Activity activity) {
mActivity = activity;
mActionDisabledByAdminController =
ActionDisabledByAdminControllerFactory.createInstance(
mActivity.getSystemService(DevicePolicyManager.class),
new ActionDisabledLearnMoreButtonLauncherImpl(),
new DeviceAdminStringProviderImpl(mActivity));
mDialogView = (ViewGroup) LayoutInflater.from(mActivity).inflate(
R.layout.admin_support_details_dialog, null);
mActionDisabledByAdminController = ActionDisabledByAdminControllerFactory
.createInstance(mActivity, new DeviceAdminStringProviderImpl(mActivity));
}
private @UserIdInt int getEnforcementAdminUserId(@NonNull EnforcedAdmin admin) {
if (admin.user == null) {
return UserHandle.USER_NULL;
} else {
return admin.user.getIdentifier();
}
return admin.user == null ? UserHandle.USER_NULL : admin.user.getIdentifier();
}
private @UserIdInt int getEnforcementAdminUserId() {
@@ -77,21 +72,24 @@ public class ActionDisabledByAdminDialogHelper {
public AlertDialog.Builder prepareDialogBuilder(String restriction,
EnforcedAdmin enforcedAdmin) {
mEnforcedAdmin = enforcedAdmin;
mRestriction = restriction;
final AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
mDialogView = (ViewGroup) LayoutInflater.from(mActivity).inflate(
R.layout.admin_support_details_dialog, null);
initializeDialogViews(mDialogView, mEnforcedAdmin, getEnforcementAdminUserId(),
mRestriction, mActionDisabledByAdminController);
builder.setPositiveButton(R.string.okay, null).setView(mDialogView);
maybeSetLearnMoreButton(builder);
AlertDialog.Builder builder = new AlertDialog.Builder(mActivity)
.setPositiveButton(R.string.okay, null)
.setView(mDialogView);
prepareDialogBuilder(builder, restriction, enforcedAdmin);
return builder;
}
@VisibleForTesting
void maybeSetLearnMoreButton(AlertDialog.Builder builder) {
mActionDisabledByAdminController.setupLearnMoreButton(mActivity, builder);
void prepareDialogBuilder(AlertDialog.Builder builder, String restriction,
EnforcedAdmin enforcedAdmin) {
mActionDisabledByAdminController.initialize(
new ActionDisabledLearnMoreButtonLauncherImpl(mActivity, builder));
mEnforcedAdmin = enforcedAdmin;
mRestriction = restriction;
initializeDialogViews(mDialogView, mEnforcedAdmin, getEnforcementAdminUserId(),
mRestriction);
mActionDisabledByAdminController.setupLearnMoreButton(mActivity);
}
public void updateDialog(String restriction, EnforcedAdmin admin) {
@@ -101,17 +99,17 @@ public class ActionDisabledByAdminDialogHelper {
mEnforcedAdmin = admin;
mRestriction = restriction;
initializeDialogViews(mDialogView, mEnforcedAdmin, getEnforcementAdminUserId(),
mRestriction, mActionDisabledByAdminController);
mRestriction);
}
private void initializeDialogViews(View root, EnforcedAdmin enforcedAdmin, int userId,
String restriction, ActionDisabledByAdminController controller) {
String restriction) {
ComponentName admin = enforcedAdmin.component;
if (admin == null) {
return;
}
controller.updateEnforcedAdmin(enforcedAdmin, userId);
mActionDisabledByAdminController.updateEnforcedAdmin(enforcedAdmin, userId);
setAdminSupportIcon(root, admin, userId);
if (isNotCurrentUserOrProfile(admin, userId)) {
@@ -148,8 +146,7 @@ public class ActionDisabledByAdminDialogHelper {
if (titleView == null) {
return;
}
titleView.setText(
mActionDisabledByAdminController.getAdminSupportTitle(restriction));
titleView.setText(mActionDisabledByAdminController.getAdminSupportTitle(restriction));
}
@VisibleForTesting