Chromium Code Reviews| Index: chrome/renderer/resources/extensions/schema_generated_bindings.js |
| diff --git a/chrome/renderer/resources/extensions/schema_generated_bindings.js b/chrome/renderer/resources/extensions/schema_generated_bindings.js |
| index 66c193acac0d7f831b787cc5c8bcf9daa10f519a..b9a3b499400aba808c008694e41ad6ee9a5d1423 100644 |
| --- a/chrome/renderer/resources/extensions/schema_generated_bindings.js |
| +++ b/chrome/renderer/resources/extensions/schema_generated_bindings.js |
| @@ -29,6 +29,22 @@ |
| } |
| } |
| + // Assuming |array_of_dictionaries| is structured like this: |
| + // [{id: 1, ... }, {id: 2, ...}, ...], you can use |
| + // lookup(array_of_dictionaries, 'id', 2) to get the dictionary with id == 2. |
| + chromeHidden.lookup = function(array_of_dictionaries, field, value) { |
| + var filter = function (dict) {return dict[field] == value;}; |
| + var matches = array_of_dictionaries.filter(filter); |
| + if (matches.length == 0) { |
| + return undefined; |
| + } else if (matches.length == 1) { |
| + return matches[0] |
| + } else { |
| + throw new Error("Failed lookup of field '" + field + "' with value '" + |
| + value + "'"); |
|
battre
2012/05/09 16:28:08
TODO(battre): update error message.
|
| + } |
|
not at google - send to devlin
2012/05/10 09:01:25
hmmmm I want to avoid putting random utilities on
battre
2012/05/10 16:40:29
I like that idea very much. Done.
|
| + } |
| + |
| // Validate arguments. |
| var schemaValidator = new chromeHidden.JSONSchemaValidator(); |
| chromeHidden.validate = function(args, parameterSchemas) { |
| @@ -359,6 +375,8 @@ |
| // TODO(rafaelw): Consider providing some convenient override points |
| // for api functions that wish to insert themselves into the call. |
| var platform = getPlatform(); |
| + var eventsSchema = chromeHidden.lookup(apiDefinitions, |
| + 'namespace', 'events'); |
|
not at google - send to devlin
2012/05/10 09:01:25
nit: arguments 1 line or vertical thing
|
| apiDefinitions.forEach(function(apiDef) { |
| // TODO(kalman): Remove this, or refactor schema_generated_bindings.js so |
| @@ -495,12 +513,12 @@ |
| if (customEvent) { |
| mod[eventDef.name] = new customEvent( |
| eventName, eventDef.parameters, eventDef.extraParameters, |
| - eventDef.options); |
| + eventDef.options, eventsSchema); |
| } else if (eventDef.anonymous) { |
| mod[eventDef.name] = new chrome.Event(); |
| } else { |
| mod[eventDef.name] = new chrome.Event( |
| - eventName, eventDef.parameters, eventDef.options); |
| + eventName, eventDef.parameters, eventDef.options, eventsSchema); |
| } |
| }); |
| } |