Loading core/java/android/provider/Settings.java +9 −0 Original line number Diff line number Diff line Loading @@ -10543,6 +10543,15 @@ public final class Settings { SOFT_AP_TIMEOUT_ENABLED }; /** * Global settings that shouldn't be persisted. * * @hide */ public static final String[] TRANSIENT_SETTINGS = { LOCATION_GLOBAL_KILL_SWITCH, }; /** @hide */ public static final String[] LEGACY_RESTORE_SETTINGS = { }; Loading packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +9 −29 Original line number Diff line number Diff line Loading @@ -174,13 +174,10 @@ public class SettingsProvider extends ContentProvider { Settings.NameValueTable.VALUE }; public static final int SETTINGS_TYPE_GLOBAL = 0; public static final int SETTINGS_TYPE_SYSTEM = 1; public static final int SETTINGS_TYPE_SECURE = 2; public static final int SETTINGS_TYPE_SSAID = 3; public static final int SETTINGS_TYPE_MASK = 0xF0000000; public static final int SETTINGS_TYPE_SHIFT = 28; public static final int SETTINGS_TYPE_GLOBAL = SettingsState.SETTINGS_TYPE_GLOBAL; public static final int SETTINGS_TYPE_SYSTEM = SettingsState.SETTINGS_TYPE_SYSTEM; public static final int SETTINGS_TYPE_SECURE = SettingsState.SETTINGS_TYPE_SECURE; public static final int SETTINGS_TYPE_SSAID = SettingsState.SETTINGS_TYPE_SSAID; private static final Bundle NULL_SETTING_BUNDLE = Bundle.forPair( Settings.NameValueTable.VALUE, null); Loading Loading @@ -278,40 +275,23 @@ public class SettingsProvider extends ContentProvider { private volatile IPackageManager mPackageManager; public static int makeKey(int type, int userId) { return (type << SETTINGS_TYPE_SHIFT) | userId; return SettingsState.makeKey(type, userId); } public static int getTypeFromKey(int key) { return key >>> SETTINGS_TYPE_SHIFT; return SettingsState.getTypeFromKey(key); } public static int getUserIdFromKey(int key) { return key & ~SETTINGS_TYPE_MASK; return SettingsState.getUserIdFromKey(key); } public static String settingTypeToString(int type) { switch (type) { case SETTINGS_TYPE_GLOBAL: { return "SETTINGS_GLOBAL"; } case SETTINGS_TYPE_SECURE: { return "SETTINGS_SECURE"; } case SETTINGS_TYPE_SYSTEM: { return "SETTINGS_SYSTEM"; } case SETTINGS_TYPE_SSAID: { return "SETTINGS_SSAID"; } default: { return "UNKNOWN"; } } return SettingsState.settingTypeToString(type); } public static String keyToString(int key) { return "Key[user=" + getUserIdFromKey(key) + ";type=" + settingTypeToString(getTypeFromKey(key)) + "]"; return SettingsState.keyToString(key); } @Override Loading packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java +62 −0 Original line number Diff line number Diff line Loading @@ -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.GlobalSettingsProto; import android.providers.settings.SettingsOperationProto; import android.text.TextUtils; Loading @@ -46,6 +47,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.server.LocalServices; import libcore.io.IoUtils; Loading Loading @@ -195,6 +197,51 @@ final class SettingsState { @GuardedBy("mLock") private int mNextHistoricalOpIdx; public static final int SETTINGS_TYPE_GLOBAL = 0; public static final int SETTINGS_TYPE_SYSTEM = 1; public static final int SETTINGS_TYPE_SECURE = 2; public static final int SETTINGS_TYPE_SSAID = 3; public static final int SETTINGS_TYPE_MASK = 0xF0000000; public static final int SETTINGS_TYPE_SHIFT = 28; public static int makeKey(int type, int userId) { return (type << SETTINGS_TYPE_SHIFT) | userId; } public static int getTypeFromKey(int key) { return key >>> SETTINGS_TYPE_SHIFT; } public static int getUserIdFromKey(int key) { return key & ~SETTINGS_TYPE_MASK; } public static String settingTypeToString(int type) { switch (type) { case SETTINGS_TYPE_GLOBAL: { return "SETTINGS_GLOBAL"; } case SETTINGS_TYPE_SECURE: { return "SETTINGS_SECURE"; } case SETTINGS_TYPE_SYSTEM: { return "SETTINGS_SYSTEM"; } case SETTINGS_TYPE_SSAID: { return "SETTINGS_SSAID"; } default: { return "UNKNOWN"; } } } public static String keyToString(int key) { return "Key[user=" + getUserIdFromKey(key) + ";type=" + settingTypeToString(getTypeFromKey(key)) + "]"; } public SettingsState(Context context, Object lock, File file, int key, int maxBytesPerAppPackage, Looper looper) { // It is important that we use the same lock as the settings provider Loading Loading @@ -604,6 +651,13 @@ final class SettingsState { 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; } writeSingleSetting(mVersion, serializer, setting.getId(), setting.getName(), setting.getValue(), setting.getDefaultValue(), setting.getPackageName(), setting.getTag(), setting.isDefaultFromSystem()); Loading Loading @@ -914,6 +968,14 @@ final class SettingsState { return update(this.defaultValue, false, packageName, null, 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) { if (NULL_VALUE.equals(value)) { Loading Loading
core/java/android/provider/Settings.java +9 −0 Original line number Diff line number Diff line Loading @@ -10543,6 +10543,15 @@ public final class Settings { SOFT_AP_TIMEOUT_ENABLED }; /** * Global settings that shouldn't be persisted. * * @hide */ public static final String[] TRANSIENT_SETTINGS = { LOCATION_GLOBAL_KILL_SWITCH, }; /** @hide */ public static final String[] LEGACY_RESTORE_SETTINGS = { }; Loading
packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +9 −29 Original line number Diff line number Diff line Loading @@ -174,13 +174,10 @@ public class SettingsProvider extends ContentProvider { Settings.NameValueTable.VALUE }; public static final int SETTINGS_TYPE_GLOBAL = 0; public static final int SETTINGS_TYPE_SYSTEM = 1; public static final int SETTINGS_TYPE_SECURE = 2; public static final int SETTINGS_TYPE_SSAID = 3; public static final int SETTINGS_TYPE_MASK = 0xF0000000; public static final int SETTINGS_TYPE_SHIFT = 28; public static final int SETTINGS_TYPE_GLOBAL = SettingsState.SETTINGS_TYPE_GLOBAL; public static final int SETTINGS_TYPE_SYSTEM = SettingsState.SETTINGS_TYPE_SYSTEM; public static final int SETTINGS_TYPE_SECURE = SettingsState.SETTINGS_TYPE_SECURE; public static final int SETTINGS_TYPE_SSAID = SettingsState.SETTINGS_TYPE_SSAID; private static final Bundle NULL_SETTING_BUNDLE = Bundle.forPair( Settings.NameValueTable.VALUE, null); Loading Loading @@ -278,40 +275,23 @@ public class SettingsProvider extends ContentProvider { private volatile IPackageManager mPackageManager; public static int makeKey(int type, int userId) { return (type << SETTINGS_TYPE_SHIFT) | userId; return SettingsState.makeKey(type, userId); } public static int getTypeFromKey(int key) { return key >>> SETTINGS_TYPE_SHIFT; return SettingsState.getTypeFromKey(key); } public static int getUserIdFromKey(int key) { return key & ~SETTINGS_TYPE_MASK; return SettingsState.getUserIdFromKey(key); } public static String settingTypeToString(int type) { switch (type) { case SETTINGS_TYPE_GLOBAL: { return "SETTINGS_GLOBAL"; } case SETTINGS_TYPE_SECURE: { return "SETTINGS_SECURE"; } case SETTINGS_TYPE_SYSTEM: { return "SETTINGS_SYSTEM"; } case SETTINGS_TYPE_SSAID: { return "SETTINGS_SSAID"; } default: { return "UNKNOWN"; } } return SettingsState.settingTypeToString(type); } public static String keyToString(int key) { return "Key[user=" + getUserIdFromKey(key) + ";type=" + settingTypeToString(getTypeFromKey(key)) + "]"; return SettingsState.keyToString(key); } @Override Loading
packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java +62 −0 Original line number Diff line number Diff line Loading @@ -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.GlobalSettingsProto; import android.providers.settings.SettingsOperationProto; import android.text.TextUtils; Loading @@ -46,6 +47,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.server.LocalServices; import libcore.io.IoUtils; Loading Loading @@ -195,6 +197,51 @@ final class SettingsState { @GuardedBy("mLock") private int mNextHistoricalOpIdx; public static final int SETTINGS_TYPE_GLOBAL = 0; public static final int SETTINGS_TYPE_SYSTEM = 1; public static final int SETTINGS_TYPE_SECURE = 2; public static final int SETTINGS_TYPE_SSAID = 3; public static final int SETTINGS_TYPE_MASK = 0xF0000000; public static final int SETTINGS_TYPE_SHIFT = 28; public static int makeKey(int type, int userId) { return (type << SETTINGS_TYPE_SHIFT) | userId; } public static int getTypeFromKey(int key) { return key >>> SETTINGS_TYPE_SHIFT; } public static int getUserIdFromKey(int key) { return key & ~SETTINGS_TYPE_MASK; } public static String settingTypeToString(int type) { switch (type) { case SETTINGS_TYPE_GLOBAL: { return "SETTINGS_GLOBAL"; } case SETTINGS_TYPE_SECURE: { return "SETTINGS_SECURE"; } case SETTINGS_TYPE_SYSTEM: { return "SETTINGS_SYSTEM"; } case SETTINGS_TYPE_SSAID: { return "SETTINGS_SSAID"; } default: { return "UNKNOWN"; } } } public static String keyToString(int key) { return "Key[user=" + getUserIdFromKey(key) + ";type=" + settingTypeToString(getTypeFromKey(key)) + "]"; } public SettingsState(Context context, Object lock, File file, int key, int maxBytesPerAppPackage, Looper looper) { // It is important that we use the same lock as the settings provider Loading Loading @@ -604,6 +651,13 @@ final class SettingsState { 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; } writeSingleSetting(mVersion, serializer, setting.getId(), setting.getName(), setting.getValue(), setting.getDefaultValue(), setting.getPackageName(), setting.getTag(), setting.isDefaultFromSystem()); Loading Loading @@ -914,6 +968,14 @@ final class SettingsState { return update(this.defaultValue, false, packageName, null, 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) { if (NULL_VALUE.equals(value)) { Loading