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

Side by Side Diff: content/renderer/render_frame_proxy.cc

Issue 600553003: Enable swapping a frame back in to its parent process (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@remoteToLocal
Patch Set: Created 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "content/renderer/render_frame_proxy.h" 5 #include "content/renderer/render_frame_proxy.h"
6 6
7 #include <map> 7 #include <map>
8 8
9 #include "base/lazy_instance.h" 9 #include "base/lazy_instance.h"
10 #include "content/child/webmessageportchannel_impl.h" 10 #include "content/child/webmessageportchannel_impl.h"
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 } 146 }
147 147
148 bool RenderFrameProxy::OnMessageReceived(const IPC::Message& msg) { 148 bool RenderFrameProxy::OnMessageReceived(const IPC::Message& msg) {
149 bool handled = true; 149 bool handled = true;
150 IPC_BEGIN_MESSAGE_MAP(RenderFrameProxy, msg) 150 IPC_BEGIN_MESSAGE_MAP(RenderFrameProxy, msg)
151 IPC_MESSAGE_HANDLER(FrameMsg_DeleteProxy, OnDeleteProxy) 151 IPC_MESSAGE_HANDLER(FrameMsg_DeleteProxy, OnDeleteProxy)
152 IPC_MESSAGE_HANDLER(FrameMsg_ChildFrameProcessGone, OnChildFrameProcessGone) 152 IPC_MESSAGE_HANDLER(FrameMsg_ChildFrameProcessGone, OnChildFrameProcessGone)
153 IPC_MESSAGE_HANDLER_GENERIC(FrameMsg_CompositorFrameSwapped, 153 IPC_MESSAGE_HANDLER_GENERIC(FrameMsg_CompositorFrameSwapped,
154 OnCompositorFrameSwapped(msg)) 154 OnCompositorFrameSwapped(msg))
155 IPC_MESSAGE_HANDLER(FrameMsg_DisownOpener, OnDisownOpener) 155 IPC_MESSAGE_HANDLER(FrameMsg_DisownOpener, OnDisownOpener)
156 IPC_MESSAGE_HANDLER(FrameMsg_SwapOut, OnSwapOut)
156 IPC_MESSAGE_UNHANDLED(handled = false) 157 IPC_MESSAGE_UNHANDLED(handled = false)
157 IPC_END_MESSAGE_MAP() 158 IPC_END_MESSAGE_MAP()
158 159
159 // If |handled| is true, |this| may have been deleted. 160 // If |handled| is true, |this| may have been deleted.
160 if (handled) 161 if (handled)
161 return true; 162 return true;
162 163
163 RenderFrameImpl* render_frame = 164 RenderFrameImpl* render_frame =
164 RenderFrameImpl::FromRoutingID(frame_routing_id_); 165 RenderFrameImpl::FromRoutingID(frame_routing_id_);
165 return render_frame && render_frame->OnMessageReceived(msg); 166 return render_frame && render_frame->OnMessageReceived(msg);
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 if (render_frame) { 224 if (render_frame) {
224 if (render_frame->GetWebFrame()->opener()) 225 if (render_frame->GetWebFrame()->opener())
225 render_frame->GetWebFrame()->setOpener(NULL); 226 render_frame->GetWebFrame()->setOpener(NULL);
226 return; 227 return;
227 } 228 }
228 229
229 if (web_frame_->opener()) 230 if (web_frame_->opener())
230 web_frame_->setOpener(NULL); 231 web_frame_->setOpener(NULL);
231 } 232 }
232 233
234 void RenderFrameProxy::OnSwapOut(int frame_routing_id) {
Charlie Reis 2014/09/30 23:02:43 I don't think we want this, do we? Nasko was poin
nasko 2014/10/08 16:42:58 Yes, it will be best if we send the proxy routing
235 CHECK(!RenderFrameImpl::FromRoutingID(frame_routing_id));
236
237 RenderFrameImpl* render_frame =
238 RenderFrameImpl::Create(render_view_, frame_routing_id);
239 blink::WebLocalFrame* web_frame = blink::WebLocalFrame::create(render_frame);
240 render_frame->SetWebFrame(web_frame);
241 render_frame->Initialize();
242 web_frame_->swap(web_frame);
243 }
244
233 void RenderFrameProxy::postMessageEvent( 245 void RenderFrameProxy::postMessageEvent(
234 blink::WebLocalFrame* source_frame, 246 blink::WebLocalFrame* source_frame,
235 blink::WebRemoteFrame* target_frame, 247 blink::WebRemoteFrame* target_frame,
236 blink::WebSecurityOrigin target_origin, 248 blink::WebSecurityOrigin target_origin,
237 blink::WebDOMMessageEvent event) { 249 blink::WebDOMMessageEvent event) {
238 DCHECK(!web_frame_ || web_frame_ == target_frame); 250 DCHECK(!web_frame_ || web_frame_ == target_frame);
239 251
240 ViewMsg_PostMessage_Params params; 252 ViewMsg_PostMessage_Params params;
241 params.is_data_raw_string = false; 253 params.is_data_raw_string = false;
242 params.data = event.data().toString(); 254 params.data = event.data().toString();
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 request.referrerPolicy()); 300 request.referrerPolicy());
289 params.disposition = CURRENT_TAB; 301 params.disposition = CURRENT_TAB;
290 params.should_replace_current_entry = should_replace_current_entry; 302 params.should_replace_current_entry = should_replace_current_entry;
291 params.user_gesture = 303 params.user_gesture =
292 blink::WebUserGestureIndicator::isProcessingUserGesture(); 304 blink::WebUserGestureIndicator::isProcessingUserGesture();
293 blink::WebUserGestureIndicator::consumeUserGesture(); 305 blink::WebUserGestureIndicator::consumeUserGesture();
294 Send(new FrameHostMsg_OpenURL(routing_id_, params)); 306 Send(new FrameHostMsg_OpenURL(routing_id_, params));
295 } 307 }
296 308
297 } // namespace 309 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698