| Index: content/browser/renderer_host/render_process_host_impl.cc
|
| ===================================================================
|
| --- content/browser/renderer_host/render_process_host_impl.cc (revision 145643)
|
| +++ content/browser/renderer_host/render_process_host_impl.cc (working copy)
|
| @@ -116,7 +116,6 @@
|
| #include "webkit/plugins/plugin_switches.h"
|
|
|
| #if defined(OS_WIN)
|
| -#include "base/synchronization/waitable_event.h"
|
| #include "content/common/font_cache_dispatcher_win.h"
|
| #endif
|
|
|
| @@ -855,9 +854,7 @@
|
| if (!SuddenTerminationAllowed())
|
| return false;
|
|
|
| - // Store the handle before it gets changed.
|
| - base::ProcessHandle handle = GetHandle();
|
| - ProcessDied(handle, base::TERMINATION_STATUS_NORMAL_TERMINATION, 0, false);
|
| + ProcessDied();
|
| fast_shutdown_started_ = true;
|
| return true;
|
| }
|
| @@ -1027,46 +1024,9 @@
|
| }
|
|
|
| void RenderProcessHostImpl::OnChannelError() {
|
| - if (!channel_.get())
|
| - return;
|
| -
|
| - // Store the handle before it gets changed.
|
| - base::ProcessHandle handle = GetHandle();
|
| -
|
| - // child_process_launcher_ can be NULL in single process mode or if fast
|
| - // termination happened.
|
| - int exit_code = 0;
|
| - base::TerminationStatus status =
|
| - child_process_launcher_.get() ?
|
| - child_process_launcher_->GetChildTerminationStatus(&exit_code) :
|
| - base::TERMINATION_STATUS_NORMAL_TERMINATION;
|
| -
|
| -#if defined(OS_WIN)
|
| - if (!run_renderer_in_process()) {
|
| - if (status == base::TERMINATION_STATUS_STILL_RUNNING) {
|
| - HANDLE process = child_process_launcher_->GetHandle();
|
| - child_process_watcher_.StartWatching(
|
| - new base::WaitableEvent(process), this);
|
| - return;
|
| - }
|
| - }
|
| -#endif
|
| - ProcessDied(handle, status, exit_code, false);
|
| + ProcessDied();
|
| }
|
|
|
| -// Called when the renderer process handle has been signaled.
|
| -void RenderProcessHostImpl::OnWaitableEventSignaled(
|
| - base::WaitableEvent* waitable_event) {
|
| -#if defined (OS_WIN)
|
| - base::ProcessHandle handle = GetHandle();
|
| - int exit_code = 0;
|
| - base::TerminationStatus status =
|
| - base::GetTerminationStatus(waitable_event->Release(), &exit_code);
|
| - delete waitable_event;
|
| - ProcessDied(handle, status, exit_code, true);
|
| -#endif
|
| -}
|
| -
|
| BrowserContext* RenderProcessHostImpl::GetBrowserContext() const {
|
| return browser_context_;
|
| }
|
| @@ -1378,17 +1338,22 @@
|
| map->RegisterProcess(site, process);
|
| }
|
|
|
| -void RenderProcessHostImpl::ProcessDied(base::ProcessHandle handle,
|
| - base::TerminationStatus status,
|
| - int exit_code,
|
| - bool was_alive) {
|
| +void RenderProcessHostImpl::ProcessDied() {
|
| // Our child process has died. If we didn't expect it, it's a crash.
|
| // In any case, we need to let everyone know it's gone.
|
| // The OnChannelError notification can fire multiple times due to nested sync
|
| // calls to a renderer. If we don't have a valid channel here it means we
|
| // already handled the error.
|
|
|
| - RendererClosedDetails details(handle, status, exit_code, was_alive);
|
| + // child_process_launcher_ can be NULL in single process mode or if fast
|
| + // termination happened.
|
| + int exit_code = 0;
|
| + base::TerminationStatus status =
|
| + child_process_launcher_.get() ?
|
| + child_process_launcher_->GetChildTerminationStatus(&exit_code) :
|
| + base::TERMINATION_STATUS_NORMAL_TERMINATION;
|
| +
|
| + RendererClosedDetails details(GetHandle(), status, exit_code);
|
| NotificationService::current()->Notify(
|
| NOTIFICATION_RENDERER_PROCESS_CLOSED,
|
| Source<RenderProcessHost>(this),
|
|
|