| Index: chrome/renderer/resources/extensions/chrome_web_view_experimental.js
|
| diff --git a/chrome/renderer/resources/extensions/chrome_web_view_experimental.js b/chrome/renderer/resources/extensions/chrome_web_view_experimental.js
|
| index f3db4bb6949b98550b80df981ce51c94acacbf7e..442f84b5922a850865180da408b1d60fcfd3de27 100644
|
| --- a/chrome/renderer/resources/extensions/chrome_web_view_experimental.js
|
| +++ b/chrome/renderer/resources/extensions/chrome_web_view_experimental.js
|
| @@ -19,6 +19,23 @@ var idGeneratorNatives = requireNative('id_generator');
|
| var MessagingNatives = requireNative('messaging_natives');
|
| var utils = require('utils');
|
| var WebViewImpl = require('webView').WebViewImpl;
|
| +var DeclarativeContentSchema =
|
| + requireNative('schema_registry').GetSchema('declarativeContent');
|
| +
|
| +var DeclarativeContentEvent = function(opt_eventName,
|
| + opt_argSchemas,
|
| + opt_eventOptions,
|
| + opt_webViewInstanceId) {
|
| + EventBindings.Event.call(this,
|
| + opt_eventName,
|
| + opt_argSchemas,
|
| + opt_eventOptions,
|
| + opt_webViewInstanceId);
|
| +}
|
| +
|
| +DeclarativeContentEvent.prototype = {
|
| + __proto__: EventBindings.Event.prototype
|
| +};
|
|
|
| function GetUniqueSubEventName(eventName) {
|
| return eventName + '/' + idGeneratorNatives.GetNextId();
|
| @@ -175,3 +192,35 @@ WebViewImpl.prototype.setupExperimentalContextMenus = function() {
|
| enumerable: true
|
| });
|
| };
|
| +
|
| +WebViewImpl.prototype.maybeSetupExperimentalChromeWebViewEvents = function(
|
| + request) {
|
| + var createDeclarativeContentEvent = function(declarativeContentEvent) {
|
| + return function() {
|
| + if (!this[declarativeContentEvent.name]) {
|
| + this[declarativeContentEvent.name] =
|
| + new DeclarativeContentEvent(
|
| + 'webViewInternal.declarativeContent.' +
|
| + declarativeContentEvent.name,
|
| + declarativeContentEvent.parameters,
|
| + declarativeContentEvent.options,
|
| + this.viewInstanceId);
|
| + }
|
| + return this[declarativeContentEvent.name];
|
| + }.bind(this);
|
| + }.bind(this);
|
| +
|
| + for (var i = 0; i < DeclarativeContentSchema.events.length; ++i) {
|
| + var eventSchema = DeclarativeContentSchema.events[i];
|
| + var declarativeContentEvent = createDeclarativeContentEvent(eventSchema);
|
| + Object.defineProperty(
|
| + request,
|
| + eventSchema.name,
|
| + {
|
| + get: declarativeContentEvent,
|
| + enumerable: true
|
| + }
|
| + );
|
| + }
|
| + return request;
|
| +};
|
|
|