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

Side by Side Diff: extensions/browser/guest_view/extensions_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: add basic postMessage test Created 5 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "extensions/browser/guest_view/extensions_guest_view_message_filter.h" 5 #include "extensions/browser/guest_view/extensions_guest_view_message_filter.h"
6 6
7 #include "components/guest_view/browser/guest_view_base.h" 7 #include "components/guest_view/browser/guest_view_base.h"
8 #include "components/guest_view/browser/guest_view_manager.h" 8 #include "components/guest_view/browser/guest_view_manager.h"
9 #include "content/public/browser/browser_thread.h" 9 #include "content/public/browser/browser_thread.h"
10 #include "content/public/browser/render_frame_host.h" 10 #include "content/public/browser/render_frame_host.h"
(...skipping 28 matching lines...) Expand all
39 } 39 }
40 40
41 ExtensionsGuestViewMessageFilter::~ExtensionsGuestViewMessageFilter() { 41 ExtensionsGuestViewMessageFilter::~ExtensionsGuestViewMessageFilter() {
42 DCHECK_CURRENTLY_ON(BrowserThread::IO); 42 DCHECK_CURRENTLY_ON(BrowserThread::IO);
43 } 43 }
44 44
45 void ExtensionsGuestViewMessageFilter::OverrideThreadForMessage( 45 void ExtensionsGuestViewMessageFilter::OverrideThreadForMessage(
46 const IPC::Message& message, 46 const IPC::Message& message,
47 BrowserThread::ID* thread) { 47 BrowserThread::ID* thread) {
48 switch (message.type()) { 48 switch (message.type()) {
49 case ExtensionsGuestViewHostMsg_AttachToEmbedderFrame::ID:
49 case ExtensionsGuestViewHostMsg_CreateMimeHandlerViewGuest::ID: 50 case ExtensionsGuestViewHostMsg_CreateMimeHandlerViewGuest::ID:
50 case ExtensionsGuestViewHostMsg_ResizeGuest::ID: 51 case ExtensionsGuestViewHostMsg_ResizeGuest::ID:
51 *thread = BrowserThread::UI; 52 *thread = BrowserThread::UI;
52 break; 53 break;
53 default: 54 default:
54 break; 55 break;
55 } 56 }
56 } 57 }
57 58
58 void ExtensionsGuestViewMessageFilter::OnDestruct() const { 59 void ExtensionsGuestViewMessageFilter::OnDestruct() const {
59 // Destroy the filter on the IO thread since that's where its weak pointers 60 // Destroy the filter on the IO thread since that's where its weak pointers
60 // are being used. 61 // are being used.
61 BrowserThread::DeleteOnIOThread::Destruct(this); 62 BrowserThread::DeleteOnIOThread::Destruct(this);
62 } 63 }
63 64
64 bool ExtensionsGuestViewMessageFilter::OnMessageReceived( 65 bool ExtensionsGuestViewMessageFilter::OnMessageReceived(
65 const IPC::Message& message) { 66 const IPC::Message& message) {
66 bool handled = true; 67 bool handled = true;
67 IPC_BEGIN_MESSAGE_MAP(ExtensionsGuestViewMessageFilter, message) 68 IPC_BEGIN_MESSAGE_MAP(ExtensionsGuestViewMessageFilter, message)
69 IPC_MESSAGE_HANDLER(ExtensionsGuestViewHostMsg_AttachToEmbedderFrame,
70 OnAttachToEmbedderFrame)
68 IPC_MESSAGE_HANDLER(ExtensionsGuestViewHostMsg_CanExecuteContentScriptSync, 71 IPC_MESSAGE_HANDLER(ExtensionsGuestViewHostMsg_CanExecuteContentScriptSync,
69 OnCanExecuteContentScript) 72 OnCanExecuteContentScript)
70 IPC_MESSAGE_HANDLER(ExtensionsGuestViewHostMsg_CreateMimeHandlerViewGuest, 73 IPC_MESSAGE_HANDLER(ExtensionsGuestViewHostMsg_CreateMimeHandlerViewGuest,
71 OnCreateMimeHandlerViewGuest) 74 OnCreateMimeHandlerViewGuest)
72 IPC_MESSAGE_HANDLER(ExtensionsGuestViewHostMsg_ResizeGuest, OnResizeGuest) 75 IPC_MESSAGE_HANDLER(ExtensionsGuestViewHostMsg_ResizeGuest, OnResizeGuest)
73 IPC_MESSAGE_UNHANDLED(handled = false) 76 IPC_MESSAGE_UNHANDLED(handled = false)
74 IPC_END_MESSAGE_MAP() 77 IPC_END_MESSAGE_MAP()
75 return handled; 78 return handled;
76 } 79 }
77 80
81 void ExtensionsGuestViewMessageFilter::OnAttachToEmbedderFrame(
82 int embedder_local_render_frame_id,
83 int element_instance_id,
84 int guest_instance_id) {
85 auto manager = GuestViewManager::FromBrowserContext(browser_context_);
86 DCHECK(manager);
87 content::WebContents* guest_web_contents =
88 manager->GetGuestByInstanceIDHack(guest_instance_id);
89 DCHECK(guest_web_contents);
90 auto guest = WebViewGuest::FromWebContents(guest_web_contents);
91 DCHECK(guest);
92 content::WebContents* owner_web_contents = guest->owner_web_contents();
93 DCHECK(owner_web_contents);
94 auto embedder_frame = RenderFrameHost::FromID(render_process_id_,
95 embedder_local_render_frame_id);
96 guest_web_contents->AttachToEmbedderFrame(owner_web_contents, embedder_frame);
97 owner_web_contents->GetMainFrame()->Send(
98 new ExtensionsGuestViewMsg_ContentWindowReady(element_instance_id));
99 }
100
78 void ExtensionsGuestViewMessageFilter::OnCanExecuteContentScript( 101 void ExtensionsGuestViewMessageFilter::OnCanExecuteContentScript(
79 int render_view_id, 102 int render_view_id,
80 int script_id, 103 int script_id,
81 bool* allowed) { 104 bool* allowed) {
82 WebViewRendererState::WebViewInfo info; 105 WebViewRendererState::WebViewInfo info;
83 WebViewRendererState::GetInstance()->GetInfo(render_process_id_, 106 WebViewRendererState::GetInstance()->GetInfo(render_process_id_,
84 render_view_id, &info); 107 render_view_id, &info);
85 108
86 *allowed = 109 *allowed =
87 info.content_script_ids.find(script_id) != info.content_script_ids.end(); 110 info.content_script_ids.find(script_id) != info.content_script_ids.end();
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 element_instance_id, 198 element_instance_id,
176 guest_instance_id, 199 guest_instance_id,
177 attach_params); 200 attach_params);
178 201
179 rfh->Send( 202 rfh->Send(
180 new ExtensionsGuestViewMsg_CreateMimeHandlerViewGuestACK( 203 new ExtensionsGuestViewMsg_CreateMimeHandlerViewGuestACK(
181 element_instance_id)); 204 element_instance_id));
182 } 205 }
183 206
184 } // namespace extensions 207 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698