Chromium Code Reviews| Index: content/browser/frame_host/frame_tree.cc |
| diff --git a/content/browser/frame_host/frame_tree.cc b/content/browser/frame_host/frame_tree.cc |
| index 1bb52d8b20a6a4f763e230ae1171e7090851f4a3..9977976aaba40eb87ec1c970367ba9b3f85a4053 100644 |
| --- a/content/browser/frame_host/frame_tree.cc |
| +++ b/content/browser/frame_host/frame_tree.cc |
| @@ -303,21 +303,9 @@ RenderViewHostImpl* FrameTree::CreateRenderViewHost( |
| bool hidden) { |
| RenderViewHostMap::iterator iter = |
| render_view_host_map_.find(site_instance->GetId()); |
| - if (iter != render_view_host_map_.end()) { |
| - // If a RenderViewHost is pending deletion for this |site_instance|, it |
| - // shouldn't be reused, so put it in the map of RenderViewHosts pending |
| - // shutdown. Otherwise, return the existing RenderViewHost for the |
| - // SiteInstance. Note that if swapped-out is forbidden, the |
| - // RenderViewHost's main frame has already been cleared, so we cannot rely |
| - // on checking whether the main frame is pending deletion. |
| - if (root_->render_manager()->IsViewPendingDeletion(iter->second)) { |
| - render_view_host_pending_shutdown_map_.insert( |
| - std::make_pair(site_instance->GetId(), iter->second)); |
| - render_view_host_map_.erase(iter); |
| - } else { |
| - return iter->second; |
| - } |
| - } |
| + if (iter != render_view_host_map_.end()) |
| + return iter->second; |
| + |
| RenderViewHostImpl* rvh = |
| static_cast<RenderViewHostImpl*>(RenderViewHostFactory::Create( |
| site_instance, render_view_delegate_, render_widget_delegate_, |
| @@ -330,11 +318,9 @@ RenderViewHostImpl* FrameTree::CreateRenderViewHost( |
| RenderViewHostImpl* FrameTree::GetRenderViewHost(SiteInstance* site_instance) { |
| RenderViewHostMap::iterator iter = |
| render_view_host_map_.find(site_instance->GetId()); |
| - // Don't return the RVH if it is pending deletion. |
| - if (iter != render_view_host_map_.end() && |
| - !root_->render_manager()->IsViewPendingDeletion(iter->second)) { |
| + if (iter != render_view_host_map_.end()) |
| return iter->second; |
| - } |
| + |
| return nullptr; |
| } |
| @@ -353,39 +339,17 @@ void FrameTree::ReleaseRenderViewHostRef(RenderViewHostImpl* render_view_host) { |
| int32_t site_instance_id = site_instance->GetId(); |
| RenderViewHostMap::iterator iter = |
| render_view_host_map_.find(site_instance_id); |
| - if (iter != render_view_host_map_.end() && iter->second == render_view_host) { |
| - // Decrement the refcount and shutdown the RenderViewHost if no one else is |
| - // using it. |
| - CHECK_GT(iter->second->ref_count(), 0); |
| - iter->second->decrement_ref_count(); |
| - if (iter->second->ref_count() == 0) { |
| - iter->second->ShutdownAndDestroy(); |
| - render_view_host_map_.erase(iter); |
| - } |
| - } else { |
| - // The RenderViewHost should be in the list of RenderViewHosts pending |
| - // shutdown. |
| - bool render_view_host_found = false; |
| - std::pair<RenderViewHostMultiMap::iterator, |
| - RenderViewHostMultiMap::iterator> result = |
| - render_view_host_pending_shutdown_map_.equal_range(site_instance_id); |
| - for (RenderViewHostMultiMap::iterator multi_iter = result.first; |
| - multi_iter != result.second; |
| - ++multi_iter) { |
| - if (multi_iter->second != render_view_host) |
| - continue; |
| - render_view_host_found = true; |
| - // Decrement the refcount and shutdown the RenderViewHost if no one else |
| - // is using it. |
| - CHECK_GT(render_view_host->ref_count(), 0); |
| - render_view_host->decrement_ref_count(); |
| - if (render_view_host->ref_count() == 0) { |
| - render_view_host->ShutdownAndDestroy(); |
| - render_view_host_pending_shutdown_map_.erase(multi_iter); |
| - } |
| - break; |
| - } |
| - CHECK(render_view_host_found); |
| + |
| + CHECK(iter != render_view_host_map_.end()); |
|
Charlie Reis
2016/04/22 19:11:33
Would CHECK_NE work?
alexmos
2016/04/25 18:17:07
I had that originally, but that failed to compile
Charlie Reis
2016/04/26 05:06:36
Acknowledged.
|
| + CHECK_EQ(iter->second, render_view_host); |
| + |
| + // Decrement the refcount and shutdown the RenderViewHost if no one else is |
| + // using it. |
| + CHECK_GT(iter->second->ref_count(), 0); |
| + iter->second->decrement_ref_count(); |
| + if (iter->second->ref_count() == 0) { |
| + iter->second->ShutdownAndDestroy(); |
| + render_view_host_map_.erase(iter); |
| } |
| } |