Chromium Code Reviews| Index: chrome/browser/chromeos/network_settings/onc_mapper.h |
| diff --git a/chrome/browser/chromeos/network_settings/onc_mapper.h b/chrome/browser/chromeos/network_settings/onc_mapper.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..624721ee60ae0ff829307e61e9cc47f80b6cd76e |
| --- /dev/null |
| +++ b/chrome/browser/chromeos/network_settings/onc_mapper.h |
| @@ -0,0 +1,92 @@ |
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef CHROME_BROWSER_CHROMEOS_NETWORK_SETTINGS_ONC_MAPPER_H_ |
| +#define CHROME_BROWSER_CHROMEOS_NETWORK_SETTINGS_ONC_MAPPER_H_ |
| + |
| +#include <string> |
| + |
| +#include "base/memory/scoped_ptr.h" |
| + |
| +namespace base { |
| +class Value; |
| +class DictionaryValue; |
| +class ListValue; |
| +} |
| + |
| +namespace chromeos { |
| +namespace onc { |
| + |
| +class OncValueSignature; |
| + |
| +// Iterate over both a hierarchical onc signature and an onc value. By comparing |
| +// the address of a signature object to the list of signatures in |
| +// "onc_signature.h", accurate signature-specific functions can be applied. It |
| +// is expected that the hierarchy of the signature is complete. |
| +class Mapper { |
| + public: |
| + 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); |
| + |
| + // 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. |
| + virtual scoped_ptr<base::DictionaryValue> MapObject( |
| + const OncValueSignature& signature, |
| + const base::DictionaryValue& onc_object); |
| + |
| + // 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. |
| + 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|, which drops unknown fields by default. Sets |
| + // |found_unknown_fieldname| to true if this dictionary contains any unknown |
| + // fields. Returns false if nested errors occured. |
| + virtual bool MapFields( |
| + const OncValueSignature& object_signature, |
| + const base::DictionaryValue& onc_object, |
| + bool* found_unknown_fieldname, |
| + base::DictionaryValue* result); |
|
stevenjb
2012/10/11 19:54:00
Returning a bool here is inconsistent and confusin
pneubeck (no reviews)
2012/10/15 13:57:44
I opted for a second bool argument. This keeps the
|
| + |
| + // Maps the value |onc_value| of field |field_name| according to its field |
| + // signature in |object_signature| using |MapValue|. Sets |
| + // |found_unknown_fieldname| 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. |
| + virtual scoped_ptr<base::Value> MapField( |
| + const std::string& field_name, |
| + const OncValueSignature& object_signature, |
| + const base::Value& onc_value, |
| + bool* found_unknown_fieldname); |
| + |
| + // 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 (doesn't happen in the default |
| + // implementation). |
| + virtual scoped_ptr<base::ListValue> MapArray( |
| + const OncValueSignature& array_signature, |
| + const base::ListValue& onc_array, |
| + bool* nested_error_occured); |
| + |
| + DISALLOW_COPY_AND_ASSIGN(Mapper); |
| +}; |
| + |
| +} // namespace onc |
| +} // namespace chromeos |
| + |
| +#endif // CHROME_BROWSER_CHROMEOS_NETWORK_SETTINGS_ONC_MAPPER_H_ |