Commit 3dc5fdfb authored by erikchen's avatar erikchen Committed by Commit bot

Allow Mach shm to be passed to NaCl.

BUG=547246

Review URL: https://codereview.chromium.org/1460133002

Cr-Commit-Position: refs/heads/master@{#361148}
parent 344528fe
......@@ -227,6 +227,26 @@ class NaClDescWrapper {
DISALLOW_COPY_AND_ASSIGN(NaClDescWrapper);
};
scoped_ptr<NaClDescWrapper> MakeShmNaClDesc(
const base::SharedMemoryHandle& handle,
size_t size) {
#if defined(OS_MACOSX)
if (handle.GetType() == base::SharedMemoryHandle::MACH) {
return scoped_ptr<NaClDescWrapper>(new NaClDescWrapper(
NaClDescImcShmMachMake(handle.GetMemoryObject(), size)));
}
CHECK_EQ(base::SharedMemoryHandle::POSIX, handle.GetType());
#endif
return scoped_ptr<NaClDescWrapper>(new NaClDescWrapper(NaClDescImcShmMake(
#if defined(OS_WIN)
handle.GetHandle(),
#else
base::SharedMemory::GetFdFromSharedMemoryHandle(handle),
#endif
size)));
}
} // namespace
class NaClIPCAdapter::RewrittenMessage
......@@ -541,15 +561,8 @@ bool NaClIPCAdapter::RewriteMessage(const IPC::Message& msg, uint32_t type) {
scoped_ptr<NaClDescWrapper> nacl_desc;
switch (iter->type()) {
case ppapi::proxy::SerializedHandle::SHARED_MEMORY: {
const base::SharedMemoryHandle& shm_handle = iter->shmem();
uint32_t size = iter->size();
nacl_desc.reset(new NaClDescWrapper(NaClDescImcShmMake(
#if defined(OS_WIN)
shm_handle.GetHandle(),
#else
base::SharedMemory::GetFdFromSharedMemoryHandle(shm_handle),
#endif
static_cast<size_t>(size))));
nacl_desc =
MakeShmNaClDesc(iter->shmem(), static_cast<size_t>(iter->size()));
break;
}
case ppapi::proxy::SerializedHandle::SOCKET: {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment