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

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

Issue 12189018: <webview>: Implement WebRequest API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Profile* => void* Created 7 years, 7 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_experimental.js
diff --git a/chrome/renderer/resources/extensions/web_view_experimental.js b/chrome/renderer/resources/extensions/web_view_experimental.js
index 8c02372f1f3830459ea716bd39a155d6ff6d0456..b36271cb343ca59de1bae56ed4e2922615556137 100644
--- a/chrome/renderer/resources/extensions/web_view_experimental.js
+++ b/chrome/renderer/resources/extensions/web_view_experimental.js
@@ -12,7 +12,9 @@
// CHANNEL_CANARY.
var WebView = require('webView').WebView;
-
+var GetExtensionAPIDefinitions =
+ requireNative('apiDefinitions').GetExtensionAPIDefinitions;
+var WebRequestEvent = require('webRequest').WebRequestEvent;
var forEach = require('utils').forEach;
/** @type {Array.<string>} */
@@ -186,4 +188,34 @@ WebView.prototype.maybeSetupNewWindowEvent_ = function() {
console.warn('<webview>: A new window was blocked.');
}
});
+}
+
+/**
+ * @private
+ */
+WebView.prototype.maybeSetupWebRequestEvents_ = function() {
+ var self = this;
+ // Populate the WebRequest events from the API definition.
+ var webRequestDefinition = GetExtensionAPIDefinitions().filter(function(api) {
+ return api.namespace == '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
+ });
+ }
};
« no previous file with comments | « chrome/renderer/resources/extensions/web_view.js ('k') | chrome/test/data/extensions/platform_apps/web_view/shim/main.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698