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" |
| 11 #include "chrome/common/form_field_data.h" |
11 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
12 #include "webkit/forms/form_field.h" | |
13 | 13 |
14 class PhoneFieldTest : public testing::Test { | 14 class PhoneFieldTest : public testing::Test { |
15 public: | 15 public: |
16 PhoneFieldTest() {} | 16 PhoneFieldTest() {} |
17 | 17 |
18 protected: | 18 protected: |
19 ScopedVector<const AutofillField> list_; | 19 ScopedVector<const AutofillField> list_; |
20 scoped_ptr<PhoneField> field_; | 20 scoped_ptr<PhoneField> field_; |
21 FieldTypeMap field_type_map_; | 21 FieldTypeMap field_type_map_; |
22 | 22 |
(...skipping 13 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 webkit::forms::FormField field; | 46 FormFieldData field; |
47 field.form_control_type = ASCIIToUTF16("text"); | 47 field.form_control_type = ASCIIToUTF16("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 webkit::forms::FormField field; | 63 FormFieldData field; |
64 field.form_control_type = ASCIIToUTF16("text"); | 64 field.form_control_type = ASCIIToUTF16("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 webkit::forms::FormField field; | 92 FormFieldData field; |
93 field.form_control_type = ASCIIToUTF16("text"); | 93 field.form_control_type = ASCIIToUTF16("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; |
(...skipping 23 matching lines...) Expand all Loading... |
126 field_type_map_.find(ASCIIToUTF16("suffix3")) != field_type_map_.end()); | 126 field_type_map_.find(ASCIIToUTF16("suffix3")) != field_type_map_.end()); |
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 webkit::forms::FormField field; | 136 FormFieldData field; |
137 field.form_control_type = ASCIIToUTF16("text"); | 137 field.form_control_type = ASCIIToUTF16("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 |
(...skipping 10 matching lines...) Expand all Loading... |
157 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); | 157 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); |
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 webkit::forms::FormField field; | 167 FormFieldData field; |
168 field.form_control_type = ASCIIToUTF16("text"); | 168 field.form_control_type = ASCIIToUTF16("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; |
(...skipping 15 matching lines...) Expand all Loading... |
193 field_type_map_.find(ASCIIToUTF16("phone2")) != field_type_map_.end()); | 193 field_type_map_.find(ASCIIToUTF16("phone2")) != field_type_map_.end()); |
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 webkit::forms::FormField field; | 203 FormFieldData field; |
204 field.form_control_type = ASCIIToUTF16("text"); | 204 field.form_control_type = ASCIIToUTF16("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 |