1*6777b538SAndroid Build Coastguard Worker // Copyright 2018 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #include "ipc/message_mojom_traits.h" 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Worker namespace mojo { 8*6777b538SAndroid Build Coastguard Worker 9*6777b538SAndroid Build Coastguard Worker // static 10*6777b538SAndroid Build Coastguard Worker base::span<const uint8_t> bytes(IPC::MessageView & view)11*6777b538SAndroid Build Coastguard WorkerStructTraits<IPC::mojom::MessageDataView, IPC::MessageView>::bytes( 12*6777b538SAndroid Build Coastguard Worker IPC::MessageView& view) { 13*6777b538SAndroid Build Coastguard Worker return view.bytes(); 14*6777b538SAndroid Build Coastguard Worker } 15*6777b538SAndroid Build Coastguard Worker 16*6777b538SAndroid Build Coastguard Worker // static 17*6777b538SAndroid Build Coastguard Worker std::optional<std::vector<mojo::native::SerializedHandlePtr>> handles(IPC::MessageView & view)18*6777b538SAndroid Build Coastguard WorkerStructTraits<IPC::mojom::MessageDataView, IPC::MessageView>::handles( 19*6777b538SAndroid Build Coastguard Worker IPC::MessageView& view) { 20*6777b538SAndroid Build Coastguard Worker return view.TakeHandles(); 21*6777b538SAndroid Build Coastguard Worker } 22*6777b538SAndroid Build Coastguard Worker 23*6777b538SAndroid Build Coastguard Worker // static Read(IPC::mojom::MessageDataView data,IPC::MessageView * out)24*6777b538SAndroid Build Coastguard Workerbool StructTraits<IPC::mojom::MessageDataView, IPC::MessageView>::Read( 25*6777b538SAndroid Build Coastguard Worker IPC::mojom::MessageDataView data, 26*6777b538SAndroid Build Coastguard Worker IPC::MessageView* out) { 27*6777b538SAndroid Build Coastguard Worker mojo::ArrayDataView<uint8_t> bytes; 28*6777b538SAndroid Build Coastguard Worker data.GetBytesDataView(&bytes); 29*6777b538SAndroid Build Coastguard Worker 30*6777b538SAndroid Build Coastguard Worker std::optional<std::vector<mojo::native::SerializedHandlePtr>> handles; 31*6777b538SAndroid Build Coastguard Worker if (!data.ReadHandles(&handles)) 32*6777b538SAndroid Build Coastguard Worker return false; 33*6777b538SAndroid Build Coastguard Worker 34*6777b538SAndroid Build Coastguard Worker *out = IPC::MessageView(bytes, std::move(handles)); 35*6777b538SAndroid Build Coastguard Worker return true; 36*6777b538SAndroid Build Coastguard Worker } 37*6777b538SAndroid Build Coastguard Worker 38*6777b538SAndroid Build Coastguard Worker } // namespace mojo 39