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

Unified Diff: content/renderer/render_thread_impl.cc

Issue 1227303002: Set listener task runner before connect channel. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix trybot error. Created 5 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 | « content/renderer/render_thread_impl.h ('k') | content/renderer/render_thread_impl_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/render_thread_impl.cc
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
index 8a155a4a97573649ff0b2cbbe22ec434219c72cc..153c5fbd838962820fce5afab77aec2bd9969668 100644
--- a/content/renderer/render_thread_impl.cc
+++ b/content/renderer/render_thread_impl.cc
@@ -557,15 +557,36 @@ void RenderThreadImpl::HistogramCustomizer::SetCommonHost(
}
}
+// static
+RenderThreadImpl* RenderThreadImpl::Create(
+ const InProcessChildThreadParams& params) {
+ scoped_ptr<scheduler::RendererScheduler> renderer_scheduler =
+ scheduler::RendererScheduler::Create();
+ return new RenderThreadImpl(params, renderer_scheduler.Pass());
+}
+
+// static
+RenderThreadImpl* RenderThreadImpl::Create(
+ scoped_ptr<base::MessageLoop> main_message_loop) {
+ scoped_ptr<scheduler::RendererScheduler> renderer_scheduler =
+ scheduler::RendererScheduler::Create();
+ return new RenderThreadImpl(main_message_loop.Pass(),
+ renderer_scheduler.Pass());
+}
+
RenderThreadImpl* RenderThreadImpl::current() {
return lazy_tls.Pointer()->Get();
}
-RenderThreadImpl::RenderThreadImpl(const InProcessChildThreadParams& params)
+RenderThreadImpl::RenderThreadImpl(
+ const InProcessChildThreadParams& params,
+ scoped_ptr<scheduler::RendererScheduler> scheduler)
: ChildThreadImpl(Options::Builder()
.InBrowserProcess(params)
.UseMojoChannel(ShouldUseMojoChannel())
+ .ListenerTaskRunner(scheduler->DefaultTaskRunner())
.Build()),
+ renderer_scheduler_(scheduler.Pass()),
raster_worker_pool_(new RasterWorkerPool()) {
Init();
}
@@ -573,10 +594,13 @@ RenderThreadImpl::RenderThreadImpl(const InProcessChildThreadParams& params)
// When we run plugins in process, we actually run them on the render thread,
// which means that we need to make the render thread pump UI events.
RenderThreadImpl::RenderThreadImpl(
- scoped_ptr<base::MessageLoop> main_message_loop)
+ scoped_ptr<base::MessageLoop> main_message_loop,
+ scoped_ptr<scheduler::RendererScheduler> scheduler)
: ChildThreadImpl(Options::Builder()
.UseMojoChannel(ShouldUseMojoChannel())
+ .ListenerTaskRunner(scheduler->DefaultTaskRunner())
.Build()),
+ renderer_scheduler_(scheduler.Pass()),
main_message_loop_(main_message_loop.Pass()),
raster_worker_pool_(new RasterWorkerPool()) {
Init();
@@ -613,8 +637,6 @@ void RenderThreadImpl::Init() {
dom_storage_dispatcher_.reset(new DomStorageDispatcher());
main_thread_indexed_db_dispatcher_.reset(new IndexedDBDispatcher(
thread_safe_sender()));
- renderer_scheduler_ = scheduler::RendererScheduler::Create();
- channel()->SetListenerTaskRunner(renderer_scheduler_->DefaultTaskRunner());
main_thread_cache_storage_dispatcher_.reset(
new CacheStorageDispatcher(thread_safe_sender()));
embedded_worker_dispatcher_.reset(new EmbeddedWorkerDispatcher());
« no previous file with comments | « content/renderer/render_thread_impl.h ('k') | content/renderer/render_thread_impl_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698