diff options
author | ramankk@chromium.org <ramankk@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-19 15:49:21 +0000 |
---|---|---|
committer | ramankk@chromium.org <ramankk@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-19 15:49:21 +0000 |
commit | 4b76c7799e2b103d8e6eb15fead86fe97a87553b (patch) | |
tree | 541b88eb4a52167c2a6b69ed03b2f6d81ee02bbf | |
parent | 3c5ba1d96fd7a5684dec3485ca150d1f89920d13 (diff) | |
download | chromium_src-4b76c7799e2b103d8e6eb15fead86fe97a87553b.zip chromium_src-4b76c7799e2b103d8e6eb15fead86fe97a87553b.tar.gz chromium_src-4b76c7799e2b103d8e6eb15fead86fe97a87553b.tar.bz2 |
Autofill:Autocomplete: Enable autocheckout of input elements of type password. This will support fields like CVV which are created as password fields by some sites.
BUG=187267
Review URL: https://chromiumcodereview.appspot.com/12721004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@189025 0039d316-1c4b-4281-b951-d872f2087c98
51 files changed, 159 insertions, 39 deletions
diff --git a/chrome/renderer/autofill/form_autofill_browsertest.cc b/chrome/renderer/autofill/form_autofill_browsertest.cc index b59850a..1a2e9d2 100644 --- a/chrome/renderer/autofill/form_autofill_browsertest.cc +++ b/chrome/renderer/autofill/form_autofill_browsertest.cc @@ -302,7 +302,6 @@ TEST_F(FormAutofillTest, WebFormControlElementToFormFieldSelect) { TEST_F(FormAutofillTest, WebFormControlElementToFormFieldInvalidType) { LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" " <INPUT type=\"hidden\" id=\"hidden\" value=\"apple\"/>" - " <INPUT type=\"password\" id=\"password\" value=\"secret\"/>" " <INPUT type=\"submit\" id=\"submit\" value=\"Send\"/>" "</FORM>"); @@ -321,13 +320,6 @@ TEST_F(FormAutofillTest, WebFormControlElementToFormFieldInvalidType) { expected.form_control_type = "hidden"; EXPECT_FORM_FIELD_DATA_EQUALS(expected, result); - web_element = frame->document().getElementById("password"); - element = web_element.to<WebFormControlElement>(); - WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result); - expected.name = ASCIIToUTF16("password"); - expected.form_control_type = "password"; - EXPECT_FORM_FIELD_DATA_EQUALS(expected, result); - web_element = frame->document().getElementById("submit"); element = web_element.to<WebFormControlElement>(); WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result); @@ -336,6 +328,28 @@ TEST_F(FormAutofillTest, WebFormControlElementToFormFieldInvalidType) { EXPECT_FORM_FIELD_DATA_EQUALS(expected, result); } +// We should be able to extract password fields. +TEST_F(FormAutofillTest, WebFormControlElementToPasswordFormField) { + LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" + " <INPUT type=\"password\" id=\"password\" value=\"secret\"/>" + "</FORM>"); + + WebFrame* frame = GetMainFrame(); + ASSERT_NE(static_cast<WebFrame*>(NULL), frame); + + WebElement web_element = frame->document().getElementById("password"); + WebFormControlElement element = web_element.to<WebFormControlElement>(); + FormFieldData result; + WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result); + + FormFieldData expected; + expected.max_length = WebInputElement::defaultMaxLength(); + expected.name = ASCIIToUTF16("password"); + expected.form_control_type = "password"; + expected.value = ASCIIToUTF16("secret"); + EXPECT_FORM_FIELD_DATA_EQUALS(expected, result); +} + // We should be able to extract the autocompletetype attribute. TEST_F(FormAutofillTest, WebFormControlElementToFormFieldAutocompletetype) { std::string html = @@ -419,12 +433,12 @@ TEST_F(FormAutofillTest, WebFormElementToFormData) { " <OPTION value=\"CA\">California</OPTION>" " <OPTION value=\"TX\">Texas</OPTION>" " </SELECT>" - // The below inputs should be ignored - " <LABEL for=\"notvisible\">Hidden:</LABEL>" - " <INPUT type=\"hidden\" id=\"notvisible\" value=\"apple\"/>" " <LABEL for=\"password\">Password:</LABEL>" " <INPUT type=\"password\" id=\"password\" value=\"secret\"/>" " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" + // The below inputs should be ignored + " <LABEL for=\"notvisible\">Hidden:</LABEL>" + " <INPUT type=\"hidden\" id=\"notvisible\" value=\"apple\"/>" "</FORM>"); WebFrame* frame = GetMainFrame(); @@ -450,7 +464,7 @@ TEST_F(FormAutofillTest, WebFormElementToFormData) { EXPECT_EQ(GURL("http://cnn.com"), form.action); const std::vector<FormFieldData>& fields = form.fields; - ASSERT_EQ(3U, fields.size()); + ASSERT_EQ(4U, fields.size()); FormFieldData expected; expected.name = ASCIIToUTF16("firstname"); @@ -473,6 +487,13 @@ TEST_F(FormAutofillTest, WebFormElementToFormData) { expected.form_control_type = "select-one"; expected.max_length = 0; EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[2]); + + expected.name = ASCIIToUTF16("password"); + expected.value = ASCIIToUTF16("secret"); + expected.label = ASCIIToUTF16("Password:"); + expected.form_control_type = "password"; + expected.max_length = WebInputElement::defaultMaxLength(); + EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[3]); } // We should not be able to serialize a form with too many fillable fields. diff --git a/chrome/test/data/autofill/heuristics/output/02_checkout_advanceautoparts.com.out b/chrome/test/data/autofill/heuristics/output/02_checkout_advanceautoparts.com.out index 80b1077..63b2f8c 100644 --- a/chrome/test/data/autofill/heuristics/output/02_checkout_advanceautoparts.com.out +++ b/chrome/test/data/autofill/heuristics/output/02_checkout_advanceautoparts.com.out @@ -11,6 +11,8 @@ PHONE_HOME_NUMBER | billDayPhonePart2 | ) | PHONE_HOME_NUMBER | billDayPhonePart3 | *Day Phone: | EMAIL_ADDRESS | billEmail | *Email Address: | UNKNOWN_TYPE | sendMeEmail | *Email Address: | checked +UNKNOWN_TYPE | billPassword | Password: | +UNKNOWN_TYPE | billPasswordVerify | Confirm Password: | NAME_FIRST | shipFirstName | *First Name: | NAME_LAST | shipLastName | *Last Name: | ADDRESS_HOME_LINE1 | shipAddress1 | *Street Address 1: | diff --git a/chrome/test/data/autofill/heuristics/output/02_checkout_ae.com.out b/chrome/test/data/autofill/heuristics/output/02_checkout_ae.com.out index 7b23197..ac9f156 100644 --- a/chrome/test/data/autofill/heuristics/output/02_checkout_ae.com.out +++ b/chrome/test/data/autofill/heuristics/output/02_checkout_ae.com.out @@ -40,6 +40,8 @@ PHONE_HOME_WHOLE_NUMBER | billingPhone | Billing Phone Number CLOSEThis must mat UNKNOWN_TYPE | accessPassNumber | My AEREWARD$ # CLOSEAEREWARD$ NumberEnter the number found on the back of your AEREWARD$ card to earn rewards for your purchase.Learn More about AEREWARD$ | UNKNOWN_TYPE | aeRewardsSignUp | Sign up now and receive 25 points just for signing up! Learn More | true UNKNOWN_TYPE | aeAccount | Create my AE Account.CLOSECreate an AE Account to:Save Your Personal Info For Next TimeCheckout FasterTrack An Order Quicker Sign up now and receive 25 points just for signing up! Learn More | true +UNKNOWN_TYPE | aeAccountPass | Password (6-15 Letters & Numbers) | +UNKNOWN_TYPE | aeAccountPassConfirm | Confirm Password | UNKNOWN_TYPE | birthMonthBillAddField | Birthday: CLOSEWe'd love to wish you a happy birthday when it's time! However, you need to be 13 or older to create an account. | UNKNOWN_TYPE | birthDayBillAddField | Birthday: CLOSEWe'd love to wish you a happy birthday when it's time! However, you need to be 13 or older to create an account. | UNKNOWN_TYPE | birthYearBillAddField | Birthday: CLOSEWe'd love to wish you a happy birthday when it's time! However, you need to be 13 or older to create an account. | diff --git a/chrome/test/data/autofill/heuristics/output/03_checkout_cduniverse.com.out b/chrome/test/data/autofill/heuristics/output/03_checkout_cduniverse.com.out index b5e2157..251fbf5 100644 --- a/chrome/test/data/autofill/heuristics/output/03_checkout_cduniverse.com.out +++ b/chrome/test/data/autofill/heuristics/output/03_checkout_cduniverse.com.out @@ -1,5 +1,7 @@ NAME_FIRST | HT_First_Name | First Name | NAME_LAST | HT_Last_Name | Last Name | +UNKNOWN_TYPE | HT_Password | Password | +UNKNOWN_TYPE | HT_Conf_Password | Re-enter Password | EMAIL_ADDRESS | HT_email | Email | ADDRESS_BILLING_LINE1 | HT_Bill_Address1 | Address 1 | ADDRESS_BILLING_LINE2 | HT_Bill_Address2 | Address 2 | diff --git a/chrome/test/data/autofill/heuristics/output/03_checkout_hsn.com.out b/chrome/test/data/autofill/heuristics/output/03_checkout_hsn.com.out index a7c12cd..8bda8e2 100644 --- a/chrome/test/data/autofill/heuristics/output/03_checkout_hsn.com.out +++ b/chrome/test/data/autofill/heuristics/output/03_checkout_hsn.com.out @@ -35,4 +35,6 @@ UNKNOWN_TYPE | IsDebitCard | Is this a Debit Card? | 1 UNKNOWN_TYPE | IsDebitCard | Yes | 0 UNKNOWN_TYPE | Body$SaveCC4Later | Is this a Debit Card? | on UNKNOWN_TYPE | PaymentTypeSelection | OR | 1 +UNKNOWN_TYPE | Body$NewPassword | Create Password (optional) | +UNKNOWN_TYPE | Body$RepeatNewPassword | Repeat Password (optional) | UNKNOWN_TYPE | Body$NewPasswordHint | Password Hint (optional) | diff --git a/chrome/test/data/autofill/heuristics/output/04_checkout_jcrew.com.out b/chrome/test/data/autofill/heuristics/output/04_checkout_jcrew.com.out index c36cad0..8dd9238 100644 --- a/chrome/test/data/autofill/heuristics/output/04_checkout_jcrew.com.out +++ b/chrome/test/data/autofill/heuristics/output/04_checkout_jcrew.com.out @@ -8,4 +8,6 @@ ADDRESS_HOME_CITY | ADDRESS<>city | city * | ADDRESS_HOME_STATE | ADDRESS<>state_cd | state/province * | ADDRESS_HOME_ZIP | ADDRESS<>postal | zip code * | PHONE_HOME_WHOLE_NUMBER | ADDRESS<>phone | phone number (numbers only) * | +UNKNOWN_TYPE | anonPassword | create password | +UNKNOWN_TYPE | anonPasswordConfirm | confirm password | UNKNOWN_TYPE | anonPasswordHint | create password hint | diff --git a/chrome/test/data/autofill/heuristics/output/05_checkout_nordstrom.com.out b/chrome/test/data/autofill/heuristics/output/05_checkout_nordstrom.com.out index 682d075..176e1f7 100644 --- a/chrome/test/data/autofill/heuristics/output/05_checkout_nordstrom.com.out +++ b/chrome/test/data/autofill/heuristics/output/05_checkout_nordstrom.com.out @@ -19,3 +19,5 @@ ADDRESS_HOME_LINE2 | ctl00$mainContentPlaceHolder$shippingAddressForm$address2 | ADDRESS_HOME_CITY | ctl00$mainContentPlaceHolder$shippingAddressForm$city | City | ADDRESS_HOME_STATE | ctl00$mainContentPlaceHolder$shippingAddressForm$stateProvince | State/Province | -1 ADDRESS_HOME_ZIP | ctl00$mainContentPlaceHolder$shippingAddressForm$zipCode | Zip/Postal Code | +UNKNOWN_TYPE | ctl00$mainContentPlaceHolder$registrationPassword | Password | +UNKNOWN_TYPE | ctl00$mainContentPlaceHolder$registrationPasswordConfirm | Confirm Password | diff --git a/chrome/test/data/autofill/heuristics/output/06_checkout_qvc.com.out b/chrome/test/data/autofill/heuristics/output/06_checkout_qvc.com.out index f0f8e58..a161831 100644 --- a/chrome/test/data/autofill/heuristics/output/06_checkout_qvc.com.out +++ b/chrome/test/data/autofill/heuristics/output/06_checkout_qvc.com.out @@ -1,5 +1,7 @@ EMAIL_ADDRESS | EmailAddress | * E-mail Address: | EMAIL_ADDRESS | EmailAddressVerify | * Confirm E-mail Address: | +UNKNOWN_TYPE | Pin | * PIN: | +UNKNOWN_TYPE | PinVerify | * Verify Your PIN: | UNKNOWN_TYPE | Prefix | * Title: | 06 NAME_FIRST | BilltoFirstName | * First Name: | NAME_LAST | BilltoLastName | * Last Name: | diff --git a/chrome/test/data/autofill/heuristics/output/08_register_adobe.com.out b/chrome/test/data/autofill/heuristics/output/08_register_adobe.com.out index e1bb4b6..89885f0 100644 --- a/chrome/test/data/autofill/heuristics/output/08_register_adobe.com.out +++ b/chrome/test/data/autofill/heuristics/output/08_register_adobe.com.out @@ -2,5 +2,7 @@ EMAIL_ADDRESS | adobeId | E-Mail AddressThis will be your Adobe ID | NAME_FIRST | firstName | First Name | NAME_LAST | lastName | Last Name | ADDRESS_HOME_COUNTRY | countryCode | Country | +UNKNOWN_TYPE | subscribePass1 | PasswordMust be between 6-12 characters | +UNKNOWN_TYPE | subscribePass2 | Confirm Password | UNKNOWN_TYPE | agreeToTou | I have read and agree to the and the | on UNKNOWN_TYPE | hostedOptIn | Yes! I would like to receive communications relating to Adobe, its products and services including product releases, product upgrades, seminars, events, surveys, training and special offers, and Adobe, and its agents may use data I have provided in accordance with the | on diff --git a/chrome/test/data/autofill/heuristics/output/08_register_amazon.com.out b/chrome/test/data/autofill/heuristics/output/08_register_amazon.com.out index f49c7e9..a0593d5 100644 --- a/chrome/test/data/autofill/heuristics/output/08_register_amazon.com.out +++ b/chrome/test/data/autofill/heuristics/output/08_register_amazon.com.out @@ -3,3 +3,5 @@ UNKNOWN_TYPE | action | Create a new account (Recommended for Business accounts) UNKNOWN_TYPE | userName | First and Last Name: | EMAIL_ADDRESS | email | E-mail Address: | EMAIL_ADDRESS | emailCheck | Re-type E-mail Address: | +UNKNOWN_TYPE | password | Password: | +UNKNOWN_TYPE | passwordCheck | Re-type Password: | diff --git a/chrome/test/data/autofill/heuristics/output/08_register_aol.com.out b/chrome/test/data/autofill/heuristics/output/08_register_aol.com.out index 8afd4fe..4b6a6fc 100644 --- a/chrome/test/data/autofill/heuristics/output/08_register_aol.com.out +++ b/chrome/test/data/autofill/heuristics/output/08_register_aol.com.out @@ -1,7 +1,9 @@ NAME_FIRST | {actionForm.firstName} | First Name | NAME_LAST | {actionForm.lastName} | Last Name | UNKNOWN_TYPE | {actionForm.desiredSN} | NEW! Pick a username: What's new? | +UNKNOWN_TYPE | {actionForm.password} | Password | UNKNOWN_TYPE | verifyPasswordHint | Password | Retype password +UNKNOWN_TYPE | {actionForm.verifyPassword} | Password | UNKNOWN_TYPE | wlw-select_key:{actionForm.dobMonth} | Select Month | UNKNOWN_TYPE | {actionForm.dobDay} | Select Month | Day (dd) UNKNOWN_TYPE | {actionForm.dobYear} | Select Month | Year (yyyy) diff --git a/chrome/test/data/autofill/heuristics/output/08_register_bestbuy.com.out b/chrome/test/data/autofill/heuristics/output/08_register_bestbuy.com.out index 83673d3..8e53e04 100644 --- a/chrome/test/data/autofill/heuristics/output/08_register_bestbuy.com.out +++ b/chrome/test/data/autofill/heuristics/output/08_register_bestbuy.com.out @@ -3,5 +3,7 @@ NAME_MIDDLE_INITIAL | TxtMI | MI | NAME_LAST | TxtLastName | *Last Name | EMAIL_ADDRESS | TxtEmail | *E-Mail Address | EMAIL_ADDRESS | TxtEmailConfirm | *Retype E-Mail Address | +UNKNOWN_TYPE | PwdPassword | *Password (6 to 30 characters. At least one number.) | +UNKNOWN_TYPE | PwdPasswordConfirm | *Retype Password (must match exactly) | ADDRESS_HOME_ZIP | TxtPostalCode | *ZIP Code | UNKNOWN_TYPE | TxtRzMembershipId | Enter 10-Digit Member ID (optional) | diff --git a/chrome/test/data/autofill/heuristics/output/08_register_continental.com.out b/chrome/test/data/autofill/heuristics/output/08_register_continental.com.out index 053e6ec8..8238867 100644 --- a/chrome/test/data/autofill/heuristics/output/08_register_continental.com.out +++ b/chrome/test/data/autofill/heuristics/output/08_register_continental.com.out @@ -32,7 +32,11 @@ UNKNOWN_TYPE | ctl00$ContentInfo$chkSubOpStatement | | on UNKNOWN_TYPE | ctl00$ContentInfo$chkSubopnewsoffers | | on UNKNOWN_TYPE | ctl00$ContentInfo$chkSubcocomspecials | | on UNKNOWN_TYPE | ctl00$ContentInfo$chkSubtripnotes | | on +UNKNOWN_TYPE | ctl00$ContentInfo$NewPin$txtNewPin$txtNewPin | New PIN: | +UNKNOWN_TYPE | ctl00$ContentInfo$NewPin$txtConfPin$txtConfPin | Re-type New PIN: | UNKNOWN_TYPE | ctl00$ContentInfo$UsernamePassword$username$txtUsername | Username: | +UNKNOWN_TYPE | ctl00$ContentInfo$UsernamePassword$password$txtPassword | Password: | +UNKNOWN_TYPE | ctl00$ContentInfo$UsernamePassword$passwordRetype$txtPassword | Re-type Password: | UNKNOWN_TYPE | ctl00$ContentInfo$PINPasswordReminder$PINReminder1$txtPINReminder | PIN Reminder: (cannot include any numbers) | UNKNOWN_TYPE | ctl00$ContentInfo$SecurityQuestionAnswer$Question$txtSecurity | Security Question: | UNKNOWN_TYPE | ctl00$ContentInfo$SecurityQuestionAnswer$Answer$txtSecurity | Answer: | diff --git a/chrome/test/data/autofill/heuristics/output/09_register_deviantart.com.out b/chrome/test/data/autofill/heuristics/output/09_register_deviantart.com.out index daa7e97..e5f47d7 100644 --- a/chrome/test/data/autofill/heuristics/output/09_register_deviantart.com.out +++ b/chrome/test/data/autofill/heuristics/output/09_register_deviantart.com.out @@ -1,6 +1,9 @@ UNKNOWN_TYPE | existingAccount | Are you a new customer? | 0 UNKNOWN_TYPE | existingAccount | Are you a new customer? Create a new Buyer Account I have an existing deviantART account (email or username) | 1 EMAIL_ADDRESS | emailAddress | Email Address | +UNKNOWN_TYPE | password | Password | UNKNOWN_TYPE | remember_me | Stay logged in | 1 +UNKNOWN_TYPE | passwordNew | Password | +UNKNOWN_TYPE | passwordConfirm | Password (confirm) | NAME_FULL | name | Full Name | ADDRESS_HOME_COUNTRY | country | Country | 0 diff --git a/chrome/test/data/autofill/heuristics/output/09_register_ebay.com.out b/chrome/test/data/autofill/heuristics/output/09_register_ebay.com.out index 4cfba51..2a53dbb 100644 --- a/chrome/test/data/autofill/heuristics/output/09_register_ebay.com.out +++ b/chrome/test/data/autofill/heuristics/output/09_register_ebay.com.out @@ -13,6 +13,8 @@ UNKNOWN_TYPE | dayphone4 | ext.: | EMAIL_ADDRESS | email | Email address | EMAIL_ADDRESS | retype_email | Re-enter email address | UNKNOWN_TYPE | userid | Create your eBay user ID | +UNKNOWN_TYPE | pass | Create your password | +UNKNOWN_TYPE | rpass | Re-enter your password | UNKNOWN_TYPE | canned | Pick a secret question | 0 UNKNOWN_TYPE | myanswer | Your secret answer | UNKNOWN_TYPE | birthdate2 | Date of birth, Month | 0 diff --git a/chrome/test/data/autofill/heuristics/output/09_register_ecomm.dell.com.out b/chrome/test/data/autofill/heuristics/output/09_register_ecomm.dell.com.out index d1707fe..f04da5a 100644 --- a/chrome/test/data/autofill/heuristics/output/09_register_ecomm.dell.com.out +++ b/chrome/test/data/autofill/heuristics/output/09_register_ecomm.dell.com.out @@ -9,4 +9,6 @@ ADDRESS_HOME_ZIP | address$ctl00$address$addressValidator$_EditView$postal_code UNKNOWN_TYPE | address$ctl00$address$addressValidator$_EditView$postal_code2 | Zip Code4-digit Ext. | UNKNOWN_TYPE | address$ctl00$address$addressValidator$OverrideAddress | Problems? | on EMAIL_ADDRESS | email$ctl07 | Email Address (used to sign into your account) | +UNKNOWN_TYPE | CreateNewPassword$ctl07 | Create New Password | +UNKNOWN_TYPE | ConfirmPassword$ctl07 | Confirm New Password | UNKNOWN_TYPE | Subscription | | on diff --git a/chrome/test/data/autofill/heuristics/output/09_register_epson.com.out b/chrome/test/data/autofill/heuristics/output/09_register_epson.com.out index 6650d56..d196e6b 100644 --- a/chrome/test/data/autofill/heuristics/output/09_register_epson.com.out +++ b/chrome/test/data/autofill/heuristics/output/09_register_epson.com.out @@ -1,4 +1,6 @@ NAME_FIRST | fname | * First Name | NAME_LAST | lname | * Last Name | EMAIL_ADDRESS | emLogin | * E-mail address | +UNKNOWN_TYPE | pw | * Password | +UNKNOWN_TYPE | verifypw | * Re-Confirm Password | UNKNOWN_TYPE | wantMsg | | on diff --git a/chrome/test/data/autofill/heuristics/output/09_register_google.com.out b/chrome/test/data/autofill/heuristics/output/09_register_google.com.out index 18ac19c..be77c5e 100644 --- a/chrome/test/data/autofill/heuristics/output/09_register_google.com.out +++ b/chrome/test/data/autofill/heuristics/output/09_register_google.com.out @@ -2,6 +2,8 @@ NAME_FIRST | FirstName | First name: | NAME_LAST | LastName | Last name: | UNKNOWN_TYPE | UsernameSelector | | header EMAIL_ADDRESS | Email | | +UNKNOWN_TYPE | Passwd | | +UNKNOWN_TYPE | PasswdAgain | Re-enter password: | UNKNOWN_TYPE | PersistentCookie | Re-enter password: | yes UNKNOWN_TYPE | smhck | Re-enter password: | 1 UNKNOWN_TYPE | selection | Security question: | choosequestion diff --git a/chrome/test/data/autofill/heuristics/output/10_register_gymboree.com.out b/chrome/test/data/autofill/heuristics/output/10_register_gymboree.com.out index f42e13b..7baa4d8 100644 --- a/chrome/test/data/autofill/heuristics/output/10_register_gymboree.com.out +++ b/chrome/test/data/autofill/heuristics/output/10_register_gymboree.com.out @@ -9,6 +9,8 @@ ADDRESS_HOME_CITY | LOYALTY_ADDRESS<>city | City* | ADDRESS_HOME_STATE | LOYALTY_ADDRESS<>state_cd | State/Province* | ADDRESS_HOME_ZIP | LOYALTY_ADDRESS<>postal | Zip/Postal Code*! | PHONE_HOME_WHOLE_NUMBER | LOYALTY_ADDRESS<>phone | Daytime Phone* | +UNKNOWN_TYPE | LOYALTY_ACCOUNT<>password | Password*! | +UNKNOWN_TYPE | LOYALTY_ACCOUNT<>confirmPassword | Confirm Password* | UNKNOWN_TYPE | LOYALTY_ACCOUNT<>ATR_USER_Password_Hint | Password Hint* | UNKNOWN_TYPE | LOYALTY_ADDRESS<>ATR_indBillAsRewards | Password Hint*! | true UNKNOWN_TYPE | LOYALTY_ACCOUNT<>sendEmail | Save the address above as my default billing address. I would like to receive promotions and special offers from Gymboree. | true diff --git a/chrome/test/data/autofill/heuristics/output/10_register_hotels.com.out b/chrome/test/data/autofill/heuristics/output/10_register_hotels.com.out index a651faa..8db70c3 100644 --- a/chrome/test/data/autofill/heuristics/output/10_register_hotels.com.out +++ b/chrome/test/data/autofill/heuristics/output/10_register_hotels.com.out @@ -1,5 +1,7 @@ EMAIL_ADDRESS | profileInformation.email | Email address* | EMAIL_ADDRESS | confirmEmail | Confirm email address* | +UNKNOWN_TYPE | profileInformation.password | Password* | +UNKNOWN_TYPE | confirmPassword | Confirm password* | UNKNOWN_TYPE | profileInformation.customerContact.title | Title | NONE NAME_FIRST | profileInformation.customerContact.firstName | First name* | NAME_LAST | profileInformation.customerContact.lastName | Last name* | diff --git a/chrome/test/data/autofill/heuristics/output/10_register_imdb.com.out b/chrome/test/data/autofill/heuristics/output/10_register_imdb.com.out index 886a00a..abf0765 100644 --- a/chrome/test/data/autofill/heuristics/output/10_register_imdb.com.out +++ b/chrome/test/data/autofill/heuristics/output/10_register_imdb.com.out @@ -5,3 +5,5 @@ UNKNOWN_TYPE | gender | Male | F UNKNOWN_TYPE | year | Year of Birth: | ADDRESS_HOME_ZIP | postal | ZIP/Postal Code: | ADDRESS_HOME_COUNTRY | country | Country: | US +UNKNOWN_TYPE | pass1 | Select a password: | +UNKNOWN_TYPE | pass2 | Confirm password: | diff --git a/chrome/test/data/autofill/heuristics/output/10_register_jbox.com.out b/chrome/test/data/autofill/heuristics/output/10_register_jbox.com.out index 14e4bae..3bf405c 100644 --- a/chrome/test/data/autofill/heuristics/output/10_register_jbox.com.out +++ b/chrome/test/data/autofill/heuristics/output/10_register_jbox.com.out @@ -7,5 +7,7 @@ ADDRESS_HOME_ZIP | zip | Postal / Zip Code | ADDRESS_HOME_COUNTRY | country | Country | United States PHONE_HOME_WHOLE_NUMBER | phone | | EMAIL_ADDRESS | email | | +UNKNOWN_TYPE | password | Enter a password | +UNKNOWN_TYPE | password_again | Retype your password | UNKNOWN_TYPE | referred_by | Where did you hear about J-List/JBOX? | Don't Know! UNKNOWN_TYPE | referred_by_other | If other, please specify | diff --git a/chrome/test/data/autofill/heuristics/output/10_register_live.com.out b/chrome/test/data/autofill/heuristics/output/10_register_live.com.out index 8e45ebab..90ef072 100644 --- a/chrome/test/data/autofill/heuristics/output/10_register_live.com.out +++ b/chrome/test/data/autofill/heuristics/output/10_register_live.com.out @@ -4,6 +4,8 @@ UNKNOWN_TYPE | isug1 | Enter a word | Enter a word UNKNOWN_TYPE | isug2 | Enter another word | Enter another word UNKNOWN_TYPE | isug3 | Enter another word | Enter another word EMAIL_ADDRESS | imembernameeasi | Use your email address: | Example: someone@example.com +UNKNOWN_TYPE | iPwd | Create a password: | +UNKNOWN_TYPE | iRetypePwd | Retype password: | EMAIL_ADDRESS | iAltEmail | Alternate email address: | UNKNOWN_TYPE | iSQ | Question: | 0 UNKNOWN_TYPE | iSA | Secret answer: | diff --git a/chrome/test/data/autofill/heuristics/output/11_register_livejournal.com.out b/chrome/test/data/autofill/heuristics/output/11_register_livejournal.com.out index 6f1e66c..ff81321 100644 --- a/chrome/test/data/autofill/heuristics/output/11_register_livejournal.com.out +++ b/chrome/test/data/autofill/heuristics/output/11_register_livejournal.com.out @@ -1,5 +1,7 @@ UNKNOWN_TYPE | Widget[CreateAccount]_user | Username: | EMAIL_ADDRESS | Widget[CreateAccount]_email | Email Address: | +UNKNOWN_TYPE | Widget[CreateAccount]_password1 | Password: | +UNKNOWN_TYPE | Widget[CreateAccount]_password2 | Confirm Password: | UNKNOWN_TYPE | Widget[CreateAccount]_gender | Gender: | UNKNOWN_TYPE | Widget[CreateAccount]_bday_mm | Birthdate: | 1 UNKNOWN_TYPE | Widget[CreateAccount]_bday_dd | Birthdate: | diff --git a/chrome/test/data/autofill/heuristics/output/11_register_macys.com.out b/chrome/test/data/autofill/heuristics/output/11_register_macys.com.out index fbdf796..7980741 100644 --- a/chrome/test/data/autofill/heuristics/output/11_register_macys.com.out +++ b/chrome/test/data/autofill/heuristics/output/11_register_macys.com.out @@ -5,6 +5,8 @@ ADDRESS_HOME_LINE2 | Address2 | P.O. Box/Apt # | ADDRESS_HOME_ZIP | PostalCode | Zip Code | EMAIL_ADDRESS | EmailAddress | Email | EMAIL_ADDRESS | ConfirmEmailAddress | Verify Email | +UNKNOWN_TYPE | Password | Password | +UNKNOWN_TYPE | PasswordConfirm | Verify Password | UNKNOWN_TYPE | BirthMonth | Birth date | NOSELECTION UNKNOWN_TYPE | BirthDay | | NOSELECTION UNKNOWN_TYPE | BirthYear | | NOSELECTION diff --git a/chrome/test/data/autofill/heuristics/output/11_register_mcphee.com.out b/chrome/test/data/autofill/heuristics/output/11_register_mcphee.com.out index 14afb1b..a34565c 100644 --- a/chrome/test/data/autofill/heuristics/output/11_register_mcphee.com.out +++ b/chrome/test/data/autofill/heuristics/output/11_register_mcphee.com.out @@ -1,4 +1,6 @@ EMAIL_ADDRESS | FormField[1][1] | * Email Address: | +UNKNOWN_TYPE | FormField[1][2] | * Password: | +UNKNOWN_TYPE | FormField[1][3] | * Confirm Password: | NAME_FIRST | FormField[2][4] | * First Name: | NAME_LAST | FormField[2][5] | * Last Name: | COMPANY_NAME | FormField[2][6] | * Company Name: | diff --git a/chrome/test/data/autofill/heuristics/output/11_register_myspace.com.out b/chrome/test/data/autofill/heuristics/output/11_register_myspace.com.out index 279c12c..d14992a 100644 --- a/chrome/test/data/autofill/heuristics/output/11_register_myspace.com.out +++ b/chrome/test/data/autofill/heuristics/output/11_register_myspace.com.out @@ -8,6 +8,8 @@ UNKNOWN_TYPE | tbxMusicianName | Artist Name | UNKNOWN_TYPE | ddlGenre | Genre | UNKNOWN_TYPE | ddlLabel | Label Type | EMAIL_ADDRESS | tbxEmail | Email | +UNKNOWN_TYPE | tbxPassword | Password | +UNKNOWN_TYPE | tbxPassword1 | Confirm Password | UNKNOWN_TYPE | ddlMonth | Birthday | UNKNOWN_TYPE | ddlDay | | UNKNOWN_TYPE | ddlYear | | diff --git a/chrome/test/data/autofill/heuristics/output/11_register_newegg.com.out b/chrome/test/data/autofill/heuristics/output/11_register_newegg.com.out index 924fbd3..196998c 100644 --- a/chrome/test/data/autofill/heuristics/output/11_register_newegg.com.out +++ b/chrome/test/data/autofill/heuristics/output/11_register_newegg.com.out @@ -1,5 +1,7 @@ EMAIL_ADDRESS | LoginName | Email Address* | EMAIL_ADDRESS | LoginName1 | Confirm Email Address* | +UNKNOWN_TYPE | Password | Password* | +UNKNOWN_TYPE | Password1 | Confirm Password* | NAME_FIRST | FirstName | First Name* | NAME_MIDDLE_INITIAL | BMI | MI | NAME_LAST | LastName | Last Name* | diff --git a/chrome/test/data/autofill/heuristics/output/12_register_officedepot.com.out b/chrome/test/data/autofill/heuristics/output/12_register_officedepot.com.out index fea11d1..00a5286 100644 --- a/chrome/test/data/autofill/heuristics/output/12_register_officedepot.com.out +++ b/chrome/test/data/autofill/heuristics/output/12_register_officedepot.com.out @@ -36,4 +36,6 @@ PHONE_HOME_NUMBER | addrsForm[2].phoneNumber3 | - | UNKNOWN_TYPE | addrsForm[2].phoneNumber4 | ext. | EMAIL_ADDRESS | addrsForm[2].email | *Email Address: | UNKNOWN_TYPE | loginForm.loginName | *Login Name: | -UNKNOWN_TYPE | loginForm.autoLogin | *Password Confirm: retype your password | on +UNKNOWN_TYPE | loginForm.password | *Password: | +UNKNOWN_TYPE | loginForm.passwordConfirm | *Password Confirm: | +UNKNOWN_TYPE | loginForm.autoLogin | *Password Confirm: | on diff --git a/chrome/test/data/autofill/heuristics/output/12_register_officemax.com.out b/chrome/test/data/autofill/heuristics/output/12_register_officemax.com.out index 4e027e1..d62bb27 100644 --- a/chrome/test/data/autofill/heuristics/output/12_register_officemax.com.out +++ b/chrome/test/data/autofill/heuristics/output/12_register_officemax.com.out @@ -4,3 +4,5 @@ NAME_LAST | /atg/userprofiling/ProfileFormHandler.value.lastName | * Last Name: EMAIL_ADDRESS | /atg/userprofiling/ProfileFormHandler.value.login | * Email Address: | EMAIL_ADDRESS | /atg/userprofiling/ProfileFormHandler.confirmEmailAddress | * Confirm Email: | ADDRESS_HOME_ZIP | /atg/userprofiling/ProfileFormHandler.value.zip | * Zip: | +UNKNOWN_TYPE | /atg/userprofiling/ProfileFormHandler.value.password | * Password: | +UNKNOWN_TYPE | /atg/userprofiling/ProfileFormHandler.value.confirmPassword | * Confirm Password: | diff --git a/chrome/test/data/autofill/heuristics/output/12_register_pyramidcollection.com.out b/chrome/test/data/autofill/heuristics/output/12_register_pyramidcollection.com.out index b17bcfb..0539223 100644 --- a/chrome/test/data/autofill/heuristics/output/12_register_pyramidcollection.com.out +++ b/chrome/test/data/autofill/heuristics/output/12_register_pyramidcollection.com.out @@ -9,6 +9,8 @@ ADDRESS_HOME_COUNTRY | C3 | Country * | 0000 ADDRESS_HOME_ZIP | Z1 | Zip Code * | PHONE_HOME_WHOLE_NUMBER | P2 | Day Phone * | PHONE_HOME_WHOLE_NUMBER | P3 | Evening Phone | +UNKNOWN_TYPE | P1 | Create Password * | +UNKNOWN_TYPE | PasswordConfirm | Confirm Password * | NAME_FIRST | SF1 | First Name * | NAME_LAST | SL1 | Last Name * | ADDRESS_HOME_LINE1 | SS1 | Address Line 1 * | diff --git a/chrome/test/data/autofill/heuristics/output/12_register_rediff.com.out b/chrome/test/data/autofill/heuristics/output/12_register_rediff.com.out index 3d9bed8..a3e1bc9 100644 --- a/chrome/test/data/autofill/heuristics/output/12_register_rediff.com.out +++ b/chrome/test/data/autofill/heuristics/output/12_register_rediff.com.out @@ -1,8 +1,11 @@ NAME_FULL | name | : | UNKNOWN_TYPE | login | : | +UNKNOWN_TYPE | passwd | : | +UNKNOWN_TYPE | confirm_passwd | : | EMAIL_ADDRESS | altemail | : | UNKNOWN_TYPE | chk_altemail | | on UNKNOWN_TYPE | hintq | : | +UNKNOWN_TYPE | hinta | : | UNKNOWN_TYPE | mothername | : | UNKNOWN_TYPE | DOB_Day | : | UNKNOWN_TYPE | DOB_Month | : | diff --git a/chrome/test/data/autofill/heuristics/output/12_register_rei.com.out b/chrome/test/data/autofill/heuristics/output/12_register_rei.com.out index c35912ae..141020e 100644 --- a/chrome/test/data/autofill/heuristics/output/12_register_rei.com.out +++ b/chrome/test/data/autofill/heuristics/output/12_register_rei.com.out @@ -1,6 +1,8 @@ NAME_FIRST | firstName | First Name:* | NAME_MIDDLE_INITIAL | middleName | Middle Initial: | NAME_LAST | lastName | Last Name:* | +UNKNOWN_TYPE | logonPassword | Password:* | +UNKNOWN_TYPE | logonPasswordVerify | Re-type Password:* | ADDRESS_HOME_ZIP | zipCode | ZIP (Postal) Code:* | EMAIL_ADDRESS | email1 | E-mail Address:* | UNKNOWN_TYPE | gearmail | | y diff --git a/chrome/test/data/autofill/heuristics/output/13_register_rocketlawyer.com.out b/chrome/test/data/autofill/heuristics/output/13_register_rocketlawyer.com.out index 5219e25..fcc8ed4 100644 --- a/chrome/test/data/autofill/heuristics/output/13_register_rocketlawyer.com.out +++ b/chrome/test/data/autofill/heuristics/output/13_register_rocketlawyer.com.out @@ -3,4 +3,6 @@ NAME_FIRST | ctl00$ctl00$ctl00$SiteMasterBody$ContentPlaceHolder1$ContentPlaceHo NAME_LAST | ctl00$ctl00$ctl00$SiteMasterBody$ContentPlaceHolder1$ContentPlaceHolder1$txtLastName | Last Name * | EMAIL_ADDRESS | ctl00$ctl00$ctl00$SiteMasterBody$ContentPlaceHolder1$ContentPlaceHolder1$txtUserName | Email Address * | EMAIL_ADDRESS | ctl00$ctl00$ctl00$SiteMasterBody$ContentPlaceHolder1$ContentPlaceHolder1$txtConfirmUserName | Confirm Email Address * | +UNKNOWN_TYPE | ctl00$ctl00$ctl00$SiteMasterBody$ContentPlaceHolder1$ContentPlaceHolder1$txtPassword | Password * | +UNKNOWN_TYPE | ctl00$ctl00$ctl00$SiteMasterBody$ContentPlaceHolder1$ContentPlaceHolder1$txtConfirmPassword | Confirm Password * | UNKNOWN_TYPE | ctl00$ctl00$ctl00$SiteMasterBody$ContentPlaceHolder1$ContentPlaceHolder1$chkNewsletter | Yes, send me Rocket Lawyer partner offers, which are sent no more than twice per month and are from Rocket Lawyer's trusted business partners. | on diff --git a/chrome/test/data/autofill/heuristics/output/13_register_signup.clicksor.com.out b/chrome/test/data/autofill/heuristics/output/13_register_signup.clicksor.com.out index cd72aa2..bb639e4 100644 --- a/chrome/test/data/autofill/heuristics/output/13_register_signup.clicksor.com.out +++ b/chrome/test/data/autofill/heuristics/output/13_register_signup.clicksor.com.out @@ -3,6 +3,8 @@ EMAIL_ADDRESS | email2 | Confirm email: | UNKNOWN_TYPE | website | Website: | PHONE_HOME_WHOLE_NUMBER | phone | Phone: | UNKNOWN_TYPE | timezone | Time Zone: | 1 +UNKNOWN_TYPE | password | Password: | +UNKNOWN_TYPE | RePassword | Confirm password: | NAME_FULL | name | Name: | COMPANY_NAME | company | Company: | ADDRESS_HOME_LINE1 | address | Address: | diff --git a/chrome/test/data/autofill/heuristics/output/13_register_signup.live.com.out b/chrome/test/data/autofill/heuristics/output/13_register_signup.live.com.out index 8e45ebab..90ef072 100644 --- a/chrome/test/data/autofill/heuristics/output/13_register_signup.live.com.out +++ b/chrome/test/data/autofill/heuristics/output/13_register_signup.live.com.out @@ -4,6 +4,8 @@ UNKNOWN_TYPE | isug1 | Enter a word | Enter a word UNKNOWN_TYPE | isug2 | Enter another word | Enter another word UNKNOWN_TYPE | isug3 | Enter another word | Enter another word EMAIL_ADDRESS | imembernameeasi | Use your email address: | Example: someone@example.com +UNKNOWN_TYPE | iPwd | Create a password: | +UNKNOWN_TYPE | iRetypePwd | Retype password: | EMAIL_ADDRESS | iAltEmail | Alternate email address: | UNKNOWN_TYPE | iSQ | Question: | 0 UNKNOWN_TYPE | iSA | Secret answer: | diff --git a/chrome/test/data/autofill/heuristics/output/13_register_sourceforge.net.out b/chrome/test/data/autofill/heuristics/output/13_register_sourceforge.net.out index 0f270d8..589e7ad 100644 --- a/chrome/test/data/autofill/heuristics/output/13_register_sourceforge.net.out +++ b/chrome/test/data/autofill/heuristics/output/13_register_sourceforge.net.out @@ -1,6 +1,8 @@ NAME_FULL | X1mRVeMqejLnZpd1etxNGHllat2M | Name: | EMAIL_ADDRESS | X129ZdMbfixhIflk8_zHDFWB72qk | Email: | UNKNOWN_TYPE | X2n9HcN3dx1-mSbLywp_L-szMydw | Username: | +UNKNOWN_TYPE | X2npVZtzEyUCnSbLywp_L-szMydw | Password: | +UNKNOWN_TYPE | XwnpVZtzEyUCnO_sWtjjnr86sK5Q | Confirm Password: | UNKNOWN_TYPE | X2mZVe8jGx1WmSbLywp_L-szMydw | Language: | 275 ADDRESS_HOME_COUNTRY | X1WlbYMHH1EvuThNjGRupsu5JwuU | Country: | US UNKNOWN_TYPE | X2n5deMrJyVymSbLywp_L-szMydw | Time Zone: | America/New_York diff --git a/chrome/test/data/autofill/heuristics/output/13_register_supershuttle.com.out b/chrome/test/data/autofill/heuristics/output/13_register_supershuttle.com.out index 5f14a5f..60f88ab 100644 --- a/chrome/test/data/autofill/heuristics/output/13_register_supershuttle.com.out +++ b/chrome/test/data/autofill/heuristics/output/13_register_supershuttle.com.out @@ -1,8 +1,11 @@ EMAIL_ADDRESS | ctl00$cphLeft$InnerLogin1$txtEmailAddress | Email Address | +UNKNOWN_TYPE | ctl00$cphLeft$InnerLogin1$txtPassword | Password | EMAIL_ADDRESS | ctl00$cphRight$Registration1$txtEmailAddress | Email Address | NAME_FIRST | ctl00$cphRight$Registration1$txtFirstName | First Name | NAME_LAST | ctl00$cphRight$Registration1$txtLastName | Last Name | PHONE_HOME_WHOLE_NUMBER | ctl00$cphRight$Registration1$txtCellPhone | Contact or Cell Phone Number | PHONE_HOME_COUNTRY_CODE | ctl00$cphRight$Registration1$txtCountryCode | If outside the US (Country Code/Phone Number) | PHONE_HOME_CITY_AND_NUMBER | ctl00$cphRight$Registration1$txtIntPhoneNumber | Contact or Cell Phone Number | +UNKNOWN_TYPE | ctl00$cphRight$Registration1$txtPassword | Password | +UNKNOWN_TYPE | ctl00$cphRight$Registration1$txtConfirmPassword | Confirm Password | UNKNOWN_TYPE | ctl00$cphRight$Registration1$chkAcceptSpecialOffers | Email me regarding SuperShuttle special offers and promotions | on diff --git a/chrome/test/data/autofill/heuristics/output/14_register_target.com.out b/chrome/test/data/autofill/heuristics/output/14_register_target.com.out index 92dc099..1067919 100644 --- a/chrome/test/data/autofill/heuristics/output/14_register_target.com.out +++ b/chrome/test/data/autofill/heuristics/output/14_register_target.com.out @@ -1,6 +1,8 @@ UNKNOWN_TYPE | userName | Your name:* | EMAIL_ADDRESS | email | Your email address:* | EMAIL_ADDRESS | emailCheck | Re-enter email address:* | +UNKNOWN_TYPE | password | Create a password:* | +UNKNOWN_TYPE | passwordCheck | Re-enter password:* | UNKNOWN_TYPE | subscribeEmail | Yes, please send me e-mails about special offers, exclusives and promotions from Target. | 1 UNKNOWN_TYPE | ageCheck | | yes UNKNOWN_TYPE | ageCheck | Yes No | no diff --git a/chrome/test/data/autofill/heuristics/output/14_register_threadless.com.out b/chrome/test/data/autofill/heuristics/output/14_register_threadless.com.out index 970a420..6ba528d 100644 --- a/chrome/test/data/autofill/heuristics/output/14_register_threadless.com.out +++ b/chrome/test/data/autofill/heuristics/output/14_register_threadless.com.out @@ -1,4 +1,6 @@ UNKNOWN_TYPE | create_username | Desired username | +UNKNOWN_TYPE | create_password | Password | +UNKNOWN_TYPE | retype_password | Re-type password | EMAIL_ADDRESS | email | Email | UNKNOWN_TYPE | join_newsletter | Join our newsletter and be first to know about new tees and great deals! | on UNKNOWN_TYPE | recaptcha_response_field | Type the words above Type the numbers you hear | diff --git a/chrome/test/data/autofill/heuristics/output/14_register_trueblue.jetblue.com.out b/chrome/test/data/autofill/heuristics/output/14_register_trueblue.jetblue.com.out index b7a164f..6283d54 100644 --- a/chrome/test/data/autofill/heuristics/output/14_register_trueblue.jetblue.com.out +++ b/chrome/test/data/autofill/heuristics/output/14_register_trueblue.jetblue.com.out @@ -16,4 +16,6 @@ UNKNOWN_TYPE | accountData.alternatePhoneType | Alternate phone: | UNKNOWN_TYPE | accountData.fax | Fax: | EMAIL_ADDRESS | accountData.email | Email address: | EMAIL_ADDRESS | accountData.confirmEmail | Confirm email: | +UNKNOWN_TYPE | registrationPassword1 | Password: | +UNKNOWN_TYPE | registrationPassword2 | Confirm password: | UNKNOWN_TYPE | accountData.entrollmentCode | Enrollment code: | diff --git a/chrome/test/data/autofill/heuristics/output/14_register_uhaul.com.out b/chrome/test/data/autofill/heuristics/output/14_register_uhaul.com.out index 5f42704..4a0be77 100644 --- a/chrome/test/data/autofill/heuristics/output/14_register_uhaul.com.out +++ b/chrome/test/data/autofill/heuristics/output/14_register_uhaul.com.out @@ -4,5 +4,7 @@ UNKNOWN_TYPE | _ctl0:cphMainBody:txtVendNo | Vendor Number | UNKNOWN_TYPE | _ctl0:cphMainBody:txtEntity | U-Haul Shop Entity Number | EMAIL_ADDRESS | _ctl0:cphMainBody:txtEmail | Email | EMAIL_ADDRESS | _ctl0:cphMainBody:txtEmail0 | ReConfirm Email | +UNKNOWN_TYPE | _ctl0:cphMainBody:txtPassword | Password must be between 4 and 8 characters, contain at least one digit and one alphabetic character, and must not contain special characters. | +UNKNOWN_TYPE | _ctl0:cphMainBody:txtPassword0 | Password should be same as the above entered password | PHONE_HOME_WHOLE_NUMBER | _ctl0:cphMainBody:txtPhone | Phone | UNKNOWN_TYPE | _ctl0:cphMainBody:txtComments | Comments: | diff --git a/chrome/test/data/autofill/heuristics/output/14_register_yahoo.com.out b/chrome/test/data/autofill/heuristics/output/14_register_yahoo.com.out index f8dda04..04f0aae 100644 --- a/chrome/test/data/autofill/heuristics/output/14_register_yahoo.com.out +++ b/chrome/test/data/autofill/heuristics/output/14_register_yahoo.com.out @@ -8,6 +8,8 @@ ADDRESS_HOME_COUNTRY | country | Country | us ADDRESS_HOME_ZIP | postalcode | Postal Code | EMAIL_ADDRESS | yahooid | Yahoo! ID and Email | UNKNOWN_TYPE | domain | @ | yahoo.com +UNKNOWN_TYPE | password | Password | +UNKNOWN_TYPE | passwordconfirm | Re-type Password | EMAIL_ADDRESS | altemail | Alternate Email (optional) | UNKNOWN_TYPE | secquestion | Secret Question 1 | UNKNOWN_TYPE | customsecquestion1 | Specify Your Question | diff --git a/chrome/test/data/autofill/heuristics/output/15_crbug_53075.out b/chrome/test/data/autofill/heuristics/output/15_crbug_53075.out index fdb5c1fd..3b6a857 100644 --- a/chrome/test/data/autofill/heuristics/output/15_crbug_53075.out +++ b/chrome/test/data/autofill/heuristics/output/15_crbug_53075.out @@ -5,6 +5,8 @@ NAME_LAST | ecomms_last_name | Last Name: | PHONE_HOME_WHOLE_NUMBER | ecomms_telephone | Telephone: | PHONE_HOME_WHOLE_NUMBER | ecomms_mobile | Mobile: | EMAIL_ADDRESS | ecomms_email | Email Address: | x@foo.com +UNKNOWN_TYPE | ecomms_password | Password: | abcdef +UNKNOWN_TYPE | ecomms_password_confirm | Confirm password: | abcdef ADDRESS_HOME_LINE1 | ecomms_address1 | Address1: | ADDRESS_HOME_LINE2 | ecomms_address2 | Address2: | ADDRESS_HOME_CITY | ecomms_town | Town / City: | diff --git a/chrome/test/data/autofill/heuristics/output/17_crbug_98338.out b/chrome/test/data/autofill/heuristics/output/17_crbug_98338.out index 0f19746..f838e81 100644 --- a/chrome/test/data/autofill/heuristics/output/17_crbug_98338.out +++ b/chrome/test/data/autofill/heuristics/output/17_crbug_98338.out @@ -1,9 +1,11 @@ UNKNOWN_TYPE | giftcardnumber_EGC | Gift Card Number Gift Card Number | +UNKNOWN_TYPE | pin_EGC | PIN PIN | UNKNOWN_TYPE | giftCardNumber2 | Gift Card Number PIN | UNKNOWN_TYPE | giftCardPin2 | Gift Card Number PIN | UNKNOWN_TYPE | giftCardNumber3 | Gift Card Number PIN | UNKNOWN_TYPE | giftCardPin3 | Gift Card Number PIN | UNKNOWN_TYPE | giftcardnumber_GC | Gift Card Number PIN | +UNKNOWN_TYPE | pin_GC | Gift Card Number PIN | UNKNOWN_TYPE | giftCardNumber2 | Gift Card Number PIN | UNKNOWN_TYPE | giftCardPin2 | Gift Card Number PIN | UNKNOWN_TYPE | giftCardNumber3 | Gift Card Number PIN | diff --git a/chrome/test/data/autofill/heuristics/output/20_register_alaskaair.com.out b/chrome/test/data/autofill/heuristics/output/20_register_alaskaair.com.out index e2af6c2..c4971e0 100644 --- a/chrome/test/data/autofill/heuristics/output/20_register_alaskaair.com.out +++ b/chrome/test/data/autofill/heuristics/output/20_register_alaskaair.com.out @@ -28,6 +28,8 @@ PHONE_HOME_WHOLE_NUMBER | FormUserControl$_contactInformation$_phoneNumber$_phon UNKNOWN_TYPE | FormUserControl$_contactInformation$_phoneNumber$_extensionTextBox | Ext. | EMAIL_ADDRESS | FormUserControl$_contactInformation$_emailAddress$_emailAddressTextBox | Email Address* | UNKNOWN_TYPE | FormUserControl$_userIdPassword$_userId$_userId | Create a User ID* | +UNKNOWN_TYPE | FormUserControl$_userIdPassword$_password$_password | Create a Password | +UNKNOWN_TYPE | FormUserControl$_userIdPassword$_reEnterPassword$_password | Re-enter Password | UNKNOWN_TYPE | FormUserControl$_secretQuestion$_question | Secret Question* | UNKNOWN_TYPE | FormUserControl$_secretQuestion$_answer | Please choose a secret question and provide the answer. You will need to answer the question again in case you forget your password. Make sure you choose a question and answer that are easy for you to remember, but difficult for other people to know.Secret Question* Answer* | UNKNOWN_TYPE | FormUserControl$_subscriptionsOffers$_insiderNewsletter$_subscriptionCheckBox | Insider NewsletterA weekly email personalized to provide you with an insider glimpse of the best deals we have to offer - across the board. | on diff --git a/chrome/test/data/autofill/heuristics/output/20_register_epson.com.mx.out b/chrome/test/data/autofill/heuristics/output/20_register_epson.com.mx.out index 0e7f964..311cb46 100644 --- a/chrome/test/data/autofill/heuristics/output/20_register_epson.com.mx.out +++ b/chrome/test/data/autofill/heuristics/output/20_register_epson.com.mx.out @@ -4,6 +4,9 @@ UNKNOWN_TYPE | fechaCompra | *dd/mm/yyyy | UNKNOWN_TYPE | serialNumber | Serial * | UNKNOWN_TYPE | idProducto | Serial * | EMAIL_ADDRESS | emailLogin | Email * | +UNKNOWN_TYPE | passLogin | a * | NAME_FIRST | nombre | Nombre * | NAME_LAST | apellido | Apellido * | EMAIL_ADDRESS | emailRegistro | Email * | +UNKNOWN_TYPE | passRegistro | a * | +UNKNOWN_TYPE | rePassRegistro | a * | diff --git a/components/autofill/browser/form_structure.cc b/components/autofill/browser/form_structure.cc index be0e8a5..1be25c4 100644 --- a/components/autofill/browser/form_structure.cc +++ b/components/autofill/browser/form_structure.cc @@ -233,7 +233,7 @@ FormStructure::FormStructure(const FormData& form, source_url_(form.origin), target_url_(form.action), autofill_count_(0), - checkable_field_count_(0), + active_field_count_(0), upload_required_(USE_UPLOAD_RATES), server_experiment_id_("no server response"), has_author_specified_types_(false), @@ -244,14 +244,17 @@ FormStructure::FormStructure(const FormData& form, form.fields.begin(); field != form.fields.end(); field++) { - // Skipping checkable elements when Autocheckout is not enabled, else - // these fields will interfere with existing field signatures with Autofill - // servers. - if (!field->is_checkable || IsAutocheckoutEnabled()) { + // Skip checkable and password elements when Autocheckout is not enabled, + // else these fields will interfere with existing field signatures with + // Autofill servers. + if ((!field->is_checkable && field->form_control_type != "password") || + IsAutocheckoutEnabled()) { // Add all supported form fields (including with empty names) to the // signature. This is a requirement for Autofill servers. form_signature_field_names_.append("&"); form_signature_field_names_.append(UTF16ToUTF8(field->name)); + + ++active_field_count_; } // Generate a unique name for this field by appending a counter to the name. @@ -264,9 +267,6 @@ FormStructure::FormStructure(const FormData& form, string16 unique_name = field->name + ASCIIToUTF16("_") + base::IntToString16(unique_names[field->name]); fields_.push_back(new AutofillField(*field, unique_name)); - - if (field->is_checkable) - ++checkable_field_count_; } std::string method = UTF16ToUTF8(form.method); @@ -609,10 +609,7 @@ void FormStructure::UpdateAutofillCount() { } bool FormStructure::ShouldBeParsed(bool require_method_post) const { - // Ignore counting checkable elements towards minimum number of elements - // required to parse. This avoids trying to crowdsource forms with few text - // or select elements. - if ((field_count() - checkable_field_count()) < RequiredFillableFields()) + if (active_field_count() < RequiredFillableFields()) return false; // Rule out http(s)://*/search?... @@ -879,8 +876,8 @@ size_t FormStructure::field_count() const { return fields_.size(); } -size_t FormStructure::checkable_field_count() const { - return checkable_field_count_; +size_t FormStructure::active_field_count() const { + return active_field_count_; } std::string FormStructure::server_experiment_id() const { @@ -972,9 +969,10 @@ bool FormStructure::EncodeFormRequest( encompassing_xml_element->AddElement(field_element); } } else { - // Skip putting checkable fields in the request if Autocheckout is not - // enabled. - if (field->is_checkable && !IsAutocheckoutEnabled()) + // Skip putting checkable and password fields in the request if + // Autocheckout is not enabled. + if ((field->is_checkable || field->form_control_type == "password") && + !IsAutocheckoutEnabled()) continue; buzz::XmlElement *field_element = new buzz::XmlElement( diff --git a/components/autofill/browser/form_structure.h b/components/autofill/browser/form_structure.h index 731fe5c..9095514 100644 --- a/components/autofill/browser/form_structure.h +++ b/components/autofill/browser/form_structure.h @@ -136,7 +136,6 @@ class FormStructure { const AutofillField* field(size_t index) const; AutofillField* field(size_t index); size_t field_count() const; - size_t checkable_field_count() const; // Returns the number of fields that are able to be autofilled. size_t autofill_count() const { return autofill_count_; } @@ -192,6 +191,7 @@ class FormStructure { // Returns the minimal number of fillable fields required to start autofill. size_t RequiredFillableFields() const; + size_t active_field_count() const; // The name of the form. string16 form_name_; @@ -208,8 +208,9 @@ class FormStructure { // A vector of all the input fields in the form. ScopedVector<AutofillField> fields_; - // The number of fields able to be checked. - size_t checkable_field_count_; + // The number of fields counted towards form signature and request to Autofill + // server. + size_t active_field_count_; // The names of the form input elements, that are part of the form signature. // The string starts with "&" and the names are also separated by the "&" diff --git a/components/autofill/browser/form_structure_unittest.cc b/components/autofill/browser/form_structure_unittest.cc index 49d715d..5f7b998 100644 --- a/components/autofill/browser/form_structure_unittest.cc +++ b/components/autofill/browser/form_structure_unittest.cc @@ -2159,6 +2159,12 @@ TEST(FormStructureTest, CheckFormSignature) { field.name = ASCIIToUTF16("first"); form.fields.push_back(field); + // Password fields shouldn't affect the signature. + field.label = ASCIIToUTF16("Password"); + field.name = ASCIIToUTF16("password"); + field.form_control_type = "password"; + form.fields.push_back(field); + form_structure.reset(new FormStructure(form, std::string())); EXPECT_EQ(FormStructureTest::Hash64Bit( diff --git a/components/autofill/renderer/form_autofill_util.cc b/components/autofill/renderer/form_autofill_util.cc index 8b0e6fb..a0bbc43 100644 --- a/components/autofill/renderer/form_autofill_util.cc +++ b/components/autofill/renderer/form_autofill_util.cc @@ -590,13 +590,9 @@ namespace autofill { const size_t kMaxParseableFields = 100; -// In HTML5, all text fields except password are text input fields to -// autocomplete. +// All text fields, including password fields, should be extracted. bool IsTextInput(const WebInputElement* element) { - if (!element) - return false; - - return element->isTextField() && !element->isPasswordField(); + return element && element->isTextField(); } bool IsSelectElement(const WebFormControlElement& element) { |