Skip to content

Commit

Permalink
base:Bind: Convert ipc/.
Browse files Browse the repository at this point in the history
BUG=none
TEST=none

R=csilv@chromium.org

Review URL: http://codereview.chromium.org/8539036

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@109810 0039d316-1c4b-4281-b951-d872f2087c98
  • Loading branch information
jhawkins@chromium.org committed Nov 12, 2011
1 parent 4af9595 commit 72b6f8e
Show file tree
Hide file tree
Showing 7 changed files with 71 additions and 62 deletions.
35 changes: 17 additions & 18 deletions ipc/ipc_channel_proxy.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "base/bind.h"
#include "base/location.h"
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
Expand Down Expand Up @@ -111,8 +112,8 @@ bool ChannelProxy::Context::OnMessageReceivedNoFilter(const Message& message) {
// this thread is active. That should be a reasonable assumption, but it
// feels risky. We may want to invent some more indirect way of referring to
// a MessageLoop if this becomes a problem.
listener_message_loop_->PostTask(FROM_HERE, NewRunnableMethod(
this, &Context::OnDispatchMessage, message));
listener_message_loop_->PostTask(
FROM_HERE, base::Bind(&Context::OnDispatchMessage, this, message));
return true;
}

Expand All @@ -129,8 +130,8 @@ void ChannelProxy::Context::OnChannelConnected(int32 peer_pid) {
filters_[i]->OnChannelConnected(peer_pid);

// See above comment about using listener_message_loop_ here.
listener_message_loop_->PostTask(FROM_HERE, NewRunnableMethod(
this, &Context::OnDispatchConnected));
listener_message_loop_->PostTask(
FROM_HERE, base::Bind(&Context::OnDispatchConnected, this));
}

// Called on the IPC::Channel thread
Expand All @@ -139,8 +140,8 @@ void ChannelProxy::Context::OnChannelError() {
filters_[i]->OnChannelError();

// See above comment about using listener_message_loop_ here.
listener_message_loop_->PostTask(FROM_HERE, NewRunnableMethod(
this, &Context::OnDispatchError));
listener_message_loop_->PostTask(
FROM_HERE, base::Bind(&Context::OnDispatchError, this));
}

// Called on the IPC::Channel thread
Expand Down Expand Up @@ -232,8 +233,7 @@ void ChannelProxy::Context::AddFilter(MessageFilter* filter) {
base::AutoLock auto_lock(pending_filters_lock_);
pending_filters_.push_back(make_scoped_refptr(filter));
ipc_message_loop_->PostTask(
FROM_HERE,
NewRunnableMethod(this, &Context::OnAddFilter));
FROM_HERE, base::Bind(&Context::OnAddFilter, this));
}

// Called on the listener's thread
Expand Down Expand Up @@ -324,13 +324,14 @@ void ChannelProxy::Init(const IPC::ChannelHandle& channel_handle,
// to connect and get an error since the pipe doesn't exist yet.
context_->CreateChannel(channel_handle, mode);
} else {
context_->ipc_message_loop()->PostTask(FROM_HERE, NewRunnableMethod(
context_.get(), &Context::CreateChannel, channel_handle, mode));
context_->ipc_message_loop()->PostTask(
FROM_HERE, base::Bind(&Context::CreateChannel, context_.get(),
channel_handle, mode));
}

// complete initialization on the background thread
context_->ipc_message_loop()->PostTask(FROM_HERE, NewRunnableMethod(
context_.get(), &Context::OnChannelOpened));
context_->ipc_message_loop()->PostTask(
FROM_HERE, base::Bind(&Context::OnChannelOpened, context_.get()));
}

void ChannelProxy::Close() {
Expand All @@ -340,8 +341,8 @@ void ChannelProxy::Close() {
context_->Clear();

if (context_->ipc_message_loop()) {
context_->ipc_message_loop()->PostTask(FROM_HERE, NewRunnableMethod(
context_.get(), &Context::OnChannelClosed));
context_->ipc_message_loop()->PostTask(
FROM_HERE, base::Bind(&Context::OnChannelClosed, context_.get()));
}
}

Expand All @@ -364,10 +365,8 @@ void ChannelProxy::AddFilter(MessageFilter* filter) {

void ChannelProxy::RemoveFilter(MessageFilter* filter) {
context_->ipc_message_loop()->PostTask(
FROM_HERE, NewRunnableMethod(
context_.get(),
&Context::OnRemoveFilter,
make_scoped_refptr(filter)));
FROM_HERE, base::Bind(&Context::OnRemoveFilter, context_.get(),
make_scoped_refptr(filter)));
}

void ChannelProxy::ClearIPCMessageLoop() {
Expand Down
9 changes: 6 additions & 3 deletions ipc/ipc_channel_win.cc
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include <windows.h>

#include "base/auto_reset.h"
#include "base/bind.h"
#include "base/compiler_specific.h"
#include "base/logging.h"
#include "base/threading/non_thread_safe.h"
Expand Down Expand Up @@ -35,7 +36,7 @@ Channel::ChannelImpl::ChannelImpl(const IPC::ChannelHandle &channel_handle,
listener_(listener),
waiting_connect_(mode & MODE_SERVER_FLAG),
processing_incoming_(false),
ALLOW_THIS_IN_INITIALIZER_LIST(factory_(this)) {
ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {
CreatePipe(channel_handle, mode);
}

Expand Down Expand Up @@ -177,8 +178,10 @@ bool Channel::ChannelImpl::Connect() {
// Complete setup asynchronously. By not setting input_state_.is_pending
// to true, we indicate to OnIOCompleted that this is the special
// initialization signal.
MessageLoopForIO::current()->PostTask(FROM_HERE, factory_.NewRunnableMethod(
&Channel::ChannelImpl::OnIOCompleted, &input_state_.context, 0, 0));
MessageLoopForIO::current()->PostTask(
FROM_HERE, base::Bind(&Channel::ChannelImpl::OnIOCompleted,
weak_factory_.GetWeakPtr(), &input_state_.context,
0, 0));
}

if (!waiting_connect_)
Expand Down
3 changes: 2 additions & 1 deletion ipc/ipc_channel_win.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include <string>

#include "base/memory/scoped_ptr.h"
#include "base/memory/weak_ptr.h"
#include "base/message_loop.h"

namespace base {
Expand Down Expand Up @@ -79,7 +80,7 @@ class Channel::ChannelImpl : public MessageLoopForIO::IOHandler {
// problems. TODO(darin): make this unnecessary
bool processing_incoming_;

ScopedRunnableMethodFactory<ChannelImpl> factory_;
base::WeakPtrFactory<ChannelImpl> weak_factory_;

scoped_ptr<base::NonThreadSafe> thread_check_;

Expand Down
15 changes: 7 additions & 8 deletions ipc/ipc_logging.cc
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
#define IPC_MESSAGE_MACROS_LOG_ENABLED
#endif

#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/command_line.h"
#include "base/location.h"
#include "base/logging.h"
Expand All @@ -29,10 +31,6 @@

using base::Time;

// IPC::Logging is allocated as a singleton, so we don't need any kind of
// special retention program.
DISABLE_RUNNABLE_METHOD_REFCOUNT(IPC::Logging);

namespace IPC {

const int kLogSendDelayMs = 100;
Expand Down Expand Up @@ -163,8 +161,8 @@ void Logging::OnPostDispatchMessage(const Message& message,
if (MessageLoop::current() == main_thread_) {
Log(data);
} else {
main_thread_->PostTask(FROM_HERE, NewRunnableMethod(
this, &Logging::Log, data));
main_thread_->PostTask(
FROM_HERE, base::Bind(&Logging::Log, base::Unretained(this), data));
}
}

Expand Down Expand Up @@ -233,8 +231,9 @@ void Logging::Log(const LogData& data) {
queued_logs_.push_back(data);
if (!queue_invoke_later_pending_) {
queue_invoke_later_pending_ = true;
MessageLoop::current()->PostDelayedTask(FROM_HERE, NewRunnableMethod(
this, &Logging::OnSendLogs), kLogSendDelayMs);
MessageLoop::current()->PostDelayedTask(
FROM_HERE, base::Bind(&Logging::OnSendLogs, base::Unretained(this)),
kLogSendDelayMs);
}
}
}
Expand Down
20 changes: 11 additions & 9 deletions ipc/ipc_sync_channel.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

#include "ipc/ipc_sync_channel.h"

#include "base/bind.h"
#include "base/lazy_instance.h"
#include "base/location.h"
#include "base/logging.h"
Expand Down Expand Up @@ -67,10 +68,9 @@ class SyncChannel::ReceivedSyncMsgQueue :

dispatch_event_.Signal();
if (!was_task_pending) {
listener_message_loop_->PostTask(FROM_HERE, NewRunnableMethod(
this,
&ReceivedSyncMsgQueue::DispatchMessagesTask,
scoped_refptr<SyncContext>(context)));
listener_message_loop_->PostTask(
FROM_HERE, base::Bind(&ReceivedSyncMsgQueue::DispatchMessagesTask,
this, scoped_refptr<SyncContext>(context)));
}
}

Expand Down Expand Up @@ -259,8 +259,9 @@ bool SyncChannel::SyncContext::Pop() {
// blocking Send() call, whose reply we received after we made this last
// Send() call. So check if we have any queued replies available that
// can now unblock the listener thread.
ipc_message_loop()->PostTask(FROM_HERE, NewRunnableMethod(
received_sync_msgs_.get(), &ReceivedSyncMsgQueue::DispatchReplies));
ipc_message_loop()->PostTask(
FROM_HERE, base::Bind(&ReceivedSyncMsgQueue::DispatchReplies,
received_sync_msgs_.get()));

return result;
}
Expand Down Expand Up @@ -427,9 +428,10 @@ bool SyncChannel::SendWithTimeout(Message* message, int timeout_ms) {
// We use the sync message id so that when a message times out, we don't
// confuse it with another send that is either above/below this Send in
// the call stack.
context->ipc_message_loop()->PostDelayedTask(FROM_HERE,
NewRunnableMethod(context.get(),
&SyncContext::OnSendTimeout, message_id), timeout_ms);
context->ipc_message_loop()->PostDelayedTask(
FROM_HERE,
base::Bind(&SyncContext::OnSendTimeout, context.get(), message_id),
timeout_ms);
}

// Wait for reply, or for any other incoming synchronous messages.
Expand Down
44 changes: 25 additions & 19 deletions ipc/ipc_sync_channel_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include <vector>

#include "base/basictypes.h"
#include "base/bind.h"
#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
#include "base/message_loop.h"
Expand Down Expand Up @@ -70,9 +71,9 @@ class Worker : public Channel::Listener, public Message::Sender {
// destruction.
virtual ~Worker() {
WaitableEvent listener_done(false, false), ipc_done(false, false);
ListenerThread()->message_loop()->PostTask(FROM_HERE, NewRunnableMethod(
this, &Worker::OnListenerThreadShutdown1, &listener_done,
&ipc_done));
ListenerThread()->message_loop()->PostTask(
FROM_HERE, base::Bind(&Worker::OnListenerThreadShutdown1, this,
&listener_done, &ipc_done));
listener_done.Wait();
ipc_done.Wait();
ipc_thread_.Stop();
Expand All @@ -92,8 +93,8 @@ class Worker : public Channel::Listener, public Message::Sender {
}
void Start() {
StartThread(&listener_thread_, MessageLoop::TYPE_DEFAULT);
ListenerThread()->message_loop()->PostTask(FROM_HERE, NewRunnableMethod(
this, &Worker::OnStart));
ListenerThread()->message_loop()->PostTask(
FROM_HERE, base::Bind(&Worker::OnStart, this));
}
void OverrideThread(base::Thread* overrided_thread) {
DCHECK(overrided_thread_ == NULL);
Expand Down Expand Up @@ -180,17 +181,19 @@ class Worker : public Channel::Listener, public Message::Sender {

MessageLoop::current()->RunAllPending();

ipc_thread_.message_loop()->PostTask(FROM_HERE, NewRunnableMethod(
this, &Worker::OnIPCThreadShutdown, listener_event, ipc_event));
ipc_thread_.message_loop()->PostTask(
FROM_HERE, base::Bind(&Worker::OnIPCThreadShutdown, this,
listener_event, ipc_event));
}

void OnIPCThreadShutdown(WaitableEvent* listener_event,
WaitableEvent* ipc_event) {
MessageLoop::current()->RunAllPending();
ipc_event->Signal();

listener_thread_.message_loop()->PostTask(FROM_HERE, NewRunnableMethod(
this, &Worker::OnListenerThreadShutdown2, listener_event));
listener_thread_.message_loop()->PostTask(
FROM_HERE, base::Bind(&Worker::OnListenerThreadShutdown2, this,
listener_event));
}

void OnListenerThreadShutdown2(WaitableEvent* listener_event) {
Expand Down Expand Up @@ -1024,8 +1027,9 @@ class TestSyncMessageFilter : public SyncMessageFilter {

virtual void OnFilterAdded(Channel* channel) {
SyncMessageFilter::OnFilterAdded(channel);
thread_.message_loop()->PostTask(FROM_HERE, NewRunnableMethod(
this, &TestSyncMessageFilter::SendMessageOnHelperThread));
thread_.message_loop()->PostTask(
FROM_HERE,
base::Bind(&TestSyncMessageFilter::SendMessageOnHelperThread, this));
}

void SendMessageOnHelperThread() {
Expand Down Expand Up @@ -1065,8 +1069,10 @@ class ServerSendAfterClose : public Worker {
}

bool SendDummy() {
ListenerThread()->message_loop()->PostTask(FROM_HERE, NewRunnableMethod(
this, &ServerSendAfterClose::Send, new SyncChannelTestMsg_NoArgs));
ListenerThread()->message_loop()->PostTask(
FROM_HERE, base::IgnoreReturn<bool>(
base::Bind(&ServerSendAfterClose::Send, this,
new SyncChannelTestMsg_NoArgs)));
return true;
}

Expand Down Expand Up @@ -1130,8 +1136,8 @@ class RestrictedDispatchServer : public Worker {
Send(msg);
// Signal the event after the message has been sent on the channel, on the
// IPC thread.
ipc_thread().message_loop()->PostTask(FROM_HERE,
NewRunnableMethod(this, &RestrictedDispatchServer::OnPingSent));
ipc_thread().message_loop()->PostTask(
FROM_HERE, base::Bind(&RestrictedDispatchServer::OnPingSent, this));
}

base::Thread* ListenerThread() { return Worker::ListenerThread(); }
Expand Down Expand Up @@ -1186,8 +1192,8 @@ class RestrictedDispatchClient : public Worker {
// send a message on that same channel.
channel()->SetRestrictDispatchToSameChannel(true);

server_->ListenerThread()->message_loop()->PostTask(FROM_HERE,
NewRunnableMethod(server_, &RestrictedDispatchServer::OnDoPing, 1));
server_->ListenerThread()->message_loop()->PostTask(
FROM_HERE, base::Bind(&RestrictedDispatchServer::OnDoPing, server_, 1));
sent_ping_event_->Wait();
Send(new SyncChannelTestMsg_NoArgs);
if (ping_ == 1)
Expand All @@ -1199,8 +1205,8 @@ class RestrictedDispatchClient : public Worker {
"non_restricted_channel", Channel::MODE_CLIENT, this,
ipc_thread().message_loop_proxy(), true, shutdown_event()));

server_->ListenerThread()->message_loop()->PostTask(FROM_HERE,
NewRunnableMethod(server_, &RestrictedDispatchServer::OnDoPing, 2));
server_->ListenerThread()->message_loop()->PostTask(
FROM_HERE, base::Bind(&RestrictedDispatchServer::OnDoPing, server_, 2));
sent_ping_event_->Wait();
// Check that the incoming message is *not* dispatched when sending on the
// non restricted channel.
Expand Down
7 changes: 3 additions & 4 deletions ipc/ipc_sync_message_filter.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

#include "ipc/ipc_sync_message_filter.h"

#include "base/bind.h"
#include "base/location.h"
#include "base/logging.h"
#include "base/message_loop_proxy.h"
Expand Down Expand Up @@ -34,8 +35,7 @@ bool SyncMessageFilter::Send(Message* message) {

if (!message->is_sync()) {
io_loop_->PostTask(
FROM_HERE,
NewRunnableMethod(this, &SyncMessageFilter::SendOnIOThread, message));
FROM_HERE, base::Bind(&SyncMessageFilter::SendOnIOThread, this, message));
return true;
}

Expand All @@ -55,8 +55,7 @@ bool SyncMessageFilter::Send(Message* message) {
}

io_loop_->PostTask(
FROM_HERE,
NewRunnableMethod(this, &SyncMessageFilter::SendOnIOThread, message));
FROM_HERE, base::Bind(&SyncMessageFilter::SendOnIOThread, this, message));

base::WaitableEvent* events[2] = { shutdown_event_, &done_event };
base::WaitableEvent::WaitMany(events, 2);
Expand Down

0 comments on commit 72b6f8e

Please sign in to comment.