Index: content/browser/frame_host/render_frame_host_manager.h |
diff --git a/content/browser/frame_host/render_frame_host_manager.h b/content/browser/frame_host/render_frame_host_manager.h |
index 6b031b4fd4e6009457cc0ad806fd2d2ceae01738..9b36aaf1ac3c1b7b824544136501d8f03be1875a 100644 |
--- a/content/browser/frame_host/render_frame_host_manager.h |
+++ b/content/browser/frame_host/render_frame_host_manager.h |
@@ -450,12 +450,16 @@ class CONTENT_EXPORT RenderFrameHostManager { |
void EnsureRenderViewInitialized(RenderViewHostImpl* render_view_host, |
SiteInstance* instance); |
- // Recursively creates swapped out RenderViews and RenderFrameProxies for |
- // this frame's FrameTree and for its opener chain in the given SiteInstance. |
- // This allows other tabs to send cross-process JavaScript calls to their |
- // opener(s) and to any other frames in the opener's FrameTree (e.g., |
- // supporting calls like window.opener.opener.frames[x][y]). |
- void CreateOpenerProxies(SiteInstance* instance); |
+ // Creates swapped out RenderViews and RenderFrameProxies for this frame's |
+ // FrameTree and for its opener chain in the given SiteInstance. This allows |
+ // other tabs to send cross-process JavaScript calls to their opener(s) and |
+ // to any other frames in the opener's FrameTree (e.g., supporting calls like |
+ // window.opener.opener.frames[x][y]). Does not create proxies for the |
+ // subtree rooted at |skip_this_node| (e.g., if a node is being navigated, it |
+ // can be passed here to prevent proxies from being created for it, in |
+ // case it is in the same FrameTree as another node on its opener chain). |
+ void CreateOpenerProxies(SiteInstance* instance, |
+ FrameTreeNode* skip_this_node); |
// Ensure that this frame has proxies in all SiteInstances that can discover |
// this frame by name (e.g., via window.open("", "frame_name")). See |
@@ -617,12 +621,6 @@ class CONTENT_EXPORT RenderFrameHostManager { |
void CreateProxiesForNewRenderFrameHost(SiteInstance* old_instance, |
SiteInstance* new_instance); |
- // Create swapped out RenderViews and RenderFrameProxies in the given |
- // SiteInstance for all frames on the opener chain of this frame. Same as |
- // CreateOpenerProxies, but starts from this frame's opener, calling |
- // CreateOpenerProxies on it if it exists and returning otherwise. |
- void CreateOpenerProxiesIfNeeded(SiteInstance* instance); |
- |
// Traverse the opener chain and populate |opener_frame_trees| with |
// all FrameTrees accessible by following frame openers of nodes in the |
// given node's FrameTree. |opener_frame_trees| is ordered so that openers |
@@ -638,8 +636,10 @@ class CONTENT_EXPORT RenderFrameHostManager { |
// Create swapped out RenderViews and RenderFrameProxies in the given |
// SiteInstance for the current node's FrameTree. Used as a helper function |
// in CreateOpenerProxies for creating proxies in each FrameTree on the |
- // opener chain. |
- void CreateOpenerProxiesForFrameTree(SiteInstance* instance); |
+ // opener chain. Don't create proxies for the subtree rooted at |
+ // |skip_this_node|. |
+ void CreateOpenerProxiesForFrameTree(SiteInstance* instance, |
+ FrameTreeNode* skip_this_node); |
// Creates a RenderFrameHost and corresponding RenderViewHost if necessary. |
scoped_ptr<RenderFrameHostImpl> CreateRenderFrameHost(SiteInstance* instance, |