Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(254)

Side by Side Diff: content/browser/frame_host/navigation_request.cc

Issue 2653953005: PlzNavigate: transmit redirect info to the renderer side (Closed)
Patch Set: Rebase + addressed comments Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/navigation_request.h" 5 #include "content/browser/frame_host/navigation_request.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "content/browser/appcache/appcache_navigation_handle.h" 10 #include "content/browser/appcache/appcache_navigation_handle.h"
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 base::Optional<url::Origin> initiator = 199 base::Optional<url::Origin> initiator =
200 frame_tree_node->IsMainFrame() 200 frame_tree_node->IsMainFrame()
201 ? base::Optional<url::Origin>() 201 ? base::Optional<url::Origin>()
202 : base::Optional<url::Origin>( 202 : base::Optional<url::Origin>(
203 frame_tree_node->frame_tree()->root()->current_origin()); 203 frame_tree_node->frame_tree()->root()->current_origin());
204 204
205 // While the navigation was started via the LoadURL path it may have come from 205 // While the navigation was started via the LoadURL path it may have come from
206 // the renderer in the first place as part of OpenURL. 206 // the renderer in the first place as part of OpenURL.
207 bool browser_initiated = !entry.is_renderer_initiated(); 207 bool browser_initiated = !entry.is_renderer_initiated();
208 208
209 CommonNavigationParams common_params = entry.ConstructCommonNavigationParams(
210 frame_entry, request_body, dest_url, dest_referrer, navigation_type,
211 previews_state, navigation_start);
212
209 std::unique_ptr<NavigationRequest> navigation_request(new NavigationRequest( 213 std::unique_ptr<NavigationRequest> navigation_request(new NavigationRequest(
210 frame_tree_node, entry.ConstructCommonNavigationParams( 214 frame_tree_node, common_params,
211 frame_entry, request_body, dest_url, dest_referrer,
212 navigation_type, previews_state, navigation_start),
213 BeginNavigationParams(entry.extra_headers(), net::LOAD_NORMAL, 215 BeginNavigationParams(entry.extra_headers(), net::LOAD_NORMAL,
214 false, // has_user_gestures 216 false, // has_user_gestures
215 false, // skip_service_worker 217 false, // skip_service_worker
216 REQUEST_CONTEXT_TYPE_LOCATION, 218 REQUEST_CONTEXT_TYPE_LOCATION,
217 blink::WebMixedContentContextType::Blockable, 219 blink::WebMixedContentContextType::Blockable,
218 initiator), 220 initiator),
219 entry.ConstructRequestNavigationParams( 221 entry.ConstructRequestNavigationParams(
220 frame_entry, is_history_navigation_in_new_child, 222 frame_entry, common_params.url, common_params.method,
223 is_history_navigation_in_new_child,
221 entry.GetSubframeUniqueNames(frame_tree_node), 224 entry.GetSubframeUniqueNames(frame_tree_node),
222 frame_tree_node->has_committed_real_load(), 225 frame_tree_node->has_committed_real_load(),
223 controller->GetPendingEntryIndex() == -1, 226 controller->GetPendingEntryIndex() == -1,
224 controller->GetIndexOfEntry(&entry), 227 controller->GetIndexOfEntry(&entry),
225 controller->GetLastCommittedEntryIndex(), 228 controller->GetLastCommittedEntryIndex(),
226 controller->GetEntryCount()), 229 controller->GetEntryCount()),
227 browser_initiated, 230 browser_initiated,
228 true, // may_transfer 231 true, // may_transfer
229 &frame_entry, &entry)); 232 &frame_entry, &entry));
230 return navigation_request; 233 return navigation_request;
(...skipping 16 matching lines...) Expand all
247 DCHECK(FrameMsg_Navigate_Type::IsReload(common_params.navigation_type) || 250 DCHECK(FrameMsg_Navigate_Type::IsReload(common_params.navigation_type) ||
248 common_params.navigation_type == 251 common_params.navigation_type ==
249 FrameMsg_Navigate_Type::DIFFERENT_DOCUMENT); 252 FrameMsg_Navigate_Type::DIFFERENT_DOCUMENT);
250 253
251 // TODO(clamy): See how we should handle override of the user agent when the 254 // TODO(clamy): See how we should handle override of the user agent when the
252 // navigation may start in a renderer and commit in another one. 255 // navigation may start in a renderer and commit in another one.
253 // TODO(clamy): See if the navigation start time should be measured in the 256 // TODO(clamy): See if the navigation start time should be measured in the
254 // renderer and sent to the browser instead of being measured here. 257 // renderer and sent to the browser instead of being measured here.
255 // TODO(clamy): The pending history list offset should be properly set. 258 // TODO(clamy): The pending history list offset should be properly set.
256 RequestNavigationParams request_params( 259 RequestNavigationParams request_params(
257 false, // is_overriding_user_agent 260 false, // is_overriding_user_agent
258 std::vector<GURL>(), // redirects 261 std::vector<GURL>(), // redirects
262 common_params.url, common_params.method,
259 false, // can_load_local_resources 263 false, // can_load_local_resources
260 PageState(), // page_state 264 PageState(), // page_state
261 0, // nav_entry_id 265 0, // nav_entry_id
262 false, // is_history_navigation_in_new_child 266 false, // is_history_navigation_in_new_child
263 std::map<std::string, bool>(), // subframe_unique_names 267 std::map<std::string, bool>(), // subframe_unique_names
264 frame_tree_node->has_committed_real_load(), 268 frame_tree_node->has_committed_real_load(),
265 false, // intended_as_new_entry 269 false, // intended_as_new_entry
266 -1, // pending_history_list_offset 270 -1, // pending_history_list_offset
267 current_history_list_offset, current_history_list_length, 271 current_history_list_offset, current_history_list_length,
268 false, // is_view_source 272 false, // is_view_source
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
425 429
426 // Mark time for the Navigation Timing API. 430 // Mark time for the Navigation Timing API.
427 if (request_params_.navigation_timing.redirect_start.is_null()) { 431 if (request_params_.navigation_timing.redirect_start.is_null()) {
428 request_params_.navigation_timing.redirect_start = 432 request_params_.navigation_timing.redirect_start =
429 request_params_.navigation_timing.fetch_start; 433 request_params_.navigation_timing.fetch_start;
430 } 434 }
431 request_params_.navigation_timing.redirect_end = base::TimeTicks::Now(); 435 request_params_.navigation_timing.redirect_end = base::TimeTicks::Now();
432 request_params_.navigation_timing.fetch_start = base::TimeTicks::Now(); 436 request_params_.navigation_timing.fetch_start = base::TimeTicks::Now();
433 437
434 request_params_.redirect_response.push_back(response->head); 438 request_params_.redirect_response.push_back(response->head);
439 request_params_.redirect_infos.push_back(redirect_info);
435 440
436 request_params_.redirects.push_back(common_params_.url); 441 request_params_.redirects.push_back(common_params_.url);
437 common_params_.url = redirect_info.new_url; 442 common_params_.url = redirect_info.new_url;
438 common_params_.method = redirect_info.new_method; 443 common_params_.method = redirect_info.new_method;
439 common_params_.referrer.url = GURL(redirect_info.new_referrer); 444 common_params_.referrer.url = GURL(redirect_info.new_referrer);
440 445
441 // For non browser initiated navigations we need to check if the source has 446 // For non browser initiated navigations we need to check if the source has
442 // access to the URL. We always allow browser initiated requests. 447 // access to the URL. We always allow browser initiated requests.
443 // TODO(clamy): Kill the renderer if FilterURL fails? 448 // TODO(clamy): Kill the renderer if FilterURL fails?
444 GURL url = common_params_.url; 449 GURL url = common_params_.url;
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
732 DCHECK_EQ(request_params_.has_user_gesture, begin_params_.has_user_gesture); 737 DCHECK_EQ(request_params_.has_user_gesture, begin_params_.has_user_gesture);
733 738
734 render_frame_host->CommitNavigation(response_.get(), std::move(body_), 739 render_frame_host->CommitNavigation(response_.get(), std::move(body_),
735 common_params_, request_params_, 740 common_params_, request_params_,
736 is_view_source_); 741 is_view_source_);
737 742
738 frame_tree_node_->ResetNavigationRequest(true); 743 frame_tree_node_->ResetNavigationRequest(true);
739 } 744 }
740 745
741 } // namespace content 746 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/navigation_entry_impl.cc ('k') | content/browser/frame_host/navigator_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698