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

Side by Side Diff: components/policy/core/common/schema.h

Issue 139853013: Improve error message display for Schema::Validate() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@expand-policy-schema-3
Patch Set: fix comments Created 6 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 #ifndef COMPONENTS_POLICY_CORE_COMMON_SCHEMA_H_ 5 #ifndef COMPONENTS_POLICY_CORE_COMMON_SCHEMA_H_
6 #define COMPONENTS_POLICY_CORE_COMMON_SCHEMA_H_ 6 #define COMPONENTS_POLICY_CORE_COMMON_SCHEMA_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 static Schema Parse(const std::string& schema, std::string* error); 72 static Schema Parse(const std::string& schema, std::string* error);
73 73
74 // Returns true if this Schema is valid. Schemas returned by the methods below 74 // Returns true if this Schema is valid. Schemas returned by the methods below
75 // may be invalid, and in those cases the other methods must not be used. 75 // may be invalid, and in those cases the other methods must not be used.
76 bool valid() const { return node_ != NULL; } 76 bool valid() const { return node_ != NULL; }
77 77
78 base::Value::Type type() const; 78 base::Value::Type type() const;
79 79
80 // Validate |value| against current schema, |strategy| is the strategy to 80 // Validate |value| against current schema, |strategy| is the strategy to
81 // handle unknown properties or invalid values. Allowed errors will be 81 // handle unknown properties or invalid values. Allowed errors will be
82 // ignored. If |value| don't conform the schema, false will be returned and 82 // ignored. |error_path| and |error| will contain the last error location and
83 // |error| will contain the detailed reason. 83 // detailed message if |value| doesn't strictly conform to the schema. If
84 // |value| doesn't conform to the schema even within the allowance of
85 // |strategy|, false will be returned and |error_path| and |error| will
86 // contain the corresponding error that caused the failure. |error_path| can
87 // be NULL and in that case no error path will be returned.
84 bool Validate(const base::Value& value, 88 bool Validate(const base::Value& value,
85 SchemaOnErrorStrategy strategy, 89 SchemaOnErrorStrategy strategy,
90 std::string* error_path,
86 std::string* error) const; 91 std::string* error) const;
87 92
88 // Validate |value| against current schema, |strategy| is the strategy to 93 // Same as Validate() but drop values with errors instead of ignoring them.
89 // handle unknown properties or invalid values. Allowed errors will be
90 // dropped in place. If |value| don't conform the schema, false will be
91 // returned and |error| will contain the detailed message.
92 bool Normalize(base::Value* value, 94 bool Normalize(base::Value* value,
93 SchemaOnErrorStrategy strategy, 95 SchemaOnErrorStrategy strategy,
96 std::string* error_path,
94 std::string* error) const; 97 std::string* error) const;
95 98
96 // Used to iterate over the known properties of TYPE_DICTIONARY schemas. 99 // Used to iterate over the known properties of TYPE_DICTIONARY schemas.
97 class POLICY_EXPORT Iterator { 100 class POLICY_EXPORT Iterator {
98 public: 101 public:
99 Iterator(const scoped_refptr<const InternalStorage>& storage, 102 Iterator(const scoped_refptr<const InternalStorage>& storage,
100 const internal::PropertiesNode* node); 103 const internal::PropertiesNode* node);
101 Iterator(const Iterator& iterator); 104 Iterator(const Iterator& iterator);
102 ~Iterator(); 105 ~Iterator();
103 106
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 // otherwise invalid memory will be read. A CHECK is currently enforcing this. 148 // otherwise invalid memory will be read. A CHECK is currently enforcing this.
146 Schema GetItems() const; 149 Schema GetItems() const;
147 150
148 private: 151 private:
149 // Builds a schema pointing to the inner structure of |storage|, 152 // Builds a schema pointing to the inner structure of |storage|,
150 // rooted at |node|. 153 // rooted at |node|.
151 Schema(const scoped_refptr<const InternalStorage>& storage, 154 Schema(const scoped_refptr<const InternalStorage>& storage,
152 const internal::SchemaNode* node); 155 const internal::SchemaNode* node);
153 156
154 bool ValidateIntegerRestriction(int index, int value) const; 157 bool ValidateIntegerRestriction(int index, int value) const;
155 bool ValidateStringRestriction(int index, const char *str) const; 158 bool ValidateStringRestriction(int index, const char* str) const;
156 159
157 scoped_refptr<const InternalStorage> storage_; 160 scoped_refptr<const InternalStorage> storage_;
158 const internal::SchemaNode* node_; 161 const internal::SchemaNode* node_;
159 }; 162 };
160 163
161 } // namespace policy 164 } // namespace policy
162 165
163 #endif // COMPONENTS_POLICY_CORE_COMMON_SCHEMA_H_ 166 #endif // COMPONENTS_POLICY_CORE_COMMON_SCHEMA_H_
OLDNEW
« no previous file with comments | « no previous file | components/policy/core/common/schema.cc » ('j') | components/policy/core/common/schema_unittest.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698