Chromium Code Reviews| Index: components/autofill/core/browser/autofill_field.cc |
| diff --git a/components/autofill/core/browser/autofill_field.cc b/components/autofill/core/browser/autofill_field.cc |
| index 7ec8ebefa5498b816026a07126cc464a92de25e5..ed30aee96f5e49a4f5e19efc91f8e5fcff493548 100644 |
| --- a/components/autofill/core/browser/autofill_field.cc |
| +++ b/components/autofill/core/browser/autofill_field.cc |
| @@ -7,6 +7,7 @@ |
| #include <stdint.h> |
| #include "base/command_line.h" |
| +#include "base/i18n/case_conversion.h" |
| #include "base/i18n/string_search.h" |
| #include "base/logging.h" |
| #include "base/metrics/field_trial.h" |
| @@ -414,6 +415,27 @@ void FillStreetAddress(const base::string16& value, |
| field->value = base::UTF8ToUTF16(line); |
| } |
| +// Returns whether the |field| was filled with the state in |value| or its |
| +// abbreviation. First looks if |value| fits directly in the field, then looks |
| +// if the abbreviation of |value| fits. Does not fill if neither |value| or its |
| +// abbreviation are too long for the field. |
| +bool FillStateText(const base::string16& value, FormFieldData* field) { |
| + if (field->max_length == 0 || field->max_length >= value.size()) { |
| + // Fill the state value directly. |
| + field->value = value; |
| + return true; |
| + } else { |
| + // Fill with the state abbreviation. |
| + base::string16 abbreviation; |
| + state_names::GetNameAndAbbreviation(value, nullptr, &abbreviation); |
| + if (abbreviation.size() != 0 && field->max_length >= abbreviation.size()) { |
|
vabr (Chromium)
2016/03/17 09:03:37
optional nit: "!abbreviation.empty()" instead of "
sebsg
2016/03/17 14:46:08
Done.
|
| + field->value = base::i18n::ToUpper(abbreviation); |
| + return true; |
| + } |
| + } |
| + return false; |
| +} |
| + |
| std::string Hash32Bit(const std::string& str) { |
| std::string hash_bin = base::SHA1HashString(str); |
| DCHECK_EQ(base::kSHA1Length, hash_bin.length()); |
| @@ -566,6 +588,8 @@ bool AutofillField::FillFormField(const AutofillField& field, |
| } else if (type.GetStorableType() == CREDIT_CARD_NUMBER) { |
| FillCreditCardNumberField(field, value, field_data); |
| return true; |
| + } else if (type.GetStorableType() == ADDRESS_HOME_STATE) { |
| + return FillStateText(value, field_data); |
| } |
| field_data->value = value; |