Loading core/api/system-current.txt +2 −0 Original line number Original line Diff line number Diff line Loading @@ -5162,10 +5162,12 @@ package android.hardware.display { } } public final class VirtualDisplayConfig implements android.os.Parcelable { 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(); method @FlaggedApi("android.companion.virtual.flags.vdm_custom_home") public boolean isHomeSupported(); } } public static final class VirtualDisplayConfig.Builder { 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); method @FlaggedApi("android.companion.virtual.flags.vdm_custom_home") @NonNull public android.hardware.display.VirtualDisplayConfig.Builder setHomeSupported(boolean); } } core/java/android/companion/virtual/flags/flags.aconfig +7 −0 Original line number Original line Diff line number Diff line Loading @@ -31,6 +31,13 @@ flag { is_fixed_read_only: true 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 { flag { namespace: "virtual_devices" namespace: "virtual_devices" name: "metrics_collection" name: "metrics_collection" Loading core/java/android/hardware/display/VirtualDisplayConfig.java +43 −5 Original line number Original line Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.os.Parcelable; import android.util.ArraySet; import android.util.ArraySet; import android.view.Display; import android.view.Display; import android.view.DisplayCutout; import android.view.Surface; import android.view.Surface; import java.util.Collections; import java.util.Collections; Loading @@ -55,9 +56,10 @@ public final class VirtualDisplayConfig implements Parcelable { private final String mUniqueId; private final String mUniqueId; private final int mDisplayIdToMirror; private final int mDisplayIdToMirror; private final boolean mWindowManagerMirroringEnabled; private final boolean mWindowManagerMirroringEnabled; private ArraySet<String> mDisplayCategories = null; private final ArraySet<String> mDisplayCategories; private final float mRequestedRefreshRate; private final float mRequestedRefreshRate; private final boolean mIsHomeSupported; private final boolean mIsHomeSupported; private final DisplayCutout mDisplayCutout; private VirtualDisplayConfig( private VirtualDisplayConfig( @NonNull String name, @NonNull String name, Loading @@ -71,7 +73,8 @@ public final class VirtualDisplayConfig implements Parcelable { boolean windowManagerMirroringEnabled, boolean windowManagerMirroringEnabled, @NonNull ArraySet<String> displayCategories, @NonNull ArraySet<String> displayCategories, float requestedRefreshRate, float requestedRefreshRate, boolean isHomeSupported) { boolean isHomeSupported, @Nullable DisplayCutout displayCutout) { mName = name; mName = name; mWidth = width; mWidth = width; mHeight = height; mHeight = height; Loading @@ -84,6 +87,7 @@ public final class VirtualDisplayConfig implements Parcelable { mDisplayCategories = displayCategories; mDisplayCategories = displayCategories; mRequestedRefreshRate = requestedRefreshRate; mRequestedRefreshRate = requestedRefreshRate; mIsHomeSupported = isHomeSupported; mIsHomeSupported = isHomeSupported; mDisplayCutout = displayCutout; } } /** /** Loading Loading @@ -134,6 +138,21 @@ public final class VirtualDisplayConfig implements Parcelable { return mSurface; 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. * Returns the unique identifier for the display. Shouldn't be displayed to the user. * @hide * @hide Loading Loading @@ -207,6 +226,7 @@ public final class VirtualDisplayConfig implements Parcelable { dest.writeArraySet(mDisplayCategories); dest.writeArraySet(mDisplayCategories); dest.writeFloat(mRequestedRefreshRate); dest.writeFloat(mRequestedRefreshRate); dest.writeBoolean(mIsHomeSupported); dest.writeBoolean(mIsHomeSupported); DisplayCutout.ParcelableWrapper.writeCutoutToParcel(mDisplayCutout, dest, flags); } } @Override @Override Loading @@ -232,7 +252,8 @@ public final class VirtualDisplayConfig implements Parcelable { && mWindowManagerMirroringEnabled == that.mWindowManagerMirroringEnabled && mWindowManagerMirroringEnabled == that.mWindowManagerMirroringEnabled && Objects.equals(mDisplayCategories, that.mDisplayCategories) && Objects.equals(mDisplayCategories, that.mDisplayCategories) && mRequestedRefreshRate == that.mRequestedRefreshRate && mRequestedRefreshRate == that.mRequestedRefreshRate && mIsHomeSupported == that.mIsHomeSupported; && mIsHomeSupported == that.mIsHomeSupported && Objects.equals(mDisplayCutout, that.mDisplayCutout); } } @Override @Override Loading @@ -240,7 +261,7 @@ public final class VirtualDisplayConfig implements Parcelable { int hashCode = Objects.hash( int hashCode = Objects.hash( mName, mWidth, mHeight, mDensityDpi, mFlags, mSurface, mUniqueId, mName, mWidth, mHeight, mDensityDpi, mFlags, mSurface, mUniqueId, mDisplayIdToMirror, mWindowManagerMirroringEnabled, mDisplayCategories, mDisplayIdToMirror, mWindowManagerMirroringEnabled, mDisplayCategories, mRequestedRefreshRate, mIsHomeSupported); mRequestedRefreshRate, mIsHomeSupported, mDisplayCutout); return hashCode; return hashCode; } } Loading @@ -260,6 +281,7 @@ public final class VirtualDisplayConfig implements Parcelable { + " mDisplayCategories=" + mDisplayCategories + " mDisplayCategories=" + mDisplayCategories + " mRequestedRefreshRate=" + mRequestedRefreshRate + " mRequestedRefreshRate=" + mRequestedRefreshRate + " mIsHomeSupported=" + mIsHomeSupported + " mIsHomeSupported=" + mIsHomeSupported + " mDisplayCutout=" + mDisplayCutout + ")"; + ")"; } } Loading @@ -276,6 +298,7 @@ public final class VirtualDisplayConfig implements Parcelable { mDisplayCategories = (ArraySet<String>) in.readArraySet(null); mDisplayCategories = (ArraySet<String>) in.readArraySet(null); mRequestedRefreshRate = in.readFloat(); mRequestedRefreshRate = in.readFloat(); mIsHomeSupported = in.readBoolean(); mIsHomeSupported = in.readBoolean(); mDisplayCutout = DisplayCutout.ParcelableWrapper.readCutoutFromParcel(in); } } @NonNull @NonNull Loading Loading @@ -308,6 +331,7 @@ public final class VirtualDisplayConfig implements Parcelable { private ArraySet<String> mDisplayCategories = new ArraySet<>(); private ArraySet<String> mDisplayCategories = new ArraySet<>(); private float mRequestedRefreshRate = 0.0f; private float mRequestedRefreshRate = 0.0f; private boolean mIsHomeSupported = false; private boolean mIsHomeSupported = false; private DisplayCutout mDisplayCutout = null; /** /** * Creates a new Builder. * Creates a new Builder. Loading Loading @@ -468,6 +492,19 @@ public final class VirtualDisplayConfig implements Parcelable { return this; 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. * Builds the {@link VirtualDisplayConfig} instance. */ */ Loading @@ -485,7 +522,8 @@ public final class VirtualDisplayConfig implements Parcelable { mWindowManagerMirroringEnabled, mWindowManagerMirroringEnabled, mDisplayCategories, mDisplayCategories, mRequestedRefreshRate, mRequestedRefreshRate, mIsHomeSupported); mIsHomeSupported, mDisplayCutout); } } } } } } services/core/java/com/android/server/display/VirtualDisplayAdapter.java +4 −0 Original line number Original line Diff line number Diff line Loading @@ -56,6 +56,7 @@ import android.os.SystemProperties; import android.util.ArrayMap; import android.util.ArrayMap; import android.util.Slog; import android.util.Slog; import android.view.Display; import android.view.Display; import android.view.DisplayCutout; import android.view.DisplayShape; import android.view.DisplayShape; import android.view.Surface; import android.view.Surface; import android.view.SurfaceControl; import android.view.SurfaceControl; Loading Loading @@ -275,6 +276,7 @@ public class VirtualDisplayAdapter extends DisplayAdapter { private boolean mIsDisplayOn; private boolean mIsDisplayOn; private int mDisplayIdToMirror; private int mDisplayIdToMirror; private boolean mIsWindowManagerMirroring; private boolean mIsWindowManagerMirroring; private DisplayCutout mDisplayCutout; public VirtualDisplayDevice(IBinder displayToken, IBinder appToken, public VirtualDisplayDevice(IBinder displayToken, IBinder appToken, int ownerUid, String ownerPackageName, Surface surface, int flags, int ownerUid, String ownerPackageName, Surface surface, int flags, Loading @@ -290,6 +292,7 @@ public class VirtualDisplayAdapter extends DisplayAdapter { mHeight = virtualDisplayConfig.getHeight(); mHeight = virtualDisplayConfig.getHeight(); mDensityDpi = virtualDisplayConfig.getDensityDpi(); mDensityDpi = virtualDisplayConfig.getDensityDpi(); mRequestedRefreshRate = virtualDisplayConfig.getRequestedRefreshRate(); mRequestedRefreshRate = virtualDisplayConfig.getRequestedRefreshRate(); mDisplayCutout = virtualDisplayConfig.getDisplayCutout(); mMode = createMode(mWidth, mHeight, getRefreshRate()); mMode = createMode(mWidth, mHeight, getRefreshRate()); mSurface = surface; mSurface = surface; mFlags = flags; mFlags = flags; Loading Loading @@ -571,6 +574,7 @@ public class VirtualDisplayAdapter extends DisplayAdapter { mInfo.displayShape = mInfo.displayShape = DisplayShape.createDefaultDisplayShape(mInfo.width, mInfo.height, false); DisplayShape.createDefaultDisplayShape(mInfo.width, mInfo.height, false); mInfo.displayCutout = mDisplayCutout; } } return mInfo; return mInfo; } } Loading Loading
core/api/system-current.txt +2 −0 Original line number Original line Diff line number Diff line Loading @@ -5162,10 +5162,12 @@ package android.hardware.display { } } public final class VirtualDisplayConfig implements android.os.Parcelable { 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(); method @FlaggedApi("android.companion.virtual.flags.vdm_custom_home") public boolean isHomeSupported(); } } public static final class VirtualDisplayConfig.Builder { 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); method @FlaggedApi("android.companion.virtual.flags.vdm_custom_home") @NonNull public android.hardware.display.VirtualDisplayConfig.Builder setHomeSupported(boolean); } }
core/java/android/companion/virtual/flags/flags.aconfig +7 −0 Original line number Original line Diff line number Diff line Loading @@ -31,6 +31,13 @@ flag { is_fixed_read_only: true 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 { flag { namespace: "virtual_devices" namespace: "virtual_devices" name: "metrics_collection" name: "metrics_collection" Loading
core/java/android/hardware/display/VirtualDisplayConfig.java +43 −5 Original line number Original line Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.os.Parcelable; import android.util.ArraySet; import android.util.ArraySet; import android.view.Display; import android.view.Display; import android.view.DisplayCutout; import android.view.Surface; import android.view.Surface; import java.util.Collections; import java.util.Collections; Loading @@ -55,9 +56,10 @@ public final class VirtualDisplayConfig implements Parcelable { private final String mUniqueId; private final String mUniqueId; private final int mDisplayIdToMirror; private final int mDisplayIdToMirror; private final boolean mWindowManagerMirroringEnabled; private final boolean mWindowManagerMirroringEnabled; private ArraySet<String> mDisplayCategories = null; private final ArraySet<String> mDisplayCategories; private final float mRequestedRefreshRate; private final float mRequestedRefreshRate; private final boolean mIsHomeSupported; private final boolean mIsHomeSupported; private final DisplayCutout mDisplayCutout; private VirtualDisplayConfig( private VirtualDisplayConfig( @NonNull String name, @NonNull String name, Loading @@ -71,7 +73,8 @@ public final class VirtualDisplayConfig implements Parcelable { boolean windowManagerMirroringEnabled, boolean windowManagerMirroringEnabled, @NonNull ArraySet<String> displayCategories, @NonNull ArraySet<String> displayCategories, float requestedRefreshRate, float requestedRefreshRate, boolean isHomeSupported) { boolean isHomeSupported, @Nullable DisplayCutout displayCutout) { mName = name; mName = name; mWidth = width; mWidth = width; mHeight = height; mHeight = height; Loading @@ -84,6 +87,7 @@ public final class VirtualDisplayConfig implements Parcelable { mDisplayCategories = displayCategories; mDisplayCategories = displayCategories; mRequestedRefreshRate = requestedRefreshRate; mRequestedRefreshRate = requestedRefreshRate; mIsHomeSupported = isHomeSupported; mIsHomeSupported = isHomeSupported; mDisplayCutout = displayCutout; } } /** /** Loading Loading @@ -134,6 +138,21 @@ public final class VirtualDisplayConfig implements Parcelable { return mSurface; 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. * Returns the unique identifier for the display. Shouldn't be displayed to the user. * @hide * @hide Loading Loading @@ -207,6 +226,7 @@ public final class VirtualDisplayConfig implements Parcelable { dest.writeArraySet(mDisplayCategories); dest.writeArraySet(mDisplayCategories); dest.writeFloat(mRequestedRefreshRate); dest.writeFloat(mRequestedRefreshRate); dest.writeBoolean(mIsHomeSupported); dest.writeBoolean(mIsHomeSupported); DisplayCutout.ParcelableWrapper.writeCutoutToParcel(mDisplayCutout, dest, flags); } } @Override @Override Loading @@ -232,7 +252,8 @@ public final class VirtualDisplayConfig implements Parcelable { && mWindowManagerMirroringEnabled == that.mWindowManagerMirroringEnabled && mWindowManagerMirroringEnabled == that.mWindowManagerMirroringEnabled && Objects.equals(mDisplayCategories, that.mDisplayCategories) && Objects.equals(mDisplayCategories, that.mDisplayCategories) && mRequestedRefreshRate == that.mRequestedRefreshRate && mRequestedRefreshRate == that.mRequestedRefreshRate && mIsHomeSupported == that.mIsHomeSupported; && mIsHomeSupported == that.mIsHomeSupported && Objects.equals(mDisplayCutout, that.mDisplayCutout); } } @Override @Override Loading @@ -240,7 +261,7 @@ public final class VirtualDisplayConfig implements Parcelable { int hashCode = Objects.hash( int hashCode = Objects.hash( mName, mWidth, mHeight, mDensityDpi, mFlags, mSurface, mUniqueId, mName, mWidth, mHeight, mDensityDpi, mFlags, mSurface, mUniqueId, mDisplayIdToMirror, mWindowManagerMirroringEnabled, mDisplayCategories, mDisplayIdToMirror, mWindowManagerMirroringEnabled, mDisplayCategories, mRequestedRefreshRate, mIsHomeSupported); mRequestedRefreshRate, mIsHomeSupported, mDisplayCutout); return hashCode; return hashCode; } } Loading @@ -260,6 +281,7 @@ public final class VirtualDisplayConfig implements Parcelable { + " mDisplayCategories=" + mDisplayCategories + " mDisplayCategories=" + mDisplayCategories + " mRequestedRefreshRate=" + mRequestedRefreshRate + " mRequestedRefreshRate=" + mRequestedRefreshRate + " mIsHomeSupported=" + mIsHomeSupported + " mIsHomeSupported=" + mIsHomeSupported + " mDisplayCutout=" + mDisplayCutout + ")"; + ")"; } } Loading @@ -276,6 +298,7 @@ public final class VirtualDisplayConfig implements Parcelable { mDisplayCategories = (ArraySet<String>) in.readArraySet(null); mDisplayCategories = (ArraySet<String>) in.readArraySet(null); mRequestedRefreshRate = in.readFloat(); mRequestedRefreshRate = in.readFloat(); mIsHomeSupported = in.readBoolean(); mIsHomeSupported = in.readBoolean(); mDisplayCutout = DisplayCutout.ParcelableWrapper.readCutoutFromParcel(in); } } @NonNull @NonNull Loading Loading @@ -308,6 +331,7 @@ public final class VirtualDisplayConfig implements Parcelable { private ArraySet<String> mDisplayCategories = new ArraySet<>(); private ArraySet<String> mDisplayCategories = new ArraySet<>(); private float mRequestedRefreshRate = 0.0f; private float mRequestedRefreshRate = 0.0f; private boolean mIsHomeSupported = false; private boolean mIsHomeSupported = false; private DisplayCutout mDisplayCutout = null; /** /** * Creates a new Builder. * Creates a new Builder. Loading Loading @@ -468,6 +492,19 @@ public final class VirtualDisplayConfig implements Parcelable { return this; 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. * Builds the {@link VirtualDisplayConfig} instance. */ */ Loading @@ -485,7 +522,8 @@ public final class VirtualDisplayConfig implements Parcelable { mWindowManagerMirroringEnabled, mWindowManagerMirroringEnabled, mDisplayCategories, mDisplayCategories, mRequestedRefreshRate, mRequestedRefreshRate, mIsHomeSupported); mIsHomeSupported, mDisplayCutout); } } } } } }
services/core/java/com/android/server/display/VirtualDisplayAdapter.java +4 −0 Original line number Original line Diff line number Diff line Loading @@ -56,6 +56,7 @@ import android.os.SystemProperties; import android.util.ArrayMap; import android.util.ArrayMap; import android.util.Slog; import android.util.Slog; import android.view.Display; import android.view.Display; import android.view.DisplayCutout; import android.view.DisplayShape; import android.view.DisplayShape; import android.view.Surface; import android.view.Surface; import android.view.SurfaceControl; import android.view.SurfaceControl; Loading Loading @@ -275,6 +276,7 @@ public class VirtualDisplayAdapter extends DisplayAdapter { private boolean mIsDisplayOn; private boolean mIsDisplayOn; private int mDisplayIdToMirror; private int mDisplayIdToMirror; private boolean mIsWindowManagerMirroring; private boolean mIsWindowManagerMirroring; private DisplayCutout mDisplayCutout; public VirtualDisplayDevice(IBinder displayToken, IBinder appToken, public VirtualDisplayDevice(IBinder displayToken, IBinder appToken, int ownerUid, String ownerPackageName, Surface surface, int flags, int ownerUid, String ownerPackageName, Surface surface, int flags, Loading @@ -290,6 +292,7 @@ public class VirtualDisplayAdapter extends DisplayAdapter { mHeight = virtualDisplayConfig.getHeight(); mHeight = virtualDisplayConfig.getHeight(); mDensityDpi = virtualDisplayConfig.getDensityDpi(); mDensityDpi = virtualDisplayConfig.getDensityDpi(); mRequestedRefreshRate = virtualDisplayConfig.getRequestedRefreshRate(); mRequestedRefreshRate = virtualDisplayConfig.getRequestedRefreshRate(); mDisplayCutout = virtualDisplayConfig.getDisplayCutout(); mMode = createMode(mWidth, mHeight, getRefreshRate()); mMode = createMode(mWidth, mHeight, getRefreshRate()); mSurface = surface; mSurface = surface; mFlags = flags; mFlags = flags; Loading Loading @@ -571,6 +574,7 @@ public class VirtualDisplayAdapter extends DisplayAdapter { mInfo.displayShape = mInfo.displayShape = DisplayShape.createDefaultDisplayShape(mInfo.width, mInfo.height, false); DisplayShape.createDefaultDisplayShape(mInfo.width, mInfo.height, false); mInfo.displayCutout = mDisplayCutout; } } return mInfo; return mInfo; } } Loading