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

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

Issue 651253002: Enforce handle ownership in base::Process (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nits Created 6 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 (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 1274 matching lines...) Expand 10 before | Expand all | Expand 10 after
1285 std::string value = 1285 std::string value =
1286 browser_cmd.GetSwitchValueASCII(switches::kWaitForDebuggerChildren); 1286 browser_cmd.GetSwitchValueASCII(switches::kWaitForDebuggerChildren);
1287 if (value.empty() || value == switches::kRendererProcess) { 1287 if (value.empty() || value == switches::kRendererProcess) {
1288 renderer_cmd->AppendSwitch(switches::kWaitForDebugger); 1288 renderer_cmd->AppendSwitch(switches::kWaitForDebugger);
1289 } 1289 }
1290 } 1290 }
1291 } 1291 }
1292 1292
1293 base::ProcessHandle RenderProcessHostImpl::GetHandle() const { 1293 base::ProcessHandle RenderProcessHostImpl::GetHandle() const {
1294 if (run_renderer_in_process()) 1294 if (run_renderer_in_process())
1295 return base::Process::Current().handle(); 1295 return base::GetCurrentProcessHandle();
1296 1296
1297 if (!child_process_launcher_.get() || child_process_launcher_->IsStarting()) 1297 if (!child_process_launcher_.get() || child_process_launcher_->IsStarting())
1298 return base::kNullProcessHandle; 1298 return base::kNullProcessHandle;
1299 1299
1300 return child_process_launcher_->GetHandle(); 1300 return child_process_launcher_->GetProcess().Handle();
1301 } 1301 }
1302 1302
1303 bool RenderProcessHostImpl::FastShutdownIfPossible() { 1303 bool RenderProcessHostImpl::FastShutdownIfPossible() {
1304 if (run_renderer_in_process()) 1304 if (run_renderer_in_process())
1305 return false; // Single process mode never shutdown the renderer. 1305 return false; // Single process mode never shutdown the renderer.
1306 1306
1307 if (!GetContentClient()->browser()->IsFastShutdownPossible()) 1307 if (!GetContentClient()->browser()->IsFastShutdownPossible())
1308 return false; 1308 return false;
1309 1309
1310 if (!child_process_launcher_.get() || 1310 if (!child_process_launcher_.get() ||
(...skipping 768 matching lines...) Expand 10 before | Expand all | Expand 10 after
2079 2079
2080 void RenderProcessHostImpl::OnProcessLaunched() { 2080 void RenderProcessHostImpl::OnProcessLaunched() {
2081 // No point doing anything, since this object will be destructed soon. We 2081 // No point doing anything, since this object will be destructed soon. We
2082 // especially don't want to send the RENDERER_PROCESS_CREATED notification, 2082 // especially don't want to send the RENDERER_PROCESS_CREATED notification,
2083 // since some clients might expect a RENDERER_PROCESS_TERMINATED afterwards to 2083 // since some clients might expect a RENDERER_PROCESS_TERMINATED afterwards to
2084 // properly cleanup. 2084 // properly cleanup.
2085 if (deleting_soon_) 2085 if (deleting_soon_)
2086 return; 2086 return;
2087 2087
2088 if (child_process_launcher_) { 2088 if (child_process_launcher_) {
2089 if (!child_process_launcher_->GetHandle()) { 2089 DCHECK(child_process_launcher_->GetProcess().IsValid());
2090 OnChannelError();
2091 return;
2092 }
2093
2094 SetBackgrounded(backgrounded_); 2090 SetBackgrounded(backgrounded_);
2095 } 2091 }
2096 2092
2097 // NOTE: This needs to be before sending queued messages because 2093 // NOTE: This needs to be before sending queued messages because
2098 // ExtensionService uses this notification to initialize the renderer process 2094 // ExtensionService uses this notification to initialize the renderer process
2099 // with state that must be there before any JavaScript executes. 2095 // with state that must be there before any JavaScript executes.
2100 // 2096 //
2101 // The queued messages contain such things as "navigate". If this notification 2097 // The queued messages contain such things as "navigate". If this notification
2102 // was after, we can end up executing JavaScript before the initialization 2098 // was after, we can end up executing JavaScript before the initialization
2103 // happens. 2099 // happens.
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
2252 if (worker_ref_count_ == 0) 2248 if (worker_ref_count_ == 0)
2253 Cleanup(); 2249 Cleanup();
2254 } 2250 }
2255 2251
2256 void RenderProcessHostImpl::EnsureMojoActivated() { 2252 void RenderProcessHostImpl::EnsureMojoActivated() {
2257 mojo_activation_required_ = true; 2253 mojo_activation_required_ = true;
2258 MaybeActivateMojo(); 2254 MaybeActivateMojo();
2259 } 2255 }
2260 2256
2261 } // namespace content 2257 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698