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

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

Issue 365783002: Autofill: don't require POST method. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove method_ member Created 6 years, 5 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 | Annotate | Revision Log
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 310 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 if (!form.user_submitted) 321 if (!form.user_submitted)
322 return false; 322 return false;
323 323
324 // Ignore forms not present in our cache. These are typically forms with 324 // Ignore forms not present in our cache. These are typically forms with
325 // wonky JavaScript that also makes them not auto-fillable. 325 // wonky JavaScript that also makes them not auto-fillable.
326 FormStructure* cached_submitted_form; 326 FormStructure* cached_submitted_form;
327 if (!FindCachedForm(form, &cached_submitted_form)) 327 if (!FindCachedForm(form, &cached_submitted_form))
328 return false; 328 return false;
329 329
330 submitted_form->UpdateFromCache(*cached_submitted_form); 330 submitted_form->UpdateFromCache(*cached_submitted_form);
331 if (submitted_form->IsAutofillable(true)) 331 if (submitted_form->IsAutofillable())
332 ImportFormData(*submitted_form); 332 ImportFormData(*submitted_form);
333 333
334 // Only upload server statistics and UMA metrics if at least some local data 334 // Only upload server statistics and UMA metrics if at least some local data
335 // is available to use as a baseline. 335 // is available to use as a baseline.
336 const std::vector<AutofillProfile*>& profiles = personal_data_->GetProfiles(); 336 const std::vector<AutofillProfile*>& profiles = personal_data_->GetProfiles();
337 const std::vector<CreditCard*>& credit_cards = 337 const std::vector<CreditCard*>& credit_cards =
338 personal_data_->GetCreditCards(); 338 personal_data_->GetCreditCards();
339 if (!profiles.empty() || !credit_cards.empty()) { 339 if (!profiles.empty() || !credit_cards.empty()) {
340 // Copy the profile and credit card data, so that it can be accessed on a 340 // Copy the profile and credit card data, so that it can be accessed on a
341 // separate thread. 341 // separate thread.
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 form, 446 form,
447 field, 447 field,
448 bounding_box, 448 bounding_box,
449 display_warning); 449 display_warning);
450 FormStructure* form_structure = NULL; 450 FormStructure* form_structure = NULL;
451 AutofillField* autofill_field = NULL; 451 AutofillField* autofill_field = NULL;
452 if (RefreshDataModels() && 452 if (RefreshDataModels() &&
453 driver_->RendererIsAvailable() && 453 driver_->RendererIsAvailable() &&
454 GetCachedFormAndField(form, field, &form_structure, &autofill_field) && 454 GetCachedFormAndField(form, field, &form_structure, &autofill_field) &&
455 // Don't send suggestions for forms that aren't auto-fillable. 455 // Don't send suggestions for forms that aren't auto-fillable.
456 form_structure->IsAutofillable(false)) { 456 form_structure->IsAutofillable()) {
457 AutofillType type = autofill_field->Type(); 457 AutofillType type = autofill_field->Type();
458 bool is_filling_credit_card = (type.group() == CREDIT_CARD); 458 bool is_filling_credit_card = (type.group() == CREDIT_CARD);
459 if (is_filling_credit_card) { 459 if (is_filling_credit_card) {
460 GetCreditCardSuggestions( 460 GetCreditCardSuggestions(
461 field, type, &values, &labels, &icons, &unique_ids); 461 field, type, &values, &labels, &icons, &unique_ids);
462 } else { 462 } else {
463 GetProfileSuggestions( 463 GetProfileSuggestions(
464 form_structure, field, type, &values, &labels, &icons, &unique_ids); 464 form_structure, field, type, &values, &labels, &icons, &unique_ids);
465 } 465 }
466 466
467 DCHECK_EQ(values.size(), labels.size()); 467 DCHECK_EQ(values.size(), labels.size());
468 DCHECK_EQ(values.size(), icons.size()); 468 DCHECK_EQ(values.size(), icons.size());
469 DCHECK_EQ(values.size(), unique_ids.size()); 469 DCHECK_EQ(values.size(), unique_ids.size());
470 470
471 if (!values.empty()) { 471 if (!values.empty()) {
472 // Don't provide Autofill suggestions when Autofill is disabled, and don't 472 // Don't provide Autofill suggestions when Autofill is disabled, and don't
473 // provide credit card suggestions for non-HTTPS pages. However, provide a 473 // provide credit card suggestions for non-HTTPS pages. However, provide a
474 // warning to the user in these cases. 474 // warning to the user in these cases.
475 int warning = 0; 475 int warning = 0;
476 if (!form_structure->IsAutofillable(true)) 476 if (!form_structure->IsAutofillable())
477 warning = IDS_AUTOFILL_WARNING_FORM_DISABLED; 477 warning = IDS_AUTOFILL_WARNING_FORM_DISABLED;
478 else if (is_filling_credit_card && !FormIsHTTPS(*form_structure)) 478 else if (is_filling_credit_card && !FormIsHTTPS(*form_structure))
479 warning = IDS_AUTOFILL_WARNING_INSECURE_CONNECTION; 479 warning = IDS_AUTOFILL_WARNING_INSECURE_CONNECTION;
480 if (warning) { 480 if (warning) {
481 values.assign(1, l10n_util::GetStringUTF16(warning)); 481 values.assign(1, l10n_util::GetStringUTF16(warning));
482 labels.assign(1, base::string16()); 482 labels.assign(1, base::string16());
483 icons.assign(1, base::string16()); 483 icons.assign(1, base::string16());
484 unique_ids.assign(1, POPUP_ITEM_ID_WARNING_MESSAGE); 484 unique_ids.assign(1, POPUP_ITEM_ID_WARNING_MESSAGE);
485 } else { 485 } else {
486 bool section_is_autofilled = 486 bool section_is_autofilled =
(...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after
971 } 971 }
972 972
973 bool AutofillManager::GetCachedFormAndField(const FormData& form, 973 bool AutofillManager::GetCachedFormAndField(const FormData& form,
974 const FormFieldData& field, 974 const FormFieldData& field,
975 FormStructure** form_structure, 975 FormStructure** form_structure,
976 AutofillField** autofill_field) { 976 AutofillField** autofill_field) {
977 // Find the FormStructure that corresponds to |form|. 977 // Find the FormStructure that corresponds to |form|.
978 // If we do not have this form in our cache but it is parseable, we'll add it 978 // If we do not have this form in our cache but it is parseable, we'll add it
979 // in the call to |UpdateCachedForm()|. 979 // in the call to |UpdateCachedForm()|.
980 if (!FindCachedForm(form, form_structure) && 980 if (!FindCachedForm(form, form_structure) &&
981 !FormStructure(form).ShouldBeParsed(false)) { 981 !FormStructure(form).ShouldBeParsed()) {
982 return false; 982 return false;
983 } 983 }
984 984
985 // Update the cached form to reflect any dynamic changes to the form data, if 985 // Update the cached form to reflect any dynamic changes to the form data, if
986 // necessary. 986 // necessary.
987 if (!UpdateCachedForm(form, *form_structure, form_structure)) 987 if (!UpdateCachedForm(form, *form_structure, form_structure))
988 return false; 988 return false;
989 989
990 // No data to return if there are no auto-fillable fields. 990 // No data to return if there are no auto-fillable fields.
991 if (!(*form_structure)->autofill_count()) 991 if (!(*form_structure)->autofill_count())
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
1098 for (size_t i = 0; i < guid_pairs.size(); ++i) { 1098 for (size_t i = 0; i < guid_pairs.size(); ++i) {
1099 unique_ids->push_back(PackGUIDs(guid_pairs[i], GUIDPair(std::string(), 0))); 1099 unique_ids->push_back(PackGUIDs(guid_pairs[i], GUIDPair(std::string(), 0)));
1100 } 1100 }
1101 } 1101 }
1102 1102
1103 void AutofillManager::ParseForms(const std::vector<FormData>& forms) { 1103 void AutofillManager::ParseForms(const std::vector<FormData>& forms) {
1104 std::vector<FormStructure*> non_queryable_forms; 1104 std::vector<FormStructure*> non_queryable_forms;
1105 for (std::vector<FormData>::const_iterator iter = forms.begin(); 1105 for (std::vector<FormData>::const_iterator iter = forms.begin();
1106 iter != forms.end(); ++iter) { 1106 iter != forms.end(); ++iter) {
1107 scoped_ptr<FormStructure> form_structure(new FormStructure(*iter)); 1107 scoped_ptr<FormStructure> form_structure(new FormStructure(*iter));
1108 if (!form_structure->ShouldBeParsed(false)) 1108 if (!form_structure->ShouldBeParsed())
1109 continue; 1109 continue;
1110 1110
1111 form_structure->DetermineHeuristicTypes(*metric_logger_); 1111 form_structure->DetermineHeuristicTypes(*metric_logger_);
1112 1112
1113 // Set aside forms with method GET or author-specified types, so that they 1113 // Set aside forms with method GET or author-specified types, so that they
1114 // are not included in the query to the server. 1114 // are not included in the query to the server.
1115 if (form_structure->ShouldBeCrowdsourced()) 1115 if (form_structure->ShouldBeCrowdsourced())
1116 form_structures_.push_back(form_structure.release()); 1116 form_structures_.push_back(form_structure.release());
1117 else 1117 else
1118 non_queryable_forms.push_back(form_structure.release()); 1118 non_queryable_forms.push_back(form_structure.release());
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
1204 } 1204 }
1205 1205
1206 bool AutofillManager::ShouldUploadForm(const FormStructure& form) { 1206 bool AutofillManager::ShouldUploadForm(const FormStructure& form) {
1207 if (!IsAutofillEnabled()) 1207 if (!IsAutofillEnabled())
1208 return false; 1208 return false;
1209 1209
1210 if (driver_->IsOffTheRecord()) 1210 if (driver_->IsOffTheRecord())
1211 return false; 1211 return false;
1212 1212
1213 // Disregard forms that we wouldn't ever autofill in the first place. 1213 // Disregard forms that we wouldn't ever autofill in the first place.
1214 if (!form.ShouldBeParsed(true)) 1214 if (!form.ShouldBeParsed())
1215 return false; 1215 return false;
1216 1216
1217 return true; 1217 return true;
1218 } 1218 }
1219 1219
1220 } // namespace autofill 1220 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698