Merge "Revert "Adding public API to expose DisplayInfo.deviceProductInfo"" into sc-dev
diff --git a/core/api/current.txt b/core/api/current.txt
index ef18999..24a6c4a 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -18559,23 +18559,6 @@
package android.hardware.display {
- public final class DeviceProductInfo implements android.os.Parcelable {
- method public int describeContents();
- method public int getConnectionToSinkType();
- method public int getManufactureWeek();
- method public int getManufactureYear();
- method @NonNull public String getManufacturerPnpId();
- method public int getModelYear();
- method @Nullable public String getName();
- method @NonNull public String getProductId();
- method public void writeToParcel(@NonNull android.os.Parcel, int);
- field public static final int CONNECTION_TO_SINK_BUILT_IN = 1; // 0x1
- field public static final int CONNECTION_TO_SINK_DIRECT = 2; // 0x2
- field public static final int CONNECTION_TO_SINK_TRANSITIVE = 3; // 0x3
- field public static final int CONNECTION_TO_SINK_UNKNOWN = 0; // 0x0
- field @NonNull public static final android.os.Parcelable.Creator<android.hardware.display.DeviceProductInfo> CREATOR;
- }
-
public final class DisplayManager {
method public android.hardware.display.VirtualDisplay createVirtualDisplay(@NonNull String, int, int, int, @Nullable android.view.Surface, int);
method public android.hardware.display.VirtualDisplay createVirtualDisplay(@NonNull String, int, int, int, @Nullable android.view.Surface, int, @Nullable android.hardware.display.VirtualDisplay.Callback, @Nullable android.os.Handler);
@@ -46704,7 +46687,6 @@
method public long getAppVsyncOffsetNanos();
method public void getCurrentSizeRange(android.graphics.Point, android.graphics.Point);
method @Nullable public android.view.DisplayCutout getCutout();
- method @Nullable public android.hardware.display.DeviceProductInfo getDeviceProductInfo();
method public int getDisplayId();
method public int getFlags();
method public android.view.Display.HdrCapabilities getHdrCapabilities();
diff --git a/core/java/android/hardware/display/DeviceProductInfo.java b/core/java/android/hardware/display/DeviceProductInfo.java
index 9457d8f1..41126b7 100644
--- a/core/java/android/hardware/display/DeviceProductInfo.java
+++ b/core/java/android/hardware/display/DeviceProductInfo.java
@@ -16,69 +16,40 @@
package android.hardware.display;
-import android.annotation.IntDef;
-import android.annotation.NonNull;
import android.annotation.Nullable;
import android.os.Parcel;
import android.os.Parcelable;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
+import java.util.Arrays;
import java.util.Objects;
/**
* Product-specific information about the display or the directly connected device on the
* display chain. For example, if the display is transitively connected, this field may contain
* product information about the intermediate device.
+ * @hide
*/
public final class DeviceProductInfo implements Parcelable {
- /** @hide */
- @IntDef(prefix = {"CONNECTION_TO_SINK_"}, value = {
- CONNECTION_TO_SINK_UNKNOWN,
- CONNECTION_TO_SINK_BUILT_IN,
- CONNECTION_TO_SINK_DIRECT,
- CONNECTION_TO_SINK_TRANSITIVE
- })
- @Retention(RetentionPolicy.SOURCE)
- public @interface ConnectionToSinkType { }
-
- /** The device connection to the display sink is unknown. */
- public static final int CONNECTION_TO_SINK_UNKNOWN =
- IDeviceProductInfoConstants.CONNECTION_TO_SINK_UNKNOWN;
-
- /** The display sink is built-in to the device */
- public static final int CONNECTION_TO_SINK_BUILT_IN =
- IDeviceProductInfoConstants.CONNECTION_TO_SINK_BUILT_IN;
-
- /** The device is directly connected to the display sink. */
- public static final int CONNECTION_TO_SINK_DIRECT =
- IDeviceProductInfoConstants.CONNECTION_TO_SINK_DIRECT;
-
- /** The device is transitively connected to the display sink. */
- public static final int CONNECTION_TO_SINK_TRANSITIVE =
- IDeviceProductInfoConstants.CONNECTION_TO_SINK_TRANSITIVE;
-
private final String mName;
private final String mManufacturerPnpId;
private final String mProductId;
private final Integer mModelYear;
private final ManufactureDate mManufactureDate;
- private final @ConnectionToSinkType int mConnectionToSinkType;
+ private final int[] mRelativeAddress;
- /** @hide */
public DeviceProductInfo(
String name,
String manufacturerPnpId,
String productId,
Integer modelYear,
ManufactureDate manufactureDate,
- int connectionToSinkType) {
+ int[] relativeAddress) {
this.mName = name;
this.mManufacturerPnpId = manufacturerPnpId;
this.mProductId = productId;
this.mModelYear = modelYear;
this.mManufactureDate = manufactureDate;
- this.mConnectionToSinkType = connectionToSinkType;
+ this.mRelativeAddress = relativeAddress;
}
private DeviceProductInfo(Parcel in) {
@@ -87,13 +58,12 @@
mProductId = (String) in.readValue(null);
mModelYear = (Integer) in.readValue(null);
mManufactureDate = (ManufactureDate) in.readValue(null);
- mConnectionToSinkType = in.readInt();
+ mRelativeAddress = in.createIntArray();
}
/**
* @return Display name.
*/
- @Nullable
public String getName() {
return mName;
}
@@ -101,7 +71,6 @@
/**
* @return Manufacturer Plug and Play ID.
*/
- @NonNull
public String getManufacturerPnpId() {
return mManufacturerPnpId;
}
@@ -109,58 +78,32 @@
/**
* @return Manufacturer product ID.
*/
- @NonNull
public String getProductId() {
return mProductId;
}
/**
- * @return Model year of the device. Return -1 if not available. Typically,
- * one of model year or manufacture year is available.
+ * @return Model year of the device. Typically exactly one of model year or
+ * manufacture date will be present.
*/
- public int getModelYear() {
- return mModelYear != null ? mModelYear : -1;
- }
-
- /**
- * @return The year of manufacture, or -1 it is not available. Typically,
- * one of model year or manufacture year is available.
- */
- public int getManufactureYear() {
- if (mManufactureDate == null) {
- return -1;
- }
- return mManufactureDate.mYear != null ? mManufactureDate.mYear : -1;
- }
-
- /**
- * @return The week of manufacture, or -1 it is not available. Typically,
- * not present if model year is available.
- */
- public int getManufactureWeek() {
- if (mManufactureDate == null) {
- return -1;
- }
- return mManufactureDate.mWeek != null ? mManufactureDate.mWeek : -1;
+ public Integer getModelYear() {
+ return mModelYear;
}
/**
* @return Manufacture date. Typically exactly one of model year or manufacture
* date will be present.
- *
- * @hide
*/
public ManufactureDate getManufactureDate() {
return mManufactureDate;
}
/**
- * @return How the current device is connected to the display sink. For example, the display
- * can be connected immediately to the device or there can be a receiver in between.
+ * @return Relative address in the display network. For example, for HDMI connected devices this
+ * can be its physical address. Each component of the address is in the range [0, 255].
*/
- @ConnectionToSinkType
- public int getConnectionToSinkType() {
- return mConnectionToSinkType;
+ public int[] getRelativeAddress() {
+ return mRelativeAddress;
}
@Override
@@ -176,8 +119,8 @@
+ mModelYear
+ ", manufactureDate="
+ mManufactureDate
- + ", connectionToSinkType="
- + mConnectionToSinkType
+ + ", relativeAddress="
+ + Arrays.toString(mRelativeAddress)
+ '}';
}
@@ -191,16 +134,16 @@
&& Objects.equals(mProductId, that.mProductId)
&& Objects.equals(mModelYear, that.mModelYear)
&& Objects.equals(mManufactureDate, that.mManufactureDate)
- && mConnectionToSinkType == that.mConnectionToSinkType;
+ && Arrays.equals(mRelativeAddress, that.mRelativeAddress);
}
@Override
public int hashCode() {
return Objects.hash(mName, mManufacturerPnpId, mProductId, mModelYear, mManufactureDate,
- mConnectionToSinkType);
+ Arrays.hashCode(mRelativeAddress));
}
- @NonNull public static final Creator<DeviceProductInfo> CREATOR =
+ public static final Creator<DeviceProductInfo> CREATOR =
new Creator<DeviceProductInfo>() {
@Override
public DeviceProductInfo createFromParcel(Parcel in) {
@@ -219,13 +162,13 @@
}
@Override
- public void writeToParcel(@NonNull Parcel dest, int flags) {
+ public void writeToParcel(Parcel dest, int flags) {
dest.writeString(mName);
dest.writeString(mManufacturerPnpId);
dest.writeValue(mProductId);
dest.writeValue(mModelYear);
dest.writeValue(mManufactureDate);
- dest.writeInt(mConnectionToSinkType);
+ dest.writeIntArray(mRelativeAddress);
}
/**
diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java
index 8117c96..0ba1dfe 100644
--- a/core/java/android/view/Display.java
+++ b/core/java/android/view/Display.java
@@ -34,7 +34,6 @@
import android.graphics.PixelFormat;
import android.graphics.Point;
import android.graphics.Rect;
-import android.hardware.display.DeviceProductInfo;
import android.hardware.display.DisplayManager;
import android.hardware.display.DisplayManagerGlobal;
import android.os.Build;
@@ -1182,18 +1181,6 @@
}
/**
- * Returns the product-specific information about the display or the directly connected
- * device on the display chain.
- * For example, if the display is transitively connected, this field may contain product
- * information about the intermediate device.
- * Returns {@code null} if product information is not available.
- */
- @Nullable
- public DeviceProductInfo getDeviceProductInfo() {
- return mDisplayInfo.deviceProductInfo;
- }
-
- /**
* Gets display metrics that describe the size and density of this display.
* The size returned by this method does not necessarily represent the
* actual raw size (native resolution) of the display.
diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp
index cbf4481..451ea93 100644
--- a/core/jni/android_view_SurfaceControl.cpp
+++ b/core/jni/android_view_SurfaceControl.cpp
@@ -27,7 +27,6 @@
#include <android-base/chrono_utils.h>
#include <android/graphics/region.h>
#include <android/gui/BnScreenCaptureListener.h>
-#include <android/hardware/display/IDeviceProductInfoConstants.h>
#include <android/os/IInputConstants.h>
#include <android_runtime/AndroidRuntime.h>
#include <android_runtime/android_hardware_HardwareBuffer.h>
@@ -1023,24 +1022,16 @@
} else {
LOG_FATAL("Unknown alternative for variant DeviceProductInfo::ManufactureOrModelDate");
}
- jint connectionToSinkType;
- // Relative address maps to HDMI physical address. All addresses are 4 digits long allowing
- // for a 5–device-deep hierarchy. For more information, refer:
- // Section 8.7 - Physical Address of HDMI Specification Version 1.3a
- using android::hardware::display::IDeviceProductInfoConstants;
- if (info->relativeAddress.size() != 4) {
- connectionToSinkType = IDeviceProductInfoConstants::CONNECTION_TO_SINK_UNKNOWN;
- } else if (info->relativeAddress[0] == 0) {
- connectionToSinkType = IDeviceProductInfoConstants::CONNECTION_TO_SINK_BUILT_IN;
- } else if (info->relativeAddress[1] == 0) {
- connectionToSinkType = IDeviceProductInfoConstants::CONNECTION_TO_SINK_DIRECT;
- } else {
- connectionToSinkType = IDeviceProductInfoConstants::CONNECTION_TO_SINK_TRANSITIVE;
+ auto relativeAddress = env->NewIntArray(info->relativeAddress.size());
+ auto relativeAddressData = env->GetIntArrayElements(relativeAddress, nullptr);
+ for (int i = 0; i < info->relativeAddress.size(); i++) {
+ relativeAddressData[i] = info->relativeAddress[i];
}
+ env->ReleaseIntArrayElements(relativeAddress, relativeAddressData, 0);
return env->NewObject(gDeviceProductInfoClassInfo.clazz, gDeviceProductInfoClassInfo.ctor, name,
manufacturerPnpId, productId, modelYear, manufactureDate,
- connectionToSinkType);
+ relativeAddress);
}
static jobject nativeGetStaticDisplayInfo(JNIEnv* env, jclass clazz, jobject tokenObj) {
@@ -1979,7 +1970,7 @@
"Ljava/lang/String;"
"Ljava/lang/Integer;"
"Landroid/hardware/display/DeviceProductInfo$ManufactureDate;"
- "I)V");
+ "[I)V");
jclass deviceProductInfoManufactureDateClazz =
FindClassOrDie(env, "android/hardware/display/DeviceProductInfo$ManufactureDate");