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

Commit 833af023 authored by Esteban Talavera's avatar Esteban Talavera Committed by Android Git Automerger
Browse files

am e4ffec21: Merge "Reset permission policy to default when device owner goes away" into mnc-dev

* commit 'e4ffec21':
  Reset permission policy to default when device owner goes away
parents 02791a78 e4ffec21
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -4332,7 +4332,7 @@ public class DevicePolicyManager {
     * @param admin Which profile or device owner this request is associated with.
     * @return the current policy for future permission requests.
     */
    public int getPermissionPolicy(@NonNull ComponentName admin) {
    public int getPermissionPolicy(ComponentName admin) {
        try {
            return mService.getPermissionPolicy(admin);
        } catch (RemoteException re) {
+31 −35
Original line number Diff line number Diff line
@@ -4214,21 +4214,12 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
            throw new SecurityException("clearDeviceOwner can only be called by the device owner");
        }
        synchronized (this) {
            long ident = Binder.clearCallingIdentity();
            try {
                clearUserRestrictions(new UserHandle(UserHandle.USER_OWNER));
                AppGlobals.getPackageManager().updatePermissionFlagsForAllApps(
                        PackageManager.FLAG_PERMISSION_POLICY_FIXED,
                        0, UserHandle.USER_OWNER);
            clearUserPoliciesLocked(new UserHandle(UserHandle.USER_OWNER));
            if (mDeviceOwner != null) {
                mDeviceOwner.clearDeviceOwner();
                mDeviceOwner.writeOwnerFile();
                updateDeviceOwnerLocked();
            }
            } catch (RemoteException re) {
            } finally {
                Binder.restoreCallingIdentity(ident);
            }
        }
    }

@@ -4378,33 +4369,38 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
            return;
        }
        UserHandle callingUser = Binder.getCallingUserHandle();
        int userId = callingUser.getIdentifier();
        // Check if this is the profile owner who is calling
        getActiveAdminForCallerLocked(who, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER);
        synchronized (this) {
            // Reset some of the profile-owner policies
            clearUserPoliciesLocked(callingUser);
            if (mDeviceOwner != null) {
                mDeviceOwner.removeProfileOwner(callingUser.getIdentifier());
                mDeviceOwner.writeOwnerFile();
            }
        }
    }

    private void clearUserPoliciesLocked(UserHandle userHandle) {
        int userId = userHandle.getIdentifier();
        // Reset some of the user-specific policies
        DevicePolicyData policy = getUserData(userId);
        policy.mPermissionPolicy = DevicePolicyManager.PERMISSION_POLICY_PROMPT;
        policy.mDelegatedCertInstallerPackage = null;
        policy.mStatusBarDisabled = false;
        saveSettingsLocked(userId);

            long ident = Binder.clearCallingIdentity();
        final long ident = Binder.clearCallingIdentity();
        try {
                clearUserRestrictions(callingUser);
            clearUserRestrictions(userHandle);
            AppGlobals.getPackageManager().updatePermissionFlagsForAllApps(
                    PackageManager.FLAG_PERMISSION_POLICY_FIXED,
                        0, callingUser.getIdentifier());
                if (mDeviceOwner != null) {
                    mDeviceOwner.removeProfileOwner(userId);
                    mDeviceOwner.writeOwnerFile();
                }
                    0  /* flagValues */, userHandle.getIdentifier());
        } catch (RemoteException re) {
        } finally {
            Binder.restoreCallingIdentity(ident);
        }
    }
    }


    private void clearUserRestrictions(UserHandle userHandle) {
        AudioManager audioManager =