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

Side by Side Diff: content/common/resource_request_body.cc

Issue 1907443006: PlzNavigate: store POST data in the FrameNavigationEntry (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed comments Created 4 years, 7 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/common/resource_request_body.h" 5 #include "content/common/resource_request_body.h"
6 6
7 #include "base/strings/utf_string_conversions.h"
8 #include "content/common/page_state_serialization.h"
9
10 using blink::WebHTTPBody;
11 using blink::WebString;
12
7 namespace content { 13 namespace content {
8 14
9 ResourceRequestBody::ResourceRequestBody() 15 ResourceRequestBody::ResourceRequestBody()
10 : identifier_(0) { 16 : identifier_(0) {
11 } 17 }
12 18
19 void ResourceRequestBody::AppendExplodedHTTPBodyElement(
20 const ExplodedHttpBodyElement& element) {
21 switch (element.type) {
22 case WebHTTPBody::Element::TypeData:
23 if (!element.data.empty()) {
24 // Blink sometimes gives empty data to append. These aren't
25 // necessary so they are just optimized out here.
26 AppendBytes(element.data.data(), static_cast<int>(element.data.size()));
Łukasz Anforowicz 2016/05/12 02:53:59 It is not immediately clear why size_t -> int cast
clamy 2016/05/12 08:53:13 This whole method is a copy of what we do to conve
Łukasz Anforowicz 2016/05/12 19:44:12 It is pretty sad that we have to repeat almost the
Charlie Reis 2016/05/16 21:16:42 Please add a comment above this method indicating
clamy 2016/05/19 13:11:57 Done.
27 }
28 break;
29 case WebHTTPBody::Element::TypeFile:
30 if (element.file_length == -1) {
31 AppendFileRange(
32 base::FilePath::FromUTF16Unsafe(element.file_path.string()), 0,
33 std::numeric_limits<uint64_t>::max(), base::Time());
Łukasz Anforowicz 2016/05/12 02:53:59 I see that UploadFileElementReader::OnGetFileInfoC
clamy 2016/05/12 08:53:13 Possibly? As explained above, I'm just copy pastin
Łukasz Anforowicz 2016/05/12 19:44:12 Acknowledged.
34 } else {
35 AppendFileRange(
36 base::FilePath::FromUTF16Unsafe(element.file_path.string()),
37 static_cast<uint64_t>(element.file_start),
38 static_cast<uint64_t>(element.file_length),
39 base::Time::FromDoubleT(element.file_modification_time));
Łukasz Anforowicz 2016/05/12 02:53:59 Just wanted to double-check - is it okay to use ba
clamy 2016/05/12 08:53:13 Again I imagine it's ok since we've been doing it.
Łukasz Anforowicz 2016/05/12 19:44:12 Acknowledged.
Charlie Reis 2016/05/16 21:16:41 In general, copy/pasting code isn't an excuse for
Łukasz Anforowicz 2016/05/18 00:22:27 I wonder if we could avoid copy&pasted conversion
clamy 2016/05/19 13:11:57 So I did a bit of code archeology, and the time pa
Charlie Reis 2016/05/19 17:43:48 Agreed. Since we aren't certain there's a bug her
40 }
41 break;
42 case WebHTTPBody::Element::TypeFileSystemURL: {
43 GURL file_system_url = element.filesystem_url;
44 DCHECK(file_system_url.SchemeIsFileSystem());
Łukasz Anforowicz 2016/05/12 02:53:59 I guess a DCHECK is sufficient, because UploadFile
clamy 2016/05/12 08:53:13 I imagine. I don't know if we want to crash the re
Łukasz Anforowicz 2016/05/12 19:44:12 Acknowledged.
45 AppendFileSystemFileRange(
46 file_system_url, static_cast<uint64_t>(element.file_start),
47 static_cast<uint64_t>(element.file_length),
48 base::Time::FromDoubleT(element.file_modification_time));
49 break;
50 }
51 case WebHTTPBody::Element::TypeBlob:
52 AppendBlob(element.blob_uuid);
53 break;
54 default:
55 NOTREACHED();
56 }
57 }
58
13 void ResourceRequestBody::AppendBytes(const char* bytes, int bytes_len) { 59 void ResourceRequestBody::AppendBytes(const char* bytes, int bytes_len) {
14 if (bytes_len > 0) { 60 if (bytes_len > 0) {
15 elements_.push_back(Element()); 61 elements_.push_back(Element());
16 elements_.back().SetToBytes(bytes, bytes_len); 62 elements_.back().SetToBytes(bytes, bytes_len);
17 } 63 }
18 } 64 }
19 65
20 void ResourceRequestBody::AppendFileRange( 66 void ResourceRequestBody::AppendFileRange(
21 const base::FilePath& file_path, 67 const base::FilePath& file_path,
22 uint64_t offset, 68 uint64_t offset,
(...skipping 12 matching lines...) Expand all
35 void ResourceRequestBody::AppendFileSystemFileRange( 81 void ResourceRequestBody::AppendFileSystemFileRange(
36 const GURL& url, 82 const GURL& url,
37 uint64_t offset, 83 uint64_t offset,
38 uint64_t length, 84 uint64_t length,
39 const base::Time& expected_modification_time) { 85 const base::Time& expected_modification_time) {
40 elements_.push_back(Element()); 86 elements_.push_back(Element());
41 elements_.back().SetToFileSystemUrlRange(url, offset, length, 87 elements_.back().SetToFileSystemUrlRange(url, offset, length,
42 expected_modification_time); 88 expected_modification_time);
43 } 89 }
44 90
91 scoped_refptr<ResourceRequestBody> ResourceRequestBody::MakeCopy() {
92 scoped_refptr<ResourceRequestBody> copy = new ResourceRequestBody();
93 copy->set_identifier(identifier_);
94 for (auto element : elements_)
95 copy->elements_mutable()->push_back(element);
96 return copy;
97 }
98
45 ResourceRequestBody::~ResourceRequestBody() { 99 ResourceRequestBody::~ResourceRequestBody() {
46 } 100 }
47 101
48 } // namespace content 102 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698