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

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

Issue 390083003: Use street address collapser instead of line separator. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments. 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/autofill/core/browser/address_i18n.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/autofill/core/browser/personal_data_manager.cc
diff --git a/components/autofill/core/browser/personal_data_manager.cc b/components/autofill/core/browser/personal_data_manager.cc
index 42f896db1dc83f8a78b1326e464c74a20284834b..d5645559cc3f6cd51d6e9dc338042914599e35ba 100644
--- a/components/autofill/core/browser/personal_data_manager.cc
+++ b/components/autofill/core/browser/personal_data_manager.cc
@@ -15,6 +15,7 @@
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
+#include "components/autofill/core/browser/address_i18n.h"
#include "components/autofill/core/browser/autofill-inl.h"
#include "components/autofill/core/browser/autofill_country.h"
#include "components/autofill/core/browser/autofill_field.h"
@@ -24,11 +25,16 @@
#include "components/autofill/core/browser/phone_number_i18n.h"
#include "components/autofill/core/browser/validation.h"
#include "components/autofill/core/common/autofill_pref_names.h"
+#include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_data.h"
#include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_formatter.h"
namespace autofill {
namespace {
+using ::i18n::addressinput::AddressField;
+using ::i18n::addressinput::GetStreetAddressLinesAsSingleLine;
+using ::i18n::addressinput::STREET_ADDRESS;
+
const base::string16::value_type kCreditCardPrefix[] = {'*', 0};
template<typename T>
@@ -565,20 +571,23 @@ void PersonalDataManager::GetProfileSuggestions(
// The value of the stored data for this field type in the |profile|.
std::vector<base::string16> multi_values;
- profile->GetMultiInfo(type, app_locale_, &multi_values);
-
- // Names need to be in vertically compact form - i.e. a single line. Join
- // multi-line addresses into a single line, using a separator.
- // The separator is locale-specific.
- base::string16 compact_separator =
- base::UTF8ToUTF16(::i18n::addressinput::GetLineSeparatorForLanguage(
- profile->language_code()));
+ AddressField address_field;
+ if (i18n::FieldForType(type.GetStorableType(), &address_field) &&
+ address_field == STREET_ADDRESS) {
+ std::string street_address_line;
+ GetStreetAddressLinesAsSingleLine(
+ *i18n::CreateAddressDataFromAutofillProfile(*profile, app_locale_),
+ &street_address_line);
+ multi_values.push_back(base::UTF8ToUTF16(street_address_line));
+ } else {
+ profile->GetMultiInfo(type, app_locale_, &multi_values);
+ }
+
for (size_t i = 0; i < multi_values.size(); ++i) {
- // Create vertically compact form.
- base::ReplaceChars(multi_values[i],
- base::ASCIIToUTF16("\n"),
- compact_separator,
- &multi_values[i]);
+ // Newlines can be found only in a street address, which was collapsed
+ // into a single line above.
+ DCHECK(multi_values[i].find('\n') == std::string::npos);
+
if (!field_is_autofilled) {
// Suggest data that starts with what the user has typed.
if (!multi_values[i].empty() &&
« no previous file with comments | « components/autofill/core/browser/address_i18n.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698