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; |