| 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 <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 1988 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1999 } | 1999 } |
| 2000 | 2000 |
| 2001 void RenderFrameHostImpl::NavigateToInterstitialURL(const GURL& data_url) { | 2001 void RenderFrameHostImpl::NavigateToInterstitialURL(const GURL& data_url) { |
| 2002 DCHECK(data_url.SchemeIs(url::kDataScheme)); | 2002 DCHECK(data_url.SchemeIs(url::kDataScheme)); |
| 2003 CommonNavigationParams common_params( | 2003 CommonNavigationParams common_params( |
| 2004 data_url, Referrer(), ui::PAGE_TRANSITION_LINK, | 2004 data_url, Referrer(), ui::PAGE_TRANSITION_LINK, |
| 2005 FrameMsg_Navigate_Type::NORMAL, false, false, base::TimeTicks::Now(), | 2005 FrameMsg_Navigate_Type::NORMAL, false, false, base::TimeTicks::Now(), |
| 2006 FrameMsg_UILoadMetricsReportType::NO_REPORT, GURL(), GURL(), LOFI_OFF, | 2006 FrameMsg_UILoadMetricsReportType::NO_REPORT, GURL(), GURL(), LOFI_OFF, |
| 2007 base::TimeTicks::Now(), "GET"); | 2007 base::TimeTicks::Now(), "GET"); |
| 2008 if (IsBrowserSideNavigationEnabled()) { | 2008 if (IsBrowserSideNavigationEnabled()) { |
| 2009 CommitNavigation(nullptr, nullptr, common_params, | 2009 CommitNavigation(nullptr, nullptr, common_params, RequestNavigationParams(), |
| 2010 RequestNavigationParams()); | 2010 false); |
| 2011 } else { | 2011 } else { |
| 2012 Navigate(common_params, StartNavigationParams(), RequestNavigationParams()); | 2012 Navigate(common_params, StartNavigationParams(), RequestNavigationParams()); |
| 2013 } | 2013 } |
| 2014 } | 2014 } |
| 2015 | 2015 |
| 2016 void RenderFrameHostImpl::OpenURL(const FrameHostMsg_OpenURL_Params& params, | 2016 void RenderFrameHostImpl::OpenURL(const FrameHostMsg_OpenURL_Params& params, |
| 2017 SiteInstance* source_site_instance) { | 2017 SiteInstance* source_site_instance) { |
| 2018 GURL validated_url(params.url); | 2018 GURL validated_url(params.url); |
| 2019 GetProcess()->FilterURL(false, &validated_url); | 2019 GetProcess()->FilterURL(false, &validated_url); |
| 2020 | 2020 |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2130 render_view_host_->GetWidget()->delegate()->RendererUnresponsive( | 2130 render_view_host_->GetWidget()->delegate()->RendererUnresponsive( |
| 2131 render_view_host_->GetWidget()); | 2131 render_view_host_->GetWidget()); |
| 2132 } | 2132 } |
| 2133 } | 2133 } |
| 2134 | 2134 |
| 2135 // PlzNavigate | 2135 // PlzNavigate |
| 2136 void RenderFrameHostImpl::CommitNavigation( | 2136 void RenderFrameHostImpl::CommitNavigation( |
| 2137 ResourceResponse* response, | 2137 ResourceResponse* response, |
| 2138 scoped_ptr<StreamHandle> body, | 2138 scoped_ptr<StreamHandle> body, |
| 2139 const CommonNavigationParams& common_params, | 2139 const CommonNavigationParams& common_params, |
| 2140 const RequestNavigationParams& request_params) { | 2140 const RequestNavigationParams& request_params, |
| 2141 bool is_view_source) { |
| 2141 DCHECK((response && body.get()) || | 2142 DCHECK((response && body.get()) || |
| 2142 !ShouldMakeNetworkRequestForURL(common_params.url)); | 2143 !ShouldMakeNetworkRequestForURL(common_params.url)); |
| 2143 UpdatePermissionsForNavigation(common_params, request_params); | 2144 UpdatePermissionsForNavigation(common_params, request_params); |
| 2144 | 2145 |
| 2145 // Get back to a clean state, in case we start a new navigation without | 2146 // Get back to a clean state, in case we start a new navigation without |
| 2146 // completing a RFH swap or unload handler. | 2147 // completing a RFH swap or unload handler. |
| 2147 SetState(RenderFrameHostImpl::STATE_DEFAULT); | 2148 SetState(RenderFrameHostImpl::STATE_DEFAULT); |
| 2148 | 2149 |
| 2150 // The renderer can exit view source mode when any error or cancellation |
| 2151 // happen. When reusing the same renderer, overwrite to recover the mode. |
| 2152 if (is_view_source && |
| 2153 this == frame_tree_node_->render_manager()->current_frame_host()) { |
| 2154 DCHECK(!GetParent()); |
| 2155 render_view_host()->Send(new FrameMsg_EnableViewSourceMode(routing_id_)); |
| 2156 } |
| 2157 |
| 2149 const GURL body_url = body.get() ? body->GetURL() : GURL(); | 2158 const GURL body_url = body.get() ? body->GetURL() : GURL(); |
| 2150 const ResourceResponseHead head = response ? | 2159 const ResourceResponseHead head = response ? |
| 2151 response->head : ResourceResponseHead(); | 2160 response->head : ResourceResponseHead(); |
| 2152 Send(new FrameMsg_CommitNavigation(routing_id_, head, body_url, common_params, | 2161 Send(new FrameMsg_CommitNavigation(routing_id_, head, body_url, common_params, |
| 2153 request_params)); | 2162 request_params)); |
| 2154 | 2163 |
| 2155 // TODO(clamy): Release the stream handle once the renderer has finished | 2164 // TODO(clamy): Release the stream handle once the renderer has finished |
| 2156 // reading it. | 2165 // reading it. |
| 2157 stream_handle_ = std::move(body); | 2166 stream_handle_ = std::move(body); |
| 2158 | 2167 |
| 2159 // When navigating to a Javascript url, no commit is expected from the | 2168 // When navigating to a Javascript url, no commit is expected from the |
| 2160 // RenderFrameHost, nor should the throbber start. The NavigationRequest is | 2169 // RenderFrameHost, nor should the throbber start. The NavigationRequest is |
| 2161 // also not stored in the FrameTreeNode. Therefore do not reset it, as this | 2170 // also not stored in the FrameTreeNode. Therefore do not reset it, as this |
| 2162 // could cancel an existing pending navigation. | 2171 // could cancel an existing pending navigation. |
| 2163 if (!common_params.url.SchemeIs(url::kJavaScriptScheme)) { | 2172 if (!common_params.url.SchemeIs(url::kJavaScriptScheme)) { |
| 2164 pending_commit_ = true; | 2173 pending_commit_ = true; |
| 2165 is_loading_ = true; | 2174 is_loading_ = true; |
| 2166 frame_tree_node_->ResetNavigationRequest(true); | |
| 2167 } | 2175 } |
| 2168 } | 2176 } |
| 2169 | 2177 |
| 2170 void RenderFrameHostImpl::FailedNavigation( | 2178 void RenderFrameHostImpl::FailedNavigation( |
| 2171 const CommonNavigationParams& common_params, | 2179 const CommonNavigationParams& common_params, |
| 2172 const RequestNavigationParams& request_params, | 2180 const RequestNavigationParams& request_params, |
| 2173 bool has_stale_copy_in_cache, | 2181 bool has_stale_copy_in_cache, |
| 2174 int error_code) { | 2182 int error_code) { |
| 2175 // Get back to a clean state, in case a new navigation started without | 2183 // Get back to a clean state, in case a new navigation started without |
| 2176 // completing a RFH swap or unload handler. | 2184 // completing a RFH swap or unload handler. |
| (...skipping 505 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2682 FrameTreeNode* focused_frame_tree_node = frame_tree_->GetFocusedFrame(); | 2690 FrameTreeNode* focused_frame_tree_node = frame_tree_->GetFocusedFrame(); |
| 2683 if (!focused_frame_tree_node) | 2691 if (!focused_frame_tree_node) |
| 2684 return; | 2692 return; |
| 2685 RenderFrameHostImpl* focused_frame = | 2693 RenderFrameHostImpl* focused_frame = |
| 2686 focused_frame_tree_node->current_frame_host(); | 2694 focused_frame_tree_node->current_frame_host(); |
| 2687 DCHECK(focused_frame); | 2695 DCHECK(focused_frame); |
| 2688 dst->focused_tree_id = focused_frame->GetAXTreeID(); | 2696 dst->focused_tree_id = focused_frame->GetAXTreeID(); |
| 2689 } | 2697 } |
| 2690 | 2698 |
| 2691 } // namespace content | 2699 } // namespace content |
| OLD | NEW |