| 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_impl.h" | 5 #include "content/browser/frame_host/render_frame_host_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 766 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 777 IPC_MESSAGE_HANDLER(FrameHostMsg_UpdateToUniqueOrigin, | 777 IPC_MESSAGE_HANDLER(FrameHostMsg_UpdateToUniqueOrigin, |
| 778 OnUpdateToUniqueOrigin) | 778 OnUpdateToUniqueOrigin) |
| 779 IPC_MESSAGE_HANDLER(FrameHostMsg_DidChangeSandboxFlags, | 779 IPC_MESSAGE_HANDLER(FrameHostMsg_DidChangeSandboxFlags, |
| 780 OnDidChangeSandboxFlags) | 780 OnDidChangeSandboxFlags) |
| 781 IPC_MESSAGE_HANDLER(FrameHostMsg_DidChangeFrameOwnerProperties, | 781 IPC_MESSAGE_HANDLER(FrameHostMsg_DidChangeFrameOwnerProperties, |
| 782 OnDidChangeFrameOwnerProperties) | 782 OnDidChangeFrameOwnerProperties) |
| 783 IPC_MESSAGE_HANDLER(FrameHostMsg_UpdateTitle, OnUpdateTitle) | 783 IPC_MESSAGE_HANDLER(FrameHostMsg_UpdateTitle, OnUpdateTitle) |
| 784 IPC_MESSAGE_HANDLER(FrameHostMsg_UpdateEncoding, OnUpdateEncoding) | 784 IPC_MESSAGE_HANDLER(FrameHostMsg_UpdateEncoding, OnUpdateEncoding) |
| 785 IPC_MESSAGE_HANDLER(FrameHostMsg_BeginNavigation, | 785 IPC_MESSAGE_HANDLER(FrameHostMsg_BeginNavigation, |
| 786 OnBeginNavigation) | 786 OnBeginNavigation) |
| 787 IPC_MESSAGE_HANDLER(FrameHostMsg_AbortNavigation, OnAbortNavigation) |
| 787 IPC_MESSAGE_HANDLER(FrameHostMsg_DispatchLoad, OnDispatchLoad) | 788 IPC_MESSAGE_HANDLER(FrameHostMsg_DispatchLoad, OnDispatchLoad) |
| 788 IPC_MESSAGE_HANDLER(FrameHostMsg_TextSurroundingSelectionResponse, | 789 IPC_MESSAGE_HANDLER(FrameHostMsg_TextSurroundingSelectionResponse, |
| 789 OnTextSurroundingSelectionResponse) | 790 OnTextSurroundingSelectionResponse) |
| 790 IPC_MESSAGE_HANDLER(AccessibilityHostMsg_Events, OnAccessibilityEvents) | 791 IPC_MESSAGE_HANDLER(AccessibilityHostMsg_Events, OnAccessibilityEvents) |
| 791 IPC_MESSAGE_HANDLER(AccessibilityHostMsg_LocationChanges, | 792 IPC_MESSAGE_HANDLER(AccessibilityHostMsg_LocationChanges, |
| 792 OnAccessibilityLocationChanges) | 793 OnAccessibilityLocationChanges) |
| 793 IPC_MESSAGE_HANDLER(AccessibilityHostMsg_FindInPageResult, | 794 IPC_MESSAGE_HANDLER(AccessibilityHostMsg_FindInPageResult, |
| 794 OnAccessibilityFindInPageResult) | 795 OnAccessibilityFindInPageResult) |
| 795 IPC_MESSAGE_HANDLER(AccessibilityHostMsg_ChildFrameHitTestResult, | 796 IPC_MESSAGE_HANDLER(AccessibilityHostMsg_ChildFrameHitTestResult, |
| 796 OnAccessibilityChildFrameHitTestResult) | 797 OnAccessibilityChildFrameHitTestResult) |
| (...skipping 1240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2037 if (waiting_for_init_) { | 2038 if (waiting_for_init_) { |
| 2038 pendinging_navigate_ = base::MakeUnique<PendingNavigation>( | 2039 pendinging_navigate_ = base::MakeUnique<PendingNavigation>( |
| 2039 validated_params, validated_begin_params); | 2040 validated_params, validated_begin_params); |
| 2040 return; | 2041 return; |
| 2041 } | 2042 } |
| 2042 | 2043 |
| 2043 frame_tree_node()->navigator()->OnBeginNavigation( | 2044 frame_tree_node()->navigator()->OnBeginNavigation( |
| 2044 frame_tree_node(), validated_params, validated_begin_params); | 2045 frame_tree_node(), validated_params, validated_begin_params); |
| 2045 } | 2046 } |
| 2046 | 2047 |
| 2048 void RenderFrameHostImpl::OnAbortNavigation() { |
| 2049 if (!IsBrowserSideNavigationEnabled()) { |
| 2050 NOTREACHED(); |
| 2051 return; |
| 2052 } |
| 2053 if (!is_active()) |
| 2054 return; |
| 2055 frame_tree_node()->navigator()->OnAbortNavigation(frame_tree_node()); |
| 2056 } |
| 2057 |
| 2047 void RenderFrameHostImpl::OnDispatchLoad() { | 2058 void RenderFrameHostImpl::OnDispatchLoad() { |
| 2048 CHECK(SiteIsolationPolicy::AreCrossProcessFramesPossible()); | 2059 CHECK(SiteIsolationPolicy::AreCrossProcessFramesPossible()); |
| 2049 | 2060 |
| 2050 // Don't forward the load event if this RFH is pending deletion. This can | 2061 // Don't forward the load event if this RFH is pending deletion. This can |
| 2051 // happen in a race where this RenderFrameHost finishes loading just after | 2062 // happen in a race where this RenderFrameHost finishes loading just after |
| 2052 // the frame navigates away. See https://crbug.com/626802. | 2063 // the frame navigates away. See https://crbug.com/626802. |
| 2053 if (!is_active()) | 2064 if (!is_active()) |
| 2054 return; | 2065 return; |
| 2055 | 2066 |
| 2056 // Only frames with an out-of-process parent frame should be sending this | 2067 // Only frames with an out-of-process parent frame should be sending this |
| (...skipping 577 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2634 Send(new FrameMsg_Stop(routing_id_)); | 2645 Send(new FrameMsg_Stop(routing_id_)); |
| 2635 } | 2646 } |
| 2636 | 2647 |
| 2637 void RenderFrameHostImpl::DispatchBeforeUnload(bool for_navigation, | 2648 void RenderFrameHostImpl::DispatchBeforeUnload(bool for_navigation, |
| 2638 bool is_reload) { | 2649 bool is_reload) { |
| 2639 DCHECK(for_navigation || !is_reload); | 2650 DCHECK(for_navigation || !is_reload); |
| 2640 | 2651 |
| 2641 if (IsBrowserSideNavigationEnabled() && !for_navigation) { | 2652 if (IsBrowserSideNavigationEnabled() && !for_navigation) { |
| 2642 // Cancel any pending navigations, to avoid their navigation commit/fail | 2653 // Cancel any pending navigations, to avoid their navigation commit/fail |
| 2643 // event from wiping out the is_waiting_for_beforeunload_ack_ state. | 2654 // event from wiping out the is_waiting_for_beforeunload_ack_ state. |
| 2644 frame_tree_node_->ResetNavigationRequest(false); | 2655 frame_tree_node_->ResetNavigationRequest(false, true); |
| 2645 } | 2656 } |
| 2646 | 2657 |
| 2647 // TODO(creis): Support beforeunload on subframes. For now just pretend that | 2658 // TODO(creis): Support beforeunload on subframes. For now just pretend that |
| 2648 // the handler ran and allowed the navigation to proceed. | 2659 // the handler ran and allowed the navigation to proceed. |
| 2649 if (!ShouldDispatchBeforeUnload()) { | 2660 if (!ShouldDispatchBeforeUnload()) { |
| 2650 DCHECK(!(IsBrowserSideNavigationEnabled() && for_navigation)); | 2661 DCHECK(!(IsBrowserSideNavigationEnabled() && for_navigation)); |
| 2651 frame_tree_node_->render_manager()->OnBeforeUnloadACK( | 2662 frame_tree_node_->render_manager()->OnBeforeUnloadACK( |
| 2652 for_navigation, true, base::TimeTicks::Now()); | 2663 for_navigation, true, base::TimeTicks::Now()); |
| 2653 return; | 2664 return; |
| 2654 } | 2665 } |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2845 ResetWaitingState(); | 2856 ResetWaitingState(); |
| 2846 | 2857 |
| 2847 Send(new FrameMsg_FailedNavigation(routing_id_, common_params, request_params, | 2858 Send(new FrameMsg_FailedNavigation(routing_id_, common_params, request_params, |
| 2848 has_stale_copy_in_cache, error_code)); | 2859 has_stale_copy_in_cache, error_code)); |
| 2849 | 2860 |
| 2850 RenderFrameDevToolsAgentHost::OnFailedNavigation( | 2861 RenderFrameDevToolsAgentHost::OnFailedNavigation( |
| 2851 this, common_params, begin_params, static_cast<net::Error>(error_code)); | 2862 this, common_params, begin_params, static_cast<net::Error>(error_code)); |
| 2852 | 2863 |
| 2853 // An error page is expected to commit, hence why is_loading_ is set to true. | 2864 // An error page is expected to commit, hence why is_loading_ is set to true. |
| 2854 is_loading_ = true; | 2865 is_loading_ = true; |
| 2855 frame_tree_node_->ResetNavigationRequest(true); | 2866 frame_tree_node_->ResetNavigationRequest(true, true); |
| 2856 } | 2867 } |
| 2857 | 2868 |
| 2858 void RenderFrameHostImpl::SetUpMojoIfNeeded() { | 2869 void RenderFrameHostImpl::SetUpMojoIfNeeded() { |
| 2859 if (interface_registry_.get()) | 2870 if (interface_registry_.get()) |
| 2860 return; | 2871 return; |
| 2861 | 2872 |
| 2862 interface_registry_ = base::MakeUnique<service_manager::InterfaceRegistry>( | 2873 interface_registry_ = base::MakeUnique<service_manager::InterfaceRegistry>( |
| 2863 mojom::kNavigation_FrameSpec); | 2874 mojom::kNavigation_FrameSpec); |
| 2864 | 2875 |
| 2865 ServiceManagerConnection* service_manager_connection = | 2876 ServiceManagerConnection* service_manager_connection = |
| (...skipping 756 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3622 service_manager::mojom::InterfaceProviderPtr provider; | 3633 service_manager::mojom::InterfaceProviderPtr provider; |
| 3623 BindInterfaceRegistryForRenderFrameHost(mojo::MakeRequest(&provider), this); | 3634 BindInterfaceRegistryForRenderFrameHost(mojo::MakeRequest(&provider), this); |
| 3624 java_interfaces_.reset(new service_manager::InterfaceProvider); | 3635 java_interfaces_.reset(new service_manager::InterfaceProvider); |
| 3625 java_interfaces_->Bind(std::move(provider)); | 3636 java_interfaces_->Bind(std::move(provider)); |
| 3626 } | 3637 } |
| 3627 return java_interfaces_.get(); | 3638 return java_interfaces_.get(); |
| 3628 } | 3639 } |
| 3629 #endif | 3640 #endif |
| 3630 | 3641 |
| 3631 } // namespace content | 3642 } // namespace content |
| OLD | NEW |