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

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

Issue 594653003: Move web_request_internal_custom_bindings.js and web_request_custom_bindings.js (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove HandleWebRequestAPIUsage from dispatcher_delegate. Created 6 years, 3 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_request_internal_custom_bindings.js
diff --git a/chrome/renderer/resources/extensions/web_request_internal_custom_bindings.js b/chrome/renderer/resources/extensions/web_request_internal_custom_bindings.js
deleted file mode 100644
index 76460eeb9f92cc74b7e09f0462bba1c8b3dc6761..0000000000000000000000000000000000000000
--- a/chrome/renderer/resources/extensions/web_request_internal_custom_bindings.js
+++ /dev/null
@@ -1,192 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Custom binding for the webRequestInternal API.
-
-var binding = require('binding').Binding.create('webRequestInternal');
-var eventBindings = require('event_bindings');
-var sendRequest = require('sendRequest').sendRequest;
-var validate = require('schemaUtils').validate;
-var utils = require('utils');
-var idGeneratorNatives = requireNative('id_generator');
-
-var webRequestInternal;
-
-function GetUniqueSubEventName(eventName) {
- return eventName + "/" + idGeneratorNatives.GetNextId();
-}
-
-// WebRequestEventImpl object. This is used for special webRequest events
-// with extra parameters. Each invocation of addListener creates a new named
-// sub-event. That sub-event is associated with the extra parameters in the
-// browser process, so that only it is dispatched when the main event occurs
-// matching the extra parameters.
-//
-// Example:
-// chrome.webRequest.onBeforeRequest.addListener(
-// callback, {urls: 'http://*.google.com/*'});
-// ^ callback will only be called for onBeforeRequests matching the filter.
-function WebRequestEventImpl(eventName, opt_argSchemas, opt_extraArgSchemas,
- opt_eventOptions, opt_webViewInstanceId) {
- if (typeof eventName != 'string')
- throw new Error('chrome.WebRequestEvent requires an event name.');
-
- this.eventName = eventName;
- this.argSchemas = opt_argSchemas;
- this.extraArgSchemas = opt_extraArgSchemas;
- this.webViewInstanceId = opt_webViewInstanceId || 0;
- this.subEvents = [];
- this.eventOptions = eventBindings.parseEventOptions(opt_eventOptions);
- if (this.eventOptions.supportsRules) {
- this.eventForRules =
- new eventBindings.Event(eventName, opt_argSchemas, opt_eventOptions,
- opt_webViewInstanceId);
- }
-}
-
-// Test if the given callback is registered for this event.
-WebRequestEventImpl.prototype.hasListener = function(cb) {
- if (!this.eventOptions.supportsListeners)
- throw new Error('This event does not support listeners.');
- return this.findListener_(cb) > -1;
-};
-
-// Test if any callbacks are registered fur thus event.
-WebRequestEventImpl.prototype.hasListeners = function() {
- if (!this.eventOptions.supportsListeners)
- throw new Error('This event does not support listeners.');
- return this.subEvents.length > 0;
-};
-
-// Registers a callback to be called when this event is dispatched. If
-// opt_filter is specified, then the callback is only called for events that
-// match the given filters. If opt_extraInfo is specified, the given optional
-// info is sent to the callback.
-WebRequestEventImpl.prototype.addListener =
- function(cb, opt_filter, opt_extraInfo) {
- if (!this.eventOptions.supportsListeners)
- throw new Error('This event does not support listeners.');
- // NOTE(benjhayden) New APIs should not use this subEventName trick! It does
- // not play well with event pages. See downloads.onDeterminingFilename and
- // ExtensionDownloadsEventRouter for an alternative approach.
- var subEventName = GetUniqueSubEventName(this.eventName);
- // Note: this could fail to validate, in which case we would not add the
- // subEvent listener.
- validate($Array.slice(arguments, 1), this.extraArgSchemas);
- webRequestInternal.addEventListener(
- cb, opt_filter, opt_extraInfo, this.eventName, subEventName,
- this.webViewInstanceId);
-
- var subEvent = new eventBindings.Event(subEventName, this.argSchemas);
- var subEventCallback = cb;
- if (opt_extraInfo && opt_extraInfo.indexOf('blocking') >= 0) {
- var eventName = this.eventName;
- subEventCallback = function() {
- var requestId = arguments[0].requestId;
- try {
- var result = $Function.apply(cb, null, arguments);
- webRequestInternal.eventHandled(
- eventName, subEventName, requestId, result);
- } catch (e) {
- webRequestInternal.eventHandled(
- eventName, subEventName, requestId);
- throw e;
- }
- };
- } else if (opt_extraInfo && opt_extraInfo.indexOf('asyncBlocking') >= 0) {
- var eventName = this.eventName;
- subEventCallback = function() {
- var details = arguments[0];
- var requestId = details.requestId;
- var handledCallback = function(response) {
- webRequestInternal.eventHandled(
- eventName, subEventName, requestId, response);
- };
- $Function.apply(cb, null, [details, handledCallback]);
- };
- }
- $Array.push(this.subEvents,
- {subEvent: subEvent, callback: cb, subEventCallback: subEventCallback});
- subEvent.addListener(subEventCallback);
-};
-
-// Unregisters a callback.
-WebRequestEventImpl.prototype.removeListener = function(cb) {
- if (!this.eventOptions.supportsListeners)
- throw new Error('This event does not support listeners.');
- var idx;
- while ((idx = this.findListener_(cb)) >= 0) {
- var e = this.subEvents[idx];
- e.subEvent.removeListener(e.subEventCallback);
- if (e.subEvent.hasListeners()) {
- console.error(
- 'Internal error: webRequest subEvent has orphaned listeners.');
- }
- $Array.splice(this.subEvents, idx, 1);
- }
-};
-
-WebRequestEventImpl.prototype.findListener_ = function(cb) {
- for (var i in this.subEvents) {
- var e = this.subEvents[i];
- if (e.callback === cb) {
- if (e.subEvent.hasListener(e.subEventCallback))
- return i;
- console.error('Internal error: webRequest subEvent has no callback.');
- }
- }
-
- return -1;
-};
-
-WebRequestEventImpl.prototype.addRules = function(rules, opt_cb) {
- if (!this.eventOptions.supportsRules)
- throw new Error('This event does not support rules.');
- this.eventForRules.addRules(rules, opt_cb);
-};
-
-WebRequestEventImpl.prototype.removeRules =
- function(ruleIdentifiers, opt_cb) {
- if (!this.eventOptions.supportsRules)
- throw new Error('This event does not support rules.');
- this.eventForRules.removeRules(ruleIdentifiers, opt_cb);
-};
-
-WebRequestEventImpl.prototype.getRules = function(ruleIdentifiers, cb) {
- if (!this.eventOptions.supportsRules)
- throw new Error('This event does not support rules.');
- this.eventForRules.getRules(ruleIdentifiers, cb);
-};
-
-binding.registerCustomHook(function(api) {
- var apiFunctions = api.apiFunctions;
-
- apiFunctions.setHandleRequest('addEventListener', function() {
- var args = $Array.slice(arguments);
- sendRequest(this.name, args, this.definition.parameters,
- {forIOThread: true});
- });
-
- apiFunctions.setHandleRequest('eventHandled', function() {
- var args = $Array.slice(arguments);
- sendRequest(this.name, args, this.definition.parameters,
- {forIOThread: true});
- });
-});
-
-var WebRequestEvent = utils.expose('WebRequestEvent',
- WebRequestEventImpl,
- { functions: [
- 'hasListener',
- 'hasListeners',
- 'addListener',
- 'removeListener',
- 'addRules',
- 'removeRules',
- 'getRules'
-] });
-
-webRequestInternal = binding.generate();
-exports.binding = webRequestInternal;
-exports.WebRequestEvent = WebRequestEvent;
« no previous file with comments | « chrome/renderer/resources/extensions/web_request_custom_bindings.js ('k') | chrome/renderer/resources/renderer_resources.grd » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698