Index: extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc |
diff --git a/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc b/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc |
index 8da2fac73794c1f63072b9e68cdd7835f9af7643..beffab0f35d3b48f622eabba318f060af725e53f 100644 |
--- a/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc |
+++ b/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc |
@@ -12,8 +12,11 @@ |
#include "content/public/browser/host_zoom_map.h" |
#include "content/public/browser/navigation_entry.h" |
#include "content/public/browser/render_process_host.h" |
+#include "content/public/browser/render_widget_host.h" |
+#include "content/public/browser/render_widget_host_view.h" |
#include "content/public/browser/stream_handle.h" |
#include "content/public/browser/stream_info.h" |
+#include "content/public/common/child_process_host.h" |
#include "content/public/common/url_constants.h" |
#include "extensions/browser/api/extensions_api_client.h" |
#include "extensions/browser/api/mime_handler_private/mime_handler_private.h" |
@@ -76,8 +79,10 @@ GuestViewBase* MimeHandlerViewGuest::Create(WebContents* owner_web_contents) { |
MimeHandlerViewGuest::MimeHandlerViewGuest(WebContents* owner_web_contents) |
: GuestView<MimeHandlerViewGuest>(owner_web_contents), |
- delegate_(ExtensionsAPIClient::Get()->CreateMimeHandlerViewGuestDelegate( |
- this)) {} |
+ delegate_( |
+ ExtensionsAPIClient::Get()->CreateMimeHandlerViewGuestDelegate(this)), |
+ embedder_frame_process_id_(content::ChildProcessHost::kInvalidUniqueID), |
+ embedder_frame_routing_id_(MSG_ROUTING_NONE) {} |
MimeHandlerViewGuest::~MimeHandlerViewGuest() { |
} |
@@ -86,6 +91,20 @@ bool MimeHandlerViewGuest::CanUseCrossProcessFrames() { |
return false; |
} |
+content::RenderFrameHost* MimeHandlerViewGuest::GetEmbedderFrame() { |
+ DCHECK_NE(embedder_frame_routing_id_, MSG_ROUTING_NONE); |
+ return content::RenderFrameHost::FromID(embedder_frame_process_id_, |
+ embedder_frame_routing_id_); |
+} |
+ |
+void MimeHandlerViewGuest::SetEmbedderFrame(int process_id, int routing_id) { |
+ DCHECK_NE(routing_id, MSG_ROUTING_NONE); |
+ DCHECK_EQ(embedder_frame_routing_id_, MSG_ROUTING_NONE); |
+ |
+ embedder_frame_process_id_ = process_id; |
+ embedder_frame_routing_id_ = routing_id; |
+} |
+ |
const char* MimeHandlerViewGuest::GetAPINamespace() const { |
return "mimeHandlerViewGuestInternal"; |
} |
@@ -244,7 +263,7 @@ void MimeHandlerViewGuest::DocumentOnLoadCompletedInMainFrame() { |
// Assume the embedder WebContents is valid here. |
DCHECK(embedder_web_contents()); |
- embedder_web_contents()->Send( |
+ GetEmbedderFrame()->GetView()->GetRenderWidgetHost()->Send( |
new ExtensionsGuestViewMsg_MimeHandlerViewGuestOnLoadCompleted( |
element_instance_id())); |
} |