172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// found in the LICENSE file. 472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "base/utf_string_conversions.h" 672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/autofill/autofill_profile.h" 772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/autofill/autofill_type.h" 872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/autofill/credit_card.h" 972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/autofill/select_control_handler.h" 1072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "testing/gtest/include/gtest/gtest.h" 1172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "webkit/glue/form_field.h" 1272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 1372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTEST(SelectControlHandlerTest, CreditCardMonthExact) { 1472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const char* const kMonthsNumeric[] = { 1572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", 1672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen }; 1772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::vector<string16> options(arraysize(kMonthsNumeric)); 1872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen for (size_t i = 0; i < arraysize(kMonthsNumeric); ++i) 1972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen options[i] = ASCIIToUTF16(kMonthsNumeric[i]); 2072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 2172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen webkit_glue::FormField field; 22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen field.form_control_type = ASCIIToUTF16("select-one"); 23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen field.option_strings = options; 2472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 2572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen CreditCard credit_card; 26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen credit_card.SetInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("01")); 27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen autofill::FillSelectControl(credit_card, CREDIT_CARD_EXP_MONTH, &field); 28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(ASCIIToUTF16("01"), field.value); 2972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 3072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 3172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTEST(SelectControlHandlerTest, CreditCardMonthAbbreviated) { 3272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const char* const kMonthsAbbreviated[] = { 3372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "Jan", "Feb", "Mar", "Apr", "May", "Jun", 3472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", 3572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen }; 3672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::vector<string16> options(arraysize(kMonthsAbbreviated)); 3772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen for (size_t i = 0; i < arraysize(kMonthsAbbreviated); ++i) 3872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen options[i] = ASCIIToUTF16(kMonthsAbbreviated[i]); 3972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 4072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen webkit_glue::FormField field; 41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen field.form_control_type = ASCIIToUTF16("select-one"); 42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen field.option_strings = options; 4372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 4472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen CreditCard credit_card; 45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen credit_card.SetInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("01")); 46ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen autofill::FillSelectControl(credit_card, CREDIT_CARD_EXP_MONTH, &field); 47ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(ASCIIToUTF16("Jan"), field.value); 4872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 4972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 5072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTEST(SelectControlHandlerTest, CreditCardMonthFull) { 5172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const char* const kMonthsFull[] = { 5272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "January", "February", "March", "April", "May", "June", 5372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "July", "August", "September", "October", "November", "December", 5472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen }; 5572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::vector<string16> options(arraysize(kMonthsFull)); 5672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen for (size_t i = 0; i < arraysize(kMonthsFull); ++i) 5772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen options[i] = ASCIIToUTF16(kMonthsFull[i]); 5872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 5972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen webkit_glue::FormField field; 60ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen field.form_control_type = ASCIIToUTF16("select-one"); 61ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen field.option_strings = options; 6272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 6372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen CreditCard credit_card; 64ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen credit_card.SetInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("01")); 65ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen autofill::FillSelectControl(credit_card, CREDIT_CARD_EXP_MONTH, &field); 66ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(ASCIIToUTF16("January"), field.value); 6772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 6872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 6972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTEST(SelectControlHandlerTest, CreditCardMonthNumeric) { 7072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const char* const kMonthsNumeric[] = { 7172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", 7272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen }; 7372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::vector<string16> options(arraysize(kMonthsNumeric)); 7472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen for (size_t i = 0; i < arraysize(kMonthsNumeric); ++i) 7572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen options[i] = ASCIIToUTF16(kMonthsNumeric[i]); 7672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 7772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen webkit_glue::FormField field; 78ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen field.form_control_type = ASCIIToUTF16("select-one"); 79ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen field.option_strings = options; 8072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 8172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen CreditCard credit_card; 82ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen credit_card.SetInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("01")); 83ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen autofill::FillSelectControl(credit_card, CREDIT_CARD_EXP_MONTH, &field); 84ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(ASCIIToUTF16("1"), field.value); 8572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 8672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 8772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTEST(SelectControlHandlerTest, AddressCountryFull) { 8872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const char* const kCountries[] = { 8972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "Albania", "Canada" 9072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen }; 9172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::vector<string16> options(arraysize(kCountries)); 9272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen for (size_t i = 0; i < arraysize(kCountries); ++i) 9372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen options[i] = ASCIIToUTF16(kCountries[i]); 9472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 9572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen webkit_glue::FormField field; 96ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen field.form_control_type = ASCIIToUTF16("select-one"); 97ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen field.option_strings = options; 98ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 99ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen AutofillProfile profile; 100ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen profile.SetInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("CA")); 101ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen autofill::FillSelectControl(profile, ADDRESS_HOME_COUNTRY, &field); 102ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(ASCIIToUTF16("Canada"), field.value); 10372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 10472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 10572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTEST(SelectControlHandlerTest, AddressCountryAbbrev) { 10672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const char* const kCountries[] = { 10772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "AL", "CA" 10872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen }; 10972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::vector<string16> options(arraysize(kCountries)); 11072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen for (size_t i = 0; i < arraysize(kCountries); ++i) 11172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen options[i] = ASCIIToUTF16(kCountries[i]); 11272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 11372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen webkit_glue::FormField field; 114ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen field.form_control_type = ASCIIToUTF16("select-one"); 115ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen field.option_strings = options; 116ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 117ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen AutofillProfile profile; 118ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen profile.SetInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("Canada")); 119ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen autofill::FillSelectControl(profile, ADDRESS_HOME_COUNTRY, &field); 120ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(ASCIIToUTF16("CA"), field.value); 12172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 12272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 12372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTEST(SelectControlHandlerTest, AddressStateFull) { 12472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const char* const kStates[] = { 12572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "Alabama", "California" 12672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen }; 12772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::vector<string16> options(arraysize(kStates)); 12872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen for (size_t i = 0; i < arraysize(kStates); ++i) 12972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen options[i] = ASCIIToUTF16(kStates[i]); 13072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 13172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen webkit_glue::FormField field; 132ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen field.form_control_type = ASCIIToUTF16("select-one"); 133ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen field.option_strings = options; 134ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 135ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen AutofillProfile profile; 136ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen profile.SetInfo(ADDRESS_HOME_STATE, ASCIIToUTF16("CA")); 137ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen autofill::FillSelectControl(profile, ADDRESS_HOME_STATE, &field); 138ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(ASCIIToUTF16("California"), field.value); 13972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 14072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 14172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTEST(SelectControlHandlerTest, AddressStateAbbrev) { 14272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const char* const kStates[] = { 14372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "AL", "CA" 14472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen }; 14572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::vector<string16> options(arraysize(kStates)); 14672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen for (size_t i = 0; i < arraysize(kStates); ++i) 14772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen options[i] = ASCIIToUTF16(kStates[i]); 14872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 14972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen webkit_glue::FormField field; 150ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen field.form_control_type = ASCIIToUTF16("select-one"); 151ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen field.option_strings = options; 152ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 153ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen AutofillProfile profile; 154ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen profile.SetInfo(ADDRESS_HOME_STATE, ASCIIToUTF16("California")); 155ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen autofill::FillSelectControl(profile, ADDRESS_HOME_STATE, &field); 156ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(ASCIIToUTF16("CA"), field.value); 15772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 158