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

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

Issue 2567253005: PlzNavigate: set browser_initiated based on the NavigationEntry (Closed)
Patch Set: Rebase + addressed comments Created 3 years, 12 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 "content/browser/appcache/appcache_navigation_handle.h" 9 #include "content/browser/appcache/appcache_navigation_handle.h"
10 #include "content/browser/appcache/chrome_appcache_service.h" 10 #include "content/browser/appcache/chrome_appcache_service.h"
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 // Fill POST data in the request body. 207 // Fill POST data in the request body.
208 scoped_refptr<ResourceRequestBodyImpl> request_body; 208 scoped_refptr<ResourceRequestBodyImpl> request_body;
209 if (frame_entry.method() == "POST") 209 if (frame_entry.method() == "POST")
210 request_body = frame_entry.GetPostData(); 210 request_body = frame_entry.GetPostData();
211 211
212 base::Optional<url::Origin> initiator = 212 base::Optional<url::Origin> initiator =
213 frame_tree_node->IsMainFrame() 213 frame_tree_node->IsMainFrame()
214 ? base::Optional<url::Origin>() 214 ? base::Optional<url::Origin>()
215 : base::Optional<url::Origin>( 215 : base::Optional<url::Origin>(
216 frame_tree_node->frame_tree()->root()->current_origin()); 216 frame_tree_node->frame_tree()->root()->current_origin());
217
218 // While the navigation was started via the LoadURL path it may have come from
219 // the renderer in the first place as part of OpenURL.
220 bool browser_initiated = !entry.is_renderer_initiated();
221
217 std::unique_ptr<NavigationRequest> navigation_request(new NavigationRequest( 222 std::unique_ptr<NavigationRequest> navigation_request(new NavigationRequest(
218 frame_tree_node, entry.ConstructCommonNavigationParams( 223 frame_tree_node, entry.ConstructCommonNavigationParams(
219 frame_entry, request_body, dest_url, dest_referrer, 224 frame_entry, request_body, dest_url, dest_referrer,
220 navigation_type, lofi_state, navigation_start), 225 navigation_type, lofi_state, navigation_start),
221 BeginNavigationParams(entry.extra_headers(), net::LOAD_NORMAL, 226 BeginNavigationParams(entry.extra_headers(), net::LOAD_NORMAL,
222 false, // has_user_gestures 227 false, // has_user_gestures
223 false, // skip_service_worker 228 false, // skip_service_worker
224 REQUEST_CONTEXT_TYPE_LOCATION, initiator), 229 REQUEST_CONTEXT_TYPE_LOCATION, initiator),
225 entry.ConstructRequestNavigationParams( 230 entry.ConstructRequestNavigationParams(
226 frame_entry, is_same_document_history_load, 231 frame_entry, is_same_document_history_load,
227 is_history_navigation_in_new_child, 232 is_history_navigation_in_new_child,
228 entry.GetSubframeUniqueNames(frame_tree_node), 233 entry.GetSubframeUniqueNames(frame_tree_node),
229 frame_tree_node->has_committed_real_load(), 234 frame_tree_node->has_committed_real_load(),
230 controller->GetPendingEntryIndex() == -1, 235 controller->GetPendingEntryIndex() == -1,
231 controller->GetIndexOfEntry(&entry), 236 controller->GetIndexOfEntry(&entry),
232 controller->GetLastCommittedEntryIndex(), 237 controller->GetLastCommittedEntryIndex(),
233 controller->GetEntryCount()), 238 controller->GetEntryCount()),
234 true, &frame_entry, &entry)); 239 browser_initiated,
240 true, // may_transfer
241 &frame_entry, &entry));
235 return navigation_request; 242 return navigation_request;
236 } 243 }
237 244
238 // static 245 // static
239 std::unique_ptr<NavigationRequest> NavigationRequest::CreateRendererInitiated( 246 std::unique_ptr<NavigationRequest> NavigationRequest::CreateRendererInitiated(
240 FrameTreeNode* frame_tree_node, 247 FrameTreeNode* frame_tree_node,
241 const CommonNavigationParams& common_params, 248 const CommonNavigationParams& common_params,
242 const BeginNavigationParams& begin_params, 249 const BeginNavigationParams& begin_params,
243 int current_history_list_offset, 250 int current_history_list_offset,
244 int current_history_list_length) { 251 int current_history_list_length) {
(...skipping 14 matching lines...) Expand all
259 std::map<std::string, bool>(), // subframe_unique_names 266 std::map<std::string, bool>(), // subframe_unique_names
260 frame_tree_node->has_committed_real_load(), 267 frame_tree_node->has_committed_real_load(),
261 false, // intended_as_new_entry 268 false, // intended_as_new_entry
262 -1, // pending_history_list_offset 269 -1, // pending_history_list_offset
263 current_history_list_offset, current_history_list_length, 270 current_history_list_offset, current_history_list_length,
264 false, // is_view_source 271 false, // is_view_source
265 false, // should_clear_history_list 272 false, // should_clear_history_list
266 begin_params.has_user_gesture); 273 begin_params.has_user_gesture);
267 std::unique_ptr<NavigationRequest> navigation_request( 274 std::unique_ptr<NavigationRequest> navigation_request(
268 new NavigationRequest(frame_tree_node, common_params, begin_params, 275 new NavigationRequest(frame_tree_node, common_params, begin_params,
269 request_params, false, nullptr, nullptr)); 276 request_params,
277 false, // browser_initiated
278 false, // may_transfer
279 nullptr, nullptr));
270 return navigation_request; 280 return navigation_request;
271 } 281 }
272 282
273 NavigationRequest::NavigationRequest( 283 NavigationRequest::NavigationRequest(
274 FrameTreeNode* frame_tree_node, 284 FrameTreeNode* frame_tree_node,
275 const CommonNavigationParams& common_params, 285 const CommonNavigationParams& common_params,
276 const BeginNavigationParams& begin_params, 286 const BeginNavigationParams& begin_params,
277 const RequestNavigationParams& request_params, 287 const RequestNavigationParams& request_params,
278 bool browser_initiated, 288 bool browser_initiated,
289 bool may_transfer,
279 const FrameNavigationEntry* frame_entry, 290 const FrameNavigationEntry* frame_entry,
280 const NavigationEntryImpl* entry) 291 const NavigationEntryImpl* entry)
281 : frame_tree_node_(frame_tree_node), 292 : frame_tree_node_(frame_tree_node),
282 common_params_(common_params), 293 common_params_(common_params),
283 begin_params_(begin_params), 294 begin_params_(begin_params),
284 request_params_(request_params), 295 request_params_(request_params),
285 browser_initiated_(browser_initiated), 296 browser_initiated_(browser_initiated),
286 state_(NOT_STARTED), 297 state_(NOT_STARTED),
287 restore_type_(RestoreType::NONE), 298 restore_type_(RestoreType::NONE),
288 is_view_source_(false), 299 is_view_source_(false),
289 bindings_(NavigationEntryImpl::kInvalidBindings), 300 bindings_(NavigationEntryImpl::kInvalidBindings),
290 associated_site_instance_type_(AssociatedSiteInstanceType::NONE) { 301 associated_site_instance_type_(AssociatedSiteInstanceType::NONE),
302 may_transfer_(may_transfer) {
291 DCHECK(!browser_initiated || (entry != nullptr && frame_entry != nullptr)); 303 DCHECK(!browser_initiated || (entry != nullptr && frame_entry != nullptr));
292 if (browser_initiated) { 304 if (may_transfer) {
293 FrameNavigationEntry* frame_entry = entry->GetFrameEntry(frame_tree_node); 305 FrameNavigationEntry* frame_entry = entry->GetFrameEntry(frame_tree_node);
294 if (frame_entry) { 306 if (frame_entry) {
295 source_site_instance_ = frame_entry->source_site_instance(); 307 source_site_instance_ = frame_entry->source_site_instance();
296 dest_site_instance_ = frame_entry->site_instance(); 308 dest_site_instance_ = frame_entry->site_instance();
297 } 309 }
298 310
299 restore_type_ = entry->restore_type(); 311 restore_type_ = entry->restore_type();
300 is_view_source_ = entry->IsViewSourceMode(); 312 is_view_source_ = entry->IsViewSourceMode();
301 bindings_ = entry->bindings(); 313 bindings_ = entry->bindings();
302 } else { 314 } else {
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 DCHECK_EQ(request_params_.has_user_gesture, begin_params_.has_user_gesture); 699 DCHECK_EQ(request_params_.has_user_gesture, begin_params_.has_user_gesture);
688 700
689 render_frame_host->CommitNavigation(response_.get(), std::move(body_), 701 render_frame_host->CommitNavigation(response_.get(), std::move(body_),
690 common_params_, request_params_, 702 common_params_, request_params_,
691 is_view_source_); 703 is_view_source_);
692 704
693 frame_tree_node_->ResetNavigationRequest(true); 705 frame_tree_node_->ResetNavigationRequest(true);
694 } 706 }
695 707
696 } // namespace content 708 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/navigation_request.h ('k') | content/browser/frame_host/render_frame_host_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698