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()) |