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); |
} |