Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(382)

Unified Diff: ipc/ipc_channel_mojo.cc

Issue 2159293002: Plumb explicit IPC task runner through to IPC::Channel creation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add dcheck Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ipc/ipc_channel_mojo.h ('k') | ipc/ipc_channel_mojo_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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),
« no previous file with comments | « ipc/ipc_channel_mojo.h ('k') | ipc/ipc_channel_mojo_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698