Chromium Code Reviews| Index: chrome/renderer/resources/extensions/chrome_setting.js |
| diff --git a/chrome/renderer/resources/extensions/chrome_setting.js b/chrome/renderer/resources/extensions/chrome_setting.js |
| index ef8114824875d4dc31707105eefde197b99643e2..77dfba5d5deca300a3958a46b6bb2e22ef7d27b3 100644 |
| --- a/chrome/renderer/resources/extensions/chrome_setting.js |
| +++ b/chrome/renderer/resources/extensions/chrome_setting.js |
| @@ -12,6 +12,7 @@ function extendSchema(schema) { |
| return extendedSchema; |
| } |
| +// TODO(devlin): Maybe find a way to combine this and ContentSetting. |
| function ChromeSetting(prefKey, valueSchema) { |
| this.get = function(details, callback) { |
| var getSchema = this.functionSchemas.get.definition.parameters; |
| @@ -21,13 +22,24 @@ function ChromeSetting(prefKey, valueSchema) { |
| extendSchema(getSchema)); |
| }; |
| this.set = function(details, callback) { |
| - var setSchema = $Array.slice( |
| - this.functionSchemas.set.definition.parameters); |
| - setSchema[0].properties.value = valueSchema; |
| - validate([details, callback], setSchema); |
| + // The set schema included in the Schema object is generic, since it varies |
| + // per-setting. However, this is only ever for a single setting, so we can |
| + // enforce the types more thoroughly. |
| + var rawSetSchema = this.functionSchemas.set.definition.parameters; |
|
Devlin
2016/04/20 23:24:43
Yucky stuff. Mostly because all of this was yucky
|
| + var rawSettingParam = rawSetSchema[0]; |
| + var props = $Object.assign({}, rawSettingParam.properties); |
| + props.value = valueSchema; |
| + var modSettingParam = { |
| + name: rawSettingParam.name, |
| + type: rawSettingParam.type, |
| + properties: props, |
| + }; |
| + var modSetSchema = $Array.slice(rawSetSchema); |
| + modSetSchema[0] = modSettingParam; |
| + validate([details, callback], modSetSchema); |
| return sendRequest('types.ChromeSetting.set', |
| [prefKey, details, callback], |
| - extendSchema(setSchema)); |
| + extendSchema(modSetSchema)); |
| }; |
| this.clear = function(details, callback) { |
| var clearSchema = this.functionSchemas.clear.definition.parameters; |