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 Original line Diff line number Diff line
@@ -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);
  }
  }
+7 −0
Original line number Original line Diff line number Diff line
@@ -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"
+43 −5
Original line number Original line Diff line number Diff line
@@ -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;
@@ -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,
@@ -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;
@@ -84,6 +87,7 @@ public final class VirtualDisplayConfig implements Parcelable {
        mDisplayCategories = displayCategories;
        mDisplayCategories = displayCategories;
        mRequestedRefreshRate = requestedRefreshRate;
        mRequestedRefreshRate = requestedRefreshRate;
        mIsHomeSupported = isHomeSupported;
        mIsHomeSupported = isHomeSupported;
        mDisplayCutout = displayCutout;
    }
    }


    /**
    /**
@@ -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
@@ -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
@@ -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
@@ -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;
    }
    }


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


@@ -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
@@ -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.
@@ -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.
         */
         */
@@ -485,7 +522,8 @@ public final class VirtualDisplayConfig implements Parcelable {
                    mWindowManagerMirroringEnabled,
                    mWindowManagerMirroringEnabled,
                    mDisplayCategories,
                    mDisplayCategories,
                    mRequestedRefreshRate,
                    mRequestedRefreshRate,
                    mIsHomeSupported);
                    mIsHomeSupported,
                    mDisplayCutout);
        }
        }
    }
    }
}
}
+4 −0
Original line number Original line Diff line number Diff line
@@ -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;
@@ -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,
@@ -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;
@@ -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;
        }
        }