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 |