Chromium Code Reviews| 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..e14f53168724bc3a4355703cc878abd1d9e5998b 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,36 @@ 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.' + |
|
Fady Samuel
2014/12/10 15:56:47
Can we try calling this by its original name?
Xi Han
2014/12/11 16:40:04
Done.
|
| + 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; |
| +}; |
| + |