| Index: components/autofill/core/browser/autofill_manager.cc
|
| diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc
|
| index 67e7636cd2384468e8361012f5640d57009e0f0b..90c3170282e932c8871ea416f508734fea564c53 100644
|
| --- a/components/autofill/core/browser/autofill_manager.cc
|
| +++ b/components/autofill/core/browser/autofill_manager.cc
|
| @@ -382,7 +382,11 @@ bool AutofillManager::OnFormSubmitted(const FormData& form,
|
| }
|
|
|
| void AutofillManager::OnFormsSeen(const std::vector<FormData>& forms,
|
| + size_t unowned_form_index,
|
| const TimeTicks& timestamp) {
|
| + if (unowned_form_index > forms.size())
|
| + return;
|
| +
|
| if (!IsValidFormDataVector(forms))
|
| return;
|
|
|
| @@ -402,7 +406,7 @@ void AutofillManager::OnFormsSeen(const std::vector<FormData>& forms,
|
| forms_loaded_timestamps_[forms[i]] = timestamp;
|
| }
|
|
|
| - ParseForms(forms);
|
| + ParseForms(forms, unowned_form_index);
|
| }
|
|
|
| void AutofillManager::OnTextFieldDidChange(const FormData& form,
|
| @@ -1207,14 +1211,17 @@ std::vector<Suggestion> AutofillManager::GetCreditCardSuggestions(
|
| return suggestions;
|
| }
|
|
|
| -void AutofillManager::ParseForms(const std::vector<FormData>& forms) {
|
| +void AutofillManager::ParseForms(const std::vector<FormData>& forms,
|
| + size_t unowned_form_index) {
|
| std::vector<FormStructure*> non_queryable_forms;
|
| - for (std::vector<FormData>::const_iterator iter = forms.begin();
|
| - iter != forms.end(); ++iter) {
|
| - scoped_ptr<FormStructure> form_structure(new FormStructure(*iter));
|
| + for (size_t i = 0; i < forms.size(); ++i) {
|
| + scoped_ptr<FormStructure> form_structure(new FormStructure(forms[i]));
|
| if (!form_structure->ShouldBeParsed())
|
| continue;
|
|
|
| + if (i == unowned_form_index)
|
| + form_structure->set_is_unowned();
|
| +
|
| form_structure->DetermineHeuristicTypes();
|
|
|
| if (form_structure->ShouldBeCrowdsourced())
|
|
|