| 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;
|
| }
|
|
|
|
|