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

Side by Side Diff: content/renderer/render_thread_impl.cc

Issue 977573002: content: Add an overridable task runner to ChildThreadImpl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased. Created 5 years, 9 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 414 matching lines...) Expand 10 before | Expand all | Expand 10 after
425 blink::mainThreadIsolate()->SetCreateHistogramFunction(CreateHistogram); 425 blink::mainThreadIsolate()->SetCreateHistogramFunction(CreateHistogram);
426 } 426 }
427 } 427 }
428 428
429 RenderThreadImpl* RenderThreadImpl::current() { 429 RenderThreadImpl* RenderThreadImpl::current() {
430 return lazy_tls.Pointer()->Get(); 430 return lazy_tls.Pointer()->Get();
431 } 431 }
432 432
433 // When we run plugins in process, we actually run them on the render thread, 433 // When we run plugins in process, we actually run them on the render thread,
434 // which means that we need to make the render thread pump UI events. 434 // which means that we need to make the render thread pump UI events.
435 RenderThreadImpl::RenderThreadImpl() 435 RenderThreadImpl::RenderThreadImpl(
436 : ChildThreadImpl(Options::Builder() 436 scoped_ptr<RendererScheduler> renderer_scheduler)
437 .InBrowserProcess(true) 437 : ChildThreadImpl(
438 .UseMojoChannel(ShouldUseMojoChannel()) 438 Options::Builder()
439 .Build()) { 439 .InBrowserProcess(true)
440 Init(); 440 .UseMojoChannel(ShouldUseMojoChannel())
441 } 441 .WithTaskRunner(renderer_scheduler->DefaultTaskRunner())
442 442 .Build()),
443 RenderThreadImpl::RenderThreadImpl(const std::string& channel_name) 443 renderer_scheduler_(renderer_scheduler.Pass()) {
444 : ChildThreadImpl(Options::Builder()
445 .InBrowserProcess(true)
446 .UseMojoChannel(ShouldUseMojoChannel())
447 .WithChannelName(channel_name)
448 .Build()) {
449 Init(); 444 Init();
450 } 445 }
451 446
452 RenderThreadImpl::RenderThreadImpl( 447 RenderThreadImpl::RenderThreadImpl(
453 scoped_ptr<base::MessageLoop> main_message_loop) 448 const std::string& channel_name,
454 : ChildThreadImpl(Options::Builder() 449 scoped_ptr<RendererScheduler> renderer_scheduler)
455 .InBrowserProcess(true) 450 : ChildThreadImpl(
456 .UseMojoChannel(ShouldUseMojoChannel()) 451 Options::Builder()
457 .Build()), 452 .InBrowserProcess(true)
453 .UseMojoChannel(ShouldUseMojoChannel())
454 .WithChannelName(channel_name)
455 .WithTaskRunner(renderer_scheduler->DefaultTaskRunner())
456 .Build()),
457 renderer_scheduler_(renderer_scheduler.Pass()) {
458 Init();
459 }
460
461 RenderThreadImpl::RenderThreadImpl(
462 scoped_ptr<base::MessageLoop> main_message_loop,
463 scoped_ptr<RendererScheduler> renderer_scheduler)
464 : ChildThreadImpl(
465 Options::Builder()
466 .InBrowserProcess(true)
467 .UseMojoChannel(ShouldUseMojoChannel())
468 .WithTaskRunner(renderer_scheduler->DefaultTaskRunner())
469 .Build()),
470 renderer_scheduler_(renderer_scheduler.Pass()),
458 main_message_loop_(main_message_loop.Pass()) { 471 main_message_loop_(main_message_loop.Pass()) {
459 Init(); 472 Init();
460 } 473 }
461 474
462 void RenderThreadImpl::Init() { 475 void RenderThreadImpl::Init() {
463 TRACE_EVENT_BEGIN_ETW("RenderThreadImpl::Init", 0, ""); 476 TRACE_EVENT_BEGIN_ETW("RenderThreadImpl::Init", 0, "");
464 477
465 base::trace_event::TraceLog::GetInstance()->SetThreadSortIndex( 478 base::trace_event::TraceLog::GetInstance()->SetThreadSortIndex(
466 base::PlatformThread::CurrentId(), 479 base::PlatformThread::CurrentId(),
467 kTraceEventRendererMainThreadSortIndex); 480 kTraceEventRendererMainThreadSortIndex);
(...skipping 16 matching lines...) Expand all
484 hidden_widget_count_ = 0; 497 hidden_widget_count_ = 0;
485 idle_notification_delay_in_ms_ = kInitialIdleHandlerDelayMs; 498 idle_notification_delay_in_ms_ = kInitialIdleHandlerDelayMs;
486 idle_notifications_to_skip_ = 0; 499 idle_notifications_to_skip_ = 0;
487 layout_test_mode_ = false; 500 layout_test_mode_ = false;
488 501
489 appcache_dispatcher_.reset( 502 appcache_dispatcher_.reset(
490 new AppCacheDispatcher(Get(), new AppCacheFrontendImpl())); 503 new AppCacheDispatcher(Get(), new AppCacheFrontendImpl()));
491 dom_storage_dispatcher_.reset(new DomStorageDispatcher()); 504 dom_storage_dispatcher_.reset(new DomStorageDispatcher());
492 main_thread_indexed_db_dispatcher_.reset(new IndexedDBDispatcher( 505 main_thread_indexed_db_dispatcher_.reset(new IndexedDBDispatcher(
493 thread_safe_sender())); 506 thread_safe_sender()));
494 renderer_scheduler_ = RendererScheduler::Create();
495 channel()->SetListenerTaskRunner(renderer_scheduler_->DefaultTaskRunner()); 507 channel()->SetListenerTaskRunner(renderer_scheduler_->DefaultTaskRunner());
496 embedded_worker_dispatcher_.reset(new EmbeddedWorkerDispatcher()); 508 embedded_worker_dispatcher_.reset(new EmbeddedWorkerDispatcher());
497 509
498 // Note: This may reorder messages from the ResourceDispatcher with respect to 510 // Note: This may reorder messages from the ResourceDispatcher with respect to
499 // other subsystems. 511 // other subsystems.
500 resource_dispatch_throttler_.reset(new ResourceDispatchThrottler( 512 resource_dispatch_throttler_.reset(new ResourceDispatchThrottler(
501 static_cast<RenderThread*>(this), renderer_scheduler_.get(), 513 static_cast<RenderThread*>(this), renderer_scheduler_.get(),
502 base::TimeDelta::FromSecondsD(kThrottledResourceRequestFlushPeriodS), 514 base::TimeDelta::FromSecondsD(kThrottledResourceRequestFlushPeriodS),
503 kMaxResourceRequestsPerFlushWhenThrottled)); 515 kMaxResourceRequestsPerFlushWhenThrottled));
504 resource_dispatcher()->set_message_sender(resource_dispatch_throttler_.get()); 516 resource_dispatcher()->set_message_sender(resource_dispatch_throttler_.get());
(...skipping 1324 matching lines...) Expand 10 before | Expand all | Expand 10 after
1829 mojo::InterfaceRequest<mojo::ServiceProvider> services, 1841 mojo::InterfaceRequest<mojo::ServiceProvider> services,
1830 mojo::ServiceProviderPtr exposed_services) 1842 mojo::ServiceProviderPtr exposed_services)
1831 : services(services.Pass()), 1843 : services(services.Pass()),
1832 exposed_services(exposed_services.Pass()) { 1844 exposed_services(exposed_services.Pass()) {
1833 } 1845 }
1834 1846
1835 RenderThreadImpl::PendingRenderFrameConnect::~PendingRenderFrameConnect() { 1847 RenderThreadImpl::PendingRenderFrameConnect::~PendingRenderFrameConnect() {
1836 } 1848 }
1837 1849
1838 } // namespace content 1850 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698