| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 // Represents the browser side of the browser <--> renderer communication | 5 // Represents the browser side of the browser <--> renderer communication |
| 6 // channel. There will be one RenderProcessHost per renderer process. | 6 // channel. There will be one RenderProcessHost per renderer process. |
| 7 | 7 |
| 8 #include "content/browser/renderer_host/render_process_host_impl.h" | 8 #include "content/browser/renderer_host/render_process_host_impl.h" |
| 9 | 9 |
| 10 #include <algorithm> | 10 #include <algorithm> |
| (...skipping 685 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 696 storage_partition_impl_->GetIndexedDBContext(), | 696 storage_partition_impl_->GetIndexedDBContext(), |
| 697 ChromeBlobStorageContext::GetFor(browser_context_))), | 697 ChromeBlobStorageContext::GetFor(browser_context_))), |
| 698 channel_connected_(false), | 698 channel_connected_(false), |
| 699 sent_render_process_ready_(false), | 699 sent_render_process_ready_(false), |
| 700 #if defined(OS_ANDROID) | 700 #if defined(OS_ANDROID) |
| 701 never_signaled_(base::WaitableEvent::ResetPolicy::MANUAL, | 701 never_signaled_(base::WaitableEvent::ResetPolicy::MANUAL, |
| 702 base::WaitableEvent::InitialState::NOT_SIGNALED), | 702 base::WaitableEvent::InitialState::NOT_SIGNALED), |
| 703 #endif | 703 #endif |
| 704 instance_weak_factory_( | 704 instance_weak_factory_( |
| 705 new base::WeakPtrFactory<RenderProcessHostImpl>(this)), | 705 new base::WeakPtrFactory<RenderProcessHostImpl>(this)), |
| 706 frame_sink_provider_(id_), |
| 706 weak_factory_(this) { | 707 weak_factory_(this) { |
| 707 widget_helper_ = new RenderWidgetHelper(); | 708 widget_helper_ = new RenderWidgetHelper(); |
| 708 | 709 |
| 709 ChildProcessSecurityPolicyImpl::GetInstance()->Add(GetID()); | 710 ChildProcessSecurityPolicyImpl::GetInstance()->Add(GetID()); |
| 710 | 711 |
| 711 CHECK(!BrowserMainRunner::ExitedMainMessageLoop()); | 712 CHECK(!BrowserMainRunner::ExitedMainMessageLoop()); |
| 712 RegisterHost(GetID(), this); | 713 RegisterHost(GetID(), this); |
| 713 g_all_hosts.Get().set_check_on_null_data(true); | 714 g_all_hosts.Get().set_check_on_null_data(true); |
| 714 // Initialize |child_process_activity_time_| to a reasonable value. | 715 // Initialize |child_process_activity_time_| to a reasonable value. |
| 715 mark_child_process_activity_time(); | 716 mark_child_process_activity_time(); |
| (...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1236 &PaymentAppContextImpl::CreatePaymentManager, | 1237 &PaymentAppContextImpl::CreatePaymentManager, |
| 1237 base::Unretained(storage_partition_impl_->GetPaymentAppContext()))); | 1238 base::Unretained(storage_partition_impl_->GetPaymentAppContext()))); |
| 1238 | 1239 |
| 1239 AddUIThreadInterface( | 1240 AddUIThreadInterface( |
| 1240 registry.get(), | 1241 registry.get(), |
| 1241 base::Bind(&RenderProcessHostImpl:: | 1242 base::Bind(&RenderProcessHostImpl:: |
| 1242 CreateOffscreenCanvasCompositorFrameSinkProvider, | 1243 CreateOffscreenCanvasCompositorFrameSinkProvider, |
| 1243 base::Unretained(this))); | 1244 base::Unretained(this))); |
| 1244 | 1245 |
| 1245 AddUIThreadInterface(registry.get(), | 1246 AddUIThreadInterface(registry.get(), |
| 1247 base::Bind(&RenderProcessHostImpl::BindFrameSinkProvider, |
| 1248 base::Unretained(this))); |
| 1249 |
| 1250 AddUIThreadInterface(registry.get(), |
| 1246 base::Bind(&OffscreenCanvasSurfaceFactoryImpl::Create)); | 1251 base::Bind(&OffscreenCanvasSurfaceFactoryImpl::Create)); |
| 1247 AddUIThreadInterface( | 1252 AddUIThreadInterface( |
| 1248 registry.get(), | 1253 registry.get(), |
| 1249 base::Bind(&BackgroundSyncContext::CreateService, | 1254 base::Bind(&BackgroundSyncContext::CreateService, |
| 1250 base::Unretained( | 1255 base::Unretained( |
| 1251 storage_partition_impl_->GetBackgroundSyncContext()))); | 1256 storage_partition_impl_->GetBackgroundSyncContext()))); |
| 1252 AddUIThreadInterface( | 1257 AddUIThreadInterface( |
| 1253 registry.get(), | 1258 registry.get(), |
| 1254 base::Bind(&PlatformNotificationContextImpl::CreateService, | 1259 base::Bind(&PlatformNotificationContextImpl::CreateService, |
| 1255 base::Unretained( | 1260 base::Unretained( |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1362 void RenderProcessHostImpl::CreateOffscreenCanvasCompositorFrameSinkProvider( | 1367 void RenderProcessHostImpl::CreateOffscreenCanvasCompositorFrameSinkProvider( |
| 1363 blink::mojom::OffscreenCanvasCompositorFrameSinkProviderRequest request) { | 1368 blink::mojom::OffscreenCanvasCompositorFrameSinkProviderRequest request) { |
| 1364 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 1369 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 1365 if (!offscreen_canvas_provider_) { | 1370 if (!offscreen_canvas_provider_) { |
| 1366 offscreen_canvas_provider_.reset( | 1371 offscreen_canvas_provider_.reset( |
| 1367 new OffscreenCanvasCompositorFrameSinkProviderImpl()); | 1372 new OffscreenCanvasCompositorFrameSinkProviderImpl()); |
| 1368 } | 1373 } |
| 1369 offscreen_canvas_provider_->Add(std::move(request)); | 1374 offscreen_canvas_provider_->Add(std::move(request)); |
| 1370 } | 1375 } |
| 1371 | 1376 |
| 1377 void RenderProcessHostImpl::BindFrameSinkProvider( |
| 1378 mojom::FrameSinkProviderRequest request) { |
| 1379 frame_sink_provider_.Bind(std::move(request)); |
| 1380 } |
| 1381 |
| 1372 void RenderProcessHostImpl::CreateStoragePartitionService( | 1382 void RenderProcessHostImpl::CreateStoragePartitionService( |
| 1373 mojo::InterfaceRequest<mojom::StoragePartitionService> request) { | 1383 mojo::InterfaceRequest<mojom::StoragePartitionService> request) { |
| 1374 // DO NOT REMOVE THIS COMMAND LINE CHECK WITHOUT SECURITY REVIEW! | 1384 // DO NOT REMOVE THIS COMMAND LINE CHECK WITHOUT SECURITY REVIEW! |
| 1375 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 1385 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 1376 switches::kMojoLocalStorage)) { | 1386 switches::kMojoLocalStorage)) { |
| 1377 storage_partition_impl_->Bind(std::move(request)); | 1387 storage_partition_impl_->Bind(std::move(request)); |
| 1378 } | 1388 } |
| 1379 } | 1389 } |
| 1380 | 1390 |
| 1381 int RenderProcessHostImpl::GetNextRoutingID() { | 1391 int RenderProcessHostImpl::GetNextRoutingID() { |
| (...skipping 1369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2751 // before Init()) and they'll eventually reach the new process. | 2761 // before Init()) and they'll eventually reach the new process. |
| 2752 // | 2762 // |
| 2753 // Note that this may have already been called by one of the above observers | 2763 // Note that this may have already been called by one of the above observers |
| 2754 EnableSendQueue(); | 2764 EnableSendQueue(); |
| 2755 | 2765 |
| 2756 // It's possible that one of the calls out to the observers might have caused | 2766 // It's possible that one of the calls out to the observers might have caused |
| 2757 // this object to be no longer needed. | 2767 // this object to be no longer needed. |
| 2758 if (delayed_cleanup_needed_) | 2768 if (delayed_cleanup_needed_) |
| 2759 Cleanup(); | 2769 Cleanup(); |
| 2760 | 2770 |
| 2771 // If RenderProcessHostImpl is reused, the next renderer will send a new |
| 2772 // request for FrameSinkProvider so make sure frame_sink_provider_ is ready |
| 2773 // for that. |
| 2774 frame_sink_provider_.Unbind(); |
| 2775 |
| 2761 // This object is not deleted at this point and might be reused later. | 2776 // This object is not deleted at this point and might be reused later. |
| 2762 // TODO(darin): clean this up | 2777 // TODO(darin): clean this up |
| 2763 } | 2778 } |
| 2764 | 2779 |
| 2765 size_t RenderProcessHost::GetActiveViewCount() { | 2780 size_t RenderProcessHost::GetActiveViewCount() { |
| 2766 size_t num_active_views = 0; | 2781 size_t num_active_views = 0; |
| 2767 std::unique_ptr<RenderWidgetHostIterator> widgets( | 2782 std::unique_ptr<RenderWidgetHostIterator> widgets( |
| 2768 RenderWidgetHost::GetRenderWidgetHosts()); | 2783 RenderWidgetHost::GetRenderWidgetHosts()); |
| 2769 while (RenderWidgetHost* widget = widgets->GetNextHost()) { | 2784 while (RenderWidgetHost* widget = widgets->GetNextHost()) { |
| 2770 // Count only RenderWidgetHosts in this process. | 2785 // Count only RenderWidgetHosts in this process. |
| (...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3060 LOG(ERROR) << "Terminating render process for bad Mojo message: " << error; | 3075 LOG(ERROR) << "Terminating render process for bad Mojo message: " << error; |
| 3061 | 3076 |
| 3062 // The ReceivedBadMessage call below will trigger a DumpWithoutCrashing. | 3077 // The ReceivedBadMessage call below will trigger a DumpWithoutCrashing. |
| 3063 // Capture the error message in a crash key value. | 3078 // Capture the error message in a crash key value. |
| 3064 base::debug::ScopedCrashKey error_key_value("mojo-message-error", error); | 3079 base::debug::ScopedCrashKey error_key_value("mojo-message-error", error); |
| 3065 bad_message::ReceivedBadMessage(render_process_id, | 3080 bad_message::ReceivedBadMessage(render_process_id, |
| 3066 bad_message::RPH_MOJO_PROCESS_ERROR); | 3081 bad_message::RPH_MOJO_PROCESS_ERROR); |
| 3067 } | 3082 } |
| 3068 | 3083 |
| 3069 } // namespace content | 3084 } // namespace content |
| OLD | NEW |