Index: chrome/browser/browser_child_process_host.cc |
diff --git a/chrome/browser/browser_child_process_host.cc b/chrome/browser/browser_child_process_host.cc |
index 36f8411c9f862a03af3e4ddab4ce7e4f3eb6b672..1a3909fc808415bfd1bf7665673cf53ea63164d1 100644 |
--- a/chrome/browser/browser_child_process_host.cc |
+++ b/chrome/browser/browser_child_process_host.cc |
@@ -131,18 +131,34 @@ void BrowserChildProcessHost::Notify(NotificationType type) { |
ChromeThread::UI, FROM_HERE, new ChildNotificationTask(type, this)); |
} |
-bool BrowserChildProcessHost::DidChildCrash() { |
- return child_process_->DidProcessCrash(); |
+base::TerminationStatus BrowserChildProcessHost::GetChildTerminationStatus( |
+ int* exit_code) { |
+ return child_process_->GetChildTerminationStatus(exit_code); |
} |
void BrowserChildProcessHost::OnChildDied() { |
if (handle() != base::kNullProcessHandle) { |
- bool did_crash = DidChildCrash(); |
- if (did_crash) { |
- OnProcessCrashed(); |
- // Report that this child process crashed. |
- Notify(NotificationType::CHILD_PROCESS_CRASHED); |
- UMA_HISTOGRAM_COUNTS("ChildProcess.Crashes", this->type()); |
+ int exit_code; |
+ base::TerminationStatus status = GetChildTerminationStatus(&exit_code); |
+ switch (status) { |
+ case base::TERMINATION_STATUS_PROCESS_CRASHED: { |
+ OnProcessCrashed(exit_code); |
+ |
+ // Report that this child process crashed. |
+ Notify(NotificationType::CHILD_PROCESS_CRASHED); |
+ UMA_HISTOGRAM_COUNTS("ChildProcess.Crashes", this->type()); |
+ break; |
+ } |
+ case base::TERMINATION_STATUS_PROCESS_WAS_KILLED: { |
+ OnProcessWasKilled(exit_code); |
+ |
+ // Report that this child process was killed. |
+ Notify(NotificationType::CHILD_PROCESS_WAS_KILLED); |
+ UMA_HISTOGRAM_COUNTS("ChildProcess.Kills", this->type()); |
+ break; |
+ } |
+ default: |
+ break; |
} |
// Notify in the main loop of the disconnection. |
Notify(NotificationType::CHILD_PROCESS_HOST_DISCONNECTED); |