| Index: content/browser/frame_host/frame_tree.h
|
| diff --git a/content/browser/frame_host/frame_tree.h b/content/browser/frame_host/frame_tree.h
|
| index 8aa85bb0e72db66510e729eff46e479212bc2d15..fb29df24de0d0fd5ac393981965fe01a8499876e 100644
|
| --- a/content/browser/frame_host/frame_tree.h
|
| +++ b/content/browser/frame_host/frame_tree.h
|
| @@ -130,8 +130,8 @@ class CONTENT_EXPORT FrameTree {
|
| FrameTreeNode* FindByFrameID(int64 frame_id);
|
|
|
| private:
|
| - typedef std::pair<RenderViewHostImpl*, int> RenderViewHostRefCount;
|
| - typedef base::hash_map<int, RenderViewHostRefCount> RenderViewHostMap;
|
| + typedef base::hash_map<int, RenderViewHostImpl*> RenderViewHostMap;
|
| + typedef std::multimap<int, RenderViewHostImpl*> RenderViewHostMultiMap;
|
|
|
| // These delegates are installed into all the RenderViewHosts and
|
| // RenderFrameHosts that we create.
|
| @@ -140,15 +140,23 @@ class CONTENT_EXPORT FrameTree {
|
| RenderWidgetHostDelegate* render_widget_delegate_;
|
| RenderFrameHostManager::Delegate* manager_delegate_;
|
|
|
| - // Map of SiteInstance ID to a (RenderViewHost, refcount) pair. This allows
|
| - // us to look up the RenderViewHost for a given SiteInstance when creating
|
| - // RenderFrameHosts, and it allows us to call Shutdown on the RenderViewHost
|
| - // and remove it from the map when no more RenderFrameHosts are using it.
|
| + // Map of SiteInstance ID to a RenderViewHost. This allows us to look up the
|
| + // RenderViewHost for a given SiteInstance when creating RenderFrameHosts.
|
| + // Combined with the refcount on RenderViewHost, this allows us to call
|
| + // Shutdown on the RenderViewHost and remove it from the map when no more
|
| + // RenderFrameHosts are using it.
|
| //
|
| // Must be declared before |root_| so that it is deleted afterward. Otherwise
|
| // the map will be cleared before we delete the RenderFrameHosts in the tree.
|
| RenderViewHostMap render_view_host_map_;
|
|
|
| + // Map of SiteInstance ID to RenderViewHosts that are pending shutdown. The
|
| + // renderers of these RVH are currently executing the unload event in
|
| + // background. When the SwapOutACK is received, they will be deleted. In the
|
| + // meantime, they are kept in this map, as they should not be reused (part of
|
| + // their state is already gone away).
|
| + RenderViewHostMultiMap render_view_host_pending_shutdown_map_;
|
| +
|
| scoped_ptr<FrameTreeNode> root_;
|
|
|
| base::Callback<void(RenderViewHostImpl*, int64)> on_frame_removed_;
|
|
|