Fix default constructor for DisplayAdjustments
Add a default value for the configuration.
Add test for the default constructor.
Add tests for the configuration copy constructor.
Bug: 147711863
Test: atest FrameworksCoreTests:DisplayAdjustmentsTests
Change-Id: Ibb8480047eeb5f38e3695bdc3152388f1f90a999
diff --git a/core/java/android/view/DisplayAdjustments.java b/core/java/android/view/DisplayAdjustments.java
index 834dd7b..27c2d5c 100644
--- a/core/java/android/view/DisplayAdjustments.java
+++ b/core/java/android/view/DisplayAdjustments.java
@@ -16,6 +16,8 @@
package android.view;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.res.CompatibilityInfo;
import android.content.res.Configuration;
@@ -27,25 +29,25 @@
public static final DisplayAdjustments DEFAULT_DISPLAY_ADJUSTMENTS = new DisplayAdjustments();
private volatile CompatibilityInfo mCompatInfo = CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO;
- private Configuration mConfiguration;
+ private final Configuration mConfiguration = new Configuration(Configuration.EMPTY);
@UnsupportedAppUsage
public DisplayAdjustments() {
}
- public DisplayAdjustments(Configuration configuration) {
- mConfiguration = new Configuration(configuration != null
- ? configuration : Configuration.EMPTY);
+ public DisplayAdjustments(@Nullable Configuration configuration) {
+ if (configuration != null) {
+ mConfiguration.setTo(configuration);
+ }
}
- public DisplayAdjustments(DisplayAdjustments daj) {
+ public DisplayAdjustments(@NonNull DisplayAdjustments daj) {
setCompatibilityInfo(daj.mCompatInfo);
- mConfiguration = new Configuration(daj.mConfiguration != null
- ? daj.mConfiguration : Configuration.EMPTY);
+ mConfiguration.setTo(daj.getConfiguration());
}
@UnsupportedAppUsage
- public void setCompatibilityInfo(CompatibilityInfo compatInfo) {
+ public void setCompatibilityInfo(@Nullable CompatibilityInfo compatInfo) {
if (this == DEFAULT_DISPLAY_ADJUSTMENTS) {
throw new IllegalArgumentException(
"setCompatbilityInfo: Cannot modify DEFAULT_DISPLAY_ADJUSTMENTS");
@@ -62,7 +64,13 @@
return mCompatInfo;
}
- public void setConfiguration(Configuration configuration) {
+ /**
+ * Updates the configuration for the DisplayAdjustments with new configuration.
+ * Default to EMPTY configuration if new configuration is {@code null}
+ * @param configuration new configuration
+ * @throws IllegalArgumentException if trying to modify DEFAULT_DISPLAY_ADJUSTMENTS
+ */
+ public void setConfiguration(@Nullable Configuration configuration) {
if (this == DEFAULT_DISPLAY_ADJUSTMENTS) {
throw new IllegalArgumentException(
"setConfiguration: Cannot modify DEFAULT_DISPLAY_ADJUSTMENTS");
@@ -71,6 +79,7 @@
}
@UnsupportedAppUsage
+ @NonNull
public Configuration getConfiguration() {
return mConfiguration;
}