Loading services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java +9 −28 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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; Loading Loading @@ -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) { Loading services/core/java/com/android/server/companion/virtual/VirtualDeviceManagerInternal.java +0 −17 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading @@ -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); } services/tests/servicestests/src/com/android/server/companion/virtual/VirtualDeviceManagerServiceTest.java +28 −53 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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 Loading Loading @@ -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); } Loading @@ -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); } Loading Loading @@ -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; } } Loading
services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java +9 −28 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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; Loading Loading @@ -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) { Loading
services/core/java/com/android/server/companion/virtual/VirtualDeviceManagerInternal.java +0 −17 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading @@ -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); }
services/tests/servicestests/src/com/android/server/companion/virtual/VirtualDeviceManagerServiceTest.java +28 −53 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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 Loading Loading @@ -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); } Loading @@ -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); } Loading Loading @@ -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; } }