diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 8d177b4e8db38..35370254b8e70 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -14875,6 +14875,17 @@ public final class Settings { public static final String CLOCKWORK_SYSUI_MAIN_ACTIVITY_NAME = "clockwork_sysui_main_activity_name"; + /** + * Setting to determine if the Clockwork Home application is ready. + * + *
+ * Set to 1 when the Clockwork Home application has finished starting up. + *
+ * + * @hide + */ + public static final String CLOCKWORK_HOME_READY = "clockwork_home_ready"; + /** * Indicates whether aware is available in the current location. * @hide @@ -14933,6 +14944,15 @@ public final class Settings { */ public static final String ONE_HANDED_KEYGUARD_SIDE = "one_handed_keyguard_side"; + /** + * Global settings that shouldn't be persisted. + * + * @hide + */ + public static final String[] TRANSIENT_SETTINGS = { + CLOCKWORK_HOME_READY, + }; + /** * Keys we no longer back up under the current schema, but want to continue to * process when restoring historical backup datasets. diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java index cb589a23cbe66..f618fc85abf51 100644 --- a/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java +++ b/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java @@ -42,6 +42,7 @@ public class GlobalSettings { Settings.Global.BUGREPORT_IN_POWER_MENU, Settings.Global.CLOCKWORK_SYSUI_PACKAGE_NAME, Settings.Global.CLOCKWORK_SYSUI_MAIN_ACTIVITY_NAME, + Settings.Global.CLOCKWORK_HOME_READY, Settings.Global.STAY_ON_WHILE_PLUGGED_IN, Settings.Global.APP_AUTO_RESTRICTION_ENABLED, Settings.Global.AUTO_TIME, diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java index d3d5b18fa32a6..c1ac9a9797fa9 100644 --- a/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java +++ b/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java @@ -115,6 +115,7 @@ public class GlobalSettingsValidators { VALIDATORS.put(Global.BLUETOOTH_ON, BOOLEAN_VALIDATOR); VALIDATORS.put(Global.CLOCKWORK_SYSUI_MAIN_ACTIVITY_NAME, ANY_STRING_VALIDATOR); VALIDATORS.put(Global.CLOCKWORK_SYSUI_PACKAGE_NAME, ANY_STRING_VALIDATOR); + VALIDATORS.put(Global.CLOCKWORK_HOME_READY, ANY_STRING_VALIDATOR); VALIDATORS.put(Global.PRIVATE_DNS_MODE, ANY_STRING_VALIDATOR); VALIDATORS.put(Global.PRIVATE_DNS_SPECIFIER, ANY_STRING_VALIDATOR); VALIDATORS.put(Global.SOFT_AP_TIMEOUT_ENABLED, BOOLEAN_VALIDATOR); diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java index f04acd09ae140..1ff5950b21cad 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java @@ -33,6 +33,7 @@ import android.os.Message; import android.os.SystemClock; import android.os.UserHandle; import android.provider.Settings; +import android.provider.Settings.Global; import android.providers.settings.SettingsOperationProto; import android.text.TextUtils; import android.util.ArrayMap; @@ -47,6 +48,7 @@ import android.util.Xml; import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.GuardedBy; +import com.android.internal.util.ArrayUtils; import com.android.internal.util.FrameworkStatsLog; import libcore.io.IoUtils; @@ -806,7 +808,14 @@ final class SettingsState { final int settingCount = settings.size(); for (int i = 0; i < settingCount; i++) { + Setting setting = settings.valueAt(i); + if (setting.isTransient()) { + if (DEBUG_PERSISTENCE) { + Slog.i(LOG_TAG, "[SKIPPED PERSISTING]" + setting.getName()); + } + continue; + } if (writeSingleSetting(mVersion, serializer, setting.getId(), setting.getName(), setting.getValue(), setting.getDefaultValue(), setting.getPackageName(), @@ -1302,6 +1311,14 @@ final class SettingsState { /* resetToDefault */ true); } + public boolean isTransient() { + switch (getTypeFromKey(getKey())) { + case SETTINGS_TYPE_GLOBAL: + return ArrayUtils.contains(Global.TRANSIENT_SETTINGS, getName()); + } + return false; + } + public boolean update(String value, boolean setDefault, String packageName, String tag, boolean forceNonSystemPackage, boolean overrideableByRestore) { return update(value, setDefault, packageName, tag, forceNonSystemPackage,