Loading core/java/android/app/admin/DevicePolicyCache.java +11 −0 Original line number Diff line number Diff line Loading @@ -50,6 +50,12 @@ public abstract class DevicePolicyCache { */ public abstract int getPasswordQuality(@UserIdInt int userHandle); /** * Caches {@link DevicePolicyManager#getPermissionPolicy(android.content.ComponentName)} of * the given user. */ public abstract int getPermissionPolicy(@UserIdInt int userHandle); /** * Empty implementation. */ Loading @@ -66,5 +72,10 @@ public abstract class DevicePolicyCache { public int getPasswordQuality(int userHandle) { return DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED; } @Override public int getPermissionPolicy(int userHandle) { return DevicePolicyManager.PERMISSION_POLICY_PROMPT; } } } services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyCacheImpl.java +20 −0 Original line number Diff line number Diff line Loading @@ -43,10 +43,14 @@ public class DevicePolicyCacheImpl extends DevicePolicyCache { @GuardedBy("mLock") private final SparseIntArray mPasswordQuality = new SparseIntArray(); @GuardedBy("mLock") private final SparseIntArray mPermissionPolicy = new SparseIntArray(); public void onUserRemoved(int userHandle) { synchronized (mLock) { mScreenCaptureDisabled.delete(userHandle); mPasswordQuality.delete(userHandle); mPermissionPolicy.delete(userHandle); } } Loading Loading @@ -78,12 +82,28 @@ public class DevicePolicyCacheImpl extends DevicePolicyCache { } } @Override public int getPermissionPolicy(@UserIdInt int userHandle) { synchronized (mLock) { return mPermissionPolicy.get(userHandle, DevicePolicyManager.PERMISSION_POLICY_PROMPT); } } /** Update the permission policy for the given user. */ public void setPermissionPolicy(@UserIdInt int userHandle, int policy) { synchronized (mLock) { mPermissionPolicy.put(userHandle, policy); } } /** Dump content */ public void dump(IndentingPrintWriter pw) { pw.println("Device policy cache:"); pw.increaseIndent(); pw.println("Screen capture disabled: " + mScreenCaptureDisabled.toString()); pw.println("Password quality: " + mPasswordQuality.toString()); pw.println("Permission policy: " + mPermissionPolicy.toString()); pw.decreaseIndent(); } } services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +13 −6 Original line number Diff line number Diff line Loading @@ -2935,6 +2935,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { // reading the value during user switch, due to onStartUser() being asynchronous. updatePasswordQualityCacheForUserGroup( userId == UserHandle.USER_SYSTEM ? UserHandle.USER_ALL : userId); updatePermissionPolicyCache(userId); startOwnerService(userId, "start-user"); } Loading Loading @@ -12461,11 +12462,13 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { || (caller.hasPackage() && isCallerDelegate(caller, DELEGATION_PERMISSION_GRANT))); checkCanExecuteOrThrowUnsafe(DevicePolicyManager.OPERATION_SET_PERMISSION_POLICY); final int forUser = caller.getUserId(); synchronized (getLockObject()) { DevicePolicyData userPolicy = getUserData(caller.getUserId()); DevicePolicyData userPolicy = getUserData(forUser); if (userPolicy.mPermissionPolicy != policy) { userPolicy.mPermissionPolicy = policy; saveSettingsLocked(caller.getUserId()); mPolicyCache.setPermissionPolicy(forUser, policy); saveSettingsLocked(forUser); } } DevicePolicyEventLogger Loading @@ -12476,13 +12479,17 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { .write(); } @Override public int getPermissionPolicy(ComponentName admin) throws RemoteException { int userId = UserHandle.getCallingUserId(); private void updatePermissionPolicyCache(int userId) { synchronized (getLockObject()) { DevicePolicyData userPolicy = getUserData(userId); return userPolicy.mPermissionPolicy; mPolicyCache.setPermissionPolicy(userId, userPolicy.mPermissionPolicy); } } @Override public int getPermissionPolicy(ComponentName admin) throws RemoteException { int userId = UserHandle.getCallingUserId(); return mPolicyCache.getPermissionPolicy(userId); } @Override Loading
core/java/android/app/admin/DevicePolicyCache.java +11 −0 Original line number Diff line number Diff line Loading @@ -50,6 +50,12 @@ public abstract class DevicePolicyCache { */ public abstract int getPasswordQuality(@UserIdInt int userHandle); /** * Caches {@link DevicePolicyManager#getPermissionPolicy(android.content.ComponentName)} of * the given user. */ public abstract int getPermissionPolicy(@UserIdInt int userHandle); /** * Empty implementation. */ Loading @@ -66,5 +72,10 @@ public abstract class DevicePolicyCache { public int getPasswordQuality(int userHandle) { return DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED; } @Override public int getPermissionPolicy(int userHandle) { return DevicePolicyManager.PERMISSION_POLICY_PROMPT; } } }
services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyCacheImpl.java +20 −0 Original line number Diff line number Diff line Loading @@ -43,10 +43,14 @@ public class DevicePolicyCacheImpl extends DevicePolicyCache { @GuardedBy("mLock") private final SparseIntArray mPasswordQuality = new SparseIntArray(); @GuardedBy("mLock") private final SparseIntArray mPermissionPolicy = new SparseIntArray(); public void onUserRemoved(int userHandle) { synchronized (mLock) { mScreenCaptureDisabled.delete(userHandle); mPasswordQuality.delete(userHandle); mPermissionPolicy.delete(userHandle); } } Loading Loading @@ -78,12 +82,28 @@ public class DevicePolicyCacheImpl extends DevicePolicyCache { } } @Override public int getPermissionPolicy(@UserIdInt int userHandle) { synchronized (mLock) { return mPermissionPolicy.get(userHandle, DevicePolicyManager.PERMISSION_POLICY_PROMPT); } } /** Update the permission policy for the given user. */ public void setPermissionPolicy(@UserIdInt int userHandle, int policy) { synchronized (mLock) { mPermissionPolicy.put(userHandle, policy); } } /** Dump content */ public void dump(IndentingPrintWriter pw) { pw.println("Device policy cache:"); pw.increaseIndent(); pw.println("Screen capture disabled: " + mScreenCaptureDisabled.toString()); pw.println("Password quality: " + mPasswordQuality.toString()); pw.println("Permission policy: " + mPermissionPolicy.toString()); pw.decreaseIndent(); } }
services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +13 −6 Original line number Diff line number Diff line Loading @@ -2935,6 +2935,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { // reading the value during user switch, due to onStartUser() being asynchronous. updatePasswordQualityCacheForUserGroup( userId == UserHandle.USER_SYSTEM ? UserHandle.USER_ALL : userId); updatePermissionPolicyCache(userId); startOwnerService(userId, "start-user"); } Loading Loading @@ -12461,11 +12462,13 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { || (caller.hasPackage() && isCallerDelegate(caller, DELEGATION_PERMISSION_GRANT))); checkCanExecuteOrThrowUnsafe(DevicePolicyManager.OPERATION_SET_PERMISSION_POLICY); final int forUser = caller.getUserId(); synchronized (getLockObject()) { DevicePolicyData userPolicy = getUserData(caller.getUserId()); DevicePolicyData userPolicy = getUserData(forUser); if (userPolicy.mPermissionPolicy != policy) { userPolicy.mPermissionPolicy = policy; saveSettingsLocked(caller.getUserId()); mPolicyCache.setPermissionPolicy(forUser, policy); saveSettingsLocked(forUser); } } DevicePolicyEventLogger Loading @@ -12476,13 +12479,17 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { .write(); } @Override public int getPermissionPolicy(ComponentName admin) throws RemoteException { int userId = UserHandle.getCallingUserId(); private void updatePermissionPolicyCache(int userId) { synchronized (getLockObject()) { DevicePolicyData userPolicy = getUserData(userId); return userPolicy.mPermissionPolicy; mPolicyCache.setPermissionPolicy(userId, userPolicy.mPermissionPolicy); } } @Override public int getPermissionPolicy(ComponentName admin) throws RemoteException { int userId = UserHandle.getCallingUserId(); return mPolicyCache.getPermissionPolicy(userId); } @Override