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

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: Revert unused changes from previous attempt + more cleanup. Created 5 years, 10 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 0052674555dd2df23bf1e85500cca872f5315b85..e3be9763a0a04e0b8b7425c4d6a20d35775fb524 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:
*thread = BrowserThread::UI;
break;
default:
@@ -59,6 +61,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_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
return handled;
@@ -112,6 +116,31 @@ void GuestViewMessageFilter::OnCreateMimeHandlerViewGuest(
callback);
}
+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);
Fady Samuel 2015/03/04 20:44:47 Why are you exposing this? This is a security issu
lazyboy 2015/04/01 21:47:58 This is temporary and will be fixed.
+ 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,
+ guest_instance_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