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

Commit 70fec7cf authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "API for specifying cutout of VirtualDisplay" into main

parents c7b54d99 deaf90ab
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -5162,10 +5162,12 @@ package android.hardware.display {
  }
  public final class VirtualDisplayConfig implements android.os.Parcelable {
    method @FlaggedApi("android.companion.virtualdevice.flags.virtual_display_insets") @Nullable public android.view.DisplayCutout getDisplayCutout();
    method @FlaggedApi("android.companion.virtual.flags.vdm_custom_home") public boolean isHomeSupported();
  }
  public static final class VirtualDisplayConfig.Builder {
    method @FlaggedApi("android.companion.virtualdevice.flags.virtual_display_insets") @NonNull public android.hardware.display.VirtualDisplayConfig.Builder setDisplayCutout(@Nullable android.view.DisplayCutout);
    method @FlaggedApi("android.companion.virtual.flags.vdm_custom_home") @NonNull public android.hardware.display.VirtualDisplayConfig.Builder setHomeSupported(boolean);
  }
+7 −0
Original line number Diff line number Diff line
@@ -31,6 +31,13 @@ flag {
     is_fixed_read_only: true
}

flag {
    namespace: "virtual_devices"
    name: "virtual_display_insets"
    description: "APIs for specifying virtual display insets (via cutout)"
    bug: "350007135"
}

flag {
     namespace: "virtual_devices"
     name: "metrics_collection"
+43 −5
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import android.os.Parcel;
import android.os.Parcelable;
import android.util.ArraySet;
import android.view.Display;
import android.view.DisplayCutout;
import android.view.Surface;

import java.util.Collections;
@@ -55,9 +56,10 @@ public final class VirtualDisplayConfig implements Parcelable {
    private final String mUniqueId;
    private final int mDisplayIdToMirror;
    private final boolean mWindowManagerMirroringEnabled;
    private ArraySet<String> mDisplayCategories = null;
    private final ArraySet<String> mDisplayCategories;
    private final float mRequestedRefreshRate;
    private final boolean mIsHomeSupported;
    private final DisplayCutout mDisplayCutout;

    private VirtualDisplayConfig(
            @NonNull String name,
@@ -71,7 +73,8 @@ public final class VirtualDisplayConfig implements Parcelable {
            boolean windowManagerMirroringEnabled,
            @NonNull ArraySet<String> displayCategories,
            float requestedRefreshRate,
            boolean isHomeSupported) {
            boolean isHomeSupported,
            @Nullable DisplayCutout displayCutout) {
        mName = name;
        mWidth = width;
        mHeight = height;
@@ -84,6 +87,7 @@ public final class VirtualDisplayConfig implements Parcelable {
        mDisplayCategories = displayCategories;
        mRequestedRefreshRate = requestedRefreshRate;
        mIsHomeSupported = isHomeSupported;
        mDisplayCutout = displayCutout;
    }

    /**
@@ -134,6 +138,21 @@ public final class VirtualDisplayConfig implements Parcelable {
        return mSurface;
    }

    /**
     * Returns the cutout of this display.
     *
     * @return the cutout of the display or {@code null} if none is specified.
     *
     * @see Builder#setDisplayCutout
     * @hide
     */
    @FlaggedApi(android.companion.virtualdevice.flags.Flags.FLAG_VIRTUAL_DISPLAY_INSETS)
    @SystemApi
    @Nullable
    public DisplayCutout getDisplayCutout() {
        return mDisplayCutout;
    }

    /**
     * Returns the unique identifier for the display. Shouldn't be displayed to the user.
     * @hide
@@ -207,6 +226,7 @@ public final class VirtualDisplayConfig implements Parcelable {
        dest.writeArraySet(mDisplayCategories);
        dest.writeFloat(mRequestedRefreshRate);
        dest.writeBoolean(mIsHomeSupported);
        DisplayCutout.ParcelableWrapper.writeCutoutToParcel(mDisplayCutout, dest, flags);
    }

    @Override
@@ -232,7 +252,8 @@ public final class VirtualDisplayConfig implements Parcelable {
                && mWindowManagerMirroringEnabled == that.mWindowManagerMirroringEnabled
                && Objects.equals(mDisplayCategories, that.mDisplayCategories)
                && mRequestedRefreshRate == that.mRequestedRefreshRate
                && mIsHomeSupported == that.mIsHomeSupported;
                && mIsHomeSupported == that.mIsHomeSupported
                && Objects.equals(mDisplayCutout, that.mDisplayCutout);
    }

    @Override
@@ -240,7 +261,7 @@ public final class VirtualDisplayConfig implements Parcelable {
        int hashCode = Objects.hash(
                mName, mWidth, mHeight, mDensityDpi, mFlags, mSurface, mUniqueId,
                mDisplayIdToMirror, mWindowManagerMirroringEnabled, mDisplayCategories,
                mRequestedRefreshRate, mIsHomeSupported);
                mRequestedRefreshRate, mIsHomeSupported, mDisplayCutout);
        return hashCode;
    }

@@ -260,6 +281,7 @@ public final class VirtualDisplayConfig implements Parcelable {
                + " mDisplayCategories=" + mDisplayCategories
                + " mRequestedRefreshRate=" + mRequestedRefreshRate
                + " mIsHomeSupported=" + mIsHomeSupported
                + " mDisplayCutout=" + mDisplayCutout
                + ")";
    }

@@ -276,6 +298,7 @@ public final class VirtualDisplayConfig implements Parcelable {
        mDisplayCategories = (ArraySet<String>) in.readArraySet(null);
        mRequestedRefreshRate = in.readFloat();
        mIsHomeSupported = in.readBoolean();
        mDisplayCutout = DisplayCutout.ParcelableWrapper.readCutoutFromParcel(in);
    }

    @NonNull
@@ -308,6 +331,7 @@ public final class VirtualDisplayConfig implements Parcelable {
        private ArraySet<String> mDisplayCategories = new ArraySet<>();
        private float mRequestedRefreshRate = 0.0f;
        private boolean mIsHomeSupported = false;
        private DisplayCutout mDisplayCutout = null;

        /**
         * Creates a new Builder.
@@ -468,6 +492,19 @@ public final class VirtualDisplayConfig implements Parcelable {
            return this;
        }

        /**
         * Sets the cutout of this display.
         *
         * @hide
         */
        @FlaggedApi(android.companion.virtualdevice.flags.Flags.FLAG_VIRTUAL_DISPLAY_INSETS)
        @SystemApi
        @NonNull
        public Builder setDisplayCutout(@Nullable DisplayCutout displayCutout) {
            mDisplayCutout = displayCutout;
            return this;
        }

        /**
         * Builds the {@link VirtualDisplayConfig} instance.
         */
@@ -485,7 +522,8 @@ public final class VirtualDisplayConfig implements Parcelable {
                    mWindowManagerMirroringEnabled,
                    mDisplayCategories,
                    mRequestedRefreshRate,
                    mIsHomeSupported);
                    mIsHomeSupported,
                    mDisplayCutout);
        }
    }
}
+4 −0
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ import android.os.SystemProperties;
import android.util.ArrayMap;
import android.util.Slog;
import android.view.Display;
import android.view.DisplayCutout;
import android.view.DisplayShape;
import android.view.Surface;
import android.view.SurfaceControl;
@@ -275,6 +276,7 @@ public class VirtualDisplayAdapter extends DisplayAdapter {
        private boolean mIsDisplayOn;
        private int mDisplayIdToMirror;
        private boolean mIsWindowManagerMirroring;
        private DisplayCutout mDisplayCutout;

        public VirtualDisplayDevice(IBinder displayToken, IBinder appToken,
                int ownerUid, String ownerPackageName, Surface surface, int flags,
@@ -290,6 +292,7 @@ public class VirtualDisplayAdapter extends DisplayAdapter {
            mHeight = virtualDisplayConfig.getHeight();
            mDensityDpi = virtualDisplayConfig.getDensityDpi();
            mRequestedRefreshRate = virtualDisplayConfig.getRequestedRefreshRate();
            mDisplayCutout = virtualDisplayConfig.getDisplayCutout();
            mMode = createMode(mWidth, mHeight, getRefreshRate());
            mSurface = surface;
            mFlags = flags;
@@ -571,6 +574,7 @@ public class VirtualDisplayAdapter extends DisplayAdapter {

                mInfo.displayShape =
                        DisplayShape.createDefaultDisplayShape(mInfo.width, mInfo.height, false);
                mInfo.displayCutout = mDisplayCutout;
            }
            return mInfo;
        }