Loading core/api/system-current.txt +1 −1 Original line number Diff line number Diff line Loading @@ -3362,7 +3362,7 @@ package android.companion.virtual.sensor { } public static final class VirtualSensorConfig.Builder { ctor public VirtualSensorConfig.Builder(int, @NonNull String); ctor public VirtualSensorConfig.Builder(@IntRange(from=1) int, @NonNull String); method @NonNull public android.companion.virtual.sensor.VirtualSensorConfig build(); method @NonNull public android.companion.virtual.sensor.VirtualSensorConfig.Builder setDirectChannelTypesSupported(int); method @NonNull public android.companion.virtual.sensor.VirtualSensorConfig.Builder setHighestDirectReportRateLevel(int); core/java/android/companion/virtual/sensor/VirtualSensorConfig.java +5 −1 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.companion.virtual.sensor; import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SystemApi; Loading Loading @@ -167,7 +168,10 @@ public final class VirtualSensorConfig implements Parcelable { * @param name The name of the sensor. Must be unique among all sensors with the same type * that belong to the same virtual device. */ public Builder(int type, @NonNull String name) { public Builder(@IntRange(from = 1) int type, @NonNull String name) { if (type <= 0) { throw new IllegalArgumentException("Virtual sensor type must be positive"); } mType = type; mName = Objects.requireNonNull(name); } Loading core/tests/coretests/src/android/companion/virtual/sensor/VirtualSensorConfigTest.java +19 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.testng.Assert.assertThrows; import android.hardware.Sensor; import android.os.Parcel; import android.platform.test.annotations.Presubmit; Loading Loading @@ -66,6 +67,24 @@ public class VirtualSensorConfigTest { assertThat(recreatedConfig.getFlags()).isEqualTo(0x400 | RATE_VERY_FAST << 7); } @Test public void virtualSensorConfig_invalidName_throwsException() { assertThrows( NullPointerException.class, () -> new VirtualSensorConfig.Builder(TYPE_ACCELEROMETER, null)); } @Test public void virtualSensorConfig_invalidType_throwsException() { assertThrows( IllegalArgumentException.class, () -> new VirtualSensorConfig.Builder(Sensor.TYPE_ALL, SENSOR_NAME)); assertThrows( IllegalArgumentException.class, () -> new VirtualSensorConfig.Builder(0, SENSOR_NAME)); } @Test public void hardwareBufferDirectChannelTypeSupported_throwsException() { assertThrows( Loading services/companion/java/com/android/server/companion/virtual/SensorController.java +3 −0 Original line number Diff line number Diff line Loading @@ -99,6 +99,9 @@ public class SensorController { private int createSensorInternal(IBinder sensorToken, VirtualSensorConfig config) throws SensorCreationException { if (config.getType() <= 0) { throw new SensorCreationException("Received an invalid virtual sensor type."); } final int handle = mSensorManagerInternal.createRuntimeSensor(mVirtualDeviceId, config.getType(), config.getName(), config.getVendor() == null ? "" : config.getVendor(), config.getFlags(), Loading Loading
core/api/system-current.txt +1 −1 Original line number Diff line number Diff line Loading @@ -3362,7 +3362,7 @@ package android.companion.virtual.sensor { } public static final class VirtualSensorConfig.Builder { ctor public VirtualSensorConfig.Builder(int, @NonNull String); ctor public VirtualSensorConfig.Builder(@IntRange(from=1) int, @NonNull String); method @NonNull public android.companion.virtual.sensor.VirtualSensorConfig build(); method @NonNull public android.companion.virtual.sensor.VirtualSensorConfig.Builder setDirectChannelTypesSupported(int); method @NonNull public android.companion.virtual.sensor.VirtualSensorConfig.Builder setHighestDirectReportRateLevel(int);
core/java/android/companion/virtual/sensor/VirtualSensorConfig.java +5 −1 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.companion.virtual.sensor; import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SystemApi; Loading Loading @@ -167,7 +168,10 @@ public final class VirtualSensorConfig implements Parcelable { * @param name The name of the sensor. Must be unique among all sensors with the same type * that belong to the same virtual device. */ public Builder(int type, @NonNull String name) { public Builder(@IntRange(from = 1) int type, @NonNull String name) { if (type <= 0) { throw new IllegalArgumentException("Virtual sensor type must be positive"); } mType = type; mName = Objects.requireNonNull(name); } Loading
core/tests/coretests/src/android/companion/virtual/sensor/VirtualSensorConfigTest.java +19 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.testng.Assert.assertThrows; import android.hardware.Sensor; import android.os.Parcel; import android.platform.test.annotations.Presubmit; Loading Loading @@ -66,6 +67,24 @@ public class VirtualSensorConfigTest { assertThat(recreatedConfig.getFlags()).isEqualTo(0x400 | RATE_VERY_FAST << 7); } @Test public void virtualSensorConfig_invalidName_throwsException() { assertThrows( NullPointerException.class, () -> new VirtualSensorConfig.Builder(TYPE_ACCELEROMETER, null)); } @Test public void virtualSensorConfig_invalidType_throwsException() { assertThrows( IllegalArgumentException.class, () -> new VirtualSensorConfig.Builder(Sensor.TYPE_ALL, SENSOR_NAME)); assertThrows( IllegalArgumentException.class, () -> new VirtualSensorConfig.Builder(0, SENSOR_NAME)); } @Test public void hardwareBufferDirectChannelTypeSupported_throwsException() { assertThrows( Loading
services/companion/java/com/android/server/companion/virtual/SensorController.java +3 −0 Original line number Diff line number Diff line Loading @@ -99,6 +99,9 @@ public class SensorController { private int createSensorInternal(IBinder sensorToken, VirtualSensorConfig config) throws SensorCreationException { if (config.getType() <= 0) { throw new SensorCreationException("Received an invalid virtual sensor type."); } final int handle = mSensorManagerInternal.createRuntimeSensor(mVirtualDeviceId, config.getType(), config.getName(), config.getVendor() == null ? "" : config.getVendor(), config.getFlags(), Loading