| Index: ipc/ipc_channel_proxy.cc
 | 
| diff --git a/ipc/ipc_channel_proxy.cc b/ipc/ipc_channel_proxy.cc
 | 
| index 3365aef248747a657965bfd82c5751a8e69630b8..8928520a150e7662fe02abd433b19e957a169068 100644
 | 
| --- a/ipc/ipc_channel_proxy.cc
 | 
| +++ b/ipc/ipc_channel_proxy.cc
 | 
| @@ -311,6 +311,11 @@ void ChannelProxy::Context::OnRemoveFilter(MessageFilter* filter) {
 | 
|    NOTREACHED() << "filter to be removed not found";
 | 
|  }
 | 
|  
 | 
| +void ChannelProxy::Context::RunWithChannel(
 | 
| +    const RunOnIOThreadCallback& callback) {
 | 
| +  callback.Run(channel_.get());
 | 
| +}
 | 
| +
 | 
|  // Called on the listener's thread
 | 
|  void ChannelProxy::Context::AddFilter(MessageFilter* filter) {
 | 
|    base::AutoLock auto_lock(pending_filters_lock_);
 | 
| @@ -610,6 +615,12 @@ void ChannelProxy::GetGenericRemoteAssociatedInterface(
 | 
|                              context_, name, base::Passed(&handle)));
 | 
|  }
 | 
|  
 | 
| +void ChannelProxy::RunOnIOThread(const RunOnIOThreadCallback& callback) {
 | 
| +  DCHECK(did_init_);
 | 
| +  context_->ipc_task_runner()->PostTask(
 | 
| +      FROM_HERE, base::Bind(&Context::RunWithChannel, context_, callback));
 | 
| +}
 | 
| +
 | 
|  void ChannelProxy::ClearIPCTaskRunner() {
 | 
|    DCHECK(CalledOnValidThread());
 | 
|  
 | 
| 
 |