Chromium Code Reviews| 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 b9123d0674c4f40feaa014629ccaeed59e2d437e..b1dc2dce7bb58255d632bb140cfec8c806261b2b 100644 |
| --- a/components/autofill/core/browser/autofill_manager.cc |
| +++ b/components/autofill/core/browser/autofill_manager.cc |
| @@ -386,7 +386,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()) |
|
Evan Stade
2015/01/22 23:43:45
when does this happen?
Lei Zhang
2015/01/22 23:58:13
It shouldn't, but we can't trust the IPC from the
Evan Stade
2015/01/23 02:21:46
at least notreached() then? Can you get an IPC own
Lei Zhang
2015/01/23 06:59:47
ValidFormDataVector() below doesn't have a NOTREAC
|
| + return; |
| + |
| if (!IsValidFormDataVector(forms)) |
| return; |
| @@ -406,7 +410,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, |
| @@ -1211,14 +1215,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()) |