| 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);
|
| };
|
|
|
|
|