Add validators for all Settings.Global settings that are backed up
And extend the unit test to fail if new ones are added without
a validator. Also fail to boot in that case.
Ref: go/android-p-backed-up-settings
Test: atest frameworks/base/core/tests/coretests/src/android/provider/SettingsValidatorsTest.java
Bug: 64988620
Change-Id: Ibd4a2bad0c6a1f2a9e1beec1a4ec8e6972fd86a4
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index 01e0d52..9ee205f 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -301,6 +301,7 @@
// fail to boot if there're any backed up settings that don't have a non-null validator
ensureAllBackedUpSystemSettingsHaveValidators();
+ ensureAllBackedUpGlobalSettingsHaveValidators();
synchronized (mLock) {
mUserManager = UserManager.get(getContext());
@@ -320,18 +321,35 @@
}
private void ensureAllBackedUpSystemSettingsHaveValidators() {
+ String offenders = getOffenders(Settings.System.SETTINGS_TO_BACKUP,
+ Settings.System.VALIDATORS);
+
+ failToBootIfOffendersPresent(offenders, "Settings.System");
+ }
+
+ private void ensureAllBackedUpGlobalSettingsHaveValidators() {
+ String offenders = getOffenders(Settings.Global.SETTINGS_TO_BACKUP,
+ Settings.Global.VALIDATORS);
+
+ failToBootIfOffendersPresent(offenders, "Settings.Global");
+ }
+
+ private void failToBootIfOffendersPresent(String offenders, String settingsType) {
+ if (offenders.length() > 0) {
+ throw new RuntimeException("All " + settingsType + " settings that are backed up"
+ + " have to have a non-null validator, but those don't: " + offenders);
+ }
+ }
+
+ private String getOffenders(String[] settingsToBackup, Map<String,
+ SettingsValidators.Validator> validators) {
StringBuilder offenders = new StringBuilder();
- for (String setting : Settings.System.SETTINGS_TO_BACKUP) {
- if (Settings.System.VALIDATORS.get(setting) == null) {
+ for (String setting : settingsToBackup) {
+ if (validators.get(setting) == null) {
offenders.append(setting).append(" ");
}
}
-
- String offendersStr = offenders.toString();
- if (offendersStr.length() > 0) {
- throw new RuntimeException("All Settings.System settings that are backed up must"
- + " have a non-null validator, but those don't: " + offendersStr);
- }
+ return offenders.toString();
}
@Override