| 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..6b8c760fe24ceec2acadee22b830d4cc26d0a375 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,
|
| @@ -175,13 +171,8 @@ bool RenderFrameProxy::Send(IPC::Message* message) {
|
| }
|
|
|
| void RenderFrameProxy::OnDeleteProxy() {
|
| - RenderFrameImpl* render_frame =
|
| - 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 +221,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,
|
|
|