Index: chromeos/network/onc/onc_mapper.h |
diff --git a/chromeos/network/onc/onc_mapper.h b/chromeos/network/onc/onc_mapper.h |
index e8d42a9a14a51b3ca2e92596299451df6571897d..142af7023dc50774ab7404c27488d9c5e12afcdb 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); |