1 // Copyright 2018 The Chromium Authors 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 "ipc/message_mojom_traits.h" 6 7 namespace mojo { 8 9 // static 10 base::span<const uint8_t> bytes(IPC::MessageView & view)11StructTraits<IPC::mojom::MessageDataView, IPC::MessageView>::bytes( 12 IPC::MessageView& view) { 13 return view.bytes(); 14 } 15 16 // static 17 std::optional<std::vector<mojo::native::SerializedHandlePtr>> handles(IPC::MessageView & view)18StructTraits<IPC::mojom::MessageDataView, IPC::MessageView>::handles( 19 IPC::MessageView& view) { 20 return view.TakeHandles(); 21 } 22 23 // static Read(IPC::mojom::MessageDataView data,IPC::MessageView * out)24bool StructTraits<IPC::mojom::MessageDataView, IPC::MessageView>::Read( 25 IPC::mojom::MessageDataView data, 26 IPC::MessageView* out) { 27 mojo::ArrayDataView<uint8_t> bytes; 28 data.GetBytesDataView(&bytes); 29 30 std::optional<std::vector<mojo::native::SerializedHandlePtr>> handles; 31 if (!data.ReadHandles(&handles)) 32 return false; 33 34 *out = IPC::MessageView(bytes, std::move(handles)); 35 return true; 36 } 37 38 } // namespace mojo 39