| 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 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 73 #include "content/browser/indexed_db/indexed_db_dispatcher_host.h" | 73 #include "content/browser/indexed_db/indexed_db_dispatcher_host.h" |
| 74 #include "content/browser/loader/resource_message_filter.h" | 74 #include "content/browser/loader/resource_message_filter.h" |
| 75 #include "content/browser/loader/resource_scheduler_filter.h" | 75 #include "content/browser/loader/resource_scheduler_filter.h" |
| 76 #include "content/browser/media/capture/audio_mirroring_manager.h" | 76 #include "content/browser/media/capture/audio_mirroring_manager.h" |
| 77 #include "content/browser/media/media_internals.h" | 77 #include "content/browser/media/media_internals.h" |
| 78 #include "content/browser/media/midi_host.h" | 78 #include "content/browser/media/midi_host.h" |
| 79 #include "content/browser/memory/memory_message_filter.h" | 79 #include "content/browser/memory/memory_message_filter.h" |
| 80 #include "content/browser/message_port_message_filter.h" | 80 #include "content/browser/message_port_message_filter.h" |
| 81 #include "content/browser/mime_registry_message_filter.h" | 81 #include "content/browser/mime_registry_message_filter.h" |
| 82 #include "content/browser/mojo/mojo_application_host.h" | 82 #include "content/browser/mojo/mojo_application_host.h" |
| 83 #include "content/browser/mojo/mojo_shell_client_host.h" |
| 83 #include "content/browser/navigator_connect/service_port_service_impl.h" | 84 #include "content/browser/navigator_connect/service_port_service_impl.h" |
| 84 #include "content/browser/notifications/notification_message_filter.h" | 85 #include "content/browser/notifications/notification_message_filter.h" |
| 85 #include "content/browser/permissions/permission_service_context.h" | 86 #include "content/browser/permissions/permission_service_context.h" |
| 86 #include "content/browser/permissions/permission_service_impl.h" | 87 #include "content/browser/permissions/permission_service_impl.h" |
| 87 #include "content/browser/profiler_message_filter.h" | 88 #include "content/browser/profiler_message_filter.h" |
| 88 #include "content/browser/push_messaging/push_messaging_message_filter.h" | 89 #include "content/browser/push_messaging/push_messaging_message_filter.h" |
| 89 #include "content/browser/quota_dispatcher_host.h" | 90 #include "content/browser/quota_dispatcher_host.h" |
| 90 #include "content/browser/renderer_host/clipboard_message_filter.h" | 91 #include "content/browser/renderer_host/clipboard_message_filter.h" |
| 91 #include "content/browser/renderer_host/database_message_filter.h" | 92 #include "content/browser/renderer_host/database_message_filter.h" |
| 92 #include "content/browser/renderer_host/file_utilities_message_filter.h" | 93 #include "content/browser/renderer_host/file_utilities_message_filter.h" |
| (...skipping 24 matching lines...) Expand all Loading... |
| 117 #include "content/browser/tracing/trace_message_filter.h" | 118 #include "content/browser/tracing/trace_message_filter.h" |
| 118 #include "content/browser/webui/web_ui_controller_factory_registry.h" | 119 #include "content/browser/webui/web_ui_controller_factory_registry.h" |
| 119 #include "content/common/child_process_host_impl.h" | 120 #include "content/common/child_process_host_impl.h" |
| 120 #include "content/common/child_process_messages.h" | 121 #include "content/common/child_process_messages.h" |
| 121 #include "content/common/content_switches_internal.h" | 122 #include "content/common/content_switches_internal.h" |
| 122 #include "content/common/frame_messages.h" | 123 #include "content/common/frame_messages.h" |
| 123 #include "content/common/gpu/gpu_host_messages.h" | 124 #include "content/common/gpu/gpu_host_messages.h" |
| 124 #include "content/common/in_process_child_thread_params.h" | 125 #include "content/common/in_process_child_thread_params.h" |
| 125 #include "content/common/mojo/channel_init.h" | 126 #include "content/common/mojo/channel_init.h" |
| 126 #include "content/common/mojo/mojo_messages.h" | 127 #include "content/common/mojo/mojo_messages.h" |
| 128 #include "content/common/mojo/mojo_shell_connection_impl.h" |
| 127 #include "content/common/render_process_messages.h" | 129 #include "content/common/render_process_messages.h" |
| 128 #include "content/common/resource_messages.h" | 130 #include "content/common/resource_messages.h" |
| 129 #include "content/common/site_isolation_policy.h" | 131 #include "content/common/site_isolation_policy.h" |
| 130 #include "content/common/view_messages.h" | 132 #include "content/common/view_messages.h" |
| 131 #include "content/public/browser/browser_context.h" | 133 #include "content/public/browser/browser_context.h" |
| 132 #include "content/public/browser/content_browser_client.h" | 134 #include "content/public/browser/content_browser_client.h" |
| 133 #include "content/public/browser/navigator_connect_context.h" | 135 #include "content/public/browser/navigator_connect_context.h" |
| 134 #include "content/public/browser/notification_service.h" | 136 #include "content/public/browser/notification_service.h" |
| 135 #include "content/public/browser/notification_types.h" | 137 #include "content/public/browser/notification_types.h" |
| 136 #include "content/public/browser/render_process_host_factory.h" | 138 #include "content/public/browser/render_process_host_factory.h" |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 | 225 |
| 224 #if defined(ENABLE_WEBRTC) | 226 #if defined(ENABLE_WEBRTC) |
| 225 #include "content/browser/media/webrtc/webrtc_internals.h" | 227 #include "content/browser/media/webrtc/webrtc_internals.h" |
| 226 #include "content/browser/renderer_host/media/media_stream_track_metrics_host.h" | 228 #include "content/browser/renderer_host/media/media_stream_track_metrics_host.h" |
| 227 #include "content/browser/renderer_host/media/webrtc_identity_service_host.h" | 229 #include "content/browser/renderer_host/media/webrtc_identity_service_host.h" |
| 228 #include "content/browser/renderer_host/p2p/socket_dispatcher_host.h" | 230 #include "content/browser/renderer_host/p2p/socket_dispatcher_host.h" |
| 229 #include "content/common/media/aec_dump_messages.h" | 231 #include "content/common/media/aec_dump_messages.h" |
| 230 #include "content/common/media/media_stream_messages.h" | 232 #include "content/common/media/media_stream_messages.h" |
| 231 #endif | 233 #endif |
| 232 | 234 |
| 233 #if defined(MOJO_SHELL_CLIENT) | |
| 234 #include "content/browser/mojo/mojo_shell_client_host.h" | |
| 235 #include "content/common/mojo/mojo_shell_connection_impl.h" | |
| 236 #endif | |
| 237 | |
| 238 #if defined(OS_WIN) | 235 #if defined(OS_WIN) |
| 239 #define IntToStringType base::IntToString16 | 236 #define IntToStringType base::IntToString16 |
| 240 #else | 237 #else |
| 241 #define IntToStringType base::IntToString | 238 #define IntToStringType base::IntToString |
| 242 #endif | 239 #endif |
| 243 | 240 |
| 244 namespace content { | 241 namespace content { |
| 245 namespace { | 242 namespace { |
| 246 | 243 |
| 247 const char kSiteProcessMapKeyName[] = "content_site_process_map"; | 244 const char kSiteProcessMapKeyName[] = "content_site_process_map"; |
| (...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 620 // single process modes, the global attachment broker is the privileged | 617 // single process modes, the global attachment broker is the privileged |
| 621 // attachment broker, rather than an unprivileged attachment broker. | 618 // attachment broker, rather than an unprivileged attachment broker. |
| 622 #if defined(OS_MACOSX) && !defined(OS_IOS) | 619 #if defined(OS_MACOSX) && !defined(OS_IOS) |
| 623 IPC::AttachmentBrokerPrivileged::CreateBrokerIfNeeded( | 620 IPC::AttachmentBrokerPrivileged::CreateBrokerIfNeeded( |
| 624 MachBroker::GetInstance()); | 621 MachBroker::GetInstance()); |
| 625 #else | 622 #else |
| 626 IPC::AttachmentBrokerPrivileged::CreateBrokerIfNeeded(); | 623 IPC::AttachmentBrokerPrivileged::CreateBrokerIfNeeded(); |
| 627 #endif // defined(OS_MACOSX) && !defined(OS_IOS) | 624 #endif // defined(OS_MACOSX) && !defined(OS_IOS) |
| 628 #endif // USE_ATTACHMENT_BROKER | 625 #endif // USE_ATTACHMENT_BROKER |
| 629 | 626 |
| 630 #if defined(MOJO_SHELL_CLIENT) | |
| 631 RegisterChildWithExternalShell(id_, this); | 627 RegisterChildWithExternalShell(id_, this); |
| 632 #endif | |
| 633 } | 628 } |
| 634 | 629 |
| 635 // static | 630 // static |
| 636 void RenderProcessHostImpl::ShutDownInProcessRenderer() { | 631 void RenderProcessHostImpl::ShutDownInProcessRenderer() { |
| 637 DCHECK(g_run_renderer_in_process_); | 632 DCHECK(g_run_renderer_in_process_); |
| 638 | 633 |
| 639 switch (g_all_hosts.Pointer()->size()) { | 634 switch (g_all_hosts.Pointer()->size()) { |
| 640 case 0: | 635 case 0: |
| 641 return; | 636 return; |
| 642 case 1: { | 637 case 1: { |
| (...skipping 970 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1613 if (browser_cmd.HasSwitch(switches::kWaitForDebuggerChildren)) { | 1608 if (browser_cmd.HasSwitch(switches::kWaitForDebuggerChildren)) { |
| 1614 // Look to pass-on the kWaitForDebugger flag. | 1609 // Look to pass-on the kWaitForDebugger flag. |
| 1615 std::string value = | 1610 std::string value = |
| 1616 browser_cmd.GetSwitchValueASCII(switches::kWaitForDebuggerChildren); | 1611 browser_cmd.GetSwitchValueASCII(switches::kWaitForDebuggerChildren); |
| 1617 if (value.empty() || value == switches::kRendererProcess) { | 1612 if (value.empty() || value == switches::kRendererProcess) { |
| 1618 renderer_cmd->AppendSwitch(switches::kWaitForDebugger); | 1613 renderer_cmd->AppendSwitch(switches::kWaitForDebugger); |
| 1619 } | 1614 } |
| 1620 } | 1615 } |
| 1621 | 1616 |
| 1622 #if defined(MOJO_SHELL_CLIENT) | 1617 #if defined(MOJO_SHELL_CLIENT) |
| 1623 if (IsRunningInMojoShell()) | 1618 renderer_cmd->AppendSwitch(switches::kEnableMojoShellConnection); |
| 1624 renderer_cmd->AppendSwitch(switches::kEnableMojoShellConnection); | |
| 1625 #endif | 1619 #endif |
| 1626 } | 1620 } |
| 1627 | 1621 |
| 1628 base::ProcessHandle RenderProcessHostImpl::GetHandle() const { | 1622 base::ProcessHandle RenderProcessHostImpl::GetHandle() const { |
| 1629 if (run_renderer_in_process()) | 1623 if (run_renderer_in_process()) |
| 1630 return base::GetCurrentProcessHandle(); | 1624 return base::GetCurrentProcessHandle(); |
| 1631 | 1625 |
| 1632 if (!child_process_launcher_.get() || child_process_launcher_->IsStarting()) | 1626 if (!child_process_launcher_.get() || child_process_launcher_->IsStarting()) |
| 1633 return base::kNullProcessHandle; | 1627 return base::kNullProcessHandle; |
| 1634 | 1628 |
| (...skipping 933 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2568 if (child_process_launcher_.get()) { | 2562 if (child_process_launcher_.get()) { |
| 2569 base::ProcessHandle process_handle = | 2563 base::ProcessHandle process_handle = |
| 2570 child_process_launcher_->GetProcess().Handle(); | 2564 child_process_launcher_->GetProcess().Handle(); |
| 2571 mojo::edk::ScopedPlatformHandle client_pipe = | 2565 mojo::edk::ScopedPlatformHandle client_pipe = |
| 2572 mojo::edk::ChildProcessLaunched(process_handle); | 2566 mojo::edk::ChildProcessLaunched(process_handle); |
| 2573 Send(new ChildProcessMsg_SetMojoParentPipeHandle( | 2567 Send(new ChildProcessMsg_SetMojoParentPipeHandle( |
| 2574 IPC::GetFileHandleForProcess(client_pipe.release().handle, | 2568 IPC::GetFileHandleForProcess(client_pipe.release().handle, |
| 2575 process_handle, true))); | 2569 process_handle, true))); |
| 2576 } | 2570 } |
| 2577 | 2571 |
| 2578 #if defined(MOJO_SHELL_CLIENT) | |
| 2579 // Send the mojo shell handle to the renderer. | 2572 // Send the mojo shell handle to the renderer. |
| 2580 SendExternalMojoShellHandleToChild(GetHandle(), this); | 2573 SendExternalMojoShellHandleToChild(GetHandle(), this); |
| 2581 #endif | |
| 2582 | 2574 |
| 2583 // Allow Mojo to be setup before the renderer sees any Chrome IPC messages. | 2575 // Allow Mojo to be setup before the renderer sees any Chrome IPC messages. |
| 2584 // This way, Mojo can be safely used from the renderer in response to any | 2576 // This way, Mojo can be safely used from the renderer in response to any |
| 2585 // Chrome IPC message. | 2577 // Chrome IPC message. |
| 2586 mojo_application_host_->Activate(this, GetHandle()); | 2578 mojo_application_host_->Activate(this, GetHandle()); |
| 2587 | 2579 |
| 2588 while (!queued_messages_.empty()) { | 2580 while (!queued_messages_.empty()) { |
| 2589 Send(queued_messages_.front()); | 2581 Send(queued_messages_.front()); |
| 2590 queued_messages_.pop(); | 2582 queued_messages_.pop(); |
| 2591 } | 2583 } |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2793 | 2785 |
| 2794 // Skip widgets in other processes. | 2786 // Skip widgets in other processes. |
| 2795 if (rvh->GetProcess()->GetID() != GetID()) | 2787 if (rvh->GetProcess()->GetID() != GetID()) |
| 2796 continue; | 2788 continue; |
| 2797 | 2789 |
| 2798 rvh->OnWebkitPreferencesChanged(); | 2790 rvh->OnWebkitPreferencesChanged(); |
| 2799 } | 2791 } |
| 2800 } | 2792 } |
| 2801 | 2793 |
| 2802 } // namespace content | 2794 } // namespace content |
| OLD | NEW |