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

Unified Diff: extensions/browser/guest_view/guest_view_message_filter.cc

Issue 972313002: Make <webview> use out-of-process iframe architecture. (Closed) Base URL: ssh://saopaulo.wat/mnt/dev/shared/src@testoopif2z-better-chrome
Patch Set: some review comments addressed Created 5 years, 9 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/guest_view_message_filter.cc
diff --git a/extensions/browser/guest_view/guest_view_message_filter.cc b/extensions/browser/guest_view/guest_view_message_filter.cc
index e7c505c43d41af08114cb94df061653f1201279e..1cac980c1caff3ca686ec4333dc0e73e4dee2bee 100644
--- a/extensions/browser/guest_view/guest_view_message_filter.cc
+++ b/extensions/browser/guest_view/guest_view_message_filter.cc
@@ -11,6 +11,7 @@
#include "extensions/browser/guest_view/guest_view_manager.h"
#include "extensions/browser/guest_view/mime_handler_view/mime_handler_view_constants.h"
#include "extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h"
+#include "extensions/browser/guest_view/web_view/web_view_guest.h"
#include "extensions/common/guest_view/guest_view_messages.h"
#include "ipc/ipc_message_macros.h"
@@ -40,6 +41,7 @@ void GuestViewMessageFilter::OverrideThreadForMessage(
switch (message.type()) {
case GuestViewHostMsg_AttachGuest::ID:
case GuestViewHostMsg_CreateMimeHandlerViewGuest::ID:
+ case GuestViewHostMsg_AttachLocalFrameToGuest::ID:
case GuestViewHostMsg_ResizeGuest::ID:
*thread = BrowserThread::UI;
break;
@@ -60,6 +62,8 @@ bool GuestViewMessageFilter::OnMessageReceived(const IPC::Message& message) {
IPC_MESSAGE_HANDLER(GuestViewHostMsg_AttachGuest, OnAttachGuest)
IPC_MESSAGE_HANDLER(GuestViewHostMsg_CreateMimeHandlerViewGuest,
OnCreateMimeHandlerViewGuest)
+ IPC_MESSAGE_HANDLER(GuestViewHostMsg_AttachLocalFrameToGuest,
+ OnAttachLocalFrameToGuest)
IPC_MESSAGE_HANDLER(GuestViewHostMsg_ResizeGuest, OnResizeGuest)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
@@ -133,6 +137,29 @@ void GuestViewMessageFilter::OnResizeGuest(int render_frame_id,
mhvg->SetSize(set_size_params);
}
+void GuestViewMessageFilter::OnAttachLocalFrameToGuest(
+ int embedder_local_render_frame_id,
+ int element_instance_id,
+ int guest_instance_id) {
+ auto guest_manager = GuestViewManager::FromBrowserContext(browser_context_);
+ DCHECK(guest_manager);
+ content::WebContents* guest_web_contents =
+ guest_manager->GetGuestByInstanceIDHack(guest_instance_id);
+ DCHECK(guest_web_contents);
+ auto guest = WebViewGuest::FromWebContents(guest_web_contents);
+ DCHECK(guest);
+ content::WebContents* owner_web_contents = guest->owner_web_contents();
+ DCHECK(owner_web_contents);
+ int render_view_proxy_routing_id =
+ guest_web_contents->AttachLocalFrameToGuest(
+ owner_web_contents, embedder_local_render_frame_id);
+
+ owner_web_contents->GetMainFrame()->Send(
+ new GuestViewMsg_ContentWindowReady(
+ element_instance_id,
+ render_view_proxy_routing_id));
+}
+
void GuestViewMessageFilter::MimeHandlerViewGuestCreatedCallback(
int element_instance_id,
int embedder_render_process_id,

Powered by Google App Engine
This is Rietveld 408576698