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

Commit 70dcba63 authored by Ján Sebechlebský's avatar Ján Sebechlebský Committed by Android (Google) Code Review
Browse files

Merge "Use String for display name in VirtualCameraConfig" into main

parents cb9e8d99 723670b1
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -3357,7 +3357,7 @@ package android.companion.virtual.camera {
  @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 @@ package android.companion.virtual.camera {
    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);
  }
+15 −25
Original line number Diff line number Diff line
@@ -20,11 +20,9 @@ import static java.util.Objects.requireNonNull;

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 @@ import java.util.concurrent.Executor;
@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 @@ public final class VirtualCameraConfig implements Parcelable {
    }

    private VirtualCameraConfig(@NonNull Parcel in) {
        mNameStringRes = in.readInt();
        mName = in.readString8();
        mCallback = IVirtualCameraCallback.Stub.asInterface(in.readStrongBinder());
        mStreamConfigurations =
                Set.of(
@@ -84,18 +82,18 @@ public final class VirtualCameraConfig implements Parcelable {

    @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 @@ public final class VirtualCameraConfig implements Parcelable {
     * <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 @@ public final class VirtualCameraConfig implements Parcelable {
        @NonNull
        public VirtualCameraConfig build() {
            return new VirtualCameraConfig(
                    mDisplayNameStringRes, mStreamConfigurations, mCallbackExecutor, mCallback);
                    mName, mStreamConfigurations, mCallbackExecutor, mCallback);
        }
    }

+8 −8
Original line number Diff line number Diff line
@@ -53,11 +53,11 @@ import java.util.List;
@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 @@ public class VirtualCameraControllerTest {
    @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 @@ public class VirtualCameraControllerTest {
    @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 @@ public class VirtualCameraControllerTest {
    @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 @@ public class VirtualCameraControllerTest {
    }

    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();
    }