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..f8fcfce455c8db836ac1ed7a1225af835b02b068 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,21 @@ void FillStreetAddress(const base::string16& value, |
field->value = base::UTF8ToUTF16(line); |
} |
+// Fills |field| with the state in |value|. Checks for potential field that |
+// expect the state abbreviation by looking at the maxlength attribute of the |
+// |field|. |
+void FillStateText(const base::string16& value, FormFieldData* field) { |
+ if (field->max_length != 2) { |
vabr (Chromium)
2016/03/16 16:38:45
The "2" here is related to the data used in GetAbb
sebsg
2016/03/16 23:41:01
Good idea, I also added a check to 0 (default valu
vabr (Chromium)
2016/03/17 09:03:37
Acknowledged, both your improvements SGTM.
|
+ // Fill the state value directly. |
+ field->value = value; |
+ } else { |
+ // Fill with the state abbreviation. |
+ base::string16 full, abbreviation; |
+ state_names::GetNameAndAbbreviation(value, &full, &abbreviation); |
vabr (Chromium)
2016/03/16 16:38:45
&full -> nullptr
sebsg
2016/03/16 23:41:01
Didn't think of that, thanks!
|
+ field->value = base::i18n::ToUpper(abbreviation); |
+ } |
+} |
+ |
std::string Hash32Bit(const std::string& str) { |
std::string hash_bin = base::SHA1HashString(str); |
DCHECK_EQ(base::kSHA1Length, hash_bin.length()); |
@@ -566,6 +582,9 @@ 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) { |
+ FillStateText(value, field_data); |
+ return true; |
} |
field_data->value = value; |