summaryrefslogtreecommitdiffstats
path: root/ipc
diff options
context:
space:
mode:
authorwillchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-08 23:35:47 +0000
committerwillchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-08 23:35:47 +0000
commit0d7e79fa8ce1bef5ca6d413c908c267c35f5867a (patch)
tree5509297bccd2e1b4c8abd0680090547c4b707f18 /ipc
parentf94151690a90af7029a1ab6ddb0f7679af3a9c7d (diff)
downloadchromium_src-0d7e79fa8ce1bef5ca6d413c908c267c35f5867a.zip
chromium_src-0d7e79fa8ce1bef5ca6d413c908c267c35f5867a.tar.gz
chromium_src-0d7e79fa8ce1bef5ca6d413c908c267c35f5867a.tar.bz2
Revert 61899 for breaking cookes on file:// URLs.
BUG=58553 ================================================= Fix instances of passing raw pointers to RefCounted objects in tasks. Some of these manually handled it correctly by using AddRef()/Release() pairs. I switched them to make_scoped_refptr() to be more consistent. This also makes them cleanup properly on MessageLoop shutdown if we start deleting tasks. BUG=28083 TEST=builds Review URL: http://codereview.chromium.org/3581008 TBR=willchan@chromium.org Review URL: http://codereview.chromium.org/3654001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62043 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ipc')
-rw-r--r--ipc/ipc_channel_proxy.cc21
1 files changed, 10 insertions, 11 deletions
diff --git a/ipc/ipc_channel_proxy.cc b/ipc/ipc_channel_proxy.cc
index feca4eb..9785216 100644
--- a/ipc/ipc_channel_proxy.cc
+++ b/ipc/ipc_channel_proxy.cc
@@ -196,6 +196,9 @@ void ChannelProxy::Context::OnAddFilter(MessageFilter* filter) {
// so that the filter gets access to the Channel.
if (channel_)
filter->OnFilterAdded(channel_);
+
+ // Balances the AddRef in ChannelProxy::AddFilter.
+ filter->Release();
}
// Called on the IPC::Channel thread
@@ -314,20 +317,16 @@ bool ChannelProxy::Send(Message* message) {
}
void ChannelProxy::AddFilter(MessageFilter* filter) {
- context_->ipc_message_loop()->PostTask(
- FROM_HERE,
- NewRunnableMethod(
- context_.get(),
- &Context::OnAddFilter,
- make_scoped_refptr(filter)));
+ // We want to addref the filter to prevent it from
+ // being destroyed before the OnAddFilter call is invoked.
+ filter->AddRef();
+ context_->ipc_message_loop()->PostTask(FROM_HERE, NewRunnableMethod(
+ context_.get(), &Context::OnAddFilter, filter));
}
void ChannelProxy::RemoveFilter(MessageFilter* filter) {
- context_->ipc_message_loop()->PostTask(
- FROM_HERE, NewRunnableMethod(
- context_.get(),
- &Context::OnRemoveFilter,
- make_scoped_refptr(filter)));
+ context_->ipc_message_loop()->PostTask(FROM_HERE, NewRunnableMethod(
+ context_.get(), &Context::OnRemoveFilter, filter));
}
void ChannelProxy::ClearIPCMessageLoop() {