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

Unified Diff: components/autofill/browser/personal_data_manager.cc

Issue 13488009: Remove application locale cache in autofill code. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: sync Created 7 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: components/autofill/browser/personal_data_manager.cc
===================================================================
--- components/autofill/browser/personal_data_manager.cc (revision 192613)
+++ components/autofill/browser/personal_data_manager.cc (working copy)
@@ -13,9 +13,8 @@
#include "base/prefs/pref_service.h"
#include "base/strings/string_number_conversions.h"
#include "base/utf_string_conversions.h"
-#include "chrome/common/chrome_notification_types.h"
+#include "components/autofill/browser/autofill_country.h"
#include "components/autofill/browser/autofill-inl.h"
-#include "components/autofill/browser/autofill_country.h"
#include "components/autofill/browser/autofill_field.h"
#include "components/autofill/browser/autofill_metrics.h"
#include "components/autofill/browser/form_group.h"
@@ -28,7 +27,6 @@
#include "components/user_prefs/user_prefs.h"
#include "components/webdata/autofill/autofill_webdata_service.h"
#include "content/public/browser/browser_context.h"
-#include "content/public/browser/notification_source.h"
using content::BrowserContext;
@@ -82,11 +80,11 @@
// required as determined by its country code.
// No verification of validity of the contents is preformed. This is an
// existence check only.
-bool IsMinimumAddress(const AutofillProfile& profile) {
+bool IsMinimumAddress(const AutofillProfile& profile,
+ const std::string& app_locale) {
// All countries require at least one address line.
if (profile.GetRawInfo(ADDRESS_HOME_LINE1).empty())
return false;
- std::string app_locale = AutofillCountry::ApplicationLocale();
std::string country_code =
UTF16ToASCII(profile.GetRawInfo(ADDRESS_HOME_COUNTRY));
@@ -130,11 +128,12 @@
} // namespace
-PersonalDataManager::PersonalDataManager()
+PersonalDataManager::PersonalDataManager(const std::string& app_locale)
: browser_context_(NULL),
is_data_loaded_(false),
pending_profiles_query_(0),
pending_creditcards_query_(0),
+ app_locale_(app_locale),
metric_logger_(new AutofillMetrics),
has_logged_profile_count_(false) {}
@@ -238,7 +237,6 @@
// complete at the end.
PhoneNumber::PhoneCombineHelper home;
- const std::string app_locale = AutofillCountry::ApplicationLocale();
for (size_t i = 0; i < form.field_count(); ++i) {
const AutofillField* field = form.field(i);
string16 value = CollapseWhitespace(field->value, false);
@@ -266,7 +264,7 @@
DCHECK_EQ(CREDIT_CARD_EXP_MONTH, field_type);
local_imported_credit_card->SetInfoForMonthInputType(value);
} else {
- local_imported_credit_card->SetInfo(field_type, value, app_locale);
+ local_imported_credit_card->SetInfo(field_type, value, app_locale_);
}
++importable_credit_card_fields;
} else {
@@ -275,7 +273,7 @@
// If the fields are not the phone fields in question home.SetInfo() is
// going to return false.
if (!home.SetInfo(field_type, value))
- imported_profile->SetInfo(field_type, value, app_locale);
+ imported_profile->SetInfo(field_type, value, app_locale_);
// Reject profiles with invalid country information.
if (field_type == ADDRESS_HOME_COUNTRY &&
@@ -290,16 +288,18 @@
// Construct the phone number. Reject the profile if the number is invalid.
if (imported_profile.get() && !home.IsEmpty()) {
string16 constructed_number;
- if (!home.ParseNumber(*imported_profile, app_locale, &constructed_number) ||
+ if (!home.ParseNumber(*imported_profile, app_locale_,
+ &constructed_number) ||
!imported_profile->SetInfo(PHONE_HOME_WHOLE_NUMBER, constructed_number,
- app_locale)) {
+ app_locale_)) {
imported_profile.reset();
}
}
// Reject the profile if minimum address and validation requirements are not
// met.
- if (imported_profile.get() && !IsValidLearnableProfile(*imported_profile))
+ if (imported_profile.get() &&
+ !IsValidLearnableProfile(*imported_profile, app_locale_))
imported_profile.reset();
// Reject the credit card if we did not detect enough filled credit card
@@ -317,7 +317,7 @@
iter != credit_cards_.end();
++iter) {
if ((*iter)->UpdateFromImportedCard(*local_imported_credit_card.get(),
- app_locale)) {
+ app_locale_)) {
merged_credit_card = true;
UpdateCreditCard(**iter);
local_imported_credit_card.reset();
@@ -345,7 +345,7 @@
if (browser_context_->IsOffTheRecord())
return;
- if (profile.IsEmpty())
+ if (profile.IsEmpty(app_locale_))
return;
// Don't add an existing profile.
@@ -375,7 +375,7 @@
if (!FindByGUID<AutofillProfile>(web_profiles_, profile.guid()))
return;
- if (profile.IsEmpty()) {
+ if (profile.IsEmpty(app_locale_)) {
RemoveByGUID(profile.guid());
return;
}
@@ -407,7 +407,7 @@
if (browser_context_->IsOffTheRecord())
return;
- if (credit_card.IsEmpty())
+ if (credit_card.IsEmpty(app_locale_))
return;
if (FindByGUID<CreditCard>(credit_cards_, credit_card.guid()))
@@ -436,7 +436,7 @@
if (!FindByGUID<CreditCard>(credit_cards_, credit_card.guid()))
return;
- if (credit_card.IsEmpty()) {
+ if (credit_card.IsEmpty(app_locale_)) {
RemoveByGUID(credit_card.guid());
return;
}
@@ -488,16 +488,15 @@
void PersonalDataManager::GetNonEmptyTypes(
FieldTypeSet* non_empty_types) {
- const std::string app_locale = AutofillCountry::ApplicationLocale();
const std::vector<AutofillProfile*>& profiles = GetProfiles();
for (std::vector<AutofillProfile*>::const_iterator iter = profiles.begin();
iter != profiles.end(); ++iter) {
- (*iter)->GetNonEmptyTypes(app_locale, non_empty_types);
+ (*iter)->GetNonEmptyTypes(app_locale_, non_empty_types);
}
for (ScopedVector<CreditCard>::const_iterator iter = credit_cards_.begin();
iter != credit_cards_.end(); ++iter) {
- (*iter)->GetNonEmptyTypes(app_locale, non_empty_types);
+ (*iter)->GetNonEmptyTypes(app_locale_, non_empty_types);
}
}
@@ -550,7 +549,6 @@
guid_pairs->clear();
const std::vector<AutofillProfile*>& profiles = GetProfiles();
- const std::string app_locale = AutofillCountry::ApplicationLocale();
std::vector<AutofillProfile*> matched_profiles;
for (std::vector<AutofillProfile*>::const_iterator iter = profiles.begin();
iter != profiles.end(); ++iter) {
@@ -558,7 +556,7 @@
// 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);
+ profile->GetMultiInfo(type, app_locale_, &multi_values);
for (size_t i = 0; i < multi_values.size(); ++i) {
if (!field_is_autofilled) {
@@ -623,13 +621,12 @@
std::vector<string16>* labels,
std::vector<string16>* icons,
std::vector<GUIDPair>* guid_pairs) {
- const std::string app_locale = AutofillCountry::ApplicationLocale();
for (std::vector<CreditCard*>::const_iterator iter = credit_cards().begin();
iter != credit_cards().end(); ++iter) {
CreditCard* credit_card = *iter;
// The value of the stored data for this field type in the |credit_card|.
- string16 creditcard_field_value = credit_card->GetInfo(type, app_locale);
+ string16 creditcard_field_value = credit_card->GetInfo(type, app_locale_);
if (!creditcard_field_value.empty() &&
StartsWith(creditcard_field_value, field_contents, false)) {
if (type == CREDIT_CARD_NUMBER)
@@ -638,7 +635,7 @@
string16 label;
if (credit_card->number().empty()) {
// If there is no CC number, return name to show something.
- label = credit_card->GetInfo(CREDIT_CARD_NAME, app_locale);
+ label = credit_card->GetInfo(CREDIT_CARD_NAME, app_locale_);
} else {
label = kCreditCardPrefix;
label.append(credit_card->LastFourDigits());
@@ -659,8 +656,9 @@
// static
bool PersonalDataManager::IsValidLearnableProfile(
- const AutofillProfile& profile) {
- if (!IsMinimumAddress(profile))
+ const AutofillProfile& profile,
+ const std::string& app_locale) {
+ if (!IsMinimumAddress(profile, app_locale))
return false;
string16 email = profile.GetRawInfo(EMAIL_ADDRESS);
@@ -687,6 +685,7 @@
bool PersonalDataManager::MergeProfile(
const AutofillProfile& profile,
const std::vector<AutofillProfile*>& existing_profiles,
+ const std::string& app_locale,
std::vector<AutofillProfile>* merged_profiles) {
merged_profiles->clear();
@@ -703,7 +702,7 @@
StringToLowerASCII((*iter)->PrimaryValue()) ==
StringToLowerASCII(profile.PrimaryValue())) {
merged = true;
- (*iter)->OverwriteWithOrAddTo(profile);
+ (*iter)->OverwriteWithOrAddTo(profile, app_locale);
}
}
merged_profiles->push_back(**iter);
@@ -721,10 +720,13 @@
return;
// Remove empty profiles from input.
- profiles->erase(
- std::remove_if(profiles->begin(), profiles->end(),
- std::mem_fun_ref(&AutofillProfile::IsEmpty)),
- profiles->end());
+ for (std::vector<AutofillProfile>::iterator it = profiles->begin();
+ it != profiles->end();) {
+ if (it->IsEmpty(app_locale_))
+ profiles->erase(it);
+ else
+ it++;
+ }
// Ensure that profile labels are up to date. Currently, sync relies on
// labels to identify a profile.
@@ -781,11 +783,13 @@
return;
// Remove empty credit cards from input.
- credit_cards->erase(
- std::remove_if(
- credit_cards->begin(), credit_cards->end(),
- std::mem_fun_ref(&CreditCard::IsEmpty)),
- credit_cards->end());
+ for (std::vector<CreditCard>::iterator it = credit_cards->begin();
+ it != credit_cards->end();) {
+ if (it->IsEmpty(app_locale_))
+ credit_cards->erase(it);
+ else
+ it++;
+ }
scoped_refptr<AutofillWebDataService> autofill_data(
AutofillWebDataService::FromBrowserContext(browser_context_));
@@ -923,12 +927,12 @@
for (std::vector<AutofillProfile*>::const_iterator iter =
auxiliary_profiles_.begin();
iter != auxiliary_profiles_.end(); ++iter) {
- if (imported_profile.IsSubsetOf(**iter))
+ if (imported_profile.IsSubsetOf(**iter, app_locale_))
return;
}
std::vector<AutofillProfile> profiles;
- MergeProfile(imported_profile, web_profiles_.get(), &profiles);
+ MergeProfile(imported_profile, web_profiles_.get(), app_locale_, &profiles);
SetProfiles(&profiles);
}
@@ -946,14 +950,13 @@
// Set to true if |imported_card| is merged into the credit card list.
bool merged = false;
- const std::string app_locale = AutofillCountry::ApplicationLocale();
std::vector<CreditCard> credit_cards;
for (std::vector<CreditCard*>::const_iterator card = credit_cards_.begin();
card != credit_cards_.end();
++card) {
// If |imported_card| has not yet been merged, check whether it should be
// with the current |card|.
- if (!merged && (*card)->UpdateFromImportedCard(imported_card, app_locale))
+ if (!merged && (*card)->UpdateFromImportedCard(imported_card, app_locale_))
merged = true;
credit_cards.push_back(**card);
« no previous file with comments | « components/autofill/browser/personal_data_manager.h ('k') | components/autofill/browser/personal_data_manager_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698