summaryrefslogtreecommitdiffstats
path: root/components/autofill/browser/wallet/wallet_address.cc
diff options
context:
space:
mode:
Diffstat (limited to 'components/autofill/browser/wallet/wallet_address.cc')
-rw-r--r--components/autofill/browser/wallet/wallet_address.cc66
1 files changed, 44 insertions, 22 deletions
diff --git a/components/autofill/browser/wallet/wallet_address.cc b/components/autofill/browser/wallet/wallet_address.cc
index d15c7ac..6035144 100644
--- a/components/autofill/browser/wallet/wallet_address.cc
+++ b/components/autofill/browser/wallet/wallet_address.cc
@@ -14,6 +14,10 @@
namespace autofill {
namespace wallet {
+// Server specified type for address with complete details.
+const char kFullAddress[] = "FULL";
+const char kTrue[] = "true";
+
namespace {
Address* CreateAddressInternal(const base::DictionaryValue& dictionary,
@@ -28,7 +32,7 @@ Address* CreateAddressInternal(const base::DictionaryValue& dictionary,
string16 recipient_name;
if (!dictionary.GetString("postal_address.recipient_name",
&recipient_name)) {
- DLOG(ERROR) << "Response from Google Wallet recipient name";
+ DLOG(ERROR) << "Response from Google Wallet missing recipient name";
return NULL;
}
@@ -67,15 +71,22 @@ Address* CreateAddressInternal(const base::DictionaryValue& dictionary,
DVLOG(1) << "Response from Google Wallet missing administrative area name";
}
- return new Address(country_name_code,
- recipient_name ,
- address_line_1,
- address_line_2,
- locality_name,
- administrative_area_name,
- postal_code_number,
- phone_number,
- object_id);
+ std::string is_minimal_address;
+ if (!dictionary.GetString("is_minimal_address", &is_minimal_address))
+ DVLOG(1) << "Response from Google Wallet missing is_minimal_address bit";
+
+ Address* address = new Address(country_name_code,
+ recipient_name,
+ address_line_1,
+ address_line_2,
+ locality_name,
+ administrative_area_name,
+ postal_code_number,
+ phone_number,
+ object_id);
+ address->set_is_complete_address(is_minimal_address != kTrue);
+
+ return address;
}
} // namespace
@@ -91,7 +102,8 @@ Address::Address(const AutofillProfile& profile)
locality_name_(profile.GetRawInfo(ADDRESS_HOME_CITY)),
administrative_area_name_(profile.GetRawInfo(ADDRESS_HOME_STATE)),
postal_code_number_(profile.GetRawInfo(ADDRESS_HOME_ZIP)),
- phone_number_(profile.GetRawInfo(PHONE_HOME_WHOLE_NUMBER)) {}
+ phone_number_(profile.GetRawInfo(PHONE_HOME_WHOLE_NUMBER)),
+ is_complete_address_(true) {}
Address::Address(const std::string& country_name_code,
const string16& recipient_name,
@@ -110,7 +122,8 @@ Address::Address(const std::string& country_name_code,
administrative_area_name_(administrative_area_name),
postal_code_number_(postal_code_number),
phone_number_(phone_number),
- object_id_(object_id) {}
+ object_id_(object_id),
+ is_complete_address_(true) {}
Address::~Address() {}
@@ -174,15 +187,23 @@ scoped_ptr<Address> Address::CreateDisplayAddress(
if (!dictionary.GetString("phone_number", &phone_number))
DVLOG(1) << "Reponse from Google Wallet missing phone number";
- return scoped_ptr<Address>(new Address(country_code,
- name,
- address1,
- address2,
- city,
- state,
- postal_code,
- phone_number,
- std::string()));
+ std::string address_state;
+ if (!dictionary.GetString("type", &address_state))
+ DVLOG(1) << "Response from Google Wallet missing type/state of address";
+
+ scoped_ptr<Address> address(
+ new Address(country_code,
+ name,
+ address1,
+ address2,
+ city,
+ state,
+ postal_code,
+ phone_number,
+ std::string()));
+ address->set_is_complete_address(address_state == kFullAddress);
+
+ return address.Pass();
}
scoped_ptr<base::DictionaryValue> Address::ToDictionaryWithID() const {
@@ -279,7 +300,8 @@ bool Address::operator==(const Address& other) const {
administrative_area_name_ == other.administrative_area_name_ &&
postal_code_number_ == other.postal_code_number_ &&
phone_number_ == other.phone_number_ &&
- object_id_ == other.object_id_;
+ object_id_ == other.object_id_ &&
+ is_complete_address_ == other.is_complete_address_;
}
bool Address::operator!=(const Address& other) const {