Index: chrome/nacl/nacl_ipc_adapter.cc |
diff --git a/chrome/nacl/nacl_ipc_adapter.cc b/chrome/nacl/nacl_ipc_adapter.cc |
index 8435c6fb6b53367c73d72a506f4749bb6dc0d572..a37756ccb70058d217694bcfd973b43522730841 100644 |
--- a/chrome/nacl/nacl_ipc_adapter.cc |
+++ b/chrome/nacl/nacl_ipc_adapter.cc |
@@ -16,7 +16,8 @@ |
#include "ipc/ipc_channel.h" |
#include "ipc/ipc_platform_file.h" |
#include "native_client/src/trusted/desc/nacl_desc_custom.h" |
-#include "native_client/src/trusted/desc/nacl_desc_wrapper.h" |
+#include "native_client/src/trusted/desc/nacl_desc_imc_shm.h" |
+#include "native_client/src/trusted/desc/nacl_desc_sync_socket.h" |
#include "ppapi/proxy/ppapi_messages.h" |
#include "ppapi/proxy/serialized_handle.h" |
@@ -90,6 +91,20 @@ void DeleteChannel(IPC::Channel* channel) { |
delete channel; |
} |
+class NaClDescWrapper { |
+ public: |
+ explicit NaClDescWrapper(NaClDesc* desc): desc_(desc) {} |
+ ~NaClDescWrapper() { |
+ NaClDescUnref(desc_); |
+ } |
+ |
+ NaClDesc* desc() { return desc_; } |
+ |
+ private: |
+ NaClDesc* desc_; |
+ DISALLOW_COPY_AND_ASSIGN(NaClDescWrapper); |
+}; |
+ |
} // namespace |
class NaClIPCAdapter::RewrittenMessage |
@@ -104,7 +119,7 @@ class NaClIPCAdapter::RewrittenMessage |
int Read(NaClImcTypedMsgHdr* msg); |
- void AddDescriptor(nacl::DescWrapper* desc) { descs_.push_back(desc); } |
+ void AddDescriptor(NaClDescWrapper* desc) { descs_.push_back(desc); } |
size_t desc_count() const { return descs_.size(); } |
@@ -120,7 +135,7 @@ class NaClIPCAdapter::RewrittenMessage |
size_t data_read_cursor_; |
// Wrapped descriptors for transfer to untrusted code. |
- ScopedVector<nacl::DescWrapper> descs_; |
+ ScopedVector<NaClDescWrapper> descs_; |
}; |
NaClIPCAdapter::RewrittenMessage::RewrittenMessage() |
@@ -341,32 +356,31 @@ bool NaClIPCAdapter::OnMessageReceived(const IPC::Message& msg) { |
// Now add any descriptors we found to rewritten_msg. |handles| is usually |
// empty, unless we read a message containing a FD or handle. |
- nacl::DescWrapperFactory factory; |
for (Handles::const_iterator iter = handles.begin(); |
iter != handles.end(); |
++iter) { |
- scoped_ptr<nacl::DescWrapper> nacl_desc; |
+ 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(factory.ImportShmHandle( |
+ nacl_desc.reset(new NaClDescWrapper(NaClDescImcShmMake( |
#if defined(OS_WIN) |
reinterpret_cast<const NaClHandle>(shm_handle), |
#else |
shm_handle.fd, |
#endif |
- static_cast<size_t>(size))); |
+ static_cast<size_t>(size)))); |
break; |
} |
case ppapi::proxy::SerializedHandle::SOCKET: { |
- nacl_desc.reset(factory.ImportSyncSocketHandle( |
+ nacl_desc.reset(new NaClDescWrapper(NaClDescSyncSocketMake( |
#if defined(OS_WIN) |
reinterpret_cast<const NaClHandle>(iter->descriptor()) |
#else |
iter->descriptor().fd |
#endif |
- )); |
+ ))); |
break; |
} |
case ppapi::proxy::SerializedHandle::CHANNEL_HANDLE: { |
@@ -382,7 +396,7 @@ bool NaClIPCAdapter::OnMessageReceived(const IPC::Message& msg) { |
channel_handle.socket = base::FileDescriptor( |
ipc_adapter->TakeClientFileDescriptor(), true); |
#endif |
- nacl_desc.reset(factory.MakeGeneric(ipc_adapter->MakeNaClDesc())); |
+ nacl_desc.reset(new NaClDescWrapper(ipc_adapter->MakeNaClDesc())); |
// Send back a message that the channel was created. |
scoped_ptr<IPC::Message> response( |
new PpapiHostMsg_ChannelCreated(channel_handle)); |