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

Side by Side Diff: content/renderer/render_thread_impl.cc

Issue 1223193009: WIP attempt to replace StartWorker/StopWorker IPCs with a new mojo EmbeddedWorker service. Base URL: https://chromium.googlesource.com/chromium/src.git@mojo-event-dispatching-option2
Patch Set: Created 5 years, 5 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 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « content/renderer/render_thread_impl.h ('k') | content/renderer/service_worker/embedded_worker_dispatcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698