summaryrefslogtreecommitdiffstats
path: root/chromeos/network/onc/onc_mapper.h
diff options
context:
space:
mode:
authorpneubeck@chromium.org <pneubeck@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-16 20:41:46 +0000
committerpneubeck@chromium.org <pneubeck@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-16 20:41:46 +0000
commit6d0f4901873c0a61775dfcb1526e572faf9bac64 (patch)
treebce215e107fc45d6953a3f91c3f2de24ddeb6ba5 /chromeos/network/onc/onc_mapper.h
parent62f18e79afcf0a1013f3754f5a603a86f79a5ccf (diff)
downloadchromium_src-6d0f4901873c0a61775dfcb1526e572faf9bac64.zip
chromium_src-6d0f4901873c0a61775dfcb1526e572faf9bac64.tar.gz
chromium_src-6d0f4901873c0a61775dfcb1526e572faf9bac64.tar.bz2
Extending ONC validator's logging. Completing toplevel validation.
Adding also more validation tests. The logging is in line with https://codereview.chromium.org/11299236/. BUG=162802 TEST=Unit tests. TBR=stevenjb@chromium.org,eroman@chromium.org (whitespace change in net_interals.cc) Review URL: https://chromiumcodereview.appspot.com/11469026 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@173393 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chromeos/network/onc/onc_mapper.h')
-rw-r--r--chromeos/network/onc/onc_mapper.h72
1 files changed, 40 insertions, 32 deletions
diff --git a/chromeos/network/onc/onc_mapper.h b/chromeos/network/onc/onc_mapper.h
index e8d42a9..142af70 100644
--- a/chromeos/network/onc/onc_mapper.h
+++ b/chromeos/network/onc/onc_mapper.h
@@ -11,9 +11,9 @@
#include "chromeos/chromeos_export.h"
namespace base {
-class Value;
class DictionaryValue;
class ListValue;
+class Value;
}
namespace chromeos {
@@ -41,58 +41,66 @@ class Mapper {
protected:
// Calls |MapObject|, |MapArray| and |MapPrimitive| according to |onc_value|'s
- // type. By default aborts on nested errors in arrays. Result of the mapping
- // is returned. On error returns NULL.
- virtual scoped_ptr<base::Value> MapValue(
- const OncValueSignature& signature,
- const base::Value& onc_value);
+ // type, which always return an object of the according type. Result of the
+ // mapping is returned. On error sets |error| to true.
+ virtual scoped_ptr<base::Value> MapValue(const OncValueSignature& signature,
+ const base::Value& onc_value,
+ bool* error);
// Maps objects/dictionaries. By default calls |MapFields|, which recurses
- // into each field of |onc_object|, and aborts on unknown fields. Result of
- // the mapping is returned. On error returns NULL.
+ // into each field of |onc_object|, and drops unknown fields. Result of the
+ // mapping is returned. On error sets |error| to true. In this implementation
+ // only unknown fields are errors.
virtual scoped_ptr<base::DictionaryValue> MapObject(
const OncValueSignature& signature,
- const base::DictionaryValue& onc_object);
+ const base::DictionaryValue& onc_object,
+ bool* error);
// Maps primitive values like BinaryValue, StringValue, IntegerValue... (all
// but dictionaries and lists). By default copies |onc_primitive|. Result of
- // the mapping is returned. On error returns NULL.
+ // the mapping is returned. On error sets |error| to true.
virtual scoped_ptr<base::Value> MapPrimitive(
- const OncValueSignature& signature,
- const base::Value& onc_primitive);
-
- // Maps each field of the given |onc_object| according to
- // |object_signature|. Adds the mapping of each field to |result| using
- // |MapField| and drops unknown fields by default. Sets
- // |found_unknown_field| to true if this dictionary contains any unknown
- // fields. Set |nested_error_occured| to true if nested errors occured.
- virtual void MapFields(
- const OncValueSignature& object_signature,
- const base::DictionaryValue& onc_object,
- bool* found_unknown_field,
- bool* nested_error_occured,
- base::DictionaryValue* result);
+ const OncValueSignature& signature,
+ const base::Value& onc_primitive,
+ bool* error);
+
+ // Maps each field of the given |onc_object| according to |object_signature|.
+ // Adds the mapping of each field to |result| using |MapField| and drops
+ // unknown fields by default. Sets |found_unknown_field| to true if this
+ // dictionary contains any unknown fields. Set |nested_error| to true if
+ // nested errors occured.
+ virtual void MapFields(const OncValueSignature& object_signature,
+ const base::DictionaryValue& onc_object,
+ bool* found_unknown_field,
+ bool* nested_error,
+ base::DictionaryValue* result);
// Maps the value |onc_value| of field |field_name| according to its field
// signature in |object_signature| using |MapValue|. Sets
- // |found_unknown_field| to true if |field_name| cannot be found in
- // |object_signature|, which by default is an error. Result of the mapping is
- // returned. On error returns NULL.
+ // |found_unknown_field| to true and returns NULL if |field_name| cannot be
+ // found in |object_signature|. Otherwise returns the mapping of |onc_value|.
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* found_unknown_field,
+ bool* error);
// Maps the array |onc_array| according to |array_signature|, which defines
// the type of the entries. Maps each entry by calling |MapValue|. If any of
- // the nested mappings failed, the flag |nested_error_occured| is set to true
- // and the entry is dropped from the result. The resulting array is
- // returned. On error returns NULL.
+ // the nested mappings failed, the flag |nested_error| is set to true and the
+ // entry is dropped from the result. The resulting array is returned.
virtual scoped_ptr<base::ListValue> MapArray(
const OncValueSignature& array_signature,
const base::ListValue& onc_array,
- bool* nested_error_occured);
+ bool* nested_error);
+
+ // Calls |MapValue| and returns its result. Called by |MapArray| for each
+ // entry and its index in the enclosing array.
+ virtual scoped_ptr<base::Value> MapEntry(int index,
+ const OncValueSignature& signature,
+ const base::Value& onc_value,
+ bool* error);
private:
DISALLOW_COPY_AND_ASSIGN(Mapper);