OLD | NEW |
---|---|
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 // Routines used to validate and normalize arguments. | 5 // Routines used to validate and normalize arguments. |
6 | 6 |
7 var chromeHidden = requireNative('chrome_hidden').GetChromeHidden(); | 7 var chromeHidden = requireNative('chrome_hidden').GetChromeHidden(); |
8 var chrome = requireNative('chrome').GetChrome(); | 8 var chrome = requireNative('chrome').GetChrome(); |
9 var loadRefType = require('utils').loadRefType; | |
9 | 10 |
10 // TODO(benwells): unit test this file. | 11 // TODO(benwells): unit test this file. |
11 // JSONSchemaValidator is not loaded in unit tests. | 12 // JSONSchemaValidator is not loaded in unit tests. |
12 var validate; | 13 var validate; |
13 if (chromeHidden.JSONSchemaValidator) { | 14 if (chromeHidden.JSONSchemaValidator) { |
14 var schemaValidator = new chromeHidden.JSONSchemaValidator(); | 15 var schemaValidator = new chromeHidden.JSONSchemaValidator(); |
15 | 16 |
16 // Validate arguments. | 17 // Validate arguments. |
17 validate = function(args, parameterSchemas) { | 18 validate = function(args, parameterSchemas) { |
18 if (args.length > parameterSchemas.length) | 19 if (args.length > parameterSchemas.length) |
(...skipping 24 matching lines...) Expand all Loading... | |
43 } | 44 } |
44 }; | 45 }; |
45 } else { | 46 } else { |
46 validate = function() {}; | 47 validate = function() {}; |
47 } | 48 } |
48 | 49 |
49 // Generate all possible signatures for a given API function. | 50 // Generate all possible signatures for a given API function. |
50 function getSignatures(parameterSchemas) { | 51 function getSignatures(parameterSchemas) { |
51 if (parameterSchemas.length === 0) | 52 if (parameterSchemas.length === 0) |
52 return [[]]; | 53 return [[]]; |
54 for (var i = 0; i < parameterSchemas.length; i++) { | |
55 if ('$ref' in parameterSchemas[i]) { | |
56 var type = loadRefType(parameterSchemas[i]['$ref']); | |
57 type.name = parameterSchemas[i].name; | |
58 parameterSchemas[i] = type; | |
59 } | |
60 } | |
not at google - send to devlin
2013/03/21 00:01:13
is this necessary, the schema validator knows how
cduvall
2013/03/21 00:59:51
Hmm, it seemed necessary when I did it, but now I
| |
53 var signatures = []; | 61 var signatures = []; |
54 var remaining = getSignatures(parameterSchemas.slice(1)); | 62 var remaining = getSignatures(parameterSchemas.slice(1)); |
55 for (var i = 0; i < remaining.length; i++) | 63 for (var i = 0; i < remaining.length; i++) |
56 signatures.push([parameterSchemas[0]].concat(remaining[i])) | 64 signatures.push([parameterSchemas[0]].concat(remaining[i])); |
57 if (parameterSchemas[0].optional) | 65 if (parameterSchemas[0].optional) |
58 return signatures.concat(remaining); | 66 return signatures.concat(remaining); |
59 return signatures; | 67 return signatures; |
60 }; | 68 }; |
61 | 69 |
62 // Return true if arguments match a given signature's schema. | 70 // Return true if arguments match a given signature's schema. |
63 function argumentsMatchSignature(args, candidateSignature) { | 71 function argumentsMatchSignature(args, candidateSignature) { |
64 if (args.length != candidateSignature.length) | 72 if (args.length != candidateSignature.length) |
65 return false; | 73 return false; |
66 for (var i = 0; i < candidateSignature.length; i++) { | 74 for (var i = 0; i < candidateSignature.length; i++) { |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
154 return true; | 162 return true; |
155 } | 163 } |
156 } | 164 } |
157 return false; | 165 return false; |
158 }; | 166 }; |
159 | 167 |
160 exports.isFunctionSignatureAmbiguous = isFunctionSignatureAmbiguous; | 168 exports.isFunctionSignatureAmbiguous = isFunctionSignatureAmbiguous; |
161 exports.normalizeArgumentsAndValidate = normalizeArgumentsAndValidate; | 169 exports.normalizeArgumentsAndValidate = normalizeArgumentsAndValidate; |
162 exports.schemaValidator = schemaValidator; | 170 exports.schemaValidator = schemaValidator; |
163 exports.validate = validate; | 171 exports.validate = validate; |
OLD | NEW |