Chromium Code Reviews| 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 |