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

Side by Side Diff: content/browser/renderer_host/render_process_host_impl.cc

Issue 2398783002: Rename a bunch of Mojo Application stuff to reference Services. (Closed)
Patch Set: . Created 4 years, 2 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
OLDNEW
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 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 #include "content/browser/streams/stream_context.h" 122 #include "content/browser/streams/stream_context.h"
123 #include "content/browser/tracing/trace_message_filter.h" 123 #include "content/browser/tracing/trace_message_filter.h"
124 #include "content/browser/websockets/websocket_manager.h" 124 #include "content/browser/websockets/websocket_manager.h"
125 #include "content/browser/webui/web_ui_controller_factory_registry.h" 125 #include "content/browser/webui/web_ui_controller_factory_registry.h"
126 #include "content/common/child_process_host_impl.h" 126 #include "content/common/child_process_host_impl.h"
127 #include "content/common/child_process_messages.h" 127 #include "content/common/child_process_messages.h"
128 #include "content/common/content_switches_internal.h" 128 #include "content/common/content_switches_internal.h"
129 #include "content/common/frame_messages.h" 129 #include "content/common/frame_messages.h"
130 #include "content/common/gpu_host_messages.h" 130 #include "content/common/gpu_host_messages.h"
131 #include "content/common/in_process_child_thread_params.h" 131 #include "content/common/in_process_child_thread_params.h"
132 #include "content/common/mojo/mojo_child_connection.h"
133 #include "content/common/mojo/mojo_shell_connection_impl.h"
134 #include "content/common/render_process_messages.h" 132 #include "content/common/render_process_messages.h"
135 #include "content/common/resource_messages.h" 133 #include "content/common/resource_messages.h"
134 #include "content/common/service_manager/child_connection.h"
135 #include "content/common/service_manager/service_manager_connection_impl.h"
136 #include "content/common/site_isolation_policy.h" 136 #include "content/common/site_isolation_policy.h"
137 #include "content/common/view_messages.h" 137 #include "content/common/view_messages.h"
138 #include "content/public/browser/browser_context.h" 138 #include "content/public/browser/browser_context.h"
139 #include "content/public/browser/browser_thread.h" 139 #include "content/public/browser/browser_thread.h"
140 #include "content/public/browser/content_browser_client.h" 140 #include "content/public/browser/content_browser_client.h"
141 #include "content/public/browser/notification_service.h" 141 #include "content/public/browser/notification_service.h"
142 #include "content/public/browser/notification_types.h" 142 #include "content/public/browser/notification_types.h"
143 #include "content/public/browser/render_process_host_factory.h" 143 #include "content/public/browser/render_process_host_factory.h"
144 #include "content/public/browser/render_process_host_observer.h" 144 #include "content/public/browser/render_process_host_observer.h"
145 #include "content/public/browser/render_widget_host.h" 145 #include "content/public/browser/render_widget_host.h"
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
506 506
507 void Detach() { 507 void Detach() {
508 base::AutoLock lock(lock_); 508 base::AutoLock lock(lock_);
509 filter_ = nullptr; 509 filter_ = nullptr;
510 } 510 }
511 511
512 base::Lock lock_; 512 base::Lock lock_;
513 ConnectionFilterImpl* filter_; 513 ConnectionFilterImpl* filter_;
514 }; 514 };
515 515
516 // Held by the RPH's BrowserContext's MojoShellConnection, ownership transferred 516 // Held by the RPH's BrowserContext's ServiceManagerConnection, ownership
517 // back to RPH upon RPH destruction. 517 // transferred back to RPH upon RPH destruction.
518 class RenderProcessHostImpl::ConnectionFilterImpl : public ConnectionFilter { 518 class RenderProcessHostImpl::ConnectionFilterImpl : public ConnectionFilter {
519 public: 519 public:
520 ConnectionFilterImpl( 520 ConnectionFilterImpl(
521 const shell::Identity& child_identity, 521 const shell::Identity& child_identity,
522 std::unique_ptr<shell::InterfaceRegistry> registry) 522 std::unique_ptr<shell::InterfaceRegistry> registry)
523 : child_identity_(child_identity), 523 : child_identity_(child_identity),
524 registry_(std::move(registry)), 524 registry_(std::move(registry)),
525 controller_(new ConnectionFilterController(this)), 525 controller_(new ConnectionFilterController(this)),
526 weak_factory_(this) { 526 weak_factory_(this) {
527 // Registration of this filter may race with browser shutdown, in which case 527 // Registration of this filter may race with browser shutdown, in which case
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 IPC::AttachmentBrokerPrivileged::CreateBrokerIfNeeded( 749 IPC::AttachmentBrokerPrivileged::CreateBrokerIfNeeded(
750 MachBroker::GetInstance()); 750 MachBroker::GetInstance());
751 #else 751 #else
752 IPC::AttachmentBrokerPrivileged::CreateBrokerIfNeeded(); 752 IPC::AttachmentBrokerPrivileged::CreateBrokerIfNeeded();
753 #endif // defined(OS_MACOSX) 753 #endif // defined(OS_MACOSX)
754 #endif // USE_ATTACHMENT_BROKER 754 #endif // USE_ATTACHMENT_BROKER
755 755
756 scoped_refptr<base::SequencedTaskRunner> io_task_runner = 756 scoped_refptr<base::SequencedTaskRunner> io_task_runner =
757 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO); 757 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO);
758 shell::Connector* connector = 758 shell::Connector* connector =
759 BrowserContext::GetShellConnectorFor(browser_context_); 759 BrowserContext::GetConnectorFor(browser_context_);
760 // Some embedders may not initialize Mojo or the shell connector for a browser 760 // Some embedders may not initialize Mojo or the shell connector for a browser
761 // context (e.g. Android WebView)... so just fall back to the per-process 761 // context (e.g. Android WebView)... so just fall back to the per-process
762 // connector. 762 // connector.
763 if (!connector) { 763 if (!connector) {
764 // Additionally, some test code may not initialize the process-wide 764 // Additionally, some test code may not initialize the process-wide
765 // MojoShellConnection prior to this point. This class of test code doesn't 765 // ServiceManagerConnection prior to this point. This class of test code
766 // care about render processes so we can initialize a dummy one. 766 // doesn't care about render processes so we can initialize a dummy one.
767 if (!MojoShellConnection::GetForProcess()) { 767 if (!ServiceManagerConnection::GetForProcess()) {
768 shell::mojom::ServiceRequest request = mojo::GetProxy(&test_service_); 768 shell::mojom::ServiceRequest request = mojo::GetProxy(&test_service_);
769 MojoShellConnection::SetForProcess(MojoShellConnection::Create( 769 ServiceManagerConnection::SetForProcess(ServiceManagerConnection::Create(
770 std::move(request), io_task_runner)); 770 std::move(request), io_task_runner));
771 } 771 }
772 connector = MojoShellConnection::GetForProcess()->GetConnector(); 772 connector = ServiceManagerConnection::GetForProcess()->GetConnector();
773 } 773 }
774 mojo_child_connection_.reset(new MojoChildConnection( 774 child_connection_.reset(new ChildConnection(
775 kRendererMojoApplicationName, 775 kRendererServiceName,
776 base::StringPrintf("%d_%d", id_, instance_id_++), child_token_, connector, 776 base::StringPrintf("%d_%d", id_, instance_id_++), child_token_, connector,
777 io_task_runner)); 777 io_task_runner));
778 } 778 }
779 779
780 // static 780 // static
781 void RenderProcessHostImpl::ShutDownInProcessRenderer() { 781 void RenderProcessHostImpl::ShutDownInProcessRenderer() {
782 DCHECK(g_run_renderer_in_process_); 782 DCHECK(g_run_renderer_in_process_);
783 783
784 switch (g_all_hosts.Pointer()->size()) { 784 switch (g_all_hosts.Pointer()->size()) {
785 case 0: 785 case 0:
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
924 DCHECK(g_renderer_main_thread_factory); 924 DCHECK(g_renderer_main_thread_factory);
925 // Crank up a thread and run the initialization there. With the way that 925 // Crank up a thread and run the initialization there. With the way that
926 // messages flow between the browser and renderer, this thread is required 926 // messages flow between the browser and renderer, this thread is required
927 // to prevent a deadlock in single-process mode. Since the primordial 927 // to prevent a deadlock in single-process mode. Since the primordial
928 // thread in the renderer process runs the WebKit code and can sometimes 928 // thread in the renderer process runs the WebKit code and can sometimes
929 // make blocking calls to the UI thread (i.e. this thread), they need to run 929 // make blocking calls to the UI thread (i.e. this thread), they need to run
930 // on separate threads. 930 // on separate threads.
931 in_process_renderer_.reset( 931 in_process_renderer_.reset(
932 g_renderer_main_thread_factory(InProcessChildThreadParams( 932 g_renderer_main_thread_factory(InProcessChildThreadParams(
933 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), 933 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
934 mojo_child_connection_->service_token()))); 934 child_connection_->service_token())));
935 935
936 base::Thread::Options options; 936 base::Thread::Options options;
937 #if defined(OS_WIN) && !defined(OS_MACOSX) 937 #if defined(OS_WIN) && !defined(OS_MACOSX)
938 // In-process plugins require this to be a UI message loop. 938 // In-process plugins require this to be a UI message loop.
939 options.message_loop_type = base::MessageLoop::TYPE_UI; 939 options.message_loop_type = base::MessageLoop::TYPE_UI;
940 #else 940 #else
941 // We can't have multiple UI loops on Linux and Android, so we don't support 941 // We can't have multiple UI loops on Linux and Android, so we don't support
942 // in-process plugins. 942 // in-process plugins.
943 options.message_loop_type = base::MessageLoop::TYPE_DEFAULT; 943 options.message_loop_type = base::MessageLoop::TYPE_DEFAULT;
944 #endif 944 #endif
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
1285 1285
1286 // This is to support usage of WebSockets in cases in which there is no 1286 // This is to support usage of WebSockets in cases in which there is no
1287 // associated RenderFrame (e.g., Shared Workers). 1287 // associated RenderFrame (e.g., Shared Workers).
1288 AddUIThreadInterface( 1288 AddUIThreadInterface(
1289 registry.get(), base::Bind(&WebSocketManager::CreateWebSocket, GetID(), 1289 registry.get(), base::Bind(&WebSocketManager::CreateWebSocket, GetID(),
1290 MSG_ROUTING_NONE)); 1290 MSG_ROUTING_NONE));
1291 1291
1292 GetContentClient()->browser()->ExposeInterfacesToRenderer(registry.get(), 1292 GetContentClient()->browser()->ExposeInterfacesToRenderer(registry.get(),
1293 this); 1293 this);
1294 1294
1295 MojoShellConnection* mojo_shell_connection = 1295 ServiceManagerConnection* service_manager_connection =
1296 BrowserContext::GetMojoShellConnectionFor(browser_context_); 1296 BrowserContext::GetServiceManagerConnectionFor(browser_context_);
1297 std::unique_ptr<ConnectionFilterImpl> connection_filter( 1297 std::unique_ptr<ConnectionFilterImpl> connection_filter(
1298 new ConnectionFilterImpl(mojo_child_connection_->child_identity(), 1298 new ConnectionFilterImpl(child_connection_->child_identity(),
1299 std::move(registry))); 1299 std::move(registry)));
1300 connection_filter_controller_ = connection_filter->controller(); 1300 connection_filter_controller_ = connection_filter->controller();
1301 connection_filter_id_ = 1301 connection_filter_id_ = service_manager_connection->AddConnectionFilter(
1302 mojo_shell_connection->AddConnectionFilter(std::move(connection_filter)); 1302 std::move(connection_filter));
1303 } 1303 }
1304 1304
1305 void RenderProcessHostImpl::GetRoute( 1305 void RenderProcessHostImpl::GetRoute(
1306 int32_t routing_id, 1306 int32_t routing_id,
1307 mojom::AssociatedInterfaceProviderAssociatedRequest request) { 1307 mojom::AssociatedInterfaceProviderAssociatedRequest request) {
1308 DCHECK(request.is_pending()); 1308 DCHECK(request.is_pending());
1309 associated_interface_provider_bindings_.AddBinding( 1309 associated_interface_provider_bindings_.AddBinding(
1310 this, std::move(request), 1310 this, std::move(request),
1311 reinterpret_cast<void*>(static_cast<uintptr_t>(routing_id))); 1311 reinterpret_cast<void*>(static_cast<uintptr_t>(routing_id)));
1312 } 1312 }
(...skipping 20 matching lines...) Expand all
1333 int RenderProcessHostImpl::GetNextRoutingID() { 1333 int RenderProcessHostImpl::GetNextRoutingID() {
1334 return widget_helper_->GetNextRoutingID(); 1334 return widget_helper_->GetNextRoutingID();
1335 } 1335 }
1336 1336
1337 void RenderProcessHostImpl::ResumeDeferredNavigation( 1337 void RenderProcessHostImpl::ResumeDeferredNavigation(
1338 const GlobalRequestID& request_id) { 1338 const GlobalRequestID& request_id) {
1339 widget_helper_->ResumeDeferredNavigation(request_id); 1339 widget_helper_->ResumeDeferredNavigation(request_id);
1340 } 1340 }
1341 1341
1342 shell::InterfaceProvider* RenderProcessHostImpl::GetRemoteInterfaces() { 1342 shell::InterfaceProvider* RenderProcessHostImpl::GetRemoteInterfaces() {
1343 return mojo_child_connection_->GetRemoteInterfaces(); 1343 return child_connection_->GetRemoteInterfaces();
1344 } 1344 }
1345 1345
1346 std::unique_ptr<base::SharedPersistentMemoryAllocator> 1346 std::unique_ptr<base::SharedPersistentMemoryAllocator>
1347 RenderProcessHostImpl::TakeMetricsAllocator() { 1347 RenderProcessHostImpl::TakeMetricsAllocator() {
1348 return std::move(metrics_allocator_); 1348 return std::move(metrics_allocator_);
1349 } 1349 }
1350 1350
1351 const base::TimeTicks& RenderProcessHostImpl::GetInitTimeForNavigationMetrics() 1351 const base::TimeTicks& RenderProcessHostImpl::GetInitTimeForNavigationMetrics()
1352 const { 1352 const {
1353 return init_time_; 1353 return init_time_;
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
1605 command_line->AppendSwitch(switches::kEnablePinch); 1605 command_line->AppendSwitch(switches::kEnablePinch);
1606 1606
1607 #if defined(OS_WIN) 1607 #if defined(OS_WIN)
1608 command_line->AppendSwitchASCII( 1608 command_line->AppendSwitchASCII(
1609 switches::kDeviceScaleFactor, 1609 switches::kDeviceScaleFactor,
1610 base::DoubleToString(display::win::GetDPIScale())); 1610 base::DoubleToString(display::win::GetDPIScale()));
1611 #endif 1611 #endif
1612 1612
1613 AppendCompositorCommandLineFlags(command_line); 1613 AppendCompositorCommandLineFlags(command_line);
1614 1614
1615 command_line->AppendSwitchASCII(switches::kMojoApplicationChannelToken, 1615 command_line->AppendSwitchASCII(switches::kServiceRequestChannelToken,
1616 mojo_child_connection_->service_token()); 1616 child_connection_->service_token());
1617 } 1617 }
1618 1618
1619 void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( 1619 void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
1620 const base::CommandLine& browser_cmd, 1620 const base::CommandLine& browser_cmd,
1621 base::CommandLine* renderer_cmd) const { 1621 base::CommandLine* renderer_cmd) const {
1622 // Propagate the following switches to the renderer command line (along 1622 // Propagate the following switches to the renderer command line (along
1623 // with any associated values) if present in the browser command line. 1623 // with any associated values) if present in the browser command line.
1624 static const char* const kSwitchNames[] = { 1624 static const char* const kSwitchNames[] = {
1625 switches::kAgcStartupMinVolume, 1625 switches::kAgcStartupMinVolume,
1626 switches::kAecRefinedAdaptiveFilter, 1626 switches::kAecRefinedAdaptiveFilter,
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
1863 // Add kWaitForDebugger to let renderer process wait for a debugger. 1863 // Add kWaitForDebugger to let renderer process wait for a debugger.
1864 if (browser_cmd.HasSwitch(switches::kWaitForDebuggerChildren)) { 1864 if (browser_cmd.HasSwitch(switches::kWaitForDebuggerChildren)) {
1865 // Look to pass-on the kWaitForDebugger flag. 1865 // Look to pass-on the kWaitForDebugger flag.
1866 std::string value = 1866 std::string value =
1867 browser_cmd.GetSwitchValueASCII(switches::kWaitForDebuggerChildren); 1867 browser_cmd.GetSwitchValueASCII(switches::kWaitForDebuggerChildren);
1868 if (value.empty() || value == switches::kRendererProcess) { 1868 if (value.empty() || value == switches::kRendererProcess) {
1869 renderer_cmd->AppendSwitch(switches::kWaitForDebugger); 1869 renderer_cmd->AppendSwitch(switches::kWaitForDebugger);
1870 } 1870 }
1871 } 1871 }
1872 1872
1873 DCHECK(mojo_child_connection_); 1873 DCHECK(child_connection_);
1874 renderer_cmd->AppendSwitchASCII(switches::kPrimordialPipeToken, 1874 renderer_cmd->AppendSwitchASCII(switches::kPrimordialPipeToken,
1875 mojo_child_connection_->service_token()); 1875 child_connection_->service_token());
1876 1876
1877 #if defined(OS_WIN) && !defined(OFFICIAL_BUILD) 1877 #if defined(OS_WIN) && !defined(OFFICIAL_BUILD)
1878 // Needed because we can't show the dialog from the sandbox. Don't pass 1878 // Needed because we can't show the dialog from the sandbox. Don't pass
1879 // --no-sandbox in official builds because that would bypass the bad_flgs 1879 // --no-sandbox in official builds because that would bypass the bad_flgs
1880 // prompt. 1880 // prompt.
1881 if (renderer_cmd->HasSwitch(switches::kRendererStartupDialog) && 1881 if (renderer_cmd->HasSwitch(switches::kRendererStartupDialog) &&
1882 !renderer_cmd->HasSwitch(switches::kNoSandbox)) { 1882 !renderer_cmd->HasSwitch(switches::kNoSandbox)) {
1883 renderer_cmd->AppendSwitch(switches::kNoSandbox); 1883 renderer_cmd->AppendSwitch(switches::kNoSandbox);
1884 } 1884 }
1885 #endif 1885 #endif
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
2157 RenderProcessExited(this, base::TERMINATION_STATUS_NORMAL_TERMINATION, 2157 RenderProcessExited(this, base::TERMINATION_STATUS_NORMAL_TERMINATION,
2158 0)); 2158 0));
2159 } 2159 }
2160 FOR_EACH_OBSERVER(RenderProcessHostObserver, observers_, 2160 FOR_EACH_OBSERVER(RenderProcessHostObserver, observers_,
2161 RenderProcessHostDestroyed(this)); 2161 RenderProcessHostDestroyed(this));
2162 NotificationService::current()->Notify( 2162 NotificationService::current()->Notify(
2163 NOTIFICATION_RENDERER_PROCESS_TERMINATED, 2163 NOTIFICATION_RENDERER_PROCESS_TERMINATED,
2164 Source<RenderProcessHost>(this), NotificationService::NoDetails()); 2164 Source<RenderProcessHost>(this), NotificationService::NoDetails());
2165 2165
2166 if (connection_filter_id_ != 2166 if (connection_filter_id_ !=
2167 MojoShellConnection::kInvalidConnectionFilterId) { 2167 ServiceManagerConnection::kInvalidConnectionFilterId) {
2168 MojoShellConnection* mojo_shell_connection = 2168 ServiceManagerConnection* service_manager_connection =
2169 BrowserContext::GetMojoShellConnectionFor(browser_context_); 2169 BrowserContext::GetServiceManagerConnectionFor(browser_context_);
2170 connection_filter_controller_->DisableFilter(); 2170 connection_filter_controller_->DisableFilter();
2171 mojo_shell_connection->RemoveConnectionFilter(connection_filter_id_); 2171 service_manager_connection->RemoveConnectionFilter(connection_filter_id_);
2172 connection_filter_id_ = MojoShellConnection::kInvalidConnectionFilterId; 2172 connection_filter_id_ =
2173 ServiceManagerConnection::kInvalidConnectionFilterId;
2173 } 2174 }
2174 2175
2175 #ifndef NDEBUG 2176 #ifndef NDEBUG
2176 is_self_deleted_ = true; 2177 is_self_deleted_ = true;
2177 #endif 2178 #endif
2178 base::ThreadTaskRunnerHandle::Get()->DeleteSoon(FROM_HERE, this); 2179 base::ThreadTaskRunnerHandle::Get()->DeleteSoon(FROM_HERE, this);
2179 deleting_soon_ = true; 2180 deleting_soon_ = true;
2180 2181
2181 #if USE_ATTACHMENT_BROKER 2182 #if USE_ATTACHMENT_BROKER
2182 IPC::AttachmentBroker::GetGlobal()->DeregisterCommunicationChannel( 2183 IPC::AttachmentBroker::GetGlobal()->DeregisterCommunicationChannel(
(...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after
2693 RemoveUserData(kRendererInterfaceKeyName); 2694 RemoveUserData(kRendererInterfaceKeyName);
2694 2695
2695 UpdateProcessPriority(); 2696 UpdateProcessPriority();
2696 DCHECK(!is_process_backgrounded_); 2697 DCHECK(!is_process_backgrounded_);
2697 2698
2698 // RenderProcessExited observers and RenderProcessGone handlers might 2699 // RenderProcessExited observers and RenderProcessGone handlers might
2699 // navigate or perform other actions that require a connection. Ensure that 2700 // navigate or perform other actions that require a connection. Ensure that
2700 // there is one before calling them. 2701 // there is one before calling them.
2701 child_token_ = mojo::edk::GenerateRandomToken(); 2702 child_token_ = mojo::edk::GenerateRandomToken();
2702 shell::Connector* connector = 2703 shell::Connector* connector =
2703 BrowserContext::GetShellConnectorFor(browser_context_); 2704 BrowserContext::GetConnectorFor(browser_context_);
2704 if (!connector) 2705 if (!connector)
2705 connector = MojoShellConnection::GetForProcess()->GetConnector(); 2706 connector = ServiceManagerConnection::GetForProcess()->GetConnector();
2706 mojo_child_connection_.reset(new MojoChildConnection( 2707 child_connection_.reset(new ChildConnection(
2707 kRendererMojoApplicationName, 2708 kRendererServiceName,
2708 base::StringPrintf("%d_%d", id_, instance_id_++), child_token_, connector, 2709 base::StringPrintf("%d_%d", id_, instance_id_++), child_token_, connector,
2709 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO))); 2710 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO)));
2710 2711
2711 within_process_died_observer_ = true; 2712 within_process_died_observer_ = true;
2712 NotificationService::current()->Notify( 2713 NotificationService::current()->Notify(
2713 NOTIFICATION_RENDERER_PROCESS_CLOSED, Source<RenderProcessHost>(this), 2714 NOTIFICATION_RENDERER_PROCESS_CLOSED, Source<RenderProcessHost>(this),
2714 Details<RendererClosedDetails>(&details)); 2715 Details<RendererClosedDetails>(&details));
2715 FOR_EACH_OBSERVER(RenderProcessHostObserver, observers_, 2716 FOR_EACH_OBSERVER(RenderProcessHostObserver, observers_,
2716 RenderProcessExited(this, status, exit_code)); 2717 RenderProcessExited(this, status, exit_code));
2717 within_process_died_observer_ = false; 2718 within_process_died_observer_ = false;
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
2841 if (child_process_launcher_) { 2842 if (child_process_launcher_) {
2842 DCHECK(child_process_launcher_->GetProcess().IsValid()); 2843 DCHECK(child_process_launcher_->GetProcess().IsValid());
2843 DCHECK(!is_process_backgrounded_); 2844 DCHECK(!is_process_backgrounded_);
2844 2845
2845 // Unpause the channel now that the process is launched. We don't flush it 2846 // Unpause the channel now that the process is launched. We don't flush it
2846 // yet to ensure that any initialization messages sent here (e.g., things 2847 // yet to ensure that any initialization messages sent here (e.g., things
2847 // done in response to NOTIFICATION_RENDER_PROCESS_CREATED; see below) 2848 // done in response to NOTIFICATION_RENDER_PROCESS_CREATED; see below)
2848 // preempt already queued messages. 2849 // preempt already queued messages.
2849 channel_->Unpause(false /* flush */); 2850 channel_->Unpause(false /* flush */);
2850 2851
2851 if (mojo_child_connection_) { 2852 if (child_connection_) {
2852 mojo_child_connection_->SetProcessHandle( 2853 child_connection_->SetProcessHandle(
2853 child_process_launcher_->GetProcess().Handle()); 2854 child_process_launcher_->GetProcess().Handle());
2854 } 2855 }
2855 2856
2856 // Not all platforms launch processes in the same backgrounded state. Make 2857 // Not all platforms launch processes in the same backgrounded state. Make
2857 // sure |is_process_backgrounded_| reflects this platform's initial process 2858 // sure |is_process_backgrounded_| reflects this platform's initial process
2858 // state. 2859 // state.
2859 is_process_backgrounded_ = 2860 is_process_backgrounded_ =
2860 child_process_launcher_->GetProcess().IsProcessBackgrounded(); 2861 child_process_launcher_->GetProcess().IsProcessBackgrounded();
2861 2862
2862 // Disable updating process priority on startup for now as it incorrectly 2863 // Disable updating process priority on startup for now as it incorrectly
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
3031 LOG(ERROR) << "Terminating render process for bad Mojo message: " << error; 3032 LOG(ERROR) << "Terminating render process for bad Mojo message: " << error;
3032 3033
3033 // The ReceivedBadMessage call below will trigger a DumpWithoutCrashing. Alias 3034 // The ReceivedBadMessage call below will trigger a DumpWithoutCrashing. Alias
3034 // enough information here so that we can determine what the bad message was. 3035 // enough information here so that we can determine what the bad message was.
3035 base::debug::Alias(&error); 3036 base::debug::Alias(&error);
3036 bad_message::ReceivedBadMessage(render_process_id, 3037 bad_message::ReceivedBadMessage(render_process_id,
3037 bad_message::RPH_MOJO_PROCESS_ERROR); 3038 bad_message::RPH_MOJO_PROCESS_ERROR);
3038 } 3039 }
3039 3040
3040 } // namespace content 3041 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_process_host_impl.h ('k') | content/browser/renderer_host/render_widget_host_view_mus.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698