Index: chrome/browser/ui/views/payments/shipping_address_editor_view_controller.cc |
diff --git a/chrome/browser/ui/views/payments/shipping_address_editor_view_controller.cc b/chrome/browser/ui/views/payments/shipping_address_editor_view_controller.cc |
index 486e308e03f624cd9a3e1f60c89a31570b161647..bb46217d3dbb73bfaaed5b44b5f71fa0849937b5 100644 |
--- a/chrome/browser/ui/views/payments/shipping_address_editor_view_controller.cc |
+++ b/chrome/browser/ui/views/payments/shipping_address_editor_view_controller.cc |
@@ -405,14 +405,12 @@ bool ShippingAddressEditorViewController::SaveFieldsToProfile( |
bool success = true; |
for (const auto& field : text_fields()) { |
- // Force a blur in case the value was left untouched. |
- field.first->OnBlur(); |
// ValidatingTextfield* is the key, EditorField is the value. |
- if (field.first->invalid()) { |
- success = false; |
- } else { |
+ if (field.first->IsValid()) { |
success = profile->SetInfo(autofill::AutofillType(field.second.type), |
field.first->text(), locale); |
+ } else { |
+ success = false; |
} |
LOG_IF(ERROR, !success && !ignore_errors) |
<< "Can't setinfo(" << field.second.type << ", " << field.first->text(); |
@@ -425,12 +423,12 @@ bool ShippingAddressEditorViewController::SaveFieldsToProfile( |
// The country has already been dealt with. |
if (combobox->id() == autofill::ADDRESS_HOME_COUNTRY) |
continue; |
- if (combobox->invalid()) { |
- success = false; |
- } else { |
+ if (combobox->IsValid()) { |
success = profile->SetInfo( |
autofill::AutofillType(field.second.type), |
combobox->GetTextForRow(combobox->selected_index()), locale); |
+ } else { |
+ success = false; |
} |
LOG_IF(ERROR, !success && !ignore_errors) |
<< "Can't setinfo(" << field.second.type << ", " |
@@ -472,13 +470,31 @@ ShippingAddressEditorViewController::ShippingAddressValidationDelegate:: |
~ShippingAddressValidationDelegate() {} |
bool ShippingAddressEditorViewController::ShippingAddressValidationDelegate:: |
- ValidateTextfield(views::Textfield* textfield) { |
- return ValidateValue(textfield->text()); |
+ IsValidTextfield(views::Textfield* textfield) { |
+ return ValidateValue(textfield->text(), nullptr); |
} |
bool ShippingAddressEditorViewController::ShippingAddressValidationDelegate:: |
- ValidateCombobox(views::Combobox* combobox) { |
- return ValidateValue(combobox->GetTextForRow(combobox->selected_index())); |
+ IsValidCombobox(views::Combobox* combobox) { |
+ return ValidateValue(combobox->GetTextForRow(combobox->selected_index()), |
+ nullptr); |
+} |
+ |
+bool ShippingAddressEditorViewController::ShippingAddressValidationDelegate:: |
+ TextfieldValueChanged(views::Textfield* textfield) { |
+ base::string16 error_message; |
+ bool is_valid = ValidateValue(textfield->text(), &error_message); |
+ controller_->DisplayErrorMessageForField(field_, error_message); |
+ return is_valid; |
+} |
+ |
+bool ShippingAddressEditorViewController::ShippingAddressValidationDelegate:: |
+ ComboboxValueChanged(views::Combobox* combobox) { |
+ base::string16 error_message; |
+ bool is_valid = ValidateValue( |
+ combobox->GetTextForRow(combobox->selected_index()), &error_message); |
+ controller_->DisplayErrorMessageForField(field_, error_message); |
+ return is_valid; |
} |
void ShippingAddressEditorViewController::ShippingAddressValidationDelegate:: |
@@ -487,29 +503,27 @@ void ShippingAddressEditorViewController::ShippingAddressValidationDelegate:: |
} |
bool ShippingAddressEditorViewController::ShippingAddressValidationDelegate:: |
- ValidateValue(const base::string16& value) { |
+ ValidateValue(const base::string16& value, base::string16* error_message) { |
if (!value.empty()) { |
if (field_.type == autofill::PHONE_HOME_WHOLE_NUMBER && |
controller_->chosen_country_index_ < controller_->countries_.size() && |
!autofill::IsValidPhoneNumber( |
value, controller_->countries_[controller_->chosen_country_index_] |
.first)) { |
- controller_->DisplayErrorMessageForField( |
- field_, l10n_util::GetStringUTF16( |
- IDS_PAYMENTS_PHONE_INVALID_VALIDATION_MESSAGE)); |
+ if (error_message) { |
+ *error_message = l10n_util::GetStringUTF16( |
+ IDS_PAYMENTS_PHONE_INVALID_VALIDATION_MESSAGE); |
+ } |
return false; |
} |
// As long as other field types are non-empty, they are valid. |
- controller_->DisplayErrorMessageForField(field_, base::ASCIIToUTF16("")); |
return true; |
} |
- bool is_required_valid = !field_.required; |
- const base::string16 displayed_message = |
- is_required_valid ? base::ASCIIToUTF16("") |
- : l10n_util::GetStringUTF16( |
- IDS_PAYMENTS_FIELD_REQUIRED_VALIDATION_MESSAGE); |
- controller_->DisplayErrorMessageForField(field_, displayed_message); |
- return is_required_valid; |
+ if (error_message && field_.required) { |
+ *error_message = l10n_util::GetStringUTF16( |
+ IDS_PAYMENTS_FIELD_REQUIRED_VALIDATION_MESSAGE); |
+ } |
+ return !field_.required; |
} |
} // namespace payments |