diff options
| author | TreeHugger Robot <treehugger-gerrit@google.com> | 2020-01-07 13:43:11 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-01-07 13:43:11 +0000 |
| commit | b644ae2000f24238041f42c5970371bdcffeb2dd (patch) | |
| tree | c58e1f0270ca0fab3f95151a9f918977dec2df85 /core/java | |
| parent | 4c5c6c96103f2277f5856ad9fa107af4570c6de4 (diff) | |
| parent | 66acc13aefde36973305c469e429a814566807ed (diff) | |
Merge "Adds DeviceConfig flag configuration banning to SettingsProvider."
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/provider/Settings.java | 18 |
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; } /** |
