Chromium Code Reviews| Index: chrome/browser/autofill/autofill_xml_parser_unittest.cc |
| diff --git a/chrome/browser/autofill/autofill_xml_parser_unittest.cc b/chrome/browser/autofill/autofill_xml_parser_unittest.cc |
| index a0a1024a8081550574289176e89e3cdd298548ab..95f70073be077fce2ec22cc26c833c6d0740cc7d 100644 |
| --- a/chrome/browser/autofill/autofill_xml_parser_unittest.cc |
| +++ b/chrome/browser/autofill/autofill_xml_parser_unittest.cc |
| @@ -20,31 +20,36 @@ TEST(AutofillQueryXmlParserTest, BasicQuery) { |
| "<field autofilltype=\"1\" />" |
| "<field autofilltype=\"3\" />" |
| "<field autofilltype=\"2\" />" |
| + "<field autofilltype=\"61\" defaultvalue=\"default\"/>" |
| "</autofillqueryresponse>"; |
| - // Create a vector of AutofillFieldTypes, to assign the parsed field types to. |
| - std::vector<AutofillFieldType> field_types; |
| + // Create a vector of AutofillServerFieldInfos, to assign the parsed field |
| + // types to. |
| + std::vector<AutofillServerFieldInfo> field_infos; |
| UploadRequired upload_required = USE_UPLOAD_RATES; |
| std::string experiment_id; |
| // Create a parser. |
| - AutofillQueryXmlParser parse_handler(&field_types, &upload_required, |
| + AutofillQueryXmlParser parse_handler(&field_infos, &upload_required, |
| &experiment_id); |
| buzz::XmlParser parser(&parse_handler); |
| parser.Parse(xml.c_str(), xml.length(), true); |
| EXPECT_TRUE(parse_handler.succeeded()); |
| EXPECT_EQ(USE_UPLOAD_RATES, upload_required); |
| - ASSERT_EQ(4U, field_types.size()); |
| - EXPECT_EQ(NO_SERVER_DATA, field_types[0]); |
| - EXPECT_EQ(UNKNOWN_TYPE, field_types[1]); |
| - EXPECT_EQ(NAME_FIRST, field_types[2]); |
| - EXPECT_EQ(EMPTY_TYPE, field_types[3]); |
| + ASSERT_EQ(5U, field_infos.size()); |
| + EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type); |
| + EXPECT_EQ(UNKNOWN_TYPE, field_infos[1].field_type); |
| + EXPECT_EQ(NAME_FIRST, field_infos[2].field_type); |
| + EXPECT_EQ(EMPTY_TYPE, field_infos[3].field_type); |
| + EXPECT_EQ("", field_infos[3].default_value); |
| + EXPECT_EQ(FIELD_WITH_DEFAULT_VALUE, field_infos[4].field_type); |
| + EXPECT_EQ("default", field_infos[4].default_value); |
| EXPECT_EQ(std::string(), experiment_id); |
| } |
| // Test parsing the upload required attribute. |
| TEST(AutofillQueryXmlParserTest, TestUploadRequired) { |
| - std::vector<AutofillFieldType> field_types; |
| + std::vector<AutofillServerFieldInfo> field_infos; |
| UploadRequired upload_required = USE_UPLOAD_RATES; |
| std::string experiment_id; |
| @@ -53,50 +58,50 @@ TEST(AutofillQueryXmlParserTest, TestUploadRequired) { |
| "</autofillqueryresponse>"; |
| scoped_ptr<AutofillQueryXmlParser> parse_handler( |
| - new AutofillQueryXmlParser(&field_types, &upload_required, |
| + new AutofillQueryXmlParser(&field_infos, &upload_required, |
| &experiment_id)); |
| scoped_ptr<buzz::XmlParser> parser(new buzz::XmlParser(parse_handler.get())); |
| parser->Parse(xml.c_str(), xml.length(), true); |
| EXPECT_TRUE(parse_handler->succeeded()); |
| EXPECT_EQ(UPLOAD_REQUIRED, upload_required); |
| - ASSERT_EQ(1U, field_types.size()); |
| - EXPECT_EQ(NO_SERVER_DATA, field_types[0]); |
| + ASSERT_EQ(1U, field_infos.size()); |
| + EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type); |
| EXPECT_EQ(std::string(), experiment_id); |
| - field_types.clear(); |
| + field_infos.clear(); |
| xml = "<autofillqueryresponse uploadrequired=\"false\">" |
| "<field autofilltype=\"0\" />" |
| "</autofillqueryresponse>"; |
| - parse_handler.reset(new AutofillQueryXmlParser(&field_types, &upload_required, |
| + parse_handler.reset(new AutofillQueryXmlParser(&field_infos, &upload_required, |
| &experiment_id)); |
| parser.reset(new buzz::XmlParser(parse_handler.get())); |
| parser->Parse(xml.c_str(), xml.length(), true); |
| EXPECT_TRUE(parse_handler->succeeded()); |
| EXPECT_EQ(UPLOAD_NOT_REQUIRED, upload_required); |
| - ASSERT_EQ(1U, field_types.size()); |
| - EXPECT_EQ(NO_SERVER_DATA, field_types[0]); |
| + ASSERT_EQ(1U, field_infos.size()); |
| + EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type); |
| EXPECT_EQ(std::string(), experiment_id); |
| - field_types.clear(); |
| + field_infos.clear(); |
| xml = "<autofillqueryresponse uploadrequired=\"bad_value\">" |
| "<field autofilltype=\"0\" />" |
| "</autofillqueryresponse>"; |
| - parse_handler.reset(new AutofillQueryXmlParser(&field_types, &upload_required, |
| + parse_handler.reset(new AutofillQueryXmlParser(&field_infos, &upload_required, |
| &experiment_id)); |
| parser.reset(new buzz::XmlParser(parse_handler.get())); |
| parser->Parse(xml.c_str(), xml.length(), true); |
| EXPECT_TRUE(parse_handler->succeeded()); |
| EXPECT_EQ(USE_UPLOAD_RATES, upload_required); |
| - ASSERT_EQ(1U, field_types.size()); |
| - EXPECT_EQ(NO_SERVER_DATA, field_types[0]); |
| + ASSERT_EQ(1U, field_infos.size()); |
| + EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type); |
| EXPECT_EQ(std::string(), experiment_id); |
| } |
| // Test parsing the experiment id attribute |
| TEST(AutofillQueryXmlParserTest, ParseExperimentId) { |
| - std::vector<AutofillFieldType> field_types; |
| + std::vector<AutofillServerFieldInfo> field_infos; |
| UploadRequired upload_required = USE_UPLOAD_RATES; |
| std::string experiment_id; |
| @@ -107,34 +112,34 @@ TEST(AutofillQueryXmlParserTest, ParseExperimentId) { |
| "</autofillqueryresponse>"; |
| scoped_ptr<AutofillQueryXmlParser> parse_handler( |
| - new AutofillQueryXmlParser(&field_types, &upload_required, |
| + new AutofillQueryXmlParser(&field_infos, &upload_required, |
| &experiment_id)); |
| scoped_ptr<buzz::XmlParser> parser(new buzz::XmlParser(parse_handler.get())); |
| parser->Parse(xml.c_str(), xml.length(), true); |
| EXPECT_TRUE(parse_handler->succeeded()); |
| EXPECT_EQ(USE_UPLOAD_RATES, upload_required); |
| - ASSERT_EQ(1U, field_types.size()); |
| - EXPECT_EQ(NO_SERVER_DATA, field_types[0]); |
| + ASSERT_EQ(1U, field_infos.size()); |
| + EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type); |
| EXPECT_EQ(std::string(), experiment_id); |
| - field_types.clear(); |
| + field_infos.clear(); |
| // When the attribute is present, make sure we parse it. |
| xml = "<autofillqueryresponse experimentid=\"FancyNewAlgorithm\">" |
| "<field autofilltype=\"0\" />" |
| "</autofillqueryresponse>"; |
| - parse_handler.reset(new AutofillQueryXmlParser(&field_types, &upload_required, |
| + parse_handler.reset(new AutofillQueryXmlParser(&field_infos, &upload_required, |
| &experiment_id)); |
| parser.reset(new buzz::XmlParser(parse_handler.get())); |
| parser->Parse(xml.c_str(), xml.length(), true); |
| EXPECT_TRUE(parse_handler->succeeded()); |
| EXPECT_EQ(USE_UPLOAD_RATES, upload_required); |
| - ASSERT_EQ(1U, field_types.size()); |
| - EXPECT_EQ(NO_SERVER_DATA, field_types[0]); |
| + ASSERT_EQ(1U, field_infos.size()); |
| + EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type); |
| EXPECT_EQ(std::string("FancyNewAlgorithm"), experiment_id); |
| - field_types.clear(); |
| + field_infos.clear(); |
| // Make sure that we can handle parsing both the upload required and the |
| // experiment id attribute together. |
| @@ -143,20 +148,20 @@ TEST(AutofillQueryXmlParserTest, ParseExperimentId) { |
| "<field autofilltype=\"0\" />" |
| "</autofillqueryresponse>"; |
| - parse_handler.reset(new AutofillQueryXmlParser(&field_types, &upload_required, |
| + parse_handler.reset(new AutofillQueryXmlParser(&field_infos, &upload_required, |
| &experiment_id)); |
| parser.reset(new buzz::XmlParser(parse_handler.get())); |
| parser->Parse(xml.c_str(), xml.length(), true); |
| EXPECT_TRUE(parse_handler->succeeded()); |
| EXPECT_EQ(UPLOAD_NOT_REQUIRED, upload_required); |
| - ASSERT_EQ(1U, field_types.size()); |
| - EXPECT_EQ(NO_SERVER_DATA, field_types[0]); |
| + ASSERT_EQ(1U, field_infos.size()); |
| + EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type); |
| EXPECT_EQ(std::string("ServerSmartyPants"), experiment_id); |
| } |
| // Test badly formed XML queries. |
| TEST(AutofillQueryXmlParserTest, ParseErrors) { |
| - std::vector<AutofillFieldType> field_types; |
| + std::vector<AutofillServerFieldInfo> field_infos; |
| UploadRequired upload_required = USE_UPLOAD_RATES; |
| std::string experiment_id; |
| @@ -166,46 +171,64 @@ TEST(AutofillQueryXmlParserTest, ParseErrors) { |
| "</autofillqueryresponse>"; |
| scoped_ptr<AutofillQueryXmlParser> parse_handler( |
| - new AutofillQueryXmlParser(&field_types, &upload_required, |
| + new AutofillQueryXmlParser(&field_infos, &upload_required, |
| &experiment_id)); |
| scoped_ptr<buzz::XmlParser> parser(new buzz::XmlParser(parse_handler.get())); |
| parser->Parse(xml.c_str(), xml.length(), true); |
| EXPECT_FALSE(parse_handler->succeeded()); |
| EXPECT_EQ(USE_UPLOAD_RATES, upload_required); |
| - EXPECT_EQ(0U, field_types.size()); |
| + EXPECT_EQ(0U, field_infos.size()); |
| EXPECT_EQ(std::string(), experiment_id); |
| // Test an incorrect Autofill type. |
| xml = "<autofillqueryresponse>" |
| - "<field autofilltype=\"307\"/>" |
| + "<field autofilltype=\"-1\"/>" |
| "</autofillqueryresponse>"; |
| - parse_handler.reset(new AutofillQueryXmlParser(&field_types, &upload_required, |
| + parse_handler.reset(new AutofillQueryXmlParser(&field_infos, &upload_required, |
| &experiment_id)); |
| parser.reset(new buzz::XmlParser(parse_handler.get())); |
| parser->Parse(xml.c_str(), xml.length(), true); |
| EXPECT_TRUE(parse_handler->succeeded()); |
| EXPECT_EQ(USE_UPLOAD_RATES, upload_required); |
| - ASSERT_EQ(1U, field_types.size()); |
| + ASSERT_EQ(1U, field_infos.size()); |
| // AutofillType was out of range and should be set to NO_SERVER_DATA. |
| - EXPECT_EQ(NO_SERVER_DATA, field_types[0]); |
| + EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type); |
| + EXPECT_EQ(std::string(), experiment_id); |
| + |
| + // Test upper bound for the field type, MAX_VALID_FIELD_TYPE. |
| + // Update the autofilltype to MAX_VALID_FIELD_TYPE when it changes. |
|
Ilya Sherman
2012/12/17 22:33:27
nit: Please instead use MAX_VALID_FIELD_TYPE in th
Raman Kakilate
2012/12/18 01:54:04
Done.
|
| + field_infos.clear(); |
| + xml = "<autofillqueryresponse>" |
| + "<field autofilltype=\"62\"/>" |
| + "</autofillqueryresponse>"; |
| + |
| + parse_handler.reset(new AutofillQueryXmlParser(&field_infos, &upload_required, |
| + &experiment_id)); |
| + parser.reset(new buzz::XmlParser(parse_handler.get())); |
| + parser->Parse(xml.c_str(), xml.length(), true); |
| + EXPECT_TRUE(parse_handler->succeeded()); |
| + EXPECT_EQ(USE_UPLOAD_RATES, upload_required); |
| + ASSERT_EQ(1U, field_infos.size()); |
| + // AutofillType was out of range and should be set to NO_SERVER_DATA. |
| + EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type); |
| EXPECT_EQ(std::string(), experiment_id); |
| // Test an incorrect Autofill type. |
| - field_types.clear(); |
| + field_infos.clear(); |
| xml = "<autofillqueryresponse>" |
| "<field autofilltype=\"No Type\"/>" |
| "</autofillqueryresponse>"; |
| - // Parse fails but an entry is still added to field_types. |
| - parse_handler.reset(new AutofillQueryXmlParser(&field_types, &upload_required, |
| + // Parse fails but an entry is still added to field_infos. |
| + parse_handler.reset(new AutofillQueryXmlParser(&field_infos, &upload_required, |
| &experiment_id)); |
| parser.reset(new buzz::XmlParser(parse_handler.get())); |
| parser->Parse(xml.c_str(), xml.length(), true); |
| EXPECT_FALSE(parse_handler->succeeded()); |
| EXPECT_EQ(USE_UPLOAD_RATES, upload_required); |
| - ASSERT_EQ(1U, field_types.size()); |
| - EXPECT_EQ(NO_SERVER_DATA, field_types[0]); |
| + ASSERT_EQ(1U, field_infos.size()); |
| + EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type); |
| EXPECT_EQ(std::string(), experiment_id); |
| } |