Index: chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc |
diff --git a/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc b/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc |
index f4679ab0fcc76c4fd0f6734d275125ccae5baa3d..c9355b40d6a6b1e26ed51c304d5de84961de52f4 100644 |
--- a/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc |
+++ b/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc |
@@ -310,6 +310,13 @@ bool HasCompleteAndVerifiedData(const AutofillDataModel& data_model, |
return true; |
} |
+bool IsCardHolderNameValidForWallet(const string16& name) { |
+ base::string16 whitespace_collapsed_name = CollapseWhitespace(name, true); |
+ std::vector<base::string16> split_name; |
+ SplitString(whitespace_collapsed_name, ' ', &split_name); |
+ return split_name.size() >= 2; |
+} |
+ |
} // namespace |
AutofillDialogController::~AutofillDialogController() {} |
@@ -1128,13 +1135,59 @@ gfx::Image AutofillDialogControllerImpl::IconForField( |
string16 AutofillDialogControllerImpl::InputValidityMessage( |
AutofillFieldType type, |
const string16& value) const { |
- if (InputIsValid(type, value)) |
- return string16(); |
+ switch (AutofillType::GetEquivalentFieldType(type)) { |
+ case EMAIL_ADDRESS: |
+ if (value.empty()) |
Evan Stade
2013/05/24 19:22:54
how about:
if (!value.empty() && !IsValidEmailAdd
ahutter
2013/05/24 19:55:43
Done.
|
+ return ASCIIToUTF16("You forgot one"); |
+ return IsValidEmailAddress(value) ? |
+ base::string16() : |
+ ASCIIToUTF16("Are you sure this is right?"); |
Evan Stade
2013/05/24 19:22:54
\n
ahutter
2013/05/24 19:55:43
two newlines?
Evan Stade
2013/05/24 21:29:35
ah, no.
|
- if (value.empty()) |
- return ASCIIToUTF16("You forgot one"); |
+ case CREDIT_CARD_NUMBER: |
+ if (value.empty()) |
+ return ASCIIToUTF16("You forgot one"); |
+ return autofill::IsValidCreditCardNumber(value) ? |
+ base::string16() : |
+ ASCIIToUTF16("Are you sure this is right?"); |
Evan Stade
2013/05/24 19:22:54
\n
ahutter
2013/05/24 19:55:43
Done.
|
+ case CREDIT_CARD_NAME: |
+ // Wallet requires a first and last name. |
+ if (IsPayingWithWallet() && !IsCardHolderNameValidForWallet(value)) { |
+ return l10n_util::GetStringUTF16( |
Evan Stade
2013/05/24 19:22:54
too much indent
ahutter
2013/05/24 19:55:43
Done.
|
+ IDS_AUTOFILL_DIALOG_VALIDATION_WALLET_REQUIRES_TWO_NAMES); |
+ } |
+ break; |
Evan Stade
2013/05/24 19:22:54
\n
ahutter
2013/05/24 19:55:43
Done.
|
+ case CREDIT_CARD_EXP_MONTH: |
+ case CREDIT_CARD_EXP_4_DIGIT_YEAR: |
+ break; |
Evan Stade
2013/05/24 19:22:54
\n
ahutter
2013/05/24 19:55:43
Done.
|
+ case CREDIT_CARD_VERIFICATION_CODE: |
+ if (value.empty()) |
+ return ASCIIToUTF16("You forgot one"); |
+ return autofill::IsValidCreditCardSecurityCode(value) ? |
+ base::string16() : |
+ ASCIIToUTF16("Are you sure this is right?"); |
Evan Stade
2013/05/24 19:22:54
\n
ahutter
2013/05/24 19:55:43
two newlines?
Evan Stade
2013/05/24 21:29:35
ah, no.
|
+ |
+ case ADDRESS_HOME_LINE1: |
+ break; |
Evan Stade
2013/05/24 19:22:54
\n
ahutter
2013/05/24 19:55:43
Done.
|
+ case ADDRESS_HOME_LINE2: |
+ return base::string16(); // Line 2 is optional - always valid. |
Evan Stade
2013/05/24 19:22:54
\n
ahutter
2013/05/24 19:55:43
Done.
|
+ case ADDRESS_HOME_CITY: |
+ case ADDRESS_HOME_STATE: |
+ case ADDRESS_HOME_ZIP: |
+ case ADDRESS_HOME_COUNTRY: |
+ break; |
+ |
+ case NAME_FULL: // Used for shipping. |
+ break; |
+ |
+ case PHONE_HOME_WHOLE_NUMBER: // Used in billing section. |
+ break; |
+ |
+ default: |
+ NOTREACHED(); // Trying to validate unknown field. |
+ break; |
+ } |
- return ASCIIToUTF16("Are you sure this is right?"); |
+ return !value.empty() ? base::string16() : ASCIIToUTF16("You forgot one"); |
} |
// TODO(estade): Replace all the error messages here with more helpful and |
@@ -1175,7 +1228,8 @@ ValidityData AutofillDialogControllerImpl::InputsAreValid( |
// If there is a credit card number and a CVC, validate them together. |
if (field_values.count(CREDIT_CARD_NUMBER) && |
field_values.count(CREDIT_CARD_VERIFICATION_CODE) && |
- InputIsValid(CREDIT_CARD_NUMBER, field_values[CREDIT_CARD_NUMBER])) { |
+ InputValidityMessage(CREDIT_CARD_NUMBER, |
+ field_values[CREDIT_CARD_NUMBER]).empty()) { |
if (!autofill::IsValidCreditCardSecurityCode( |
field_values[CREDIT_CARD_VERIFICATION_CODE], |
field_values[CREDIT_CARD_NUMBER])) { |
@@ -2261,46 +2315,6 @@ bool AutofillDialogControllerImpl::IsManuallyEditingAnySection() const { |
return false; |
} |
-bool AutofillDialogControllerImpl::InputIsValid(AutofillFieldType type, |
- const string16& value) const { |
- switch (AutofillType::GetEquivalentFieldType(type)) { |
- case EMAIL_ADDRESS: |
- return IsValidEmailAddress(value); |
- |
- case CREDIT_CARD_NUMBER: |
- return autofill::IsValidCreditCardNumber(value); |
- case CREDIT_CARD_NAME: |
- break; |
- case CREDIT_CARD_EXP_MONTH: |
- case CREDIT_CARD_EXP_4_DIGIT_YEAR: |
- break; |
- case CREDIT_CARD_VERIFICATION_CODE: |
- return autofill::IsValidCreditCardSecurityCode(value); |
- |
- case ADDRESS_HOME_LINE1: |
- break; |
- case ADDRESS_HOME_LINE2: |
- return true; // Line 2 is optional - always valid. |
- case ADDRESS_HOME_CITY: |
- case ADDRESS_HOME_STATE: |
- case ADDRESS_HOME_ZIP: |
- case ADDRESS_HOME_COUNTRY: |
- break; |
- |
- case NAME_FULL: // Used for shipping. |
- break; |
- |
- case PHONE_HOME_WHOLE_NUMBER: // Used in billing section. |
- break; |
- |
- default: |
- NOTREACHED(); // Trying to validate unknown field. |
- break; |
- } |
- |
- return !value.empty(); |
-} |
- |
bool AutofillDialogControllerImpl::AllSectionsAreValid() const { |
for (size_t section = SECTION_MIN; section <= SECTION_MAX; ++section) { |
if (!SectionIsValid(static_cast<DialogSection>(section))) |