Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Unified Diff: content/renderer/render_frame_proxy.cc

Issue 660093003: Detach RemoteFrame from the tree when deleting RenderFrameProxy. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove unused variable. Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/render_frame_proxy.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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,
« no previous file with comments | « content/renderer/render_frame_proxy.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698