OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/frame_host/render_frame_host_manager.h" | 5 #include "content/browser/frame_host/render_frame_host_manager.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
54 RenderFrameHostDelegate* render_frame_delegate, | 54 RenderFrameHostDelegate* render_frame_delegate, |
55 RenderViewHostDelegate* render_view_delegate, | 55 RenderViewHostDelegate* render_view_delegate, |
56 RenderWidgetHostDelegate* render_widget_delegate, | 56 RenderWidgetHostDelegate* render_widget_delegate, |
57 Delegate* delegate) | 57 Delegate* delegate) |
58 : frame_tree_node_(frame_tree_node), | 58 : frame_tree_node_(frame_tree_node), |
59 delegate_(delegate), | 59 delegate_(delegate), |
60 cross_navigation_pending_(false), | 60 cross_navigation_pending_(false), |
61 render_frame_delegate_(render_frame_delegate), | 61 render_frame_delegate_(render_frame_delegate), |
62 render_view_delegate_(render_view_delegate), | 62 render_view_delegate_(render_view_delegate), |
63 render_widget_delegate_(render_widget_delegate), | 63 render_widget_delegate_(render_widget_delegate), |
64 pseudo_parent_frame_tree_node_id_(-1), | |
64 interstitial_page_(nullptr), | 65 interstitial_page_(nullptr), |
65 should_reuse_web_ui_(false), | 66 should_reuse_web_ui_(false), |
66 weak_factory_(this) { | 67 weak_factory_(this) { |
67 DCHECK(frame_tree_node_); | 68 DCHECK(frame_tree_node_); |
68 } | 69 } |
69 | 70 |
70 RenderFrameHostManager::~RenderFrameHostManager() { | 71 RenderFrameHostManager::~RenderFrameHostManager() { |
71 if (pending_render_frame_host_) | 72 if (pending_render_frame_host_) |
72 UnsetPendingRenderFrameHost(); | 73 UnsetPendingRenderFrameHost(); |
73 | 74 |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
142 ->render_manager() | 143 ->render_manager() |
143 ->current_frame_host() | 144 ->current_frame_host() |
144 ->GetSiteInstance() | 145 ->GetSiteInstance() |
145 ->GetId()); | 146 ->GetId()); |
146 if (iter == proxy_hosts_.end()) | 147 if (iter == proxy_hosts_.end()) |
147 return NULL; | 148 return NULL; |
148 | 149 |
149 return iter->second; | 150 return iter->second; |
150 } | 151 } |
151 | 152 |
153 RenderFrameProxyHost* RenderFrameHostManager::GetProxyToEmbedder() { | |
154 FrameTreeNode* embedder_frame_tree_node = | |
155 FrameTree::GloballyFindByID(pseudo_parent_frame_tree_node_id_); | |
156 if (!embedder_frame_tree_node) | |
157 return NULL; | |
158 RenderFrameProxyHostMap::iterator iter = | |
159 proxy_hosts_.find(embedder_frame_tree_node->render_manager() | |
160 ->current_frame_host()->GetSiteInstance() | |
161 ->GetId()); | |
162 if (iter == proxy_hosts_.end()) | |
163 return NULL; | |
164 return iter->second; | |
165 } | |
166 | |
152 void RenderFrameHostManager::SetPendingWebUI(const GURL& url, int bindings) { | 167 void RenderFrameHostManager::SetPendingWebUI(const GURL& url, int bindings) { |
153 pending_web_ui_ = CreateWebUI(url, bindings); | 168 pending_web_ui_ = CreateWebUI(url, bindings); |
154 pending_and_current_web_ui_.reset(); | 169 pending_and_current_web_ui_.reset(); |
155 } | 170 } |
156 | 171 |
157 scoped_ptr<WebUIImpl> RenderFrameHostManager::CreateWebUI(const GURL& url, | 172 scoped_ptr<WebUIImpl> RenderFrameHostManager::CreateWebUI(const GURL& url, |
158 int bindings) { | 173 int bindings) { |
159 scoped_ptr<WebUIImpl> new_web_ui(delegate_->CreateWebUIForRenderManager(url)); | 174 scoped_ptr<WebUIImpl> new_web_ui(delegate_->CreateWebUIForRenderManager(url)); |
160 | 175 |
161 // If we have assigned (zero or more) bindings to this NavigationEntry in the | 176 // If we have assigned (zero or more) bindings to this NavigationEntry in the |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
422 response_started_id_.reset(); | 437 response_started_id_.reset(); |
423 } | 438 } |
424 | 439 |
425 void RenderFrameHostManager::ClearNavigationTransitionData() { | 440 void RenderFrameHostManager::ClearNavigationTransitionData() { |
426 render_frame_host_->ClearPendingTransitionRequestData(); | 441 render_frame_host_->ClearPendingTransitionRequestData(); |
427 } | 442 } |
428 | 443 |
429 void RenderFrameHostManager::DidNavigateFrame( | 444 void RenderFrameHostManager::DidNavigateFrame( |
430 RenderFrameHostImpl* render_frame_host, | 445 RenderFrameHostImpl* render_frame_host, |
431 bool was_caused_by_user_gesture) { | 446 bool was_caused_by_user_gesture) { |
447 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
| |
448 "chrome-guest")) { | |
449 RenderFrameProxyHost* proxy_to_embedder = GetProxyToEmbedder(); | |
450 DCHECK(proxy_to_embedder); | |
451 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
| |
452 proxy_to_embedder->SetOverriddenParentFTNID( | |
453 pseudo_parent_frame_tree_node_id_); | |
454 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.
| |
455 } | |
456 | |
432 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 457 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
433 switches::kEnableBrowserSideNavigation)) { | 458 switches::kEnableBrowserSideNavigation)) { |
434 if (render_frame_host == speculative_render_frame_host_.get()) { | 459 if (render_frame_host == speculative_render_frame_host_.get()) { |
435 CommitPending(); | 460 CommitPending(); |
436 } else if (render_frame_host == render_frame_host_.get()) { | 461 } else if (render_frame_host == render_frame_host_.get()) { |
437 // TODO(carlosk): this code doesn't properly handle in-page navigation or | 462 // TODO(carlosk): this code doesn't properly handle in-page navigation or |
438 // interwoven navigation requests. | 463 // interwoven navigation requests. |
439 DCHECK(!speculative_render_frame_host_); | 464 DCHECK(!speculative_render_frame_host_); |
440 } else { | 465 } else { |
441 // No one else should be sending us a DidNavigate in this state. | 466 // No one else should be sending us a DidNavigate in this state. |
(...skipping 1511 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1953 void RenderFrameHostManager::DeleteRenderFrameProxyHost( | 1978 void RenderFrameHostManager::DeleteRenderFrameProxyHost( |
1954 SiteInstance* instance) { | 1979 SiteInstance* instance) { |
1955 RenderFrameProxyHostMap::iterator iter = proxy_hosts_.find(instance->GetId()); | 1980 RenderFrameProxyHostMap::iterator iter = proxy_hosts_.find(instance->GetId()); |
1956 if (iter != proxy_hosts_.end()) { | 1981 if (iter != proxy_hosts_.end()) { |
1957 delete iter->second; | 1982 delete iter->second; |
1958 proxy_hosts_.erase(iter); | 1983 proxy_hosts_.erase(iter); |
1959 } | 1984 } |
1960 } | 1985 } |
1961 | 1986 |
1962 } // namespace content | 1987 } // namespace content |
OLD | NEW |