| Index: content/browser/frame_host/navigation_request.cc
|
| diff --git a/content/browser/frame_host/navigation_request.cc b/content/browser/frame_host/navigation_request.cc
|
| index 2c04eda2a0049f3e5b9213d0edae444f6add6b2b..88644d3975a1a845199e3123dd11b042dc566178 100644
|
| --- a/content/browser/frame_host/navigation_request.cc
|
| +++ b/content/browser/frame_host/navigation_request.cc
|
| @@ -214,6 +214,11 @@ std::unique_ptr<NavigationRequest> NavigationRequest::CreateBrowserInitiated(
|
| ? base::Optional<url::Origin>()
|
| : base::Optional<url::Origin>(
|
| frame_tree_node->frame_tree()->root()->current_origin());
|
| +
|
| + // While the navigation was started via the LoadURL path it may have come from
|
| + // the renderer in the first place as part of OpenURL.
|
| + bool browser_initiated = !entry.is_renderer_initiated();
|
| +
|
| std::unique_ptr<NavigationRequest> navigation_request(new NavigationRequest(
|
| frame_tree_node, entry.ConstructCommonNavigationParams(
|
| frame_entry, request_body, dest_url, dest_referrer,
|
| @@ -231,7 +236,9 @@ std::unique_ptr<NavigationRequest> NavigationRequest::CreateBrowserInitiated(
|
| controller->GetIndexOfEntry(&entry),
|
| controller->GetLastCommittedEntryIndex(),
|
| controller->GetEntryCount()),
|
| - true, &frame_entry, &entry));
|
| + browser_initiated,
|
| + true, // may_transfer
|
| + &frame_entry, &entry));
|
| return navigation_request;
|
| }
|
|
|
| @@ -266,7 +273,10 @@ std::unique_ptr<NavigationRequest> NavigationRequest::CreateRendererInitiated(
|
| begin_params.has_user_gesture);
|
| std::unique_ptr<NavigationRequest> navigation_request(
|
| new NavigationRequest(frame_tree_node, common_params, begin_params,
|
| - request_params, false, nullptr, nullptr));
|
| + request_params,
|
| + false, // browser_initiated
|
| + false, // may_transfer
|
| + nullptr, nullptr));
|
| return navigation_request;
|
| }
|
|
|
| @@ -276,6 +286,7 @@ NavigationRequest::NavigationRequest(
|
| const BeginNavigationParams& begin_params,
|
| const RequestNavigationParams& request_params,
|
| bool browser_initiated,
|
| + bool may_transfer,
|
| const FrameNavigationEntry* frame_entry,
|
| const NavigationEntryImpl* entry)
|
| : frame_tree_node_(frame_tree_node),
|
| @@ -287,9 +298,10 @@ NavigationRequest::NavigationRequest(
|
| restore_type_(RestoreType::NONE),
|
| is_view_source_(false),
|
| bindings_(NavigationEntryImpl::kInvalidBindings),
|
| - associated_site_instance_type_(AssociatedSiteInstanceType::NONE) {
|
| + associated_site_instance_type_(AssociatedSiteInstanceType::NONE),
|
| + may_transfer_(may_transfer) {
|
| DCHECK(!browser_initiated || (entry != nullptr && frame_entry != nullptr));
|
| - if (browser_initiated) {
|
| + if (may_transfer) {
|
| FrameNavigationEntry* frame_entry = entry->GetFrameEntry(frame_tree_node);
|
| if (frame_entry) {
|
| source_site_instance_ = frame_entry->source_site_instance();
|
|
|