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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/render_thread_impl.h" 5 #include "content/renderer/render_thread_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <map> 9 #include <map>
10 #include <vector> 10 #include <vector>
(...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after
550 550
551 void RenderThreadImpl::HistogramCustomizer::SetCommonHost( 551 void RenderThreadImpl::HistogramCustomizer::SetCommonHost(
552 const std::string& host) { 552 const std::string& host) {
553 if (host != common_host_) { 553 if (host != common_host_) {
554 common_host_ = host; 554 common_host_ = host;
555 common_host_histogram_suffix_ = HostToCustomHistogramSuffix(host); 555 common_host_histogram_suffix_ = HostToCustomHistogramSuffix(host);
556 blink::mainThreadIsolate()->SetCreateHistogramFunction(CreateHistogram); 556 blink::mainThreadIsolate()->SetCreateHistogramFunction(CreateHistogram);
557 } 557 }
558 } 558 }
559 559
560 // static
561 RenderThreadImpl* RenderThreadImpl::Create(
562 const InProcessChildThreadParams& params) {
563 scoped_ptr<scheduler::RendererScheduler> renderer_scheduler =
564 scheduler::RendererScheduler::Create();
565 return new RenderThreadImpl(params, renderer_scheduler.Pass());
566 }
567
568 // static
569 RenderThreadImpl* RenderThreadImpl::Create(
570 scoped_ptr<base::MessageLoop> main_message_loop) {
571 scoped_ptr<scheduler::RendererScheduler> renderer_scheduler =
572 scheduler::RendererScheduler::Create();
573 return new RenderThreadImpl(main_message_loop.Pass(),
574 renderer_scheduler.Pass());
575 }
576
560 RenderThreadImpl* RenderThreadImpl::current() { 577 RenderThreadImpl* RenderThreadImpl::current() {
561 return lazy_tls.Pointer()->Get(); 578 return lazy_tls.Pointer()->Get();
562 } 579 }
563 580
564 RenderThreadImpl::RenderThreadImpl(const InProcessChildThreadParams& params) 581 RenderThreadImpl::RenderThreadImpl(
582 const InProcessChildThreadParams& params,
583 scoped_ptr<scheduler::RendererScheduler> scheduler)
565 : ChildThreadImpl(Options::Builder() 584 : ChildThreadImpl(Options::Builder()
566 .InBrowserProcess(params) 585 .InBrowserProcess(params)
567 .UseMojoChannel(ShouldUseMojoChannel()) 586 .UseMojoChannel(ShouldUseMojoChannel())
587 .ListenerTaskRunner(scheduler->DefaultTaskRunner())
568 .Build()), 588 .Build()),
589 renderer_scheduler_(scheduler.Pass()),
569 raster_worker_pool_(new RasterWorkerPool()) { 590 raster_worker_pool_(new RasterWorkerPool()) {
570 Init(); 591 Init();
571 } 592 }
572 593
573 // When we run plugins in process, we actually run them on the render thread, 594 // When we run plugins in process, we actually run them on the render thread,
574 // which means that we need to make the render thread pump UI events. 595 // which means that we need to make the render thread pump UI events.
575 RenderThreadImpl::RenderThreadImpl( 596 RenderThreadImpl::RenderThreadImpl(
576 scoped_ptr<base::MessageLoop> main_message_loop) 597 scoped_ptr<base::MessageLoop> main_message_loop,
598 scoped_ptr<scheduler::RendererScheduler> scheduler)
577 : ChildThreadImpl(Options::Builder() 599 : ChildThreadImpl(Options::Builder()
578 .UseMojoChannel(ShouldUseMojoChannel()) 600 .UseMojoChannel(ShouldUseMojoChannel())
601 .ListenerTaskRunner(scheduler->DefaultTaskRunner())
579 .Build()), 602 .Build()),
603 renderer_scheduler_(scheduler.Pass()),
580 main_message_loop_(main_message_loop.Pass()), 604 main_message_loop_(main_message_loop.Pass()),
581 raster_worker_pool_(new RasterWorkerPool()) { 605 raster_worker_pool_(new RasterWorkerPool()) {
582 Init(); 606 Init();
583 } 607 }
584 608
585 void RenderThreadImpl::Init() { 609 void RenderThreadImpl::Init() {
586 TRACE_EVENT_BEGIN_ETW("RenderThreadImpl::Init", 0, ""); 610 TRACE_EVENT_BEGIN_ETW("RenderThreadImpl::Init", 0, "");
587 611
588 base::trace_event::TraceLog::GetInstance()->SetThreadSortIndex( 612 base::trace_event::TraceLog::GetInstance()->SetThreadSortIndex(
589 base::PlatformThread::CurrentId(), 613 base::PlatformThread::CurrentId(),
(...skipping 16 matching lines...) Expand all
606 hidden_widget_count_ = 0; 630 hidden_widget_count_ = 0;
607 idle_notification_delay_in_ms_ = kInitialIdleHandlerDelayMs; 631 idle_notification_delay_in_ms_ = kInitialIdleHandlerDelayMs;
608 idle_notifications_to_skip_ = 0; 632 idle_notifications_to_skip_ = 0;
609 layout_test_mode_ = false; 633 layout_test_mode_ = false;
610 634
611 appcache_dispatcher_.reset( 635 appcache_dispatcher_.reset(
612 new AppCacheDispatcher(Get(), new AppCacheFrontendImpl())); 636 new AppCacheDispatcher(Get(), new AppCacheFrontendImpl()));
613 dom_storage_dispatcher_.reset(new DomStorageDispatcher()); 637 dom_storage_dispatcher_.reset(new DomStorageDispatcher());
614 main_thread_indexed_db_dispatcher_.reset(new IndexedDBDispatcher( 638 main_thread_indexed_db_dispatcher_.reset(new IndexedDBDispatcher(
615 thread_safe_sender())); 639 thread_safe_sender()));
616 renderer_scheduler_ = scheduler::RendererScheduler::Create();
617 channel()->SetListenerTaskRunner(renderer_scheduler_->DefaultTaskRunner());
618 main_thread_cache_storage_dispatcher_.reset( 640 main_thread_cache_storage_dispatcher_.reset(
619 new CacheStorageDispatcher(thread_safe_sender())); 641 new CacheStorageDispatcher(thread_safe_sender()));
620 embedded_worker_dispatcher_.reset(new EmbeddedWorkerDispatcher()); 642 embedded_worker_dispatcher_.reset(new EmbeddedWorkerDispatcher());
621 643
622 // Note: This may reorder messages from the ResourceDispatcher with respect to 644 // Note: This may reorder messages from the ResourceDispatcher with respect to
623 // other subsystems. 645 // other subsystems.
624 resource_dispatch_throttler_.reset(new ResourceDispatchThrottler( 646 resource_dispatch_throttler_.reset(new ResourceDispatchThrottler(
625 static_cast<RenderThread*>(this), renderer_scheduler_.get(), 647 static_cast<RenderThread*>(this), renderer_scheduler_.get(),
626 base::TimeDelta::FromSecondsD(kThrottledResourceRequestFlushPeriodS), 648 base::TimeDelta::FromSecondsD(kThrottledResourceRequestFlushPeriodS),
627 kMaxResourceRequestsPerFlushWhenThrottled)); 649 kMaxResourceRequestsPerFlushWhenThrottled));
(...skipping 1343 matching lines...) Expand 10 before | Expand all | Expand 10 after
1971 } 1993 }
1972 1994
1973 void RenderThreadImpl::PendingRenderFrameConnect::OnConnectionError() { 1995 void RenderThreadImpl::PendingRenderFrameConnect::OnConnectionError() {
1974 size_t erased = 1996 size_t erased =
1975 RenderThreadImpl::current()->pending_render_frame_connects_.erase( 1997 RenderThreadImpl::current()->pending_render_frame_connects_.erase(
1976 routing_id_); 1998 routing_id_);
1977 DCHECK_EQ(1u, erased); 1999 DCHECK_EQ(1u, erased);
1978 } 2000 }
1979 2001
1980 } // namespace content 2002 } // namespace content
OLDNEW
« 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