Chromium Code Reviews| 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, |