Merge "Fix policy transparency for camera disabled policy" into udc-dev

This commit is contained in:
Kholoud Mohamed
2023-04-24 16:08:39 +00:00
committed by Android (Google) Code Review

View File

@@ -16219,17 +16219,13 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
deviceOwner.second); deviceOwner.second);
return result; return result;
} }
} else if (DevicePolicyManager.POLICY_DISABLE_CAMERA.equals(restriction) } else if (DevicePolicyManager.POLICY_DISABLE_SCREEN_CAPTURE.equals(restriction)) {
|| DevicePolicyManager.POLICY_DISABLE_SCREEN_CAPTURE.equals(restriction)) {
synchronized (getLockObject()) { synchronized (getLockObject()) {
final DevicePolicyData policy = getUserData(userId); final DevicePolicyData policy = getUserData(userId);
final int N = policy.mAdminList.size(); final int N = policy.mAdminList.size();
for (int i = 0; i < N; i++) { for (int i = 0; i < N; i++) {
final ActiveAdmin admin = policy.mAdminList.get(i); final ActiveAdmin admin = policy.mAdminList.get(i);
if ((admin.disableCamera && if (admin.disableScreenCapture) {
DevicePolicyManager.POLICY_DISABLE_CAMERA.equals(restriction))
|| (admin.disableScreenCapture && DevicePolicyManager
.POLICY_DISABLE_SCREEN_CAPTURE.equals(restriction))) {
result = new Bundle(); result = new Bundle();
result.putInt(Intent.EXTRA_USER_ID, userId); result.putInt(Intent.EXTRA_USER_ID, userId);
result.putParcelable(DevicePolicyManager.EXTRA_DEVICE_ADMIN, result.putParcelable(DevicePolicyManager.EXTRA_DEVICE_ADMIN,
@@ -16237,17 +16233,44 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
return result; return result;
} }
} }
// For the camera, a device owner on a different user can disable it globally, }
// so we need an additional check. } else if (DevicePolicyManager.POLICY_DISABLE_CAMERA.equals(restriction)) {
if (result == null if (isPolicyEngineForFinanceFlagEnabled()) {
&& DevicePolicyManager.POLICY_DISABLE_CAMERA.equals(restriction)) { PolicyDefinition<Boolean> policyDefinition =
final ActiveAdmin admin = getDeviceOwnerAdminLocked(); PolicyDefinition.getPolicyDefinitionForUserRestriction(
if (admin != null && admin.disableCamera) { UserManager.DISALLOW_CAMERA);
result = new Bundle(); Boolean value = mDevicePolicyEngine.getResolvedPolicy(policyDefinition, userId);
result.putInt(Intent.EXTRA_USER_ID, mOwners.getDeviceOwnerUserId()); if (value != null && value) {
result.putParcelable(DevicePolicyManager.EXTRA_DEVICE_ADMIN, result = new Bundle();
admin.info.getComponent()); result.putInt(Intent.EXTRA_USER_ID, userId);
return result; return result;
}
} else {
synchronized (getLockObject()) {
final DevicePolicyData policy = getUserData(userId);
final int N = policy.mAdminList.size();
for (int i = 0; i < N; i++) {
final ActiveAdmin admin = policy.mAdminList.get(i);
if (admin.disableCamera) {
result = new Bundle();
result.putInt(Intent.EXTRA_USER_ID, userId);
result.putParcelable(DevicePolicyManager.EXTRA_DEVICE_ADMIN,
admin.info.getComponent());
return result;
}
}
// For the camera, a device owner on a different user can disable it globally,
// so we need an additional check.
if (result == null
&& DevicePolicyManager.POLICY_DISABLE_CAMERA.equals(restriction)) {
final ActiveAdmin admin = getDeviceOwnerAdminLocked();
if (admin != null && admin.disableCamera) {
result = new Bundle();
result.putInt(Intent.EXTRA_USER_ID, mOwners.getDeviceOwnerUserId());
result.putParcelable(DevicePolicyManager.EXTRA_DEVICE_ADMIN,
admin.info.getComponent());
return result;
}
} }
} }
} }