Chromium Code Reviews| Index: content/child/child_thread_impl.cc |
| diff --git a/content/child/child_thread_impl.cc b/content/child/child_thread_impl.cc |
| index f62222c7d419964c4db8807720ae140706697450..12cc0106578c614dd39c9de1e11ebc4901f4c157 100644 |
| --- a/content/child/child_thread_impl.cc |
| +++ b/content/child/child_thread_impl.cc |
| @@ -245,7 +245,8 @@ ChildThreadImpl::Options::Options() |
| : channel_name(base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( |
| switches::kProcessChannelID)), |
| use_mojo_channel(false), |
| - in_browser_process(false) { |
| + in_browser_process(false), |
| + task_runner(base::MessageLoopProxy::current()) { |
| } |
| ChildThreadImpl::Options::~Options() { |
| @@ -280,6 +281,13 @@ ChildThreadImpl::Options::Builder::AddStartupFilter( |
| return *this; |
| } |
| +ChildThreadImpl::Options::Builder& |
| +ChildThreadImpl::Options::Builder::WithTaskRunner( |
| + scoped_refptr<base::SingleThreadTaskRunner> task_runner) { |
| + options_.task_runner = task_runner; |
| + return *this; |
| +} |
| + |
| ChildThreadImpl::Options ChildThreadImpl::Options::Builder::Build() { |
| return options_; |
| } |
| @@ -293,14 +301,12 @@ bool ChildThreadImpl::ChildThreadMessageRouter::Send(IPC::Message* msg) { |
| } |
| ChildThreadImpl::ChildThreadImpl() |
| - : router_(this), |
| - in_browser_process_(false), |
| - channel_connected_factory_(this) { |
| - Init(Options::Builder().Build()); |
| + : ChildThreadImpl(Options::Builder().Build()) { |
|
Sami
2015/03/06 17:01:34
So turns out this was triggering an MSVC compiler
|
| } |
| ChildThreadImpl::ChildThreadImpl(const Options& options) |
| : router_(this), |
| + task_runner_(options.task_runner), |
| in_browser_process_(options.in_browser_process), |
| channel_connected_factory_(this) { |
| Init(options); |
| @@ -358,8 +364,7 @@ void ChildThreadImpl::Init(const Options& options) { |
| thread_safe_sender_ = new ThreadSafeSender( |
| base::MessageLoopProxy::current().get(), sync_message_filter_.get()); |
| - resource_dispatcher_.reset(new ResourceDispatcher( |
| - this, message_loop()->task_runner())); |
| + resource_dispatcher_.reset(new ResourceDispatcher(this, GetTaskRunner())); |
| websocket_dispatcher_.reset(new WebSocketDispatcher); |
| file_system_dispatcher_.reset(new FileSystemDispatcher()); |
| @@ -524,6 +529,10 @@ bool ChildThreadImpl::Send(IPC::Message* msg) { |
| return channel_->Send(msg); |
| } |
| +scoped_refptr<base::SingleThreadTaskRunner> ChildThreadImpl::GetTaskRunner() { |
| + return task_runner_; |
| +} |
| + |
| #if defined(OS_WIN) |
| void ChildThreadImpl::PreCacheFont(const LOGFONT& log_font) { |
| Send(new ChildProcessHostMsg_PreCacheFont(log_font)); |