| Index: content/renderer/render_frame_impl.cc
|
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
|
| index 55ee71666f00cdd1408e0c9456c7ec97d3c619a4..3797b91ebb4bc7b3759d513d0684293ea4c404fc 100644
|
| --- a/content/renderer/render_frame_impl.cc
|
| +++ b/content/renderer/render_frame_impl.cc
|
| @@ -1065,8 +1065,17 @@ void RenderFrameImpl::OnSwapOut(int proxy_routing_id) {
|
|
|
| // Let subframes know that the frame is now rendered remotely, for the
|
| // purposes of compositing and input events.
|
| - if (!is_main_frame)
|
| + if (!is_main_frame) {
|
| + // TODO(creis): Remove setIsRemote and send initializeChildFrame from the
|
| + // RenderFrameProxy, since the RenderFrameHost may be deleted first. In
|
| + // the meantime, temporarily set this frame's proxy so that the message
|
| + // is sent via RenderFrameProxy.
|
| + // See http://crbug.com/416102.
|
| + DCHECK(!render_frame_proxy_);
|
| + set_render_frame_proxy(proxy);
|
| frame_->setIsRemote(true);
|
| + set_render_frame_proxy(NULL);
|
| + }
|
|
|
| // Replace the page with a blank dummy URL. The unload handler will not be
|
| // run a second time, thanks to a check in FrameLoader::stopLoading.
|
| @@ -3182,7 +3191,7 @@ void RenderFrameImpl::forwardInputEvent(const blink::WebInputEvent* event) {
|
|
|
| void RenderFrameImpl::initializeChildFrame(const blink::WebRect& frame_rect,
|
| float scale_factor) {
|
| - Send(new FrameHostMsg_InitializeChildFrame(
|
| + render_frame_proxy_->Send(new FrameHostMsg_InitializeChildFrame(
|
| routing_id_, frame_rect, scale_factor));
|
| }
|
|
|
|
|