Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(339)

Side by Side Diff: components/autofill/core/browser/autofill_manager.cc

Issue 853523004: Autofill: Set requirements for number of recognized fields in an autofillable form (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/autofill/core/browser/autofill_manager.h" 5 #include "components/autofill/core/browser/autofill_manager.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <limits> 9 #include <limits>
10 #include <map> 10 #include <map>
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 base::Owned(submitted_form.release()), 375 base::Owned(submitted_form.release()),
376 forms_loaded_timestamps_[form], 376 forms_loaded_timestamps_[form],
377 initial_interaction_timestamp_, 377 initial_interaction_timestamp_,
378 timestamp)); 378 timestamp));
379 } 379 }
380 380
381 return true; 381 return true;
382 } 382 }
383 383
384 void AutofillManager::OnFormsSeen(const std::vector<FormData>& forms, 384 void AutofillManager::OnFormsSeen(const std::vector<FormData>& forms,
385 size_t unowned_form_index,
385 const TimeTicks& timestamp) { 386 const TimeTicks& timestamp) {
387 if (unowned_form_index > forms.size())
388 return;
389
386 if (!IsValidFormDataVector(forms)) 390 if (!IsValidFormDataVector(forms))
387 return; 391 return;
388 392
389 if (!driver_->RendererIsAvailable()) 393 if (!driver_->RendererIsAvailable())
390 return; 394 return;
391 395
392 bool enabled = IsAutofillEnabled(); 396 bool enabled = IsAutofillEnabled();
393 if (!has_logged_autofill_enabled_) { 397 if (!has_logged_autofill_enabled_) {
394 AutofillMetrics::LogIsAutofillEnabledAtPageLoad(enabled); 398 AutofillMetrics::LogIsAutofillEnabledAtPageLoad(enabled);
395 has_logged_autofill_enabled_ = true; 399 has_logged_autofill_enabled_ = true;
396 } 400 }
397 401
398 if (!enabled) 402 if (!enabled)
399 return; 403 return;
400 404
401 for (size_t i = 0; i < forms.size(); ++i) { 405 for (size_t i = 0; i < forms.size(); ++i) {
402 forms_loaded_timestamps_[forms[i]] = timestamp; 406 forms_loaded_timestamps_[forms[i]] = timestamp;
403 } 407 }
404 408
405 ParseForms(forms); 409 ParseForms(forms, unowned_form_index);
406 } 410 }
407 411
408 void AutofillManager::OnTextFieldDidChange(const FormData& form, 412 void AutofillManager::OnTextFieldDidChange(const FormData& form,
409 const FormFieldData& field, 413 const FormFieldData& field,
410 const TimeTicks& timestamp) { 414 const TimeTicks& timestamp) {
411 if (!IsValidFormData(form) || !IsValidFormFieldData(field)) 415 if (!IsValidFormData(form) || !IsValidFormFieldData(field))
412 return; 416 return;
413 417
414 FormStructure* form_structure = NULL; 418 FormStructure* form_structure = NULL;
415 AutofillField* autofill_field = NULL; 419 AutofillField* autofill_field = NULL;
(...skipping 784 matching lines...) Expand 10 before | Expand all | Expand 10 after
1200 const AutofillType& type) const { 1204 const AutofillType& type) const {
1201 std::vector<Suggestion> suggestions = 1205 std::vector<Suggestion> suggestions =
1202 personal_data_->GetCreditCardSuggestions(type, field.value); 1206 personal_data_->GetCreditCardSuggestions(type, field.value);
1203 for (size_t i = 0; i < suggestions.size(); i++) { 1207 for (size_t i = 0; i < suggestions.size(); i++) {
1204 suggestions[i].frontend_id = 1208 suggestions[i].frontend_id =
1205 MakeFrontendID(suggestions[i].backend_id, SuggestionBackendID()); 1209 MakeFrontendID(suggestions[i].backend_id, SuggestionBackendID());
1206 } 1210 }
1207 return suggestions; 1211 return suggestions;
1208 } 1212 }
1209 1213
1210 void AutofillManager::ParseForms(const std::vector<FormData>& forms) { 1214 void AutofillManager::ParseForms(const std::vector<FormData>& forms,
1215 size_t unowned_form_index) {
1211 std::vector<FormStructure*> non_queryable_forms; 1216 std::vector<FormStructure*> non_queryable_forms;
1212 for (std::vector<FormData>::const_iterator iter = forms.begin(); 1217 for (size_t i = 0; i < forms.size(); ++i) {
1213 iter != forms.end(); ++iter) { 1218 scoped_ptr<FormStructure> form_structure(new FormStructure(forms[i]));
1214 scoped_ptr<FormStructure> form_structure(new FormStructure(*iter));
1215 if (!form_structure->ShouldBeParsed()) 1219 if (!form_structure->ShouldBeParsed())
1216 continue; 1220 continue;
1217 1221
1222 if (i == unowned_form_index)
1223 form_structure->set_is_unowned();
1224
1218 form_structure->DetermineHeuristicTypes(); 1225 form_structure->DetermineHeuristicTypes();
1219 1226
1220 if (form_structure->ShouldBeCrowdsourced()) 1227 if (form_structure->ShouldBeCrowdsourced())
1221 form_structures_.push_back(form_structure.release()); 1228 form_structures_.push_back(form_structure.release());
1222 else 1229 else
1223 non_queryable_forms.push_back(form_structure.release()); 1230 non_queryable_forms.push_back(form_structure.release());
1224 } 1231 }
1225 1232
1226 if (!form_structures_.empty() && download_manager_) { 1233 if (!form_structures_.empty() && download_manager_) {
1227 // Query the server if at least one of the forms was parsed. 1234 // Query the server if at least one of the forms was parsed.
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
1321 return false; 1328 return false;
1322 1329
1323 // Disregard forms that we wouldn't ever autofill in the first place. 1330 // Disregard forms that we wouldn't ever autofill in the first place.
1324 if (!form.ShouldBeParsed()) 1331 if (!form.ShouldBeParsed())
1325 return false; 1332 return false;
1326 1333
1327 return true; 1334 return true;
1328 } 1335 }
1329 1336
1330 } // namespace autofill 1337 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698