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

Side by Side Diff: android_webview/browser/aw_browser_terminator.cc

Issue 2950153002: Improve process launch handle sharing API. (Closed)
Patch Set: Fix Created 3 years, 5 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 #include "android_webview/browser/aw_browser_terminator.h" 5 #include "android_webview/browser/aw_browser_terminator.h"
6 6
7 #include <unistd.h> 7 #include <unistd.h>
8 8
9 #include "android_webview/browser/aw_browser_process.h" 9 #include "android_webview/browser/aw_browser_process.h"
10 #include "android_webview/browser/aw_render_process_gone_delegate.h" 10 #include "android_webview/browser/aw_render_process_gone_delegate.h"
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 // (CrashDumpManager is registered first). 94 // (CrashDumpManager is registered first).
95 TriggerMinidumpUploading(); 95 TriggerMinidumpUploading();
96 } 96 }
97 97
98 } // namespace 98 } // namespace
99 99
100 AwBrowserTerminator::AwBrowserTerminator() {} 100 AwBrowserTerminator::AwBrowserTerminator() {}
101 101
102 AwBrowserTerminator::~AwBrowserTerminator() {} 102 AwBrowserTerminator::~AwBrowserTerminator() {}
103 103
104 void AwBrowserTerminator::OnChildStart(int child_process_id, 104 void AwBrowserTerminator::OnChildStart(
105 content::FileDescriptorInfo* mappings) { 105 int child_process_id,
106 content::PosixFileDescriptorInfo* mappings) {
106 DCHECK_CURRENTLY_ON(content::BrowserThread::PROCESS_LAUNCHER); 107 DCHECK_CURRENTLY_ON(content::BrowserThread::PROCESS_LAUNCHER);
107 108
108 base::AutoLock auto_lock(child_process_id_to_pipe_lock_); 109 base::AutoLock auto_lock(child_process_id_to_pipe_lock_);
109 DCHECK(!ContainsKey(child_process_id_to_pipe_, child_process_id)); 110 DCHECK(!ContainsKey(child_process_id_to_pipe_, child_process_id));
110 111
111 auto local_pipe = base::MakeUnique<base::SyncSocket>(); 112 auto local_pipe = base::MakeUnique<base::SyncSocket>();
112 auto child_pipe = base::MakeUnique<base::SyncSocket>(); 113 auto child_pipe = base::MakeUnique<base::SyncSocket>();
113 if (base::SyncSocket::CreatePair(local_pipe.get(), child_pipe.get())) { 114 if (base::SyncSocket::CreatePair(local_pipe.get(), child_pipe.get())) {
114 child_process_id_to_pipe_[child_process_id] = std::move(local_pipe); 115 child_process_id_to_pipe_[child_process_id] = std::move(local_pipe);
115 mappings->Transfer(kAndroidWebViewCrashSignalDescriptor, 116 mappings->Transfer(kAndroidWebViewCrashSignalDescriptor,
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 return; 163 return;
163 OnRenderProcessGone(child_process_id); 164 OnRenderProcessGone(child_process_id);
164 DCHECK(pipe->handle() != base::SyncSocket::kInvalidHandle); 165 DCHECK(pipe->handle() != base::SyncSocket::kInvalidHandle);
165 BrowserThread::PostTask( 166 BrowserThread::PostTask(
166 BrowserThread::FILE, FROM_HERE, 167 BrowserThread::FILE, FROM_HERE,
167 base::Bind(&AwBrowserTerminator::ProcessTerminationStatus, 168 base::Bind(&AwBrowserTerminator::ProcessTerminationStatus,
168 child_process_id, pid, base::Passed(std::move(pipe)))); 169 child_process_id, pid, base::Passed(std::move(pipe))));
169 } 170 }
170 171
171 } // namespace android_webview 172 } // namespace android_webview
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698