Index: components/nacl/loader/nacl_ipc_adapter.cc |
diff --git a/components/nacl/loader/nacl_ipc_adapter.cc b/components/nacl/loader/nacl_ipc_adapter.cc |
index 3b1110251d1905d6fa2b9aa914dda0a3921d380c..dc521ba8f1ea1de923bffc462dbf90c084273430 100644 |
--- a/components/nacl/loader/nacl_ipc_adapter.cc |
+++ b/components/nacl/loader/nacl_ipc_adapter.cc |
@@ -250,10 +250,10 @@ std::unique_ptr<NaClDescWrapper> MakeShmNaClDesc( |
} // namespace |
-class NaClIPCAdapter::RewrittenMessage |
- : public base::RefCounted<RewrittenMessage> { |
+class NaClIPCAdapter::RewrittenMessage { |
public: |
RewrittenMessage(); |
+ ~RewrittenMessage() {} |
bool is_consumed() const { return data_read_cursor_ == data_len_; } |
@@ -267,9 +267,6 @@ class NaClIPCAdapter::RewrittenMessage |
size_t desc_count() const { return descs_.size(); } |
private: |
- friend class base::RefCounted<RewrittenMessage>; |
- ~RewrittenMessage() {} |
- |
std::unique_ptr<char[]> data_; |
size_t data_len_; |
@@ -539,7 +536,7 @@ bool NaClIPCAdapter::OnMessageReceived(const IPC::Message& msg) { |
bool NaClIPCAdapter::RewriteMessage(const IPC::Message& msg, uint32_t type) { |
{ |
base::AutoLock lock(lock_); |
- scoped_refptr<RewrittenMessage> rewritten_msg(new RewrittenMessage); |
+ std::unique_ptr<RewrittenMessage> rewritten_msg(new RewrittenMessage); |
typedef std::vector<ppapi::proxy::SerializedHandle> Handles; |
Handles handles; |
@@ -601,9 +598,9 @@ bool NaClIPCAdapter::RewriteMessage(const IPC::Message& msg, uint32_t type) { |
rewritten_msg->AddDescriptor(nacl_desc.release()); |
} |
if (new_msg) |
- SaveMessage(*new_msg, rewritten_msg.get()); |
+ SaveMessage(*new_msg, std::move(rewritten_msg)); |
else |
- SaveMessage(msg, rewritten_msg.get()); |
+ SaveMessage(msg, std::move(rewritten_msg)); |
cond_var_.Signal(); |
} |
return true; |
@@ -668,11 +665,11 @@ void NaClIPCAdapter::SaveOpenResourceMessage( |
#endif |
NACL_ABI_O_RDONLY))); |
- scoped_refptr<RewrittenMessage> rewritten_msg(new RewrittenMessage); |
+ std::unique_ptr<RewrittenMessage> rewritten_msg(new RewrittenMessage); |
rewritten_msg->AddDescriptor(desc_wrapper.release()); |
{ |
base::AutoLock lock(lock_); |
- SaveMessage(*new_msg, rewritten_msg.get()); |
+ SaveMessage(*new_msg, std::move(rewritten_msg)); |
cond_var_.Signal(); |
} |
return; |
@@ -686,14 +683,14 @@ void NaClIPCAdapter::SaveOpenResourceMessage( |
ppapi::proxy::SerializedHandle sh; |
sh.set_file_handle(ipc_fd, PP_FILEOPENFLAG_READ, 0); |
std::unique_ptr<IPC::Message> new_msg = CreateOpenResourceReply(orig_msg, sh); |
- scoped_refptr<RewrittenMessage> rewritten_msg(new RewrittenMessage); |
+ std::unique_ptr<RewrittenMessage> rewritten_msg(new RewrittenMessage); |
struct NaClDesc* desc = |
NaClDescCreateWithFilePathMetadata(handle, file_path_str.c_str()); |
rewritten_msg->AddDescriptor(new NaClDescWrapper(desc)); |
{ |
base::AutoLock lock(lock_); |
- SaveMessage(*new_msg, rewritten_msg.get()); |
+ SaveMessage(*new_msg, std::move(rewritten_msg)); |
cond_var_.Signal(); |
} |
} |
@@ -715,13 +712,12 @@ int NaClIPCAdapter::LockedReceive(NaClImcTypedMsgHdr* msg) { |
if (locked_data_.to_be_received_.empty()) |
return 0; |
- scoped_refptr<RewrittenMessage> current = |
- locked_data_.to_be_received_.front(); |
+ RewrittenMessage& current = *locked_data_.to_be_received_.front(); |
- int retval = current->Read(msg); |
+ int retval = current.Read(msg); |
- // When a message is entirely consumed, remove if from the waiting queue. |
- if (current->is_consumed()) |
+ // When a message is entirely consumed, remove it from the waiting queue. |
+ if (current.is_consumed()) |
locked_data_.to_be_received_.pop(); |
return retval; |
@@ -826,8 +822,9 @@ void NaClIPCAdapter::SendMessageOnIOThread( |
io_thread_data_.channel_->Send(message.release()); |
} |
-void NaClIPCAdapter::SaveMessage(const IPC::Message& msg, |
- RewrittenMessage* rewritten_msg) { |
+void NaClIPCAdapter::SaveMessage( |
+ const IPC::Message& msg, |
+ std::unique_ptr<RewrittenMessage> rewritten_msg) { |
lock_.AssertAcquired(); |
// There is some padding in this structure (the "padding" member is 16 |
// bits but this then gets padded to 32 bits). We want to be sure not to |
@@ -842,7 +839,7 @@ void NaClIPCAdapter::SaveMessage(const IPC::Message& msg, |
header.num_fds = static_cast<uint16_t>(rewritten_msg->desc_count()); |
rewritten_msg->SetData(header, msg.payload(), msg.payload_size()); |
- locked_data_.to_be_received_.push(rewritten_msg); |
+ locked_data_.to_be_received_.push(std::move(rewritten_msg)); |
} |
int TranslatePepperFileReadWriteOpenFlagsForTesting(int32_t pp_open_flags) { |