Index: components/autofill/browser/form_structure.cc |
diff --git a/components/autofill/browser/form_structure.cc b/components/autofill/browser/form_structure.cc |
index ba80803642d08d021b5f070310fe19e27d00ab4f..90d3267c39ac8e01462ebf37a86b2eac5d5630a3 100644 |
--- a/components/autofill/browser/form_structure.cc |
+++ b/components/autofill/browser/form_structure.cc |
@@ -233,7 +233,7 @@ FormStructure::FormStructure(const FormData& form, |
source_url_(form.origin), |
target_url_(form.action), |
autofill_count_(0), |
- checkable_field_count_(0), |
+ active_field_count_(0), |
upload_required_(USE_UPLOAD_RATES), |
server_experiment_id_("no server response"), |
has_author_specified_types_(false), |
@@ -247,11 +247,14 @@ FormStructure::FormStructure(const FormData& form, |
// Skipping checkable elements when Autocheckout is not enabled, else |
// these fields will interfere with existing field signatures with Autofill |
// servers. |
Ilya Sherman
2013/03/18 22:33:46
nit: Please update this comment.
Raman Kakilate
2013/03/18 23:01:54
Done.
|
- if (!field->is_checkable || IsAutocheckoutEnabled()) { |
+ if ((!field->is_checkable && field->form_control_type != "password") || |
+ IsAutocheckoutEnabled()) { |
// Add all supported form fields (including with empty names) to the |
// signature. This is a requirement for Autofill servers. |
form_signature_field_names_.append("&"); |
form_signature_field_names_.append(UTF16ToUTF8(field->name)); |
+ |
+ ++active_field_count_; |
} |
// Generate a unique name for this field by appending a counter to the name. |
@@ -264,9 +267,6 @@ FormStructure::FormStructure(const FormData& form, |
string16 unique_name = field->name + ASCIIToUTF16("_") + |
base::IntToString16(unique_names[field->name]); |
fields_.push_back(new AutofillField(*field, unique_name)); |
- |
- if (field->is_checkable) |
- ++checkable_field_count_; |
} |
std::string method = UTF16ToUTF8(form.method); |
@@ -612,7 +612,7 @@ bool FormStructure::ShouldBeParsed(bool require_method_post) const { |
// Ignore counting checkable elements towards minimum number of elements |
// required to parse. This avoids trying to crowdsource forms with few text |
// or select elements. |
- if ((field_count() - checkable_field_count()) < RequiredFillableFields()) |
+ if (active_field_count() < RequiredFillableFields()) |
return false; |
// Rule out http(s)://*/search?... |
@@ -877,8 +877,8 @@ size_t FormStructure::field_count() const { |
return fields_.size(); |
} |
-size_t FormStructure::checkable_field_count() const { |
- return checkable_field_count_; |
+size_t FormStructure::active_field_count() const { |
+ return active_field_count_; |
} |
std::string FormStructure::server_experiment_id() const { |
@@ -972,7 +972,8 @@ bool FormStructure::EncodeFormRequest( |
} else { |
// Skip putting checkable fields in the request if Autocheckout is not |
// enabled. |
Ilya Sherman
2013/03/18 22:33:46
nit: Please update this comment.
Raman Kakilate
2013/03/18 23:01:54
Done.
|
- if (field->is_checkable && !IsAutocheckoutEnabled()) |
+ if ((field->is_checkable || field->form_control_type == "password") && |
+ !IsAutocheckoutEnabled()) |
continue; |
buzz::XmlElement *field_element = new buzz::XmlElement( |