| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
| 6 #include "base/memory/scoped_vector.h" | 6 #include "base/memory/scoped_vector.h" |
| 7 #include "base/utf_string_conversions.h" | 7 #include "base/utf_string_conversions.h" |
| 8 #include "chrome/browser/autofill/autofill_field.h" | 8 #include "chrome/browser/autofill/autofill_field.h" |
| 9 #include "chrome/browser/autofill/autofill_scanner.h" | 9 #include "chrome/browser/autofill/autofill_scanner.h" |
| 10 #include "chrome/browser/autofill/phone_field.h" | 10 #include "chrome/browser/autofill/phone_field.h" |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 | 37 |
| 38 TEST_F(PhoneFieldTest, NonParse) { | 38 TEST_F(PhoneFieldTest, NonParse) { |
| 39 list_.push_back(new AutofillField); | 39 list_.push_back(new AutofillField); |
| 40 AutofillScanner scanner(list_.get()); | 40 AutofillScanner scanner(list_.get()); |
| 41 field_.reset(Parse(&scanner)); | 41 field_.reset(Parse(&scanner)); |
| 42 ASSERT_EQ(static_cast<PhoneField*>(NULL), field_.get()); | 42 ASSERT_EQ(static_cast<PhoneField*>(NULL), field_.get()); |
| 43 } | 43 } |
| 44 | 44 |
| 45 TEST_F(PhoneFieldTest, ParseOneLinePhone) { | 45 TEST_F(PhoneFieldTest, ParseOneLinePhone) { |
| 46 FormFieldData field; | 46 FormFieldData field; |
| 47 field.form_control_type = ASCIIToUTF16("text"); | 47 field.form_control_type = "text"; |
| 48 | 48 |
| 49 field.label = ASCIIToUTF16("Phone"); | 49 field.label = ASCIIToUTF16("Phone"); |
| 50 field.name = ASCIIToUTF16("phone"); | 50 field.name = ASCIIToUTF16("phone"); |
| 51 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone1"))); | 51 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone1"))); |
| 52 | 52 |
| 53 AutofillScanner scanner(list_.get()); | 53 AutofillScanner scanner(list_.get()); |
| 54 field_.reset(Parse(&scanner)); | 54 field_.reset(Parse(&scanner)); |
| 55 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); | 55 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); |
| 56 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 56 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
| 57 ASSERT_TRUE( | 57 ASSERT_TRUE( |
| 58 field_type_map_.find(ASCIIToUTF16("phone1")) != field_type_map_.end()); | 58 field_type_map_.find(ASCIIToUTF16("phone1")) != field_type_map_.end()); |
| 59 EXPECT_EQ(PHONE_HOME_WHOLE_NUMBER, field_type_map_[ASCIIToUTF16("phone1")]); | 59 EXPECT_EQ(PHONE_HOME_WHOLE_NUMBER, field_type_map_[ASCIIToUTF16("phone1")]); |
| 60 } | 60 } |
| 61 | 61 |
| 62 TEST_F(PhoneFieldTest, ParseTwoLinePhone) { | 62 TEST_F(PhoneFieldTest, ParseTwoLinePhone) { |
| 63 FormFieldData field; | 63 FormFieldData field; |
| 64 field.form_control_type = ASCIIToUTF16("text"); | 64 field.form_control_type = "text"; |
| 65 | 65 |
| 66 field.label = ASCIIToUTF16("Area Code"); | 66 field.label = ASCIIToUTF16("Area Code"); |
| 67 field.name = ASCIIToUTF16("area code"); | 67 field.name = ASCIIToUTF16("area code"); |
| 68 list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); | 68 list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); |
| 69 | 69 |
| 70 field.label = ASCIIToUTF16("Phone"); | 70 field.label = ASCIIToUTF16("Phone"); |
| 71 field.name = ASCIIToUTF16("phone"); | 71 field.name = ASCIIToUTF16("phone"); |
| 72 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone2"))); | 72 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone2"))); |
| 73 | 73 |
| 74 AutofillScanner scanner(list_.get()); | 74 AutofillScanner scanner(list_.get()); |
| 75 field_.reset(Parse(&scanner)); | 75 field_.reset(Parse(&scanner)); |
| 76 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); | 76 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); |
| 77 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 77 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
| 78 ASSERT_TRUE( | 78 ASSERT_TRUE( |
| 79 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); | 79 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); |
| 80 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); | 80 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); |
| 81 ASSERT_TRUE( | 81 ASSERT_TRUE( |
| 82 field_type_map_.find(ASCIIToUTF16("phone2")) != field_type_map_.end()); | 82 field_type_map_.find(ASCIIToUTF16("phone2")) != field_type_map_.end()); |
| 83 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone2")]); | 83 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone2")]); |
| 84 } | 84 } |
| 85 | 85 |
| 86 TEST_F(PhoneFieldTest, ThreePartPhoneNumber) { | 86 TEST_F(PhoneFieldTest, ThreePartPhoneNumber) { |
| 87 // Phone in format <field> - <field> - <field> could be either | 87 // Phone in format <field> - <field> - <field> could be either |
| 88 // <area code> - <prefix> - <suffix>, or | 88 // <area code> - <prefix> - <suffix>, or |
| 89 // <country code> - <area code> - <phone>. The only distinguishing feature is | 89 // <country code> - <area code> - <phone>. The only distinguishing feature is |
| 90 // size: <prefix> is no bigger than 3 characters, and <suffix> is no bigger | 90 // size: <prefix> is no bigger than 3 characters, and <suffix> is no bigger |
| 91 // than 4. | 91 // than 4. |
| 92 FormFieldData field; | 92 FormFieldData field; |
| 93 field.form_control_type = ASCIIToUTF16("text"); | 93 field.form_control_type = "text"; |
| 94 | 94 |
| 95 field.label = ASCIIToUTF16("Phone:"); | 95 field.label = ASCIIToUTF16("Phone:"); |
| 96 field.name = ASCIIToUTF16("dayphone1"); | 96 field.name = ASCIIToUTF16("dayphone1"); |
| 97 field.max_length = 0; | 97 field.max_length = 0; |
| 98 list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); | 98 list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); |
| 99 | 99 |
| 100 field.label = ASCIIToUTF16("-"); | 100 field.label = ASCIIToUTF16("-"); |
| 101 field.name = ASCIIToUTF16("dayphone2"); | 101 field.name = ASCIIToUTF16("dayphone2"); |
| 102 field.max_length = 3; | 102 field.max_length = 3; |
| 103 list_.push_back(new AutofillField(field, ASCIIToUTF16("prefix2"))); | 103 list_.push_back(new AutofillField(field, ASCIIToUTF16("prefix2"))); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 127 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("suffix3")]); | 127 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("suffix3")]); |
| 128 EXPECT_TRUE( | 128 EXPECT_TRUE( |
| 129 field_type_map_.find(ASCIIToUTF16("ext4")) == field_type_map_.end()); | 129 field_type_map_.find(ASCIIToUTF16("ext4")) == field_type_map_.end()); |
| 130 } | 130 } |
| 131 | 131 |
| 132 // This scenario of explicitly labeled "prefix" and "suffix" phone numbers | 132 // This scenario of explicitly labeled "prefix" and "suffix" phone numbers |
| 133 // encountered in http://crbug.com/40694 with page | 133 // encountered in http://crbug.com/40694 with page |
| 134 // https://www.wrapables.com/jsp/Signup.jsp. | 134 // https://www.wrapables.com/jsp/Signup.jsp. |
| 135 TEST_F(PhoneFieldTest, ThreePartPhoneNumberPrefixSuffix) { | 135 TEST_F(PhoneFieldTest, ThreePartPhoneNumberPrefixSuffix) { |
| 136 FormFieldData field; | 136 FormFieldData field; |
| 137 field.form_control_type = ASCIIToUTF16("text"); | 137 field.form_control_type = "text"; |
| 138 | 138 |
| 139 field.label = ASCIIToUTF16("Phone:"); | 139 field.label = ASCIIToUTF16("Phone:"); |
| 140 field.name = ASCIIToUTF16("area"); | 140 field.name = ASCIIToUTF16("area"); |
| 141 list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); | 141 list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); |
| 142 | 142 |
| 143 field.label = string16(); | 143 field.label = string16(); |
| 144 field.name = ASCIIToUTF16("prefix"); | 144 field.name = ASCIIToUTF16("prefix"); |
| 145 list_.push_back(new AutofillField(field, ASCIIToUTF16("prefix2"))); | 145 list_.push_back(new AutofillField(field, ASCIIToUTF16("prefix2"))); |
| 146 | 146 |
| 147 field.label = string16(); | 147 field.label = string16(); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 158 ASSERT_TRUE( | 158 ASSERT_TRUE( |
| 159 field_type_map_.find(ASCIIToUTF16("prefix2")) != field_type_map_.end()); | 159 field_type_map_.find(ASCIIToUTF16("prefix2")) != field_type_map_.end()); |
| 160 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("prefix2")]); | 160 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("prefix2")]); |
| 161 ASSERT_TRUE( | 161 ASSERT_TRUE( |
| 162 field_type_map_.find(ASCIIToUTF16("suffix3")) != field_type_map_.end()); | 162 field_type_map_.find(ASCIIToUTF16("suffix3")) != field_type_map_.end()); |
| 163 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("suffix3")]); | 163 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("suffix3")]); |
| 164 } | 164 } |
| 165 | 165 |
| 166 TEST_F(PhoneFieldTest, ThreePartPhoneNumberPrefixSuffix2) { | 166 TEST_F(PhoneFieldTest, ThreePartPhoneNumberPrefixSuffix2) { |
| 167 FormFieldData field; | 167 FormFieldData field; |
| 168 field.form_control_type = ASCIIToUTF16("text"); | 168 field.form_control_type = "text"; |
| 169 | 169 |
| 170 field.label = ASCIIToUTF16("("); | 170 field.label = ASCIIToUTF16("("); |
| 171 field.name = ASCIIToUTF16("phone1"); | 171 field.name = ASCIIToUTF16("phone1"); |
| 172 field.max_length = 3; | 172 field.max_length = 3; |
| 173 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone1"))); | 173 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone1"))); |
| 174 | 174 |
| 175 field.label = ASCIIToUTF16(")"); | 175 field.label = ASCIIToUTF16(")"); |
| 176 field.name = ASCIIToUTF16("phone2"); | 176 field.name = ASCIIToUTF16("phone2"); |
| 177 field.max_length = 3; | 177 field.max_length = 3; |
| 178 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone2"))); | 178 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone2"))); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 194 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone2")]); | 194 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone2")]); |
| 195 ASSERT_TRUE( | 195 ASSERT_TRUE( |
| 196 field_type_map_.find(ASCIIToUTF16("phone3")) != field_type_map_.end()); | 196 field_type_map_.find(ASCIIToUTF16("phone3")) != field_type_map_.end()); |
| 197 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone3")]); | 197 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone3")]); |
| 198 } | 198 } |
| 199 | 199 |
| 200 TEST_F(PhoneFieldTest, CountryAndCityAndPhoneNumber) { | 200 TEST_F(PhoneFieldTest, CountryAndCityAndPhoneNumber) { |
| 201 // Phone in format <country code>:3 - <city and number>:10 | 201 // Phone in format <country code>:3 - <city and number>:10 |
| 202 // The |maxlength| is considered, otherwise it's too broad. | 202 // The |maxlength| is considered, otherwise it's too broad. |
| 203 FormFieldData field; | 203 FormFieldData field; |
| 204 field.form_control_type = ASCIIToUTF16("text"); | 204 field.form_control_type = "text"; |
| 205 | 205 |
| 206 field.label = ASCIIToUTF16("Phone Number"); | 206 field.label = ASCIIToUTF16("Phone Number"); |
| 207 field.name = ASCIIToUTF16("CountryCode"); | 207 field.name = ASCIIToUTF16("CountryCode"); |
| 208 field.max_length = 3; | 208 field.max_length = 3; |
| 209 list_.push_back(new AutofillField(field, ASCIIToUTF16("country"))); | 209 list_.push_back(new AutofillField(field, ASCIIToUTF16("country"))); |
| 210 | 210 |
| 211 field.label = ASCIIToUTF16("Phone Number"); | 211 field.label = ASCIIToUTF16("Phone Number"); |
| 212 field.name = ASCIIToUTF16("PhoneNumber"); | 212 field.name = ASCIIToUTF16("PhoneNumber"); |
| 213 field.max_length = 10; | 213 field.max_length = 10; |
| 214 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone"))); | 214 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone"))); |
| 215 | 215 |
| 216 AutofillScanner scanner(list_.get()); | 216 AutofillScanner scanner(list_.get()); |
| 217 field_.reset(Parse(&scanner)); | 217 field_.reset(Parse(&scanner)); |
| 218 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); | 218 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); |
| 219 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 219 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
| 220 ASSERT_TRUE( | 220 ASSERT_TRUE( |
| 221 field_type_map_.find(ASCIIToUTF16("country")) != field_type_map_.end()); | 221 field_type_map_.find(ASCIIToUTF16("country")) != field_type_map_.end()); |
| 222 EXPECT_EQ(PHONE_HOME_COUNTRY_CODE, field_type_map_[ASCIIToUTF16("country")]); | 222 EXPECT_EQ(PHONE_HOME_COUNTRY_CODE, field_type_map_[ASCIIToUTF16("country")]); |
| 223 ASSERT_TRUE( | 223 ASSERT_TRUE( |
| 224 field_type_map_.find(ASCIIToUTF16("phone")) != field_type_map_.end()); | 224 field_type_map_.find(ASCIIToUTF16("phone")) != field_type_map_.end()); |
| 225 EXPECT_EQ(PHONE_HOME_CITY_AND_NUMBER, field_type_map_[ASCIIToUTF16("phone")]); | 225 EXPECT_EQ(PHONE_HOME_CITY_AND_NUMBER, field_type_map_[ASCIIToUTF16("phone")]); |
| 226 } | 226 } |
| OLD | NEW |