Loading core/java/android/app/ContextImpl.java +22 −10 Original line number Original line Diff line number Diff line Loading @@ -2303,6 +2303,12 @@ class ContextImpl extends Context { && PermissionManager.DEVICE_AWARE_PERMISSIONS.contains(permission)) { && PermissionManager.DEVICE_AWARE_PERMISSIONS.contains(permission)) { VirtualDeviceManager virtualDeviceManager = VirtualDeviceManager virtualDeviceManager = getSystemService(VirtualDeviceManager.class); getSystemService(VirtualDeviceManager.class); if (virtualDeviceManager == null) { Slog.e( TAG, "VDM is not enabled when device id is not default. deviceId = " + deviceId); } else { VirtualDevice virtualDevice = virtualDeviceManager.getVirtualDevice(deviceId); VirtualDevice virtualDevice = virtualDeviceManager.getVirtualDevice(deviceId); if (virtualDevice != null) { if (virtualDevice != null) { if ((Objects.equals(permission, Manifest.permission.RECORD_AUDIO) if ((Objects.equals(permission, Manifest.permission.RECORD_AUDIO) Loading @@ -2318,6 +2324,7 @@ class ContextImpl extends Context { + deviceId); + deviceId); } } } } } return PermissionManager.checkPermission(permission, pid, uid, deviceId); return PermissionManager.checkPermission(permission, pid, uid, deviceId); } } Loading Loading @@ -3169,6 +3176,11 @@ class ContextImpl extends Context { public void updateDeviceId(int updatedDeviceId) { public void updateDeviceId(int updatedDeviceId) { if (updatedDeviceId != Context.DEVICE_ID_DEFAULT) { if (updatedDeviceId != Context.DEVICE_ID_DEFAULT) { VirtualDeviceManager vdm = getSystemService(VirtualDeviceManager.class); VirtualDeviceManager vdm = getSystemService(VirtualDeviceManager.class); if (vdm == null) { throw new IllegalArgumentException( "VDM is not enabled when updating to non-default device id: " + updatedDeviceId); } if (!vdm.isValidVirtualDeviceId(updatedDeviceId)) { if (!vdm.isValidVirtualDeviceId(updatedDeviceId)) { throw new IllegalArgumentException( throw new IllegalArgumentException( "Not a valid ID of the default device or any virtual device: " "Not a valid ID of the default device or any virtual device: " Loading core/java/android/hardware/Camera.java +3 −1 Original line number Original line Diff line number Diff line Loading @@ -347,7 +347,9 @@ public class Camera { VirtualDeviceManager virtualDeviceManager = VirtualDeviceManager virtualDeviceManager = context.getSystemService(VirtualDeviceManager.class); context.getSystemService(VirtualDeviceManager.class); return virtualDeviceManager.getDevicePolicy(context.getDeviceId(), POLICY_TYPE_CAMERA); return virtualDeviceManager == null ? DEVICE_POLICY_DEFAULT : virtualDeviceManager.getDevicePolicy(context.getDeviceId(), POLICY_TYPE_CAMERA); } } /** /** Loading core/java/android/hardware/camera2/CameraManager.java +3 −1 Original line number Original line Diff line number Diff line Loading @@ -581,7 +581,9 @@ public final class CameraManager { if (mVirtualDeviceManager == null) { if (mVirtualDeviceManager == null) { mVirtualDeviceManager = context.getSystemService(VirtualDeviceManager.class); mVirtualDeviceManager = context.getSystemService(VirtualDeviceManager.class); } } return mVirtualDeviceManager.getDevicePolicy(context.getDeviceId(), POLICY_TYPE_CAMERA); return mVirtualDeviceManager == null ? DEVICE_POLICY_DEFAULT : mVirtualDeviceManager.getDevicePolicy(context.getDeviceId(), POLICY_TYPE_CAMERA); } } // TODO(b/147726300): Investigate how to support foldables/multi-display devices. // TODO(b/147726300): Investigate how to support foldables/multi-display devices. Loading core/java/android/permission/PermissionUsageHelper.java +13 −11 Original line number Original line Diff line number Diff line Loading @@ -374,6 +374,8 @@ public class PermissionUsageHelper implements AppOpsManager.OnOpActiveChangedLis public @NonNull List<PermissionGroupUsage> getOpUsageDataForAllDevices( public @NonNull List<PermissionGroupUsage> getOpUsageDataForAllDevices( boolean includeMicrophoneUsage) { boolean includeMicrophoneUsage) { List<PermissionGroupUsage> allUsages = new ArrayList<>(); List<PermissionGroupUsage> allUsages = new ArrayList<>(); if (mVirtualDeviceManager != null) { List<VirtualDevice> virtualDevices = mVirtualDeviceManager.getVirtualDevices(); List<VirtualDevice> virtualDevices = mVirtualDeviceManager.getVirtualDevices(); ArraySet<String> persistentDeviceIds = new ArraySet<>(); ArraySet<String> persistentDeviceIds = new ArraySet<>(); Loading @@ -387,7 +389,7 @@ public class PermissionUsageHelper implements AppOpsManager.OnOpActiveChangedLis getOpUsageDataByDevice(includeMicrophoneUsage, getOpUsageDataByDevice(includeMicrophoneUsage, persistentDeviceIds.valueAt(index))); persistentDeviceIds.valueAt(index))); } } } return allUsages; return allUsages; } } Loading media/java/android/media/AudioManager.java +4 −2 Original line number Original line Diff line number Diff line Loading @@ -4069,9 +4069,11 @@ public class AudioManager { private boolean delegateSoundEffectToVdm(@SystemSoundEffect int effectType) { private boolean delegateSoundEffectToVdm(@SystemSoundEffect int effectType) { if (hasCustomPolicyVirtualDeviceContext()) { if (hasCustomPolicyVirtualDeviceContext()) { VirtualDeviceManager vdm = getVirtualDeviceManager(); VirtualDeviceManager vdm = getVirtualDeviceManager(); if (vdm != null) { vdm.playSoundEffect(mOriginalContextDeviceId, effectType); vdm.playSoundEffect(mOriginalContextDeviceId, effectType); return true; return true; } } } return false; return false; } } Loading Loading
core/java/android/app/ContextImpl.java +22 −10 Original line number Original line Diff line number Diff line Loading @@ -2303,6 +2303,12 @@ class ContextImpl extends Context { && PermissionManager.DEVICE_AWARE_PERMISSIONS.contains(permission)) { && PermissionManager.DEVICE_AWARE_PERMISSIONS.contains(permission)) { VirtualDeviceManager virtualDeviceManager = VirtualDeviceManager virtualDeviceManager = getSystemService(VirtualDeviceManager.class); getSystemService(VirtualDeviceManager.class); if (virtualDeviceManager == null) { Slog.e( TAG, "VDM is not enabled when device id is not default. deviceId = " + deviceId); } else { VirtualDevice virtualDevice = virtualDeviceManager.getVirtualDevice(deviceId); VirtualDevice virtualDevice = virtualDeviceManager.getVirtualDevice(deviceId); if (virtualDevice != null) { if (virtualDevice != null) { if ((Objects.equals(permission, Manifest.permission.RECORD_AUDIO) if ((Objects.equals(permission, Manifest.permission.RECORD_AUDIO) Loading @@ -2318,6 +2324,7 @@ class ContextImpl extends Context { + deviceId); + deviceId); } } } } } return PermissionManager.checkPermission(permission, pid, uid, deviceId); return PermissionManager.checkPermission(permission, pid, uid, deviceId); } } Loading Loading @@ -3169,6 +3176,11 @@ class ContextImpl extends Context { public void updateDeviceId(int updatedDeviceId) { public void updateDeviceId(int updatedDeviceId) { if (updatedDeviceId != Context.DEVICE_ID_DEFAULT) { if (updatedDeviceId != Context.DEVICE_ID_DEFAULT) { VirtualDeviceManager vdm = getSystemService(VirtualDeviceManager.class); VirtualDeviceManager vdm = getSystemService(VirtualDeviceManager.class); if (vdm == null) { throw new IllegalArgumentException( "VDM is not enabled when updating to non-default device id: " + updatedDeviceId); } if (!vdm.isValidVirtualDeviceId(updatedDeviceId)) { if (!vdm.isValidVirtualDeviceId(updatedDeviceId)) { throw new IllegalArgumentException( throw new IllegalArgumentException( "Not a valid ID of the default device or any virtual device: " "Not a valid ID of the default device or any virtual device: " Loading
core/java/android/hardware/Camera.java +3 −1 Original line number Original line Diff line number Diff line Loading @@ -347,7 +347,9 @@ public class Camera { VirtualDeviceManager virtualDeviceManager = VirtualDeviceManager virtualDeviceManager = context.getSystemService(VirtualDeviceManager.class); context.getSystemService(VirtualDeviceManager.class); return virtualDeviceManager.getDevicePolicy(context.getDeviceId(), POLICY_TYPE_CAMERA); return virtualDeviceManager == null ? DEVICE_POLICY_DEFAULT : virtualDeviceManager.getDevicePolicy(context.getDeviceId(), POLICY_TYPE_CAMERA); } } /** /** Loading
core/java/android/hardware/camera2/CameraManager.java +3 −1 Original line number Original line Diff line number Diff line Loading @@ -581,7 +581,9 @@ public final class CameraManager { if (mVirtualDeviceManager == null) { if (mVirtualDeviceManager == null) { mVirtualDeviceManager = context.getSystemService(VirtualDeviceManager.class); mVirtualDeviceManager = context.getSystemService(VirtualDeviceManager.class); } } return mVirtualDeviceManager.getDevicePolicy(context.getDeviceId(), POLICY_TYPE_CAMERA); return mVirtualDeviceManager == null ? DEVICE_POLICY_DEFAULT : mVirtualDeviceManager.getDevicePolicy(context.getDeviceId(), POLICY_TYPE_CAMERA); } } // TODO(b/147726300): Investigate how to support foldables/multi-display devices. // TODO(b/147726300): Investigate how to support foldables/multi-display devices. Loading
core/java/android/permission/PermissionUsageHelper.java +13 −11 Original line number Original line Diff line number Diff line Loading @@ -374,6 +374,8 @@ public class PermissionUsageHelper implements AppOpsManager.OnOpActiveChangedLis public @NonNull List<PermissionGroupUsage> getOpUsageDataForAllDevices( public @NonNull List<PermissionGroupUsage> getOpUsageDataForAllDevices( boolean includeMicrophoneUsage) { boolean includeMicrophoneUsage) { List<PermissionGroupUsage> allUsages = new ArrayList<>(); List<PermissionGroupUsage> allUsages = new ArrayList<>(); if (mVirtualDeviceManager != null) { List<VirtualDevice> virtualDevices = mVirtualDeviceManager.getVirtualDevices(); List<VirtualDevice> virtualDevices = mVirtualDeviceManager.getVirtualDevices(); ArraySet<String> persistentDeviceIds = new ArraySet<>(); ArraySet<String> persistentDeviceIds = new ArraySet<>(); Loading @@ -387,7 +389,7 @@ public class PermissionUsageHelper implements AppOpsManager.OnOpActiveChangedLis getOpUsageDataByDevice(includeMicrophoneUsage, getOpUsageDataByDevice(includeMicrophoneUsage, persistentDeviceIds.valueAt(index))); persistentDeviceIds.valueAt(index))); } } } return allUsages; return allUsages; } } Loading
media/java/android/media/AudioManager.java +4 −2 Original line number Original line Diff line number Diff line Loading @@ -4069,9 +4069,11 @@ public class AudioManager { private boolean delegateSoundEffectToVdm(@SystemSoundEffect int effectType) { private boolean delegateSoundEffectToVdm(@SystemSoundEffect int effectType) { if (hasCustomPolicyVirtualDeviceContext()) { if (hasCustomPolicyVirtualDeviceContext()) { VirtualDeviceManager vdm = getVirtualDeviceManager(); VirtualDeviceManager vdm = getVirtualDeviceManager(); if (vdm != null) { vdm.playSoundEffect(mOriginalContextDeviceId, effectType); vdm.playSoundEffect(mOriginalContextDeviceId, effectType); return true; return true; } } } return false; return false; } } Loading