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

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

Issue 2021323002: content: Rename RasterWorkerPool -> CategorizedWorkerPool. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@task_graph_runner_test_2
Patch Set: rebase Created 4 years, 6 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
« no previous file with comments | « content/renderer/render_thread_impl.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <utility> 10 #include <utility>
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 #include "content/public/common/content_paths.h" 83 #include "content/public/common/content_paths.h"
84 #include "content/public/common/content_switches.h" 84 #include "content/public/common/content_switches.h"
85 #include "content/public/common/renderer_preferences.h" 85 #include "content/public/common/renderer_preferences.h"
86 #include "content/public/common/url_constants.h" 86 #include "content/public/common/url_constants.h"
87 #include "content/public/renderer/content_renderer_client.h" 87 #include "content/public/renderer/content_renderer_client.h"
88 #include "content/public/renderer/render_thread_observer.h" 88 #include "content/public/renderer/render_thread_observer.h"
89 #include "content/public/renderer/render_view_visitor.h" 89 #include "content/public/renderer/render_view_visitor.h"
90 #include "content/renderer/browser_plugin/browser_plugin_manager.h" 90 #include "content/renderer/browser_plugin/browser_plugin_manager.h"
91 #include "content/renderer/cache_storage/cache_storage_dispatcher.h" 91 #include "content/renderer/cache_storage/cache_storage_dispatcher.h"
92 #include "content/renderer/cache_storage/cache_storage_message_filter.h" 92 #include "content/renderer/cache_storage/cache_storage_message_filter.h"
93 #include "content/renderer/categorized_worker_pool.h"
93 #include "content/renderer/devtools/devtools_agent_filter.h" 94 #include "content/renderer/devtools/devtools_agent_filter.h"
94 #include "content/renderer/devtools/v8_sampling_profiler.h" 95 #include "content/renderer/devtools/v8_sampling_profiler.h"
95 #include "content/renderer/dom_storage/dom_storage_dispatcher.h" 96 #include "content/renderer/dom_storage/dom_storage_dispatcher.h"
96 #include "content/renderer/dom_storage/webstoragearea_impl.h" 97 #include "content/renderer/dom_storage/webstoragearea_impl.h"
97 #include "content/renderer/dom_storage/webstoragenamespace_impl.h" 98 #include "content/renderer/dom_storage/webstoragenamespace_impl.h"
98 #include "content/renderer/gpu/compositor_external_begin_frame_source.h" 99 #include "content/renderer/gpu/compositor_external_begin_frame_source.h"
99 #include "content/renderer/gpu/compositor_forwarding_message_filter.h" 100 #include "content/renderer/gpu/compositor_forwarding_message_filter.h"
100 #include "content/renderer/gpu/compositor_output_surface.h" 101 #include "content/renderer/gpu/compositor_output_surface.h"
101 #include "content/renderer/input/input_event_filter.h" 102 #include "content/renderer/input/input_event_filter.h"
102 #include "content/renderer/input/input_handler_manager.h" 103 #include "content/renderer/input/input_handler_manager.h"
103 #include "content/renderer/input/main_thread_input_event_filter.h" 104 #include "content/renderer/input/main_thread_input_event_filter.h"
104 #include "content/renderer/media/aec_dump_message_filter.h" 105 #include "content/renderer/media/aec_dump_message_filter.h"
105 #include "content/renderer/media/audio_input_message_filter.h" 106 #include "content/renderer/media/audio_input_message_filter.h"
106 #include "content/renderer/media/audio_message_filter.h" 107 #include "content/renderer/media/audio_message_filter.h"
107 #include "content/renderer/media/audio_renderer_mixer_manager.h" 108 #include "content/renderer/media/audio_renderer_mixer_manager.h"
108 #include "content/renderer/media/media_stream_center.h" 109 #include "content/renderer/media/media_stream_center.h"
109 #include "content/renderer/media/midi_message_filter.h" 110 #include "content/renderer/media/midi_message_filter.h"
110 #include "content/renderer/media/render_media_client.h" 111 #include "content/renderer/media/render_media_client.h"
111 #include "content/renderer/media/renderer_gpu_video_accelerator_factories.h" 112 #include "content/renderer/media/renderer_gpu_video_accelerator_factories.h"
112 #include "content/renderer/media/video_capture_impl_manager.h" 113 #include "content/renderer/media/video_capture_impl_manager.h"
113 #include "content/renderer/media/video_capture_message_filter.h" 114 #include "content/renderer/media/video_capture_message_filter.h"
114 #include "content/renderer/net_info_helper.h" 115 #include "content/renderer/net_info_helper.h"
115 #include "content/renderer/p2p/socket_dispatcher.h" 116 #include "content/renderer/p2p/socket_dispatcher.h"
116 #include "content/renderer/raster_worker_pool.h"
117 #include "content/renderer/render_frame_proxy.h" 117 #include "content/renderer/render_frame_proxy.h"
118 #include "content/renderer/render_process_impl.h" 118 #include "content/renderer/render_process_impl.h"
119 #include "content/renderer/render_view_impl.h" 119 #include "content/renderer/render_view_impl.h"
120 #include "content/renderer/renderer_blink_platform_impl.h" 120 #include "content/renderer/renderer_blink_platform_impl.h"
121 #include "content/renderer/scheduler/resource_dispatch_throttler.h" 121 #include "content/renderer/scheduler/resource_dispatch_throttler.h"
122 #include "content/renderer/service_worker/embedded_worker_dispatcher.h" 122 #include "content/renderer/service_worker/embedded_worker_dispatcher.h"
123 #include "content/renderer/service_worker/service_worker_context_client.h" 123 #include "content/renderer/service_worker/service_worker_context_client.h"
124 #include "content/renderer/service_worker/service_worker_context_message_filter. h" 124 #include "content/renderer/service_worker/service_worker_context_message_filter. h"
125 #include "content/renderer/shared_worker/embedded_shared_worker_stub.h" 125 #include "content/renderer/shared_worker/embedded_shared_worker_stub.h"
126 #include "gin/public/debug.h" 126 #include "gin/public/debug.h"
(...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after
574 574
575 RenderThreadImpl* RenderThreadImpl::current() { 575 RenderThreadImpl* RenderThreadImpl::current() {
576 return lazy_tls.Pointer()->Get(); 576 return lazy_tls.Pointer()->Get();
577 } 577 }
578 578
579 RenderThreadImpl::RenderThreadImpl( 579 RenderThreadImpl::RenderThreadImpl(
580 const InProcessChildThreadParams& params, 580 const InProcessChildThreadParams& params,
581 std::unique_ptr<scheduler::RendererScheduler> scheduler, 581 std::unique_ptr<scheduler::RendererScheduler> scheduler,
582 scoped_refptr<base::SingleThreadTaskRunner>& resource_task_queue) 582 scoped_refptr<base::SingleThreadTaskRunner>& resource_task_queue)
583 : ChildThreadImpl(Options::Builder() 583 : ChildThreadImpl(Options::Builder()
584 .InBrowserProcess(params).UseMojoChannel(true).Build()), 584 .InBrowserProcess(params)
585 .UseMojoChannel(true)
586 .Build()),
585 renderer_scheduler_(std::move(scheduler)), 587 renderer_scheduler_(std::move(scheduler)),
586 raster_worker_pool_(new RasterWorkerPool()) { 588 categorized_worker_pool_(new CategorizedWorkerPool()) {
587 Init(resource_task_queue); 589 Init(resource_task_queue);
588 } 590 }
589 591
590 // When we run plugins in process, we actually run them on the render thread, 592 // When we run plugins in process, we actually run them on the render thread,
591 // which means that we need to make the render thread pump UI events. 593 // which means that we need to make the render thread pump UI events.
592 RenderThreadImpl::RenderThreadImpl( 594 RenderThreadImpl::RenderThreadImpl(
593 std::unique_ptr<base::MessageLoop> main_message_loop, 595 std::unique_ptr<base::MessageLoop> main_message_loop,
594 std::unique_ptr<scheduler::RendererScheduler> scheduler) 596 std::unique_ptr<scheduler::RendererScheduler> scheduler)
595 : ChildThreadImpl(Options::Builder().UseMojoChannel(true).Build()), 597 : ChildThreadImpl(Options::Builder().UseMojoChannel(true).Build()),
596 renderer_scheduler_(std::move(scheduler)), 598 renderer_scheduler_(std::move(scheduler)),
597 main_message_loop_(std::move(main_message_loop)), 599 main_message_loop_(std::move(main_message_loop)),
598 raster_worker_pool_(new RasterWorkerPool()) { 600 categorized_worker_pool_(new CategorizedWorkerPool()) {
599 scoped_refptr<base::SingleThreadTaskRunner> test_task_counter; 601 scoped_refptr<base::SingleThreadTaskRunner> test_task_counter;
600 Init(test_task_counter); 602 Init(test_task_counter);
601 } 603 }
602 604
603 void RenderThreadImpl::Init( 605 void RenderThreadImpl::Init(
604 scoped_refptr<base::SingleThreadTaskRunner>& resource_task_queue) { 606 scoped_refptr<base::SingleThreadTaskRunner>& resource_task_queue) {
605 TRACE_EVENT0("startup", "RenderThreadImpl::Init"); 607 TRACE_EVENT0("startup", "RenderThreadImpl::Init");
606 608
607 base::trace_event::TraceLog::GetInstance()->SetThreadSortIndex( 609 base::trace_event::TraceLog::GetInstance()->SetThreadSortIndex(
608 base::PlatformThread::CurrentId(), 610 base::PlatformThread::CurrentId(),
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
789 command_line.GetSwitchValueASCII(switches::kNumRasterThreads); 791 command_line.GetSwitchValueASCII(switches::kNumRasterThreads);
790 bool parsed_num_raster_threads = 792 bool parsed_num_raster_threads =
791 base::StringToInt(string_value, &num_raster_threads); 793 base::StringToInt(string_value, &num_raster_threads);
792 DCHECK(parsed_num_raster_threads) << string_value; 794 DCHECK(parsed_num_raster_threads) << string_value;
793 DCHECK_GT(num_raster_threads, 0); 795 DCHECK_GT(num_raster_threads, 0);
794 796
795 // TODO(vmpstr): If the flag sticks, we should clean it up and always have 797 // TODO(vmpstr): If the flag sticks, we should clean it up and always have
796 // image decode tasks. 798 // image decode tasks.
797 are_image_decode_tasks_enabled_ = true; 799 are_image_decode_tasks_enabled_ = true;
798 800
799 raster_worker_pool_->Start(num_raster_threads); 801 categorized_worker_pool_->Start(num_raster_threads);
800 802
801 // TODO(boliu): In single process, browser main loop should set up the 803 // TODO(boliu): In single process, browser main loop should set up the
802 // discardable memory manager, and should skip this if kSingleProcess. 804 // discardable memory manager, and should skip this if kSingleProcess.
803 // See crbug.com/503724. 805 // See crbug.com/503724.
804 base::DiscardableMemoryAllocator::SetInstance( 806 base::DiscardableMemoryAllocator::SetInstance(
805 ChildThreadImpl::discardable_shared_memory_manager()); 807 ChildThreadImpl::discardable_shared_memory_manager());
806 808
807 service_registry()->AddService(base::Bind(CreateRenderFrameSetup)); 809 service_registry()->AddService(base::Bind(CreateRenderFrameSetup));
808 service_registry()->AddService(base::Bind(CreateEmbeddedWorkerSetup)); 810 service_registry()->AddService(base::Bind(CreateEmbeddedWorkerSetup));
809 811
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
885 media_thread_.reset(); 887 media_thread_.reset();
886 888
887 blink_platform_impl_->SetCompositorThread(nullptr); 889 blink_platform_impl_->SetCompositorThread(nullptr);
888 890
889 compositor_thread_.reset(); 891 compositor_thread_.reset();
890 892
891 // AudioMessageFilter may be accessed on |media_thread_|, so shutdown after. 893 // AudioMessageFilter may be accessed on |media_thread_|, so shutdown after.
892 RemoveFilter(audio_message_filter_.get()); 894 RemoveFilter(audio_message_filter_.get());
893 audio_message_filter_ = NULL; 895 audio_message_filter_ = NULL;
894 896
895 raster_worker_pool_->Shutdown(); 897 categorized_worker_pool_->Shutdown();
896 898
897 main_input_callback_.Cancel(); 899 main_input_callback_.Cancel();
898 input_handler_manager_.reset(); 900 input_handler_manager_.reset();
899 if (input_event_filter_.get()) { 901 if (input_event_filter_.get()) {
900 RemoveFilter(input_event_filter_.get()); 902 RemoveFilter(input_event_filter_.get());
901 input_event_filter_ = NULL; 903 input_event_filter_ = NULL;
902 } 904 }
903 905
904 // RemoveEmbeddedWorkerRoute may be called while deleting 906 // RemoveEmbeddedWorkerRoute may be called while deleting
905 // EmbeddedWorkerDispatcher. So it must be deleted before deleting 907 // EmbeddedWorkerDispatcher. So it must be deleted before deleting
(...skipping 699 matching lines...) Expand 10 before | Expand all | Expand 10 after
1605 return base::WrapUnique(new CompositorExternalBeginFrameSource( 1607 return base::WrapUnique(new CompositorExternalBeginFrameSource(
1606 compositor_message_filter_.get(), sync_message_filter(), routing_id)); 1608 compositor_message_filter_.get(), sync_message_filter(), routing_id));
1607 } 1609 }
1608 1610
1609 cc::ImageSerializationProcessor* 1611 cc::ImageSerializationProcessor*
1610 RenderThreadImpl::GetImageSerializationProcessor() { 1612 RenderThreadImpl::GetImageSerializationProcessor() {
1611 return GetContentClient()->renderer()->GetImageSerializationProcessor(); 1613 return GetContentClient()->renderer()->GetImageSerializationProcessor();
1612 } 1614 }
1613 1615
1614 cc::TaskGraphRunner* RenderThreadImpl::GetTaskGraphRunner() { 1616 cc::TaskGraphRunner* RenderThreadImpl::GetTaskGraphRunner() {
1615 return raster_worker_pool_->GetTaskGraphRunner(); 1617 return categorized_worker_pool_->GetTaskGraphRunner();
1616 } 1618 }
1617 1619
1618 bool RenderThreadImpl::AreImageDecodeTasksEnabled() { 1620 bool RenderThreadImpl::AreImageDecodeTasksEnabled() {
1619 return are_image_decode_tasks_enabled_; 1621 return are_image_decode_tasks_enabled_;
1620 } 1622 }
1621 1623
1622 bool RenderThreadImpl::IsThreadedAnimationEnabled() { 1624 bool RenderThreadImpl::IsThreadedAnimationEnabled() {
1623 return is_threaded_animation_enabled_; 1625 return is_threaded_animation_enabled_;
1624 } 1626 }
1625 1627
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
1934 1936
1935 #if defined(OS_ANDROID) 1937 #if defined(OS_ANDROID)
1936 renderer_demuxer_ = new RendererDemuxerAndroid(); 1938 renderer_demuxer_ = new RendererDemuxerAndroid();
1937 AddFilter(renderer_demuxer_.get()); 1939 AddFilter(renderer_demuxer_.get());
1938 #endif 1940 #endif
1939 } 1941 }
1940 return media_thread_->task_runner(); 1942 return media_thread_->task_runner();
1941 } 1943 }
1942 1944
1943 base::TaskRunner* RenderThreadImpl::GetWorkerTaskRunner() { 1945 base::TaskRunner* RenderThreadImpl::GetWorkerTaskRunner() {
1944 return raster_worker_pool_.get(); 1946 return categorized_worker_pool_.get();
1945 } 1947 }
1946 1948
1947 scoped_refptr<ContextProviderCommandBuffer> 1949 scoped_refptr<ContextProviderCommandBuffer>
1948 RenderThreadImpl::SharedCompositorWorkerContextProvider() { 1950 RenderThreadImpl::SharedCompositorWorkerContextProvider() {
1949 DCHECK(IsMainThread()); 1951 DCHECK(IsMainThread());
1950 // Try to reuse existing shared worker context provider. 1952 // Try to reuse existing shared worker context provider.
1951 if (shared_worker_context_provider_) { 1953 if (shared_worker_context_provider_) {
1952 // Note: If context is lost, delete reference after releasing the lock. 1954 // Note: If context is lost, delete reference after releasing the lock.
1953 cc::ContextProvider::ScopedContextLock lock( 1955 cc::ContextProvider::ScopedContextLock lock(
1954 shared_worker_context_provider_.get()); 1956 shared_worker_context_provider_.get());
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
2085 v8_memory_pressure_level == v8::MemoryPressureLevel::kCritical) 2087 v8_memory_pressure_level == v8::MemoryPressureLevel::kCritical)
2086 v8_memory_pressure_level = v8::MemoryPressureLevel::kModerate; 2088 v8_memory_pressure_level = v8::MemoryPressureLevel::kModerate;
2087 2089
2088 blink::mainThreadIsolate()->MemoryPressureNotification( 2090 blink::mainThreadIsolate()->MemoryPressureNotification(
2089 v8_memory_pressure_level); 2091 v8_memory_pressure_level);
2090 blink::MemoryPressureNotificationToWorkerThreadIsolates( 2092 blink::MemoryPressureNotificationToWorkerThreadIsolates(
2091 v8_memory_pressure_level); 2093 v8_memory_pressure_level);
2092 } 2094 }
2093 2095
2094 } // namespace content 2096 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/render_thread_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698