Index: components/autofill/core/browser/form_structure.cc |
diff --git a/components/autofill/core/browser/form_structure.cc b/components/autofill/core/browser/form_structure.cc |
index 0a534f8d8477889ab748f377660b70fe88ba13c5..5d18d8f9a967ccfdf2e14bf89737d55f29637b03 100644 |
--- a/components/autofill/core/browser/form_structure.cc |
+++ b/components/autofill/core/browser/form_structure.cc |
@@ -16,7 +16,6 @@ |
#include "base/strings/stringprintf.h" |
#include "base/strings/utf_string_conversions.h" |
#include "base/time/time.h" |
-#include "components/autofill/content/browser/autocheckout_page_meta_data.h" |
#include "components/autofill/core/browser/autofill_metrics.h" |
#include "components/autofill/core/browser/autofill_type.h" |
#include "components/autofill/core/browser/autofill_xml_parser.h" |
@@ -48,7 +47,6 @@ const char kAttributeName[] = "name"; |
const char kAttributeSignature[] = "signature"; |
const char kAttributeUrlprefixSignature[] = "urlprefixsignature"; |
const char kAcceptedFeaturesExperiment[] = "e"; // e=experiments |
-const char kAcceptedFeaturesAutocheckoutExperiment[] = "a,e"; // a=autocheckout |
const char kClientVersion[] = "6.1.1715.1442/en (GGLL)"; |
const char kXMLDeclaration[] = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; |
const char kXMLElementAutofillQuery[] = "autofillquery"; |
@@ -324,8 +322,7 @@ std::string StripDigitsIfRequired(const base::string16& input) { |
} // namespace |
-FormStructure::FormStructure(const FormData& form, |
- const std::string& autocheckout_url_prefix) |
+FormStructure::FormStructure(const FormData& form) |
: form_name_(form.name), |
source_url_(form.origin), |
target_url_(form.action), |
@@ -333,9 +330,7 @@ FormStructure::FormStructure(const FormData& form, |
active_field_count_(0), |
upload_required_(USE_UPLOAD_RATES), |
server_experiment_id_("no server response"), |
- has_author_specified_types_(false), |
- autocheckout_url_prefix_(autocheckout_url_prefix), |
- filled_by_autocheckout_(false) { |
+ has_author_specified_types_(false) { |
// Copy the form fields. |
std::map<base::string16, size_t> unique_names; |
for (std::vector<FormFieldData>::const_iterator field = |
@@ -495,16 +490,6 @@ bool FormStructure::EncodeQueryRequest( |
autofill_request_xml.SetAttr(buzz::QName(kAttributeClientVersion), |
kClientVersion); |
- // autocheckout_url_prefix tells the Autofill server where the forms in the |
- // request came from, and the the Autofill server checks internal status and |
- // decide to enable Autocheckout or not and may return Autocheckout related |
- // data in the response accordingly. |
- // There is no page/frame level object associated with FormStructure that |
- // we could extract URL prefix from. But, all the forms should come from the |
- // same frame, so they should have the same Autocheckout URL prefix. Thus we |
- // use URL prefix from the first form with Autocheckout enabled. |
- std::string autocheckout_url_prefix; |
- |
// Some badly formatted web sites repeat forms - detect that and encode only |
// one form as returned data would be the same for all the repeated forms. |
std::set<std::string> processed_forms; |
@@ -524,15 +509,6 @@ bool FormStructure::EncodeQueryRequest( |
encompassing_xml_element.get())) |
continue; // Malformed form, skip it. |
- if ((*it)->IsAutocheckoutEnabled()) { |
- if (autocheckout_url_prefix.empty()) { |
- autocheckout_url_prefix = (*it)->autocheckout_url_prefix_; |
- } else { |
- // Making sure all the forms in the request has the same url_prefix. |
- DCHECK_EQ(autocheckout_url_prefix, (*it)->autocheckout_url_prefix_); |
- } |
- } |
- |
autofill_request_xml.AddElement(encompassing_xml_element.release()); |
encoded_signatures->push_back(signature); |
} |
@@ -540,15 +516,8 @@ bool FormStructure::EncodeQueryRequest( |
if (!encoded_signatures->size()) |
return false; |
- if (autocheckout_url_prefix.empty()) { |
- autofill_request_xml.SetAttr(buzz::QName(kAttributeAcceptedFeatures), |
- kAcceptedFeaturesExperiment); |
- } else { |
- autofill_request_xml.SetAttr(buzz::QName(kAttributeAcceptedFeatures), |
- kAcceptedFeaturesAutocheckoutExperiment); |
- autofill_request_xml.SetAttr(buzz::QName(kAttributeUrlprefixSignature), |
- Hash64Bit(autocheckout_url_prefix)); |
- } |
+ autofill_request_xml.SetAttr(buzz::QName(kAttributeAcceptedFeatures), |
+ kAcceptedFeaturesExperiment); |
// Obtain the XML structure as a string. |
*encoded_xml = kXMLDeclaration; |
@@ -561,7 +530,6 @@ bool FormStructure::EncodeQueryRequest( |
void FormStructure::ParseQueryResponse( |
const std::string& response_xml, |
const std::vector<FormStructure*>& forms, |
- autofill::AutocheckoutPageMetaData* page_meta_data, |
const AutofillMetrics& metric_logger) { |
metric_logger.LogServerQueryMetric(AutofillMetrics::QUERY_RESPONSE_RECEIVED); |
@@ -571,8 +539,7 @@ void FormStructure::ParseQueryResponse( |
std::string experiment_id; |
AutofillQueryXmlParser parse_handler(&field_infos, |
&upload_required, |
- &experiment_id, |
- page_meta_data); |
+ &experiment_id); |
buzz::XmlParser parser(&parse_handler); |
parser.Parse(response_xml.c_str(), response_xml.length(), true); |
if (!parse_handler.succeeded()) |
@@ -692,21 +659,12 @@ std::string FormStructure::FormSignature() const { |
return Hash64Bit(form_string); |
} |
-bool FormStructure::IsAutocheckoutEnabled() const { |
- return !autocheckout_url_prefix_.empty(); |
-} |
- |
bool FormStructure::ShouldSkipField(const FormFieldData& field) const { |
- return (field.is_checkable || field.form_control_type == "password") && |
- !IsAutocheckoutEnabled(); |
-} |
- |
-size_t FormStructure::RequiredFillableFields() const { |
- return IsAutocheckoutEnabled() ? 0 : kRequiredAutofillFields; |
+ return (field.is_checkable || field.form_control_type == "password"); |
} |
bool FormStructure::IsAutofillable(bool require_method_post) const { |
- if (autofill_count() < RequiredFillableFields()) |
+ if (autofill_count() < kRequiredAutofillFields) |
return false; |
return ShouldBeParsed(require_method_post); |
@@ -723,7 +681,7 @@ void FormStructure::UpdateAutofillCount() { |
} |
bool FormStructure::ShouldBeParsed(bool require_method_post) const { |
- if (active_field_count() < RequiredFillableFields()) |
+ if (active_field_count() < kRequiredAutofillFields) |
return false; |
// Rule out http(s)://*/search?... |
@@ -732,25 +690,19 @@ bool FormStructure::ShouldBeParsed(bool require_method_post) const { |
if (target_url_.path() == "/search") |
return false; |
- if (!IsAutocheckoutEnabled()) { |
- // Make sure there is at least one text field when Autocheckout is |
- // not enabled. |
- bool has_text_field = false; |
- for (std::vector<AutofillField*>::const_iterator it = begin(); |
- it != end() && !has_text_field; ++it) { |
- has_text_field |= (*it)->form_control_type != "select-one"; |
- } |
- if (!has_text_field) |
- return false; |
+ bool has_text_field = false; |
+ for (std::vector<AutofillField*>::const_iterator it = begin(); |
+ it != end() && !has_text_field; ++it) { |
+ has_text_field |= (*it)->form_control_type != "select-one"; |
} |
+ if (!has_text_field) |
+ return false; |
return !require_method_post || (method_ == POST); |
} |
bool FormStructure::ShouldBeCrowdsourced() const { |
- // Allow all forms in Autocheckout flow to be crowdsourced. |
- return (!has_author_specified_types_ && ShouldBeParsed(true)) || |
- IsAutocheckoutEnabled(); |
+ return !has_author_specified_types_ && ShouldBeParsed(true); |
} |
void FormStructure::UpdateFromCache(const FormStructure& cached_form) { |
@@ -782,7 +734,6 @@ void FormStructure::UpdateFromCache(const FormStructure& cached_form) { |
UpdateAutofillCount(); |
- filled_by_autocheckout_ = cached_form.filled_by_autocheckout(); |
server_experiment_id_ = cached_form.server_experiment_id(); |
// The form signature should match between query and upload requests to the |
@@ -929,7 +880,7 @@ void FormStructure::LogQualityMetrics( |
} |
} |
- if (num_detected_field_types < RequiredFillableFields()) { |
+ if (num_detected_field_types < kRequiredAutofillFields) { |
metric_logger.LogUserHappinessMetric( |
AutofillMetrics::SUBMITTED_NON_FILLABLE_FORM); |
} else { |