Index: chrome/browser/renderer_host/resource_dispatcher_host.cc |
diff --git a/chrome/browser/renderer_host/resource_dispatcher_host.cc b/chrome/browser/renderer_host/resource_dispatcher_host.cc |
index 65182c275b5d353b777b3ba1f867340bab8583a1..2907d7fd26571488ee33a9146b4e4df0afd34d00 100644 |
--- a/chrome/browser/renderer_host/resource_dispatcher_host.cc |
+++ b/chrome/browser/renderer_host/resource_dispatcher_host.cc |
@@ -159,7 +159,11 @@ class RVHDelegateNotificationTask : public Task { |
if (!ResourceDispatcherHost::RenderViewForRequest(request, |
&render_process_host_id_, |
&render_view_host_id_)) { |
- NOTREACHED(); |
+ // Issue a warning here - this can happen during normal operation (for |
+ // example, if a worker exits while a network operation is pending), but |
+ // it should be fairly rare. |
+ DLOG(WARNING) << "Trying to deliver a message to a RenderViewHost" << |
+ " that has already exited or has never existed."; |
} |
} |
@@ -1451,8 +1455,13 @@ bool ResourceDispatcherHost::RenderViewForRequest(const URLRequest* request, |
*render_view_host_id = -1; |
return false; |
} |
- *render_process_host_id = worker_instance->renderer_id(); |
- *render_view_host_id = worker_instance->render_view_route_id(); |
+ DCHECK(!worker_instance->worker_document_set()->IsEmpty()); |
+ const WorkerDocumentSet::DocumentInfoSet& parents = |
+ worker_instance->worker_document_set()->documents(); |
+ // Need to display some related UI for this network request - pick an |
+ // arbitrary parent to do so. |
+ *render_process_host_id = parents.begin()->renderer_id(); |
+ *render_view_host_id = parents.begin()->render_view_route_id(); |
} else { |
*render_process_host_id = info->child_id(); |
*render_view_host_id = info->route_id(); |