base: add hooks to backup and restore omni settings
for heavens sake google...
dont force us to change both Settings and SettingProvider for
every setting we add and want to be backed up
[micky387] edit with OmniSettings changes
Change-Id: Id6c8a7183d5a008ca7fd38ea4042046ab3168ec5
diff --git a/packages/SettingsProvider/Android.bp b/packages/SettingsProvider/Android.bp
index 75f8384..70ce189 100644
--- a/packages/SettingsProvider/Android.bp
+++ b/packages/SettingsProvider/Android.bp
@@ -37,6 +37,7 @@
"aconfig_demo_flags_java_lib",
"device_config_service_flags_java",
"libaconfig_java_proto_lite",
+ "OmniLib",
"SettingsLibDeviceStateRotationLock",
"SettingsLibDisplayUtils",
],
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
index 30c4ee5..06da49a 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
@@ -44,6 +44,7 @@
import android.provider.settings.backup.SystemSettings;
import android.provider.settings.validators.GlobalSettingsValidators;
import android.provider.settings.validators.SecureSettingsValidators;
+import android.provider.settings.validators.SettingsValidators;
import android.provider.settings.validators.SystemSettingsValidators;
import android.provider.settings.validators.Validator;
import android.telephony.SubscriptionManager;
@@ -61,6 +62,8 @@
import com.android.settingslib.display.DisplayDensityConfiguration;
import com.android.window.flags.Flags;
+import org.omnirom.omnilib.utils.OmniSettings;
+
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -670,7 +673,9 @@
Cursor cursor = getContentResolver().query(Settings.System.CONTENT_URI, PROJECTION, null,
null, null);
try {
- return extractRelevantValues(cursor, SystemSettings.SETTINGS_TO_BACKUP);
+ String[] settings = ArrayUtils.concat(String.class, SystemSettings.SETTINGS_TO_BACKUP,
+ OmniSettings.OMNI_SETTINGS_TO_BACKUP);
+ return extractRelevantValues(cursor, settings);
} finally {
cursor.close();
}
@@ -1008,8 +1013,23 @@
validators = SecureSettingsValidators.VALIDATORS;
} else if (contentUri.equals(Settings.System.CONTENT_URI)) {
whitelist = ArrayUtils.concat(String.class, SystemSettings.SETTINGS_TO_BACKUP,
- Settings.System.LEGACY_RESTORE_SETTINGS);
+ Settings.System.LEGACY_RESTORE_SETTINGS, OmniSettings.OMNI_SETTINGS_TO_BACKUP);
validators = SystemSettingsValidators.VALIDATORS;
+
+ final Map<String, Integer> omniValidators = OmniSettings.OMNI_SETTINGS_VALIDATORS;
+ // BOOLEAN_VALIDATOR == 0
+ // ANY_INTEGER_VALIDATOR == 1
+ // ANY_STRING_VALIDATOR == 2
+ for (String key : omniValidators.keySet()) {
+ Integer validatorId = omniValidators.get(key);
+ if (validatorId == 0) {
+ validators.put(key, SettingsValidators.BOOLEAN_VALIDATOR);
+ } else if (validatorId == 1) {
+ validators.put(key, SettingsValidators.ANY_INTEGER_VALIDATOR);
+ } else if (validatorId == 2) {
+ validators.put(key, SettingsValidators.ANY_STRING_VALIDATOR);
+ }
+ }
} else if (contentUri.equals(Settings.Global.CONTENT_URI)) {
whitelist = ArrayUtils.concat(String.class, GlobalSettings.SETTINGS_TO_BACKUP,
Settings.Global.LEGACY_RESTORE_SETTINGS);