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

Commit 509f34fc authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Delegate mirror display permission check to VDM." into main

parents f185fe38 1c8ffb0e
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.server.companion.virtual;

import static android.Manifest.permission.ADD_ALWAYS_UNLOCKED_DISPLAY;
import static android.Manifest.permission.ADD_MIRROR_DISPLAY;
import static android.Manifest.permission.ADD_TRUSTED_DISPLAY;
import static android.app.admin.DevicePolicyManager.NEARBY_STREAMING_ENABLED;
import static android.app.admin.DevicePolicyManager.NEARBY_STREAMING_NOT_CONTROLLED_BY_POLICY;
@@ -1380,8 +1381,12 @@ final class VirtualDeviceImpl extends IVirtualDevice.Stub

    @Override
    public boolean canCreateMirrorDisplays() {
        if (!android.companion.virtualdevice.flags.Flags.enableLimitedVdmRole()) {
            return DEVICE_PROFILES_ALLOWING_MIRROR_DISPLAYS.contains(getDeviceProfile());
        }
        return mContext.checkCallingOrSelfPermission(ADD_MIRROR_DISPLAY)
                == PackageManager.PERMISSION_GRANTED;
    }

    private boolean hasCustomAudioInputSupportInternal() {
        if (!android.media.audiopolicy.Flags.audioMixTestApi()) {
+0 −4
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package com.android.server.display;

import static android.Manifest.permission.ADD_ALWAYS_UNLOCKED_DISPLAY;
import static android.Manifest.permission.ADD_MIRROR_DISPLAY;
import static android.Manifest.permission.ADD_TRUSTED_DISPLAY;
import static android.Manifest.permission.CAPTURE_SECURE_VIDEO_OUTPUT;
import static android.Manifest.permission.CAPTURE_VIDEO_OUTPUT;
@@ -1827,9 +1826,6 @@ public final class DisplayManagerService extends SystemService {
    }

    private boolean canCreateMirrorDisplays(IVirtualDevice virtualDevice) {
        if (android.companion.virtualdevice.flags.Flags.enableLimitedVdmRole()) {
            return checkCallingPermission(ADD_MIRROR_DISPLAY, "canCreateMirrorDisplays");
        }
        try {
            return virtualDevice != null && virtualDevice.canCreateMirrorDisplays();
        } catch (RemoteException e) {
+6 −32
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package com.android.server.display;

import static android.Manifest.permission.ADD_ALWAYS_UNLOCKED_DISPLAY;
import static android.Manifest.permission.ADD_MIRROR_DISPLAY;
import static android.Manifest.permission.ADD_TRUSTED_DISPLAY;
import static android.Manifest.permission.CAPTURE_VIDEO_OUTPUT;
import static android.Manifest.permission.CONTROL_DISPLAY_BRIGHTNESS;
@@ -1487,7 +1486,7 @@ public class DisplayManagerServiceTest {

    /**
     * Tests that it is not allowed to create an auto-mirror virtual display for a virtual device
     * without ADD_MIRROR_DISPLAY permission / without the mirror display capability.
     * without mirror display creation capability.
     */
    @Test
    public void createAutoMirrorDisplay_withoutPermission_throwsException() throws Exception {
@@ -1497,12 +1496,7 @@ public class DisplayManagerServiceTest {
        when(mMockAppToken.asBinder()).thenReturn(mMockAppToken);
        IVirtualDevice virtualDevice = mock(IVirtualDevice.class);
        when(virtualDevice.getDeviceId()).thenReturn(1);
        if (android.companion.virtualdevice.flags.Flags.enableLimitedVdmRole()) {
            when(mContext.checkCallingPermission(ADD_MIRROR_DISPLAY))
                    .thenReturn(PackageManager.PERMISSION_DENIED);
        } else {
        when(virtualDevice.canCreateMirrorDisplays()).thenReturn(false);
        }
        when(mIVirtualDeviceManager.isValidVirtualDeviceId(1)).thenReturn(true);
        when(mContext.checkCallingPermission(CAPTURE_VIDEO_OUTPUT)).thenReturn(
                PackageManager.PERMISSION_DENIED);
@@ -1533,12 +1527,7 @@ public class DisplayManagerServiceTest {
        when(mMockAppToken.asBinder()).thenReturn(mMockAppToken);
        IVirtualDevice virtualDevice = mock(IVirtualDevice.class);
        when(virtualDevice.getDeviceId()).thenReturn(1);
        if (android.companion.virtualdevice.flags.Flags.enableLimitedVdmRole()) {
            when(mContext.checkCallingPermission(ADD_MIRROR_DISPLAY))
                    .thenReturn(PackageManager.PERMISSION_GRANTED);
        } else {
        when(virtualDevice.canCreateMirrorDisplays()).thenReturn(true);
        }
        when(mIVirtualDeviceManager.isValidVirtualDeviceId(1)).thenReturn(true);

        // Create an auto-mirror virtual display using a virtual device.
@@ -1571,12 +1560,7 @@ public class DisplayManagerServiceTest {
        when(mMockAppToken.asBinder()).thenReturn(mMockAppToken);
        IVirtualDevice virtualDevice = mock(IVirtualDevice.class);
        when(virtualDevice.getDeviceId()).thenReturn(1);
        if (android.companion.virtualdevice.flags.Flags.enableLimitedVdmRole()) {
            when(mContext.checkCallingPermission(ADD_MIRROR_DISPLAY))
                    .thenReturn(PackageManager.PERMISSION_GRANTED);
        } else {
        when(virtualDevice.canCreateMirrorDisplays()).thenReturn(true);
        }
        when(mIVirtualDeviceManager.isValidVirtualDeviceId(1)).thenReturn(true);

        // Create an auto-mirror virtual display using a virtual device.
@@ -1643,12 +1627,7 @@ public class DisplayManagerServiceTest {
        when(mMockAppToken.asBinder()).thenReturn(mMockAppToken);
        IVirtualDevice virtualDevice = mock(IVirtualDevice.class);
        when(virtualDevice.getDeviceId()).thenReturn(1);
        if (android.companion.virtualdevice.flags.Flags.enableLimitedVdmRole()) {
            when(mContext.checkCallingPermission(ADD_MIRROR_DISPLAY))
                    .thenReturn(PackageManager.PERMISSION_GRANTED);
        } else {
        when(virtualDevice.canCreateMirrorDisplays()).thenReturn(true);
        }
        when(mIVirtualDeviceManager.isValidVirtualDeviceId(1)).thenReturn(true);
        when(mContext.checkCallingPermission(ADD_ALWAYS_UNLOCKED_DISPLAY))
                .thenReturn(PackageManager.PERMISSION_GRANTED);
@@ -1684,12 +1663,7 @@ public class DisplayManagerServiceTest {
        when(mMockAppToken.asBinder()).thenReturn(mMockAppToken);
        IVirtualDevice virtualDevice = mock(IVirtualDevice.class);
        when(virtualDevice.getDeviceId()).thenReturn(1);
        if (android.companion.virtualdevice.flags.Flags.enableLimitedVdmRole()) {
            when(mContext.checkCallingPermission(ADD_MIRROR_DISPLAY))
                    .thenReturn(PackageManager.PERMISSION_GRANTED);
        } else {
        when(virtualDevice.canCreateMirrorDisplays()).thenReturn(true);
        }
        when(mIVirtualDeviceManager.isValidVirtualDeviceId(1)).thenReturn(true);

        // Create an auto-mirror virtual display using a virtual device.