summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Marc Kassis <mnkassis@google.com> 2023-04-20 08:42:25 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-04-20 08:42:25 +0000
commit037b13c9af282871aab67a74f2533eaaa07efdf6 (patch)
tree4b0b7ad0dc0280f04aa26f8b73fc771bda486a33
parent5665fbf92ff775038ef6b86eb2129a6b5d91e92c (diff)
parentdc403705fddb96b565c2e954d946051e41519d25 (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.java10
-rw-r--r--core/tests/mockingcoretests/src/android/view/DisplayTest.java30
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;