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

Side by Side Diff: chrome/renderer/resources/extensions/declarative_webrequest_custom_bindings.js

Issue 11571014: Lazy load chrome.* APIs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: android compilation Created 7 years, 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Custom bindings for the declarativeWebRequest API. 5 // Custom binding for the declarativeWebRequest API.
6
7 var binding = require('binding').Binding.create('declarativeWebRequest');
6 8
7 var chromeHidden = requireNative('chrome_hidden').GetChromeHidden(); 9 var chromeHidden = requireNative('chrome_hidden').GetChromeHidden();
10 var chrome = requireNative('chrome').GetChrome();
8 var utils = require('utils'); 11 var utils = require('utils');
9 var validate = require('schemaUtils').validate; 12 var validate = require('schemaUtils').validate;
10 13
11 chromeHidden.registerCustomHook('declarativeWebRequest', function(api) { 14 binding.registerCustomHook(function(api) {
15 var declarativeWebRequest = api.compiledApi;
16
12 // Returns the schema definition of type |typeId| defined in |namespace|. 17 // Returns the schema definition of type |typeId| defined in |namespace|.
13 function getSchema(namespace, typeId) { 18 function getSchema(typeId) {
14 var apiSchema = utils.lookup(api.apiDefinitions, 'namespace', namespace); 19 return utils.lookup(api.schema.types,
15 var resultSchema = utils.lookup( 20 'id',
16 apiSchema.types, 'id', namespace + '.' + typeId); 21 'declarativeWebRequest.' + typeId);
17 return resultSchema;
18 } 22 }
19 23
20 // Helper function for the constructor of concrete datatypes of the 24 // Helper function for the constructor of concrete datatypes of the
21 // declarative webRequest API. 25 // declarative webRequest API.
22 // Makes sure that |this| contains the union of parameters and 26 // Makes sure that |this| contains the union of parameters and
23 // {'instanceType': 'declarativeWebRequest.' + typeId} and validates the 27 // {'instanceType': 'declarativeWebRequest.' + typeId} and validates the
24 // generated union dictionary against the schema for |typeId|. 28 // generated union dictionary against the schema for |typeId|.
25 function setupInstance(instance, parameters, typeId) { 29 function setupInstance(instance, parameters, typeId) {
26 for (var key in parameters) { 30 for (var key in parameters) {
27 if (parameters.hasOwnProperty(key)) { 31 if (parameters.hasOwnProperty(key)) {
28 instance[key] = parameters[key]; 32 instance[key] = parameters[key];
29 } 33 }
30 } 34 }
31 instance.instanceType = 'declarativeWebRequest.' + typeId; 35 instance.instanceType = 'declarativeWebRequest.' + typeId;
32 var schema = getSchema('declarativeWebRequest', typeId); 36 var schema = getSchema(typeId);
33 validate([instance], [schema]); 37 validate([instance], [schema]);
34 } 38 }
35 39
36 // Setup all data types for the declarative webRequest API. 40 // Setup all data types for the declarative webRequest API.
37 chrome.declarativeWebRequest.RequestMatcher = function(parameters) { 41 declarativeWebRequest.RequestMatcher = function(parameters) {
38 setupInstance(this, parameters, 'RequestMatcher'); 42 setupInstance(this, parameters, 'RequestMatcher');
39 }; 43 };
40 chrome.declarativeWebRequest.CancelRequest = function(parameters) { 44 declarativeWebRequest.CancelRequest = function(parameters) {
41 setupInstance(this, parameters, 'CancelRequest'); 45 setupInstance(this, parameters, 'CancelRequest');
42 }; 46 };
43 chrome.declarativeWebRequest.RedirectRequest = function(parameters) { 47 declarativeWebRequest.RedirectRequest = function(parameters) {
44 setupInstance(this, parameters, 'RedirectRequest'); 48 setupInstance(this, parameters, 'RedirectRequest');
45 }; 49 };
46 chrome.declarativeWebRequest.SetRequestHeader = function(parameters) { 50 declarativeWebRequest.SetRequestHeader = function(parameters) {
47 setupInstance(this, parameters, 'SetRequestHeader'); 51 setupInstance(this, parameters, 'SetRequestHeader');
48 }; 52 };
49 chrome.declarativeWebRequest.RemoveRequestHeader = function(parameters) { 53 declarativeWebRequest.RemoveRequestHeader = function(parameters) {
50 setupInstance(this, parameters, 'RemoveRequestHeader'); 54 setupInstance(this, parameters, 'RemoveRequestHeader');
51 }; 55 };
52 chrome.declarativeWebRequest.AddResponseHeader = function(parameters) { 56 declarativeWebRequest.AddResponseHeader = function(parameters) {
53 setupInstance(this, parameters, 'AddResponseHeader'); 57 setupInstance(this, parameters, 'AddResponseHeader');
54 }; 58 };
55 chrome.declarativeWebRequest.RemoveResponseHeader = function(parameters) { 59 declarativeWebRequest.RemoveResponseHeader = function(parameters) {
56 setupInstance(this, parameters, 'RemoveResponseHeader'); 60 setupInstance(this, parameters, 'RemoveResponseHeader');
57 }; 61 };
58 chrome.declarativeWebRequest.RedirectToTransparentImage = 62 declarativeWebRequest.RedirectToTransparentImage =
59 function(parameters) { 63 function(parameters) {
60 setupInstance(this, parameters, 'RedirectToTransparentImage'); 64 setupInstance(this, parameters, 'RedirectToTransparentImage');
61 }; 65 };
62 chrome.declarativeWebRequest.RedirectToEmptyDocument = function(parameters) { 66 declarativeWebRequest.RedirectToEmptyDocument = function(parameters) {
63 setupInstance(this, parameters, 'RedirectToEmptyDocument'); 67 setupInstance(this, parameters, 'RedirectToEmptyDocument');
64 }; 68 };
65 chrome.declarativeWebRequest.RedirectByRegEx = function(parameters) { 69 declarativeWebRequest.RedirectByRegEx = function(parameters) {
66 setupInstance(this, parameters, 'RedirectByRegEx'); 70 setupInstance(this, parameters, 'RedirectByRegEx');
67 }; 71 };
68 chrome.declarativeWebRequest.IgnoreRules = function(parameters) { 72 declarativeWebRequest.IgnoreRules = function(parameters) {
69 setupInstance(this, parameters, 'IgnoreRules'); 73 setupInstance(this, parameters, 'IgnoreRules');
70 }; 74 };
71 chrome.declarativeWebRequest.AddRequestCookie = function(parameters) { 75 declarativeWebRequest.AddRequestCookie = function(parameters) {
72 setupInstance(this, parameters, 'AddRequestCookie'); 76 setupInstance(this, parameters, 'AddRequestCookie');
73 }; 77 };
74 chrome.declarativeWebRequest.AddResponseCookie = function(parameters) { 78 declarativeWebRequest.AddResponseCookie = function(parameters) {
75 setupInstance(this, parameters, 'AddResponseCookie'); 79 setupInstance(this, parameters, 'AddResponseCookie');
76 }; 80 };
77 chrome.declarativeWebRequest.EditRequestCookie = function(parameters) { 81 declarativeWebRequest.EditRequestCookie = function(parameters) {
78 setupInstance(this, parameters, 'EditRequestCookie'); 82 setupInstance(this, parameters, 'EditRequestCookie');
79 }; 83 };
80 chrome.declarativeWebRequest.EditResponseCookie = function(parameters) { 84 declarativeWebRequest.EditResponseCookie = function(parameters) {
81 setupInstance(this, parameters, 'EditResponseCookie'); 85 setupInstance(this, parameters, 'EditResponseCookie');
82 }; 86 };
83 chrome.declarativeWebRequest.RemoveRequestCookie = function(parameters) { 87 declarativeWebRequest.RemoveRequestCookie = function(parameters) {
84 setupInstance(this, parameters, 'RemoveRequestCookie'); 88 setupInstance(this, parameters, 'RemoveRequestCookie');
85 }; 89 };
86 chrome.declarativeWebRequest.RemoveResponseCookie = function(parameters) { 90 declarativeWebRequest.RemoveResponseCookie = function(parameters) {
87 setupInstance(this, parameters, 'RemoveResponseCookie'); 91 setupInstance(this, parameters, 'RemoveResponseCookie');
88 }; 92 };
89 chrome.declarativeWebRequest.SendMessageToExtension = function(parameters) { 93 declarativeWebRequest.SendMessageToExtension = function(parameters) {
90 setupInstance(this, parameters, 'SendMessageToExtension'); 94 setupInstance(this, parameters, 'SendMessageToExtension');
91 }; 95 };
92 }); 96 });
97
98 exports.binding = binding.generate();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698