Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(22)

Unified Diff: extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc

Issue 2417693002: Allow MimeHandlerViewGuest be embedded inside OOPIFs (Closed)
Patch Set: Rebased Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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()));
}

Powered by Google App Engine
This is Rietveld 408576698