Add VDM internal API isValidVirtualDeviceId
Useful for other system services that already use
VDMInternal so they won't have to create a VDM instance.
Bug: 287269288
Test: presubmit
Change-Id: I827b54d1301514bc37efea3567bd2a7c36a46802
diff --git a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java
index 9b78ed4..923728f 100644
--- a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java
+++ b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java
@@ -859,6 +859,11 @@
}
@Override
+ public boolean isValidVirtualDeviceId(int deviceId) {
+ return mImpl.isValidVirtualDeviceId(deviceId);
+ }
+
+ @Override
public @Nullable String getPersistentIdForDevice(int deviceId) {
if (deviceId == Context.DEVICE_ID_DEFAULT) {
return VirtualDeviceManager.PERSISTENT_DEVICE_ID_DEFAULT;
diff --git a/services/core/java/com/android/server/companion/virtual/VirtualDeviceManagerInternal.java b/services/core/java/com/android/server/companion/virtual/VirtualDeviceManagerInternal.java
index cecde55..823788f 100644
--- a/services/core/java/com/android/server/companion/virtual/VirtualDeviceManagerInternal.java
+++ b/services/core/java/com/android/server/companion/virtual/VirtualDeviceManagerInternal.java
@@ -21,6 +21,7 @@
import android.companion.virtual.IVirtualDevice;
import android.companion.virtual.VirtualDevice;
import android.companion.virtual.sensor.VirtualSensor;
+import android.content.Context;
import android.os.LocaleList;
import android.util.ArraySet;
@@ -149,6 +150,14 @@
public abstract @NonNull ArraySet<Integer> getDisplayIdsForDevice(int deviceId);
/**
+ * Checks whether the passed {@code deviceId} is a valid virtual device ID or not.
+ *
+ * <p>{@link Context#DEVICE_ID_DEFAULT} is not valid as it is the ID of the default
+ * device which is not a virtual device.</p>
+ */
+ public abstract boolean isValidVirtualDeviceId(int deviceId);
+
+ /**
* Returns the ID of the device which owns the display with the given ID.
*
* <p>In case the virtual display ID is invalid or doesn't belong to a virtual device, then
diff --git a/services/tests/servicestests/src/com/android/server/companion/virtual/VirtualDeviceManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/companion/virtual/VirtualDeviceManagerServiceTest.java
index 9213601a..995d1f4 100644
--- a/services/tests/servicestests/src/com/android/server/companion/virtual/VirtualDeviceManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/companion/virtual/VirtualDeviceManagerServiceTest.java
@@ -444,18 +444,27 @@
}
@Test
+ public void isDeviceIdValid_invalidDeviceId_returnsFalse() {
+ assertThat(mVdm.isValidVirtualDeviceId(DEVICE_ID_INVALID)).isFalse();
+ assertThat(mLocalService.isValidVirtualDeviceId(DEVICE_ID_INVALID)).isFalse();
+ }
+
+ @Test
public void isDeviceIdValid_defaultDeviceId_returnsFalse() {
assertThat(mVdm.isValidVirtualDeviceId(DEVICE_ID_DEFAULT)).isFalse();
+ assertThat(mLocalService.isValidVirtualDeviceId(DEVICE_ID_DEFAULT)).isFalse();
}
@Test
public void isDeviceIdValid_validVirtualDeviceId_returnsTrue() {
assertThat(mVdm.isValidVirtualDeviceId(mDeviceImpl.getDeviceId())).isTrue();
+ assertThat(mLocalService.isValidVirtualDeviceId(mDeviceImpl.getDeviceId())).isTrue();
}
@Test
public void isDeviceIdValid_nonExistentDeviceId_returnsFalse() {
assertThat(mVdm.isValidVirtualDeviceId(mDeviceImpl.getDeviceId() + 1)).isFalse();
+ assertThat(mLocalService.isValidVirtualDeviceId(mDeviceImpl.getDeviceId() + 1)).isFalse();
}
@Test