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

Commit cfe99b77 authored by kholoud mohamed's avatar kholoud mohamed Committed by Kholoud Mohamed
Browse files

Persist bypassDevicePolicyMmanagementRoleQualification in global setting

Bug: 226386138
Test: manual
Change-Id: I7db40e4e0bcde98d190e6d6e9e841355da506aed
parent d5d9b386
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -11481,6 +11481,15 @@ public final class Settings {
        @Readable
        public static final String DEVICE_PROVISIONED = "device_provisioned";
        /**
         * Whether bypassing the device policy management role holder qualifcation is allowed,
         * (0 = false, 1 = true).
         *
         * @hide
         */
        public static final String BYPASS_DEVICE_POLICY_MANAGEMENT_ROLE_QUALIFICATIONS =
                "bypass_device_policy_management_role_qualifications";
        /**
         * Indicates whether mobile data should be allowed while the device is being provisioned.
         * This allows the provisioning process to turn off mobile data before the user
+1 −0
Original line number Diff line number Diff line
@@ -236,6 +236,7 @@ public class SettingsBackupTest {
                    Settings.Global.DEVICE_NAME,
                    Settings.Global.DEVICE_POLICY_CONSTANTS,
                    Settings.Global.DEVICE_PROVISIONED,
                    Settings.Global.BYPASS_DEVICE_POLICY_MANAGEMENT_ROLE_QUALIFICATIONS,
                    Settings.Global.DEVICE_PROVISIONING_MOBILE_DATA_ENABLED,
                    Settings.Global.DISK_FREE_CHANGE_REPORTING_THRESHOLD,
                    Settings.Global.DISPLAY_PANEL_LPM,
+19 −5
Original line number Diff line number Diff line
@@ -138,6 +138,7 @@ import static android.net.ConnectivityManager.PROFILE_NETWORK_PREFERENCE_DEFAULT
import static android.net.ConnectivityManager.PROFILE_NETWORK_PREFERENCE_ENTERPRISE;
import static android.net.ConnectivityManager.PROFILE_NETWORK_PREFERENCE_ENTERPRISE_NO_FALLBACK;
import static android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK;
import static android.provider.Settings.Global.BYPASS_DEVICE_POLICY_MANAGEMENT_ROLE_QUALIFICATIONS;
import static android.provider.Settings.Global.PRIVATE_DNS_SPECIFIER;
import static android.provider.Settings.Secure.MANAGED_PROVISIONING_DPC_DOWNLOADED;
import static android.provider.Settings.Secure.USER_SETUP_COMPLETE;
@@ -18824,13 +18825,26 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
        Preconditions.checkCallAuthorization(hasCallingOrSelfPermission(
                android.Manifest.permission.MANAGE_ROLE_HOLDERS));
        return mInjector.binderWithCleanCallingIdentity(() -> {
            if (mInjector.settingsGlobalGetInt(
                    BYPASS_DEVICE_POLICY_MANAGEMENT_ROLE_QUALIFICATIONS, /* def= */ 0) == 1) {
                return true;
            }
            if (shouldAllowBypassingDevicePolicyManagementRoleQualificationInternal()) {
                mInjector.settingsGlobalPutInt(
                        BYPASS_DEVICE_POLICY_MANAGEMENT_ROLE_QUALIFICATIONS, /* value= */ 1);
                return true;
            }
            return false;
        });
    }
    private boolean shouldAllowBypassingDevicePolicyManagementRoleQualificationInternal() {
        if (mUserManager.getUserCount() > 1) {
            return false;
        }
        AccountManager am = AccountManager.get(mContext);
        Account[] accounts = am.getAccounts();
        return accounts.length == 0;
        });
    }
    @Override