Index: content/browser/frame_host/render_frame_host_manager.cc |
diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc |
index 0cd3b53b3c42c4eed16da2eba5360ecbc65d8a34..b28716a7d1808351efdd68fff90c3de92ecf7636 100644 |
--- a/content/browser/frame_host/render_frame_host_manager.cc |
+++ b/content/browser/frame_host/render_frame_host_manager.cc |
@@ -61,6 +61,7 @@ RenderFrameHostManager::RenderFrameHostManager( |
render_frame_delegate_(render_frame_delegate), |
render_view_delegate_(render_view_delegate), |
render_widget_delegate_(render_widget_delegate), |
+ pseudo_parent_frame_tree_node_id_(-1), |
interstitial_page_(nullptr), |
should_reuse_web_ui_(false), |
weak_factory_(this) { |
@@ -149,6 +150,20 @@ RenderFrameProxyHost* RenderFrameHostManager::GetProxyToParent() { |
return iter->second; |
} |
+RenderFrameProxyHost* RenderFrameHostManager::GetProxyToEmbedder() { |
+ FrameTreeNode* embedder_frame_tree_node = |
+ FrameTree::GloballyFindByID(pseudo_parent_frame_tree_node_id_); |
+ if (!embedder_frame_tree_node) |
+ return NULL; |
+ RenderFrameProxyHostMap::iterator iter = |
+ proxy_hosts_.find(embedder_frame_tree_node->render_manager() |
+ ->current_frame_host()->GetSiteInstance() |
+ ->GetId()); |
+ if (iter == proxy_hosts_.end()) |
+ return NULL; |
+ return iter->second; |
+} |
+ |
void RenderFrameHostManager::SetPendingWebUI(const GURL& url, int bindings) { |
pending_web_ui_ = CreateWebUI(url, bindings); |
pending_and_current_web_ui_.reset(); |
@@ -429,6 +444,16 @@ void RenderFrameHostManager::ClearNavigationTransitionData() { |
void RenderFrameHostManager::DidNavigateFrame( |
RenderFrameHostImpl* render_frame_host, |
bool was_caused_by_user_gesture) { |
+ if (render_frame_host->GetSiteInstance()->GetSiteURL().SchemeIs( |
Fady Samuel
2015/03/04 22:21:06
This doesn't work for other guest types such as <a
Charlie Reis
2015/03/10 04:09:44
Is RenderProcessHostImpl::IsIsolatedGuest() still
lazyboy
2015/04/01 21:47:57
I'm using GetProxyToEmbedder() instead, if we have
|
+ "chrome-guest")) { |
+ RenderFrameProxyHost* proxy_to_embedder = GetProxyToEmbedder(); |
+ DCHECK(proxy_to_embedder); |
+ proxy_to_embedder->SetChildRWHView(current_host()->GetView()); |
Charlie Reis
2015/03/10 04:09:44
This doesn't seem like the right place for these c
lazyboy
2015/04/01 21:47:57
Technically we don't have pending and don't commit
|
+ proxy_to_embedder->SetOverriddenParentFTNID( |
+ pseudo_parent_frame_tree_node_id_); |
+ current_host()->GetView()->Show(); |
Fady Samuel
2015/03/04 22:21:06
This breaks visibility I think.
lazyboy
2015/04/01 21:47:57
Added TODO to investigate.
|
+ } |
+ |
if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
switches::kEnableBrowserSideNavigation)) { |
if (render_frame_host == speculative_render_frame_host_.get()) { |