| Index: chrome/browser/chromeos/network_settings/onc_validator.h | 
| diff --git a/chrome/browser/chromeos/network_settings/onc_validator.h b/chrome/browser/chromeos/network_settings/onc_validator.h | 
| index cee5d07e4a242356c681ab19e96253e27375dc90..2859e96899274ecb9c2a628ca917bdc962485afe 100644 | 
| --- a/chrome/browser/chromeos/network_settings/onc_validator.h | 
| +++ b/chrome/browser/chromeos/network_settings/onc_validator.h | 
| @@ -5,7 +5,12 @@ | 
| #ifndef CHROME_BROWSER_CHROMEOS_NETWORK_SETTINGS_ONC_VALIDATOR_H_ | 
| #define CHROME_BROWSER_CHROMEOS_NETWORK_SETTINGS_ONC_VALIDATOR_H_ | 
|  | 
| +#include <sstream> | 
| +#include <vector> | 
| + | 
| #include "base/memory/scoped_ptr.h" | 
| +#include "base/memory/scoped_vector.h" | 
| +#include "base/string16.h" | 
| #include "chrome/browser/chromeos/network_settings/onc_mapper.h" | 
|  | 
| namespace base { | 
| @@ -58,15 +63,17 @@ class Validator : public Mapper { | 
| // For details, see the comment at the Constructor. | 
| scoped_ptr<base::DictionaryValue> ValidateAndRepairObject( | 
| const OncValueSignature* object_signature, | 
| -      const base::DictionaryValue& onc_object); | 
| +      const base::DictionaryValue& onc_object, | 
| +      std::string* messages); | 
|  | 
| private: | 
| -  // Overriden from Mapper: | 
| +  // Overridden from Mapper: | 
| // Compare |onc_value|s type with |onc_type| and validate/repair according to | 
| // |signature|. On error returns NULL. | 
| virtual scoped_ptr<base::Value> MapValue( | 
| const OncValueSignature& signature, | 
| -    const base::Value& onc_value) OVERRIDE; | 
| +    const base::Value& onc_value, | 
| +    bool* error) OVERRIDE; | 
|  | 
| // Dispatch to the right validation function according to | 
| // |signature|. Iterates over all fields and recursively validates/repairs | 
| @@ -74,7 +81,23 @@ class Validator : public Mapper { | 
| // repaired dictionary. On error returns NULL. | 
| virtual scoped_ptr<base::DictionaryValue> MapObject( | 
| const OncValueSignature& signature, | 
| -      const base::DictionaryValue& onc_object) OVERRIDE; | 
| +      const base::DictionaryValue& onc_object, | 
| +      bool* error) OVERRIDE; | 
| + | 
| +  // Pushes/pops the |field_name| to |path_|, otherwise like |Mapper::MapField|. | 
| +  virtual scoped_ptr<base::Value> MapField( | 
| +      const std::string& field_name, | 
| +      const OncValueSignature& object_signature, | 
| +      const base::Value& onc_value, | 
| +      bool* found_unknown_field, | 
| +      bool* error) OVERRIDE; | 
| + | 
| +  // Pushes/pops the index to |path_|, otherwise like |Mapper::MapEntry|. | 
| +  virtual scoped_ptr<base::Value> MapEntry( | 
| +      int index, | 
| +      const OncValueSignature& signature, | 
| +      const base::Value& onc_value, | 
| +      bool* error) OVERRIDE; | 
|  | 
| // This is the default validation of objects/dictionaries. Validates | 
| // |onc_object| according to |object_signature|. |result| must point to a | 
| @@ -90,6 +113,10 @@ class Validator : public Mapper { | 
| const OncValueSignature& object_signature, | 
| base::DictionaryValue* result); | 
|  | 
| +  bool ValidateToplevelConfiguration( | 
| +      const base::DictionaryValue& onc_object, | 
| +      base::DictionaryValue* result); | 
| + | 
| bool ValidateNetworkConfiguration( | 
| const base::DictionaryValue& onc_object, | 
| base::DictionaryValue* result); | 
| @@ -138,11 +165,36 @@ class Validator : public Mapper { | 
| const base::DictionaryValue& onc_object, | 
| base::DictionaryValue* result); | 
|  | 
| +  bool FieldExistsAndHasNoValueOf(const base::DictionaryValue& object, | 
| +                                  const std::string &field_name, | 
| +                                  const char** valid_values); | 
| + | 
| +  bool FieldExistsAndIsNotInRange(const base::DictionaryValue& object, | 
| +                                  const std::string &field_name, | 
| +                                  int lower_bound, | 
| +                                  int upper_bound); | 
| + | 
| +  bool RequireField(const base::DictionaryValue& dict, const std::string& key); | 
| + | 
| +  void AddWarning(const std::string& msg); | 
| +  void AddError(const std::string& msg); | 
| +  void AddMessage(bool is_error, const std::string& msg); | 
| + | 
| +  std::string JoinMessages(); | 
| + | 
| const bool error_on_unknown_field_; | 
| const bool error_on_wrong_recommended_; | 
| const bool error_on_missing_field_; | 
| const bool managed_onc_; | 
|  | 
| +  // The path of field names and indices to the current value. Indices | 
| +  // are stored as strings in decimal notation. | 
| +  std::vector<std::string> path_; | 
| + | 
| +  // A list of warning/error messages accumulated up to the current entry. | 
| +  // ScopedVector<std::ostringstream> messages_; | 
| +  std::vector<std::string> messages_; | 
| + | 
| DISALLOW_COPY_AND_ASSIGN(Validator); | 
| }; | 
|  | 
|  |