| 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 // ----------------------------------------------------------------------------- | 5 // ----------------------------------------------------------------------------- |
| 6 // NOTE: If you change this file you need to touch renderer_resources.grd to | 6 // NOTE: If you change this file you need to touch renderer_resources.grd to |
| 7 // have your change take effect. | 7 // have your change take effect. |
| 8 // ----------------------------------------------------------------------------- | 8 // ----------------------------------------------------------------------------- |
| 9 | 9 |
| 10 //============================================================================== | 10 //============================================================================== |
| (...skipping 20 matching lines...) Expand all Loading... |
| 31 // There are also these departures from the JSON Schema proposal: | 31 // There are also these departures from the JSON Schema proposal: |
| 32 // - function and undefined types are supported | 32 // - function and undefined types are supported |
| 33 // - null counts as 'unspecified' for optional values | 33 // - null counts as 'unspecified' for optional values |
| 34 // - added the 'choices' property, to allow specifying a list of possible types | 34 // - added the 'choices' property, to allow specifying a list of possible types |
| 35 // for a value | 35 // for a value |
| 36 // - by default an "object" typed schema does not allow additional properties. | 36 // - by default an "object" typed schema does not allow additional properties. |
| 37 // if present, "additionalProperties" is to be a schema against which all | 37 // if present, "additionalProperties" is to be a schema against which all |
| 38 // additional properties will be validated. | 38 // additional properties will be validated. |
| 39 //============================================================================== | 39 //============================================================================== |
| 40 | 40 |
| 41 // TODO(cduvall): Make this file not depend on chromeHidden. | |
| 42 var chromeHidden = requireNative('chrome_hidden').GetChromeHidden(); | 41 var chromeHidden = requireNative('chrome_hidden').GetChromeHidden(); |
| 43 var loadRefDependency = require('utils').loadRefDependency; | |
| 44 | 42 |
| 45 function isInstanceOfClass(instance, className) { | 43 function isInstanceOfClass(instance, className) { |
| 46 if (!instance) | 44 if (!instance) |
| 47 return false; | 45 return false; |
| 48 | 46 |
| 49 if (Object.prototype.toString.call(instance) == "[object " + className + "]") | 47 if (Object.prototype.toString.call(instance) == "[object " + className + "]") |
| 50 return true; | 48 return true; |
| 51 | 49 |
| 52 return isInstanceOfClass(Object.getPrototypeOf(instance), className); | 50 return isInstanceOfClass(Object.getPrototypeOf(instance), className); |
| 53 } | 51 } |
| (...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 235 this.types[schema.id] = schema; | 233 this.types[schema.id] = schema; |
| 236 | 234 |
| 237 // If the schema has an extends property, the instance must validate against | 235 // If the schema has an extends property, the instance must validate against |
| 238 // that schema too. | 236 // that schema too. |
| 239 if (schema.extends) | 237 if (schema.extends) |
| 240 this.validate(instance, schema.extends, path); | 238 this.validate(instance, schema.extends, path); |
| 241 | 239 |
| 242 // If the schema has a $ref property, the instance must validate against | 240 // If the schema has a $ref property, the instance must validate against |
| 243 // that schema too. It must be present in this.types to be referenced. | 241 // that schema too. It must be present in this.types to be referenced. |
| 244 if (schema["$ref"]) { | 242 if (schema["$ref"]) { |
| 245 loadRefDependency(schema["$ref"]); | |
| 246 if (!this.types[schema["$ref"]]) | 243 if (!this.types[schema["$ref"]]) |
| 247 this.addError(path, "unknownSchemaReference", [ schema["$ref"] ]); | 244 this.addError(path, "unknownSchemaReference", [ schema["$ref"] ]); |
| 248 else | 245 else |
| 249 this.validate(instance, this.types[schema["$ref"]], path) | 246 this.validate(instance, this.types[schema["$ref"]], path) |
| 250 } | 247 } |
| 251 | 248 |
| 252 // If the schema has a choices property, the instance must validate against at | 249 // If the schema has a choices property, the instance must validate against at |
| 253 // least one of the items in that array. | 250 // least one of the items in that array. |
| 254 if (schema.choices) { | 251 if (schema.choices) { |
| 255 this.validateChoices(instance, schema, path); | 252 this.validateChoices(instance, schema, path); |
| (...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 504 message: chromeHidden.JSONSchemaValidator.formatError(key, replacements) | 501 message: chromeHidden.JSONSchemaValidator.formatError(key, replacements) |
| 505 }); | 502 }); |
| 506 }; | 503 }; |
| 507 | 504 |
| 508 /** | 505 /** |
| 509 * Resets errors to an empty list so you can call 'validate' again. | 506 * Resets errors to an empty list so you can call 'validate' again. |
| 510 */ | 507 */ |
| 511 chromeHidden.JSONSchemaValidator.prototype.resetErrors = function() { | 508 chromeHidden.JSONSchemaValidator.prototype.resetErrors = function() { |
| 512 this.errors = []; | 509 this.errors = []; |
| 513 }; | 510 }; |
| OLD | NEW |