| 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();
|
| }
|
|
|