OLD | NEW |
---|---|
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "content/browser/browser_child_process_host_impl.h" | 5 #include "content/browser/browser_child_process_host_impl.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/file_path.h" | 9 #include "base/file_path.h" |
10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
208 // delayed task to wait for an exit code. However, this means that this method | 208 // delayed task to wait for an exit code. However, this means that this method |
209 // may be called twice: once from the actual channel error and once from | 209 // may be called twice: once from the actual channel error and once from |
210 // OnWaitableEventSignaled() or the delayed task. | 210 // OnWaitableEventSignaled() or the delayed task. |
211 void BrowserChildProcessHostImpl::OnChildDisconnected() { | 211 void BrowserChildProcessHostImpl::OnChildDisconnected() { |
212 DCHECK(data_.handle != base::kNullProcessHandle); | 212 DCHECK(data_.handle != base::kNullProcessHandle); |
213 int exit_code; | 213 int exit_code; |
214 base::TerminationStatus status = GetTerminationStatus(&exit_code); | 214 base::TerminationStatus status = GetTerminationStatus(&exit_code); |
215 switch (status) { | 215 switch (status) { |
216 case base::TERMINATION_STATUS_PROCESS_CRASHED: | 216 case base::TERMINATION_STATUS_PROCESS_CRASHED: |
217 case base::TERMINATION_STATUS_ABNORMAL_TERMINATION: { | 217 case base::TERMINATION_STATUS_ABNORMAL_TERMINATION: { |
218 delegate_->OnProcessCrashed(exit_code); | 218 delegate_->OnProcessCrashedOrWasKilled(exit_code); |
219 // Report that this child process crashed. | 219 // Report that this child process crashed. |
220 Notify(content::NOTIFICATION_CHILD_PROCESS_CRASHED); | 220 Notify(content::NOTIFICATION_CHILD_PROCESS_CRASHED); |
221 UMA_HISTOGRAM_ENUMERATION("ChildProcess.Crashed", | 221 UMA_HISTOGRAM_ENUMERATION("ChildProcess.Crashed", |
222 data_.type, | 222 data_.type, |
223 content::PROCESS_TYPE_MAX); | 223 content::PROCESS_TYPE_MAX); |
224 if (disconnect_was_alive_) { | 224 if (disconnect_was_alive_) { |
225 UMA_HISTOGRAM_ENUMERATION("ChildProcess.CrashedWasAlive", | 225 UMA_HISTOGRAM_ENUMERATION("ChildProcess.CrashedWasAlive", |
226 data_.type, | 226 data_.type, |
227 content::PROCESS_TYPE_MAX); | 227 content::PROCESS_TYPE_MAX); |
228 } | 228 } |
229 break; | 229 break; |
230 } | 230 } |
231 case base::TERMINATION_STATUS_PROCESS_WAS_KILLED: { | 231 case base::TERMINATION_STATUS_PROCESS_WAS_KILLED: { |
232 delegate_->OnProcessCrashedOrWasKilled(exit_code); | |
jam
2012/01/26 03:56:18
it seems that consumers don't care if it crashed b
dgrogan
2012/01/26 04:17:39
I didn't want to blur the line between crashed and
| |
232 // Report that this child process was killed. | 233 // Report that this child process was killed. |
233 UMA_HISTOGRAM_ENUMERATION("ChildProcess.Killed", | 234 UMA_HISTOGRAM_ENUMERATION("ChildProcess.Killed", |
234 data_.type, | 235 data_.type, |
235 content::PROCESS_TYPE_MAX); | 236 content::PROCESS_TYPE_MAX); |
236 if (disconnect_was_alive_) { | 237 if (disconnect_was_alive_) { |
237 UMA_HISTOGRAM_ENUMERATION("ChildProcess.KilledWasAlive", | 238 UMA_HISTOGRAM_ENUMERATION("ChildProcess.KilledWasAlive", |
238 data_.type, | 239 data_.type, |
239 content::PROCESS_TYPE_MAX); | 240 content::PROCESS_TYPE_MAX); |
240 } | 241 } |
241 break; | 242 break; |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
309 | 310 |
310 | 311 |
311 void BrowserChildProcessHostImpl::OnProcessLaunched() { | 312 void BrowserChildProcessHostImpl::OnProcessLaunched() { |
312 if (!child_process_->GetHandle()) { | 313 if (!child_process_->GetHandle()) { |
313 delete delegate_; // Will delete us | 314 delete delegate_; // Will delete us |
314 return; | 315 return; |
315 } | 316 } |
316 data_.handle = child_process_->GetHandle(); | 317 data_.handle = child_process_->GetHandle(); |
317 delegate_->OnProcessLaunched(); | 318 delegate_->OnProcessLaunched(); |
318 } | 319 } |
OLD | NEW |