| Index: components/autofill/browser/autofill_xml_parser_unittest.cc
|
| diff --git a/components/autofill/browser/autofill_xml_parser_unittest.cc b/components/autofill/browser/autofill_xml_parser_unittest.cc
|
| deleted file mode 100644
|
| index 0679d296ce3508ebf56cd82a1b7c30d3d34c7349..0000000000000000000000000000000000000000
|
| --- a/components/autofill/browser/autofill_xml_parser_unittest.cc
|
| +++ /dev/null
|
| @@ -1,375 +0,0 @@
|
| -// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include <string>
|
| -#include <vector>
|
| -
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/strings/string_number_conversions.h"
|
| -#include "components/autofill/browser/autofill_xml_parser.h"
|
| -#include "components/autofill/browser/field_types.h"
|
| -#include "components/autofill/content/browser/autocheckout_page_meta_data.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -#include "third_party/libjingle/source/talk/xmllite/xmlparser.h"
|
| -
|
| -namespace autofill {
|
| -namespace {
|
| -
|
| -class AutofillQueryXmlParserTest : public testing::Test {
|
| - public:
|
| - AutofillQueryXmlParserTest(): upload_required_(USE_UPLOAD_RATES) {};
|
| - virtual ~AutofillQueryXmlParserTest() {};
|
| -
|
| - protected:
|
| - void ParseQueryXML(const std::string& xml, bool should_succeed) {
|
| - // Create a parser.
|
| - AutofillQueryXmlParser parse_handler(&field_infos_,
|
| - &upload_required_,
|
| - &experiment_id_,
|
| - &page_meta_data_);
|
| - buzz::XmlParser parser(&parse_handler);
|
| - parser.Parse(xml.c_str(), xml.length(), true);
|
| - EXPECT_EQ(should_succeed, parse_handler.succeeded());
|
| - }
|
| -
|
| - std::vector<AutofillServerFieldInfo> field_infos_;
|
| - UploadRequired upload_required_;
|
| - std::string experiment_id_;
|
| - autofill::AutocheckoutPageMetaData page_meta_data_;
|
| -};
|
| -
|
| -class AutofillUploadXmlParserTest : public testing::Test {
|
| - public:
|
| - AutofillUploadXmlParserTest(): positive_(0), negative_(0) {};
|
| - virtual ~AutofillUploadXmlParserTest() {};
|
| -
|
| - protected:
|
| - void ParseUploadXML(const std::string& xml, bool should_succeed) {
|
| - // Create a parser.
|
| - AutofillUploadXmlParser parse_handler(&positive_, &negative_);
|
| - buzz::XmlParser parser(&parse_handler);
|
| - parser.Parse(xml.c_str(), xml.length(), true);
|
| -
|
| - EXPECT_EQ(should_succeed, parse_handler.succeeded());
|
| - }
|
| -
|
| - double positive_;
|
| - double negative_;
|
| -};
|
| -
|
| -TEST_F(AutofillQueryXmlParserTest, BasicQuery) {
|
| - // An XML string representing a basic query response.
|
| - std::string xml = "<autofillqueryresponse>"
|
| - "<field autofilltype=\"0\" />"
|
| - "<field autofilltype=\"1\" />"
|
| - "<field autofilltype=\"3\" />"
|
| - "<field autofilltype=\"2\" />"
|
| - "<field autofilltype=\"61\" defaultvalue=\"default\"/>"
|
| - "</autofillqueryresponse>";
|
| - ParseQueryXML(xml, true);
|
| -
|
| - 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_TRUE(field_infos_[3].default_value.empty());
|
| - EXPECT_EQ(FIELD_WITH_DEFAULT_VALUE, field_infos_[4].field_type);
|
| - EXPECT_EQ("default", field_infos_[4].default_value);
|
| - EXPECT_TRUE(experiment_id_.empty());
|
| -}
|
| -
|
| -// Test parsing the upload required attribute.
|
| -TEST_F(AutofillQueryXmlParserTest, TestUploadRequired) {
|
| - std::string xml = "<autofillqueryresponse uploadrequired=\"true\">"
|
| - "<field autofilltype=\"0\" />"
|
| - "</autofillqueryresponse>";
|
| -
|
| - ParseQueryXML(xml, true);
|
| -
|
| - EXPECT_EQ(upload_required_, upload_required_);
|
| - ASSERT_EQ(1U, field_infos_.size());
|
| - EXPECT_EQ(NO_SERVER_DATA, field_infos_[0].field_type);
|
| - EXPECT_TRUE(experiment_id_.empty());
|
| -
|
| - field_infos_.clear();
|
| - xml = "<autofillqueryresponse uploadrequired=\"false\">"
|
| - "<field autofilltype=\"0\" />"
|
| - "</autofillqueryresponse>";
|
| -
|
| - ParseQueryXML(xml, true);
|
| -
|
| - EXPECT_EQ(UPLOAD_NOT_REQUIRED, upload_required_);
|
| - ASSERT_EQ(1U, field_infos_.size());
|
| - EXPECT_EQ(NO_SERVER_DATA, field_infos_[0].field_type);
|
| - EXPECT_TRUE(experiment_id_.empty());
|
| -
|
| - field_infos_.clear();
|
| - xml = "<autofillqueryresponse uploadrequired=\"bad_value\">"
|
| - "<field autofilltype=\"0\" />"
|
| - "</autofillqueryresponse>";
|
| -
|
| - ParseQueryXML(xml, true);
|
| -
|
| - EXPECT_EQ(USE_UPLOAD_RATES, upload_required_);
|
| - ASSERT_EQ(1U, field_infos_.size());
|
| - EXPECT_EQ(NO_SERVER_DATA, field_infos_[0].field_type);
|
| - EXPECT_TRUE(experiment_id_.empty());
|
| -}
|
| -
|
| -// Test parsing the experiment id attribute
|
| -TEST_F(AutofillQueryXmlParserTest, ParseExperimentId) {
|
| - // When the attribute is missing, we should get back the default value -- the
|
| - // empty string.
|
| - std::string xml = "<autofillqueryresponse>"
|
| - "<field autofilltype=\"0\" />"
|
| - "</autofillqueryresponse>";
|
| -
|
| - ParseQueryXML(xml, true);
|
| -
|
| - EXPECT_EQ(USE_UPLOAD_RATES, upload_required_);
|
| - ASSERT_EQ(1U, field_infos_.size());
|
| - EXPECT_EQ(NO_SERVER_DATA, field_infos_[0].field_type);
|
| - EXPECT_TRUE(experiment_id_.empty());
|
| -
|
| - field_infos_.clear();
|
| -
|
| - // When the attribute is present, make sure we parse it.
|
| - xml = "<autofillqueryresponse experimentid=\"FancyNewAlgorithm\">"
|
| - "<field autofilltype=\"0\" />"
|
| - "</autofillqueryresponse>";
|
| -
|
| - ParseQueryXML(xml, true);
|
| -
|
| - EXPECT_EQ(USE_UPLOAD_RATES, upload_required_);
|
| - ASSERT_EQ(1U, field_infos_.size());
|
| - EXPECT_EQ(NO_SERVER_DATA, field_infos_[0].field_type);
|
| - EXPECT_EQ(std::string("FancyNewAlgorithm"), experiment_id_);
|
| -
|
| - field_infos_.clear();
|
| -
|
| - // Make sure that we can handle parsing both the upload required and the
|
| - // experiment id attribute together.
|
| - xml = "<autofillqueryresponse uploadrequired=\"false\""
|
| - " experimentid=\"ServerSmartyPants\">"
|
| - "<field autofilltype=\"0\" />"
|
| - "</autofillqueryresponse>";
|
| -
|
| - ParseQueryXML(xml, true);
|
| -
|
| - EXPECT_EQ(UPLOAD_NOT_REQUIRED, upload_required_);
|
| - ASSERT_EQ(1U, field_infos_.size());
|
| - EXPECT_EQ(NO_SERVER_DATA, field_infos_[0].field_type);
|
| - EXPECT_EQ("ServerSmartyPants", experiment_id_);
|
| -}
|
| -
|
| -// Test XML response with autofill_flow information.
|
| -TEST_F(AutofillQueryXmlParserTest, ParseAutofillFlow) {
|
| - std::string xml = "<autofillqueryresponse>"
|
| - "<field autofilltype=\"55\"/>"
|
| - "<autofill_flow page_no=\"1\" total_pages=\"10\">"
|
| - "<page_advance_button id=\"foo\"/>"
|
| - "</autofill_flow>"
|
| - "</autofillqueryresponse>";
|
| -
|
| - ParseQueryXML(xml, true);
|
| -
|
| - EXPECT_EQ(1U, field_infos_.size());
|
| - EXPECT_EQ(1, page_meta_data_.current_page_number);
|
| - EXPECT_EQ(10, page_meta_data_.total_pages);
|
| - EXPECT_EQ("foo", page_meta_data_.proceed_element_descriptor.descriptor);
|
| - EXPECT_EQ(autofill::WebElementDescriptor::ID,
|
| - page_meta_data_.proceed_element_descriptor.retrieval_method);
|
| -
|
| - // Clear |field_infos_| for the next test;
|
| - field_infos_.clear();
|
| -
|
| - // Test css_selector as page_advance_button.
|
| - xml = "<autofillqueryresponse>"
|
| - "<field autofilltype=\"55\"/>"
|
| - "<autofill_flow page_no=\"1\" total_pages=\"10\">"
|
| - "<page_advance_button css_selector=\"[name="foo"]\"/>"
|
| - "</autofill_flow>"
|
| - "</autofillqueryresponse>";
|
| -
|
| - ParseQueryXML(xml, true);
|
| -
|
| - EXPECT_EQ(1U, field_infos_.size());
|
| - EXPECT_EQ(1, page_meta_data_.current_page_number);
|
| - EXPECT_EQ(10, page_meta_data_.total_pages);
|
| - EXPECT_EQ("[name=\"foo\"]",
|
| - page_meta_data_.proceed_element_descriptor.descriptor);
|
| - EXPECT_EQ(autofill::WebElementDescriptor::CSS_SELECTOR,
|
| - page_meta_data_.proceed_element_descriptor.retrieval_method);
|
| -
|
| - // Clear |field_infos_| for the next test;
|
| - field_infos_.clear();
|
| -
|
| - // Test first attribute is always the one set.
|
| - xml = "<autofillqueryresponse>"
|
| - "<field autofilltype=\"55\"/>"
|
| - "<autofill_flow page_no=\"1\" total_pages=\"10\">"
|
| - "<page_advance_button css_selector=\"[name="foo"]\""
|
| - " id=\"foo\"/>"
|
| - "</autofill_flow>"
|
| - "</autofillqueryresponse>";
|
| -
|
| - ParseQueryXML(xml, true);
|
| -
|
| - EXPECT_EQ(1U, field_infos_.size());
|
| - EXPECT_EQ(1, page_meta_data_.current_page_number);
|
| - EXPECT_EQ(10, page_meta_data_.total_pages);
|
| - EXPECT_EQ("[name=\"foo\"]",
|
| - page_meta_data_.proceed_element_descriptor.descriptor);
|
| - EXPECT_EQ(autofill::WebElementDescriptor::CSS_SELECTOR,
|
| - page_meta_data_.proceed_element_descriptor.retrieval_method);
|
| -
|
| - // Clear |field_infos_| for the next test;
|
| - field_infos_.clear();
|
| -
|
| - // Test parsing click_elements_before_formfill correctly.
|
| - xml = "<autofillqueryresponse>"
|
| - "<field autofilltype=\"55\"/>"
|
| - "<autofill_flow page_no=\"1\" total_pages=\"10\">"
|
| - "<click_elements_before_formfill>"
|
| - "<web_element id=\"btn1\" /></click_elements_before_formfill>"
|
| - "<click_elements_before_formfill>"
|
| - "<web_element css_selector=\"[name="btn2"]\"/>"
|
| - "</click_elements_before_formfill>"
|
| - "</autofill_flow>"
|
| - "</autofillqueryresponse>";
|
| -
|
| - ParseQueryXML(xml, true);
|
| -
|
| - EXPECT_EQ(1U, field_infos_.size());
|
| - EXPECT_EQ(1, page_meta_data_.current_page_number);
|
| - EXPECT_EQ(10, page_meta_data_.total_pages);
|
| - ASSERT_EQ(2U, page_meta_data_.click_elements_before_form_fill.size());
|
| - autofill::WebElementDescriptor& click_elment =
|
| - page_meta_data_.click_elements_before_form_fill[0];
|
| - EXPECT_EQ("btn1", click_elment.descriptor);
|
| - EXPECT_EQ(autofill::WebElementDescriptor::ID, click_elment.retrieval_method);
|
| - click_elment = page_meta_data_.click_elements_before_form_fill[1];
|
| - EXPECT_EQ("[name=\"btn2\"]", click_elment.descriptor);
|
| - EXPECT_EQ(autofill::WebElementDescriptor::CSS_SELECTOR,
|
| - click_elment.retrieval_method);
|
| -
|
| - // Clear |field_infos_| for the next test;
|
| - field_infos_.clear();
|
| -
|
| - // Test parsing click_elements_after_formfill correctly.
|
| - xml = "<autofillqueryresponse>"
|
| - "<field autofilltype=\"55\"/>"
|
| - "<autofill_flow page_no=\"1\" total_pages=\"10\">"
|
| - "<click_elements_after_formfill>"
|
| - "<web_element id=\"btn1\" /></click_elements_after_formfill>"
|
| - "</autofill_flow>"
|
| - "</autofillqueryresponse>";
|
| -
|
| - ParseQueryXML(xml, true);
|
| -
|
| - EXPECT_EQ(1U, field_infos_.size());
|
| - EXPECT_EQ(1, page_meta_data_.current_page_number);
|
| - EXPECT_EQ(10, page_meta_data_.total_pages);
|
| - ASSERT_EQ(1U, page_meta_data_.click_elements_after_form_fill.size());
|
| - click_elment = page_meta_data_.click_elements_after_form_fill[0];
|
| - EXPECT_EQ("btn1", click_elment.descriptor);
|
| - EXPECT_EQ(autofill::WebElementDescriptor::ID, click_elment.retrieval_method);
|
| -}
|
| -
|
| -// Test badly formed XML queries.
|
| -TEST_F(AutofillQueryXmlParserTest, ParseErrors) {
|
| - // Test no Autofill type.
|
| - std::string xml = "<autofillqueryresponse>"
|
| - "<field/>"
|
| - "</autofillqueryresponse>";
|
| -
|
| - ParseQueryXML(xml, false);
|
| -
|
| - EXPECT_EQ(USE_UPLOAD_RATES, upload_required_);
|
| - EXPECT_EQ(0U, field_infos_.size());
|
| - EXPECT_TRUE(experiment_id_.empty());
|
| -
|
| - // Test an incorrect Autofill type.
|
| - xml = "<autofillqueryresponse>"
|
| - "<field autofilltype=\"-1\"/>"
|
| - "</autofillqueryresponse>";
|
| -
|
| - ParseQueryXML(xml, true);
|
| -
|
| - 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_TRUE(experiment_id_.empty());
|
| -
|
| - // 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>";
|
| -
|
| - ParseQueryXML(xml, true);
|
| -
|
| - 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_TRUE(experiment_id_.empty());
|
| -
|
| - // Test an incorrect Autofill type.
|
| - field_infos_.clear();
|
| - xml = "<autofillqueryresponse>"
|
| - "<field autofilltype=\"No Type\"/>"
|
| - "</autofillqueryresponse>";
|
| -
|
| - // Parse fails but an entry is still added to field_infos_.
|
| - ParseQueryXML(xml, false);
|
| -
|
| - EXPECT_EQ(USE_UPLOAD_RATES, upload_required_);
|
| - ASSERT_EQ(1U, field_infos_.size());
|
| - EXPECT_EQ(NO_SERVER_DATA, field_infos_[0].field_type);
|
| - EXPECT_TRUE(experiment_id_.empty());
|
| -}
|
| -
|
| -// Test successfull upload response.
|
| -TEST_F(AutofillUploadXmlParserTest, TestSuccessfulResponse) {
|
| - ParseUploadXML("<autofilluploadresponse positiveuploadrate=\"0.5\" "
|
| - "negativeuploadrate=\"0.3\"/>",
|
| - true);
|
| -
|
| - EXPECT_DOUBLE_EQ(0.5, positive_);
|
| - EXPECT_DOUBLE_EQ(0.3, negative_);
|
| -}
|
| -
|
| -// Test failed upload response.
|
| -TEST_F(AutofillUploadXmlParserTest, TestFailedResponse) {
|
| - ParseUploadXML("<autofilluploadresponse positiveuploadrate=\"\" "
|
| - "negativeuploadrate=\"0.3\"/>",
|
| - false);
|
| -
|
| - EXPECT_DOUBLE_EQ(0, positive_);
|
| - EXPECT_DOUBLE_EQ(0.3, negative_); // Partially parsed.
|
| - negative_ = 0;
|
| -
|
| - ParseUploadXML("<autofilluploadresponse positiveuploadrate=\"0.5\" "
|
| - "negativeuploadrate=\"0.3\"",
|
| - false);
|
| -
|
| - EXPECT_DOUBLE_EQ(0, positive_);
|
| - EXPECT_DOUBLE_EQ(0, negative_);
|
| -
|
| - ParseUploadXML("bad data", false);
|
| -
|
| - EXPECT_DOUBLE_EQ(0, positive_);
|
| - EXPECT_DOUBLE_EQ(0, negative_);
|
| -
|
| - ParseUploadXML(std::string(), false);
|
| -
|
| - EXPECT_DOUBLE_EQ(0, positive_);
|
| - EXPECT_DOUBLE_EQ(0, negative_);
|
| -}
|
| -
|
| -} // namespace
|
| -} // namespace autofill
|
|
|