From 25f1822005b8ebf9a6cf5c6fda0dae26f8212d50 Mon Sep 17 00:00:00 2001 From: Kriti Dang Date: Mon, 18 Jan 2021 17:54:36 +0100 Subject: [PATCH] Hdr format settings [UX] Adding new APIs in display manager to get the user disabled formats, to get the formats supported by device and get formats reported by display. Bug: 172905239 Test: N/A Change-Id: I58a7714f03a3e165bbd22f2fa7a021ad90b41b39 --- core/api/test-current.txt | 2 ++ .../android/hardware/display/DisplayManager.java | 11 +++++++++++ .../hardware/display/DisplayManagerGlobal.java | 12 ++++++++++++ .../hardware/display/IDisplayManager.aidl | 3 +++ core/java/android/view/Display.java | 16 ++++++++++++++++ .../server/display/DisplayManagerService.java | 5 +++++ 6 files changed, 49 insertions(+) diff --git a/core/api/test-current.txt b/core/api/test-current.txt index f54a9713561d8..638f92f48fdee 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -1138,6 +1138,7 @@ package android.hardware.display { public final class DisplayManager { method public boolean areUserDisabledHdrTypesAllowed(); method @RequiresPermission(android.Manifest.permission.MODIFY_REFRESH_RATE_SWITCHING_TYPE) public int getRefreshRateSwitchingType(); + method @NonNull public int[] getUserDisabledHdrTypes(); method public boolean isMinimalPostProcessingRequested(int); method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void setAreUserDisabledHdrTypesAllowed(boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_REFRESH_RATE_SWITCHING_TYPE) public void setRefreshRateSwitchingType(int); @@ -2595,6 +2596,7 @@ package android.view { } public final class Display { + method @NonNull public int[] getReportedHdrTypes(); method @NonNull public android.graphics.ColorSpace[] getSupportedWideColorGamut(); method public int getType(); method public boolean hasAccess(int); diff --git a/core/java/android/hardware/display/DisplayManager.java b/core/java/android/hardware/display/DisplayManager.java index 3100610f8e68a..50c172955a8a1 100644 --- a/core/java/android/hardware/display/DisplayManager.java +++ b/core/java/android/hardware/display/DisplayManager.java @@ -747,6 +747,17 @@ public final class DisplayManager { return mGlobal.areUserDisabledHdrTypesAllowed(); } + /** + * Returns the HDR formats disabled by the user. + * + * @hide + */ + @TestApi + public @NonNull int[] getUserDisabledHdrTypes() { + return mGlobal.getUserDisabledHdrTypes(); + } + + /** * Creates a virtual display. * diff --git a/core/java/android/hardware/display/DisplayManagerGlobal.java b/core/java/android/hardware/display/DisplayManagerGlobal.java index 5de4ad2a22439..867ac08a34932 100644 --- a/core/java/android/hardware/display/DisplayManagerGlobal.java +++ b/core/java/android/hardware/display/DisplayManagerGlobal.java @@ -551,6 +551,18 @@ public final class DisplayManagerGlobal { } } + /** + * Returns the HDR formats disabled by the user. + * + */ + public int[] getUserDisabledHdrTypes() { + try { + return mDm.getUserDisabledHdrTypes(); + } catch (RemoteException ex) { + throw ex.rethrowFromSystemServer(); + } + } + public void requestColorMode(int displayId, int colorMode) { try { mDm.requestColorMode(displayId, colorMode); diff --git a/core/java/android/hardware/display/IDisplayManager.aidl b/core/java/android/hardware/display/IDisplayManager.aidl index db95132bd0c2a..9ca560157a6fd 100644 --- a/core/java/android/hardware/display/IDisplayManager.aidl +++ b/core/java/android/hardware/display/IDisplayManager.aidl @@ -77,6 +77,9 @@ interface IDisplayManager { // No permissions required. boolean areUserDisabledHdrTypesAllowed(); + // No permissions required. + int[] getUserDisabledHdrTypes(); + // Requires CONFIGURE_DISPLAY_COLOR_MODE void requestColorMode(int displayId, int colorMode); diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java index 1e2271abee905..bf152cb6ed22f 100644 --- a/core/java/android/view/Display.java +++ b/core/java/android/view/Display.java @@ -1095,6 +1095,22 @@ public final class Display { } } + /** + * @hide + * Returns the display's HDR supported types. + * + * @see #isHdr() + * @see HdrCapabilities#getSupportedHdrTypes() + */ + @TestApi + @NonNull + public int[] getReportedHdrTypes() { + synchronized (mLock) { + updateDisplayInfoLocked(); + return mDisplayInfo.hdrCapabilities.getSupportedHdrTypes(); + } + } + /** * Returns whether this display supports any HDR type. * diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java index 449706df0e259..a97d32c754bb1 100644 --- a/services/core/java/com/android/server/display/DisplayManagerService.java +++ b/services/core/java/com/android/server/display/DisplayManagerService.java @@ -2479,6 +2479,11 @@ public final class DisplayManagerService extends SystemService { } } + @Override // Binder call + public int[] getUserDisabledHdrTypes() { + return mUserDisabledHdrTypes; + } + @Override // Binder call public void requestColorMode(int displayId, int colorMode) { mContext.enforceCallingOrSelfPermission(