| 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..2b7a5eb85406b5a3fc4188688d1031f15a1edfb6 100644
|
| --- a/chrome/renderer/resources/extensions/schema_generated_bindings.js
|
| +++ b/chrome/renderer/resources/extensions/schema_generated_bindings.js
|
| @@ -5,11 +5,15 @@
|
| // This script contains privileged chrome extension related javascript APIs.
|
| // It is loaded by pages whose URL has the chrome-extension protocol.
|
|
|
| + // TODO(battre): cleanup the usage of packages everywhere, as described here
|
| + // http://codereview.chromium.org/10392008/diff/38/chrome/renderer/resources/extensions/schema_generated_bindings.js
|
| +
|
| require('json_schema');
|
| - require('event_bindings');
|
| + var events = require('event_bindings');
|
| var GetExtensionAPIDefinition =
|
| requireNative('apiDefinitions').GetExtensionAPIDefinition;
|
| var sendRequest = require('sendRequest').sendRequest;
|
| + var utils = require('utils');
|
|
|
| var chromeHidden = requireNative('chrome_hidden').GetChromeHidden();
|
|
|
| @@ -22,13 +26,6 @@
|
| var internalAPIs = {};
|
| chromeHidden.internalAPIs = internalAPIs;
|
|
|
| - function forEach(dict, f) {
|
| - for (key in dict) {
|
| - if (dict.hasOwnProperty(key))
|
| - f(key, dict[key]);
|
| - }
|
| - }
|
| -
|
| // Validate arguments.
|
| var schemaValidator = new chromeHidden.JSONSchemaValidator();
|
| chromeHidden.validate = function(args, parameterSchemas) {
|
| @@ -360,6 +357,11 @@
|
| // for api functions that wish to insert themselves into the call.
|
| var platform = getPlatform();
|
|
|
| + // Inform implementation in event.js about schema of events namespace.
|
| + var eventsSchema = utils.lookup(apiDefinitions, 'namespace', 'events');
|
| + if (eventsSchema)
|
| + events.storeFunctionSchemes(eventsSchema);
|
| +
|
| apiDefinitions.forEach(function(apiDef) {
|
| // TODO(kalman): Remove this, or refactor schema_generated_bindings.js so
|
| // that it isn't necessary. For now, chrome.app is entirely handwritten.
|
| @@ -495,7 +497,7 @@
|
| 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 {
|
| @@ -510,7 +512,7 @@
|
| if (!properties)
|
| return;
|
|
|
| - forEach(properties, function(propertyName, propertyDef) {
|
| + utils.forEach(properties, function(propertyName, propertyDef) {
|
| if (propertyName in m)
|
| return; // TODO(kalman): be strict like functions/events somehow.
|
| if (!isSchemaNodeSupported(propertyDef, platform, manifestVersion))
|
|
|