Index: content/common/page_state_serialization.cc |
diff --git a/content/common/page_state_serialization.cc b/content/common/page_state_serialization.cc |
index 18f272f2608d9cfec994b519a549afdf250d8f80..3715ab7437622184077ad9406dd1179a6c42e8b4 100644 |
--- a/content/common/page_state_serialization.cc |
+++ b/content/common/page_state_serialization.cc |
@@ -10,7 +10,6 @@ |
#include <limits> |
#include "base/pickle.h" |
-#include "base/strings/nullable_string16.h" |
#include "base/strings/string_number_conversions.h" |
#include "base/strings/string_util.h" |
#include "base/strings/utf_string_conversions.h" |
@@ -31,7 +30,8 @@ |
void AppendDataToHttpBody(ExplodedHttpBody* http_body, const char* data, |
int data_length) { |
ExplodedHttpBodyElement element; |
- element.SetToBytes(data, data_length); |
+ element.type = blink::WebHTTPBody::Element::TypeData; |
+ element.data.assign(data, data_length); |
http_body->elements.push_back(element); |
} |
@@ -41,10 +41,11 @@ |
int file_length, |
double file_modification_time) { |
ExplodedHttpBodyElement element; |
- element.SetToFilePathRange( |
- base::FilePath::FromUTF16Unsafe(file_path.string()), |
- static_cast<uint64_t>(file_start), static_cast<uint64_t>(file_length), |
- base::Time::FromDoubleT(file_modification_time)); |
+ element.type = blink::WebHTTPBody::Element::TypeFile; |
+ element.file_path = file_path; |
+ element.file_start = file_start; |
+ element.file_length = file_length; |
+ element.file_modification_time = file_modification_time; |
http_body->elements.push_back(element); |
} |
@@ -54,17 +55,19 @@ |
int file_length, |
double file_modification_time) { |
ExplodedHttpBodyElement element; |
- element.SetToFileSystemUrlRange( |
- url, static_cast<uint64_t>(file_start), |
- static_cast<uint64_t>(file_length), |
- base::Time::FromDoubleT(file_modification_time)); |
+ element.type = blink::WebHTTPBody::Element::TypeFileSystemURL; |
+ element.filesystem_url = url; |
+ element.file_start = file_start; |
+ element.file_length = file_length; |
+ element.file_modification_time = file_modification_time; |
http_body->elements.push_back(element); |
} |
void AppendBlobToHttpBody(ExplodedHttpBody* http_body, |
const std::string& uuid) { |
ExplodedHttpBodyElement element; |
- element.SetToBlob(uuid); |
+ element.type = blink::WebHTTPBody::Element::TypeBlob; |
+ element.blob_uuid = uuid; |
http_body->elements.push_back(element); |
} |
@@ -74,9 +77,8 @@ |
const std::vector<ExplodedHttpBodyElement>& elements, |
std::vector<base::NullableString16>* referenced_files) { |
for (size_t i = 0; i < elements.size(); ++i) { |
- if (elements[i].type() == ExplodedHttpBodyElement::TYPE_FILE) |
- referenced_files->push_back( |
- base::NullableString16(elements[i].path().AsUTF16Unsafe(), false)); |
+ if (elements[i].type == blink::WebHTTPBody::Element::TypeFile) |
+ referenced_files->push_back(elements[i].file_path); |
} |
} |
@@ -405,35 +407,24 @@ |
WriteAndValidateVectorSize(http_body.elements, obj); |
for (size_t i = 0; i < http_body.elements.size(); ++i) { |
const ExplodedHttpBodyElement& element = http_body.elements[i]; |
- switch (element.type()) { |
- case ExplodedHttpBodyElement::TYPE_BYTES: |
- WriteInteger(blink::WebHTTPBody::Element::TypeData, obj); |
- WriteData(element.bytes(), static_cast<int>(element.length()), obj); |
- break; |
- case ExplodedHttpBodyElement::TYPE_FILE: |
- WriteInteger(blink::WebHTTPBody::Element::TypeFile, obj); |
- WriteString( |
- base::NullableString16(element.path().AsUTF16Unsafe(), false), obj); |
- WriteInteger64(static_cast<int64_t>(element.offset()), obj); |
- WriteInteger64(static_cast<int64_t>(element.length()), obj); |
- WriteReal(element.expected_modification_time().ToDoubleT(), obj); |
- break; |
- case ExplodedHttpBodyElement::TYPE_FILE_FILESYSTEM: |
- WriteInteger(blink::WebHTTPBody::Element::TypeFileSystemURL, obj); |
- WriteGURL(element.filesystem_url(), obj); |
- WriteInteger64(static_cast<int64_t>(element.offset()), obj); |
- WriteInteger64(static_cast<int64_t>(element.length()), obj); |
- WriteReal(element.expected_modification_time().ToDoubleT(), obj); |
- break; |
- case ExplodedHttpBodyElement::TYPE_BLOB: |
- WriteInteger(blink::WebHTTPBody::Element::TypeBlob, obj); |
- WriteStdString(element.blob_uuid(), obj); |
- break; |
- case ExplodedHttpBodyElement::TYPE_BYTES_DESCRIPTION: |
- case ExplodedHttpBodyElement::TYPE_DISK_CACHE_ENTRY: |
- default: |
- NOTREACHED(); |
- continue; |
+ WriteInteger(element.type, obj); |
+ if (element.type == blink::WebHTTPBody::Element::TypeData) { |
+ WriteData(element.data.data(), static_cast<int>(element.data.size()), |
+ obj); |
+ } else if (element.type == blink::WebHTTPBody::Element::TypeFile) { |
+ WriteString(element.file_path, obj); |
+ WriteInteger64(element.file_start, obj); |
+ WriteInteger64(element.file_length, obj); |
+ WriteReal(element.file_modification_time, obj); |
+ } else if (element.type == |
+ blink::WebHTTPBody::Element::TypeFileSystemURL) { |
+ WriteGURL(element.filesystem_url, obj); |
+ WriteInteger64(element.file_start, obj); |
+ WriteInteger64(element.file_length, obj); |
+ WriteReal(element.file_modification_time, obj); |
+ } else { |
+ DCHECK(element.type == blink::WebHTTPBody::Element::TypeBlob); |
+ WriteStdString(element.blob_uuid, obj); |
} |
} |
WriteInteger64(http_body.identifier, obj); |
@@ -676,6 +667,19 @@ |
} // namespace |
+ExplodedHttpBodyElement::ExplodedHttpBodyElement() |
+ : type(blink::WebHTTPBody::Element::TypeData), |
+ file_start(0), |
+ file_length(-1), |
+ file_modification_time(std::numeric_limits<double>::quiet_NaN()) { |
+} |
+ |
+ExplodedHttpBodyElement::ExplodedHttpBodyElement( |
+ const ExplodedHttpBodyElement& other) = default; |
+ |
+ExplodedHttpBodyElement::~ExplodedHttpBodyElement() { |
+} |
+ |
ExplodedHttpBody::ExplodedHttpBody() |
: identifier(0), |
contains_passwords(false), |
@@ -754,7 +758,7 @@ |
http_body->set_identifier(exploded.identifier); |
for (auto element : exploded.elements) |
- http_body->elements_mutable()->push_back(element); |
+ http_body->AppendExplodedHTTPBodyElement(element); |
return true; |
} |