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

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

Issue 1907443006: PlzNavigate: store POST data in the FrameNavigationEntry (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/frame_navigation_entry.h" 5 #include "content/browser/frame_host/frame_navigation_entry.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 namespace content { 9 namespace content {
10 10
11 FrameNavigationEntry::FrameNavigationEntry(int frame_tree_node_id) 11 FrameNavigationEntry::FrameNavigationEntry(int frame_tree_node_id)
12 : frame_tree_node_id_(frame_tree_node_id), 12 : frame_tree_node_id_(frame_tree_node_id),
13 item_sequence_number_(-1), 13 item_sequence_number_(-1),
14 document_sequence_number_(-1), 14 document_sequence_number_(-1),
15 post_id_(-1) {} 15 post_id_(-1) {}
16 16
17 FrameNavigationEntry::FrameNavigationEntry( 17 FrameNavigationEntry::FrameNavigationEntry(
18 int frame_tree_node_id, 18 int frame_tree_node_id,
19 const std::string& frame_unique_name, 19 const std::string& frame_unique_name,
20 int64_t item_sequence_number, 20 int64_t item_sequence_number,
21 int64_t document_sequence_number, 21 int64_t document_sequence_number,
22 scoped_refptr<SiteInstanceImpl> site_instance, 22 scoped_refptr<SiteInstanceImpl> site_instance,
23 const GURL& url, 23 const GURL& url,
24 const Referrer& referrer, 24 const Referrer& referrer,
25 const std::string& method, 25 const std::string& method,
26 int64_t post_id) 26 int64_t post_id,
27 scoped_refptr<ResourceRequestBody> post_data)
27 : frame_tree_node_id_(frame_tree_node_id), 28 : frame_tree_node_id_(frame_tree_node_id),
28 frame_unique_name_(frame_unique_name), 29 frame_unique_name_(frame_unique_name),
29 item_sequence_number_(item_sequence_number), 30 item_sequence_number_(item_sequence_number),
30 document_sequence_number_(document_sequence_number), 31 document_sequence_number_(document_sequence_number),
31 site_instance_(std::move(site_instance)), 32 site_instance_(std::move(site_instance)),
32 url_(url), 33 url_(url),
33 referrer_(referrer), 34 referrer_(referrer),
34 method_(method), 35 method_(method),
35 post_id_(post_id) {} 36 post_id_(post_id) {
37 DCHECK(!post_data || method_ == "POST");
38 post_data_ = post_data;
39 }
36 40
37 FrameNavigationEntry::~FrameNavigationEntry() { 41 FrameNavigationEntry::~FrameNavigationEntry() {
38 } 42 }
39 43
40 FrameNavigationEntry* FrameNavigationEntry::Clone() const { 44 FrameNavigationEntry* FrameNavigationEntry::Clone() const {
45 scoped_refptr<ResourceRequestBody> post_data;
46 if (post_data_)
47 post_data = post_data_->MakeCopy();
41 FrameNavigationEntry* copy = new FrameNavigationEntry(frame_tree_node_id_); 48 FrameNavigationEntry* copy = new FrameNavigationEntry(frame_tree_node_id_);
42 copy->UpdateEntry(frame_unique_name_, item_sequence_number_, 49 copy->UpdateEntry(frame_unique_name_, item_sequence_number_,
43 document_sequence_number_, site_instance_.get(), url_, 50 document_sequence_number_, site_instance_.get(), url_,
44 referrer_, page_state_, method_, post_id_); 51 referrer_, page_state_, method_, post_id_, post_data);
45 return copy; 52 return copy;
46 } 53 }
47 54
48 void FrameNavigationEntry::UpdateEntry(const std::string& frame_unique_name, 55 void FrameNavigationEntry::UpdateEntry(
49 int64_t item_sequence_number, 56 const std::string& frame_unique_name,
50 int64_t document_sequence_number, 57 int64_t item_sequence_number,
51 SiteInstanceImpl* site_instance, 58 int64_t document_sequence_number,
52 const GURL& url, 59 SiteInstanceImpl* site_instance,
53 const Referrer& referrer, 60 const GURL& url,
54 const PageState& page_state, 61 const Referrer& referrer,
55 const std::string& method, 62 const PageState& page_state,
56 int64_t post_id) { 63 const std::string& method,
64 int64_t post_id,
65 scoped_refptr<ResourceRequestBody> post_data) {
57 frame_unique_name_ = frame_unique_name; 66 frame_unique_name_ = frame_unique_name;
58 item_sequence_number_ = item_sequence_number; 67 item_sequence_number_ = item_sequence_number;
59 document_sequence_number_ = document_sequence_number; 68 document_sequence_number_ = document_sequence_number;
60 site_instance_ = site_instance; 69 site_instance_ = site_instance;
61 url_ = url; 70 url_ = url;
62 referrer_ = referrer; 71 referrer_ = referrer;
63 page_state_ = page_state; 72 page_state_ = page_state;
64 method_ = method; 73 method_ = method;
65 post_id_ = post_id; 74 post_id_ = post_id;
75
76 DCHECK(!post_data || method_ == "POST");
77 post_data_ = post_data;
66 } 78 }
67 79
68 void FrameNavigationEntry::set_item_sequence_number( 80 void FrameNavigationEntry::set_item_sequence_number(
69 int64_t item_sequence_number) { 81 int64_t item_sequence_number) {
70 // Once assigned, the item sequence number shouldn't change. 82 // Once assigned, the item sequence number shouldn't change.
71 DCHECK(item_sequence_number_ == -1 || 83 DCHECK(item_sequence_number_ == -1 ||
72 item_sequence_number_ == item_sequence_number); 84 item_sequence_number_ == item_sequence_number);
73 item_sequence_number_ = item_sequence_number; 85 item_sequence_number_ = item_sequence_number;
74 } 86 }
75 87
76 void FrameNavigationEntry::set_document_sequence_number( 88 void FrameNavigationEntry::set_document_sequence_number(
77 int64_t document_sequence_number) { 89 int64_t document_sequence_number) {
78 // Once assigned, the document sequence number shouldn't change. 90 // Once assigned, the document sequence number shouldn't change.
79 DCHECK(document_sequence_number_ == -1 || 91 DCHECK(document_sequence_number_ == -1 ||
80 document_sequence_number_ == document_sequence_number); 92 document_sequence_number_ == document_sequence_number);
81 document_sequence_number_ = document_sequence_number; 93 document_sequence_number_ = document_sequence_number;
82 } 94 }
83 95
84 } // namespace content 96 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698