Schematize Display system properties

Properties accessed across partitions are now schematized and will
become APIs to make explicit interfaces among partitions.

Bug: 117924132
Test: m -j
Change-Id: If0b7658e4f04848a6a068c18e93026591b7b5518
Merged-In: I83b40ddfcde32d8d03fae73f5c252013933c466c
diff --git a/src/com/android/settings/development/ForceMSAAPreferenceController.java b/src/com/android/settings/development/ForceMSAAPreferenceController.java
index 17b5e4b..cb3afa5 100644
--- a/src/com/android/settings/development/ForceMSAAPreferenceController.java
+++ b/src/com/android/settings/development/ForceMSAAPreferenceController.java
@@ -17,7 +17,7 @@
 package com.android.settings.development;
 
 import android.content.Context;
-import android.os.SystemProperties;
+import android.sysprop.DisplayProperties;
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.SwitchPreference;
 import androidx.preference.Preference;
@@ -31,9 +31,6 @@
 
     private static final String FORCE_MSAA_KEY = "force_msaa";
 
-    @VisibleForTesting
-    static final String MSAA_PROPERTY = "debug.egl.force_msaa";
-
     public ForceMSAAPreferenceController(Context context) {
         super(context);
     }
@@ -46,22 +43,21 @@
     @Override
     public boolean onPreferenceChange(Preference preference, Object newValue) {
         final boolean isEnabled = (Boolean) newValue;
-        SystemProperties.set(MSAA_PROPERTY,
-                isEnabled ? Boolean.toString(true) : Boolean.toString(false));
+        DisplayProperties.debug_force_msaa(isEnabled);
         SystemPropPoker.getInstance().poke();
         return true;
     }
 
     @Override
     public void updateState(Preference preference) {
-        final boolean isEnabled = SystemProperties.getBoolean(MSAA_PROPERTY, false /* default */);
+        final boolean isEnabled = DisplayProperties.debug_force_msaa().orElse(false);
         ((SwitchPreference) mPreference).setChecked(isEnabled);
     }
 
     @Override
     protected void onDeveloperOptionsSwitchDisabled() {
         super.onDeveloperOptionsSwitchDisabled();
-        SystemProperties.set(MSAA_PROPERTY, Boolean.toString(false));
+        DisplayProperties.debug_force_msaa(false);
         ((SwitchPreference) mPreference).setChecked(false);
     }
 }
diff --git a/src/com/android/settings/development/RtlLayoutPreferenceController.java b/src/com/android/settings/development/RtlLayoutPreferenceController.java
index a88f16f..9abd997 100644
--- a/src/com/android/settings/development/RtlLayoutPreferenceController.java
+++ b/src/com/android/settings/development/RtlLayoutPreferenceController.java
@@ -17,8 +17,8 @@
 package com.android.settings.development;
 
 import android.content.Context;
-import android.os.SystemProperties;
 import android.provider.Settings;
+import android.sysprop.DisplayProperties;
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.SwitchPreference;
 import androidx.preference.Preference;
@@ -78,8 +78,6 @@
         Settings.Global.putInt(mContext.getContentResolver(),
                 Settings.Global.DEVELOPMENT_FORCE_RTL,
                 isEnabled ? SETTING_VALUE_ON : SETTING_VALUE_OFF);
-        SystemProperties.set(Settings.Global.DEVELOPMENT_FORCE_RTL,
-                isEnabled ? Integer.toString(SETTING_VALUE_ON)
-                        : Integer.toString(SETTING_VALUE_OFF));
+        DisplayProperties.debug_force_rtl(isEnabled);
     }
 }
diff --git a/src/com/android/settings/development/ShowLayoutBoundsPreferenceController.java b/src/com/android/settings/development/ShowLayoutBoundsPreferenceController.java
index 4d3fdbf..67be6f8 100644
--- a/src/com/android/settings/development/ShowLayoutBoundsPreferenceController.java
+++ b/src/com/android/settings/development/ShowLayoutBoundsPreferenceController.java
@@ -17,7 +17,7 @@
 package com.android.settings.development;
 
 import android.content.Context;
-import android.os.SystemProperties;
+import android.sysprop.DisplayProperties;
 import androidx.preference.SwitchPreference;
 import androidx.preference.Preference;
 import android.view.View;
@@ -43,23 +43,21 @@
     @Override
     public boolean onPreferenceChange(Preference preference, Object newValue) {
         final boolean isEnabled = (Boolean) newValue;
-        SystemProperties.set(View.DEBUG_LAYOUT_PROPERTY,
-                isEnabled ? Boolean.toString(true) : Boolean.toString(false));
+        DisplayProperties.debug_layout(isEnabled);
         SystemPropPoker.getInstance().poke();
         return true;
     }
 
     @Override
     public void updateState(Preference preference) {
-        final boolean isEnabled = SystemProperties.getBoolean(View.DEBUG_LAYOUT_PROPERTY,
-                false /* default */);
+        final boolean isEnabled = DisplayProperties.debug_layout().orElse(false);
         ((SwitchPreference) mPreference).setChecked(isEnabled);
     }
 
     @Override
     protected void onDeveloperOptionsSwitchDisabled() {
         super.onDeveloperOptionsSwitchDisabled();
-        SystemProperties.set(View.DEBUG_LAYOUT_PROPERTY, Boolean.toString(false));
+        DisplayProperties.debug_layout(false);
         ((SwitchPreference) mPreference).setChecked(false);
     }
 }
diff --git a/src/com/android/settings/development/qstile/DevelopmentTiles.java b/src/com/android/settings/development/qstile/DevelopmentTiles.java
index 1094ab9..8dd56d5 100644
--- a/src/com/android/settings/development/qstile/DevelopmentTiles.java
+++ b/src/com/android/settings/development/qstile/DevelopmentTiles.java
@@ -25,6 +25,7 @@
 import android.provider.Settings;
 import android.service.quicksettings.Tile;
 import android.service.quicksettings.TileService;
+import android.sysprop.DisplayProperties;
 import androidx.annotation.VisibleForTesting;
 import android.util.Log;
 import android.view.IWindowManager;
@@ -68,12 +69,12 @@
 
         @Override
         protected boolean isEnabled() {
-            return SystemProperties.getBoolean(View.DEBUG_LAYOUT_PROPERTY, false);
+            return DisplayProperties.debug_layout().orElse(false);
         }
 
         @Override
         protected void setIsEnabled(boolean isEnabled) {
-            SystemProperties.set(View.DEBUG_LAYOUT_PROPERTY, isEnabled ? "true" : "false");
+            DisplayProperties.debug_layout(isEnabled);
         }
     }
 
@@ -109,7 +110,7 @@
         protected void setIsEnabled(boolean isEnabled) {
             Settings.Global.putInt(
                     getContentResolver(), Settings.Global.DEVELOPMENT_FORCE_RTL, isEnabled ? 1 : 0);
-            SystemProperties.set(Settings.Global.DEVELOPMENT_FORCE_RTL, isEnabled ? "1" : "0");
+            DisplayProperties.debug_force_rtl(isEnabled);
             LocalePicker.updateLocales(getResources().getConfiguration().getLocales());
         }
     }
diff --git a/tests/robotests/src/com/android/settings/development/ForceMSAAPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/ForceMSAAPreferenceControllerTest.java
index aceb714..4829d3e 100644
--- a/tests/robotests/src/com/android/settings/development/ForceMSAAPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/ForceMSAAPreferenceControllerTest.java
@@ -21,7 +21,7 @@
 import static org.mockito.Mockito.when;
 
 import android.content.Context;
-import android.os.SystemProperties;
+import android.sysprop.DisplayProperties;
 import androidx.preference.SwitchPreference;
 import androidx.preference.PreferenceScreen;
 
@@ -59,8 +59,7 @@
     public void onPreferenceChanged_settingEnabled_turnOnForceMsaa() {
         mController.onPreferenceChange(mPreference, true /* new value */);
 
-        final boolean mode = SystemProperties
-            .getBoolean(ForceMSAAPreferenceController.MSAA_PROPERTY, false /* default */);
+        final boolean mode = DisplayProperties.debug_force_msaa().orElse(false);
 
         assertThat(mode).isTrue();
     }
@@ -69,15 +68,14 @@
     public void onPreferenceChanged_settingDisabled_turnOffForceMsaa() {
         mController.onPreferenceChange(mPreference, false /* new value */);
 
-        final boolean mode = SystemProperties
-            .getBoolean(ForceMSAAPreferenceController.MSAA_PROPERTY, false /* default */);
+        final boolean mode = DisplayProperties.debug_force_msaa().orElse(false);
 
         assertThat(mode).isFalse();
     }
 
     @Test
     public void updateState_settingEnabled_preferenceShouldBeChecked() {
-        SystemProperties.set(ForceMSAAPreferenceController.MSAA_PROPERTY, Boolean.toString(true));
+        DisplayProperties.debug_force_msaa(true);
         mController.updateState(mPreference);
 
         verify(mPreference).setChecked(true);
@@ -85,7 +83,7 @@
 
     @Test
     public void updateState_settingDisabled_preferenceShouldNotBeChecked() {
-        SystemProperties.set(ForceMSAAPreferenceController.MSAA_PROPERTY, Boolean.toString(false));
+        DisplayProperties.debug_force_msaa(false);
         mController.updateState(mPreference);
 
         verify(mPreference).setChecked(false);
diff --git a/tests/robotests/src/com/android/settings/development/ShowLayoutBoundsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/ShowLayoutBoundsPreferenceControllerTest.java
index c18857a..af90c15 100644
--- a/tests/robotests/src/com/android/settings/development/ShowLayoutBoundsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/ShowLayoutBoundsPreferenceControllerTest.java
@@ -20,7 +20,7 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import android.os.SystemProperties;
+import android.sysprop.DisplayProperties;
 import androidx.preference.SwitchPreference;
 import androidx.preference.PreferenceScreen;
 import android.view.View;
@@ -57,8 +57,7 @@
     public void onPreferenceChanged_settingEnabled_turnOnShowLayoutBounds() {
         mController.onPreferenceChange(mPreference, true /* new value */);
 
-        final boolean mode =
-            SystemProperties.getBoolean(View.DEBUG_LAYOUT_PROPERTY, false /* default */);
+        final boolean mode = DisplayProperties.debug_layout().orElse(false);
 
         assertThat(mode).isTrue();
     }
@@ -67,15 +66,14 @@
     public void onPreferenceChanged_settingDisabled_turnOffShowLayoutBounds() {
         mController.onPreferenceChange(mPreference, false /* new value */);
 
-        final boolean mode =
-            SystemProperties.getBoolean(View.DEBUG_LAYOUT_PROPERTY, false /* default */);
+        final boolean mode = DisplayProperties.debug_layout().orElse(false);
 
         assertThat(mode).isFalse();
     }
 
     @Test
     public void updateState_settingEnabled_preferenceShouldBeChecked() {
-        SystemProperties.set(View.DEBUG_LAYOUT_PROPERTY, Boolean.toString(true));
+        DisplayProperties.debug_layout(true);
         mController.updateState(mPreference);
 
         verify(mPreference).setChecked(true);
@@ -83,7 +81,7 @@
 
     @Test
     public void updateState_settingDisabled_preferenceShouldNotBeChecked() {
-        SystemProperties.set(View.DEBUG_LAYOUT_PROPERTY, Boolean.toString(false));
+        DisplayProperties.debug_layout(false);
         mController.updateState(mPreference);
 
         verify(mPreference).setChecked(false);
@@ -93,8 +91,7 @@
     public void onDeveloperOptionsDisabled_shouldDisablePreference() {
         mController.onDeveloperOptionsDisabled();
 
-        final boolean mode =
-            SystemProperties.getBoolean(View.DEBUG_LAYOUT_PROPERTY, false /* default */);
+        final boolean mode = DisplayProperties.debug_layout().orElse(false);
 
         assertThat(mode).isFalse();
         verify(mPreference).setEnabled(false);
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowTextUtils.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowTextUtils.java
index 03991e6..f56b45d 100644
--- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowTextUtils.java
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowTextUtils.java
@@ -17,8 +17,8 @@
 package com.android.settings.testutils.shadow;
 
 import android.icu.util.ULocale;
-import android.os.SystemProperties;
 import android.provider.Settings;
+import android.sysprop.DisplayProperties;
 import android.text.TextUtils;
 import android.view.View;
 import java.util.Locale;
@@ -38,7 +38,7 @@
         return ((locale != null && !locale.equals(Locale.ROOT)
                 && ULocale.forLocale(locale).isRightToLeft())
                 // If forcing into RTL layout mode, return RTL as default
-                || SystemProperties.getBoolean(Settings.Global.DEVELOPMENT_FORCE_RTL, false))
+                || DisplayProperties.debug_force_rtl().orElse(false))
                 ? View.LAYOUT_DIRECTION_RTL
                 : View.LAYOUT_DIRECTION_LTR;
     }