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

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

Issue 2755813002: Begin to wean child processes off reliance on a persistent service_manager::Connection to the brows… (Closed)
Patch Set: . Created 3 years, 9 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_frame_impl.cc ('k') | content/renderer/renderer_blink_platform_impl.h » ('j') | 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 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 #include "content/common/render_process_messages.h" 77 #include "content/common/render_process_messages.h"
78 #include "content/common/resource_messages.h" 78 #include "content/common/resource_messages.h"
79 #include "content/common/site_isolation_policy.h" 79 #include "content/common/site_isolation_policy.h"
80 #include "content/common/view_messages.h" 80 #include "content/common/view_messages.h"
81 #include "content/common/worker_messages.h" 81 #include "content/common/worker_messages.h"
82 #include "content/public/common/content_constants.h" 82 #include "content/public/common/content_constants.h"
83 #include "content/public/common/content_features.h" 83 #include "content/public/common/content_features.h"
84 #include "content/public/common/content_paths.h" 84 #include "content/public/common/content_paths.h"
85 #include "content/public/common/content_switches.h" 85 #include "content/public/common/content_switches.h"
86 #include "content/public/common/renderer_preferences.h" 86 #include "content/public/common/renderer_preferences.h"
87 #include "content/public/common/service_names.mojom.h"
87 #include "content/public/common/url_constants.h" 88 #include "content/public/common/url_constants.h"
88 #include "content/public/renderer/content_renderer_client.h" 89 #include "content/public/renderer/content_renderer_client.h"
89 #include "content/public/renderer/render_thread_observer.h" 90 #include "content/public/renderer/render_thread_observer.h"
90 #include "content/public/renderer/render_view_visitor.h" 91 #include "content/public/renderer/render_view_visitor.h"
91 #include "content/renderer/browser_plugin/browser_plugin_manager.h" 92 #include "content/renderer/browser_plugin/browser_plugin_manager.h"
92 #include "content/renderer/cache_storage/cache_storage_dispatcher.h" 93 #include "content/renderer/cache_storage/cache_storage_dispatcher.h"
93 #include "content/renderer/cache_storage/cache_storage_message_filter.h" 94 #include "content/renderer/cache_storage/cache_storage_message_filter.h"
94 #include "content/renderer/categorized_worker_pool.h" 95 #include "content/renderer/categorized_worker_pool.h"
95 #include "content/renderer/devtools/devtools_agent_filter.h" 96 #include "content/renderer/devtools/devtools_agent_filter.h"
96 #include "content/renderer/dom_storage/dom_storage_dispatcher.h" 97 #include "content/renderer/dom_storage/dom_storage_dispatcher.h"
(...skipping 524 matching lines...) Expand 10 before | Expand all | Expand 10 after
621 #if BUILDFLAG(USE_EXTERNAL_POPUP_MENU) 622 #if BUILDFLAG(USE_EXTERNAL_POPUP_MENU)
622 // On Mac and Android Java UI, the select popups are rendered by the browser. 623 // On Mac and Android Java UI, the select popups are rendered by the browser.
623 blink::WebView::setUseExternalPopupMenus(true); 624 blink::WebView::setUseExternalPopupMenus(true);
624 #endif 625 #endif
625 626
626 lazy_tls.Pointer()->Set(this); 627 lazy_tls.Pointer()->Set(this);
627 628
628 // Register this object as the main thread. 629 // Register this object as the main thread.
629 ChildProcess::current()->set_main_thread(this); 630 ChildProcess::current()->set_main_thread(this);
630 631
631 if (IsRunningInMash()) { 632 gpu_ = ui::Gpu::Create(
632 gpu_ = ui::Gpu::Create(GetServiceManagerConnection()->GetConnector(), 633 GetConnector(),
633 GetIOTaskRunner()); 634 IsRunningInMash() ? ui::mojom::kServiceName : mojom::kBrowserServiceName,
634 } else { 635 GetIOTaskRunner());
635 gpu_ = ui::Gpu::Create(GetRemoteInterfaces(), GetIOTaskRunner());
636 }
637 636
638 channel()->GetThreadSafeRemoteAssociatedInterface( 637 channel()->GetThreadSafeRemoteAssociatedInterface(
639 &thread_safe_render_message_filter_); 638 &thread_safe_render_message_filter_);
640 shared_bitmap_manager_.reset( 639 shared_bitmap_manager_.reset(
641 new ChildSharedBitmapManager(thread_safe_render_message_filter_)); 640 new ChildSharedBitmapManager(thread_safe_render_message_filter_));
642 641
643 InitializeWebKit(resource_task_queue); 642 InitializeWebKit(resource_task_queue);
644 643
645 // In single process the single process is all there is. 644 // In single process the single process is all there is.
646 webkit_shared_timer_suspended_ = false; 645 webkit_shared_timer_suspended_ = false;
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
833 base::Unretained(this)))); 832 base::Unretained(this))));
834 833
835 if (base::FeatureList::IsEnabled(features::kMemoryCoordinator)) { 834 if (base::FeatureList::IsEnabled(features::kMemoryCoordinator)) {
836 // Disable MemoryPressureListener when memory coordinator is enabled. 835 // Disable MemoryPressureListener when memory coordinator is enabled.
837 base::MemoryPressureListener::SetNotificationsSuppressed(true); 836 base::MemoryPressureListener::SetNotificationsSuppressed(true);
838 837
839 // TODO(bashi): Revisit how to manage the lifetime of 838 // TODO(bashi): Revisit how to manage the lifetime of
840 // ChildMemoryCoordinatorImpl. 839 // ChildMemoryCoordinatorImpl.
841 // https://codereview.chromium.org/2094583002/#msg52 840 // https://codereview.chromium.org/2094583002/#msg52
842 mojom::MemoryCoordinatorHandlePtr parent_coordinator; 841 mojom::MemoryCoordinatorHandlePtr parent_coordinator;
843 GetRemoteInterfaces()->GetInterface(mojo::MakeRequest(&parent_coordinator)); 842 GetConnector()->BindInterface(mojom::kBrowserServiceName,
843 mojo::MakeRequest(&parent_coordinator));
844 memory_coordinator_ = CreateChildMemoryCoordinator( 844 memory_coordinator_ = CreateChildMemoryCoordinator(
845 std::move(parent_coordinator), this); 845 std::move(parent_coordinator), this);
846 } 846 }
847 847
848 int num_raster_threads = 0; 848 int num_raster_threads = 0;
849 std::string string_value = 849 std::string string_value =
850 command_line.GetSwitchValueASCII(switches::kNumRasterThreads); 850 command_line.GetSwitchValueASCII(switches::kNumRasterThreads);
851 bool parsed_num_raster_threads = 851 bool parsed_num_raster_threads =
852 base::StringToInt(string_value, &num_raster_threads); 852 base::StringToInt(string_value, &num_raster_threads);
853 DCHECK(parsed_num_raster_threads) << string_value; 853 DCHECK(parsed_num_raster_threads) << string_value;
854 DCHECK_GT(num_raster_threads, 0); 854 DCHECK_GT(num_raster_threads, 0);
855 855
856 // TODO(vmpstr): If the flag sticks, we should clean it up and always have 856 // TODO(vmpstr): If the flag sticks, we should clean it up and always have
857 // image decode tasks. 857 // image decode tasks.
858 are_image_decode_tasks_enabled_ = true; 858 are_image_decode_tasks_enabled_ = true;
859 859
860 categorized_worker_pool_->Start(num_raster_threads); 860 categorized_worker_pool_->Start(num_raster_threads);
861 861
862 discardable_memory::mojom::DiscardableSharedMemoryManagerPtr manager_ptr; 862 discardable_memory::mojom::DiscardableSharedMemoryManagerPtr manager_ptr;
863 if (IsRunningInMash()) { 863 if (IsRunningInMash()) {
864 #if defined(USE_AURA) 864 #if defined(USE_AURA)
865 GetServiceManagerConnection()->GetConnector()->BindInterface( 865 GetServiceManagerConnection()->GetConnector()->BindInterface(
866 ui::mojom::kServiceName, &manager_ptr); 866 ui::mojom::kServiceName, &manager_ptr);
867 #else 867 #else
868 NOTREACHED(); 868 NOTREACHED();
869 #endif 869 #endif
870 } else { 870 } else {
871 ChildThread::Get()->GetRemoteInterfaces()->GetInterface( 871 ChildThread::Get()->GetConnector()->BindInterface(
872 mojo::MakeRequest(&manager_ptr)); 872 mojom::kBrowserServiceName, mojo::MakeRequest(&manager_ptr));
873 } 873 }
874 874
875 discardable_shared_memory_manager_ = base::MakeUnique< 875 discardable_shared_memory_manager_ = base::MakeUnique<
876 discardable_memory::ClientDiscardableSharedMemoryManager>( 876 discardable_memory::ClientDiscardableSharedMemoryManager>(
877 std::move(manager_ptr), GetIOTaskRunner()); 877 std::move(manager_ptr), GetIOTaskRunner());
878 878
879 // TODO(boliu): In single process, browser main loop should set up the 879 // TODO(boliu): In single process, browser main loop should set up the
880 // discardable memory manager, and should skip this if kSingleProcess. 880 // discardable memory manager, and should skip this if kSingleProcess.
881 // See crbug.com/503724. 881 // See crbug.com/503724.
882 base::DiscardableMemoryAllocator::SetInstance( 882 base::DiscardableMemoryAllocator::SetInstance(
883 discardable_shared_memory_manager_.get()); 883 discardable_shared_memory_manager_.get());
884 884
885 GetContentClient()->renderer()->ExposeInterfacesToBrowser( 885 GetContentClient()->renderer()->ExposeInterfacesToBrowser(
886 GetInterfaceRegistry()); 886 GetInterfaceRegistry());
887 887
888 GetInterfaceRegistry()->AddInterface(base::Bind(&CreateFrameFactory)); 888 GetInterfaceRegistry()->AddInterface(base::Bind(&CreateFrameFactory));
889 GetInterfaceRegistry()->AddInterface( 889 GetInterfaceRegistry()->AddInterface(
890 base::Bind(&EmbeddedWorkerInstanceClientImpl::Create, 890 base::Bind(&EmbeddedWorkerInstanceClientImpl::Create,
891 base::Unretained(embedded_worker_dispatcher_.get()))); 891 base::Unretained(embedded_worker_dispatcher_.get())));
892 892
893 GetRemoteInterfaces()->GetInterface( 893 GetConnector()->BindInterface(mojom::kBrowserServiceName,
894 mojo::MakeRequest(&storage_partition_service_)); 894 mojo::MakeRequest(&storage_partition_service_));
895 895
896 #if defined(OS_LINUX) 896 #if defined(OS_LINUX)
897 ChildProcess::current()->SetIOThreadPriority(base::ThreadPriority::DISPLAY); 897 ChildProcess::current()->SetIOThreadPriority(base::ThreadPriority::DISPLAY);
898 ChildThreadImpl::current()->SetThreadPriority( 898 ChildThreadImpl::current()->SetThreadPriority(
899 categorized_worker_pool_->background_worker_thread_id(), 899 categorized_worker_pool_->background_worker_thread_id(),
900 base::ThreadPriority::BACKGROUND); 900 base::ThreadPriority::BACKGROUND);
901 #endif 901 #endif
902 902
903 record_purge_suspend_metric_closure_.Reset(base::Bind( 903 record_purge_suspend_metric_closure_.Reset(base::Bind(
904 &RenderThreadImpl::RecordPurgeAndSuspendMetrics, base::Unretained(this))); 904 &RenderThreadImpl::RecordPurgeAndSuspendMetrics, base::Unretained(this)));
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
1135 if (command_line.HasSwitch(switches::kEnableVtune)) 1135 if (command_line.HasSwitch(switches::kEnableVtune))
1136 gin::Debug::SetJitCodeEventHandler(vTune::GetVtuneCodeEventHandler()); 1136 gin::Debug::SetJitCodeEventHandler(vTune::GetVtuneCodeEventHandler());
1137 #endif 1137 #endif
1138 1138
1139 SetRuntimeFeaturesDefaultsAndUpdateFromArgs(command_line); 1139 SetRuntimeFeaturesDefaultsAndUpdateFromArgs(command_line);
1140 GetContentClient() 1140 GetContentClient()
1141 ->renderer() 1141 ->renderer()
1142 ->SetRuntimeFeaturesDefaultsBeforeBlinkInitialization(); 1142 ->SetRuntimeFeaturesDefaultsBeforeBlinkInitialization();
1143 1143
1144 blink_platform_impl_.reset(new RendererBlinkPlatformImpl( 1144 blink_platform_impl_.reset(new RendererBlinkPlatformImpl(
1145 renderer_scheduler_.get(), GetRemoteInterfaces()->GetWeakPtr())); 1145 renderer_scheduler_.get(), GetConnector()->GetWeakPtr()));
1146 blink::initialize(blink_platform_impl_.get()); 1146 blink::initialize(blink_platform_impl_.get());
1147 1147
1148 v8::Isolate* isolate = blink::mainThreadIsolate(); 1148 v8::Isolate* isolate = blink::mainThreadIsolate();
1149 isolate->SetCreateHistogramFunction(CreateHistogram); 1149 isolate->SetCreateHistogramFunction(CreateHistogram);
1150 isolate->SetAddHistogramSampleFunction(AddHistogramSample); 1150 isolate->SetAddHistogramSampleFunction(AddHistogramSample);
1151 renderer_scheduler_->SetRAILModeObserver(this); 1151 renderer_scheduler_->SetRAILModeObserver(this);
1152 1152
1153 main_thread_compositor_task_runner_ = 1153 main_thread_compositor_task_runner_ =
1154 renderer_scheduler_->CompositorTaskRunner(); 1154 renderer_scheduler_->CompositorTaskRunner();
1155 1155
(...skipping 903 matching lines...) Expand 10 before | Expand all | Expand 10 after
2059 return nullptr; 2059 return nullptr;
2060 if (gpu_channel_->IsLost()) 2060 if (gpu_channel_->IsLost())
2061 return nullptr; 2061 return nullptr;
2062 return gpu_channel_.get(); 2062 return gpu_channel_.get();
2063 } 2063 }
2064 2064
2065 void RenderThreadImpl::OnFieldTrialGroupFinalized( 2065 void RenderThreadImpl::OnFieldTrialGroupFinalized(
2066 const std::string& trial_name, 2066 const std::string& trial_name,
2067 const std::string& group_name) { 2067 const std::string& group_name) {
2068 mojom::FieldTrialRecorderPtr field_trial_recorder; 2068 mojom::FieldTrialRecorderPtr field_trial_recorder;
2069 GetRemoteInterfaces()->GetInterface(&field_trial_recorder); 2069 GetConnector()->BindInterface(mojom::kBrowserServiceName,
2070 &field_trial_recorder);
2070 field_trial_recorder->FieldTrialActivated(trial_name); 2071 field_trial_recorder->FieldTrialActivated(trial_name);
2071 } 2072 }
2072 2073
2073 void RenderThreadImpl::CreateView(mojom::CreateViewParamsPtr params) { 2074 void RenderThreadImpl::CreateView(mojom::CreateViewParamsPtr params) {
2074 CompositorDependencies* compositor_deps = this; 2075 CompositorDependencies* compositor_deps = this;
2075 is_scroll_animator_enabled_ = params->web_preferences.enable_scroll_animator; 2076 is_scroll_animator_enabled_ = params->web_preferences.enable_scroll_animator;
2076 // When bringing in render_view, also bring in webkit's glue and jsbindings. 2077 // When bringing in render_view, also bring in webkit's glue and jsbindings.
2077 RenderViewImpl::Create(compositor_deps, *params, 2078 RenderViewImpl::Create(compositor_deps, *params,
2078 RenderWidget::ShowCallback()); 2079 RenderWidget::ShowCallback());
2079 } 2080 }
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after
2423 } 2424 }
2424 } 2425 }
2425 2426
2426 void RenderThreadImpl::OnRendererInterfaceRequest( 2427 void RenderThreadImpl::OnRendererInterfaceRequest(
2427 mojom::RendererAssociatedRequest request) { 2428 mojom::RendererAssociatedRequest request) {
2428 DCHECK(!renderer_binding_.is_bound()); 2429 DCHECK(!renderer_binding_.is_bound());
2429 renderer_binding_.Bind(std::move(request)); 2430 renderer_binding_.Bind(std::move(request));
2430 } 2431 }
2431 2432
2432 } // namespace content 2433 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/render_frame_impl.cc ('k') | content/renderer/renderer_blink_platform_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698