From d6bff72799d7057fdefddd53495acf76ed17bc77 Mon Sep 17 00:00:00 2001 From: Ulyana Trafimovich Date: Tue, 23 Feb 2021 17:14:58 +0000 Subject: [PATCH] Revert "Adding public API to expose DisplayInfo.deviceProductInfo" Revert "Adding aidl file to share deviceProductInfo constants bw..." Revert "Changes in tvsystem/ DeviceProductInfo to mirror changes..." Revert "Adding new CTS test for the API display#getDeviceProductInfo" Revert submission 13552775-expose DisplayInfo.deviceProductInfo Reason for revert: broken test android.compat.sjp.cts.StrictJavaPackagesTest#testBootClassPathAndSystemServerClasspath_nonDuplicateClasses on git_sc-dev on cf_x86_64_phone-userdebug at 7162420 Bug: 181021245 Reverted Changes: Id6767127f:Adding aidl file to share deviceProductInfo consta... I6959d2829:Adding public API to expose DisplayInfo.deviceProd... I720dbfe84:Adding new CTS test for the API display#getDeviceP... I6c726e12c:Changes in tvsystem/ DeviceProductInfo to mirror c... Change-Id: I4c8545c651d1e399ed3ca5061d1ef5f526c3929a --- core/api/current.txt | 18 ---- .../hardware/display/DeviceProductInfo.java | 99 ++++--------------- core/java/android/view/Display.java | 13 --- core/jni/android_view_SurfaceControl.cpp | 23 ++--- 4 files changed, 28 insertions(+), 125 deletions(-) diff --git a/core/api/current.txt b/core/api/current.txt index cb4ed52e0f9e5..f82e00035e65e 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -18461,23 +18461,6 @@ package android.hardware.camera2.params { 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 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); @@ -46245,7 +46228,6 @@ package android.view { 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 9457d8f1aac47..41126b70c89fe 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 @@ public final class DeviceProductInfo implements Parcelable { 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 @@ public final class DeviceProductInfo implements Parcelable { /** * @return Manufacturer Plug and Play ID. */ - @NonNull public String getManufacturerPnpId() { return mManufacturerPnpId; } @@ -109,58 +78,32 @@ public final class DeviceProductInfo implements Parcelable { /** * @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 @@ public final class DeviceProductInfo implements Parcelable { + mModelYear + ", manufactureDate=" + mManufactureDate - + ", connectionToSinkType=" - + mConnectionToSinkType + + ", relativeAddress=" + + Arrays.toString(mRelativeAddress) + '}'; } @@ -191,16 +134,16 @@ public final class DeviceProductInfo implements Parcelable { && 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 CREATOR = + public static final Creator CREATOR = new Creator() { @Override public DeviceProductInfo createFromParcel(Parcel in) { @@ -219,13 +162,13 @@ public final class DeviceProductInfo implements Parcelable { } @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 8117c963b9594..0ba1dfee16f39 100644 --- a/core/java/android/view/Display.java +++ b/core/java/android/view/Display.java @@ -34,7 +34,6 @@ import android.graphics.ColorSpace; 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; @@ -1181,18 +1180,6 @@ public final class Display { } } - /** - * 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 diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp index 961d4cb236795..7a3366acce27a 100644 --- a/core/jni/android_view_SurfaceControl.cpp +++ b/core/jni/android_view_SurfaceControl.cpp @@ -27,7 +27,6 @@ #include #include #include -#include #include #include #include @@ -1000,24 +999,16 @@ static jobject convertDeviceProductInfoToJavaObject( } 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 nativeGetDisplayInfo(JNIEnv* env, jclass clazz, jobject tokenObj) { @@ -1957,7 +1948,7 @@ int register_android_view_SurfaceControl(JNIEnv* env) "Ljava/lang/String;" "Ljava/lang/Integer;" "Landroid/hardware/display/DeviceProductInfo$ManufactureDate;" - "I)V"); + "[I)V"); jclass deviceProductInfoManufactureDateClazz = FindClassOrDie(env, "android/hardware/display/DeviceProductInfo$ManufactureDate");