OLD | NEW |
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 441 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
452 driver_->RendererIsAvailable() && | 452 driver_->RendererIsAvailable() && |
453 GetCachedFormAndField(form, field, &form_structure, &autofill_field) && | 453 GetCachedFormAndField(form, field, &form_structure, &autofill_field) && |
454 // Don't send suggestions for forms that aren't auto-fillable. | 454 // Don't send suggestions for forms that aren't auto-fillable. |
455 form_structure->IsAutofillable()) { | 455 form_structure->IsAutofillable()) { |
456 AutofillType type = autofill_field->Type(); | 456 AutofillType type = autofill_field->Type(); |
457 bool is_filling_credit_card = (type.group() == CREDIT_CARD); | 457 bool is_filling_credit_card = (type.group() == CREDIT_CARD); |
458 if (is_filling_credit_card) { | 458 if (is_filling_credit_card) { |
459 GetCreditCardSuggestions( | 459 GetCreditCardSuggestions( |
460 field, type, &values, &labels, &icons, &unique_ids); | 460 field, type, &values, &labels, &icons, &unique_ids); |
461 } else { | 461 } else { |
462 GetProfileSuggestions( | 462 GetProfileSuggestions(*form_structure, |
463 *form_structure, field, type, &values, &labels, &icons, &unique_ids); | 463 field, |
| 464 *autofill_field, |
| 465 &values, |
| 466 &labels, |
| 467 &icons, |
| 468 &unique_ids); |
464 } | 469 } |
465 | 470 |
466 DCHECK_EQ(values.size(), labels.size()); | 471 DCHECK_EQ(values.size(), labels.size()); |
467 DCHECK_EQ(values.size(), icons.size()); | 472 DCHECK_EQ(values.size(), icons.size()); |
468 DCHECK_EQ(values.size(), unique_ids.size()); | 473 DCHECK_EQ(values.size(), unique_ids.size()); |
469 | 474 |
470 if (!values.empty()) { | 475 if (!values.empty()) { |
471 // Don't provide Autofill suggestions when Autofill is disabled, and don't | 476 // Don't provide Autofill suggestions when Autofill is disabled, and don't |
472 // provide credit card suggestions for non-HTTPS pages. However, provide a | 477 // provide credit card suggestions for non-HTTPS pages. However, provide a |
473 // warning to the user in these cases. | 478 // warning to the user in these cases. |
(...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1057 // Annotate the updated form with its predicted types. | 1062 // Annotate the updated form with its predicted types. |
1058 std::vector<FormStructure*> forms(1, *updated_form); | 1063 std::vector<FormStructure*> forms(1, *updated_form); |
1059 driver_->SendAutofillTypePredictionsToRenderer(forms); | 1064 driver_->SendAutofillTypePredictionsToRenderer(forms); |
1060 | 1065 |
1061 return true; | 1066 return true; |
1062 } | 1067 } |
1063 | 1068 |
1064 void AutofillManager::GetProfileSuggestions( | 1069 void AutofillManager::GetProfileSuggestions( |
1065 const FormStructure& form, | 1070 const FormStructure& form, |
1066 const FormFieldData& field, | 1071 const FormFieldData& field, |
1067 const AutofillType& type, | 1072 const AutofillField& autofill_field, |
1068 std::vector<base::string16>* values, | 1073 std::vector<base::string16>* values, |
1069 std::vector<base::string16>* labels, | 1074 std::vector<base::string16>* labels, |
1070 std::vector<base::string16>* icons, | 1075 std::vector<base::string16>* icons, |
1071 std::vector<int>* unique_ids) const { | 1076 std::vector<int>* unique_ids) const { |
1072 std::vector<ServerFieldType> field_types(form.field_count()); | 1077 std::vector<ServerFieldType> field_types(form.field_count()); |
1073 for (size_t i = 0; i < form.field_count(); ++i) { | 1078 for (size_t i = 0; i < form.field_count(); ++i) { |
1074 field_types.push_back(form.field(i)->Type().GetStorableType()); | 1079 field_types.push_back(form.field(i)->Type().GetStorableType()); |
1075 } | 1080 } |
1076 std::vector<GUIDPair> guid_pairs; | 1081 std::vector<GUIDPair> guid_pairs; |
1077 | 1082 |
1078 personal_data_->GetProfileSuggestions( | 1083 personal_data_->GetProfileSuggestions( |
1079 type, field.value, field.is_autofilled, field_types, | 1084 autofill_field.Type(), field.value, field.is_autofilled, field_types, |
1080 base::Callback<bool(const AutofillProfile&)>(), | 1085 base::Callback<bool(const AutofillProfile&)>(), |
1081 values, labels, icons, &guid_pairs); | 1086 values, labels, icons, &guid_pairs); |
1082 | 1087 |
| 1088 // Adjust phone number to display in prefix/suffix case. |
| 1089 if (autofill_field.Type().GetStorableType() == PHONE_HOME_NUMBER) { |
| 1090 for (size_t i = 0; i < values->size(); ++i) { |
| 1091 (*values)[i] = AutofillField::GetPhoneNumberValue( |
| 1092 autofill_field, (*values)[i], field); |
| 1093 } |
| 1094 } |
| 1095 |
1083 for (size_t i = 0; i < guid_pairs.size(); ++i) { | 1096 for (size_t i = 0; i < guid_pairs.size(); ++i) { |
1084 unique_ids->push_back(PackGUIDs(GUIDPair(std::string(), 0), | 1097 unique_ids->push_back(PackGUIDs(GUIDPair(std::string(), 0), |
1085 guid_pairs[i])); | 1098 guid_pairs[i])); |
1086 } | 1099 } |
1087 } | 1100 } |
1088 | 1101 |
1089 void AutofillManager::GetCreditCardSuggestions( | 1102 void AutofillManager::GetCreditCardSuggestions( |
1090 const FormFieldData& field, | 1103 const FormFieldData& field, |
1091 const AutofillType& type, | 1104 const AutofillType& type, |
1092 std::vector<base::string16>* values, | 1105 std::vector<base::string16>* values, |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1213 return false; | 1226 return false; |
1214 | 1227 |
1215 // Disregard forms that we wouldn't ever autofill in the first place. | 1228 // Disregard forms that we wouldn't ever autofill in the first place. |
1216 if (!form.ShouldBeParsed()) | 1229 if (!form.ShouldBeParsed()) |
1217 return false; | 1230 return false; |
1218 | 1231 |
1219 return true; | 1232 return true; |
1220 } | 1233 } |
1221 | 1234 |
1222 } // namespace autofill | 1235 } // namespace autofill |
OLD | NEW |