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/browser/autofill_field.h" | 5 #include "components/autofill/core/browser/autofill_field.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/sha1.h" | 8 #include "base/sha1.h" |
9 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
10 #include "base/strings/string_split.h" | 10 #include "base/strings/string_split.h" |
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
255 } else if (storable_type == CREDIT_CARD_TYPE) { | 255 } else if (storable_type == CREDIT_CARD_TYPE) { |
256 FillCreditCardTypeSelectControl(value, field); | 256 FillCreditCardTypeSelectControl(value, field); |
257 } | 257 } |
258 } | 258 } |
259 | 259 |
260 // Fills in the month control |field| with |value|. |value| should be a date | 260 // Fills in the month control |field| with |value|. |value| should be a date |
261 // formatted as MM/YYYY. If it isn't, filling will fail. | 261 // formatted as MM/YYYY. If it isn't, filling will fail. |
262 bool FillMonthControl(const base::string16& value, FormFieldData* field) { | 262 bool FillMonthControl(const base::string16& value, FormFieldData* field) { |
263 // Autofill formats a combined date as month/year. | 263 // Autofill formats a combined date as month/year. |
264 std::vector<base::string16> pieces; | 264 std::vector<base::string16> pieces; |
265 base::SplitString(value, char16('/'), &pieces); | 265 base::SplitString(value, base::char16('/'), &pieces); |
266 if (pieces.size() != 2) | 266 if (pieces.size() != 2) |
267 return false; | 267 return false; |
268 | 268 |
269 // HTML5 input="month" is formatted as year-month. | 269 // HTML5 input="month" is formatted as year-month. |
270 base::string16 month = pieces[0]; | 270 base::string16 month = pieces[0]; |
271 base::string16 year = pieces[1]; | 271 base::string16 year = pieces[1]; |
272 if ((month.size() != 1 && month.size() != 2) || year.size() != 4) | 272 if ((month.size() != 1 && month.size() != 2) || year.size() != 4) |
273 return false; | 273 return false; |
274 | 274 |
275 // HTML5 input="month" expects zero-padded months. | 275 // HTML5 input="month" expects zero-padded months. |
276 if (month.size() == 1) | 276 if (month.size() == 1) |
277 month = ASCIIToUTF16("0") + month; | 277 month = ASCIIToUTF16("0") + month; |
278 | 278 |
279 field->value = year + ASCIIToUTF16("-") + month; | 279 field->value = year + ASCIIToUTF16("-") + month; |
280 return true; | 280 return true; |
281 } | 281 } |
282 | 282 |
283 // Fills |field| with the street address in |value|. Translates newlines into | 283 // Fills |field| with the street address in |value|. Translates newlines into |
284 // equivalent separators when necessary, i.e. when filling a single-line field. | 284 // equivalent separators when necessary, i.e. when filling a single-line field. |
285 void FillStreetAddress(const base::string16& value, | 285 void FillStreetAddress(const base::string16& value, |
286 FormFieldData* field) { | 286 FormFieldData* field) { |
287 if (field->form_control_type == "textarea") { | 287 if (field->form_control_type == "textarea") { |
288 field->value = value; | 288 field->value = value; |
289 return; | 289 return; |
290 } | 290 } |
291 | 291 |
292 base::string16 one_line_value; | 292 base::string16 one_line_value; |
293 const char16 kNewline[] = { '\n', 0 }; | 293 const base::char16 kNewline[] = { '\n', 0 }; |
294 const base::string16 separator = | 294 const base::string16 separator = |
295 l10n_util::GetStringUTF16(IDS_AUTOFILL_ADDRESS_LINE_SEPARATOR); | 295 l10n_util::GetStringUTF16(IDS_AUTOFILL_ADDRESS_LINE_SEPARATOR); |
296 base::ReplaceChars(value, kNewline, separator, &one_line_value); | 296 base::ReplaceChars(value, kNewline, separator, &one_line_value); |
297 field->value = one_line_value; | 297 field->value = one_line_value; |
298 } | 298 } |
299 | 299 |
300 std::string Hash32Bit(const std::string& str) { | 300 std::string Hash32Bit(const std::string& str) { |
301 std::string hash_bin = base::SHA1HashString(str); | 301 std::string hash_bin = base::SHA1HashString(str); |
302 DCHECK_EQ(20U, hash_bin.length()); | 302 DCHECK_EQ(20U, hash_bin.length()); |
303 | 303 |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
401 FillSelectControl(type, value, app_locale, field_data); | 401 FillSelectControl(type, value, app_locale, field_data); |
402 else if (field_data->form_control_type == "month") | 402 else if (field_data->form_control_type == "month") |
403 FillMonthControl(value, field_data); | 403 FillMonthControl(value, field_data); |
404 else if (type.GetStorableType() == ADDRESS_HOME_STREET_ADDRESS) | 404 else if (type.GetStorableType() == ADDRESS_HOME_STREET_ADDRESS) |
405 FillStreetAddress(value, field_data); | 405 FillStreetAddress(value, field_data); |
406 else | 406 else |
407 field_data->value = value; | 407 field_data->value = value; |
408 } | 408 } |
409 | 409 |
410 } // namespace autofill | 410 } // namespace autofill |
OLD | NEW |