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

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

Issue 17451011: Make the externally connectable browser test clobber all of the builtins, (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 6 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 // ----------------------------------------------------------------------------- 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 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 addType(this, typeOrTypeList); 160 addType(this, typeOrTypeList);
161 } 161 }
162 } 162 }
163 163
164 /** 164 /**
165 * Returns a list of strings of the types that this schema accepts. 165 * Returns a list of strings of the types that this schema accepts.
166 */ 166 */
167 JSONSchemaValidator.prototype.getAllTypesForSchema = function(schema) { 167 JSONSchemaValidator.prototype.getAllTypesForSchema = function(schema) {
168 var schemaTypes = []; 168 var schemaTypes = [];
169 if (schema.type) 169 if (schema.type)
170 schemaTypes.push(schema.type); 170 $Array.push(schemaTypes, schema.type);
171 if (schema.choices) { 171 if (schema.choices) {
172 for (var i = 0; i < schema.choices.length; i++) { 172 for (var i = 0; i < schema.choices.length; i++) {
173 var choiceTypes = this.getAllTypesForSchema(schema.choices[i]); 173 var choiceTypes = this.getAllTypesForSchema(schema.choices[i]);
174 schemaTypes = schemaTypes.concat(choiceTypes); 174 schemaTypes = $Array.concat(schemaTypes, choiceTypes);
175 } 175 }
176 } 176 }
177 var ref = schema['$ref']; 177 var ref = schema['$ref'];
178 if (ref) { 178 if (ref) {
179 var type = this.getOrAddType(ref); 179 var type = this.getOrAddType(ref);
180 CHECK(type, 'Could not find type ' + ref); 180 CHECK(type, 'Could not find type ' + ref);
181 schemaTypes = schemaTypes.concat(this.getAllTypesForSchema(type)); 181 schemaTypes = $Array.concat(schemaTypes, this.getAllTypesForSchema(type));
182 } 182 }
183 return schemaTypes; 183 return schemaTypes;
184 }; 184 };
185 185
186 JSONSchemaValidator.prototype.getOrAddType = function(typeName) { 186 JSONSchemaValidator.prototype.getOrAddType = function(typeName) {
187 if (!this.types[typeName]) 187 if (!this.types[typeName])
188 this.types[typeName] = loadTypeSchema(typeName); 188 this.types[typeName] = loadTypeSchema(typeName);
189 return this.types[typeName]; 189 return this.types[typeName];
190 }; 190 };
191 191
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 JSONSchemaValidator.prototype.validateObject = 334 JSONSchemaValidator.prototype.validateObject =
335 function(instance, schema, path) { 335 function(instance, schema, path) {
336 if (schema.properties) { 336 if (schema.properties) {
337 for (var prop in schema.properties) { 337 for (var prop in schema.properties) {
338 // It is common in JavaScript to add properties to Object.prototype. This 338 // It is common in JavaScript to add properties to Object.prototype. This
339 // check prevents such additions from being interpreted as required 339 // check prevents such additions from being interpreted as required
340 // schema properties. 340 // schema properties.
341 // TODO(aa): If it ever turns out that we actually want this to work, 341 // TODO(aa): If it ever turns out that we actually want this to work,
342 // there are other checks we could put here, like requiring that schema 342 // there are other checks we could put here, like requiring that schema
343 // properties be objects that have a 'type' property. 343 // properties be objects that have a 'type' property.
344 if (!schema.properties.hasOwnProperty(prop)) 344 if (!$Object.hasOwnProperty(schema.properties, prop))
345 continue; 345 continue;
346 346
347 var propPath = path ? path + "." + prop : prop; 347 var propPath = path ? path + "." + prop : prop;
348 if (schema.properties[prop] == undefined) { 348 if (schema.properties[prop] == undefined) {
349 this.addError(propPath, "invalidPropertyType"); 349 this.addError(propPath, "invalidPropertyType");
350 } else if (prop in instance && !isOptionalValue(instance[prop])) { 350 } else if (prop in instance && !isOptionalValue(instance[prop])) {
351 this.validate(instance[prop], schema.properties[prop], propPath); 351 this.validate(instance[prop], schema.properties[prop], propPath);
352 } else if (!schema.properties[prop].optional) { 352 } else if (!schema.properties[prop].optional) {
353 this.addError(propPath, "propertyRequired"); 353 this.addError(propPath, "propertyRequired");
354 } 354 }
(...skipping 15 matching lines...) Expand all
370 } 370 }
371 371
372 // By default, additional properties are not allowed on instance objects. This 372 // By default, additional properties are not allowed on instance objects. This
373 // can be overridden by setting the additionalProperties property to a schema 373 // can be overridden by setting the additionalProperties property to a schema
374 // which any additional properties must validate against. 374 // which any additional properties must validate against.
375 for (var prop in instance) { 375 for (var prop in instance) {
376 if (schema.properties && prop in schema.properties) 376 if (schema.properties && prop in schema.properties)
377 continue; 377 continue;
378 378
379 // Any properties inherited through the prototype are ignored. 379 // Any properties inherited through the prototype are ignored.
380 if (!instance.hasOwnProperty(prop)) 380 if (!$Object.hasOwnProperty(instance, prop))
381 continue; 381 continue;
382 382
383 var propPath = path ? path + "." + prop : prop; 383 var propPath = path ? path + "." + prop : prop;
384 if (schema.additionalProperties) 384 if (schema.additionalProperties)
385 this.validate(instance[prop], schema.additionalProperties, propPath); 385 this.validate(instance[prop], schema.additionalProperties, propPath);
386 else 386 else
387 this.addError(propPath, "unexpectedProperty"); 387 this.addError(propPath, "unexpectedProperty");
388 } 388 }
389 }; 389 };
390 390
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 return false; 495 return false;
496 } 496 }
497 }; 497 };
498 498
499 /** 499 /**
500 * Adds an error message. |key| is an index into the |messages| object. 500 * Adds an error message. |key| is an index into the |messages| object.
501 * |replacements| is an array of values to replace '*' characters in the 501 * |replacements| is an array of values to replace '*' characters in the
502 * message. 502 * message.
503 */ 503 */
504 JSONSchemaValidator.prototype.addError = function(path, key, replacements) { 504 JSONSchemaValidator.prototype.addError = function(path, key, replacements) {
505 this.errors.push({ 505 $Array.push(this.errors, {
506 path: path, 506 path: path,
507 message: JSONSchemaValidator.formatError(key, replacements) 507 message: JSONSchemaValidator.formatError(key, replacements)
508 }); 508 });
509 }; 509 };
510 510
511 /** 511 /**
512 * Resets errors to an empty list so you can call 'validate' again. 512 * Resets errors to an empty list so you can call 'validate' again.
513 */ 513 */
514 JSONSchemaValidator.prototype.resetErrors = function() { 514 JSONSchemaValidator.prototype.resetErrors = function() {
515 this.errors = []; 515 this.errors = [];
516 }; 516 };
517 517
518 exports.JSONSchemaValidator = JSONSchemaValidator; 518 exports.JSONSchemaValidator = JSONSchemaValidator;
OLDNEW
« no previous file with comments | « chrome/renderer/resources/extensions/image_util.js ('k') | chrome/renderer/resources/extensions/last_error.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698