Merge "Use String for display name in VirtualCameraConfig" into main
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index 51e61e6..b15bc0e 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -3357,7 +3357,7 @@
@FlaggedApi("android.companion.virtual.flags.virtual_camera") public final class VirtualCameraConfig implements android.os.Parcelable {
method public int describeContents();
- method @StringRes public int getDisplayNameStringRes();
+ method @NonNull public String getName();
method @NonNull public java.util.Set<android.companion.virtual.camera.VirtualCameraStreamConfig> getStreamConfigs();
method public void writeToParcel(@NonNull android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.companion.virtual.camera.VirtualCameraConfig> CREATOR;
@@ -3367,7 +3367,7 @@
ctor public VirtualCameraConfig.Builder();
method @NonNull public android.companion.virtual.camera.VirtualCameraConfig.Builder addStreamConfig(int, int, int);
method @NonNull public android.companion.virtual.camera.VirtualCameraConfig build();
- method @NonNull public android.companion.virtual.camera.VirtualCameraConfig.Builder setDisplayNameStringRes(@StringRes int);
+ method @NonNull public android.companion.virtual.camera.VirtualCameraConfig.Builder setName(@NonNull String);
method @NonNull public android.companion.virtual.camera.VirtualCameraConfig.Builder setVirtualCameraCallback(@NonNull java.util.concurrent.Executor, @NonNull android.companion.virtual.camera.VirtualCameraCallback);
}
diff --git a/core/java/android/companion/virtual/camera/VirtualCameraConfig.java b/core/java/android/companion/virtual/camera/VirtualCameraConfig.java
index a939251..59fe9a1 100644
--- a/core/java/android/companion/virtual/camera/VirtualCameraConfig.java
+++ b/core/java/android/companion/virtual/camera/VirtualCameraConfig.java
@@ -20,11 +20,9 @@
import android.annotation.FlaggedApi;
import android.annotation.NonNull;
-import android.annotation.StringRes;
import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.companion.virtual.flags.Flags;
-import android.content.res.Resources;
import android.graphics.ImageFormat;
import android.os.Parcel;
import android.os.Parcelable;
@@ -45,16 +43,16 @@
@FlaggedApi(Flags.FLAG_VIRTUAL_CAMERA)
public final class VirtualCameraConfig implements Parcelable {
- private final @StringRes int mNameStringRes;
+ private final String mName;
private final Set<VirtualCameraStreamConfig> mStreamConfigurations;
private final IVirtualCameraCallback mCallback;
private VirtualCameraConfig(
- int displayNameStringRes,
+ @NonNull String name,
@NonNull Set<VirtualCameraStreamConfig> streamConfigurations,
@NonNull Executor executor,
@NonNull VirtualCameraCallback callback) {
- mNameStringRes = displayNameStringRes;
+ mName = requireNonNull(name, "Missing name");
mStreamConfigurations =
Set.copyOf(requireNonNull(streamConfigurations, "Missing stream configurations"));
if (mStreamConfigurations.isEmpty()) {
@@ -68,7 +66,7 @@
}
private VirtualCameraConfig(@NonNull Parcel in) {
- mNameStringRes = in.readInt();
+ mName = in.readString8();
mCallback = IVirtualCameraCallback.Stub.asInterface(in.readStrongBinder());
mStreamConfigurations =
Set.of(
@@ -84,18 +82,18 @@
@Override
public void writeToParcel(@NonNull Parcel dest, int flags) {
- dest.writeInt(mNameStringRes);
+ dest.writeString8(mName);
dest.writeStrongInterface(mCallback);
dest.writeParcelableArray(
mStreamConfigurations.toArray(new VirtualCameraStreamConfig[0]), flags);
}
/**
- * @return The display name of this VirtualCamera
+ * @return The name of this VirtualCamera
*/
- @StringRes
- public int getDisplayNameStringRes() {
- return mNameStringRes;
+ @NonNull
+ public String getName() {
+ return mName;
}
/**
@@ -126,30 +124,22 @@
* <li>At least one stream must be added with {@link #addStreamConfig(int, int, int)}.
* <li>A callback must be set with {@link #setVirtualCameraCallback(Executor,
* VirtualCameraCallback)}
- * <li>A user readable name can be set with {@link #setDisplayNameStringRes(int)}
+ * <li>A camera name must be set with {@link #setName(String)}
*/
@FlaggedApi(Flags.FLAG_VIRTUAL_CAMERA)
public static final class Builder {
- private @StringRes int mDisplayNameStringRes = Resources.ID_NULL;
+ private String mName;
private final ArraySet<VirtualCameraStreamConfig> mStreamConfigurations = new ArraySet<>();
private Executor mCallbackExecutor;
private VirtualCameraCallback mCallback;
/**
- * Set the visible name of this camera for the user.
- *
- * <p>Sets the resource to a string representing a user readable name for this virtual
- * camera.
- *
- * @throws IllegalArgumentException if an invalid resource id is passed.
+ * Set the name of the virtual camera instance.
*/
@NonNull
- public Builder setDisplayNameStringRes(@StringRes int displayNameStringRes) {
- if (displayNameStringRes <= 0) {
- throw new IllegalArgumentException("Invalid resource passed for display name");
- }
- mDisplayNameStringRes = displayNameStringRes;
+ public Builder setName(@NonNull String name) {
+ mName = requireNonNull(name, "Display name cannot be null");
return this;
}
@@ -203,7 +193,7 @@
@NonNull
public VirtualCameraConfig build() {
return new VirtualCameraConfig(
- mDisplayNameStringRes, mStreamConfigurations, mCallbackExecutor, mCallback);
+ mName, mStreamConfigurations, mCallbackExecutor, mCallback);
}
}
diff --git a/services/tests/servicestests/src/com/android/server/companion/virtual/camera/VirtualCameraControllerTest.java b/services/tests/servicestests/src/com/android/server/companion/virtual/camera/VirtualCameraControllerTest.java
index 071d571..9b28b81 100644
--- a/services/tests/servicestests/src/com/android/server/companion/virtual/camera/VirtualCameraControllerTest.java
+++ b/services/tests/servicestests/src/com/android/server/companion/virtual/camera/VirtualCameraControllerTest.java
@@ -53,11 +53,11 @@
@TestableLooper.RunWithLooper(setAsMainLooper = true)
public class VirtualCameraControllerTest {
- private static final int CAMERA_DISPLAY_NAME_RES_ID_1 = 10;
+ private static final String CAMERA_NAME_1 = "Virtual camera 1";
private static final int CAMERA_WIDTH_1 = 100;
private static final int CAMERA_HEIGHT_1 = 200;
- private static final int CAMERA_DISPLAY_NAME_RES_ID_2 = 11;
+ private static final String CAMERA_NAME_2 = "Virtual camera 2";
private static final int CAMERA_WIDTH_2 = 400;
private static final int CAMERA_HEIGHT_2 = 600;
private static final int CAMERA_FORMAT = ImageFormat.YUV_420_888;
@@ -84,7 +84,7 @@
@Test
public void registerCamera_registersCamera() throws Exception {
mVirtualCameraController.registerCamera(createVirtualCameraConfig(
- CAMERA_WIDTH_1, CAMERA_HEIGHT_1, CAMERA_FORMAT, CAMERA_DISPLAY_NAME_RES_ID_1));
+ CAMERA_WIDTH_1, CAMERA_HEIGHT_1, CAMERA_FORMAT, CAMERA_NAME_1));
ArgumentCaptor<VirtualCameraConfiguration> configurationCaptor =
ArgumentCaptor.forClass(VirtualCameraConfiguration.class);
@@ -98,7 +98,7 @@
@Test
public void unregisterCamera_unregistersCamera() throws Exception {
VirtualCameraConfig config = createVirtualCameraConfig(
- CAMERA_WIDTH_1, CAMERA_HEIGHT_1, CAMERA_FORMAT, CAMERA_DISPLAY_NAME_RES_ID_1);
+ CAMERA_WIDTH_1, CAMERA_HEIGHT_1, CAMERA_FORMAT, CAMERA_NAME_1);
mVirtualCameraController.registerCamera(config);
mVirtualCameraController.unregisterCamera(config);
@@ -109,9 +109,9 @@
@Test
public void close_unregistersAllCameras() throws Exception {
mVirtualCameraController.registerCamera(createVirtualCameraConfig(
- CAMERA_WIDTH_1, CAMERA_HEIGHT_1, CAMERA_FORMAT, CAMERA_DISPLAY_NAME_RES_ID_1));
+ CAMERA_WIDTH_1, CAMERA_HEIGHT_1, CAMERA_FORMAT, CAMERA_NAME_1));
mVirtualCameraController.registerCamera(createVirtualCameraConfig(
- CAMERA_WIDTH_2, CAMERA_HEIGHT_2, CAMERA_FORMAT, CAMERA_DISPLAY_NAME_RES_ID_2));
+ CAMERA_WIDTH_2, CAMERA_HEIGHT_2, CAMERA_FORMAT, CAMERA_NAME_2));
mVirtualCameraController.close();
@@ -129,10 +129,10 @@
}
private VirtualCameraConfig createVirtualCameraConfig(
- int width, int height, int format, int displayNameResId) {
+ int width, int height, int format, String displayName) {
return new VirtualCameraConfig.Builder()
.addStreamConfig(width, height, format)
- .setDisplayNameStringRes(displayNameResId)
+ .setName(displayName)
.setVirtualCameraCallback(mCallbackHandler, createNoOpCallback())
.build();
}