| Index: content/renderer/render_frame_proxy.cc
 | 
| diff --git a/content/renderer/render_frame_proxy.cc b/content/renderer/render_frame_proxy.cc
 | 
| index ff16e41aa71aca85ba94d49f6b36690e63f5f13a..14670716dfee75ba73d6c658a4e90db05bc3f45d 100644
 | 
| --- a/content/renderer/render_frame_proxy.cc
 | 
| +++ b/content/renderer/render_frame_proxy.cc
 | 
| @@ -39,10 +39,16 @@
 | 
|    scoped_ptr<RenderFrameProxy> proxy(
 | 
|        new RenderFrameProxy(routing_id, frame_to_replace->GetRoutingID()));
 | 
|  
 | 
| -  // When a RenderFrame is replaced by a RenderProxy, the WebRemoteFrame should
 | 
| -  // always come from WebRemoteFrame::create and a call to WebFrame::swap must
 | 
| -  // follow later.
 | 
| -  blink::WebRemoteFrame* web_frame = blink::WebRemoteFrame::create(proxy.get());
 | 
| +  blink::WebRemoteFrame* web_frame = NULL;
 | 
| +  if (frame_to_replace->GetWebFrame()->parent() &&
 | 
| +      frame_to_replace->GetWebFrame()->parent()->isWebRemoteFrame()) {
 | 
| +    blink::WebRemoteFrame* parent_web_frame =
 | 
| +        frame_to_replace->GetWebFrame()->parent()->toWebRemoteFrame();
 | 
| +    web_frame = parent_web_frame->createRemoteChild("", proxy.get());
 | 
| +  } else {
 | 
| +    web_frame = blink::WebRemoteFrame::create(proxy.get());
 | 
| +  }
 | 
| +
 | 
|    proxy->Init(web_frame, frame_to_replace->render_view());
 | 
|    return proxy.release();
 | 
|  }
 | 
| 
 |