Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3705)

Unified Diff: chrome/renderer/resources/extensions/schema_generated_bindings.js

Issue 10392008: Move declarative API into events API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
}
});
}

Powered by Google App Engine
This is Rietveld 408576698