diff options
| author | 2023-04-20 08:42:25 +0000 | |
|---|---|---|
| committer | 2023-04-20 08:42:25 +0000 | |
| commit | 037b13c9af282871aab67a74f2533eaaa07efdf6 (patch) | |
| tree | 4b0b7ad0dc0280f04aa26f8b73fc771bda486a33 | |
| parent | 5665fbf92ff775038ef6b86eb2129a6b5d91e92c (diff) | |
| parent | dc403705fddb96b565c2e954d946051e41519d25 (diff) | |
Merge "Return copies of private array members in Display.java to protect them from being modified from the outside." into udc-dev
| -rw-r--r-- | core/java/android/view/Display.java | 10 | ||||
| -rw-r--r-- | core/tests/mockingcoretests/src/android/view/DisplayTest.java | 30 |
2 files changed, 36 insertions, 4 deletions
diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java index baefd853876b..60529c72afae 100644 --- a/core/java/android/view/Display.java +++ b/core/java/android/view/Display.java @@ -2188,7 +2188,7 @@ public final class Display { */ @NonNull public float[] getAlternativeRefreshRates() { - return mAlternativeRefreshRates; + return Arrays.copyOf(mAlternativeRefreshRates, mAlternativeRefreshRates.length); } /** @@ -2197,7 +2197,7 @@ public final class Display { @NonNull @HdrCapabilities.HdrType public int[] getSupportedHdrTypes() { - return mSupportedHdrTypes; + return Arrays.copyOf(mSupportedHdrTypes, mSupportedHdrTypes.length); } /** @@ -2497,8 +2497,10 @@ public final class Display { * @deprecated use {@link Display#getMode()} * and {@link Mode#getSupportedHdrTypes()} instead */ - public @HdrType int[] getSupportedHdrTypes() { - return mSupportedHdrTypes; + @Deprecated + @HdrType + public int[] getSupportedHdrTypes() { + return Arrays.copyOf(mSupportedHdrTypes, mSupportedHdrTypes.length); } /** * Returns the desired content max luminance data in cd/m2 for this display. diff --git a/core/tests/mockingcoretests/src/android/view/DisplayTest.java b/core/tests/mockingcoretests/src/android/view/DisplayTest.java index 4a12bb374cb2..5e617fd59946 100644 --- a/core/tests/mockingcoretests/src/android/view/DisplayTest.java +++ b/core/tests/mockingcoretests/src/android/view/DisplayTest.java @@ -460,6 +460,36 @@ public class DisplayTest { assertArrayEquals(sortedHdrTypes, displayMode.getSupportedHdrTypes()); } + @Test + public void testGetSupportedHdrTypesReturnsCopy() { + int[] hdrTypes = new int[]{1, 2, 3}; + Display.Mode displayMode = new Display.Mode(0, 0, 0, 0, new float[0], hdrTypes); + + int[] hdrTypesCopy = displayMode.getSupportedHdrTypes(); + hdrTypesCopy[0] = 0; + assertArrayEquals(hdrTypes, displayMode.getSupportedHdrTypes()); + } + + @Test + public void testGetAlternativeRefreshRatesReturnsCopy() { + float[] alternativeRates = new float[]{1.0f, 2.0f}; + Display.Mode displayMode = new Display.Mode(0, 0, 0, 0, alternativeRates, new int[0]); + + float[] alternativeRatesCopy = displayMode.getAlternativeRefreshRates(); + alternativeRatesCopy[0] = 0.0f; + assertArrayEquals(alternativeRates, displayMode.getAlternativeRefreshRates(), 0.0f); + } + + @Test + public void testHdrCapabilitiesGetSupportedHdrTypesReturnsCopy() { + int[] hdrTypes = new int[]{1, 2, 3}; + Display.HdrCapabilities hdrCapabilities = new Display.HdrCapabilities(hdrTypes, 0, 0, 0); + + int[] hdrTypesCopy = hdrCapabilities.getSupportedHdrTypes(); + hdrTypesCopy[0] = 0; + assertArrayEquals(hdrTypes, hdrCapabilities.getSupportedHdrTypes()); + } + // Given rotated display dimensions, calculate the letterboxed app bounds. private static Rect buildAppBounds(int displayWidth, int displayHeight) { final int midWidth = displayWidth / 2; |