Initial import of libmojo r405848
This brings libmojo in sync with libchrome.
Bug: 27569341
Test: mma -j32 libmojo
Change-Id: Ia7cb877e46dd3f86f18888b5d8d80bef5468b266
diff --git a/ipc/ipc_mojo_handle_attachment.h b/ipc/ipc_mojo_handle_attachment.h
new file mode 100644
index 0000000..6aa1888
--- /dev/null
+++ b/ipc/ipc_mojo_handle_attachment.h
@@ -0,0 +1,47 @@
+// Copyright (c) 2015 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.
+
+#ifndef IPC_IPC_MOJO_HANDLE_ATTACHMENT_H_
+#define IPC_IPC_MOJO_HANDLE_ATTACHMENT_H_
+
+#include "base/files/file.h"
+#include "base/macros.h"
+#include "build/build_config.h"
+#include "ipc/ipc_export.h"
+#include "ipc/ipc_message_attachment.h"
+#include "mojo/public/cpp/system/handle.h"
+
+namespace IPC {
+
+namespace internal {
+
+// A MessageAttachment that holds a MojoHandle.
+// This can hold any type of transferrable Mojo handle (i.e. message pipe, data
+// pipe, etc), but the receiver is expected to know what type of handle to
+// expect.
+class IPC_EXPORT MojoHandleAttachment : public MessageAttachment {
+ public:
+ explicit MojoHandleAttachment(mojo::ScopedHandle handle);
+
+ Type GetType() const override;
+
+#if defined(OS_POSIX)
+ // Should not be called.
+ base::PlatformFile TakePlatformFile() override;
+#endif // OS_POSIX
+
+ // Returns the owning handle transferring the ownership.
+ mojo::ScopedHandle TakeHandle();
+
+ private:
+ ~MojoHandleAttachment() override;
+ mojo::ScopedHandle handle_;
+
+ DISALLOW_COPY_AND_ASSIGN(MojoHandleAttachment);
+};
+
+} // namespace internal
+} // namespace IPC
+
+#endif // IPC_IPC_MOJO_HANDLE_ATTACHMENT_H_