Chromium Code Reviews| 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 <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 940 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 951 if (notify_webui_of_rv_creation && GetNavigatingWebUI()) | 951 if (notify_webui_of_rv_creation && GetNavigatingWebUI()) |
| 952 GetNavigatingWebUI()->RenderViewCreated(navigation_rfh->render_view_host()); | 952 GetNavigatingWebUI()->RenderViewCreated(navigation_rfh->render_view_host()); |
| 953 | 953 |
| 954 return navigation_rfh; | 954 return navigation_rfh; |
| 955 } | 955 } |
| 956 | 956 |
| 957 // PlzNavigate | 957 // PlzNavigate |
| 958 void RenderFrameHostManager::CleanUpNavigation() { | 958 void RenderFrameHostManager::CleanUpNavigation() { |
| 959 CHECK(IsBrowserSideNavigationEnabled()); | 959 CHECK(IsBrowserSideNavigationEnabled()); |
| 960 render_frame_host_->ClearPendingWebUI(); | 960 render_frame_host_->ClearPendingWebUI(); |
| 961 if (speculative_render_frame_host_) | 961 if (speculative_render_frame_host_) { |
| 962 bool was_loading = speculative_render_frame_host_->is_loading(); | |
| 962 DiscardUnusedFrame(UnsetSpeculativeRenderFrameHost()); | 963 DiscardUnusedFrame(UnsetSpeculativeRenderFrameHost()); |
| 964 if (was_loading) | |
| 965 frame_tree_node_->DidStopLoading(); | |
| 966 } | |
| 963 } | 967 } |
| 964 | 968 |
| 965 // PlzNavigate | 969 // PlzNavigate |
| 966 scoped_ptr<RenderFrameHostImpl> | 970 scoped_ptr<RenderFrameHostImpl> |
| 967 RenderFrameHostManager::UnsetSpeculativeRenderFrameHost() { | 971 RenderFrameHostManager::UnsetSpeculativeRenderFrameHost() { |
| 968 CHECK(IsBrowserSideNavigationEnabled()); | 972 CHECK(IsBrowserSideNavigationEnabled()); |
| 969 speculative_render_frame_host_->GetProcess()->RemovePendingView(); | 973 speculative_render_frame_host_->GetProcess()->RemovePendingView(); |
| 970 return std::move(speculative_render_frame_host_); | 974 return std::move(speculative_render_frame_host_); |
| 971 } | 975 } |
| 972 | 976 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1022 RenderFrameHostManager::SiteInstanceDescriptor::SiteInstanceDescriptor( | 1026 RenderFrameHostManager::SiteInstanceDescriptor::SiteInstanceDescriptor( |
| 1023 BrowserContext* browser_context, | 1027 BrowserContext* browser_context, |
| 1024 GURL dest_url, | 1028 GURL dest_url, |
| 1025 bool related_to_current) | 1029 bool related_to_current) |
| 1026 : existing_site_instance(nullptr), | 1030 : existing_site_instance(nullptr), |
| 1027 new_is_related_to_current(related_to_current) { | 1031 new_is_related_to_current(related_to_current) { |
| 1028 new_site_url = SiteInstance::GetSiteForURL(browser_context, dest_url); | 1032 new_site_url = SiteInstance::GetSiteForURL(browser_context, dest_url); |
| 1029 } | 1033 } |
| 1030 | 1034 |
| 1031 void RenderFrameHostManager::RenderProcessGone(SiteInstanceImpl* instance) { | 1035 void RenderFrameHostManager::RenderProcessGone(SiteInstanceImpl* instance) { |
| 1036 // Reset the loading state of any RenderFrameHost with SiteInstance | |
| 1037 // |instance|. | |
| 1038 if (render_frame_host_->GetSiteInstance() == instance) | |
| 1039 render_frame_host_->ResetLoadingState(); | |
| 1040 if (pending_render_frame_host_ && | |
| 1041 pending_render_frame_host_->GetSiteInstance() == instance) { | |
| 1042 pending_render_frame_host_->ResetLoadingState(); | |
| 1043 } | |
| 1044 if (IsBrowserSideNavigationEnabled() && speculative_render_frame_host_ && | |
|
carlosk
2016/01/15 17:24:04
nit: why not do an if-else on the IsBrowserSideNav
nasko
2016/01/16 00:13:51
Agreed. Having a clear switch with exclusive use o
clamy
2016/01/19 13:31:18
Done.
| |
| 1045 speculative_render_frame_host_->GetSiteInstance() == instance) { | |
| 1046 speculative_render_frame_host_->ResetLoadingState(); | |
| 1047 } | |
| 1048 | |
| 1032 GetRenderFrameProxyHost(instance)->set_render_frame_proxy_created(false); | 1049 GetRenderFrameProxyHost(instance)->set_render_frame_proxy_created(false); |
| 1033 } | 1050 } |
| 1034 | 1051 |
| 1035 void RenderFrameHostManager::ActiveFrameCountIsZero( | 1052 void RenderFrameHostManager::ActiveFrameCountIsZero( |
| 1036 SiteInstanceImpl* site_instance) { | 1053 SiteInstanceImpl* site_instance) { |
| 1037 // |site_instance| no longer contains any active RenderFrameHosts, so we don't | 1054 // |site_instance| no longer contains any active RenderFrameHosts, so we don't |
| 1038 // need to maintain a proxy there anymore. | 1055 // need to maintain a proxy there anymore. |
| 1039 RenderFrameProxyHost* proxy = GetRenderFrameProxyHost(site_instance); | 1056 RenderFrameProxyHost* proxy = GetRenderFrameProxyHost(site_instance); |
| 1040 CHECK(proxy); | 1057 CHECK(proxy); |
| 1041 | 1058 |
| (...skipping 973 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2015 if (!delegate_->IsHidden() && new_rfh_has_view) { | 2032 if (!delegate_->IsHidden() && new_rfh_has_view) { |
| 2016 // In most cases, we need to show the new view. | 2033 // In most cases, we need to show the new view. |
| 2017 render_frame_host_->GetView()->Show(); | 2034 render_frame_host_->GetView()->Show(); |
| 2018 } | 2035 } |
| 2019 if (!new_rfh_has_view) { | 2036 if (!new_rfh_has_view) { |
| 2020 // If the view is gone, then this RenderViewHost died while it was hidden. | 2037 // If the view is gone, then this RenderViewHost died while it was hidden. |
| 2021 // We ignored the RenderProcessGone call at the time, so we should send it | 2038 // We ignored the RenderProcessGone call at the time, so we should send it |
| 2022 // now to make sure the sad tab shows up, etc. | 2039 // now to make sure the sad tab shows up, etc. |
| 2023 DCHECK(!render_frame_host_->IsRenderFrameLive()); | 2040 DCHECK(!render_frame_host_->IsRenderFrameLive()); |
| 2024 DCHECK(!render_frame_host_->render_view_host()->IsRenderViewLive()); | 2041 DCHECK(!render_frame_host_->render_view_host()->IsRenderViewLive()); |
| 2042 render_frame_host_->ResetLoadingState(); | |
| 2025 delegate_->RenderProcessGoneFromRenderManager( | 2043 delegate_->RenderProcessGoneFromRenderManager( |
| 2026 render_frame_host_->render_view_host()); | 2044 render_frame_host_->render_view_host()); |
| 2027 } | 2045 } |
| 2028 | 2046 |
| 2029 // For top-level frames, also hide the old RenderViewHost's view. | 2047 // For top-level frames, also hide the old RenderViewHost's view. |
| 2030 // TODO(creis): As long as show/hide are on RVH, we don't want to hide on | 2048 // TODO(creis): As long as show/hide are on RVH, we don't want to hide on |
| 2031 // subframe navigations or we will interfere with the top-level frame. | 2049 // subframe navigations or we will interfere with the top-level frame. |
| 2032 if (is_main_frame && | 2050 if (is_main_frame && |
| 2033 old_render_frame_host->render_view_host()->GetWidget()->GetView()) { | 2051 old_render_frame_host->render_view_host()->GetWidget()->GetView()) { |
| 2034 old_render_frame_host->render_view_host()->GetWidget()->GetView()->Hide(); | 2052 old_render_frame_host->render_view_host()->GetWidget()->GetView()->Hide(); |
| (...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2266 render_frame_host_->pending_web_ui()->RenderViewCreated( | 2284 render_frame_host_->pending_web_ui()->RenderViewCreated( |
| 2267 render_frame_host_->render_view_host()); | 2285 render_frame_host_->render_view_host()); |
| 2268 } | 2286 } |
| 2269 } | 2287 } |
| 2270 } | 2288 } |
| 2271 | 2289 |
| 2272 void RenderFrameHostManager::CancelPending() { | 2290 void RenderFrameHostManager::CancelPending() { |
| 2273 TRACE_EVENT1("navigation", "RenderFrameHostManager::CancelPending", | 2291 TRACE_EVENT1("navigation", "RenderFrameHostManager::CancelPending", |
| 2274 "FrameTreeNode id", frame_tree_node_->frame_tree_node_id()); | 2292 "FrameTreeNode id", frame_tree_node_->frame_tree_node_id()); |
| 2275 render_frame_host_->ClearPendingWebUI(); | 2293 render_frame_host_->ClearPendingWebUI(); |
| 2294 | |
| 2295 bool pending_was_loading = pending_render_frame_host_->is_loading(); | |
| 2276 DiscardUnusedFrame(UnsetPendingRenderFrameHost()); | 2296 DiscardUnusedFrame(UnsetPendingRenderFrameHost()); |
| 2297 if (pending_was_loading) | |
| 2298 frame_tree_node_->DidStopLoading(); | |
| 2277 } | 2299 } |
| 2278 | 2300 |
| 2279 scoped_ptr<RenderFrameHostImpl> | 2301 scoped_ptr<RenderFrameHostImpl> |
| 2280 RenderFrameHostManager::UnsetPendingRenderFrameHost() { | 2302 RenderFrameHostManager::UnsetPendingRenderFrameHost() { |
| 2281 scoped_ptr<RenderFrameHostImpl> pending_render_frame_host = | 2303 scoped_ptr<RenderFrameHostImpl> pending_render_frame_host = |
| 2282 std::move(pending_render_frame_host_); | 2304 std::move(pending_render_frame_host_); |
| 2283 | 2305 |
| 2284 RenderFrameDevToolsAgentHost::OnCancelPendingNavigation( | 2306 RenderFrameDevToolsAgentHost::OnCancelPendingNavigation( |
| 2285 pending_render_frame_host.get(), | 2307 pending_render_frame_host.get(), |
| 2286 render_frame_host_.get()); | 2308 render_frame_host_.get()); |
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2473 int RenderFrameHostManager::GetOpenerRoutingID(SiteInstance* instance) { | 2495 int RenderFrameHostManager::GetOpenerRoutingID(SiteInstance* instance) { |
| 2474 if (!frame_tree_node_->opener()) | 2496 if (!frame_tree_node_->opener()) |
| 2475 return MSG_ROUTING_NONE; | 2497 return MSG_ROUTING_NONE; |
| 2476 | 2498 |
| 2477 return frame_tree_node_->opener() | 2499 return frame_tree_node_->opener() |
| 2478 ->render_manager() | 2500 ->render_manager() |
| 2479 ->GetRoutingIdForSiteInstance(instance); | 2501 ->GetRoutingIdForSiteInstance(instance); |
| 2480 } | 2502 } |
| 2481 | 2503 |
| 2482 } // namespace content | 2504 } // namespace content |
| OLD | NEW |