| 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 |