Index: content/browser/frame_host/render_frame_host_impl.cc |
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc |
index 53b1b5aefc19e5e66888d52ace131922dcf879ed..135bfd6de0b96121bb8ddb321a768e14ee953a27 100644 |
--- a/content/browser/frame_host/render_frame_host_impl.cc |
+++ b/content/browser/frame_host/render_frame_host_impl.cc |
@@ -54,6 +54,7 @@ RenderFrameHostImpl::RenderFrameHostImpl( |
frame_tree_node_(frame_tree_node), |
routing_id_(routing_id), |
is_swapped_out_(is_swapped_out) { |
+ frame_tree_->RegisterRenderFrameHost(this); |
GetProcess()->AddRoute(routing_id_, this); |
g_routing_id_frame_map.Get().insert(std::make_pair( |
RenderFrameHostID(GetProcess()->GetID(), routing_id_), |
@@ -66,6 +67,10 @@ RenderFrameHostImpl::~RenderFrameHostImpl() { |
RenderFrameHostID(GetProcess()->GetID(), routing_id_)); |
if (delegate_) |
delegate_->RenderFrameDeleted(this); |
+ |
+ // Notify the FrameTree that this RFH is going away, allowing it to shut down |
+ // the corresponding RenderViewHost if it is no longer needed. |
+ frame_tree_->UnregisterRenderFrameHost(this); |
} |
RenderProcessHost* RenderFrameHostImpl::GetProcess() { |