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