Index: ipc/ipc_channel_factory.cc |
diff --git a/ipc/ipc_channel_factory.cc b/ipc/ipc_channel_factory.cc |
index dbb24c087e0cdf6cfe16b4a438bf14dd7175b690..8fb4d772e0072c8186cc6635bda73593af4c0d74 100644 |
--- a/ipc/ipc_channel_factory.cc |
+++ b/ipc/ipc_channel_factory.cc |
@@ -13,8 +13,11 @@ namespace { |
class PlatformChannelFactory : public ChannelFactory { |
public: |
- PlatformChannelFactory(ChannelHandle handle, Channel::Mode mode) |
- : handle_(handle), mode_(mode) {} |
+ PlatformChannelFactory( |
+ ChannelHandle handle, |
+ Channel::Mode mode, |
+ const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner) |
+ : handle_(handle), mode_(mode), ipc_task_runner_(ipc_task_runner) {} |
std::string GetName() const override { |
return handle_.name; |
@@ -23,14 +26,20 @@ class PlatformChannelFactory : public ChannelFactory { |
std::unique_ptr<Channel> BuildChannel(Listener* listener) override { |
if (handle_.mojo_handle.is_valid()) { |
return ChannelMojo::Create( |
- mojo::ScopedMessagePipeHandle(handle_.mojo_handle), mode_, listener); |
+ mojo::ScopedMessagePipeHandle(handle_.mojo_handle), mode_, listener, |
+ ipc_task_runner_); |
} |
return Channel::Create(handle_, mode_, listener); |
} |
+ scoped_refptr<base::SingleThreadTaskRunner> GetIPCTaskRunner() override { |
+ return ipc_task_runner_; |
+ } |
+ |
private: |
ChannelHandle handle_; |
Channel::Mode mode_; |
+ scoped_refptr<base::SingleThreadTaskRunner> ipc_task_runner_; |
DISALLOW_COPY_AND_ASSIGN(PlatformChannelFactory); |
}; |
@@ -40,8 +49,10 @@ class PlatformChannelFactory : public ChannelFactory { |
// static |
std::unique_ptr<ChannelFactory> ChannelFactory::Create( |
const ChannelHandle& handle, |
- Channel::Mode mode) { |
- return base::WrapUnique(new PlatformChannelFactory(handle, mode)); |
+ Channel::Mode mode, |
+ const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner) { |
+ return base::WrapUnique( |
+ new PlatformChannelFactory(handle, mode, ipc_task_runner)); |
} |
} // namespace IPC |