diff options
Diffstat (limited to 'chrome/browser/autofill/wallet/wallet_address.cc')
-rw-r--r-- | chrome/browser/autofill/wallet/wallet_address.cc | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/chrome/browser/autofill/wallet/wallet_address.cc b/chrome/browser/autofill/wallet/wallet_address.cc new file mode 100644 index 0000000..59901ff --- /dev/null +++ b/chrome/browser/autofill/wallet/wallet_address.cc @@ -0,0 +1,172 @@ +// Copyright (c) 2012 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 "chrome/browser/autofill/wallet/wallet_address.h" + +#include "base/logging.h" +#include "base/values.h" + +namespace wallet { + +Address::Address() {} + +Address::Address(const std::string& country_name_code, + const std::string& recipient_name, + const std::string& address_line_1, + const std::string& address_line_2, + const std::string& locality_name, + const std::string& administrative_area_name, + const std::string& postal_code_number, + const std::string& phone_number, + const std::string& object_id) + : country_name_code_(country_name_code), + recipient_name_(recipient_name), + address_line_1_(address_line_1), + address_line_2_(address_line_2), + locality_name_(locality_name), + administrative_area_name_(administrative_area_name), + postal_code_number_(postal_code_number), + phone_number_(phone_number), + object_id_(object_id) {} + +Address::~Address() {} + +scoped_ptr<Address> + Address::CreateAddressWithID(const base::DictionaryValue& dictionary) { + std::string object_id; + if (!dictionary.GetString("id", &object_id)) { + DLOG(ERROR) << "Response from Google Wallet missing object id"; + return scoped_ptr<Address>(); + } + + std::string country_name_code; + if (!dictionary.GetString("postal_address.country_name_code", + &country_name_code)) { + DLOG(ERROR) << "Response from Google Wallet missing country name"; + return scoped_ptr<Address>(); + } + + std::string recipient_name; + if (!dictionary.GetString("postal_address.recipient_name", + &recipient_name)) { + DLOG(ERROR) << "Response from Google Wallet recipient name"; + return scoped_ptr<Address>(); + } + + std::string postal_code_number; + if (!dictionary.GetString("postal_address.postal_code_number", + &postal_code_number)) { + DLOG(ERROR) << "Response from Google Wallet missing postal code number"; + return scoped_ptr<Address>(); + } + + std::string phone_number; + if (!dictionary.GetString("phone_number", &phone_number)) + DVLOG(1) << "Response from Google Wallet missing phone number"; + + std::string address_line_1; + std::string address_line_2; + const ListValue* address_line_list; + if (dictionary.GetList("postal_address.address_line", &address_line_list)) { + if (!address_line_list->GetString(0, &address_line_1)) + DVLOG(1) << "Response from Google Wallet missing address line 1"; + if (!address_line_list->GetString(1, &address_line_2)) + DVLOG(1) << "Response from Google Wallet missing address line 2"; + } else { + DVLOG(1) << "Response from Google Wallet missing address lines"; + } + + std::string locality_name; + if (!dictionary.GetString("postal_address.locality_name", + &locality_name)) { + DVLOG(1) << "Response from Google Wallet missing locality name"; + } + + std::string administrative_area_name; + if (!dictionary.GetString("postal_address.administrative_area_name", + &administrative_area_name)) { + DVLOG(1) << "Response from Google Wallet missing administrative area name"; + } + + return scoped_ptr<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)); +} + + +scoped_ptr<Address> + Address::CreateDisplayAddress(const base::DictionaryValue& dictionary) { + std::string country_code; + if (!dictionary.GetString("country_code", &country_code)) { + DLOG(ERROR) << "Reponse from Google Wallet missing country code"; + return scoped_ptr<Address>(); + } + + std::string name; + if (!dictionary.GetString("name", &name)) { + DLOG(ERROR) << "Reponse from Google Wallet missing name"; + return scoped_ptr<Address>(); + } + + std::string postal_code; + if (!dictionary.GetString("postal_code", &postal_code)) { + DLOG(ERROR) << "Reponse from Google Wallet missing postal code"; + return scoped_ptr<Address>(); + } + + std::string address1; + if (!dictionary.GetString("address1", &address1)) + DVLOG(1) << "Reponse from Google Wallet missing address1"; + + std::string address2; + if (!dictionary.GetString("address2", &address2)) + DVLOG(1) << "Reponse from Google Wallet missing address2"; + + std::string city; + if (!dictionary.GetString("city", &city)) + DVLOG(1) << "Reponse from Google Wallet missing city"; + + std::string state; + if (!dictionary.GetString("state", &state)) + DVLOG(1) << "Reponse from Google Wallet missing state"; + + std::string phone_number; + 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, + "")); +} + +bool Address::operator==(const Address& other) const { + return country_name_code_ == other.country_name_code_ && + recipient_name_ == other.recipient_name_ && + address_line_1_ == other.address_line_1_ && + address_line_2_ == other.address_line_2_ && + locality_name_ == other.locality_name_ && + administrative_area_name_ == other.administrative_area_name_ && + postal_code_number_ == other.postal_code_number_ && + phone_number_ == other.phone_number_ && + object_id_ == other.object_id_; +} + +bool Address::operator!=(const Address& other) const { + return !(*this == other); +} + +} // namespace wallet + |