summaryrefslogtreecommitdiffstats
path: root/chrome/browser/autofill/autofill_xml_parser_unittest.cc
diff options
context:
space:
mode:
authorabodenha@chromium.org <abodenha@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-14 18:14:57 +0000
committerabodenha@chromium.org <abodenha@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-14 18:14:57 +0000
commit606d1080b6d03151a32da36586b4d22b394a8666 (patch)
treef7103aa06ebc97102feb9bab565593a58a2839c4 /chrome/browser/autofill/autofill_xml_parser_unittest.cc
parent3f460adc7484c33bd8d8513a219c5f0d0beac50f (diff)
downloadchromium_src-606d1080b6d03151a32da36586b4d22b394a8666.zip
chromium_src-606d1080b6d03151a32da36586b4d22b394a8666.tar.gz
chromium_src-606d1080b6d03151a32da36586b4d22b394a8666.tar.bz2
Revert 176189
Performance regression re-occurred. > Add support for radiobuttons and checkboxes. > > This is attempt no 2 to submit this CL. earlier attempt at > https://chromiumcodereview.appspot.com/11415221/ (which was rolled back due to perf regression) > > Changes from last attempt: > * In chrome/browser/autofill/form_structure.cc: Read switch value into local variable before being used multiple times. > * In chrome/renderer/autofill/form_autofill_util.cc: Extracted form_control_type strings in WebString constants for reuse. > > Due to inconsistency in the timing reported by the page cycler tests on my local setup and unavailablity of good environment to perform these tests, the only data I have now is runtimes were approximatly same during *one* set of runs with and without my change. I have observed ~4ms difference in timing without any code changes, while I am chasing ~2 ms. > > If perf regresssion is observed again on the perf machines, I will revert it back. > > > BUG=157636 > > Review URL: https://chromiumcodereview.appspot.com/11788025 TBR=ramankk@chromium.org Review URL: https://codereview.chromium.org/11884020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@176685 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/autofill/autofill_xml_parser_unittest.cc')
-rw-r--r--chrome/browser/autofill/autofill_xml_parser_unittest.cc110
1 files changed, 44 insertions, 66 deletions
diff --git a/chrome/browser/autofill/autofill_xml_parser_unittest.cc b/chrome/browser/autofill/autofill_xml_parser_unittest.cc
index 2363862..a0a1024 100644
--- a/chrome/browser/autofill/autofill_xml_parser_unittest.cc
+++ b/chrome/browser/autofill/autofill_xml_parser_unittest.cc
@@ -6,7 +6,6 @@
#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"
@@ -21,36 +20,31 @@ TEST(AutofillQueryXmlParserTest, BasicQuery) {
"<field autofilltype=\"1\" />"
"<field autofilltype=\"3\" />"
"<field autofilltype=\"2\" />"
- "<field autofilltype=\"61\" defaultvalue=\"default\"/>"
"</autofillqueryresponse>";
- // Create a vector of AutofillServerFieldInfos, to assign the parsed field
- // types to.
- std::vector<AutofillServerFieldInfo> field_infos;
+ // Create a vector of AutofillFieldTypes, to assign the parsed field types to.
+ std::vector<AutofillFieldType> field_types;
UploadRequired upload_required = USE_UPLOAD_RATES;
std::string experiment_id;
// Create a parser.
- AutofillQueryXmlParser parse_handler(&field_infos, &upload_required,
+ AutofillQueryXmlParser parse_handler(&field_types, &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(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);
+ 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]);
EXPECT_EQ(std::string(), experiment_id);
}
// Test parsing the upload required attribute.
TEST(AutofillQueryXmlParserTest, TestUploadRequired) {
- std::vector<AutofillServerFieldInfo> field_infos;
+ std::vector<AutofillFieldType> field_types;
UploadRequired upload_required = USE_UPLOAD_RATES;
std::string experiment_id;
@@ -59,50 +53,50 @@ TEST(AutofillQueryXmlParserTest, TestUploadRequired) {
"</autofillqueryresponse>";
scoped_ptr<AutofillQueryXmlParser> parse_handler(
- new AutofillQueryXmlParser(&field_infos, &upload_required,
+ new AutofillQueryXmlParser(&field_types, &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_infos.size());
- EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type);
+ ASSERT_EQ(1U, field_types.size());
+ EXPECT_EQ(NO_SERVER_DATA, field_types[0]);
EXPECT_EQ(std::string(), experiment_id);
- field_infos.clear();
+ field_types.clear();
xml = "<autofillqueryresponse uploadrequired=\"false\">"
"<field autofilltype=\"0\" />"
"</autofillqueryresponse>";
- parse_handler.reset(new AutofillQueryXmlParser(&field_infos, &upload_required,
+ parse_handler.reset(new AutofillQueryXmlParser(&field_types, &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_infos.size());
- EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type);
+ ASSERT_EQ(1U, field_types.size());
+ EXPECT_EQ(NO_SERVER_DATA, field_types[0]);
EXPECT_EQ(std::string(), experiment_id);
- field_infos.clear();
+ field_types.clear();
xml = "<autofillqueryresponse uploadrequired=\"bad_value\">"
"<field autofilltype=\"0\" />"
"</autofillqueryresponse>";
- parse_handler.reset(new AutofillQueryXmlParser(&field_infos, &upload_required,
+ parse_handler.reset(new AutofillQueryXmlParser(&field_types, &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());
- EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type);
+ ASSERT_EQ(1U, field_types.size());
+ EXPECT_EQ(NO_SERVER_DATA, field_types[0]);
EXPECT_EQ(std::string(), experiment_id);
}
// Test parsing the experiment id attribute
TEST(AutofillQueryXmlParserTest, ParseExperimentId) {
- std::vector<AutofillServerFieldInfo> field_infos;
+ std::vector<AutofillFieldType> field_types;
UploadRequired upload_required = USE_UPLOAD_RATES;
std::string experiment_id;
@@ -113,34 +107,34 @@ TEST(AutofillQueryXmlParserTest, ParseExperimentId) {
"</autofillqueryresponse>";
scoped_ptr<AutofillQueryXmlParser> parse_handler(
- new AutofillQueryXmlParser(&field_infos, &upload_required,
+ new AutofillQueryXmlParser(&field_types, &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_infos.size());
- EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type);
+ ASSERT_EQ(1U, field_types.size());
+ EXPECT_EQ(NO_SERVER_DATA, field_types[0]);
EXPECT_EQ(std::string(), experiment_id);
- field_infos.clear();
+ field_types.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_infos, &upload_required,
+ parse_handler.reset(new AutofillQueryXmlParser(&field_types, &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());
- EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type);
+ ASSERT_EQ(1U, field_types.size());
+ EXPECT_EQ(NO_SERVER_DATA, field_types[0]);
EXPECT_EQ(std::string("FancyNewAlgorithm"), experiment_id);
- field_infos.clear();
+ field_types.clear();
// Make sure that we can handle parsing both the upload required and the
// experiment id attribute together.
@@ -149,20 +143,20 @@ TEST(AutofillQueryXmlParserTest, ParseExperimentId) {
"<field autofilltype=\"0\" />"
"</autofillqueryresponse>";
- parse_handler.reset(new AutofillQueryXmlParser(&field_infos, &upload_required,
+ parse_handler.reset(new AutofillQueryXmlParser(&field_types, &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_infos.size());
- EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type);
+ ASSERT_EQ(1U, field_types.size());
+ EXPECT_EQ(NO_SERVER_DATA, field_types[0]);
EXPECT_EQ(std::string("ServerSmartyPants"), experiment_id);
}
// Test badly formed XML queries.
TEST(AutofillQueryXmlParserTest, ParseErrors) {
- std::vector<AutofillServerFieldInfo> field_infos;
+ std::vector<AutofillFieldType> field_types;
UploadRequired upload_required = USE_UPLOAD_RATES;
std::string experiment_id;
@@ -172,62 +166,46 @@ TEST(AutofillQueryXmlParserTest, ParseErrors) {
"</autofillqueryresponse>";
scoped_ptr<AutofillQueryXmlParser> parse_handler(
- new AutofillQueryXmlParser(&field_infos, &upload_required,
+ new AutofillQueryXmlParser(&field_types, &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_infos.size());
+ EXPECT_EQ(0U, field_types.size());
EXPECT_EQ(std::string(), experiment_id);
// Test an incorrect Autofill type.
xml = "<autofillqueryresponse>"
- "<field autofilltype=\"-1\"/>"
+ "<field autofilltype=\"307\"/>"
"</autofillqueryresponse>";
- parse_handler.reset(new AutofillQueryXmlParser(&field_infos, &upload_required,
+ parse_handler.reset(new AutofillQueryXmlParser(&field_types, &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());
+ ASSERT_EQ(1U, field_types.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 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(NO_SERVER_DATA, field_types[0]);
EXPECT_EQ(std::string(), experiment_id);
// Test an incorrect Autofill type.
- field_infos.clear();
+ field_types.clear();
xml = "<autofillqueryresponse>"
"<field autofilltype=\"No Type\"/>"
"</autofillqueryresponse>";
- // Parse fails but an entry is still added to field_infos.
- parse_handler.reset(new AutofillQueryXmlParser(&field_infos, &upload_required,
+ // Parse fails but an entry is still added to field_types.
+ parse_handler.reset(new AutofillQueryXmlParser(&field_types, &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_infos.size());
- EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type);
+ ASSERT_EQ(1U, field_types.size());
+ EXPECT_EQ(NO_SERVER_DATA, field_types[0]);
EXPECT_EQ(std::string(), experiment_id);
}