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 <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 |