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..c2fe3ef232f08b1599a2f8551d5c2ac5a0505d2b 100644 |
--- a/chrome/renderer/resources/extensions/web_view.js |
+++ b/chrome/renderer/resources/extensions/web_view.js |
@@ -7,6 +7,8 @@ |
// The actual tag is implemented via the browser plugin. The internals of this |
// are hidden via Shadow DOM. |
+var webRequestEvent = require('webRequest').webRequestEvent; |
+ |
var watchForTag = require("tagWatcher").watchForTag; |
var WEB_VIEW_ATTRIBUTES = ['name', 'src', 'partition', 'autosize', 'minheight', |
@@ -36,6 +38,18 @@ var WEB_VIEW_EVENTS = { |
'sizechanged': ['oldHeight', 'oldWidth', 'newHeight', 'newWidth'], |
}; |
+var WEB_REQUEST_EVENTS = [ |
+ 'onBeforeRequest', |
+ 'onBeforeSendHeaders', |
+ 'onSendHeaders', |
+ 'onHeadersReceived', |
+ 'onAuthRequired', |
+ 'onBeforeRedirect', |
+ 'onResponseStarted', |
+ 'onCompleted', |
+ 'onErrorOccurred' |
+]; |
+ |
window.addEventListener('DOMContentLoaded', function() { |
watchForTag('WEBVIEW', function(addedNode) { new WebView(addedNode); }); |
}); |
@@ -60,6 +74,7 @@ function WebView(node) { |
attributeName, this.node_.getAttribute(attributeName)); |
} |
}, this); |
+ this.onBeforeRequest_ = null; |
shadowRoot.appendChild(this.objectNode_); |
@@ -113,6 +128,23 @@ function WebView(node) { |
// We cannot use {writable: true} property descriptor because we want dynamic |
// getter value. |
+ WEB_REQUEST_EVENTS.forEach(function(eventName) { |
+ Object.defineProperty(this.node_, eventName, { |
+ get: function() { |
+ if (!self[eventName + '_']) { |
+ self[eventName + '_'] = |
+ new webRequestEvent( |
+ 'webRequest.' + eventName, null, {}, null, |
Matt Perry
2013/02/05 00:47:25
right here, you could use a different prefix for t
|
+ self.objectNode_.getProcessId(), |
+ self.objectNode_.getRouteId()); |
+ } |
+ return self[eventName + '_']; |
+ }, |
+ // No setter. |
+ enumerable: true |
+ }); |
+ }, this); |
+ |
Object.defineProperty(this.node_, 'contentWindow', { |
get: function() { |
// TODO(fsamuel): This is a workaround to enable |