Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
| 8 #include "components/autofill/core/browser/autofill_field.h" | 8 #include "components/autofill/core/browser/autofill_field.h" |
| 9 #include "components/autofill/core/browser/autofill_scanner.h" | 9 #include "components/autofill/core/browser/autofill_scanner.h" |
| 10 #include "components/autofill/core/browser/phone_field.h" | 10 #include "components/autofill/core/browser/phone_field.h" |
| 11 #include "components/autofill/core/common/form_field_data.h" | 11 #include "components/autofill/core/common/form_field_data.h" |
| 12 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
| 13 | 13 |
| 14 using base::ASCIIToUTF16; | 14 using base::ASCIIToUTF16; |
| 15 | 15 |
| 16 namespace autofill { | 16 namespace autofill { |
| 17 | 17 |
| 18 namespace { | |
| 19 | |
| 20 const char* const kFieldTypes[] = { | |
| 21 "text", | |
| 22 "tel", | |
|
Lei Zhang
2015/03/26 02:09:15
FYI, I intend to add "number" in a follow up CL.
| |
| 23 }; | |
| 24 | |
| 25 } // namespace | |
| 26 | |
| 18 class PhoneFieldTest : public testing::Test { | 27 class PhoneFieldTest : public testing::Test { |
| 19 public: | 28 public: |
| 20 PhoneFieldTest() {} | 29 PhoneFieldTest() {} |
| 21 | 30 |
| 22 protected: | 31 protected: |
| 23 ScopedVector<AutofillField> list_; | |
| 24 scoped_ptr<PhoneField> field_; | |
| 25 ServerFieldTypeMap field_type_map_; | |
| 26 | |
| 27 // Downcast for tests. | 32 // Downcast for tests. |
| 28 static scoped_ptr<PhoneField> Parse(AutofillScanner* scanner) { | 33 static scoped_ptr<PhoneField> Parse(AutofillScanner* scanner) { |
| 29 scoped_ptr<FormField> field = PhoneField::Parse(scanner); | 34 scoped_ptr<FormField> field = PhoneField::Parse(scanner); |
| 30 return make_scoped_ptr(static_cast<PhoneField*>(field.release())); | 35 return make_scoped_ptr(static_cast<PhoneField*>(field.release())); |
| 31 } | 36 } |
| 32 | 37 |
| 38 void Clear() { | |
| 39 list_.clear(); | |
| 40 field_.reset(); | |
| 41 field_type_map_.clear(); | |
| 42 } | |
| 43 | |
| 44 void CheckField(const std::string& name, | |
| 45 ServerFieldType expected_type) const { | |
| 46 auto it = field_type_map_.find(ASCIIToUTF16(name)); | |
| 47 ASSERT_TRUE(it != field_type_map_.end()) << name; | |
| 48 EXPECT_EQ(expected_type, it->second) << name; | |
| 49 } | |
| 50 | |
| 51 ScopedVector<AutofillField> list_; | |
| 52 scoped_ptr<PhoneField> field_; | |
| 53 ServerFieldTypeMap field_type_map_; | |
| 54 | |
| 33 private: | 55 private: |
| 34 DISALLOW_COPY_AND_ASSIGN(PhoneFieldTest); | 56 DISALLOW_COPY_AND_ASSIGN(PhoneFieldTest); |
| 35 }; | 57 }; |
| 36 | 58 |
| 37 TEST_F(PhoneFieldTest, Empty) { | 59 TEST_F(PhoneFieldTest, Empty) { |
| 38 AutofillScanner scanner(list_.get()); | 60 AutofillScanner scanner(list_.get()); |
| 39 field_ = Parse(&scanner); | 61 field_ = Parse(&scanner); |
| 40 ASSERT_EQ(nullptr, field_.get()); | 62 ASSERT_EQ(nullptr, field_.get()); |
| 41 } | 63 } |
| 42 | 64 |
| 43 TEST_F(PhoneFieldTest, NonParse) { | 65 TEST_F(PhoneFieldTest, NonParse) { |
| 44 list_.push_back(new AutofillField); | 66 list_.push_back(new AutofillField); |
| 45 AutofillScanner scanner(list_.get()); | 67 AutofillScanner scanner(list_.get()); |
| 46 field_ = Parse(&scanner); | 68 field_ = Parse(&scanner); |
| 47 ASSERT_EQ(nullptr, field_.get()); | 69 ASSERT_EQ(nullptr, field_.get()); |
| 48 } | 70 } |
| 49 | 71 |
| 50 TEST_F(PhoneFieldTest, ParseOneLinePhone) { | 72 TEST_F(PhoneFieldTest, ParseOneLinePhone) { |
| 51 FormFieldData field; | 73 FormFieldData field; |
| 52 field.form_control_type = "text"; | |
| 53 | 74 |
| 54 field.label = ASCIIToUTF16("Phone"); | 75 for (size_t i = 0; i < arraysize(kFieldTypes); ++i) { |
| 55 field.name = ASCIIToUTF16("phone"); | 76 Clear(); |
| 56 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone1"))); | |
| 57 | 77 |
| 58 AutofillScanner scanner(list_.get()); | 78 field.form_control_type = kFieldTypes[i]; |
| 59 field_ = Parse(&scanner); | 79 field.label = ASCIIToUTF16("Phone"); |
| 60 ASSERT_NE(nullptr, field_.get()); | 80 field.name = ASCIIToUTF16("phone"); |
| 61 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 81 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone1"))); |
| 62 ASSERT_TRUE( | 82 |
| 63 field_type_map_.find(ASCIIToUTF16("phone1")) != field_type_map_.end()); | 83 AutofillScanner scanner(list_.get()); |
| 64 EXPECT_EQ(PHONE_HOME_WHOLE_NUMBER, field_type_map_[ASCIIToUTF16("phone1")]); | 84 field_ = Parse(&scanner); |
| 85 ASSERT_NE(nullptr, field_.get()); | |
| 86 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | |
| 87 CheckField("phone1", PHONE_HOME_WHOLE_NUMBER); | |
| 88 } | |
| 65 } | 89 } |
| 66 | 90 |
| 67 TEST_F(PhoneFieldTest, ParseTwoLinePhone) { | 91 TEST_F(PhoneFieldTest, ParseTwoLinePhone) { |
| 68 FormFieldData field; | 92 FormFieldData field; |
| 69 field.form_control_type = "text"; | |
| 70 | 93 |
| 71 field.label = ASCIIToUTF16("Area Code"); | 94 for (size_t i = 0; i < arraysize(kFieldTypes); ++i) { |
| 72 field.name = ASCIIToUTF16("area code"); | 95 Clear(); |
| 73 list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); | |
| 74 | 96 |
| 75 field.label = ASCIIToUTF16("Phone"); | 97 field.form_control_type = kFieldTypes[i]; |
| 76 field.name = ASCIIToUTF16("phone"); | 98 field.label = ASCIIToUTF16("Area Code"); |
| 77 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone2"))); | 99 field.name = ASCIIToUTF16("area code"); |
| 100 list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); | |
| 78 | 101 |
| 79 AutofillScanner scanner(list_.get()); | 102 field.label = ASCIIToUTF16("Phone"); |
| 80 field_ = Parse(&scanner); | 103 field.name = ASCIIToUTF16("phone"); |
| 81 ASSERT_NE(nullptr, field_.get()); | 104 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone2"))); |
| 82 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 105 |
| 83 ASSERT_TRUE( | 106 AutofillScanner scanner(list_.get()); |
| 84 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); | 107 field_ = Parse(&scanner); |
| 85 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); | 108 ASSERT_NE(nullptr, field_.get()); |
| 86 ASSERT_TRUE( | 109 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
| 87 field_type_map_.find(ASCIIToUTF16("phone2")) != field_type_map_.end()); | 110 CheckField("areacode1", PHONE_HOME_CITY_CODE); |
| 88 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone2")]); | 111 CheckField("phone2", PHONE_HOME_NUMBER); |
| 112 } | |
| 89 } | 113 } |
| 90 | 114 |
| 91 TEST_F(PhoneFieldTest, ThreePartPhoneNumber) { | 115 TEST_F(PhoneFieldTest, ThreePartPhoneNumber) { |
| 92 // Phone in format <field> - <field> - <field> could be either | 116 // Phone in format <field> - <field> - <field> could be either |
| 93 // <area code> - <prefix> - <suffix>, or | 117 // <area code> - <prefix> - <suffix>, or |
| 94 // <country code> - <area code> - <phone>. The only distinguishing feature is | 118 // <country code> - <area code> - <phone>. The only distinguishing feature is |
| 95 // size: <prefix> is no bigger than 3 characters, and <suffix> is no bigger | 119 // size: <prefix> is no bigger than 3 characters, and <suffix> is no bigger |
| 96 // than 4. | 120 // than 4. |
| 97 FormFieldData field; | 121 FormFieldData field; |
| 98 field.form_control_type = "text"; | |
| 99 | 122 |
| 100 field.label = ASCIIToUTF16("Phone:"); | 123 for (size_t i = 0; i < arraysize(kFieldTypes); ++i) { |
| 101 field.name = ASCIIToUTF16("dayphone1"); | 124 Clear(); |
| 102 field.max_length = 0; | |
| 103 list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); | |
| 104 | 125 |
| 105 field.label = ASCIIToUTF16("-"); | 126 field.form_control_type = kFieldTypes[i]; |
| 106 field.name = ASCIIToUTF16("dayphone2"); | 127 field.label = ASCIIToUTF16("Phone:"); |
| 107 field.max_length = 3; | 128 field.name = ASCIIToUTF16("dayphone1"); |
| 108 list_.push_back(new AutofillField(field, ASCIIToUTF16("prefix2"))); | 129 field.max_length = 0; |
| 130 list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); | |
| 109 | 131 |
| 110 field.label = ASCIIToUTF16("-"); | 132 field.label = ASCIIToUTF16("-"); |
| 111 field.name = ASCIIToUTF16("dayphone3"); | 133 field.name = ASCIIToUTF16("dayphone2"); |
| 112 field.max_length = 4; | 134 field.max_length = 3; |
| 113 list_.push_back(new AutofillField(field, ASCIIToUTF16("suffix3"))); | 135 list_.push_back(new AutofillField(field, ASCIIToUTF16("prefix2"))); |
| 114 | 136 |
| 115 field.label = ASCIIToUTF16("ext.:"); | 137 field.label = ASCIIToUTF16("-"); |
| 116 field.name = ASCIIToUTF16("dayphone4"); | 138 field.name = ASCIIToUTF16("dayphone3"); |
| 117 field.max_length = 0; | 139 field.max_length = 4; |
| 118 list_.push_back(new AutofillField(field, ASCIIToUTF16("ext4"))); | 140 list_.push_back(new AutofillField(field, ASCIIToUTF16("suffix3"))); |
| 119 | 141 |
| 120 AutofillScanner scanner(list_.get()); | 142 field.label = ASCIIToUTF16("ext.:"); |
| 121 field_ = Parse(&scanner); | 143 field.name = ASCIIToUTF16("dayphone4"); |
| 122 ASSERT_NE(nullptr, field_.get()); | 144 field.max_length = 0; |
| 123 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 145 list_.push_back(new AutofillField(field, ASCIIToUTF16("ext4"))); |
| 124 ASSERT_TRUE( | 146 |
| 125 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); | 147 AutofillScanner scanner(list_.get()); |
| 126 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); | 148 field_ = Parse(&scanner); |
| 127 ASSERT_TRUE( | 149 ASSERT_NE(nullptr, field_.get()); |
| 128 field_type_map_.find(ASCIIToUTF16("prefix2")) != field_type_map_.end()); | 150 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
| 129 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("prefix2")]); | 151 CheckField("areacode1", PHONE_HOME_CITY_CODE); |
| 130 ASSERT_TRUE( | 152 CheckField("prefix2", PHONE_HOME_NUMBER); |
| 131 field_type_map_.find(ASCIIToUTF16("suffix3")) != field_type_map_.end()); | 153 CheckField("suffix3", PHONE_HOME_NUMBER); |
| 132 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("suffix3")]); | 154 EXPECT_FALSE(ContainsKey(field_type_map_, ASCIIToUTF16("ext4"))); |
| 133 EXPECT_TRUE( | 155 } |
| 134 field_type_map_.find(ASCIIToUTF16("ext4")) == field_type_map_.end()); | |
| 135 } | 156 } |
| 136 | 157 |
| 137 // This scenario of explicitly labeled "prefix" and "suffix" phone numbers | 158 // This scenario of explicitly labeled "prefix" and "suffix" phone numbers |
| 138 // encountered in http://crbug.com/40694 with page | 159 // encountered in http://crbug.com/40694 with page |
| 139 // https://www.wrapables.com/jsp/Signup.jsp. | 160 // https://www.wrapables.com/jsp/Signup.jsp. |
| 140 TEST_F(PhoneFieldTest, ThreePartPhoneNumberPrefixSuffix) { | 161 TEST_F(PhoneFieldTest, ThreePartPhoneNumberPrefixSuffix) { |
| 141 FormFieldData field; | 162 FormFieldData field; |
| 142 field.form_control_type = "text"; | |
| 143 | 163 |
| 144 field.label = ASCIIToUTF16("Phone:"); | 164 for (size_t i = 0; i < arraysize(kFieldTypes); ++i) { |
| 145 field.name = ASCIIToUTF16("area"); | 165 Clear(); |
| 146 list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); | |
| 147 | 166 |
| 148 field.label = base::string16(); | 167 field.form_control_type = kFieldTypes[i]; |
| 149 field.name = ASCIIToUTF16("prefix"); | 168 field.label = ASCIIToUTF16("Phone:"); |
| 150 list_.push_back(new AutofillField(field, ASCIIToUTF16("prefix2"))); | 169 field.name = ASCIIToUTF16("area"); |
| 170 list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); | |
| 151 | 171 |
| 152 field.label = base::string16(); | 172 field.label = base::string16(); |
| 153 field.name = ASCIIToUTF16("suffix"); | 173 field.name = ASCIIToUTF16("prefix"); |
| 154 list_.push_back(new AutofillField(field, ASCIIToUTF16("suffix3"))); | 174 list_.push_back(new AutofillField(field, ASCIIToUTF16("prefix2"))); |
| 155 | 175 |
| 156 AutofillScanner scanner(list_.get()); | 176 field.label = base::string16(); |
| 157 field_ = Parse(&scanner); | 177 field.name = ASCIIToUTF16("suffix"); |
| 158 ASSERT_NE(nullptr, field_.get()); | 178 list_.push_back(new AutofillField(field, ASCIIToUTF16("suffix3"))); |
| 159 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 179 |
| 160 ASSERT_TRUE( | 180 AutofillScanner scanner(list_.get()); |
| 161 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); | 181 field_ = Parse(&scanner); |
| 162 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); | 182 ASSERT_NE(nullptr, field_.get()); |
| 163 ASSERT_TRUE( | 183 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
| 164 field_type_map_.find(ASCIIToUTF16("prefix2")) != field_type_map_.end()); | 184 CheckField("areacode1", PHONE_HOME_CITY_CODE); |
| 165 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("prefix2")]); | 185 CheckField("prefix2", PHONE_HOME_NUMBER); |
| 166 ASSERT_TRUE( | 186 CheckField("suffix3", PHONE_HOME_NUMBER); |
| 167 field_type_map_.find(ASCIIToUTF16("suffix3")) != field_type_map_.end()); | 187 } |
| 168 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("suffix3")]); | |
| 169 } | 188 } |
| 170 | 189 |
| 171 TEST_F(PhoneFieldTest, ThreePartPhoneNumberPrefixSuffix2) { | 190 TEST_F(PhoneFieldTest, ThreePartPhoneNumberPrefixSuffix2) { |
| 172 FormFieldData field; | 191 FormFieldData field; |
| 173 field.form_control_type = "text"; | |
| 174 | 192 |
| 175 field.label = ASCIIToUTF16("("); | 193 for (size_t i = 0; i < arraysize(kFieldTypes); ++i) { |
| 176 field.name = ASCIIToUTF16("phone1"); | 194 Clear(); |
| 177 field.max_length = 3; | |
| 178 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone1"))); | |
| 179 | 195 |
| 180 field.label = ASCIIToUTF16(")"); | 196 field.form_control_type = kFieldTypes[i]; |
| 181 field.name = ASCIIToUTF16("phone2"); | 197 field.label = ASCIIToUTF16("("); |
| 182 field.max_length = 3; | 198 field.name = ASCIIToUTF16("phone1"); |
| 183 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone2"))); | 199 field.max_length = 3; |
| 200 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone1"))); | |
| 184 | 201 |
| 185 field.label = base::string16(); | 202 field.label = ASCIIToUTF16(")"); |
| 186 field.name = ASCIIToUTF16("phone3"); | 203 field.name = ASCIIToUTF16("phone2"); |
| 187 field.max_length = 4; | 204 field.max_length = 3; |
| 188 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone3"))); | 205 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone2"))); |
| 189 | 206 |
| 190 AutofillScanner scanner(list_.get()); | 207 field.label = base::string16(); |
| 191 field_ = Parse(&scanner); | 208 field.name = ASCIIToUTF16("phone3"); |
| 192 ASSERT_NE(nullptr, field_.get()); | 209 field.max_length = 4; |
| 193 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 210 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone3"))); |
| 194 ASSERT_TRUE( | 211 |
| 195 field_type_map_.find(ASCIIToUTF16("phone1")) != field_type_map_.end()); | 212 AutofillScanner scanner(list_.get()); |
| 196 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("phone1")]); | 213 field_ = Parse(&scanner); |
| 197 ASSERT_TRUE( | 214 ASSERT_NE(nullptr, field_.get()); |
| 198 field_type_map_.find(ASCIIToUTF16("phone2")) != field_type_map_.end()); | 215 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
| 199 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone2")]); | 216 CheckField("phone1", PHONE_HOME_CITY_CODE); |
| 200 ASSERT_TRUE( | 217 CheckField("phone2", PHONE_HOME_NUMBER); |
| 201 field_type_map_.find(ASCIIToUTF16("phone3")) != field_type_map_.end()); | 218 CheckField("phone3", PHONE_HOME_NUMBER); |
| 202 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone3")]); | 219 } |
| 203 } | 220 } |
| 204 | 221 |
| 205 TEST_F(PhoneFieldTest, CountryAndCityAndPhoneNumber) { | 222 TEST_F(PhoneFieldTest, CountryAndCityAndPhoneNumber) { |
| 206 // Phone in format <country code>:3 - <city and number>:10 | 223 // Phone in format <country code>:3 - <city and number>:10 |
| 207 // The |maxlength| is considered, otherwise it's too broad. | 224 // The |maxlength| is considered, otherwise it's too broad. |
| 208 FormFieldData field; | 225 FormFieldData field; |
| 209 field.form_control_type = "text"; | |
| 210 | 226 |
| 211 field.label = ASCIIToUTF16("Phone Number"); | 227 for (size_t i = 0; i < arraysize(kFieldTypes); ++i) { |
| 212 field.name = ASCIIToUTF16("CountryCode"); | 228 Clear(); |
| 213 field.max_length = 3; | |
| 214 list_.push_back(new AutofillField(field, ASCIIToUTF16("country"))); | |
| 215 | 229 |
| 216 field.label = ASCIIToUTF16("Phone Number"); | 230 field.form_control_type = kFieldTypes[i]; |
| 217 field.name = ASCIIToUTF16("PhoneNumber"); | 231 field.label = ASCIIToUTF16("Phone Number"); |
| 218 field.max_length = 10; | 232 field.name = ASCIIToUTF16("CountryCode"); |
| 219 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone"))); | 233 field.max_length = 3; |
| 234 list_.push_back(new AutofillField(field, ASCIIToUTF16("country"))); | |
| 220 | 235 |
| 221 AutofillScanner scanner(list_.get()); | 236 field.label = ASCIIToUTF16("Phone Number"); |
| 222 field_ = Parse(&scanner); | 237 field.name = ASCIIToUTF16("PhoneNumber"); |
| 223 ASSERT_NE(nullptr, field_.get()); | 238 field.max_length = 10; |
| 224 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 239 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone"))); |
| 225 ASSERT_TRUE( | 240 |
| 226 field_type_map_.find(ASCIIToUTF16("country")) != field_type_map_.end()); | 241 AutofillScanner scanner(list_.get()); |
| 227 EXPECT_EQ(PHONE_HOME_COUNTRY_CODE, field_type_map_[ASCIIToUTF16("country")]); | 242 field_ = Parse(&scanner); |
| 228 ASSERT_TRUE( | 243 ASSERT_NE(nullptr, field_.get()); |
| 229 field_type_map_.find(ASCIIToUTF16("phone")) != field_type_map_.end()); | 244 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
| 230 EXPECT_EQ(PHONE_HOME_CITY_AND_NUMBER, field_type_map_[ASCIIToUTF16("phone")]); | 245 CheckField("country", PHONE_HOME_COUNTRY_CODE); |
| 246 CheckField("phone", PHONE_HOME_CITY_AND_NUMBER); | |
| 247 } | |
| 231 } | 248 } |
| 232 | 249 |
| 233 } // namespace autofill | 250 } // namespace autofill |
| OLD | NEW |