Chromium Code Reviews| Index: chrome/browser/autofill/autofill_manager.cc | 
| diff --git a/chrome/browser/autofill/autofill_manager.cc b/chrome/browser/autofill/autofill_manager.cc | 
| index efb9b338a896f29a349f6b4aba4413e039fca77a..8559b92d76a8fb290064252b915807e44d097eaa 100644 | 
| --- a/chrome/browser/autofill/autofill_manager.cc | 
| +++ b/chrome/browser/autofill/autofill_manager.cc | 
| @@ -63,6 +63,7 @@ | 
| #include "ui/base/l10n/l10n_util.h" | 
| #include "ui/gfx/rect.h" | 
| +typedef PersonalDataManager::GUIDPair GUIDPair; | 
| using base::TimeTicks; | 
| using content::BrowserThread; | 
| using content::RenderViewHost; | 
| @@ -1129,83 +1130,19 @@ void AutofillManager::GetProfileSuggestions( | 
| std::vector<string16>* labels, | 
| std::vector<string16>* icons, | 
| std::vector<int>* unique_ids) const { | 
| - const std::vector<AutofillProfile*>& profiles = personal_data_->GetProfiles(); | 
| - const std::string app_locale = AutofillCountry::ApplicationLocale(); | 
| - if (!field.is_autofilled) { | 
| - std::vector<AutofillProfile*> matched_profiles; | 
| - for (std::vector<AutofillProfile*>::const_iterator iter = profiles.begin(); | 
| - iter != profiles.end(); ++iter) { | 
| - AutofillProfile* profile = *iter; | 
| - | 
| - // The value of the stored data for this field type in the |profile|. | 
| - std::vector<string16> multi_values; | 
| - profile->GetMultiInfo(type, app_locale, &multi_values); | 
| - | 
| - for (size_t i = 0; i < multi_values.size(); ++i) { | 
| - if (!multi_values[i].empty() && | 
| - StartsWith(multi_values[i], field.value, false)) { | 
| - matched_profiles.push_back(profile); | 
| - values->push_back(multi_values[i]); | 
| - unique_ids->push_back(PackGUIDs(GUIDPair(std::string(), 0), | 
| - GUIDPair(profile->guid(), i))); | 
| - } | 
| - } | 
| - } | 
| - | 
| - std::vector<AutofillFieldType> form_fields; | 
| - form_fields.reserve(form->field_count()); | 
| - for (std::vector<AutofillField*>::const_iterator iter = form->begin(); | 
| - iter != form->end(); ++iter) { | 
| - form_fields.push_back((*iter)->type()); | 
| - } | 
| - | 
| - AutofillProfile::CreateInferredLabels(&matched_profiles, &form_fields, | 
| - type, 1, labels); | 
| - | 
| - // No icons for profile suggestions. | 
| - icons->resize(values->size()); | 
| - } else { | 
| - for (std::vector<AutofillProfile*>::const_iterator iter = profiles.begin(); | 
| - iter != profiles.end(); ++iter) { | 
| - AutofillProfile* profile = *iter; | 
| - | 
| - // The value of the stored data for this field type in the |profile|. | 
| - std::vector<string16> multi_values; | 
| - profile->GetMultiInfo(type, app_locale, &multi_values); | 
| - | 
| - for (size_t i = 0; i < multi_values.size(); ++i) { | 
| - if (multi_values[i].empty()) | 
| - continue; | 
| - string16 profile_value_lower_case(StringToLowerASCII(multi_values[i])); | 
| - string16 field_value_lower_case(StringToLowerASCII(field.value)); | 
| - // Phone numbers could be split in US forms, so field value could be | 
| - // either prefix or suffix of the phone. | 
| - bool matched_phones = false; | 
| - if (type == PHONE_HOME_NUMBER && !field_value_lower_case.empty() && | 
| - (profile_value_lower_case.find(field_value_lower_case) != | 
| - string16::npos)) { | 
| - matched_phones = true; | 
| - } | 
| - if (matched_phones || | 
| - profile_value_lower_case == field_value_lower_case) { | 
| - for (size_t j = 0; j < multi_values.size(); ++j) { | 
| - if (!multi_values[j].empty()) { | 
| - values->push_back(multi_values[j]); | 
| - unique_ids->push_back(PackGUIDs(GUIDPair(std::string(), 0), | 
| - GUIDPair(profile->guid(), j))); | 
| - } | 
| - } | 
| - // We've added all the values for this profile so move on to the next. | 
| - break; | 
| - } | 
| - } | 
| - } | 
| + std::vector<AutofillFieldType> field_types(form->field_count()); | 
| + for (size_t i = 0; i < form->field_count(); ++i) { | 
| + field_types[i] = form->field(i)->type(); | 
| + } | 
| + std::vector<GUIDPair> guid_pairs; | 
| - // No labels for previously filled fields. | 
| - labels->resize(values->size()); | 
| + personal_data_->GetProfileSuggestions( | 
| + type, field.value, field.is_autofilled, field_types, | 
| + values, labels, icons, &guid_pairs); | 
| - // No icons for profile suggestions. | 
| - icons->resize(values->size()); | 
| + for (size_t i = 0; i < guid_pairs.size(); ++i) { | 
| + unique_ids->push_back(PackGUIDs(GUIDPair(std::string(), 0), | 
| + guid_pairs[i])); | 
| 
 
Ilya Sherman
2012/12/20 21:57:42
This diff is not related to this CL...
 
 | 
| } | 
| } | 
| @@ -1302,7 +1239,7 @@ int AutofillManager::GUIDToID(const GUIDPair& guid) const { | 
| } | 
| } | 
| -const AutofillManager::GUIDPair AutofillManager::IDToGUID(int id) const { | 
| +const GUIDPair AutofillManager::IDToGUID(int id) const { | 
| if (id == 0) | 
| return GUIDPair(std::string(), 0); |