Index: chrome/renderer/resources/extensions/web_view.js |
diff --git a/chrome/renderer/resources/extensions/web_view.js b/chrome/renderer/resources/extensions/web_view.js |
index 73f4f1af30fd11ea1ec80dd466bb55b15eb1b0c0..d0a8ab104380a79485f150f5a6cf84066bbffd8a 100644 |
--- a/chrome/renderer/resources/extensions/web_view.js |
+++ b/chrome/renderer/resources/extensions/web_view.js |
@@ -7,6 +7,10 @@ |
// The actual tag is implemented via the browser plugin. The internals of this |
// are hidden via Shadow DOM. |
+var GetExtensionAPIDefinition = |
+ requireNative('apiDefinitions').GetExtensionAPIDefinition; |
+var WebRequestEvent = require('webRequest').webRequestEvent; |
+ |
var watchForTag = require("tagWatcher").watchForTag; |
var WEB_VIEW_ATTRIBUTES = ['name', 'src', 'partition', 'autosize', 'minheight', |
@@ -111,6 +115,30 @@ function WebView(node) { |
}); |
}, this); |
+ |
+ // Populate the WebRequest events from the API definition. |
+ var webRequestDefinition = |
+ GetExtensionAPIDefinition('webRequest')[0]; |
+ for (var i = 0; i < webRequestDefinition.events.length; ++i) { |
+ Object.defineProperty(self.node_, webRequestDefinition.events[i].name, { |
+ get: function(webRequestEvent) { |
+ return function() { |
+ if (!self[webRequestEvent.name + '_']) { |
+ self[webRequestEvent.name + '_'] = |
+ new WebRequestEvent( |
+ 'webview.' + webRequestEvent.name, |
+ webRequestEvent.parameters, |
+ webRequestEvent.extraParameters, null, |
+ self.objectNode_.getInstanceId()); |
+ } |
+ return self[webRequestEvent.name + '_']; |
+ } |
+ }(webRequestDefinition.events[i]), |
+ // No setter. |
+ enumerable: true |
+ }); |
+ } |
+ |
// We cannot use {writable: true} property descriptor because we want dynamic |
// getter value. |
Object.defineProperty(this.node_, 'contentWindow', { |