Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4078)

Unified Diff: chrome/browser/autofill/autofill_xml_parser_unittest.cc

Issue 11415221: Add support for autofilling radio buttons and checkboxes. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: fix the nit. Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..2363862ce015bd1c39f129928839c3a5d245e296 100644
--- a/chrome/browser/autofill/autofill_xml_parser_unittest.cc
+++ b/chrome/browser/autofill/autofill_xml_parser_unittest.cc
@@ -6,6 +6,7 @@
#include <vector>
#include "base/memory/scoped_ptr.h"
+#include "base/string_number_conversions.h"
#include "chrome/browser/autofill/autofill_xml_parser.h"
#include "chrome/browser/autofill/field_types.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -20,31 +21,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 +59,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 +113,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 +149,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 +172,62 @@ 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.
+ field_infos.clear();
+ xml = "<autofillqueryresponse><field autofilltype=\"" +
+ base::IntToString(MAX_VALID_FIELD_TYPE) + "\"/></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);
}

Powered by Google App Engine
This is Rietveld 408576698