Index: mojo/common/values_struct_traits.h |
diff --git a/mojo/common/values_struct_traits.h b/mojo/common/values_struct_traits.h |
index befcf3a6ea2816dd56e56f0a50933d9cec3548e0..9ef63b68da2cf84c74a95911b8a28d081f582afb 100644 |
--- a/mojo/common/values_struct_traits.h |
+++ b/mojo/common/values_struct_traits.h |
@@ -17,7 +17,7 @@ namespace mojo { |
template <> |
struct ArrayTraits<base::ListValue> { |
- using Element = std::unique_ptr<base::Value>; |
+ using Element = base::Value; |
using ConstIterator = base::ListValue::const_iterator; |
static size_t GetSize(const base::ListValue& input) { |
@@ -30,37 +30,20 @@ struct ArrayTraits<base::ListValue> { |
static void AdvanceIterator(ConstIterator& iterator) { ++iterator; } |
- static const Element& GetValue(ConstIterator& iterator) { return *iterator; } |
+ static const Element& GetValue(ConstIterator& iterator) { return **iterator; } |
}; |
template <> |
struct StructTraits<common::mojom::ListValueDataView, base::ListValue> { |
+ static bool Read(common::mojom::ListValueDataView data, |
+ base::ListValue* value); |
+ |
static const base::ListValue& values(const base::ListValue& value) { |
return value; |
} |
}; |
template <> |
-struct StructTraits<common::mojom::ListValueDataView, |
- std::unique_ptr<base::ListValue>> { |
- static bool IsNull(const std::unique_ptr<base::ListValue>& value) { |
- return !value; |
- } |
- |
- static void SetToNull(std::unique_ptr<base::ListValue>* value) { |
- value->reset(); |
- } |
- |
- static const base::ListValue& values( |
- const std::unique_ptr<base::ListValue>& value) { |
- return *value; |
- } |
- |
- static bool Read(common::mojom::ListValueDataView data, |
- std::unique_ptr<base::ListValue>* value); |
-}; |
- |
-template <> |
struct MapTraits<base::DictionaryValue> { |
using Key = std::string; |
using Value = base::Value; |
@@ -84,6 +67,9 @@ struct MapTraits<base::DictionaryValue> { |
template <> |
struct StructTraits<common::mojom::DictionaryValueDataView, |
base::DictionaryValue> { |
+ static bool Read(common::mojom::DictionaryValueDataView data, |
+ base::DictionaryValue* value); |
+ |
static const base::DictionaryValue& values( |
const base::DictionaryValue& value) { |
return value; |
@@ -91,32 +77,9 @@ struct StructTraits<common::mojom::DictionaryValueDataView, |
}; |
template <> |
-struct StructTraits<common::mojom::DictionaryValueDataView, |
- std::unique_ptr<base::DictionaryValue>> { |
- static bool IsNull(const std::unique_ptr<base::DictionaryValue>& value) { |
- return !value; |
- } |
- |
- static void SetToNull(std::unique_ptr<base::DictionaryValue>* value) { |
- value->reset(); |
- } |
- |
- static const base::DictionaryValue& values( |
- const std::unique_ptr<base::DictionaryValue>& value) { |
- return *value; |
- } |
- static bool Read(common::mojom::DictionaryValueDataView data, |
- std::unique_ptr<base::DictionaryValue>* value); |
-}; |
- |
-template <> |
-struct CloneTraits<std::unique_ptr<base::DictionaryValue>, false> { |
- static std::unique_ptr<base::DictionaryValue> Clone( |
- const std::unique_ptr<base::DictionaryValue>& input); |
-}; |
- |
-template <> |
struct UnionTraits<common::mojom::ValueDataView, base::Value> { |
+ static bool Read(common::mojom::ValueDataView data, base::Value* value); |
+ |
static common::mojom::ValueDataView::Tag GetTag(const base::Value& data) { |
switch (data.GetType()) { |
case base::Value::Type::NONE: |
@@ -196,62 +159,6 @@ struct UnionTraits<common::mojom::ValueDataView, base::Value> { |
} |
}; |
-template <> |
-struct UnionTraits<common::mojom::ValueDataView, std::unique_ptr<base::Value>> { |
- static bool IsNull(const std::unique_ptr<base::Value>& value) { |
- return !value; |
- } |
- |
- static void SetToNull(std::unique_ptr<base::Value>* value) { value->reset(); } |
- |
- static common::mojom::ValueDataView::Tag GetTag( |
- const std::unique_ptr<base::Value>& value) { |
- return UnionTraits<common::mojom::ValueDataView, base::Value>::GetTag( |
- *value); |
- } |
- |
- static common::mojom::NullValuePtr null_value( |
- const std::unique_ptr<base::Value>& value) { |
- return UnionTraits<common::mojom::ValueDataView, base::Value>::null_value( |
- *value); |
- } |
- static bool bool_value(const std::unique_ptr<base::Value>& value) { |
- return UnionTraits<common::mojom::ValueDataView, base::Value>::bool_value( |
- *value); |
- } |
- static int32_t int_value(const std::unique_ptr<base::Value>& value) { |
- return UnionTraits<common::mojom::ValueDataView, base::Value>::int_value( |
- *value); |
- } |
- static double double_value(const std::unique_ptr<base::Value>& value) { |
- return UnionTraits<common::mojom::ValueDataView, base::Value>::double_value( |
- *value); |
- } |
- static base::StringPiece string_value( |
- const std::unique_ptr<base::Value>& value) { |
- return UnionTraits<common::mojom::ValueDataView, base::Value>::string_value( |
- *value); |
- } |
- static mojo::ConstCArray<uint8_t> binary_value( |
- const std::unique_ptr<base::Value>& value) { |
- return UnionTraits<common::mojom::ValueDataView, base::Value>::binary_value( |
- *value); |
- } |
- static const base::ListValue& list_value( |
- const std::unique_ptr<base::Value>& value) { |
- return UnionTraits<common::mojom::ValueDataView, base::Value>::list_value( |
- *value); |
- } |
- static const base::DictionaryValue& dictionary_value( |
- const std::unique_ptr<base::Value>& value) { |
- return UnionTraits<common::mojom::ValueDataView, |
- base::Value>::dictionary_value(*value); |
- } |
- |
- static bool Read(common::mojom::ValueDataView data, |
- std::unique_ptr<base::Value>* value); |
-}; |
- |
} // namespace mojo |
#endif // MOJO_COMMON_VALUES_STRUCT_TRAITS_H_ |