| Index: ipc/ipc_channel_mojo.cc
|
| diff --git a/ipc/ipc_channel_mojo.cc b/ipc/ipc_channel_mojo.cc
|
| index 98fde286ae32464ef0ed191ed723c1f8b6c7a45f..1e4b49997ca7d920b55adb702d6204292496e122 100644
|
| --- a/ipc/ipc_channel_mojo.cc
|
| +++ b/ipc/ipc_channel_mojo.cc
|
| @@ -45,18 +45,29 @@ namespace {
|
|
|
| class MojoChannelFactory : public ChannelFactory {
|
| public:
|
| - MojoChannelFactory(mojo::ScopedMessagePipeHandle handle, Channel::Mode mode)
|
| - : handle_(std::move(handle)), mode_(mode) {}
|
| + MojoChannelFactory(
|
| + mojo::ScopedMessagePipeHandle handle,
|
| + Channel::Mode mode,
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner)
|
| + : handle_(std::move(handle)),
|
| + mode_(mode),
|
| + ipc_task_runner_(ipc_task_runner) {}
|
|
|
| std::string GetName() const override { return ""; }
|
|
|
| std::unique_ptr<Channel> BuildChannel(Listener* listener) override {
|
| - return ChannelMojo::Create(std::move(handle_), mode_, listener);
|
| + return ChannelMojo::Create(
|
| + std::move(handle_), mode_, listener, ipc_task_runner_);
|
| + }
|
| +
|
| + scoped_refptr<base::SingleThreadTaskRunner> GetIPCTaskRunner() override {
|
| + return ipc_task_runner_;
|
| }
|
|
|
| private:
|
| mojo::ScopedMessagePipeHandle handle_;
|
| const Channel::Mode mode_;
|
| + scoped_refptr<base::SingleThreadTaskRunner> ipc_task_runner_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(MojoChannelFactory);
|
| };
|
| @@ -231,27 +242,33 @@ MojoResult UnwrapAttachment(mojom::SerializedHandlePtr handle,
|
| std::unique_ptr<ChannelMojo> ChannelMojo::Create(
|
| mojo::ScopedMessagePipeHandle handle,
|
| Mode mode,
|
| - Listener* listener) {
|
| - return base::WrapUnique(new ChannelMojo(std::move(handle), mode, listener));
|
| + Listener* listener,
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner) {
|
| + return base::WrapUnique(
|
| + new ChannelMojo(std::move(handle), mode, listener, ipc_task_runner));
|
| }
|
|
|
| // static
|
| std::unique_ptr<ChannelFactory> ChannelMojo::CreateServerFactory(
|
| - mojo::ScopedMessagePipeHandle handle) {
|
| - return base::WrapUnique(
|
| - new MojoChannelFactory(std::move(handle), Channel::MODE_SERVER));
|
| + mojo::ScopedMessagePipeHandle handle,
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner) {
|
| + return base::WrapUnique(new MojoChannelFactory(
|
| + std::move(handle), Channel::MODE_SERVER, ipc_task_runner));
|
| }
|
|
|
| // static
|
| std::unique_ptr<ChannelFactory> ChannelMojo::CreateClientFactory(
|
| - mojo::ScopedMessagePipeHandle handle) {
|
| - return base::WrapUnique(
|
| - new MojoChannelFactory(std::move(handle), Channel::MODE_CLIENT));
|
| + mojo::ScopedMessagePipeHandle handle,
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner) {
|
| + return base::WrapUnique(new MojoChannelFactory(
|
| + std::move(handle), Channel::MODE_CLIENT, ipc_task_runner));
|
| }
|
|
|
| -ChannelMojo::ChannelMojo(mojo::ScopedMessagePipeHandle handle,
|
| - Mode mode,
|
| - Listener* listener)
|
| +ChannelMojo::ChannelMojo(
|
| + mojo::ScopedMessagePipeHandle handle,
|
| + Mode mode,
|
| + Listener* listener,
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner)
|
| : pipe_(handle.get()),
|
| listener_(listener),
|
| waiting_connect_(true),
|
|
|