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

Unified Diff: components/autofill/browser/autofill_xml_parser.cc

Issue 17392006: In components/autofill, move browser/ to core/browser/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase to fix conflicts Created 7 years, 6 months 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: components/autofill/browser/autofill_xml_parser.cc
diff --git a/components/autofill/browser/autofill_xml_parser.cc b/components/autofill/browser/autofill_xml_parser.cc
deleted file mode 100644
index bf8674d585b1aa3e5ee881c25ef123d99dc4014e..0000000000000000000000000000000000000000
--- a/components/autofill/browser/autofill_xml_parser.cc
+++ /dev/null
@@ -1,223 +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 "components/autofill/browser/autofill_xml_parser.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "base/logging.h"
-#include "components/autofill/browser/autofill_server_field_info.h"
-#include "components/autofill/content/browser/autocheckout_page_meta_data.h"
-#include "third_party/libjingle/source/talk/xmllite/qname.h"
-
-namespace autofill {
-
-AutofillXmlParser::AutofillXmlParser()
- : succeeded_(true) {
-}
-
-AutofillXmlParser::~AutofillXmlParser() {}
-
-void AutofillXmlParser::CharacterData(
- buzz::XmlParseContext* context, const char* text, int len) {
-}
-
-void AutofillXmlParser::EndElement(buzz::XmlParseContext* context,
- const char* name) {
-}
-
-void AutofillXmlParser::Error(buzz::XmlParseContext* context,
- XML_Error error_code) {
- succeeded_ = false;
-}
-
-AutofillQueryXmlParser::AutofillQueryXmlParser(
- std::vector<AutofillServerFieldInfo>* field_infos,
- UploadRequired* upload_required,
- std::string* experiment_id,
- AutocheckoutPageMetaData* page_meta_data)
- : field_infos_(field_infos),
- upload_required_(upload_required),
- experiment_id_(experiment_id),
- page_meta_data_(page_meta_data),
- current_click_element_(NULL) {
- DCHECK(upload_required_);
- DCHECK(experiment_id_);
- DCHECK(page_meta_data_);
-}
-
-AutofillQueryXmlParser::~AutofillQueryXmlParser() {}
-
-void AutofillQueryXmlParser::StartElement(buzz::XmlParseContext* context,
- const char* name,
- const char** attrs) {
- buzz::QName qname = context->ResolveQName(name, false);
- const std::string& element = qname.LocalPart();
- if (element.compare("autofillqueryresponse") == 0) {
- // We check for the upload required attribute below, but if it's not
- // present, we use the default upload rates. Likewise, by default we assume
- // an empty experiment id.
- *upload_required_ = USE_UPLOAD_RATES;
- *experiment_id_ = std::string();
-
- // |attrs| is a NULL-terminated list of (attribute, value) pairs.
- while (*attrs) {
- buzz::QName attribute_qname = context->ResolveQName(*attrs, true);
- ++attrs;
- const std::string& attribute_name = attribute_qname.LocalPart();
- if (attribute_name.compare("uploadrequired") == 0) {
- if (strcmp(*attrs, "true") == 0)
- *upload_required_ = UPLOAD_REQUIRED;
- else if (strcmp(*attrs, "false") == 0)
- *upload_required_ = UPLOAD_NOT_REQUIRED;
- } else if (attribute_name.compare("experimentid") == 0) {
- *experiment_id_ = *attrs;
- }
- ++attrs;
- }
- } else if (element.compare("field") == 0) {
- if (!*attrs) {
- // Missing the "autofilltype" attribute, abort.
- context->RaiseError(XML_ERROR_ABORTED);
- return;
- }
-
- // Determine the field type from the attribute value. There should be one
- // attribute (autofilltype) with an integer value.
- AutofillServerFieldInfo field_info;
- field_info.field_type = UNKNOWN_TYPE;
-
- // |attrs| is a NULL-terminated list of (attribute, value) pairs.
- while (*attrs) {
- buzz::QName attribute_qname = context->ResolveQName(*attrs, true);
- ++attrs;
- const std::string& attribute_name = attribute_qname.LocalPart();
- if (attribute_name.compare("autofilltype") == 0) {
- int value = GetIntValue(context, *attrs);
- if (value >= 0 && value < MAX_VALID_FIELD_TYPE)
- field_info.field_type = static_cast<AutofillFieldType>(value);
- else
- field_info.field_type = NO_SERVER_DATA;
- } else if (field_info.field_type == FIELD_WITH_DEFAULT_VALUE &&
- attribute_name.compare("defaultvalue") == 0) {
- field_info.default_value = *attrs;
- }
- ++attrs;
- }
-
- // Record this field type, default value pair.
- field_infos_->push_back(field_info);
- } else if (element.compare("autofill_flow") == 0) {
- // |attrs| is a NULL-terminated list of (attribute, value) pairs.
- while (*attrs) {
- buzz::QName attribute_qname = context->ResolveQName(*attrs, true);
- ++attrs;
- const std::string& attribute_name = attribute_qname.LocalPart();
- if (attribute_name.compare("page_no") == 0)
- page_meta_data_->current_page_number = GetIntValue(context, *attrs);
- else if (attribute_name.compare("total_pages") == 0)
- page_meta_data_->total_pages = GetIntValue(context, *attrs);
- ++attrs;
- }
- } else if (element.compare("page_advance_button") == 0) {
- page_meta_data_->proceed_element_descriptor = WebElementDescriptor();
- ParseElementDescriptor(context,
- attrs,
- &page_meta_data_->proceed_element_descriptor);
- } else if (element.compare("click_elements_before_formfill") == 0) {
- page_meta_data_->click_elements_before_form_fill.push_back(
- WebElementDescriptor());
- current_click_element_ = &page_meta_data_->click_elements_before_form_fill.
- back();
- } else if (element.compare("click_elements_after_formfill") == 0) {
- page_meta_data_->click_elements_after_form_fill.push_back(
- WebElementDescriptor());
- current_click_element_ = &page_meta_data_->click_elements_after_form_fill.
- back();
- } else if (element.compare("web_element") == 0) {
- ParseElementDescriptor(context, attrs, current_click_element_);
- }
-}
-
-void AutofillQueryXmlParser::ParseElementDescriptor(
- buzz::XmlParseContext* context,
- const char* const* attrs,
- WebElementDescriptor* element_descriptor) {
- // If both id and css_selector are set, the first one to appear will take
- // precedence.
- // |attrs| is a NULL-terminated list of (attribute, value) pairs.
- while (*attrs) {
- buzz::QName attribute_qname = context->ResolveQName(*attrs, true);
- ++attrs;
- const std::string& attribute_name = attribute_qname.LocalPart();
- buzz::QName value_qname = context->ResolveQName(*attrs, true);
- ++attrs;
- const std::string& attribute_value = value_qname.LocalPart();
- if (attribute_name.compare("id") == 0 && !attribute_value.empty()) {
- element_descriptor->retrieval_method = autofill::WebElementDescriptor::ID;
- element_descriptor->descriptor = attribute_value;
- break;
- } else if (attribute_name.compare("css_selector") == 0 &&
- !attribute_value.empty()) {
- element_descriptor->retrieval_method =
- autofill::WebElementDescriptor::CSS_SELECTOR;
- element_descriptor->descriptor = attribute_value;
- break;
- }
- }
-}
-
-int AutofillQueryXmlParser::GetIntValue(buzz::XmlParseContext* context,
- const char* attribute) {
- char* attr_end = NULL;
- int value = strtol(attribute, &attr_end, 10);
- if (attr_end != NULL && attr_end == attribute) {
- context->RaiseError(XML_ERROR_SYNTAX);
- return 0;
- }
- return value;
-}
-
-AutofillUploadXmlParser::AutofillUploadXmlParser(double* positive_upload_rate,
- double* negative_upload_rate)
- : succeeded_(false),
- positive_upload_rate_(positive_upload_rate),
- negative_upload_rate_(negative_upload_rate) {
- DCHECK(positive_upload_rate_);
- DCHECK(negative_upload_rate_);
-}
-
-void AutofillUploadXmlParser::StartElement(buzz::XmlParseContext* context,
- const char* name,
- const char** attrs) {
- buzz::QName qname = context->ResolveQName(name, false);
- const std::string &element = qname.LocalPart();
- if (element.compare("autofilluploadresponse") == 0) {
- // Loop over all attributes to get the upload rates.
- while (*attrs) {
- buzz::QName attribute_qname = context->ResolveQName(attrs[0], true);
- const std::string &attribute_name = attribute_qname.LocalPart();
- if (attribute_name.compare("positiveuploadrate") == 0) {
- *positive_upload_rate_ = GetDoubleValue(context, attrs[1]);
- } else if (attribute_name.compare("negativeuploadrate") == 0) {
- *negative_upload_rate_ = GetDoubleValue(context, attrs[1]);
- }
- attrs += 2; // We peeked at attrs[0] and attrs[1], skip past both.
- }
- }
-}
-
-double AutofillUploadXmlParser::GetDoubleValue(buzz::XmlParseContext* context,
- const char* attribute) {
- char* attr_end = NULL;
- double value = strtod(attribute, &attr_end);
- if (attr_end != NULL && attr_end == attribute) {
- context->RaiseError(XML_ERROR_SYNTAX);
- return 0.0;
- }
- return value;
-}
-
-} // namespace autofill
« no previous file with comments | « components/autofill/browser/autofill_xml_parser.h ('k') | components/autofill/browser/autofill_xml_parser_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698