Merge "Don't persist LOCATION_GLOBAL_KILL_SWITCH"
This commit is contained in:
@@ -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 = {
|
||||
};
|
||||
|
||||
@@ -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);
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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
|
||||
@@ -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());
|
||||
@@ -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)) {
|
||||
|
||||
Reference in New Issue
Block a user