Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(332)

Unified Diff: components/nacl/loader/nacl_ipc_adapter.cc

Issue 2781443004: Convert NaClIPCAdapter::RewrittenMessage ownership management from shared to unique (Closed)
Patch Set: s/scoped_refptr/std::unique_ptr/ Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/nacl/loader/nacl_ipc_adapter.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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) {
« no previous file with comments | « components/nacl/loader/nacl_ipc_adapter.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698