| // Copyright 2018 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "ipc/message_mojom_traits.h" | 
 |  | 
 | #include "mojo/public/cpp/base/big_buffer_mojom_traits.h" | 
 |  | 
 | namespace mojo { | 
 |  | 
 | // static | 
 | mojo_base::BigBufferView | 
 | StructTraits<IPC::mojom::MessageDataView, IPC::MessageView>::buffer( | 
 |     IPC::MessageView& view) { | 
 |   return view.TakeBufferView(); | 
 | } | 
 |  | 
 | // static | 
 | base::Optional<std::vector<mojo::native::SerializedHandlePtr>> | 
 | StructTraits<IPC::mojom::MessageDataView, IPC::MessageView>::handles( | 
 |     IPC::MessageView& view) { | 
 |   return view.TakeHandles(); | 
 | } | 
 |  | 
 | // static | 
 | bool StructTraits<IPC::mojom::MessageDataView, IPC::MessageView>::Read( | 
 |     IPC::mojom::MessageDataView data, | 
 |     IPC::MessageView* out) { | 
 |   mojo_base::BigBufferView buffer_view; | 
 |   if (!data.ReadBuffer(&buffer_view)) | 
 |     return false; | 
 |   base::Optional<std::vector<mojo::native::SerializedHandlePtr>> handles; | 
 |   if (!data.ReadHandles(&handles)) | 
 |     return false; | 
 |  | 
 |   *out = IPC::MessageView(std::move(buffer_view), std::move(handles)); | 
 |   return true; | 
 | } | 
 |  | 
 | }  // namespace mojo |