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 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
103 #include "content/renderer/media/renderer_gpu_video_accelerator_factories.h" | 103 #include "content/renderer/media/renderer_gpu_video_accelerator_factories.h" |
104 #include "content/renderer/media/video_capture_impl_manager.h" | 104 #include "content/renderer/media/video_capture_impl_manager.h" |
105 #include "content/renderer/media/video_capture_message_filter.h" | 105 #include "content/renderer/media/video_capture_message_filter.h" |
106 #include "content/renderer/net_info_helper.h" | 106 #include "content/renderer/net_info_helper.h" |
107 #include "content/renderer/p2p/socket_dispatcher.h" | 107 #include "content/renderer/p2p/socket_dispatcher.h" |
108 #include "content/renderer/render_frame_proxy.h" | 108 #include "content/renderer/render_frame_proxy.h" |
109 #include "content/renderer/render_process_impl.h" | 109 #include "content/renderer/render_process_impl.h" |
110 #include "content/renderer/render_view_impl.h" | 110 #include "content/renderer/render_view_impl.h" |
111 #include "content/renderer/renderer_blink_platform_impl.h" | 111 #include "content/renderer/renderer_blink_platform_impl.h" |
112 #include "content/renderer/scheduler/resource_dispatch_throttler.h" | 112 #include "content/renderer/scheduler/resource_dispatch_throttler.h" |
113 #include "content/renderer/service_worker/embedded_worker_dispatcher.h" | 113 #include "content/renderer/service_worker/embedded_worker_impl.h" |
114 #include "content/renderer/service_worker/service_worker_context_client.h" | 114 #include "content/renderer/service_worker/service_worker_context_client.h" |
115 #include "content/renderer/service_worker/service_worker_context_message_filter.
h" | 115 #include "content/renderer/service_worker/service_worker_context_message_filter.
h" |
116 #include "content/renderer/shared_worker/embedded_shared_worker_stub.h" | 116 #include "content/renderer/shared_worker/embedded_shared_worker_stub.h" |
117 #include "gin/public/debug.h" | 117 #include "gin/public/debug.h" |
118 #include "gpu/GLES2/gl2extchromium.h" | 118 #include "gpu/GLES2/gl2extchromium.h" |
119 #include "gpu/command_buffer/common/gles2_cmd_utils.h" | 119 #include "gpu/command_buffer/common/gles2_cmd_utils.h" |
120 #include "ipc/ipc_channel_handle.h" | 120 #include "ipc/ipc_channel_handle.h" |
121 #include "ipc/ipc_platform_file.h" | 121 #include "ipc/ipc_platform_file.h" |
122 #include "ipc/mojo/ipc_channel_mojo.h" | 122 #include "ipc/mojo/ipc_channel_mojo.h" |
123 #include "media/base/audio_hardware_config.h" | 123 #include "media/base/audio_hardware_config.h" |
(...skipping 526 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
650 | 650 |
651 appcache_dispatcher_.reset( | 651 appcache_dispatcher_.reset( |
652 new AppCacheDispatcher(Get(), new AppCacheFrontendImpl())); | 652 new AppCacheDispatcher(Get(), new AppCacheFrontendImpl())); |
653 dom_storage_dispatcher_.reset(new DomStorageDispatcher()); | 653 dom_storage_dispatcher_.reset(new DomStorageDispatcher()); |
654 main_thread_indexed_db_dispatcher_.reset(new IndexedDBDispatcher( | 654 main_thread_indexed_db_dispatcher_.reset(new IndexedDBDispatcher( |
655 thread_safe_sender())); | 655 thread_safe_sender())); |
656 renderer_scheduler_ = scheduler::RendererScheduler::Create(); | 656 renderer_scheduler_ = scheduler::RendererScheduler::Create(); |
657 channel()->SetListenerTaskRunner(renderer_scheduler_->DefaultTaskRunner()); | 657 channel()->SetListenerTaskRunner(renderer_scheduler_->DefaultTaskRunner()); |
658 main_thread_cache_storage_dispatcher_.reset( | 658 main_thread_cache_storage_dispatcher_.reset( |
659 new CacheStorageDispatcher(thread_safe_sender())); | 659 new CacheStorageDispatcher(thread_safe_sender())); |
660 embedded_worker_dispatcher_.reset(new EmbeddedWorkerDispatcher()); | |
661 | 660 |
662 // Note: This may reorder messages from the ResourceDispatcher with respect to | 661 // Note: This may reorder messages from the ResourceDispatcher with respect to |
663 // other subsystems. | 662 // other subsystems. |
664 resource_dispatch_throttler_.reset(new ResourceDispatchThrottler( | 663 resource_dispatch_throttler_.reset(new ResourceDispatchThrottler( |
665 static_cast<RenderThread*>(this), renderer_scheduler_.get(), | 664 static_cast<RenderThread*>(this), renderer_scheduler_.get(), |
666 base::TimeDelta::FromSecondsD(kThrottledResourceRequestFlushPeriodS), | 665 base::TimeDelta::FromSecondsD(kThrottledResourceRequestFlushPeriodS), |
667 kMaxResourceRequestsPerFlushWhenThrottled)); | 666 kMaxResourceRequestsPerFlushWhenThrottled)); |
668 resource_dispatcher()->set_message_sender(resource_dispatch_throttler_.get()); | 667 resource_dispatcher()->set_message_sender(resource_dispatch_throttler_.get()); |
669 | 668 |
670 media_stream_center_ = NULL; | 669 media_stream_center_ = NULL; |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
820 // TODO(boliu): In single process, browser main loop should set up the | 819 // TODO(boliu): In single process, browser main loop should set up the |
821 // discardable memory manager, and should skip this if kSingleProcess. | 820 // discardable memory manager, and should skip this if kSingleProcess. |
822 // See crbug.com/503724. | 821 // See crbug.com/503724. |
823 base::DiscardableMemoryAllocator::SetInstance( | 822 base::DiscardableMemoryAllocator::SetInstance( |
824 ChildThreadImpl::discardable_shared_memory_manager()); | 823 ChildThreadImpl::discardable_shared_memory_manager()); |
825 | 824 |
826 service_registry()->AddService<RenderFrameSetup>( | 825 service_registry()->AddService<RenderFrameSetup>( |
827 base::Bind(CreateRenderFrameSetup)); | 826 base::Bind(CreateRenderFrameSetup)); |
828 service_registry()->AddService<EmbeddedWorkerSetup>( | 827 service_registry()->AddService<EmbeddedWorkerSetup>( |
829 base::Bind(CreateEmbeddedWorkerSetup)); | 828 base::Bind(CreateEmbeddedWorkerSetup)); |
| 829 service_registry()->AddService<EmbeddedWorker>(base::Bind( |
| 830 &EmbeddedWorkerImpl::Create, make_scoped_refptr(thread_safe_sender()))); |
830 | 831 |
831 TRACE_EVENT_END_ETW("RenderThreadImpl::Init", 0, ""); | 832 TRACE_EVENT_END_ETW("RenderThreadImpl::Init", 0, ""); |
832 } | 833 } |
833 | 834 |
834 RenderThreadImpl::~RenderThreadImpl() { | 835 RenderThreadImpl::~RenderThreadImpl() { |
835 } | 836 } |
836 | 837 |
837 void RenderThreadImpl::Shutdown() { | 838 void RenderThreadImpl::Shutdown() { |
838 FOR_EACH_OBSERVER( | 839 FOR_EACH_OBSERVER( |
839 RenderProcessObserver, observers_, OnRenderProcessShutdown()); | 840 RenderProcessObserver, observers_, OnRenderProcessShutdown()); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
898 | 899 |
899 raster_worker_pool_->Shutdown(); | 900 raster_worker_pool_->Shutdown(); |
900 | 901 |
901 main_input_callback_.Cancel(); | 902 main_input_callback_.Cancel(); |
902 input_handler_manager_.reset(); | 903 input_handler_manager_.reset(); |
903 if (input_event_filter_.get()) { | 904 if (input_event_filter_.get()) { |
904 RemoveFilter(input_event_filter_.get()); | 905 RemoveFilter(input_event_filter_.get()); |
905 input_event_filter_ = NULL; | 906 input_event_filter_ = NULL; |
906 } | 907 } |
907 | 908 |
908 // RemoveEmbeddedWorkerRoute may be called while deleting | |
909 // EmbeddedWorkerDispatcher. So it must be deleted before deleting | |
910 // RenderThreadImpl. | |
911 embedded_worker_dispatcher_.reset(); | |
912 | |
913 // Ramp down IDB before we ramp down WebKit (and V8), since IDB classes might | 909 // Ramp down IDB before we ramp down WebKit (and V8), since IDB classes might |
914 // hold pointers to V8 objects (e.g., via pending requests). | 910 // hold pointers to V8 objects (e.g., via pending requests). |
915 main_thread_indexed_db_dispatcher_.reset(); | 911 main_thread_indexed_db_dispatcher_.reset(); |
916 | 912 |
917 main_thread_compositor_task_runner_ = NULL; | 913 main_thread_compositor_task_runner_ = NULL; |
918 | 914 |
919 // Context providers must be released prior to destroying the GPU channel. | 915 // Context providers must be released prior to destroying the GPU channel. |
920 gpu_va_context_provider_ = nullptr; | 916 gpu_va_context_provider_ = nullptr; |
921 shared_main_thread_contexts_ = nullptr; | 917 shared_main_thread_contexts_ = nullptr; |
922 | 918 |
(...skipping 717 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1640 bool RenderThreadImpl::OnControlMessageReceived(const IPC::Message& msg) { | 1636 bool RenderThreadImpl::OnControlMessageReceived(const IPC::Message& msg) { |
1641 base::ObserverListBase<RenderProcessObserver>::Iterator it(&observers_); | 1637 base::ObserverListBase<RenderProcessObserver>::Iterator it(&observers_); |
1642 RenderProcessObserver* observer; | 1638 RenderProcessObserver* observer; |
1643 while ((observer = it.GetNext()) != NULL) { | 1639 while ((observer = it.GetNext()) != NULL) { |
1644 if (observer->OnControlMessageReceived(msg)) | 1640 if (observer->OnControlMessageReceived(msg)) |
1645 return true; | 1641 return true; |
1646 } | 1642 } |
1647 | 1643 |
1648 // Some messages are handled by delegates. | 1644 // Some messages are handled by delegates. |
1649 if (appcache_dispatcher_->OnMessageReceived(msg) || | 1645 if (appcache_dispatcher_->OnMessageReceived(msg) || |
1650 dom_storage_dispatcher_->OnMessageReceived(msg) || | 1646 dom_storage_dispatcher_->OnMessageReceived(msg)) { |
1651 embedded_worker_dispatcher_->OnMessageReceived(msg)) { | |
1652 return true; | 1647 return true; |
1653 } | 1648 } |
1654 | 1649 |
1655 bool handled = true; | 1650 bool handled = true; |
1656 IPC_BEGIN_MESSAGE_MAP(RenderThreadImpl, msg) | 1651 IPC_BEGIN_MESSAGE_MAP(RenderThreadImpl, msg) |
1657 IPC_MESSAGE_HANDLER(FrameMsg_NewFrame, OnCreateNewFrame) | 1652 IPC_MESSAGE_HANDLER(FrameMsg_NewFrame, OnCreateNewFrame) |
1658 IPC_MESSAGE_HANDLER(FrameMsg_NewFrameProxy, OnCreateNewFrameProxy) | 1653 IPC_MESSAGE_HANDLER(FrameMsg_NewFrameProxy, OnCreateNewFrameProxy) |
1659 IPC_MESSAGE_HANDLER(ViewMsg_SetZoomLevelForCurrentURL, | 1654 IPC_MESSAGE_HANDLER(ViewMsg_SetZoomLevelForCurrentURL, |
1660 OnSetZoomLevelForCurrentURL) | 1655 OnSetZoomLevelForCurrentURL) |
1661 // TODO(port): removed from render_messages_internal.h; | 1656 // TODO(port): removed from render_messages_internal.h; |
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2013 } | 2008 } |
2014 | 2009 |
2015 void RenderThreadImpl::PendingRenderFrameConnect::OnConnectionError() { | 2010 void RenderThreadImpl::PendingRenderFrameConnect::OnConnectionError() { |
2016 size_t erased = | 2011 size_t erased = |
2017 RenderThreadImpl::current()->pending_render_frame_connects_.erase( | 2012 RenderThreadImpl::current()->pending_render_frame_connects_.erase( |
2018 routing_id_); | 2013 routing_id_); |
2019 DCHECK_EQ(1u, erased); | 2014 DCHECK_EQ(1u, erased); |
2020 } | 2015 } |
2021 | 2016 |
2022 } // namespace content | 2017 } // namespace content |
OLD | NEW |