Index: content/browser/mojo/mojo_application_host.cc |
diff --git a/content/browser/mojo/mojo_application_host.cc b/content/browser/mojo/mojo_application_host.cc |
index 883945f92badedb8198ec0bc0ad776fc89acc62b..a9d00026bd04ee8c352712ff818a1a899dbc6428 100644 |
--- a/content/browser/mojo/mojo_application_host.cc |
+++ b/content/browser/mojo/mojo_application_host.cc |
@@ -63,9 +63,18 @@ bool MojoApplicationHost::Init() { |
mojo::embedder::PlatformChannelPair channel_pair; |
+ scoped_refptr<base::TaskRunner> io_task_runner; |
+ if (io_task_runner_override_) { |
+ io_task_runner = io_task_runner_override_; |
+ } else { |
+ io_task_runner = |
+ BrowserThread::UnsafeGetMessageLoopForThread(BrowserThread::IO) |
+ ->task_runner(); |
+ } |
+ |
mojo::ScopedMessagePipeHandle message_pipe = channel_init_.Init( |
PlatformFileFromScopedPlatformHandle(channel_pair.PassServerHandle()), |
- BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO)); |
+ io_task_runner); |
if (!message_pipe.is_valid()) |
return false; |
@@ -93,4 +102,9 @@ void MojoApplicationHost::WillDestroySoon() { |
channel_init_.WillDestroySoon(); |
} |
+void MojoApplicationHost::OverrideIOTaskRunnerForTest( |
+ scoped_refptr<base::TaskRunner> io_task_runner) { |
+ io_task_runner_override_ = io_task_runner; |
+} |
+ |
} // namespace content |