summaryrefslogtreecommitdiffstats
path: root/chrome/browser/autofill/autofill_manager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/autofill/autofill_manager.cc')
-rw-r--r--chrome/browser/autofill/autofill_manager.cc89
1 files changed, 13 insertions, 76 deletions
diff --git a/chrome/browser/autofill/autofill_manager.cc b/chrome/browser/autofill/autofill_manager.cc
index efb9b33..8559b92 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]));
}
}
@@ -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);