| 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 25 matching lines...) Expand all Loading... |
| 36 } | 36 } |
| 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 list_.push_back( | 46 webkit_glue::FormField field; |
| 47 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Phone"), | 47 field.form_control_type = ASCIIToUTF16("text"); |
| 48 ASCIIToUTF16("phone"), | 48 |
| 49 string16(), | 49 field.label = ASCIIToUTF16("Phone"); |
| 50 ASCIIToUTF16("text"), | 50 field.name = ASCIIToUTF16("phone"); |
| 51 0, | 51 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone1"))); |
| 52 false), | 52 |
| 53 ASCIIToUTF16("phone1"))); | |
| 54 AutofillScanner scanner(list_.get()); | 53 AutofillScanner scanner(list_.get()); |
| 55 field_.reset(Parse(&scanner)); | 54 field_.reset(Parse(&scanner)); |
| 56 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); | 55 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); |
| 57 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 56 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
| 58 ASSERT_TRUE( | 57 ASSERT_TRUE( |
| 59 field_type_map_.find(ASCIIToUTF16("phone1")) != field_type_map_.end()); | 58 field_type_map_.find(ASCIIToUTF16("phone1")) != field_type_map_.end()); |
| 60 EXPECT_EQ(PHONE_HOME_WHOLE_NUMBER, field_type_map_[ASCIIToUTF16("phone1")]); | 59 EXPECT_EQ(PHONE_HOME_WHOLE_NUMBER, field_type_map_[ASCIIToUTF16("phone1")]); |
| 61 } | 60 } |
| 62 | 61 |
| 63 TEST_F(PhoneFieldTest, ParseTwoLinePhone) { | 62 TEST_F(PhoneFieldTest, ParseTwoLinePhone) { |
| 64 list_.push_back( | 63 webkit_glue::FormField field; |
| 65 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Area Code"), | 64 field.form_control_type = ASCIIToUTF16("text"); |
| 66 ASCIIToUTF16("area code"), | 65 |
| 67 string16(), | 66 field.label = ASCIIToUTF16("Area Code"); |
| 68 ASCIIToUTF16("text"), | 67 field.name = ASCIIToUTF16("area code"); |
| 69 0, | 68 list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); |
| 70 false), | 69 |
| 71 ASCIIToUTF16("areacode1"))); | 70 field.label = ASCIIToUTF16("Phone"); |
| 72 list_.push_back( | 71 field.name = ASCIIToUTF16("phone"); |
| 73 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Phone"), | 72 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone2"))); |
| 74 ASCIIToUTF16("phone"), | 73 |
| 75 string16(), | |
| 76 ASCIIToUTF16("text"), | |
| 77 0, | |
| 78 false), | |
| 79 ASCIIToUTF16("phone1"))); | |
| 80 AutofillScanner scanner(list_.get()); | 74 AutofillScanner scanner(list_.get()); |
| 81 field_.reset(Parse(&scanner)); | 75 field_.reset(Parse(&scanner)); |
| 82 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); | 76 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); |
| 83 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 77 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
| 84 ASSERT_TRUE( | 78 ASSERT_TRUE( |
| 85 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); | 79 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); |
| 86 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); | 80 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); |
| 87 ASSERT_TRUE( | 81 ASSERT_TRUE( |
| 88 field_type_map_.find(ASCIIToUTF16("phone1")) != field_type_map_.end()); | 82 field_type_map_.find(ASCIIToUTF16("phone2")) != field_type_map_.end()); |
| 89 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone1")]); | 83 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone2")]); |
| 90 } | 84 } |
| 91 | 85 |
| 92 TEST_F(PhoneFieldTest, ThreePartPhoneNumber) { | 86 TEST_F(PhoneFieldTest, ThreePartPhoneNumber) { |
| 93 // Phone in format <field> - <field> - <field> could be either | 87 // Phone in format <field> - <field> - <field> could be either |
| 94 // <area code> - <prefix> - <suffix>, or | 88 // <area code> - <prefix> - <suffix>, or |
| 95 // <country code> - <area code> - <phone>. The only distinguishing feature is | 89 // <country code> - <area code> - <phone>. The only distinguishing feature is |
| 96 // 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 |
| 97 // than 4. | 91 // than 4. |
| 98 list_.push_back( | 92 webkit_glue::FormField field; |
| 99 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Phone:"), | 93 field.form_control_type = ASCIIToUTF16("text"); |
| 100 ASCIIToUTF16("dayphone1"), | 94 |
| 101 string16(), | 95 field.label = ASCIIToUTF16("Phone:"); |
| 102 ASCIIToUTF16("text"), | 96 field.name = ASCIIToUTF16("dayphone1"); |
| 103 0, | 97 field.max_length = 0; |
| 104 false), | 98 list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); |
| 105 ASCIIToUTF16("areacode1"))); | 99 |
| 106 list_.push_back( | 100 field.label = ASCIIToUTF16("-"); |
| 107 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("-"), | 101 field.name = ASCIIToUTF16("dayphone2"); |
| 108 ASCIIToUTF16("dayphone2"), | 102 field.max_length = 3; |
| 109 string16(), | 103 list_.push_back(new AutofillField(field, ASCIIToUTF16("prefix2"))); |
| 110 ASCIIToUTF16("text"), | 104 |
| 111 3, | 105 field.label = ASCIIToUTF16("-"); |
| 112 false), | 106 field.name = ASCIIToUTF16("dayphone3"); |
| 113 ASCIIToUTF16("prefix1"))); | 107 field.max_length = 4; |
| 114 list_.push_back( | 108 list_.push_back(new AutofillField(field, ASCIIToUTF16("suffix3"))); |
| 115 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("-"), | 109 |
| 116 ASCIIToUTF16("dayphone3"), | 110 field.label = ASCIIToUTF16("ext.:"); |
| 117 string16(), | 111 field.name = ASCIIToUTF16("dayphone4"); |
| 118 ASCIIToUTF16("text"), | 112 field.max_length = 0; |
| 119 4, | 113 list_.push_back(new AutofillField(field, ASCIIToUTF16("ext4"))); |
| 120 false), | 114 |
| 121 ASCIIToUTF16("suffix1"))); | |
| 122 list_.push_back( | |
| 123 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("ext.:"), | |
| 124 ASCIIToUTF16("dayphone4"), | |
| 125 string16(), | |
| 126 ASCIIToUTF16("text"), | |
| 127 0, | |
| 128 false), | |
| 129 ASCIIToUTF16("ext1"))); | |
| 130 AutofillScanner scanner(list_.get()); | 115 AutofillScanner scanner(list_.get()); |
| 131 field_.reset(Parse(&scanner)); | 116 field_.reset(Parse(&scanner)); |
| 132 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); | 117 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); |
| 133 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 118 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
| 134 ASSERT_TRUE( | 119 ASSERT_TRUE( |
| 135 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); | 120 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); |
| 136 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); | 121 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); |
| 137 ASSERT_TRUE( | 122 ASSERT_TRUE( |
| 138 field_type_map_.find(ASCIIToUTF16("prefix1")) != field_type_map_.end()); | 123 field_type_map_.find(ASCIIToUTF16("prefix2")) != field_type_map_.end()); |
| 139 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("prefix1")]); | 124 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("prefix2")]); |
| 140 ASSERT_TRUE( | 125 ASSERT_TRUE( |
| 141 field_type_map_.find(ASCIIToUTF16("suffix1")) != field_type_map_.end()); | 126 field_type_map_.find(ASCIIToUTF16("suffix3")) != field_type_map_.end()); |
| 142 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("suffix1")]); | 127 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("suffix3")]); |
| 128 EXPECT_TRUE( |
| 129 field_type_map_.find(ASCIIToUTF16("ext4")) == field_type_map_.end()); |
| 143 } | 130 } |
| 144 | 131 |
| 145 // This scenario of explicitly labeled "prefix" and "suffix" phone numbers | 132 // This scenario of explicitly labeled "prefix" and "suffix" phone numbers |
| 146 // encountered in http://crbug.com/40694 with page | 133 // encountered in http://crbug.com/40694 with page |
| 147 // https://www.wrapables.com/jsp/Signup.jsp. | 134 // https://www.wrapables.com/jsp/Signup.jsp. |
| 148 TEST_F(PhoneFieldTest, ThreePartPhoneNumberPrefixSuffix) { | 135 TEST_F(PhoneFieldTest, ThreePartPhoneNumberPrefixSuffix) { |
| 149 list_.push_back( | 136 webkit_glue::FormField field; |
| 150 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Phone:"), | 137 field.form_control_type = ASCIIToUTF16("text"); |
| 151 ASCIIToUTF16("area"), | 138 |
| 152 string16(), | 139 field.label = ASCIIToUTF16("Phone:"); |
| 153 ASCIIToUTF16("text"), | 140 field.name = ASCIIToUTF16("area"); |
| 154 0, | 141 list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); |
| 155 false), | 142 |
| 156 ASCIIToUTF16("areacode1"))); | 143 field.label = string16(); |
| 157 list_.push_back( | 144 field.name = ASCIIToUTF16("prefix"); |
| 158 new AutofillField(webkit_glue::FormField(string16(), | 145 list_.push_back(new AutofillField(field, ASCIIToUTF16("prefix2"))); |
| 159 ASCIIToUTF16("prefix"), | 146 |
| 160 string16(), | 147 field.label = string16(); |
| 161 ASCIIToUTF16("text"), | 148 field.name = ASCIIToUTF16("suffix"); |
| 162 0, | 149 list_.push_back(new AutofillField(field, ASCIIToUTF16("suffix3"))); |
| 163 false), | 150 |
| 164 ASCIIToUTF16("prefix1"))); | |
| 165 list_.push_back( | |
| 166 new AutofillField(webkit_glue::FormField(string16(), | |
| 167 ASCIIToUTF16("suffix"), | |
| 168 string16(), | |
| 169 ASCIIToUTF16("text"), | |
| 170 0, | |
| 171 false), | |
| 172 ASCIIToUTF16("suffix1"))); | |
| 173 AutofillScanner scanner(list_.get()); | 151 AutofillScanner scanner(list_.get()); |
| 174 field_.reset(Parse(&scanner)); | 152 field_.reset(Parse(&scanner)); |
| 175 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); | 153 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); |
| 176 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 154 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
| 177 ASSERT_TRUE( | 155 ASSERT_TRUE( |
| 178 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); | 156 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); |
| 179 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); | 157 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); |
| 180 ASSERT_TRUE( | 158 ASSERT_TRUE( |
| 181 field_type_map_.find(ASCIIToUTF16("prefix1")) != field_type_map_.end()); | 159 field_type_map_.find(ASCIIToUTF16("prefix2")) != field_type_map_.end()); |
| 182 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("prefix1")]); | 160 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("prefix2")]); |
| 183 ASSERT_TRUE( | 161 ASSERT_TRUE( |
| 184 field_type_map_.find(ASCIIToUTF16("suffix1")) != field_type_map_.end()); | 162 field_type_map_.find(ASCIIToUTF16("suffix3")) != field_type_map_.end()); |
| 185 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("suffix1")]); | 163 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("suffix3")]); |
| 186 } | 164 } |
| 187 | 165 |
| 188 TEST_F(PhoneFieldTest, ThreePartPhoneNumberPrefixSuffix2) { | 166 TEST_F(PhoneFieldTest, ThreePartPhoneNumberPrefixSuffix2) { |
| 189 list_.push_back( | 167 webkit_glue::FormField field; |
| 190 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("("), | 168 field.form_control_type = ASCIIToUTF16("text"); |
| 191 ASCIIToUTF16("phone1"), | 169 |
| 192 string16(), | 170 field.label = ASCIIToUTF16("("); |
| 193 ASCIIToUTF16("text"), | 171 field.name = ASCIIToUTF16("phone1"); |
| 194 3, | 172 field.max_length = 3; |
| 195 false), | 173 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone1"))); |
| 196 ASCIIToUTF16("phone1"))); | 174 |
| 197 list_.push_back( | 175 field.label = ASCIIToUTF16(")"); |
| 198 new AutofillField(webkit_glue::FormField(ASCIIToUTF16(")"), | 176 field.name = ASCIIToUTF16("phone2"); |
| 199 ASCIIToUTF16("phone2"), | 177 field.max_length = 3; |
| 200 string16(), | 178 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone2"))); |
| 201 ASCIIToUTF16("text"), | 179 |
| 202 3, | 180 field.label = string16(); |
| 203 false), | 181 field.name = ASCIIToUTF16("phone3"); |
| 204 ASCIIToUTF16("phone2"))); | 182 field.max_length = 4; |
| 205 list_.push_back( | 183 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone3"))); |
| 206 new AutofillField(webkit_glue::FormField(string16(), | 184 |
| 207 ASCIIToUTF16("phone3"), | |
| 208 string16(), | |
| 209 ASCIIToUTF16("text"), | |
| 210 4, | |
| 211 false), | |
| 212 ASCIIToUTF16("phone3"))); | |
| 213 AutofillScanner scanner(list_.get()); | 185 AutofillScanner scanner(list_.get()); |
| 214 field_.reset(Parse(&scanner)); | 186 field_.reset(Parse(&scanner)); |
| 215 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); | 187 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); |
| 216 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 188 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
| 217 ASSERT_TRUE( | 189 ASSERT_TRUE( |
| 218 field_type_map_.find(ASCIIToUTF16("phone1")) != field_type_map_.end()); | 190 field_type_map_.find(ASCIIToUTF16("phone1")) != field_type_map_.end()); |
| 219 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("phone1")]); | 191 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("phone1")]); |
| 220 ASSERT_TRUE( | 192 ASSERT_TRUE( |
| 221 field_type_map_.find(ASCIIToUTF16("phone2")) != field_type_map_.end()); | 193 field_type_map_.find(ASCIIToUTF16("phone2")) != field_type_map_.end()); |
| 222 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone2")]); | 194 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone2")]); |
| 223 ASSERT_TRUE( | 195 ASSERT_TRUE( |
| 224 field_type_map_.find(ASCIIToUTF16("phone3")) != field_type_map_.end()); | 196 field_type_map_.find(ASCIIToUTF16("phone3")) != field_type_map_.end()); |
| 225 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone3")]); | 197 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone3")]); |
| 226 } | 198 } |
| 227 | 199 |
| 228 TEST_F(PhoneFieldTest, ParseOneLineFax) { | 200 TEST_F(PhoneFieldTest, ParseOneLineFax) { |
| 229 list_.push_back( | 201 webkit_glue::FormField field; |
| 230 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Fax"), | 202 field.form_control_type = ASCIIToUTF16("text"); |
| 231 ASCIIToUTF16("fax"), | 203 |
| 232 string16(), | 204 field.label = ASCIIToUTF16("Fax"); |
| 233 ASCIIToUTF16("text"), | 205 field.name = ASCIIToUTF16("fax"); |
| 234 0, | 206 list_.push_back(new AutofillField(field, ASCIIToUTF16("fax1"))); |
| 235 false), | 207 |
| 236 ASCIIToUTF16("fax1"))); | |
| 237 AutofillScanner scanner(list_.get()); | 208 AutofillScanner scanner(list_.get()); |
| 238 field_.reset(Parse(&scanner)); | 209 field_.reset(Parse(&scanner)); |
| 239 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); | 210 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); |
| 240 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 211 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
| 241 ASSERT_TRUE( | 212 ASSERT_TRUE( |
| 242 field_type_map_.find(ASCIIToUTF16("fax1")) != field_type_map_.end()); | 213 field_type_map_.find(ASCIIToUTF16("fax1")) != field_type_map_.end()); |
| 243 EXPECT_EQ(PHONE_FAX_WHOLE_NUMBER, field_type_map_[ASCIIToUTF16("fax1")]); | 214 EXPECT_EQ(PHONE_FAX_WHOLE_NUMBER, field_type_map_[ASCIIToUTF16("fax1")]); |
| 244 } | 215 } |
| 245 | 216 |
| 246 TEST_F(PhoneFieldTest, ParseTwoLineFax) { | 217 TEST_F(PhoneFieldTest, ParseTwoLineFax) { |
| 247 list_.push_back( | 218 webkit_glue::FormField field; |
| 248 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Area Code"), | 219 field.form_control_type = ASCIIToUTF16("text"); |
| 249 ASCIIToUTF16("area code"), | 220 |
| 250 string16(), | 221 field.label = ASCIIToUTF16("Area Code"); |
| 251 ASCIIToUTF16("text"), | 222 field.name = ASCIIToUTF16("area code"); |
| 252 0, | 223 list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); |
| 253 false), | 224 |
| 254 ASCIIToUTF16("areacode1"))); | 225 field.label = ASCIIToUTF16("Fax"); |
| 255 list_.push_back( | 226 field.name = ASCIIToUTF16("fax"); |
| 256 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Fax"), | 227 list_.push_back(new AutofillField(field, ASCIIToUTF16("fax2"))); |
| 257 ASCIIToUTF16("fax"), | 228 |
| 258 string16(), | |
| 259 ASCIIToUTF16("text"), | |
| 260 0, | |
| 261 false), | |
| 262 ASCIIToUTF16("fax1"))); | |
| 263 AutofillScanner scanner(list_.get()); | 229 AutofillScanner scanner(list_.get()); |
| 264 field_.reset(Parse(&scanner)); | 230 field_.reset(Parse(&scanner)); |
| 265 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); | 231 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); |
| 266 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 232 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
| 267 ASSERT_TRUE( | 233 ASSERT_TRUE( |
| 268 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); | 234 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); |
| 269 // It should be FAX, based on the other phone in the group. | 235 // It should be FAX, based on the other phone in the group. |
| 270 EXPECT_EQ(PHONE_FAX_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); | 236 EXPECT_EQ(PHONE_FAX_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); |
| 271 ASSERT_TRUE( | 237 ASSERT_TRUE( |
| 272 field_type_map_.find(ASCIIToUTF16("fax1")) != field_type_map_.end()); | 238 field_type_map_.find(ASCIIToUTF16("fax2")) != field_type_map_.end()); |
| 273 EXPECT_EQ(PHONE_FAX_NUMBER, field_type_map_[ASCIIToUTF16("fax1")]); | 239 EXPECT_EQ(PHONE_FAX_NUMBER, field_type_map_[ASCIIToUTF16("fax2")]); |
| 274 } | 240 } |
| 275 | 241 |
| 276 TEST_F(PhoneFieldTest, ThreePartFaxNumberPrefixSuffix) { | 242 TEST_F(PhoneFieldTest, ThreePartFaxNumberPrefixSuffix) { |
| 277 list_.push_back( | 243 webkit_glue::FormField field; |
| 278 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Fax:"), | 244 field.form_control_type = ASCIIToUTF16("text"); |
| 279 ASCIIToUTF16("area"), | 245 |
| 280 string16(), | 246 field.label = ASCIIToUTF16("Fax:"); |
| 281 ASCIIToUTF16("text"), | 247 field.name = ASCIIToUTF16("area"); |
| 282 0, | 248 list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); |
| 283 false), | 249 |
| 284 ASCIIToUTF16("areacode1"))); | 250 field.label = string16(); |
| 285 list_.push_back( | 251 field.name = ASCIIToUTF16("prefix"); |
| 286 new AutofillField(webkit_glue::FormField(string16(), | 252 list_.push_back(new AutofillField(field, ASCIIToUTF16("prefix2"))); |
| 287 ASCIIToUTF16("prefix"), | 253 |
| 288 string16(), | 254 field.label = string16(); |
| 289 ASCIIToUTF16("text"), | 255 field.name = ASCIIToUTF16("suffix"); |
| 290 0, | 256 list_.push_back(new AutofillField(field, ASCIIToUTF16("suffix3"))); |
| 291 false), | 257 |
| 292 ASCIIToUTF16("prefix1"))); | |
| 293 list_.push_back( | |
| 294 new AutofillField(webkit_glue::FormField(string16(), | |
| 295 ASCIIToUTF16("suffix"), | |
| 296 string16(), | |
| 297 ASCIIToUTF16("text"), | |
| 298 0, | |
| 299 false), | |
| 300 ASCIIToUTF16("suffix1"))); | |
| 301 AutofillScanner scanner(list_.get()); | 258 AutofillScanner scanner(list_.get()); |
| 302 field_.reset(Parse(&scanner)); | 259 field_.reset(Parse(&scanner)); |
| 303 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); | 260 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); |
| 304 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 261 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
| 305 ASSERT_TRUE( | 262 ASSERT_TRUE( |
| 306 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); | 263 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); |
| 307 EXPECT_EQ(PHONE_FAX_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); | 264 EXPECT_EQ(PHONE_FAX_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); |
| 308 ASSERT_TRUE( | 265 ASSERT_TRUE( |
| 309 field_type_map_.find(ASCIIToUTF16("prefix1")) != field_type_map_.end()); | 266 field_type_map_.find(ASCIIToUTF16("prefix2")) != field_type_map_.end()); |
| 310 EXPECT_EQ(PHONE_FAX_NUMBER, field_type_map_[ASCIIToUTF16("prefix1")]); | 267 EXPECT_EQ(PHONE_FAX_NUMBER, field_type_map_[ASCIIToUTF16("prefix2")]); |
| 311 ASSERT_TRUE( | 268 ASSERT_TRUE( |
| 312 field_type_map_.find(ASCIIToUTF16("suffix1")) != field_type_map_.end()); | 269 field_type_map_.find(ASCIIToUTF16("suffix3")) != field_type_map_.end()); |
| 313 EXPECT_EQ(PHONE_FAX_NUMBER, field_type_map_[ASCIIToUTF16("suffix1")]); | 270 EXPECT_EQ(PHONE_FAX_NUMBER, field_type_map_[ASCIIToUTF16("suffix3")]); |
| 314 } | 271 } |
| 315 | 272 |
| 316 TEST_F(PhoneFieldTest, CountryAndCityAndPhoneNumber) { | 273 TEST_F(PhoneFieldTest, CountryAndCityAndPhoneNumber) { |
| 317 // Phone in format <country code>:3 - <city and number>:10 | 274 // Phone in format <country code>:3 - <city and number>:10 |
| 318 // The |maxlength| is considered, otherwise it's too broad. | 275 // The |maxlength| is considered, otherwise it's too broad. |
| 319 list_.push_back( | 276 webkit_glue::FormField field; |
| 320 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Phone Number"), | 277 field.form_control_type = ASCIIToUTF16("text"); |
| 321 ASCIIToUTF16("CountryCode"), | 278 |
| 322 string16(), | 279 field.label = ASCIIToUTF16("Phone Number"); |
| 323 ASCIIToUTF16("text"), | 280 field.name = ASCIIToUTF16("CountryCode"); |
| 324 3, | 281 field.max_length = 3; |
| 325 false), | 282 list_.push_back(new AutofillField(field, ASCIIToUTF16("country"))); |
| 326 ASCIIToUTF16("country"))); | 283 |
| 327 list_.push_back( | 284 field.label = ASCIIToUTF16("Phone Number"); |
| 328 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Phone Number"), | 285 field.name = ASCIIToUTF16("PhoneNumber"); |
| 329 ASCIIToUTF16("PhoneNumber"), | 286 field.max_length = 10; |
| 330 string16(), | 287 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone"))); |
| 331 ASCIIToUTF16("text"), | 288 |
| 332 10, | |
| 333 false), | |
| 334 ASCIIToUTF16("phone"))); | |
| 335 AutofillScanner scanner(list_.get()); | 289 AutofillScanner scanner(list_.get()); |
| 336 field_.reset(Parse(&scanner)); | 290 field_.reset(Parse(&scanner)); |
| 337 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); | 291 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); |
| 338 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 292 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
| 339 ASSERT_TRUE( | 293 ASSERT_TRUE( |
| 340 field_type_map_.find(ASCIIToUTF16("country")) != field_type_map_.end()); | 294 field_type_map_.find(ASCIIToUTF16("country")) != field_type_map_.end()); |
| 341 EXPECT_EQ(PHONE_HOME_COUNTRY_CODE, field_type_map_[ASCIIToUTF16("country")]); | 295 EXPECT_EQ(PHONE_HOME_COUNTRY_CODE, field_type_map_[ASCIIToUTF16("country")]); |
| 342 ASSERT_TRUE( | 296 ASSERT_TRUE( |
| 343 field_type_map_.find(ASCIIToUTF16("phone")) != field_type_map_.end()); | 297 field_type_map_.find(ASCIIToUTF16("phone")) != field_type_map_.end()); |
| 344 EXPECT_EQ(PHONE_HOME_CITY_AND_NUMBER, field_type_map_[ASCIIToUTF16("phone")]); | 298 EXPECT_EQ(PHONE_HOME_CITY_AND_NUMBER, field_type_map_[ASCIIToUTF16("phone")]); |
| 345 } | 299 } |
| OLD | NEW |