Don't abort the MimeHandlerStreamManager stream if we receive a RenderProcessHostChanged notification for a null old host.
This indicates that a subframe is being created. If we ignore the old_host here and set
the new host pointer in the MimeHandlerStreamManager::EmbedderObserver class, this causes
the stream to be aborted prematurely leading to embedded PDFs not loading.
This should fix bug 650985
BUG=650985
Review-Url: https://codereview.chromium.org/2418963002
Cr-Commit-Position: refs/heads/master@{#425498}
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 2d93f2d..964b243 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -309,6 +309,8 @@
WebContents* WebContents::FromFrameTreeNodeId(int frame_tree_node_id) {
FrameTreeNode* frame_tree_node =
FrameTreeNode::GloballyFindByID(frame_tree_node_id);
+ if (!frame_tree_node)
+ return nullptr;
return FromRenderFrameHost(frame_tree_node->current_frame_host());
}
diff --git a/extensions/browser/guest_view/mime_handler_view/mime_handler_stream_manager.cc b/extensions/browser/guest_view/mime_handler_view/mime_handler_stream_manager.cc
index 14be1c7..f281e21 100644
--- a/extensions/browser/guest_view/mime_handler_view/mime_handler_stream_manager.cc
+++ b/extensions/browser/guest_view/mime_handler_view/mime_handler_stream_manager.cc
@@ -232,6 +232,17 @@
void MimeHandlerStreamManager::EmbedderObserver::RenderFrameHostChanged(
content::RenderFrameHost* old_host,
content::RenderFrameHost* new_host) {
+ // If the old_host is null, then it means that a subframe is being created.
+ // Don't treat this like a host change.
+ if (!old_host)
+ return;
+
+ // If this is an unrelated host, ignore.
+ if ((old_host->GetRoutingID() != render_frame_id_) ||
+ (old_host->GetProcess()->GetID() != render_process_id_)) {
+ return;
+ }
+
new_host_ = new_host;
// Update the RFID, RPIDs to those of the new RFH. This ensures
// that if the new RFH gets deleted before loading the stream, we will