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

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: Move GetTaskRunner back to the RenderThread. 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 // TODO(skyostil): This should be set to false. 450 : ChildThreadImpl(
456 .InBrowserProcess(true) 451 Options::Builder()
457 .UseMojoChannel(ShouldUseMojoChannel()) 452 .InBrowserProcess(true)
458 .Build()), 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 // TODO(skyostil): This should be set to false.
467 .InBrowserProcess(true)
468 .UseMojoChannel(ShouldUseMojoChannel())
469 .WithTaskRunner(renderer_scheduler->DefaultTaskRunner())
470 .Build()),
471 renderer_scheduler_(renderer_scheduler.Pass()),
459 main_message_loop_(main_message_loop.Pass()) { 472 main_message_loop_(main_message_loop.Pass()) {
460 Init(); 473 Init();
461 } 474 }
462 475
463 void RenderThreadImpl::Init() { 476 void RenderThreadImpl::Init() {
464 TRACE_EVENT_BEGIN_ETW("RenderThreadImpl::Init", 0, ""); 477 TRACE_EVENT_BEGIN_ETW("RenderThreadImpl::Init", 0, "");
465 478
466 base::trace_event::TraceLog::GetInstance()->SetThreadSortIndex( 479 base::trace_event::TraceLog::GetInstance()->SetThreadSortIndex(
467 base::PlatformThread::CurrentId(), 480 base::PlatformThread::CurrentId(),
468 kTraceEventRendererMainThreadSortIndex); 481 kTraceEventRendererMainThreadSortIndex);
(...skipping 16 matching lines...) Expand all
485 hidden_widget_count_ = 0; 498 hidden_widget_count_ = 0;
486 idle_notification_delay_in_ms_ = kInitialIdleHandlerDelayMs; 499 idle_notification_delay_in_ms_ = kInitialIdleHandlerDelayMs;
487 idle_notifications_to_skip_ = 0; 500 idle_notifications_to_skip_ = 0;
488 layout_test_mode_ = false; 501 layout_test_mode_ = false;
489 502
490 appcache_dispatcher_.reset( 503 appcache_dispatcher_.reset(
491 new AppCacheDispatcher(Get(), new AppCacheFrontendImpl())); 504 new AppCacheDispatcher(Get(), new AppCacheFrontendImpl()));
492 dom_storage_dispatcher_.reset(new DomStorageDispatcher()); 505 dom_storage_dispatcher_.reset(new DomStorageDispatcher());
493 main_thread_indexed_db_dispatcher_.reset(new IndexedDBDispatcher( 506 main_thread_indexed_db_dispatcher_.reset(new IndexedDBDispatcher(
494 thread_safe_sender())); 507 thread_safe_sender()));
495 renderer_scheduler_ = RendererScheduler::Create();
496 channel()->SetListenerTaskRunner(renderer_scheduler_->DefaultTaskRunner()); 508 channel()->SetListenerTaskRunner(renderer_scheduler_->DefaultTaskRunner());
497 embedded_worker_dispatcher_.reset(new EmbeddedWorkerDispatcher()); 509 embedded_worker_dispatcher_.reset(new EmbeddedWorkerDispatcher());
498 510
499 // Note: This may reorder messages from the ResourceDispatcher with respect to 511 // Note: This may reorder messages from the ResourceDispatcher with respect to
500 // other subsystems. 512 // other subsystems.
501 resource_dispatch_throttler_.reset(new ResourceDispatchThrottler( 513 resource_dispatch_throttler_.reset(new ResourceDispatchThrottler(
502 static_cast<RenderThread*>(this), renderer_scheduler_.get(), 514 static_cast<RenderThread*>(this), renderer_scheduler_.get(),
503 base::TimeDelta::FromSecondsD(kThrottledResourceRequestFlushPeriodS), 515 base::TimeDelta::FromSecondsD(kThrottledResourceRequestFlushPeriodS),
504 kMaxResourceRequestsPerFlushWhenThrottled)); 516 kMaxResourceRequestsPerFlushWhenThrottled));
505 resource_dispatcher()->set_message_sender(resource_dispatch_throttler_.get()); 517 resource_dispatcher()->set_message_sender(resource_dispatch_throttler_.get());
(...skipping 1329 matching lines...) Expand 10 before | Expand all | Expand 10 after
1835 mojo::InterfaceRequest<mojo::ServiceProvider> services, 1847 mojo::InterfaceRequest<mojo::ServiceProvider> services,
1836 mojo::ServiceProviderPtr exposed_services) 1848 mojo::ServiceProviderPtr exposed_services)
1837 : services(services.Pass()), 1849 : services(services.Pass()),
1838 exposed_services(exposed_services.Pass()) { 1850 exposed_services(exposed_services.Pass()) {
1839 } 1851 }
1840 1852
1841 RenderThreadImpl::PendingRenderFrameConnect::~PendingRenderFrameConnect() { 1853 RenderThreadImpl::PendingRenderFrameConnect::~PendingRenderFrameConnect() {
1842 } 1854 }
1843 1855
1844 } // namespace content 1856 } // 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