1 // Copyright (c) 2015 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.
5 #include "ipc/mojo/ipc_mojo_handle_attachment.h"
7 #include "ipc/ipc_message_attachment_set.h"
8 #include "third_party/mojo/src/mojo/edk/embedder/embedder.h"
13 MojoHandleAttachment::MojoHandleAttachment(mojo::ScopedHandle handle
)
14 : handle_(handle
.Pass()) {
17 MojoHandleAttachment::~MojoHandleAttachment() {
20 MessageAttachment::Type
MojoHandleAttachment::GetType() const {
21 return TYPE_MOJO_HANDLE
;
25 base::PlatformFile
MojoHandleAttachment::TakePlatformFile() {
26 mojo::embedder::ScopedPlatformHandle platform_handle
;
27 MojoResult unwrap_result
= mojo::embedder::PassWrappedPlatformHandle(
28 handle_
.get().value(), &platform_handle
);
30 if (unwrap_result
!= MOJO_RESULT_OK
) {
31 LOG(ERROR
) << "Pipe failed to covert handles. Closing: " << unwrap_result
;
35 return platform_handle
.release().fd
;
39 mojo::ScopedHandle
MojoHandleAttachment::TakeHandle() {
40 return handle_
.Pass();
43 } // namespace internal