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

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: more progress Created 7 years, 11 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 bindings for the declarativeWebRequest API.
6 6
7 var Bindings = require('schema_binding_generator').Bindings;
8 var bindings = new Bindings('declarativeWebRequest');
9
7 var chromeHidden = requireNative('chrome_hidden').GetChromeHidden(); 10 var chromeHidden = requireNative('chrome_hidden').GetChromeHidden();
11 var chrome = requireNative('chrome').GetChrome();
8 var utils = require('utils'); 12 var utils = require('utils');
9 var validate = require('schemaUtils').validate; 13 var validate = require('schemaUtils').validate;
10 14
11 chromeHidden.registerCustomHook('declarativeWebRequest', function(api) { 15 bindings.registerCustomHook(function(api) {
16 declarativeWebRequest = api.compiledApi;
17
12 // Returns the schema definition of type |typeId| defined in |namespace|. 18 // Returns the schema definition of type |typeId| defined in |namespace|.
13 function getSchema(namespace, typeId) { 19 function getSchema(typeId) {
14 var apiSchema = utils.lookup(api.apiDefinitions, 'namespace', namespace); 20 return utils.lookup(api.schema.types,
15 var resultSchema = utils.lookup( 21 'id',
16 apiSchema.types, 'id', namespace + '.' + typeId); 22 'declarativeWebRequest.' + typeId);
17 return resultSchema;
18 } 23 }
19 24
20 // Helper function for the constructor of concrete datatypes of the 25 // Helper function for the constructor of concrete datatypes of the
21 // declarative webRequest API. 26 // declarative webRequest API.
22 // Makes sure that |this| contains the union of parameters and 27 // Makes sure that |this| contains the union of parameters and
23 // {'instanceType': 'declarativeWebRequest.' + typeId} and validates the 28 // {'instanceType': 'declarativeWebRequest.' + typeId} and validates the
24 // generated union dictionary against the schema for |typeId|. 29 // generated union dictionary against the schema for |typeId|.
25 function setupInstance(instance, parameters, typeId) { 30 function setupInstance(instance, parameters, typeId) {
26 for (var key in parameters) { 31 for (var key in parameters) {
27 if (parameters.hasOwnProperty(key)) { 32 if (parameters.hasOwnProperty(key)) {
28 instance[key] = parameters[key]; 33 instance[key] = parameters[key];
29 } 34 }
30 } 35 }
31 instance.instanceType = 'declarativeWebRequest.' + typeId; 36 instance.instanceType = 'declarativeWebRequest.' + typeId;
32 var schema = getSchema('declarativeWebRequest', typeId); 37 var schema = getSchema(typeId);
33 validate([instance], [schema]); 38 validate([instance], [schema]);
34 } 39 }
35 40
36 // Setup all data types for the declarative webRequest API. 41 // Setup all data types for the declarative webRequest API.
37 chrome.declarativeWebRequest.RequestMatcher = function(parameters) { 42 declarativeWebRequest.RequestMatcher = function(parameters) {
38 setupInstance(this, parameters, 'RequestMatcher'); 43 setupInstance(this, parameters, 'RequestMatcher');
39 }; 44 };
40 chrome.declarativeWebRequest.CancelRequest = function(parameters) { 45 declarativeWebRequest.CancelRequest = function(parameters) {
41 setupInstance(this, parameters, 'CancelRequest'); 46 setupInstance(this, parameters, 'CancelRequest');
42 }; 47 };
43 chrome.declarativeWebRequest.RedirectRequest = function(parameters) { 48 declarativeWebRequest.RedirectRequest = function(parameters) {
44 setupInstance(this, parameters, 'RedirectRequest'); 49 setupInstance(this, parameters, 'RedirectRequest');
45 }; 50 };
46 chrome.declarativeWebRequest.SetRequestHeader = function(parameters) { 51 declarativeWebRequest.SetRequestHeader = function(parameters) {
47 setupInstance(this, parameters, 'SetRequestHeader'); 52 setupInstance(this, parameters, 'SetRequestHeader');
48 }; 53 };
49 chrome.declarativeWebRequest.RemoveRequestHeader = function(parameters) { 54 declarativeWebRequest.RemoveRequestHeader = function(parameters) {
50 setupInstance(this, parameters, 'RemoveRequestHeader'); 55 setupInstance(this, parameters, 'RemoveRequestHeader');
51 }; 56 };
52 chrome.declarativeWebRequest.AddResponseHeader = function(parameters) { 57 declarativeWebRequest.AddResponseHeader = function(parameters) {
53 setupInstance(this, parameters, 'AddResponseHeader'); 58 setupInstance(this, parameters, 'AddResponseHeader');
54 }; 59 };
55 chrome.declarativeWebRequest.RemoveResponseHeader = function(parameters) { 60 declarativeWebRequest.RemoveResponseHeader = function(parameters) {
56 setupInstance(this, parameters, 'RemoveResponseHeader'); 61 setupInstance(this, parameters, 'RemoveResponseHeader');
57 }; 62 };
58 chrome.declarativeWebRequest.RedirectToTransparentImage = 63 declarativeWebRequest.RedirectToTransparentImage =
59 function(parameters) { 64 function(parameters) {
60 setupInstance(this, parameters, 'RedirectToTransparentImage'); 65 setupInstance(this, parameters, 'RedirectToTransparentImage');
61 }; 66 };
62 chrome.declarativeWebRequest.RedirectToEmptyDocument = function(parameters) { 67 declarativeWebRequest.RedirectToEmptyDocument = function(parameters) {
63 setupInstance(this, parameters, 'RedirectToEmptyDocument'); 68 setupInstance(this, parameters, 'RedirectToEmptyDocument');
64 }; 69 };
65 chrome.declarativeWebRequest.RedirectByRegEx = function(parameters) { 70 declarativeWebRequest.RedirectByRegEx = function(parameters) {
66 setupInstance(this, parameters, 'RedirectByRegEx'); 71 setupInstance(this, parameters, 'RedirectByRegEx');
67 }; 72 };
68 chrome.declarativeWebRequest.IgnoreRules = function(parameters) { 73 declarativeWebRequest.IgnoreRules = function(parameters) {
69 setupInstance(this, parameters, 'IgnoreRules'); 74 setupInstance(this, parameters, 'IgnoreRules');
70 }; 75 };
71 chrome.declarativeWebRequest.AddRequestCookie = function(parameters) { 76 declarativeWebRequest.AddRequestCookie = function(parameters) {
72 setupInstance(this, parameters, 'AddRequestCookie'); 77 setupInstance(this, parameters, 'AddRequestCookie');
73 }; 78 };
74 chrome.declarativeWebRequest.AddResponseCookie = function(parameters) { 79 declarativeWebRequest.AddResponseCookie = function(parameters) {
75 setupInstance(this, parameters, 'AddResponseCookie'); 80 setupInstance(this, parameters, 'AddResponseCookie');
76 }; 81 };
77 chrome.declarativeWebRequest.EditRequestCookie = function(parameters) { 82 declarativeWebRequest.EditRequestCookie = function(parameters) {
78 setupInstance(this, parameters, 'EditRequestCookie'); 83 setupInstance(this, parameters, 'EditRequestCookie');
79 }; 84 };
80 chrome.declarativeWebRequest.EditResponseCookie = function(parameters) { 85 declarativeWebRequest.EditResponseCookie = function(parameters) {
81 setupInstance(this, parameters, 'EditResponseCookie'); 86 setupInstance(this, parameters, 'EditResponseCookie');
82 }; 87 };
83 chrome.declarativeWebRequest.RemoveRequestCookie = function(parameters) { 88 declarativeWebRequest.RemoveRequestCookie = function(parameters) {
84 setupInstance(this, parameters, 'RemoveRequestCookie'); 89 setupInstance(this, parameters, 'RemoveRequestCookie');
85 }; 90 };
86 chrome.declarativeWebRequest.RemoveResponseCookie = function(parameters) { 91 declarativeWebRequest.RemoveResponseCookie = function(parameters) {
87 setupInstance(this, parameters, 'RemoveResponseCookie'); 92 setupInstance(this, parameters, 'RemoveResponseCookie');
88 }; 93 };
89 chrome.declarativeWebRequest.SendMessageToExtension = function(parameters) { 94 declarativeWebRequest.SendMessageToExtension = function(parameters) {
90 setupInstance(this, parameters, 'SendMessageToExtension'); 95 setupInstance(this, parameters, 'SendMessageToExtension');
91 }; 96 };
92 }); 97 });
98
99 exports.bindings = bindings.generate();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698