| Index: components/autofill/content/browser/wallet/wallet_address.cc
|
| diff --git a/components/autofill/content/browser/wallet/wallet_address.cc b/components/autofill/content/browser/wallet/wallet_address.cc
|
| deleted file mode 100644
|
| index 3f13424674f3c0a88ca0b3a3694d0cd2e5d5e2a4..0000000000000000000000000000000000000000
|
| --- a/components/autofill/content/browser/wallet/wallet_address.cc
|
| +++ /dev/null
|
| @@ -1,413 +0,0 @@
|
| -// Copyright 2013 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "components/autofill/content/browser/wallet/wallet_address.h"
|
| -
|
| -#include "base/logging.h"
|
| -#include "base/strings/string_split.h"
|
| -#include "base/strings/string_util.h"
|
| -#include "base/strings/utf_string_conversions.h"
|
| -#include "base/values.h"
|
| -#include "build/build_config.h"
|
| -#include "components/autofill/core/browser/autofill_country.h"
|
| -#include "components/autofill/core/browser/autofill_profile.h"
|
| -#include "components/autofill/core/browser/autofill_type.h"
|
| -#include "components/autofill/core/browser/phone_number.h"
|
| -#include "components/autofill/core/browser/state_names.h"
|
| -
|
| -namespace autofill {
|
| -namespace wallet {
|
| -
|
| -// Server specified type for address with complete details.
|
| -const char kFullAddress[] = "FULL";
|
| -
|
| -namespace {
|
| -
|
| -Address* CreateAddressInternal(const base::DictionaryValue& dictionary,
|
| - const std::string& object_id) {
|
| - std::string country_name_code;
|
| - if (!dictionary.GetString("postal_address.country_name_code",
|
| - &country_name_code)) {
|
| - DLOG(ERROR) << "Response from Google Payments missing country name";
|
| - return NULL;
|
| - }
|
| -
|
| - base::string16 recipient_name;
|
| - if (!dictionary.GetString("postal_address.recipient_name",
|
| - &recipient_name)) {
|
| - DLOG(ERROR) << "Response from Google Payments missing recipient name";
|
| - return NULL;
|
| - }
|
| -
|
| - base::string16 postal_code_number;
|
| - if (!dictionary.GetString("postal_address.postal_code_number",
|
| - &postal_code_number)) {
|
| - DLOG(ERROR) << "Response from Google Payments missing postal code number";
|
| - return NULL;
|
| - }
|
| - // TODO(estade): what about postal_code_number_extension?
|
| -
|
| - base::string16 sorting_code;
|
| - if (!dictionary.GetString("postal_address.sorting_code",
|
| - &sorting_code)) {
|
| - DVLOG(1) << "Response from Google Payments missing sorting code";
|
| - }
|
| -
|
| - base::string16 phone_number;
|
| - if (!dictionary.GetString("phone_number", &phone_number))
|
| - DVLOG(1) << "Response from Google Payments missing phone number";
|
| -
|
| - std::vector<base::string16> street_address;
|
| - const base::ListValue* address_line_list;
|
| - if (dictionary.GetList("postal_address.address_line", &address_line_list)) {
|
| - for (size_t i = 0; i < address_line_list->GetSize(); ++i) {
|
| - base::string16 line;
|
| - address_line_list->GetString(i, &line);
|
| - street_address.push_back(line);
|
| - }
|
| - } else {
|
| - DVLOG(1) << "Response from Google Payments missing address lines";
|
| - }
|
| -
|
| - base::string16 locality_name;
|
| - if (!dictionary.GetString("postal_address.locality_name",
|
| - &locality_name)) {
|
| - DVLOG(1) << "Response from Google Payments missing locality name";
|
| - }
|
| -
|
| - base::string16 dependent_locality_name;
|
| - if (!dictionary.GetString("postal_address.dependent_locality_name",
|
| - &dependent_locality_name)) {
|
| - DVLOG(1) << "Response from Google Payments missing dependent locality name";
|
| - }
|
| -
|
| - base::string16 administrative_area_name;
|
| - if (!dictionary.GetString("postal_address.administrative_area_name",
|
| - &administrative_area_name)) {
|
| - DVLOG(1)
|
| - << "Response from Google Payments missing administrative area name";
|
| - }
|
| -
|
| - std::string language_code;
|
| - if (!dictionary.GetString("postal_address.language_code",
|
| - &language_code)) {
|
| - DVLOG(1) << "Response from Google Payments missing language code";
|
| - }
|
| -
|
| - Address* address = new Address(country_name_code,
|
| - recipient_name,
|
| - street_address,
|
| - locality_name,
|
| - dependent_locality_name,
|
| - administrative_area_name,
|
| - postal_code_number,
|
| - sorting_code,
|
| - phone_number,
|
| - object_id,
|
| - language_code);
|
| -
|
| - bool is_minimal_address = false;
|
| - if (dictionary.GetBoolean("is_minimal_address", &is_minimal_address))
|
| - address->set_is_complete_address(!is_minimal_address);
|
| - else
|
| - DVLOG(1) << "Response from Google Payments missing is_minimal_address bit";
|
| -
|
| - return address;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -Address::Address() {}
|
| -
|
| -Address::Address(const AutofillProfile& profile)
|
| - : country_name_code_(
|
| - base::UTF16ToASCII(profile.GetRawInfo(ADDRESS_HOME_COUNTRY))),
|
| - recipient_name_(profile.GetRawInfo(NAME_FULL)),
|
| - locality_name_(profile.GetRawInfo(ADDRESS_HOME_CITY)),
|
| - dependent_locality_name_(
|
| - profile.GetRawInfo(ADDRESS_HOME_DEPENDENT_LOCALITY)),
|
| - administrative_area_name_(profile.GetRawInfo(ADDRESS_HOME_STATE)),
|
| - postal_code_number_(profile.GetRawInfo(ADDRESS_HOME_ZIP)),
|
| - sorting_code_(profile.GetRawInfo(ADDRESS_HOME_SORTING_CODE)),
|
| - phone_number_(profile.GetRawInfo(PHONE_HOME_WHOLE_NUMBER)),
|
| - is_complete_address_(true),
|
| - language_code_(profile.language_code()) {
|
| - street_address_ = base::SplitString(
|
| - profile.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS), base::ASCIIToUTF16("\n"),
|
| - base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
|
| -
|
| - if (!country_name_code_.empty())
|
| - phone_object_ = i18n::PhoneObject(phone_number_, country_name_code_);
|
| -}
|
| -
|
| -Address::Address(const std::string& country_name_code,
|
| - const base::string16& recipient_name,
|
| - const std::vector<base::string16>& street_address,
|
| - const base::string16& locality_name,
|
| - const base::string16& dependent_locality_name,
|
| - const base::string16& administrative_area_name,
|
| - const base::string16& postal_code_number,
|
| - const base::string16& sorting_code,
|
| - const base::string16& phone_number,
|
| - const std::string& object_id,
|
| - const std::string& language_code)
|
| - : country_name_code_(country_name_code),
|
| - recipient_name_(recipient_name),
|
| - street_address_(street_address),
|
| - locality_name_(locality_name),
|
| - dependent_locality_name_(dependent_locality_name),
|
| - administrative_area_name_(administrative_area_name),
|
| - postal_code_number_(postal_code_number),
|
| - sorting_code_(sorting_code),
|
| - phone_number_(phone_number),
|
| - phone_object_(phone_number, country_name_code),
|
| - object_id_(object_id),
|
| - is_complete_address_(true),
|
| - language_code_(language_code) {}
|
| -
|
| -Address::~Address() {}
|
| -
|
| -// static
|
| -std::unique_ptr<Address> Address::CreateAddressWithID(
|
| - const base::DictionaryValue& dictionary) {
|
| - std::string object_id;
|
| - if (!dictionary.GetString("id", &object_id)) {
|
| - DLOG(ERROR) << "Response from Google Payments missing object id";
|
| - return std::unique_ptr<Address>();
|
| - }
|
| - return std::unique_ptr<Address>(CreateAddressInternal(dictionary, object_id));
|
| -}
|
| -
|
| -// static
|
| -std::unique_ptr<Address> Address::CreateAddress(
|
| - const base::DictionaryValue& dictionary) {
|
| - std::string object_id;
|
| - dictionary.GetString("id", &object_id);
|
| - return std::unique_ptr<Address>(CreateAddressInternal(dictionary, object_id));
|
| -}
|
| -
|
| -// static
|
| -std::unique_ptr<Address> Address::CreateDisplayAddress(
|
| - const base::DictionaryValue& dictionary) {
|
| - std::string country_code;
|
| - if (!dictionary.GetString("country_code", &country_code)) {
|
| - DLOG(ERROR) << "Reponse from Google Payments missing country code";
|
| - return std::unique_ptr<Address>();
|
| - }
|
| -
|
| - base::string16 name;
|
| - if (!dictionary.GetString("name", &name)) {
|
| - DLOG(ERROR) << "Reponse from Google Payments missing name";
|
| - return std::unique_ptr<Address>();
|
| - }
|
| -
|
| - base::string16 postal_code;
|
| - if (!dictionary.GetString("postal_code", &postal_code)) {
|
| - DLOG(ERROR) << "Reponse from Google Payments missing postal code";
|
| - return std::unique_ptr<Address>();
|
| - }
|
| -
|
| - base::string16 sorting_code;
|
| - if (!dictionary.GetString("sorting_code", &sorting_code)) {
|
| - DVLOG(1) << "Reponse from Google Payments missing sorting code";
|
| - }
|
| -
|
| - std::vector<base::string16> street_address;
|
| - base::string16 address1;
|
| - if (dictionary.GetString("address1", &address1))
|
| - street_address.push_back(address1);
|
| - else
|
| - DVLOG(1) << "Reponse from Google Payments missing address1";
|
| -
|
| - base::string16 address2;
|
| - if (dictionary.GetString("address2", &address2) && !address2.empty()) {
|
| - street_address.resize(2);
|
| - street_address[1] = address2;
|
| - } else {
|
| - DVLOG(1) << "Reponse from Google Payments missing or empty address2";
|
| - }
|
| -
|
| - base::string16 city;
|
| - if (!dictionary.GetString("city", &city))
|
| - DVLOG(1) << "Reponse from Google Payments missing city";
|
| -
|
| - base::string16 dependent_locality_name;
|
| - if (!dictionary.GetString("dependent_locality_name",
|
| - &dependent_locality_name)) {
|
| - DVLOG(1) << "Reponse from Google Payments missing district";
|
| - }
|
| -
|
| - base::string16 state;
|
| - if (!dictionary.GetString("state", &state))
|
| - DVLOG(1) << "Reponse from Google Payments missing state";
|
| -
|
| - base::string16 phone_number;
|
| - if (!dictionary.GetString("phone_number", &phone_number))
|
| - DVLOG(1) << "Reponse from Google Payments missing phone number";
|
| -
|
| - std::string address_state;
|
| - if (!dictionary.GetString("type", &address_state))
|
| - DVLOG(1) << "Response from Google Payments missing type/state of address";
|
| -
|
| - std::string language_code;
|
| - if (!dictionary.GetString("language_code", &language_code))
|
| - DVLOG(1) << "Response from Google Payments missing language code";
|
| -
|
| - std::unique_ptr<Address> address(new Address(
|
| - country_code, name, street_address, city, dependent_locality_name, state,
|
| - postal_code, sorting_code, phone_number, std::string(), language_code));
|
| - address->set_is_complete_address(address_state == kFullAddress);
|
| -
|
| - return address;
|
| -}
|
| -
|
| -std::unique_ptr<base::DictionaryValue> Address::ToDictionaryWithID() const {
|
| - std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
|
| -
|
| - if (!object_id_.empty())
|
| - dict->SetString("id", object_id_);
|
| - dict->SetString("phone_number", phone_number_);
|
| - dict->Set("postal_address", ToDictionaryWithoutID().release());
|
| -
|
| - return dict;
|
| -}
|
| -
|
| -std::unique_ptr<base::DictionaryValue> Address::ToDictionaryWithoutID() const {
|
| - std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
|
| -
|
| - std::unique_ptr<base::ListValue> address_lines(new base::ListValue());
|
| - address_lines->AppendStrings(street_address_);
|
| - dict->Set("address_line", address_lines.release());
|
| -
|
| - dict->SetString("country_name_code", country_name_code_);
|
| - dict->SetString("recipient_name", recipient_name_);
|
| - dict->SetString("locality_name", locality_name_);
|
| - dict->SetString("dependent_locality_name", dependent_locality_name_);
|
| - dict->SetString("administrative_area_name",
|
| - administrative_area_name_);
|
| - dict->SetString("postal_code_number", postal_code_number_);
|
| - dict->SetString("sorting_code", sorting_code_);
|
| - dict->SetString("language_code", language_code_);
|
| -
|
| - return dict;
|
| -}
|
| -
|
| -base::string16 Address::DisplayName() const {
|
| -#if defined(OS_ANDROID)
|
| - // TODO(aruslan): improve this stub implementation.
|
| - return recipient_name();
|
| -#else
|
| - // TODO(estade): improve this stub implementation + l10n.
|
| - return recipient_name() + base::ASCIIToUTF16(", ") + GetStreetAddressLine(0);
|
| -#endif
|
| -}
|
| -
|
| -base::string16 Address::DisplayNameDetail() const {
|
| -#if defined(OS_ANDROID)
|
| - // TODO(aruslan): improve this stub implementation.
|
| - return GetStreetAddressLine(0);
|
| -#else
|
| - return base::string16();
|
| -#endif
|
| -}
|
| -
|
| -base::string16 Address::DisplayPhoneNumber() const {
|
| - // Return a formatted phone number. Wallet doesn't store user formatting, so
|
| - // impose our own. phone_number() always includes a country code, so using
|
| - // PhoneObject to format it would result in an internationalized format. Since
|
| - // Wallet only supports the US right now, stick to national formatting.
|
| - return i18n::PhoneObject(phone_number(), country_name_code()).
|
| - GetNationallyFormattedNumber();
|
| -}
|
| -
|
| -base::string16 Address::GetInfo(const AutofillType& type,
|
| - const std::string& app_locale) const {
|
| - if (type.html_type() == HTML_TYPE_COUNTRY_CODE) {
|
| - DCHECK(base::IsStringASCII(country_name_code()));
|
| - return base::ASCIIToUTF16(country_name_code());
|
| - }
|
| -
|
| - switch (type.GetStorableType()) {
|
| - case NAME_FULL:
|
| - return recipient_name();
|
| -
|
| - case ADDRESS_HOME_STREET_ADDRESS:
|
| - return base::JoinString(street_address_, base::ASCIIToUTF16("\n"));
|
| -
|
| - case ADDRESS_HOME_LINE1:
|
| - return GetStreetAddressLine(0);
|
| -
|
| - case ADDRESS_HOME_LINE2:
|
| - return GetStreetAddressLine(1);
|
| -
|
| - case ADDRESS_HOME_CITY:
|
| - return locality_name();
|
| -
|
| - case ADDRESS_HOME_STATE:
|
| - return administrative_area_name();
|
| -
|
| - case ADDRESS_HOME_ZIP:
|
| - return postal_code_number();
|
| -
|
| - case ADDRESS_HOME_COUNTRY: {
|
| - AutofillCountry country(country_name_code(), app_locale);
|
| - return country.name();
|
| - }
|
| -
|
| - case PHONE_HOME_WHOLE_NUMBER:
|
| - // Wallet doesn't store user phone number formatting, so just strip all
|
| - // formatting.
|
| - return phone_object_.GetWholeNumber();
|
| -
|
| - case ADDRESS_HOME_DEPENDENT_LOCALITY:
|
| - return dependent_locality_name_;
|
| -
|
| - case ADDRESS_HOME_SORTING_CODE:
|
| - return sorting_code_;
|
| -
|
| - case COMPANY_NAME:
|
| - // A field that Wallet doesn't support. TODO(dbeam): can it be supported?
|
| - return base::string16();
|
| -
|
| - default:
|
| - NOTREACHED();
|
| - return base::string16();
|
| - }
|
| -}
|
| -
|
| -void Address::SetPhoneNumber(const base::string16& phone_number) {
|
| - phone_number_ = phone_number;
|
| - phone_object_ = i18n::PhoneObject(phone_number_, country_name_code_);
|
| -}
|
| -
|
| -bool Address::EqualsIgnoreID(const Address& other) const {
|
| - return country_name_code_ == other.country_name_code_ &&
|
| - recipient_name_ == other.recipient_name_ &&
|
| - street_address_ == other.street_address_ &&
|
| - locality_name_ == other.locality_name_ &&
|
| - dependent_locality_name_ == other.dependent_locality_name_ &&
|
| - administrative_area_name_ == other.administrative_area_name_ &&
|
| - postal_code_number_ == other.postal_code_number_ &&
|
| - sorting_code_ == other.sorting_code_ &&
|
| - phone_number_ == other.phone_number_ &&
|
| - is_complete_address_ == other.is_complete_address_;
|
| -}
|
| -
|
| -base::string16 Address::GetStreetAddressLine(size_t line) const {
|
| - return street_address_.size() > line ? street_address_[line] :
|
| - base::string16();
|
| -}
|
| -
|
| -bool Address::operator==(const Address& other) const {
|
| - return object_id_ == other.object_id_ &&
|
| - language_code_ == other.language_code_ &&
|
| - EqualsIgnoreID(other);
|
| -}
|
| -
|
| -bool Address::operator!=(const Address& other) const {
|
| - return !(*this == other);
|
| -}
|
| -
|
| -} // namespace wallet
|
| -} // namespace autofill
|
|
|