summaryrefslogtreecommitdiffstats
path: root/content/renderer/render_frame_proxy.cc
diff options
context:
space:
mode:
Diffstat (limited to 'content/renderer/render_frame_proxy.cc')
-rw-r--r--content/renderer/render_frame_proxy.cc21
1 files changed, 10 insertions, 11 deletions
diff --git a/content/renderer/render_frame_proxy.cc b/content/renderer/render_frame_proxy.cc
index 77f7eaa..6b8c760 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,