Schematize Crypto 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: I65a6ce1a682687702f4c8b5c2e054eaaf91c389b
Merged-In: I65a6ce1a682687702f4c8b5c2e054eaaf91c389b
diff --git a/src/com/android/settings/development/FileEncryptionPreferenceController.java b/src/com/android/settings/development/FileEncryptionPreferenceController.java
index f8326ab..731f487 100644
--- a/src/com/android/settings/development/FileEncryptionPreferenceController.java
+++ b/src/com/android/settings/development/FileEncryptionPreferenceController.java
@@ -19,8 +19,8 @@
 import android.content.Context;
 import android.os.RemoteException;
 import android.os.ServiceManager;
-import android.os.SystemProperties;
 import android.os.storage.IStorageManager;
+import android.sysprop.CryptoProperties;
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 import android.text.TextUtils;
@@ -35,9 +35,6 @@
     private static final String KEY_CONVERT_FBE = "convert_to_file_encryption";
     private static final String KEY_STORAGE_MANAGER = "mount";
 
-    @VisibleForTesting
-    static final String FILE_ENCRYPTION_PROPERTY_KEY = "ro.crypto.type";
-
     private final IStorageManager mStorageManager;
 
     public FileEncryptionPreferenceController(Context context) {
@@ -66,8 +63,7 @@
 
     @Override
     public void updateState(Preference preference) {
-        if (!TextUtils.equals("file",
-                SystemProperties.get(FILE_ENCRYPTION_PROPERTY_KEY, "none" /* default */))) {
+        if (!TextUtils.equals("file", CryptoProperties.type().orElse("none"))) {
             return;
         }
 
diff --git a/tests/robotests/src/com/android/settings/development/FileEncryptionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/FileEncryptionPreferenceControllerTest.java
index dd16a28..afd465a 100644
--- a/tests/robotests/src/com/android/settings/development/FileEncryptionPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/FileEncryptionPreferenceControllerTest.java
@@ -16,7 +16,6 @@
 
 package com.android.settings.development;
 
-import static com.android.settings.development.FileEncryptionPreferenceController.FILE_ENCRYPTION_PROPERTY_KEY;
 import static com.google.common.truth.Truth.assertThat;
 import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.anyString;
@@ -26,8 +25,8 @@
 
 import android.content.Context;
 import android.os.RemoteException;
-import android.os.SystemProperties;
 import android.os.storage.IStorageManager;
+import android.sysprop.CryptoProperties;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 
@@ -92,7 +91,7 @@
         ReflectionHelpers.setField(mController, "mStorageManager", mStorageManager);
         when(mStorageManager.isConvertibleToFBE()).thenReturn(true);
         mController.displayPreference(mPreferenceScreen);
-        SystemProperties.set(FILE_ENCRYPTION_PROPERTY_KEY, "foobar");
+        CryptoProperties.type("foobar");
 
         mController.updateState(mPreference);
 
@@ -106,7 +105,7 @@
         ReflectionHelpers.setField(mController, "mStorageManager", mStorageManager);
         when(mStorageManager.isConvertibleToFBE()).thenReturn(true);
         mController.displayPreference(mPreferenceScreen);
-        SystemProperties.set(FILE_ENCRYPTION_PROPERTY_KEY, "file");
+        CryptoProperties.type("file");
 
         mController.updateState(mPreference);