summaryrefslogtreecommitdiff
path: root/core/java/android/view/DisplayInfo.java
diff options
context:
space:
mode:
authorNaomi Musgrave <nmusgrave@google.com>2021-01-27 20:29:20 +0000
committerNaomi Musgrave <nmusgrave@google.com>2021-02-03 10:03:20 +0000
commit4d3f1c5681c4db99ffb4be881cee134b750542eb (patch)
tree1395e5e0778699ced1d9e1adc55d7a372d36ad83 /core/java/android/view/DisplayInfo.java
parent8812ace3a839d731135728d1d4df5d6b8d5f839f (diff)
Sandbox letterbox and size compat apps
Sandbox Display#getRealSize and WindowManager bounds when letterbox or size compat mode are applied to the configuration. Display uses this field to provide the sandboxed display size. Test: atest WindowConfigurationTests Test: atest FrameworksMockingCoreTests:android.view.DisplayTests Test: atest WmTests:SizeCompatTests Bug: 171386167 Change-Id: I6f78edcd9214b52ab0708e3892bc86ee05bb5b9a
Diffstat (limited to 'core/java/android/view/DisplayInfo.java')
-rw-r--r--core/java/android/view/DisplayInfo.java19
1 files changed, 19 insertions, 0 deletions
diff --git a/core/java/android/view/DisplayInfo.java b/core/java/android/view/DisplayInfo.java
index d200a328773b..7cabb04767bb 100644
--- a/core/java/android/view/DisplayInfo.java
+++ b/core/java/android/view/DisplayInfo.java
@@ -24,6 +24,7 @@ import static android.view.DisplayInfoProto.LOGICAL_WIDTH;
import static android.view.DisplayInfoProto.NAME;
import android.annotation.Nullable;
+import android.app.WindowConfiguration;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.res.CompatibilityInfo;
import android.content.res.Configuration;
@@ -605,11 +606,29 @@ public final class DisplayInfo implements Parcelable {
getMetricsWithSize(outMetrics, ci, configuration, appWidth, appHeight);
}
+ /**
+ * Populates {@code outMetrics} with details of the logical display. Bounds are limited
+ * by the logical size of the display.
+ *
+ * @param outMetrics the {@link DisplayMetrics} to be populated
+ * @param compatInfo the {@link CompatibilityInfo} to be applied
+ * @param configuration the {@link Configuration}
+ */
public void getLogicalMetrics(DisplayMetrics outMetrics, CompatibilityInfo compatInfo,
Configuration configuration) {
getMetricsWithSize(outMetrics, compatInfo, configuration, logicalWidth, logicalHeight);
}
+ /**
+ * Similar to {@link #getLogicalMetrics}, but the limiting bounds are determined from
+ * {@link WindowConfiguration#getMaxBounds()}
+ */
+ public void getMaxBoundsMetrics(DisplayMetrics outMetrics, CompatibilityInfo compatInfo,
+ Configuration configuration) {
+ Rect bounds = configuration.windowConfiguration.getMaxBounds();
+ getMetricsWithSize(outMetrics, compatInfo, configuration, bounds.width(), bounds.height());
+ }
+
public int getNaturalWidth() {
return rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_180 ?
logicalWidth : logicalHeight;