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 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
135 #include "content/common/child_process_messages.h" | 135 #include "content/common/child_process_messages.h" |
136 #include "content/common/content_switches_internal.h" | 136 #include "content/common/content_switches_internal.h" |
137 #include "content/common/frame_messages.h" | 137 #include "content/common/frame_messages.h" |
138 #include "content/common/in_process_child_thread_params.h" | 138 #include "content/common/in_process_child_thread_params.h" |
139 #include "content/common/render_process_messages.h" | 139 #include "content/common/render_process_messages.h" |
140 #include "content/common/resource_messages.h" | 140 #include "content/common/resource_messages.h" |
141 #include "content/common/service_manager/child_connection.h" | 141 #include "content/common/service_manager/child_connection.h" |
142 #include "content/common/service_manager/service_manager_connection_impl.h" | 142 #include "content/common/service_manager/service_manager_connection_impl.h" |
143 #include "content/common/site_isolation_policy.h" | 143 #include "content/common/site_isolation_policy.h" |
144 #include "content/common/view_messages.h" | 144 #include "content/common/view_messages.h" |
145 #include "content/common/worker_fetch_context_factory.mojom.h" | |
145 #include "content/public/browser/browser_context.h" | 146 #include "content/public/browser/browser_context.h" |
146 #include "content/public/browser/browser_thread.h" | 147 #include "content/public/browser/browser_thread.h" |
147 #include "content/public/browser/content_browser_client.h" | 148 #include "content/public/browser/content_browser_client.h" |
148 #include "content/public/browser/notification_service.h" | 149 #include "content/public/browser/notification_service.h" |
149 #include "content/public/browser/notification_types.h" | 150 #include "content/public/browser/notification_types.h" |
150 #include "content/public/browser/render_process_host_factory.h" | 151 #include "content/public/browser/render_process_host_factory.h" |
151 #include "content/public/browser/render_process_host_observer.h" | 152 #include "content/public/browser/render_process_host_observer.h" |
152 #include "content/public/browser/render_widget_host.h" | 153 #include "content/public/browser/render_widget_host.h" |
153 #include "content/public/browser/render_widget_host_iterator.h" | 154 #include "content/public/browser/render_widget_host_iterator.h" |
154 #include "content/public/browser/resource_context.h" | 155 #include "content/public/browser/resource_context.h" |
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
465 // Forwards service requests to Service Manager since the renderer cannot launch | 466 // Forwards service requests to Service Manager since the renderer cannot launch |
466 // out-of-process services on is own. | 467 // out-of-process services on is own. |
467 template <typename R> | 468 template <typename R> |
468 void ForwardShapeDetectionRequest(R request) { | 469 void ForwardShapeDetectionRequest(R request) { |
469 service_manager::Connector* connector = | 470 service_manager::Connector* connector = |
470 ServiceManagerConnection::GetForProcess()->GetConnector(); | 471 ServiceManagerConnection::GetForProcess()->GetConnector(); |
471 connector->BindInterface(shape_detection::mojom::kServiceName, | 472 connector->BindInterface(shape_detection::mojom::kServiceName, |
472 std::move(request)); | 473 std::move(request)); |
473 } | 474 } |
474 | 475 |
476 class WorkerFetchContextFactoryImpl : public mojom::WorkerFetchContextFactory { | |
477 public: | |
478 static void Create( | |
479 int render_process_id, | |
480 ResourceMessageFilter* resource_message_filter, | |
481 scoped_refptr<ServiceWorkerContextWrapper> service_worker_context, | |
482 mojom::WorkerFetchContextFactoryRequest request) { | |
483 DCHECK(base::FeatureList::IsEnabled(features::kOffMainThreadFetch)); | |
484 mojo::MakeStrongBinding( | |
485 base::MakeUnique<WorkerFetchContextFactoryImpl>( | |
486 render_process_id, resource_message_filter->GetWeakPtr(), | |
487 std::move(service_worker_context)), | |
488 std::move(request)); | |
489 } | |
490 WorkerFetchContextFactoryImpl( | |
491 int render_process_id, | |
492 base::WeakPtr<ResourceMessageFilter> resource_message_filter, | |
493 scoped_refptr<ServiceWorkerContextWrapper> service_worker_context) | |
494 : render_process_id_(render_process_id), | |
495 url_loader_factory_binding_(resource_message_filter.get()), | |
496 service_worker_context_(std::move(service_worker_context)) {} | |
497 ~WorkerFetchContextFactoryImpl() override {} | |
498 | |
499 void CreateWorkerFetchContext( | |
500 mojom::URLLoaderFactoryAssociatedRequest loader_request, | |
501 mojom::ServiceWorkerClientAssociatedPtrInfo client_ptr_info, | |
502 int service_worker_provider_id) override { | |
503 url_loader_factory_binding_.Bind(std::move(loader_request)); | |
504 service_worker_context_->BindWorkerFetchContext(render_process_id_, | |
505 service_worker_provider_id, | |
506 std::move(client_ptr_info)); | |
507 }; | |
508 void GetURLLoaderFactory( | |
509 mojom::URLLoaderFactoryAssociatedRequest loader_request) override { | |
510 url_loader_factory_binding_.Bind(std::move(loader_request)); | |
511 } | |
512 | |
513 private: | |
514 const int render_process_id_; | |
515 mojo::AssociatedBinding<mojom::URLLoaderFactory> url_loader_factory_binding_; | |
kinuko
2017/04/14 02:27:02
Question: if ResourceMessageFilter implements its
kinuko
2017/04/14 05:38:12
Per offline discussion it looks it's not possible
| |
516 | |
517 scoped_refptr<ServiceWorkerContextWrapper> service_worker_context_; | |
518 }; | |
519 | |
475 } // namespace | 520 } // namespace |
476 | 521 |
477 RendererMainThreadFactoryFunction g_renderer_main_thread_factory = NULL; | 522 RendererMainThreadFactoryFunction g_renderer_main_thread_factory = NULL; |
478 | 523 |
479 base::MessageLoop* g_in_process_thread; | 524 base::MessageLoop* g_in_process_thread; |
480 | 525 |
481 // Stores the maximum number of renderer processes the content module can | 526 // Stores the maximum number of renderer processes the content module can |
482 // create. | 527 // create. |
483 static size_t g_max_renderer_count_override = 0; | 528 static size_t g_max_renderer_count_override = 0; |
484 | 529 |
(...skipping 808 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1293 make_scoped_refptr( | 1338 make_scoped_refptr( |
1294 storage_partition_impl_->GetBackgroundFetchContext()))); | 1339 storage_partition_impl_->GetBackgroundFetchContext()))); |
1295 | 1340 |
1296 registry->AddInterface(base::Bind(&RenderProcessHostImpl::CreateMusGpuRequest, | 1341 registry->AddInterface(base::Bind(&RenderProcessHostImpl::CreateMusGpuRequest, |
1297 base::Unretained(this))); | 1342 base::Unretained(this))); |
1298 | 1343 |
1299 registry->AddInterface( | 1344 registry->AddInterface( |
1300 base::Bind(&VideoCaptureHost::Create, | 1345 base::Bind(&VideoCaptureHost::Create, |
1301 BrowserMainLoop::GetInstance()->media_stream_manager())); | 1346 BrowserMainLoop::GetInstance()->media_stream_manager())); |
1302 | 1347 |
1348 if (base::FeatureList::IsEnabled(features::kOffMainThreadFetch)) { | |
1349 scoped_refptr<ServiceWorkerContextWrapper> service_worker_context( | |
1350 static_cast<ServiceWorkerContextWrapper*>( | |
1351 storage_partition_impl_->GetServiceWorkerContext())); | |
1352 registry->AddInterface( | |
1353 base::Bind(&WorkerFetchContextFactoryImpl::Create, GetID(), | |
1354 base::Unretained(resource_message_filter_.get()), | |
1355 service_worker_context)); | |
1356 } | |
1357 | |
1303 // This is to support usage of WebSockets in cases in which there is no | 1358 // This is to support usage of WebSockets in cases in which there is no |
1304 // associated RenderFrame (e.g., Shared Workers). | 1359 // associated RenderFrame (e.g., Shared Workers). |
1305 AddUIThreadInterface( | 1360 AddUIThreadInterface( |
1306 registry.get(), base::Bind(&WebSocketManager::CreateWebSocket, GetID(), | 1361 registry.get(), base::Bind(&WebSocketManager::CreateWebSocket, GetID(), |
1307 MSG_ROUTING_NONE)); | 1362 MSG_ROUTING_NONE)); |
1308 | 1363 |
1309 // Chrome browser process only provides DiscardableSharedMemory service when | 1364 // Chrome browser process only provides DiscardableSharedMemory service when |
1310 // Chrome is not running in mus+ash. | 1365 // Chrome is not running in mus+ash. |
1311 if (!service_manager::ServiceManagerIsRemote()) { | 1366 if (!service_manager::ServiceManagerIsRemote()) { |
1312 discardable_memory::DiscardableSharedMemoryManager* manager = | 1367 discardable_memory::DiscardableSharedMemoryManager* manager = |
(...skipping 1774 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3087 LOG(ERROR) << "Terminating render process for bad Mojo message: " << error; | 3142 LOG(ERROR) << "Terminating render process for bad Mojo message: " << error; |
3088 | 3143 |
3089 // The ReceivedBadMessage call below will trigger a DumpWithoutCrashing. | 3144 // The ReceivedBadMessage call below will trigger a DumpWithoutCrashing. |
3090 // Capture the error message in a crash key value. | 3145 // Capture the error message in a crash key value. |
3091 base::debug::ScopedCrashKey error_key_value("mojo-message-error", error); | 3146 base::debug::ScopedCrashKey error_key_value("mojo-message-error", error); |
3092 bad_message::ReceivedBadMessage(render_process_id, | 3147 bad_message::ReceivedBadMessage(render_process_id, |
3093 bad_message::RPH_MOJO_PROCESS_ERROR); | 3148 bad_message::RPH_MOJO_PROCESS_ERROR); |
3094 } | 3149 } |
3095 | 3150 |
3096 } // namespace content | 3151 } // namespace content |
OLD | NEW |