Index: ipc/ipc_channel_proxy.cc |
diff --git a/ipc/ipc_channel_proxy.cc b/ipc/ipc_channel_proxy.cc |
index 7eed1bd8103e29947cc737eec56c02210a4f2985..f0e97152ffa025e6e165b7d2ac4f6082d7c25ddc 100644 |
--- a/ipc/ipc_channel_proxy.cc |
+++ b/ipc/ipc_channel_proxy.cc |
@@ -14,33 +14,10 @@ |
namespace IPC { |
-// This helper ensures the message is deleted if the task is deleted without |
-// having been run. |
-class SendCallbackHelper |
- : public base::RefCountedThreadSafe<SendCallbackHelper> { |
- public: |
- SendCallbackHelper(ChannelProxy::Context* context, Message* message) |
- : context_(context), |
- message_(message) { |
- } |
- |
- void Send() { |
- context_->OnSendMessage(message_.release()); |
- } |
- |
- private: |
- scoped_refptr<ChannelProxy::Context> context_; |
- scoped_ptr<Message> message_; |
- |
- DISALLOW_COPY_AND_ASSIGN(SendCallbackHelper); |
-}; |
- |
//------------------------------------------------------------------------------ |
ChannelProxy::MessageFilter::MessageFilter() {} |
-ChannelProxy::MessageFilter::~MessageFilter() {} |
- |
void ChannelProxy::MessageFilter::OnFilterAdded(Channel* channel) {} |
void ChannelProxy::MessageFilter::OnFilterRemoved() {} |
@@ -59,6 +36,8 @@ void ChannelProxy::MessageFilter::OnDestruct() const { |
delete this; |
} |
+ChannelProxy::MessageFilter::~MessageFilter() {} |
+ |
//------------------------------------------------------------------------------ |
ChannelProxy::Context::Context(Channel::Listener* listener, |
@@ -186,13 +165,12 @@ void ChannelProxy::Context::OnChannelClosed() { |
} |
// Called on the IPC::Channel thread |
-void ChannelProxy::Context::OnSendMessage(Message* message) { |
+void ChannelProxy::Context::OnSendMessage(scoped_ptr<Message> message) { |
if (!channel_.get()) { |
- delete message; |
OnChannelClosed(); |
return; |
} |
- if (!channel_->Send(message)) |
+ if (!channel_->Send(message.release())) |
OnChannelError(); |
} |
@@ -368,8 +346,8 @@ bool ChannelProxy::Send(Message* message) { |
context_->ipc_message_loop()->PostTask( |
FROM_HERE, |
- base::Bind(&SendCallbackHelper::Send, |
- new SendCallbackHelper(context_.get(), message))); |
+ base::Bind(&ChannelProxy::Context::OnSendMessage, |
+ context_, base::Passed(scoped_ptr<Message>(message)))); |
return true; |
} |