Behaving nice with AutoFill servers: Adjusting upload rate, processing 500, 502 and 503 responses, etc.
TEST=Unit-tested + by setting up the response from AutoFill server.
BUG=39921
Review URL: http://codereview.chromium.org/1535011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@43531 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/autofill/autofill_xml_parser_unittest.cc b/chrome/browser/autofill/autofill_xml_parser_unittest.cc
index 7e1e55c3..c06df83 100644
--- a/chrome/browser/autofill/autofill_xml_parser_unittest.cc
+++ b/chrome/browser/autofill/autofill_xml_parser_unittest.cc
@@ -135,4 +135,59 @@
EXPECT_EQ(NO_SERVER_DATA, field_types[0]);
}
+// Test successfull upload response.
+TEST(AutoFillUploadXmlParser, TestSuccessfulResponse) {
+ std::string xml = "<autofilluploadresponse positiveuploadrate=\"0.5\" "
+ "negativeuploadrate=\"0.3\"/>";
+ double positive = 0;
+ double negative = 0;
+ AutoFillUploadXmlParser parse_handler(&positive, &negative);
+ buzz::XmlParser parser(&parse_handler);
+ parser.Parse(xml.c_str(), xml.length(), true);
+ EXPECT_TRUE(parse_handler.succeeded());
+ EXPECT_DOUBLE_EQ(0.5, positive);
+ EXPECT_DOUBLE_EQ(0.3, negative);
+}
+
+// Test failed upload response.
+TEST(AutoFillUploadXmlParser, TestFailedResponse) {
+ std::string xml = "<autofilluploadresponse positiveuploadrate=\"\" "
+ "negativeuploadrate=\"0.3\"/>";
+ double positive = 0;
+ double negative = 0;
+ scoped_ptr<AutoFillUploadXmlParser> parse_handler(
+ new AutoFillUploadXmlParser(&positive, &negative));
+ 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_DOUBLE_EQ(0, positive);
+ EXPECT_DOUBLE_EQ(0.3, negative); // Partially parsed.
+ negative = 0;
+
+ xml = "<autofilluploadresponse positiveuploadrate=\"0.5\" "
+ "negativeuploadrate=\"0.3\"";
+ parse_handler.reset(new AutoFillUploadXmlParser(&positive, &negative));
+ parser.reset(new buzz::XmlParser(parse_handler.get()));
+ parser->Parse(xml.c_str(), xml.length(), true);
+ EXPECT_TRUE(!parse_handler->succeeded());
+ EXPECT_DOUBLE_EQ(0, positive);
+ EXPECT_DOUBLE_EQ(0, negative);
+
+ xml = "bad data";
+ parse_handler.reset(new AutoFillUploadXmlParser(&positive, &negative));
+ parser.reset(new buzz::XmlParser(parse_handler.get()));
+ parser->Parse(xml.c_str(), xml.length(), true);
+ EXPECT_TRUE(!parse_handler->succeeded());
+ EXPECT_DOUBLE_EQ(0, positive);
+ EXPECT_DOUBLE_EQ(0, negative);
+
+ xml = "";
+ parse_handler.reset(new AutoFillUploadXmlParser(&positive, &negative));
+ parser.reset(new buzz::XmlParser(parse_handler.get()));
+ parser->Parse(xml.c_str(), xml.length(), true);
+ EXPECT_TRUE(!parse_handler->succeeded());
+ EXPECT_DOUBLE_EQ(0, positive);
+ EXPECT_DOUBLE_EQ(0, negative);
+}
+
} // namespace