| 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) {
|
|
|