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

Commit dd174701 authored by Alex Johnston's avatar Alex Johnston
Browse files

Add policy transparency dialog to 'Remove work profile'

* For a work profile on an organization-owned device,
  no explanation was being shown to the user as to
  why the work profile cannot be removed.
* This CL adds a policy transparency dialog when the
  'Remove work profile' option is selected in the
  'Device Admin' Settings screen.

Bug: 149391073
Test: Manual testing
      atest com.android.settings.applications.specialaccess.deviceadmin.DeviceAdminAddTest
Change-Id: I8221973ed16fcc7c79f5897c3bea063050ae00a6
parent e8f1c6c8
Loading
Loading
Loading
Loading
+15 −6
Original line number Diff line number Diff line
@@ -457,12 +457,20 @@ public class DeviceAdminAdd extends Activity {
    private void showPolicyTransparencyDialogIfRequired() {
        if (isManagedProfile(mDeviceAdmin)
                && mDeviceAdmin.getComponent().equals(mDPM.getProfileOwner())) {
            EnforcedAdmin enforcedAdmin;
            ComponentName adminComponent = mDPM.getProfileOwnerAsUser(getUserId());
            if (adminComponent != null && mDPM.isOrganizationOwnedDeviceWithManagedProfile()) {
                enforcedAdmin = new EnforcedAdmin(adminComponent,
                        UserManager.DISALLOW_REMOVE_MANAGED_PROFILE, UserHandle.of(getUserId()));
            } else {
                // Todo (b/151061366): Investigate this case to check if it is still viable.
                if (hasBaseCantRemoveProfileRestriction()) {
                    // If DISALLOW_REMOVE_MANAGED_PROFILE is set by the system, there's no
                    // point showing a dialog saying it's disabled by an admin.
                    return;
                }
            EnforcedAdmin enforcedAdmin = getAdminEnforcingCantRemoveProfile();
                enforcedAdmin = getAdminEnforcingCantRemoveProfile();
            }
            if (enforcedAdmin != null) {
                RestrictedLockUtils.sendShowAdminSupportDetailsIntent(
                        DeviceAdminAdd.this,
@@ -640,7 +648,8 @@ public class DeviceAdminAdd extends Activity {

                final EnforcedAdmin admin = getAdminEnforcingCantRemoveProfile();
                final boolean hasBaseRestriction = hasBaseCantRemoveProfileRestriction();
                if (admin != null && !hasBaseRestriction) {
                if ((hasBaseRestriction && mDPM.isOrganizationOwnedDeviceWithManagedProfile())
                        || (admin != null && !hasBaseRestriction)) {
                    findViewById(R.id.restricted_icon).setVisibility(View.VISIBLE);
                }
                mActionButton.setEnabled(admin == null && !hasBaseRestriction);