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

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

Issue 298863012: Use upstream libaddressinput in Chrome. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Self review. Created 6 years, 6 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/core/browser/autofill_profile.cc
diff --git a/components/autofill/core/browser/autofill_profile.cc b/components/autofill/core/browser/autofill_profile.cc
index fc3f39ef259b0e1c54be6dda1f67e2a2c2851ca5..da9416c3dc257ea2aaf97f4f1a07e16556cd2897 100644
--- a/components/autofill/core/browser/autofill_profile.cc
+++ b/components/autofill/core/browser/autofill_profile.cc
@@ -26,11 +26,16 @@
#include "components/autofill/core/browser/validation.h"
#include "components/autofill/core/common/form_field_data.h"
#include "grit/components_strings.h"
-#include "third_party/libaddressinput/chromium/cpp/include/libaddressinput/address_data.h"
+#include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_data.h"
+#include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_field.h"
+#include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_formatter.h"
+#include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_metadata.h"
#include "ui/base/l10n/l10n_util.h"
using base::ASCIIToUTF16;
using base::UTF16ToUTF8;
+using ::i18n::addressinput::AddressData;
+using ::i18n::addressinput::AddressField;
namespace autofill {
namespace {
@@ -296,13 +301,33 @@ void AutofillProfile::SetRawInfo(ServerFieldType type,
base::string16 AutofillProfile::GetInfo(const AutofillType& type,
const std::string& app_locale) const {
if (type.html_type() == HTML_TYPE_FULL_ADDRESS) {
- scoped_ptr< ::i18n::addressinput::AddressData> address_data =
+ scoped_ptr<AddressData> address =
i18n::CreateAddressDataFromAutofillProfile(*this, app_locale);
- if (!address_data->HasAllRequiredFields())
please use gerrit instead 2014/06/05 22:22:48 To reduce reviewer burden: Use the has_all_require
please use gerrit instead 2014/06/09 23:28:16 Done.
- return base::string16();
+
+ // TODO: Think about whether it makes sense to do this special check here in
+ // Chromium, instead of just using the regular address validation feature of
+ // libaddressinput.
+ static const AddressField kFields[] = {
+ ::i18n::addressinput::COUNTRY,
+ ::i18n::addressinput::ADMIN_AREA,
+ ::i18n::addressinput::LOCALITY,
+ ::i18n::addressinput::DEPENDENT_LOCALITY,
+ ::i18n::addressinput::SORTING_CODE,
+ ::i18n::addressinput::POSTAL_CODE,
+ ::i18n::addressinput::STREET_ADDRESS,
+ ::i18n::addressinput::RECIPIENT
+ };
+
+ for (size_t i = 0; i < arraysize(kFields); ++i) {
+ AddressField field = kFields[i];
+ if (address->IsFieldEmpty(field) &&
+ ::i18n::addressinput::IsFieldRequired(field, address->region_code)) {
+ return base::string16();
+ }
+ }
std::vector<std::string> lines;
- address_data->FormatForDisplay(&lines);
+ ::i18n::addressinput::GetFormattedNationalAddress(*address, &lines);
return base::UTF8ToUTF16(JoinString(lines, '\n'));
}

Powered by Google App Engine
This is Rietveld 408576698