| Index: components/autofill/core/common/form_data.cc
|
| diff --git a/components/autofill/core/common/form_data.cc b/components/autofill/core/common/form_data.cc
|
| index e0930834e340701bafc872d19c82409b60223d55..a1a5e822939cebb8fd9626000db7d88f79d5baba 100644
|
| --- a/components/autofill/core/common/form_data.cc
|
| +++ b/components/autofill/core/common/form_data.cc
|
| @@ -18,7 +18,7 @@ namespace autofill {
|
|
|
| namespace {
|
|
|
| -const int kPickleVersion = 4;
|
| +const int kPickleVersion = 5;
|
|
|
| bool ReadGURL(base::PickleIterator* iter, GURL* url) {
|
| std::string spec;
|
| @@ -60,26 +60,23 @@ void LogDeserializationError(int version) {
|
|
|
| } // namespace
|
|
|
| -FormData::FormData()
|
| - : is_form_tag(true) {
|
| -}
|
| +FormData::FormData() : is_form_tag(true), is_formless_checkout(false) {}
|
|
|
| FormData::FormData(const FormData& data)
|
| : name(data.name),
|
| origin(data.origin),
|
| action(data.action),
|
| is_form_tag(data.is_form_tag),
|
| - fields(data.fields) {
|
| -}
|
| + is_formless_checkout(data.is_formless_checkout),
|
| + fields(data.fields) {}
|
|
|
| FormData::~FormData() {
|
| }
|
|
|
| bool FormData::SameFormAs(const FormData& form) const {
|
| - if (name != form.name ||
|
| - origin != form.origin ||
|
| - action != form.action ||
|
| + if (name != form.name || origin != form.origin || action != form.action ||
|
| is_form_tag != form.is_form_tag ||
|
| + is_formless_checkout != form.is_formless_checkout ||
|
| fields.size() != form.fields.size())
|
| return false;
|
| for (size_t i = 0; i < fields.size(); ++i) {
|
| @@ -90,16 +87,15 @@ bool FormData::SameFormAs(const FormData& form) const {
|
| }
|
|
|
| bool FormData::operator<(const FormData& form) const {
|
| - return std::tie(name, origin, action, is_form_tag, fields) <
|
| - std::tie(form.name, form.origin, form.action, form.is_form_tag,
|
| - form.fields);
|
| + return std::tie(name, origin, action, is_form_tag, is_formless_checkout,
|
| + fields) < std::tie(form.name, form.origin, form.action,
|
| + form.is_form_tag,
|
| + form.is_formless_checkout, form.fields);
|
| }
|
|
|
| std::ostream& operator<<(std::ostream& os, const FormData& form) {
|
| - os << base::UTF16ToUTF8(form.name) << " "
|
| - << form.origin << " "
|
| - << form.action << " "
|
| - << form.is_form_tag << " "
|
| + os << base::UTF16ToUTF8(form.name) << " " << form.origin << " " << form.action
|
| + << " " << form.is_form_tag << " " << form.is_formless_checkout << " "
|
| << "Fields:";
|
| for (size_t i = 0; i < form.fields.size(); ++i) {
|
| os << form.fields[i] << ",";
|
| @@ -114,6 +110,7 @@ void SerializeFormData(const FormData& form_data, base::Pickle* pickle) {
|
| pickle->WriteString(form_data.action.spec());
|
| SerializeFormFieldDataVector(form_data.fields, pickle);
|
| pickle->WriteBool(form_data.is_form_tag);
|
| + pickle->WriteBool(form_data.is_formless_checkout);
|
| }
|
|
|
| void SerializeFormDataToBase64String(const FormData& form_data,
|
| @@ -170,6 +167,13 @@ bool DeserializeFormData(base::PickleIterator* iter, FormData* form_data) {
|
| form_data->is_form_tag = true;
|
| }
|
|
|
| + if (version >= 5) {
|
| + if (!iter->ReadBool(&temp_form_data.is_formless_checkout)) {
|
| + LogDeserializationError(version);
|
| + return false;
|
| + }
|
| + }
|
| +
|
| *form_data = temp_form_data;
|
| return true;
|
| }
|
|
|