Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6496)

Unified Diff: chrome/renderer/resources/extensions/web_view.js

Issue 12189018: <webview>: Implement WebRequest API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Diff from latest patch Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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', {

Powered by Google App Engine
This is Rietveld 408576698