summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2020-01-07 13:43:11 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-01-07 13:43:11 +0000
commitb644ae2000f24238041f42c5970371bdcffeb2dd (patch)
treec58e1f0270ca0fab3f95151a9f918977dec2df85 /core/java
parent4c5c6c96103f2277f5856ad9fa107af4570c6de4 (diff)
parent66acc13aefde36973305c469e429a814566807ed (diff)
Merge "Adds DeviceConfig flag configuration banning to SettingsProvider."
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/provider/Settings.java18
1 files changed, 13 insertions, 5 deletions
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 3aa534e79965..9bcde71d56f2 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -252,6 +252,9 @@ public final class Settings {
/** @hide */
public static final String EXTRA_NETWORK_TEMPLATE = "network_template";
+ /** @hide */
+ public static final String KEY_CONFIG_SET_RETURN = "config_set_return";
+
/**
* An int extra specifying a subscription ID.
*
@@ -2504,13 +2507,14 @@ public final class Settings {
args.putString(CALL_METHOD_PREFIX_KEY, prefix);
args.putSerializable(CALL_METHOD_FLAGS_KEY, keyValues);
IContentProvider cp = mProviderHolder.getProvider(cr);
- cp.call(cr.getPackageName(), cr.getFeatureId(), mProviderHolder.mUri.getAuthority(),
+ Bundle bundle = cp.call(cr.getPackageName(), cr.getFeatureId(),
+ mProviderHolder.mUri.getAuthority(),
mCallSetAllCommand, null, args);
+ return bundle.getBoolean(KEY_CONFIG_SET_RETURN);
} catch (RemoteException e) {
// Not supported by the remote side
return false;
}
- return true;
}
@UnsupportedAppUsage
@@ -13985,14 +13989,18 @@ public final class Settings {
*/
@RequiresPermission(Manifest.permission.WRITE_DEVICE_CONFIG)
static boolean setStrings(@NonNull ContentResolver resolver, @NonNull String namespace,
- @NonNull Map<String, String> keyValues) {
+ @NonNull Map<String, String> keyValues) throws DeviceConfig.BadConfigException {
HashMap<String, String> compositeKeyValueMap = new HashMap<>(keyValues.keySet().size());
for (Map.Entry<String, String> entry : keyValues.entrySet()) {
compositeKeyValueMap.put(
createCompositeName(namespace, entry.getKey()), entry.getValue());
}
- return sNameValueCache.setStringsForPrefix(resolver, createPrefix(namespace),
- compositeKeyValueMap);
+ // If can't set given configuration that means it's bad
+ if (!sNameValueCache.setStringsForPrefix(resolver, createPrefix(namespace),
+ compositeKeyValueMap)) {
+ throw new DeviceConfig.BadConfigException();
+ }
+ return true;
}
/**