OLD | NEW |
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 // 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 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
77 #include "content/browser/renderer_host/render_view_host_delegate.h" | 77 #include "content/browser/renderer_host/render_view_host_delegate.h" |
78 #include "content/browser/renderer_host/render_view_host_impl.h" | 78 #include "content/browser/renderer_host/render_view_host_impl.h" |
79 #include "content/browser/renderer_host/render_widget_helper.h" | 79 #include "content/browser/renderer_host/render_widget_helper.h" |
80 #include "content/browser/renderer_host/socket_stream_dispatcher_host.h" | 80 #include "content/browser/renderer_host/socket_stream_dispatcher_host.h" |
81 #include "content/browser/renderer_host/text_input_client_message_filter.h" | 81 #include "content/browser/renderer_host/text_input_client_message_filter.h" |
82 #include "content/browser/resolve_proxy_msg_helper.h" | 82 #include "content/browser/resolve_proxy_msg_helper.h" |
83 #include "content/browser/storage_partition_impl.h" | 83 #include "content/browser/storage_partition_impl.h" |
84 #include "content/browser/speech/input_tag_speech_dispatcher_host.h" | 84 #include "content/browser/speech/input_tag_speech_dispatcher_host.h" |
85 #include "content/browser/speech/speech_recognition_dispatcher_host.h" | 85 #include "content/browser/speech/speech_recognition_dispatcher_host.h" |
86 #include "content/browser/trace_message_filter.h" | 86 #include "content/browser/trace_message_filter.h" |
87 #include "content/browser/webui/web_ui_controller_factory_registry.h" | |
88 #include "content/browser/worker_host/worker_storage_partition.h" | 87 #include "content/browser/worker_host/worker_storage_partition.h" |
89 #include "content/browser/worker_host/worker_message_filter.h" | 88 #include "content/browser/worker_host/worker_message_filter.h" |
90 #include "content/common/child_process_host_impl.h" | 89 #include "content/common/child_process_host_impl.h" |
91 #include "content/common/child_process_messages.h" | 90 #include "content/common/child_process_messages.h" |
92 #include "content/common/gpu/gpu_messages.h" | 91 #include "content/common/gpu/gpu_messages.h" |
93 #include "content/common/resource_messages.h" | 92 #include "content/common/resource_messages.h" |
94 #include "content/common/view_messages.h" | 93 #include "content/common/view_messages.h" |
95 #include "content/public/browser/browser_context.h" | 94 #include "content/public/browser/browser_context.h" |
96 #include "content/public/browser/content_browser_client.h" | 95 #include "content/public/browser/content_browser_client.h" |
97 #include "content/public/browser/notification_service.h" | 96 #include "content/public/browser/notification_service.h" |
98 #include "content/public/browser/notification_types.h" | 97 #include "content/public/browser/notification_types.h" |
99 #include "content/public/browser/render_process_host_factory.h" | 98 #include "content/public/browser/render_process_host_factory.h" |
100 #include "content/public/browser/resource_context.h" | 99 #include "content/public/browser/resource_context.h" |
101 #include "content/public/browser/user_metrics.h" | 100 #include "content/public/browser/user_metrics.h" |
| 101 #include "content/public/browser/web_ui_controller_factory.h" |
102 #include "content/public/common/content_constants.h" | 102 #include "content/public/common/content_constants.h" |
103 #include "content/public/common/content_switches.h" | 103 #include "content/public/common/content_switches.h" |
104 #include "content/public/common/process_type.h" | 104 #include "content/public/common/process_type.h" |
105 #include "content/public/common/result_codes.h" | 105 #include "content/public/common/result_codes.h" |
106 #include "content/public/common/url_constants.h" | 106 #include "content/public/common/url_constants.h" |
107 #include "content/renderer/render_process_impl.h" | 107 #include "content/renderer/render_process_impl.h" |
108 #include "content/renderer/render_thread_impl.h" | 108 #include "content/renderer/render_thread_impl.h" |
109 #include "ipc/ipc_channel.h" | 109 #include "ipc/ipc_channel.h" |
110 #include "ipc/ipc_logging.h" | 110 #include "ipc/ipc_logging.h" |
111 #include "ipc/ipc_platform_file.h" | 111 #include "ipc/ipc_platform_file.h" |
(...skipping 1152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1264 // All URLs are suitable if this is associated with a guest renderer process. | 1264 // All URLs are suitable if this is associated with a guest renderer process. |
1265 // TODO(fsamuel, creis): Further validation is needed to ensure that only | 1265 // TODO(fsamuel, creis): Further validation is needed to ensure that only |
1266 // normal web URLs are permitted in guest processes. We need to investigate | 1266 // normal web URLs are permitted in guest processes. We need to investigate |
1267 // where this validation should happen. | 1267 // where this validation should happen. |
1268 if (host->IsGuest()) | 1268 if (host->IsGuest()) |
1269 return true; | 1269 return true; |
1270 | 1270 |
1271 if (!host->IsGuest() && site_url.SchemeIs(chrome::kGuestScheme)) | 1271 if (!host->IsGuest() && site_url.SchemeIs(chrome::kGuestScheme)) |
1272 return false; | 1272 return false; |
1273 | 1273 |
1274 if (ChildProcessSecurityPolicyImpl::GetInstance()->HasWebUIBindings( | 1274 WebUIControllerFactory* factory = |
| 1275 GetContentClient()->browser()->GetWebUIControllerFactory(); |
| 1276 if (factory && |
| 1277 ChildProcessSecurityPolicyImpl::GetInstance()->HasWebUIBindings( |
1275 host->GetID()) != | 1278 host->GetID()) != |
1276 WebUIControllerFactoryRegistry::GetInstance()->UseWebUIBindingsForURL( | 1279 factory->UseWebUIBindingsForURL(browser_context, site_url)) { |
1277 browser_context, site_url)) { | |
1278 return false; | 1280 return false; |
1279 } | 1281 } |
1280 | 1282 |
1281 return GetContentClient()->browser()->IsSuitableHost(host, site_url); | 1283 return GetContentClient()->browser()->IsSuitableHost(host, site_url); |
1282 } | 1284 } |
1283 | 1285 |
1284 // static | 1286 // static |
1285 bool RenderProcessHost::run_renderer_in_process() { | 1287 bool RenderProcessHost::run_renderer_in_process() { |
1286 return g_run_renderer_in_process_; | 1288 return g_run_renderer_in_process_; |
1287 } | 1289 } |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1383 // We want to consolidate particular sites like WebUI when we are using | 1385 // We want to consolidate particular sites like WebUI when we are using |
1384 // process-per-tab or process-per-site-instance models. | 1386 // process-per-tab or process-per-site-instance models. |
1385 // Note that --single-process is handled in ShouldTryToUseExistingProcessHost. | 1387 // Note that --single-process is handled in ShouldTryToUseExistingProcessHost. |
1386 | 1388 |
1387 if (GetContentClient()->browser()-> | 1389 if (GetContentClient()->browser()-> |
1388 ShouldUseProcessPerSite(browser_context, url)) { | 1390 ShouldUseProcessPerSite(browser_context, url)) { |
1389 return true; | 1391 return true; |
1390 } | 1392 } |
1391 | 1393 |
1392 // DevTools pages have WebUI type but should not reuse the same host. | 1394 // DevTools pages have WebUI type but should not reuse the same host. |
1393 if (WebUIControllerFactoryRegistry::GetInstance()->UseWebUIForURL( | 1395 WebUIControllerFactory* factory = |
1394 browser_context, url) && | 1396 GetContentClient()->browser()->GetWebUIControllerFactory(); |
| 1397 if (factory && |
| 1398 factory->UseWebUIForURL(browser_context, url) && |
1395 !url.SchemeIs(chrome::kChromeDevToolsScheme)) { | 1399 !url.SchemeIs(chrome::kChromeDevToolsScheme)) { |
1396 return true; | 1400 return true; |
1397 } | 1401 } |
1398 | 1402 |
1399 // In all other cases, don't use process-per-site logic. | 1403 // In all other cases, don't use process-per-site logic. |
1400 return false; | 1404 return false; |
1401 } | 1405 } |
1402 | 1406 |
1403 // static | 1407 // static |
1404 RenderProcessHost* RenderProcessHostImpl::GetProcessHostForSite( | 1408 RenderProcessHost* RenderProcessHostImpl::GetProcessHostForSite( |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1598 TRACE_EVENT0("renderer_host", | 1602 TRACE_EVENT0("renderer_host", |
1599 "RenderWidgetHostImpl::OnCompositorSurfaceBuffersSwappedNoHost"); | 1603 "RenderWidgetHostImpl::OnCompositorSurfaceBuffersSwappedNoHost"); |
1600 AcceleratedSurfaceMsg_BufferPresented_Params ack_params; | 1604 AcceleratedSurfaceMsg_BufferPresented_Params ack_params; |
1601 ack_params.sync_point = 0; | 1605 ack_params.sync_point = 0; |
1602 RenderWidgetHostImpl::AcknowledgeBufferPresent(route_id, | 1606 RenderWidgetHostImpl::AcknowledgeBufferPresent(route_id, |
1603 gpu_process_host_id, | 1607 gpu_process_host_id, |
1604 ack_params); | 1608 ack_params); |
1605 } | 1609 } |
1606 | 1610 |
1607 } // namespace content | 1611 } // namespace content |
OLD | NEW |