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

Commit 28632ca3 authored by Timothy Yiu's avatar Timothy Yiu Committed by Android (Google) Code Review
Browse files

Merge "Add support for disabling VDM" into main

parents 2f77941d 9ac1adbd
Loading
Loading
Loading
Loading
+22 −10
Original line number Original line Diff line number Diff line
@@ -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)
@@ -2318,6 +2324,7 @@ class ContextImpl extends Context {
                                    + deviceId);
                                    + deviceId);
                }
                }
            }
            }
        }


        return PermissionManager.checkPermission(permission, pid, uid, deviceId);
        return PermissionManager.checkPermission(permission, pid, uid, deviceId);
    }
    }
@@ -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: "
+3 −1
Original line number Original line Diff line number Diff line
@@ -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);
    }
    }


    /**
    /**
+3 −1
Original line number Original line Diff line number Diff line
@@ -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.
+13 −11
Original line number Original line Diff line number Diff line
@@ -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<>();


@@ -387,7 +389,7 @@ public class PermissionUsageHelper implements AppOpsManager.OnOpActiveChangedLis
                        getOpUsageDataByDevice(includeMicrophoneUsage,
                        getOpUsageDataByDevice(includeMicrophoneUsage,
                                persistentDeviceIds.valueAt(index)));
                                persistentDeviceIds.valueAt(index)));
            }
            }

        }
        return allUsages;
        return allUsages;
    }
    }


+4 −2
Original line number Original line Diff line number Diff line
@@ -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