| Index: mojo/edk/embedder/platform_shared_buffer.cc
|
| diff --git a/mojo/edk/embedder/platform_shared_buffer.cc b/mojo/edk/embedder/platform_shared_buffer.cc
|
| index 467e5e6a8a184204473264bb60690ce42f63b856..12f9940845a09b7139b05678dc148be18b28f69b 100644
|
| --- a/mojo/edk/embedder/platform_shared_buffer.cc
|
| +++ b/mojo/edk/embedder/platform_shared_buffer.cc
|
| @@ -18,22 +18,6 @@
|
| namespace mojo {
|
| namespace edk {
|
|
|
| -namespace {
|
| -
|
| -// Takes ownership of |memory_handle|.
|
| -ScopedPlatformHandle SharedMemoryToPlatformHandle(
|
| - base::SharedMemoryHandle memory_handle) {
|
| -#if defined(OS_POSIX) && !(defined(OS_MACOSX) && !defined(OS_IOS))
|
| - return ScopedPlatformHandle(PlatformHandle(memory_handle.fd));
|
| -#elif defined(OS_WIN)
|
| - return ScopedPlatformHandle(PlatformHandle(memory_handle.GetHandle()));
|
| -#else
|
| - return ScopedPlatformHandle(PlatformHandle(memory_handle.GetMemoryObject()));
|
| -#endif
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| // static
|
| PlatformSharedBuffer* PlatformSharedBuffer::Create(size_t num_bytes) {
|
| DCHECK_GT(num_bytes, 0u);
|
| @@ -101,6 +85,37 @@ PlatformSharedBuffer* PlatformSharedBuffer::CreateFromSharedMemoryHandle(
|
| return rv;
|
| }
|
|
|
| +// static
|
| +base::SharedMemoryHandle
|
| +PlatformSharedBuffer::GetSharedMemoryHandleFromPlatformHandle(
|
| + MojoPlatformHandle platform_handle,
|
| + size_t size,
|
| + bool read_only) {
|
| +#if defined(OS_POSIX) && !(defined(OS_MACOSX) && !defined(OS_IOS))
|
| + return base::SharedMemoryHandle(static_cast<int>(platform_handle),
|
| + false);
|
| +#elif defined(OS_WIN)
|
| + return base::SharedMemoryHandle(static_cast<HANDLE>(platform_handle),
|
| + base::GetCurrentProcessHandle());
|
| +#else
|
| + return base::SharedMemoryHandle(static_cast<mach_port_t>(platform_handle),
|
| + static_cast<mach_vm_size_t>(num_bytes),
|
| + base::GetCurrentProcId());
|
| +#endif
|
| +}
|
| +
|
| +// static
|
| +PlatformHandle PlatformSharedBuffer::GetPlatformHandleFromSharedMemoryHandle(
|
| + base::SharedMemoryHandle memory_handle) {
|
| +#if defined(OS_POSIX) && !(defined(OS_MACOSX) && !defined(OS_IOS))
|
| + return PlatformHandle(memory_handle.fd);
|
| +#elif defined(OS_WIN)
|
| + return PlatformHandle(memory_handle.GetHandle());
|
| +#else
|
| + return PlatformHandle(memory_handle.GetMemoryObject());
|
| +#endif
|
| +}
|
| +
|
| size_t PlatformSharedBuffer::GetNumBytes() const {
|
| return num_bytes_;
|
| }
|
| @@ -161,7 +176,7 @@ ScopedPlatformHandle PlatformSharedBuffer::DuplicatePlatformHandle() {
|
| if (handle == base::SharedMemory::NULLHandle())
|
| return ScopedPlatformHandle();
|
|
|
| - return SharedMemoryToPlatformHandle(handle);
|
| + return ScopedPlatformHandle(GetPlatformHandleFromSharedMemoryHandle(handle));
|
| }
|
|
|
| ScopedPlatformHandle PlatformSharedBuffer::PassPlatformHandle() {
|
|
|