1 // Copyright 2018 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "mojo/public/cpp/base/ref_counted_memory_mojom_traits.h" 6 7 #include "mojo/public/cpp/base/big_buffer_mojom_traits.h" 8 9 namespace mojo { 10 11 // static 12 mojo_base::BigBuffer StructTraits<mojo_base::mojom::RefCountedMemoryDataView, 13 scoped_refptr<base::RefCountedMemory>>:: data(const scoped_refptr<base::RefCountedMemory> & in)14 data(const scoped_refptr<base::RefCountedMemory>& in) { 15 return mojo_base::BigBuffer(base::make_span(in->front(), in->size())); 16 } 17 18 // static 19 bool StructTraits<mojo_base::mojom::RefCountedMemoryDataView, 20 scoped_refptr<base::RefCountedMemory>>:: IsNull(const scoped_refptr<base::RefCountedMemory> & input)21 IsNull(const scoped_refptr<base::RefCountedMemory>& input) { 22 return !input.get(); 23 } 24 25 // static 26 void StructTraits<mojo_base::mojom::RefCountedMemoryDataView, 27 scoped_refptr<base::RefCountedMemory>>:: SetToNull(scoped_refptr<base::RefCountedMemory> * out)28 SetToNull(scoped_refptr<base::RefCountedMemory>* out) { 29 *out = scoped_refptr<base::RefCountedMemory>(); 30 } 31 32 // static 33 bool StructTraits<mojo_base::mojom::RefCountedMemoryDataView, 34 scoped_refptr<base::RefCountedMemory>>:: Read(mojo_base::mojom::RefCountedMemoryDataView data,scoped_refptr<base::RefCountedMemory> * out)35 Read(mojo_base::mojom::RefCountedMemoryDataView data, 36 scoped_refptr<base::RefCountedMemory>* out) { 37 mojo_base::BigBuffer buffer; 38 if (!data.ReadData(&buffer)) 39 return false; 40 41 *out = 42 base::MakeRefCounted<base::RefCountedBytes>(buffer.data(), buffer.size()); 43 return true; 44 } 45 46 } // namespace mojo 47