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 <algorithm> | 7 #include <algorithm> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 895 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
906 | 906 |
907 // When using swapped out RenderFrameHosts, it is possible for the pending | 907 // When using swapped out RenderFrameHosts, it is possible for the pending |
908 // RenderFrameHost to be an existing one in swapped out state. Since it | 908 // RenderFrameHost to be an existing one in swapped out state. Since it |
909 // has been used to start a navigation, it could have committed a | 909 // has been used to start a navigation, it could have committed a |
910 // document. Check if |render_frame_host| is already swapped out, to avoid | 910 // document. Check if |render_frame_host| is already swapped out, to avoid |
911 // swapping it out again. | 911 // swapping it out again. |
912 if (!render_frame_host->is_swapped_out()) | 912 if (!render_frame_host->is_swapped_out()) |
913 render_frame_host->SwapOut(proxy, false); | 913 render_frame_host->SwapOut(proxy, false); |
914 | 914 |
915 proxy->TakeFrameHostOwnership(render_frame_host.Pass()); | 915 proxy->TakeFrameHostOwnership(render_frame_host.Pass()); |
916 } else { | |
917 // If |render_frame_host| is the RenderViewHost's main frame, it must | |
918 // be cleared, as it will be deleted at the end of this method. | |
Charlie Reis
2015/10/16 17:02:23
s/, it must be cleared/, then the RenderViewHost m
| |
919 if (frame_tree_node_->IsMainFrame() && | |
920 render_frame_host->render_view_host()->GetMainFrame() == | |
921 render_frame_host.get()) { | |
922 render_frame_host->render_view_host()->set_main_frame_routing_id( | |
923 MSG_ROUTING_NONE); | |
924 } | |
916 } | 925 } |
917 } | 926 } |
918 | 927 |
919 if (render_frame_host) { | 928 if (render_frame_host) { |
920 // We won't be coming back, so delete this one. | 929 // We won't be coming back, so delete this one. |
921 ShutdownProxiesIfLastActiveFrameInSiteInstance(render_frame_host.get()); | 930 ShutdownProxiesIfLastActiveFrameInSiteInstance(render_frame_host.get()); |
922 render_frame_host.reset(); | 931 render_frame_host.reset(); |
923 } | 932 } |
924 } | 933 } |
925 | 934 |
(...skipping 897 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1823 } else { | 1832 } else { |
1824 proxy = new RenderFrameProxyHost( | 1833 proxy = new RenderFrameProxyHost( |
1825 new_render_frame_host->GetSiteInstance(), | 1834 new_render_frame_host->GetSiteInstance(), |
1826 new_render_frame_host->render_view_host(), frame_tree_node_); | 1835 new_render_frame_host->render_view_host(), frame_tree_node_); |
1827 proxy_hosts_->Add(instance->GetId(), make_scoped_ptr(proxy)); | 1836 proxy_hosts_->Add(instance->GetId(), make_scoped_ptr(proxy)); |
1828 proxy_routing_id = proxy->GetRoutingID(); | 1837 proxy_routing_id = proxy->GetRoutingID(); |
1829 proxy->TakeFrameHostOwnership(new_render_frame_host.Pass()); | 1838 proxy->TakeFrameHostOwnership(new_render_frame_host.Pass()); |
1830 } | 1839 } |
1831 | 1840 |
1832 if (frame_tree_node_->IsMainFrame()) { | 1841 if (frame_tree_node_->IsMainFrame()) { |
1842 if (!render_view_host->GetMainFrame()) { | |
Charlie Reis
2015/10/16 17:02:23
What would happen if it had a main frame routing I
| |
1843 CHECK(!render_view_host->is_active()); | |
1844 render_view_host->set_main_frame_routing_id( | |
1845 new_render_frame_host->GetRoutingID()); | |
1846 } | |
1847 | |
1833 success = InitRenderView(render_view_host, proxy_routing_id); | 1848 success = InitRenderView(render_view_host, proxy_routing_id); |
1834 | 1849 |
1835 // If we are reusing the RenderViewHost and it doesn't already have a | 1850 // If we are reusing the RenderViewHost and it doesn't already have a |
1836 // RenderWidgetHostView, we need to create one if this is the main frame. | 1851 // RenderWidgetHostView, we need to create one if this is the main frame. |
1837 if (!swapped_out && !render_view_host->GetView()) | 1852 if (!swapped_out && !render_view_host->GetView()) |
1838 delegate_->CreateRenderWidgetHostViewForRenderManager(render_view_host); | 1853 delegate_->CreateRenderWidgetHostViewForRenderManager(render_view_host); |
1839 } else { | 1854 } else { |
1840 DCHECK(render_view_host->IsRenderViewLive()); | 1855 DCHECK(render_view_host->IsRenderViewLive()); |
1841 } | 1856 } |
1842 | 1857 |
(...skipping 798 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2641 int RenderFrameHostManager::GetOpenerRoutingID(SiteInstance* instance) { | 2656 int RenderFrameHostManager::GetOpenerRoutingID(SiteInstance* instance) { |
2642 if (!frame_tree_node_->opener()) | 2657 if (!frame_tree_node_->opener()) |
2643 return MSG_ROUTING_NONE; | 2658 return MSG_ROUTING_NONE; |
2644 | 2659 |
2645 return frame_tree_node_->opener() | 2660 return frame_tree_node_->opener() |
2646 ->render_manager() | 2661 ->render_manager() |
2647 ->GetRoutingIdForSiteInstance(instance); | 2662 ->GetRoutingIdForSiteInstance(instance); |
2648 } | 2663 } |
2649 | 2664 |
2650 } // namespace content | 2665 } // namespace content |
OLD | NEW |