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

Commit fe549de2 authored by Vladimir Komsiyski's avatar Vladimir Komsiyski Committed by Android (Google) Code Review
Browse files

Merge "Clean up VirtualDeviceManagerInternal."

parents 9dc3aa3e 905eef07
Loading
Loading
Loading
Loading
+9 −28
Original line number Diff line number Diff line
@@ -386,7 +386,15 @@ public class VirtualDeviceManagerService extends SystemService {
        @Override // BinderCall
        @VirtualDeviceParams.DevicePolicy
        public int getDevicePolicy(int deviceId, @VirtualDeviceParams.PolicyType int policyType) {
            return mLocalService.getDevicePolicy(deviceId, policyType);
            synchronized (mVirtualDeviceManagerLock) {
                for (int i = 0; i < mVirtualDevices.size(); i++) {
                    final VirtualDeviceImpl device = mVirtualDevices.valueAt(i);
                    if (device.getDeviceId() == deviceId) {
                        return device.getDevicePolicy(policyType);
                    }
                }
            }
            return VirtualDeviceParams.DEVICE_POLICY_DEFAULT;
        }


@@ -486,20 +494,6 @@ public class VirtualDeviceManagerService extends SystemService {
            }
        }

        @Override
        @VirtualDeviceParams.DevicePolicy
        public int getDevicePolicy(int deviceId, @VirtualDeviceParams.PolicyType int policyType) {
            synchronized (mVirtualDeviceManagerLock) {
                for (int i = 0; i < mVirtualDevices.size(); i++) {
                    final VirtualDeviceImpl device = mVirtualDevices.valueAt(i);
                    if (device.getDeviceId() == deviceId) {
                        return device.getDevicePolicy(policyType);
                    }
                }
            }
            return VirtualDeviceParams.DEVICE_POLICY_DEFAULT;
        }

        @Override
        public void onVirtualDisplayCreated(int displayId) {
            final VirtualDisplayListener[] listeners;
@@ -560,19 +554,6 @@ public class VirtualDeviceManagerService extends SystemService {
            return ((VirtualDeviceImpl) virtualDevice).getBaseVirtualDisplayFlags();
        }

        @Override
        public boolean isAppOwnerOfAnyVirtualDevice(int uid) {
            synchronized (mVirtualDeviceManagerLock) {
                int size = mVirtualDevices.size();
                for (int i = 0; i < size; i++) {
                    if (mVirtualDevices.valueAt(i).getOwnerUid() == uid) {
                        return true;
                    }
                }
                return false;
            }
        }

        @Override
        public boolean isAppRunningOnAnyVirtualDevice(int uid) {
            synchronized (mVirtualDeviceManagerLock) {
+0 −17
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.server.companion.virtual;

import android.annotation.NonNull;
import android.companion.virtual.IVirtualDevice;
import android.companion.virtual.VirtualDeviceParams;

import java.util.Set;

@@ -93,12 +92,6 @@ public abstract class VirtualDeviceManagerInternal {
     */
    public abstract int getBaseVirtualDisplayFlags(IVirtualDevice virtualDevice);

    /**
     * Returns true if the given {@code uid} is the owner of any virtual devices that are
     * currently active.
     */
    public abstract boolean isAppOwnerOfAnyVirtualDevice(int uid);

    /**
     * Returns true if the given {@code uid} is currently running on any virtual devices. This is
     * determined by whether the app has any activities in the task stack on a virtual-device-owned
@@ -110,14 +103,4 @@ public abstract class VirtualDeviceManagerInternal {
     * Returns true if the {@code displayId} is owned by any virtual device
     */
    public abstract boolean isDisplayOwnedByAnyVirtualDevice(int displayId);

    /**
     * Returns the device policy for the given virtual device and policy type.
     *
     * <p>In case the virtual device identifier is not valid, or there's no explicitly specified
     * policy for that device and policy type, then
     * {@link VirtualDeviceParams#DEVICE_POLICY_DEFAULT} is returned.
     */
    public abstract @VirtualDeviceParams.DevicePolicy int getDevicePolicy(
            int deviceId, @VirtualDeviceParams.PolicyType int policyType);
}
+28 −53
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.server.companion.virtual;

import static android.companion.virtual.VirtualDeviceManager.DEFAULT_DEVICE_ID;
import static android.companion.virtual.VirtualDeviceManager.INVALID_DEVICE_ID;
import static android.companion.virtual.VirtualDeviceParams.DEVICE_POLICY_CUSTOM;
import static android.companion.virtual.VirtualDeviceParams.DEVICE_POLICY_DEFAULT;
import static android.companion.virtual.VirtualDeviceParams.POLICY_TYPE_SENSORS;
@@ -47,7 +49,6 @@ import android.app.WindowConfiguration;
import android.app.admin.DevicePolicyManager;
import android.companion.AssociationInfo;
import android.companion.virtual.IVirtualDeviceActivityListener;
import android.companion.virtual.VirtualDeviceManager;
import android.companion.virtual.VirtualDeviceParams;
import android.companion.virtual.audio.IAudioConfigChangedCallback;
import android.companion.virtual.audio.IAudioRoutingCallback;
@@ -179,6 +180,7 @@ public class VirtualDeviceManagerServiceTest {
    private AssociationInfo mAssociationInfo;
    private VirtualDeviceManagerService mVdms;
    private VirtualDeviceManagerInternal mLocalService;
    private VirtualDeviceManagerService.VirtualDeviceManagerImpl mVdm;
    @Mock
    private InputController.NativeWrapper mNativeWrapperMock;
    @Mock
@@ -304,80 +306,68 @@ public class VirtualDeviceManagerServiceTest {

        mVdms = new VirtualDeviceManagerService(mContext);
        mLocalService = mVdms.getLocalServiceInstance();
        mVdm = mVdms.new VirtualDeviceManagerImpl();

        mDeviceImpl = createVirtualDevice(VIRTUAL_DEVICE_ID);
        VirtualDeviceParams params = new VirtualDeviceParams
                .Builder()
                .setBlockedActivities(getBlockedActivities())
                .build();
        mDeviceImpl = new VirtualDeviceImpl(mContext,
                mAssociationInfo, new Binder(), /* ownerUid= */ 0, VIRTUAL_DEVICE_ID,
                mInputController, mSensorController, (int associationId) -> {},
                mPendingTrampolineCallback, mActivityListener, mRunningAppsChangedCallback, params);
        mVdms.addVirtualDevice(mDeviceImpl);
    }

    @Test
    public void getDeviceIdForDisplayId_invalidDisplayId_returnsDefault() {
        VirtualDeviceManagerService.VirtualDeviceManagerImpl vdm =
                mVdms.new VirtualDeviceManagerImpl();

        assertThat(
                vdm.getDeviceIdForDisplayId(Display.INVALID_DISPLAY))
                .isEqualTo(VirtualDeviceManager.DEFAULT_DEVICE_ID);
        assertThat(mVdm.getDeviceIdForDisplayId(Display.INVALID_DISPLAY))
                .isEqualTo(DEFAULT_DEVICE_ID);
    }

    @Test
    public void getDeviceIdForDisplayId_defaultDisplayId_returnsDefault() {
        VirtualDeviceManagerService.VirtualDeviceManagerImpl vdm =
                mVdms.new VirtualDeviceManagerImpl();

        assertThat(
                vdm.getDeviceIdForDisplayId(Display.DEFAULT_DISPLAY))
                .isEqualTo(VirtualDeviceManager.DEFAULT_DEVICE_ID);
        assertThat(mVdm.getDeviceIdForDisplayId(Display.DEFAULT_DISPLAY))
                .isEqualTo(DEFAULT_DEVICE_ID);
    }

    @Test
    public void getDeviceIdForDisplayId_nonExistentDisplayId_returnsDefault() {
        VirtualDeviceManagerService.VirtualDeviceManagerImpl vdm =
                mVdms.new VirtualDeviceManagerImpl();
        int nonExistentDisplayId = 999;
        mDeviceImpl.mVirtualDisplayIds.remove(DISPLAY_ID);

        assertThat(
                vdm.getDeviceIdForDisplayId(nonExistentDisplayId))
                .isEqualTo(VirtualDeviceManager.DEFAULT_DEVICE_ID);
        assertThat(mVdm.getDeviceIdForDisplayId(DISPLAY_ID))
                .isEqualTo(DEFAULT_DEVICE_ID);
    }

    @Test
    public void getDeviceIdForDisplayId_withValidVirtualDisplayId_returnsDeviceId() {
        VirtualDeviceManagerService.VirtualDeviceManagerImpl vdm =
                mVdms.new VirtualDeviceManagerImpl();
        VirtualDeviceImpl virtualDevice = createVirtualDevice(/* virtualDeviceId */ 1000);
        virtualDevice.mVirtualDisplayIds.add(DISPLAY_ID);
        mDeviceImpl.mVirtualDisplayIds.add(DISPLAY_ID);

        assertThat(
                vdm.getDeviceIdForDisplayId(DISPLAY_ID))
                .isEqualTo(1000);
        assertThat(mVdm.getDeviceIdForDisplayId(DISPLAY_ID))
                .isEqualTo(mDeviceImpl.getDeviceId());
    }

    @Test
    public void getDevicePolicy_invalidDeviceId_returnsDefault() {
        assertThat(
                mLocalService.getDevicePolicy(
                        VirtualDeviceManager.INVALID_DEVICE_ID, POLICY_TYPE_SENSORS))
        assertThat(mVdm.getDevicePolicy(INVALID_DEVICE_ID, POLICY_TYPE_SENSORS))
                .isEqualTo(DEVICE_POLICY_DEFAULT);
    }

    @Test
    public void getDevicePolicy_defaultDeviceId_returnsDefault() {
        assertThat(
                mLocalService.getDevicePolicy(
                        VirtualDeviceManager.DEFAULT_DEVICE_ID, POLICY_TYPE_SENSORS))
        assertThat(mVdm.getDevicePolicy(DEFAULT_DEVICE_ID, POLICY_TYPE_SENSORS))
                .isEqualTo(DEVICE_POLICY_DEFAULT);
    }

    @Test
    public void getDevicePolicy_nonExistentDeviceId_returnsDefault() {
        assertThat(
                mLocalService.getDevicePolicy(mDeviceImpl.getDeviceId() + 1, POLICY_TYPE_SENSORS))
        assertThat(mVdm.getDevicePolicy(mDeviceImpl.getDeviceId() + 1, POLICY_TYPE_SENSORS))
                .isEqualTo(DEVICE_POLICY_DEFAULT);
    }

    @Test
    public void getDevicePolicy_unspecifiedPolicy_returnsDefault() {
        assertThat(
                mLocalService.getDevicePolicy(mDeviceImpl.getDeviceId(), POLICY_TYPE_SENSORS))
        assertThat(mVdm.getDevicePolicy(mDeviceImpl.getDeviceId(), POLICY_TYPE_SENSORS))
                .isEqualTo(DEVICE_POLICY_DEFAULT);
    }

@@ -394,8 +384,7 @@ public class VirtualDeviceManagerServiceTest {
                mPendingTrampolineCallback, mActivityListener, mRunningAppsChangedCallback, params);
        mVdms.addVirtualDevice(mDeviceImpl);

        assertThat(
                mLocalService.getDevicePolicy(mDeviceImpl.getDeviceId(), POLICY_TYPE_SENSORS))
        assertThat(mVdm.getDevicePolicy(mDeviceImpl.getDeviceId(), POLICY_TYPE_SENSORS))
                .isEqualTo(DEVICE_POLICY_CUSTOM);
    }

@@ -1196,18 +1185,4 @@ public class VirtualDeviceManagerServiceTest {
        verify(mContext).startActivityAsUser(argThat(intent ->
                intent.filterEquals(blockedAppIntent)), any(), any());
    }

    private VirtualDeviceImpl createVirtualDevice(int virtualDeviceId) {
        VirtualDeviceParams params = new VirtualDeviceParams
                .Builder()
                .setBlockedActivities(getBlockedActivities())
                .build();
        VirtualDeviceImpl virtualDeviceImpl = new VirtualDeviceImpl(mContext,
                mAssociationInfo, new Binder(), /* ownerUid */ 0, virtualDeviceId,
                mInputController, mSensorController, (int associationId) -> {},
                mPendingTrampolineCallback, mActivityListener, mRunningAppsChangedCallback, params);
        mVdms.addVirtualDevice(virtualDeviceImpl);
        return virtualDeviceImpl;
    }

}