Chromium Code Reviews| 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()) { |