| Index: content/browser/frame_host/navigator_impl.cc
|
| diff --git a/content/browser/frame_host/navigator_impl.cc b/content/browser/frame_host/navigator_impl.cc
|
| index 0ff10ab5982c5ffb4d66d5b23d142f9668603426..99a12b26cdb0ad648ba551ca6fa6b6ced7845890 100644
|
| --- a/content/browser/frame_host/navigator_impl.cc
|
| +++ b/content/browser/frame_host/navigator_impl.cc
|
| @@ -257,7 +257,8 @@ bool NavigatorImpl::NavigateToEntry(
|
| const NavigationEntryImpl& entry,
|
| NavigationController::ReloadType reload_type,
|
| bool is_same_document_history_load,
|
| - bool is_pending_entry) {
|
| + bool is_pending_entry,
|
| + const scoped_refptr<ResourceRequestBody>& post_body) {
|
| TRACE_EVENT0("browser,navigation", "NavigatorImpl::NavigateToEntry");
|
|
|
| GURL dest_url = frame_entry.url();
|
| @@ -374,11 +375,12 @@ bool NavigatorImpl::NavigateToEntry(
|
| // Create the navigation parameters.
|
| FrameMsg_Navigate_Type::Value navigation_type = GetNavigationType(
|
| controller_->GetBrowserContext(), entry, reload_type);
|
| + bool force_post_method = static_cast<bool>(post_body);
|
| dest_render_frame_host->Navigate(
|
| - entry.ConstructCommonNavigationParams(frame_entry, dest_url,
|
| - dest_referrer, navigation_type,
|
| - lofi_state, navigation_start),
|
| - entry.ConstructStartNavigationParams(),
|
| + entry.ConstructCommonNavigationParams(
|
| + frame_entry, force_post_method, dest_url,
|
| + dest_referrer, navigation_type, lofi_state, navigation_start),
|
| + entry.ConstructStartNavigationParams(post_body),
|
| entry.ConstructRequestNavigationParams(
|
| frame_entry, is_same_document_history_load,
|
| frame_tree_node->has_committed_real_load(),
|
| @@ -424,7 +426,7 @@ bool NavigatorImpl::NavigateToPendingEntry(
|
| bool is_same_document_history_load) {
|
| return NavigateToEntry(frame_tree_node, frame_entry,
|
| *controller_->GetPendingEntry(), reload_type,
|
| - is_same_document_history_load, true);
|
| + is_same_document_history_load, true, nullptr);
|
| }
|
|
|
| bool NavigatorImpl::NavigateNewChildFrame(
|
| @@ -445,7 +447,7 @@ bool NavigatorImpl::NavigateNewChildFrame(
|
|
|
| return NavigateToEntry(render_frame_host->frame_tree_node(), *frame_entry,
|
| *entry, NavigationControllerImpl::NO_RELOAD, false,
|
| - false);
|
| + false, nullptr);
|
| }
|
|
|
| void NavigatorImpl::DidNavigate(
|
| @@ -707,7 +709,9 @@ void NavigatorImpl::RequestTransferURL(
|
| const Referrer& referrer,
|
| ui::PageTransition page_transition,
|
| const GlobalRequestID& transferred_global_request_id,
|
| - bool should_replace_current_entry) {
|
| + bool should_replace_current_entry,
|
| + const std::string& method,
|
| + const scoped_refptr<ResourceRequestBody>& post_body) {
|
| // This call only makes sense for subframes if OOPIFs are possible.
|
| DCHECK(!render_frame_host->GetParent() ||
|
| SiteIsolationPolicy::AreCrossProcessFramesPossible());
|
| @@ -771,12 +775,10 @@ void NavigatorImpl::RequestTransferURL(
|
| is_renderer_initiated, std::string(),
|
| controller_->GetBrowserContext()));
|
| }
|
| - // TODO(creis): Handle POST submissions. See https://crbug.com/582211 and
|
| - // https://crbug.com/101395.
|
| entry->AddOrUpdateFrameEntry(
|
| node, -1, -1, nullptr,
|
| static_cast<SiteInstanceImpl*>(source_site_instance), dest_url,
|
| - referrer_to_use, PageState(), "GET", -1);
|
| + referrer_to_use, PageState(), method, -1);
|
| } else {
|
| // Main frame case.
|
| entry = NavigationEntryImpl::FromNavigationEntry(
|
| @@ -806,14 +808,13 @@ void NavigatorImpl::RequestTransferURL(
|
| // further in https://crbug.com/536906.
|
| scoped_refptr<FrameNavigationEntry> frame_entry(entry->GetFrameEntry(node));
|
| if (!frame_entry) {
|
| - // TODO(creis): Handle POST submissions here, as above.
|
| frame_entry = new FrameNavigationEntry(
|
| node->unique_name(), -1, -1, nullptr,
|
| static_cast<SiteInstanceImpl*>(source_site_instance), dest_url,
|
| - referrer_to_use, "GET", -1);
|
| + referrer_to_use, method, -1);
|
| }
|
| NavigateToEntry(node, *frame_entry, *entry.get(),
|
| - NavigationController::NO_RELOAD, false, false);
|
| + NavigationController::NO_RELOAD, false, false, post_body);
|
| }
|
|
|
| // PlzNavigate
|
|
|