OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |