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 614 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
625 return; | 625 return; |
626 | 626 |
627 // Create a replacement proxy for the old RenderFrameHost. (There should not | 627 // Create a replacement proxy for the old RenderFrameHost. (There should not |
628 // be one yet.) This is done even if there are no active frames besides this | 628 // be one yet.) This is done even if there are no active frames besides this |
629 // one to simplify cleanup logic on the renderer side (see | 629 // one to simplify cleanup logic on the renderer side (see |
630 // https://crbug.com/568836 for motivation). | 630 // https://crbug.com/568836 for motivation). |
631 RenderFrameProxyHost* proxy = | 631 RenderFrameProxyHost* proxy = |
632 CreateRenderFrameProxyHost(old_render_frame_host->GetSiteInstance(), | 632 CreateRenderFrameProxyHost(old_render_frame_host->GetSiteInstance(), |
633 old_render_frame_host->render_view_host()); | 633 old_render_frame_host->render_view_host()); |
634 | 634 |
| 635 // Reset any NavigationHandle in the RenderFrameHost. This will prevent any |
| 636 // ongoing navigation from attempting to transfer. |
| 637 old_render_frame_host->SetNavigationHandle(nullptr); |
| 638 |
635 // Tell the old RenderFrameHost to swap out and be replaced by the proxy. | 639 // Tell the old RenderFrameHost to swap out and be replaced by the proxy. |
636 old_render_frame_host->SwapOut(proxy, true); | 640 old_render_frame_host->SwapOut(proxy, true); |
637 | 641 |
638 // SwapOut creates a RenderFrameProxy, so set the proxy to be initialized. | 642 // SwapOut creates a RenderFrameProxy, so set the proxy to be initialized. |
639 proxy->set_render_frame_proxy_created(true); | 643 proxy->set_render_frame_proxy_created(true); |
640 | 644 |
641 // |old_render_frame_host| will be deleted when its SwapOut ACK is received, | 645 // |old_render_frame_host| will be deleted when its SwapOut ACK is received, |
642 // or when the timer times out, or when the RFHM itself is deleted (whichever | 646 // or when the timer times out, or when the RFHM itself is deleted (whichever |
643 // comes first). | 647 // comes first). |
644 pending_delete_hosts_.push_back(std::move(old_render_frame_host)); | 648 pending_delete_hosts_.push_back(std::move(old_render_frame_host)); |
(...skipping 2023 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2668 resolved_url)) { | 2672 resolved_url)) { |
2669 DCHECK(!dest_instance || | 2673 DCHECK(!dest_instance || |
2670 dest_instance == render_frame_host_->GetSiteInstance()); | 2674 dest_instance == render_frame_host_->GetSiteInstance()); |
2671 return false; | 2675 return false; |
2672 } | 2676 } |
2673 | 2677 |
2674 return true; | 2678 return true; |
2675 } | 2679 } |
2676 | 2680 |
2677 } // namespace content | 2681 } // namespace content |
OLD | NEW |