OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "components/autofill/core/common/form_data.h" | 5 #include "components/autofill/core/common/form_data.h" |
6 | 6 |
7 #include "base/base64.h" | 7 #include "base/base64.h" |
8 #include "base/pickle.h" | 8 #include "base/pickle.h" |
9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
11 #include "components/autofill/core/common/form_field_data.h" | 11 #include "components/autofill/core/common/form_field_data.h" |
12 | 12 |
13 namespace autofill { | 13 namespace autofill { |
14 | 14 |
15 namespace { | 15 namespace { |
16 | 16 |
17 const int kPickleVersion = 3; | 17 const int kPickleVersion = 3; |
18 | 18 |
19 bool ReadGURL(PickleIterator* iter, GURL* url) { | 19 bool ReadGURL(base::PickleIterator* iter, GURL* url) { |
20 std::string spec; | 20 std::string spec; |
21 if (!iter->ReadString(&spec)) | 21 if (!iter->ReadString(&spec)) |
22 return false; | 22 return false; |
23 | 23 |
24 *url = GURL(spec); | 24 *url = GURL(spec); |
25 return true; | 25 return true; |
26 } | 26 } |
27 | 27 |
28 void SerializeFormFieldDataVector(const std::vector<FormFieldData>& fields, | 28 void SerializeFormFieldDataVector(const std::vector<FormFieldData>& fields, |
29 Pickle* pickle) { | 29 base::Pickle* pickle) { |
30 pickle->WriteInt(static_cast<int>(fields.size())); | 30 pickle->WriteInt(static_cast<int>(fields.size())); |
31 for (size_t i = 0; i < fields.size(); ++i) { | 31 for (size_t i = 0; i < fields.size(); ++i) { |
32 SerializeFormFieldData(fields[i], pickle); | 32 SerializeFormFieldData(fields[i], pickle); |
33 } | 33 } |
34 } | 34 } |
35 | 35 |
36 bool DeserializeFormFieldDataVector(PickleIterator* iter, | 36 bool DeserializeFormFieldDataVector(base::PickleIterator* iter, |
37 std::vector<FormFieldData>* fields) { | 37 std::vector<FormFieldData>* fields) { |
38 int size; | 38 int size; |
39 if (!iter->ReadInt(&size)) | 39 if (!iter->ReadInt(&size)) |
40 return false; | 40 return false; |
41 | 41 |
42 FormFieldData temp; | 42 FormFieldData temp; |
43 for (int i = 0; i < size; ++i) { | 43 for (int i = 0; i < size; ++i) { |
44 if (!DeserializeFormFieldData(iter, &temp)) | 44 if (!DeserializeFormFieldData(iter, &temp)) |
45 return false; | 45 return false; |
46 | 46 |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
108 << form.action << " " | 108 << form.action << " " |
109 << form.user_submitted << " " | 109 << form.user_submitted << " " |
110 << form.is_form_tag << " " | 110 << form.is_form_tag << " " |
111 << "Fields:"; | 111 << "Fields:"; |
112 for (size_t i = 0; i < form.fields.size(); ++i) { | 112 for (size_t i = 0; i < form.fields.size(); ++i) { |
113 os << form.fields[i] << ","; | 113 os << form.fields[i] << ","; |
114 } | 114 } |
115 return os; | 115 return os; |
116 } | 116 } |
117 | 117 |
118 void SerializeFormData(const FormData& form_data, Pickle* pickle) { | 118 void SerializeFormData(const FormData& form_data, base::Pickle* pickle) { |
119 pickle->WriteInt(kPickleVersion); | 119 pickle->WriteInt(kPickleVersion); |
120 pickle->WriteString16(form_data.name); | 120 pickle->WriteString16(form_data.name); |
121 pickle->WriteString(form_data.origin.spec()); | 121 pickle->WriteString(form_data.origin.spec()); |
122 pickle->WriteString(form_data.action.spec()); | 122 pickle->WriteString(form_data.action.spec()); |
123 pickle->WriteBool(form_data.user_submitted); | 123 pickle->WriteBool(form_data.user_submitted); |
124 SerializeFormFieldDataVector(form_data.fields, pickle); | 124 SerializeFormFieldDataVector(form_data.fields, pickle); |
125 pickle->WriteBool(form_data.is_form_tag); | 125 pickle->WriteBool(form_data.is_form_tag); |
126 } | 126 } |
127 | 127 |
128 void SerializeFormDataToBase64String(const FormData& form_data, | 128 void SerializeFormDataToBase64String(const FormData& form_data, |
129 std::string* output) { | 129 std::string* output) { |
130 Pickle pickle; | 130 base::Pickle pickle; |
131 SerializeFormData(form_data, &pickle); | 131 SerializeFormData(form_data, &pickle); |
132 Base64Encode( | 132 Base64Encode( |
133 base::StringPiece(static_cast<const char*>(pickle.data()), pickle.size()), | 133 base::StringPiece(static_cast<const char*>(pickle.data()), pickle.size()), |
134 output); | 134 output); |
135 } | 135 } |
136 | 136 |
137 bool DeserializeFormData(PickleIterator* iter, FormData* form_data) { | 137 bool DeserializeFormData(base::PickleIterator* iter, FormData* form_data) { |
138 int version; | 138 int version; |
139 FormData temp_form_data; | 139 FormData temp_form_data; |
140 if (!iter->ReadInt(&version)) { | 140 if (!iter->ReadInt(&version)) { |
141 DVLOG(1) << "Bad pickle of FormData, no version present"; | 141 DVLOG(1) << "Bad pickle of FormData, no version present"; |
142 return false; | 142 return false; |
143 } | 143 } |
144 | 144 |
145 if (version < 1 || version > kPickleVersion) { | 145 if (version < 1 || version > kPickleVersion) { |
146 DVLOG(1) << "Unknown FormData pickle version " << version; | 146 DVLOG(1) << "Unknown FormData pickle version " << version; |
147 return false; | 147 return false; |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 *form_data = temp_form_data; | 180 *form_data = temp_form_data; |
181 return true; | 181 return true; |
182 } | 182 } |
183 | 183 |
184 bool DeserializeFormDataFromBase64String(const base::StringPiece& input, | 184 bool DeserializeFormDataFromBase64String(const base::StringPiece& input, |
185 FormData* form_data) { | 185 FormData* form_data) { |
186 if (input.empty()) | 186 if (input.empty()) |
187 return false; | 187 return false; |
188 std::string pickle_data; | 188 std::string pickle_data; |
189 Base64Decode(input, &pickle_data); | 189 Base64Decode(input, &pickle_data); |
190 Pickle pickle(pickle_data.data(), static_cast<int>(pickle_data.size())); | 190 base::Pickle pickle(pickle_data.data(), static_cast<int>(pickle_data.size())); |
191 PickleIterator iter(pickle); | 191 base::PickleIterator iter(pickle); |
192 return DeserializeFormData(&iter, form_data); | 192 return DeserializeFormData(&iter, form_data); |
193 } | 193 } |
194 | 194 |
195 } // namespace autofill | 195 } // namespace autofill |
OLD | NEW |