Index: chrome/common/json_schema/json_schema_validator.h |
diff --git a/chrome/common/json_schema/json_schema_validator.h b/chrome/common/json_schema/json_schema_validator.h |
deleted file mode 100644 |
index 3b42444c64296ee52ee3f148ee39cac1dc693423..0000000000000000000000000000000000000000 |
--- a/chrome/common/json_schema/json_schema_validator.h |
+++ /dev/null |
@@ -1,235 +0,0 @@ |
-// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef CHROME_COMMON_JSON_SCHEMA_JSON_SCHEMA_VALIDATOR_H_ |
-#define CHROME_COMMON_JSON_SCHEMA_JSON_SCHEMA_VALIDATOR_H_ |
- |
-#include <map> |
-#include <string> |
-#include <vector> |
- |
-#include "base/basictypes.h" |
-#include "base/memory/scoped_ptr.h" |
- |
-namespace base { |
-class DictionaryValue; |
-class ListValue; |
-class StringValue; |
-class Value; |
-} |
- |
-//============================================================================== |
-// This class implements a subset of JSON Schema. |
-// See: http://www.json.com/json-schema-proposal/ for more details. |
-// |
-// There is also an older JavaScript implementation of the same functionality in |
-// chrome/renderer/resources/json_schema.js. |
-// |
-// The following features of JSON Schema are not implemented: |
-// - requires |
-// - unique |
-// - disallow |
-// - union types (but replaced with 'choices') |
-// - number.maxDecimal |
-// - string.pattern |
-// |
-// The following properties are not applicable to the interface exposed by |
-// this class: |
-// - options |
-// - readonly |
-// - title |
-// - description |
-// - format |
-// - default |
-// - transient |
-// - hidden |
-// |
-// There are also these departures from the JSON Schema proposal: |
-// - null counts as 'unspecified' for optional values |
-// - added the 'choices' property, to allow specifying a list of possible types |
-// for a value |
-// - by default an "object" typed schema does not allow additional properties. |
-// if present, "additionalProperties" is to be a schema against which all |
-// additional properties will be validated. |
-//============================================================================== |
-class JSONSchemaValidator { |
- public: |
- // Details about a validation error. |
- struct Error { |
- Error(); |
- |
- explicit Error(const std::string& message); |
- |
- Error(const std::string& path, const std::string& message); |
- |
- // The path to the location of the error in the JSON structure. |
- std::string path; |
- |
- // An english message describing the error. |
- std::string message; |
- }; |
- |
- // Error messages. |
- static const char kUnknownTypeReference[]; |
- static const char kInvalidChoice[]; |
- static const char kInvalidEnum[]; |
- static const char kObjectPropertyIsRequired[]; |
- static const char kUnexpectedProperty[]; |
- static const char kArrayMinItems[]; |
- static const char kArrayMaxItems[]; |
- static const char kArrayItemRequired[]; |
- static const char kStringMinLength[]; |
- static const char kStringMaxLength[]; |
- static const char kStringPattern[]; |
- static const char kNumberMinimum[]; |
- static const char kNumberMaximum[]; |
- static const char kInvalidType[]; |
- static const char kInvalidTypeIntegerNumber[]; |
- |
- // Classifies a Value as one of the JSON schema primitive types. |
- static std::string GetJSONSchemaType(const base::Value* value); |
- |
- // Utility methods to format error messages. The first method can have one |
- // wildcard represented by '*', which is replaced with s1. The second method |
- // can have two, which are replaced by s1 and s2. |
- static std::string FormatErrorMessage(const std::string& format, |
- const std::string& s1); |
- static std::string FormatErrorMessage(const std::string& format, |
- const std::string& s1, |
- const std::string& s2); |
- |
- // Verifies if |schema| is a valid JSON v3 schema. When this validation passes |
- // then |schema| is valid JSON that can be parsed into a DictionaryValue, |
- // and that DictionaryValue can be used to build a JSONSchemaValidator. |
- // Returns the parsed DictionaryValue when |schema| validated, otherwise |
- // returns NULL. In that case, |error| contains an error description. |
- static scoped_ptr<base::DictionaryValue> IsValidSchema( |
- const std::string& schema, |
- std::string* error); |
- |
- // Creates a validator for the specified schema. |
- // |
- // NOTE: This constructor assumes that |schema| is well formed and valid. |
- // Errors will result in CHECK at runtime; this constructor should not be used |
- // with untrusted schemas. |
- explicit JSONSchemaValidator(base::DictionaryValue* schema); |
- |
- // Creates a validator for the specified schema and user-defined types. Each |
- // type must be a valid JSONSchema type description with an additional "id" |
- // field. Schema objects in |schema| can refer to these types with the "$ref" |
- // property. |
- // |
- // NOTE: This constructor assumes that |schema| and |types| are well-formed |
- // and valid. Errors will result in CHECK at runtime; this constructor should |
- // not be used with untrusted schemas. |
- JSONSchemaValidator(base::DictionaryValue* schema, base::ListValue* types); |
- |
- ~JSONSchemaValidator(); |
- |
- // Whether the validator allows additional items for objects and lists, beyond |
- // those defined by their schema, by default. |
- // |
- // This setting defaults to false: all items in an instance list or object |
- // must be defined by the corresponding schema. |
- // |
- // This setting can be overridden on individual object and list schemas by |
- // setting the "additionalProperties" field. |
- bool default_allow_additional_properties() const { |
- return default_allow_additional_properties_; |
- } |
- |
- void set_default_allow_additional_properties(bool val) { |
- default_allow_additional_properties_ = val; |
- } |
- |
- // Returns any errors from the last call to to Validate(). |
- const std::vector<Error>& errors() const { |
- return errors_; |
- } |
- |
- // Validates a JSON value. Returns true if the instance is valid, false |
- // otherwise. If false is returned any errors are available from the errors() |
- // getter. |
- bool Validate(const base::Value* instance); |
- |
- private: |
- typedef std::map<std::string, const base::DictionaryValue*> TypeMap; |
- |
- // Each of the below methods handle a subset of the validation process. The |
- // path paramater is the path to |instance| from the root of the instance tree |
- // and is used in error messages. |
- |
- // Validates any instance node against any schema node. This is called for |
- // every node in the instance tree, and it just decides which of the more |
- // detailed methods to call. |
- void Validate(const base::Value* instance, |
- const base::DictionaryValue* schema, |
- const std::string& path); |
- |
- // Validates a node against a list of possible schemas. If any one of the |
- // schemas match, the node is valid. |
- void ValidateChoices(const base::Value* instance, |
- const base::ListValue* choices, |
- const std::string& path); |
- |
- // Validates a node against a list of exact primitive values, eg 42, "foobar". |
- void ValidateEnum(const base::Value* instance, |
- const base::ListValue* choices, |
- const std::string& path); |
- |
- // Validates a JSON object against an object schema node. |
- void ValidateObject(const base::DictionaryValue* instance, |
- const base::DictionaryValue* schema, |
- const std::string& path); |
- |
- // Validates a JSON array against an array schema node. |
- void ValidateArray(const base::ListValue* instance, |
- const base::DictionaryValue* schema, |
- const std::string& path); |
- |
- // Validates a JSON array against an array schema node configured to be a |
- // tuple. In a tuple, there is one schema node for each item expected in the |
- // array. |
- void ValidateTuple(const base::ListValue* instance, |
- const base::DictionaryValue* schema, |
- const std::string& path); |
- |
- // Validate a JSON string against a string schema node. |
- void ValidateString(const base::Value* instance, |
- const base::DictionaryValue* schema, |
- const std::string& path); |
- |
- // Validate a JSON number against a number schema node. |
- void ValidateNumber(const base::Value* instance, |
- const base::DictionaryValue* schema, |
- const std::string& path); |
- |
- // Validates that the JSON node |instance| has |expected_type|. |
- bool ValidateType(const base::Value* instance, |
- const std::string& expected_type, |
- const std::string& path); |
- |
- // Returns true if |schema| will allow additional items of any type. |
- bool SchemaAllowsAnyAdditionalItems( |
- const base::DictionaryValue* schema, |
- const base::DictionaryValue** addition_items_schema); |
- |
- // The root schema node. |
- base::DictionaryValue* schema_root_; |
- |
- // Map of user-defined name to type. |
- TypeMap types_; |
- |
- // Whether we allow additional properties on objects by default. This can be |
- // overridden by the allow_additional_properties flag on an Object schema. |
- bool default_allow_additional_properties_; |
- |
- // Errors accumulated since the last call to Validate(). |
- std::vector<Error> errors_; |
- |
- |
- DISALLOW_COPY_AND_ASSIGN(JSONSchemaValidator); |
-}; |
- |
-#endif // CHROME_COMMON_JSON_SCHEMA_JSON_SCHEMA_VALIDATOR_H_ |