diff options
Diffstat (limited to 'chromium/extensions/renderer/resources/declarative_webrequest_custom_bindings.js')
-rw-r--r-- | chromium/extensions/renderer/resources/declarative_webrequest_custom_bindings.js | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/chromium/extensions/renderer/resources/declarative_webrequest_custom_bindings.js b/chromium/extensions/renderer/resources/declarative_webrequest_custom_bindings.js new file mode 100644 index 00000000000..e9da12b7077 --- /dev/null +++ b/chromium/extensions/renderer/resources/declarative_webrequest_custom_bindings.js @@ -0,0 +1,96 @@ +// 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 declarativeWebRequest API. + +var binding = require('binding').Binding.create('declarativeWebRequest'); + +var utils = require('utils'); +var validate = require('schemaUtils').validate; + +binding.registerCustomHook(function(api) { + var declarativeWebRequest = api.compiledApi; + + // Returns the schema definition of type |typeId| defined in |namespace|. + function getSchema(typeId) { + return utils.lookup(api.schema.types, + 'id', + 'declarativeWebRequest.' + typeId); + } + + // Helper function for the constructor of concrete datatypes of the + // declarative webRequest API. + // Makes sure that |this| contains the union of parameters and + // {'instanceType': 'declarativeWebRequest.' + typeId} and validates the + // generated union dictionary against the schema for |typeId|. + function setupInstance(instance, parameters, typeId) { + for (var key in parameters) { + if ($Object.hasOwnProperty(parameters, key)) { + instance[key] = parameters[key]; + } + } + instance.instanceType = 'declarativeWebRequest.' + typeId; + var schema = getSchema(typeId); + validate([instance], [schema]); + } + + // Setup all data types for the declarative webRequest API. + declarativeWebRequest.RequestMatcher = function(parameters) { + setupInstance(this, parameters, 'RequestMatcher'); + }; + declarativeWebRequest.CancelRequest = function(parameters) { + setupInstance(this, parameters, 'CancelRequest'); + }; + declarativeWebRequest.RedirectRequest = function(parameters) { + setupInstance(this, parameters, 'RedirectRequest'); + }; + declarativeWebRequest.SetRequestHeader = function(parameters) { + setupInstance(this, parameters, 'SetRequestHeader'); + }; + declarativeWebRequest.RemoveRequestHeader = function(parameters) { + setupInstance(this, parameters, 'RemoveRequestHeader'); + }; + declarativeWebRequest.AddResponseHeader = function(parameters) { + setupInstance(this, parameters, 'AddResponseHeader'); + }; + declarativeWebRequest.RemoveResponseHeader = function(parameters) { + setupInstance(this, parameters, 'RemoveResponseHeader'); + }; + declarativeWebRequest.RedirectToTransparentImage = + function(parameters) { + setupInstance(this, parameters, 'RedirectToTransparentImage'); + }; + declarativeWebRequest.RedirectToEmptyDocument = function(parameters) { + setupInstance(this, parameters, 'RedirectToEmptyDocument'); + }; + declarativeWebRequest.RedirectByRegEx = function(parameters) { + setupInstance(this, parameters, 'RedirectByRegEx'); + }; + declarativeWebRequest.IgnoreRules = function(parameters) { + setupInstance(this, parameters, 'IgnoreRules'); + }; + declarativeWebRequest.AddRequestCookie = function(parameters) { + setupInstance(this, parameters, 'AddRequestCookie'); + }; + declarativeWebRequest.AddResponseCookie = function(parameters) { + setupInstance(this, parameters, 'AddResponseCookie'); + }; + declarativeWebRequest.EditRequestCookie = function(parameters) { + setupInstance(this, parameters, 'EditRequestCookie'); + }; + declarativeWebRequest.EditResponseCookie = function(parameters) { + setupInstance(this, parameters, 'EditResponseCookie'); + }; + declarativeWebRequest.RemoveRequestCookie = function(parameters) { + setupInstance(this, parameters, 'RemoveRequestCookie'); + }; + declarativeWebRequest.RemoveResponseCookie = function(parameters) { + setupInstance(this, parameters, 'RemoveResponseCookie'); + }; + declarativeWebRequest.SendMessageToExtension = function(parameters) { + setupInstance(this, parameters, 'SendMessageToExtension'); + }; +}); + +exports.$set('binding', binding.generate()); |