Index: cc/ipc/shared_quad_state_struct_traits.h |
diff --git a/cc/ipc/shared_quad_state_struct_traits.h b/cc/ipc/shared_quad_state_struct_traits.h |
index 675e6dcc2699e8014b4dceaa60ef2dcf208c47e0..7b5dde7e1a2086b3233c40b7f88b27d2c8d4be99 100644 |
--- a/cc/ipc/shared_quad_state_struct_traits.h |
+++ b/cc/ipc/shared_quad_state_struct_traits.h |
@@ -62,6 +62,53 @@ struct StructTraits<cc::mojom::SharedQuadState, cc::SharedQuadState> { |
} |
}; |
+struct SharedQuadStateListArray { |
+ cc::SharedQuadStateList* list; |
+}; |
+ |
+template <> |
+struct ArrayTraits<SharedQuadStateListArray> { |
+ using Element = cc::SharedQuadState; |
+ using Iterator = cc::SharedQuadStateList::Iterator; |
+ using ConstIterator = cc::SharedQuadStateList::ConstIterator; |
+ |
+ static ConstIterator GetBegin(const SharedQuadStateListArray& input) { |
+ return input.list->begin(); |
+ } |
+ static Iterator GetBegin(SharedQuadStateListArray& input) { |
+ return input.list->begin(); |
+ } |
+ static void AdvanceIterator(ConstIterator& iterator) { ++iterator; } |
+ static void AdvanceIterator(Iterator& iterator) { ++iterator; } |
+ static const Element& GetValue(ConstIterator& iterator) { return **iterator; } |
+ static Element& GetValue(Iterator& iterator) { return **iterator; } |
+ static size_t GetSize(const SharedQuadStateListArray& input) { |
+ return input.list->size(); |
+ } |
+ static bool Resize(SharedQuadStateListArray& input, size_t size) { |
+ if (input.list->size() == size) |
+ return true; |
+ input.list->clear(); |
+ for (size_t i = 0; i < size; ++i) |
+ input.list->AllocateAndConstruct<cc::SharedQuadState>(); |
+ return true; |
+ } |
+}; |
+ |
+template <> |
+struct StructTraits<cc::mojom::SharedQuadStateList, cc::SharedQuadStateList> { |
+ static SharedQuadStateListArray shared_quad_states( |
+ const cc::SharedQuadStateList& list) { |
+ return {const_cast<cc::SharedQuadStateList*>(&list)}; |
+ } |
+ |
+ static bool Read(cc::mojom::SharedQuadStateListDataView data, |
+ cc::SharedQuadStateList* out) { |
+ SharedQuadStateListArray sqs_array = {out}; |
+ return data.ReadSharedQuadStates(&sqs_array); |
+ } |
+}; |
+ |
} // namespace mojo |
#endif // CC_IPC_SHARED_QUAD_STATE_STRUCT_TRAITS_H_ |