| Index: content/browser/frame_host/navigation_entry_impl.cc
|
| diff --git a/content/browser/frame_host/navigation_entry_impl.cc b/content/browser/frame_host/navigation_entry_impl.cc
|
| index 87405be98d69e2db96a66b58d0b3d79602077b4c..1cb426ce36e2c83328af9bb070bc9806d3a52622 100644
|
| --- a/content/browser/frame_host/navigation_entry_impl.cc
|
| +++ b/content/browser/frame_host/navigation_entry_impl.cc
|
| @@ -19,6 +19,7 @@
|
| #include "content/common/navigation_params.h"
|
| #include "content/common/page_state_serialization.h"
|
| #include "content/common/site_isolation_policy.h"
|
| +#include "content/public/common/browser_side_navigation_policy.h"
|
| #include "content/public/common/content_constants.h"
|
| #include "content/public/common/url_constants.h"
|
| #include "ui/gfx/text_elider.h"
|
| @@ -38,11 +39,14 @@ int GetUniqueIDInConstructor() {
|
|
|
| void RecursivelyGenerateFrameEntries(const ExplodedFrameState& state,
|
| NavigationEntryImpl::TreeNode* node) {
|
| + scoped_refptr<ResourceRequestBody> post_data = new ResourceRequestBody;
|
| + if (!GeneratePostData(state.http_body, post_data.get()))
|
| + post_data = nullptr;
|
| node->frame_entry = new FrameNavigationEntry(
|
| -1, UTF16ToUTF8(state.target.string()), state.item_sequence_number,
|
| state.document_sequence_number, nullptr, GURL(state.url_string.string()),
|
| - Referrer(GURL(state.referrer.string()), state.referrer_policy), "GET",
|
| - -1);
|
| + Referrer(GURL(state.referrer.string()), state.referrer_policy), "GET", -1,
|
| + post_data);
|
|
|
| // Set a single-frame PageState on the entry.
|
| ExplodedPageState page_state;
|
| @@ -175,7 +179,8 @@ NavigationEntryImpl::NavigationEntryImpl(
|
| url,
|
| referrer,
|
| "GET",
|
| - -1))),
|
| + -1,
|
| + nullptr))),
|
| unique_id_(GetUniqueIDInConstructor()),
|
| bindings_(kInvalidBindings),
|
| page_type_(PAGE_TYPE_NORMAL),
|
| @@ -573,6 +578,7 @@ std::unique_ptr<NavigationEntryImpl> NavigationEntryImpl::CloneAndReplace(
|
| }
|
|
|
| CommonNavigationParams NavigationEntryImpl::ConstructCommonNavigationParams(
|
| + const FrameNavigationEntry& frame_entry,
|
| const GURL& dest_url,
|
| const Referrer& dest_referrer,
|
| FrameMsg_Navigate_Type::Value navigation_type,
|
| @@ -587,11 +593,18 @@ CommonNavigationParams NavigationEntryImpl::ConstructCommonNavigationParams(
|
| ui_timestamp = intent_received_timestamp();
|
| #endif
|
|
|
| + std::string method;
|
| +
|
| + if (IsBrowserSideNavigationEnabled())
|
| + method = frame_entry.method();
|
| + else
|
| + method = GetHasPostData() ? "POST" : "GET";
|
| +
|
| return CommonNavigationParams(
|
| dest_url, dest_referrer, GetTransitionType(), navigation_type,
|
| !IsViewSourceMode(), should_replace_entry(), ui_timestamp, report_type,
|
| GetBaseURLForDataURL(), GetHistoryURLForDataURL(), lofi_state,
|
| - navigation_start, GetHasPostData() ? "POST" : "GET");
|
| + navigation_start, method);
|
| }
|
|
|
| StartNavigationParams NavigationEntryImpl::ConstructStartNavigationParams()
|
| @@ -694,7 +707,8 @@ void NavigationEntryImpl::AddOrUpdateFrameEntry(
|
| const Referrer& referrer,
|
| const PageState& page_state,
|
| const std::string& method,
|
| - int64_t post_id) {
|
| + int64_t post_id,
|
| + scoped_refptr<ResourceRequestBody> post_data) {
|
| // We should already have a TreeNode for the parent node by the time this node
|
| // commits. Find it first.
|
| DCHECK(frame_tree_node->parent());
|
| @@ -713,7 +727,7 @@ void NavigationEntryImpl::AddOrUpdateFrameEntry(
|
| // Update the existing FrameNavigationEntry (e.g., for replaceState).
|
| child->frame_entry->UpdateEntry(
|
| frame_unique_name, item_sequence_number, document_sequence_number,
|
| - site_instance, url, referrer, page_state, method, post_id);
|
| + site_instance, url, referrer, page_state, method, post_id, post_data);
|
| return;
|
| }
|
| }
|
| @@ -723,7 +737,8 @@ void NavigationEntryImpl::AddOrUpdateFrameEntry(
|
| // or unique name.
|
| FrameNavigationEntry* frame_entry = new FrameNavigationEntry(
|
| frame_tree_node_id, frame_unique_name, item_sequence_number,
|
| - document_sequence_number, site_instance, url, referrer, method, post_id);
|
| + document_sequence_number, site_instance, url, referrer, method, post_id,
|
| + post_data);
|
| frame_entry->set_page_state(page_state);
|
| parent_node->children.push_back(
|
| new NavigationEntryImpl::TreeNode(frame_entry));
|
|
|