Chromium Code Reviews| Index: content/renderer/render_frame_proxy.cc |
| diff --git a/content/renderer/render_frame_proxy.cc b/content/renderer/render_frame_proxy.cc |
| index 77f7eaac53e347adb6d8da6ee59017b2802741f7..82b2b0d1149b228ac04234e57f7146a2b8598aa4 100644 |
| --- a/content/renderer/render_frame_proxy.cc |
| +++ b/content/renderer/render_frame_proxy.cc |
| @@ -118,10 +118,6 @@ RenderFrameProxy::~RenderFrameProxy() { |
| RenderThread::Get()->RemoveRoute(routing_id_); |
| g_routing_id_proxy_map.Get().erase(routing_id_); |
| - |
| - // TODO(nick): Call close unconditionally when web_frame() is always remote. |
| - if (web_frame()->isWebRemoteFrame()) |
| - web_frame()->close(); |
| } |
| void RenderFrameProxy::Init(blink::WebRemoteFrame* web_frame, |
| @@ -178,10 +174,8 @@ void RenderFrameProxy::OnDeleteProxy() { |
| RenderFrameImpl* render_frame = |
|
Charlie Reis
2014/10/16 23:48:29
Don't need this anymore.
|
| RenderFrameImpl::FromRoutingID(frame_routing_id_); |
| - if (render_frame) |
| - render_frame->set_render_frame_proxy(NULL); |
| - |
| - delete this; |
| + DCHECK(web_frame_->isWebRemoteFrame()); |
| + web_frame_->detach(); |
| } |
| void RenderFrameProxy::OnChildFrameProcessGone() { |
| @@ -230,6 +224,14 @@ void RenderFrameProxy::OnDisownOpener() { |
| web_frame_->setOpener(NULL); |
| } |
| +void RenderFrameProxy::frameDetached() { |
| + if (web_frame_->parent()) |
| + web_frame_->parent()->removeChild(web_frame_); |
| + |
| + web_frame_->close(); |
| + delete this; |
| +} |
| + |
| void RenderFrameProxy::postMessageEvent( |
| blink::WebLocalFrame* source_frame, |
| blink::WebRemoteFrame* target_frame, |