Index: content/browser/renderer_host/render_process_host_impl.cc |
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc |
index 37e8b336ffba2f0d5bf32283e09a099e1cea4372..04044f3320a3660a1ab51c0c3dca466dcaef5035 100644 |
--- a/content/browser/renderer_host/render_process_host_impl.cc |
+++ b/content/browser/renderer_host/render_process_host_impl.cc |
@@ -2049,6 +2049,10 @@ void RenderProcessHostImpl::ProcessDied(bool already_dead) { |
#endif |
RemoveUserData(kSessionStorageHolderKey); |
+ // RenderProcessGone handlers might navigate or perform other actions that |
+ // require a connection. Ensure that there is one before calling them. |
+ mojo_application_host_.reset(new MojoApplicationHost); |
+ |
IDMap<IPC::Listener>::iterator iter(&listeners_); |
while (!iter.IsAtEnd()) { |
iter.GetCurrentValue()->OnMessageReceived( |
@@ -2058,8 +2062,6 @@ void RenderProcessHostImpl::ProcessDied(bool already_dead) { |
iter.Advance(); |
} |
- mojo_application_host_.reset(new MojoApplicationHost); |
- |
// It's possible that one of the calls out to the observers might have caused |
// this object to be no longer needed. |
if (delayed_cleanup_needed_) |