Make utility process run in-process when running in single-process mode.

Remove the unit test/single process code path for SandboxedUnpacker as a first step.

BUG=19192
[email protected], [email protected]

Review URL: https://codereview.chromium.org/18119009

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@210620 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/content/browser/browser_child_process_host_impl.cc b/content/browser/browser_child_process_host_impl.cc
index 3748f6f2..eeecb4d 100644
--- a/content/browser/browser_child_process_host_impl.cc
+++ b/content/browser/browser_child_process_host_impl.cc
@@ -260,39 +260,41 @@
 
 void BrowserChildProcessHostImpl::OnChildDisconnected() {
   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
-  DCHECK(data_.handle != base::kNullProcessHandle);
-  int exit_code;
-  base::TerminationStatus status = GetTerminationStatus(&exit_code);
-  switch (status) {
-    case base::TERMINATION_STATUS_PROCESS_CRASHED:
-    case base::TERMINATION_STATUS_ABNORMAL_TERMINATION: {
-      delegate_->OnProcessCrashed(exit_code);
-      BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
-                              base::Bind(&NotifyProcessCrashed, data_));
-      UMA_HISTOGRAM_ENUMERATION("ChildProcess.Crashed2",
-                                data_.process_type,
-                                PROCESS_TYPE_MAX);
-      break;
+  if (child_process_.get() || data_.handle) {
+    DCHECK(data_.handle != base::kNullProcessHandle);
+    int exit_code;
+    base::TerminationStatus status = GetTerminationStatus(&exit_code);
+    switch (status) {
+      case base::TERMINATION_STATUS_PROCESS_CRASHED:
+      case base::TERMINATION_STATUS_ABNORMAL_TERMINATION: {
+        delegate_->OnProcessCrashed(exit_code);
+        BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
+                                base::Bind(&NotifyProcessCrashed, data_));
+        UMA_HISTOGRAM_ENUMERATION("ChildProcess.Crashed2",
+                                  data_.process_type,
+                                  PROCESS_TYPE_MAX);
+        break;
+      }
+      case base::TERMINATION_STATUS_PROCESS_WAS_KILLED: {
+        delegate_->OnProcessCrashed(exit_code);
+        // Report that this child process was killed.
+        UMA_HISTOGRAM_ENUMERATION("ChildProcess.Killed2",
+                                  data_.process_type,
+                                  PROCESS_TYPE_MAX);
+        break;
+      }
+      case base::TERMINATION_STATUS_STILL_RUNNING: {
+        UMA_HISTOGRAM_ENUMERATION("ChildProcess.DisconnectedAlive2",
+                                  data_.process_type,
+                                  PROCESS_TYPE_MAX);
+      }
+      default:
+        break;
     }
-    case base::TERMINATION_STATUS_PROCESS_WAS_KILLED: {
-      delegate_->OnProcessCrashed(exit_code);
-      // Report that this child process was killed.
-      UMA_HISTOGRAM_ENUMERATION("ChildProcess.Killed2",
-                                data_.process_type,
-                                PROCESS_TYPE_MAX);
-      break;
-    }
-    case base::TERMINATION_STATUS_STILL_RUNNING: {
-      UMA_HISTOGRAM_ENUMERATION("ChildProcess.DisconnectedAlive2",
-                                data_.process_type,
-                                PROCESS_TYPE_MAX);
-    }
-    default:
-      break;
+    UMA_HISTOGRAM_ENUMERATION("ChildProcess.Disconnected2",
+                              data_.process_type,
+                              PROCESS_TYPE_MAX);
   }
-  UMA_HISTOGRAM_ENUMERATION("ChildProcess.Disconnected2",
-                            data_.process_type,
-                            PROCESS_TYPE_MAX);
   BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
                           base::Bind(&NotifyProcessHostDisconnected, data_));
   delete delegate_;  // Will delete us