// 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/gaia_account.h" #include "base/logging.h" #include "base/values.h" namespace autofill { namespace wallet { GaiaAccount::~GaiaAccount() {} // static scoped_ptr GaiaAccount::Create( const base::DictionaryValue& dictionary) { std::string email_address; if (!dictionary.GetString("buyer_email", &email_address)) { DLOG(ERROR) << "GAIA account: missing email address"; return scoped_ptr(); } std::string obfuscated_id; if (!dictionary.GetString("gaia_id", &obfuscated_id)) { DLOG(ERROR) << "GAIA account: missing GAIA id"; return scoped_ptr(); } int index = 0; if (!dictionary.GetInteger("gaia_index", &index) || index < 0) { DLOG(ERROR) << "GAIA account: missing or bad GAIA index"; return scoped_ptr(); } bool is_active = false; if (!dictionary.GetBoolean("is_active", &is_active)) { DLOG(ERROR) << "GAIA account: missing is_active"; return scoped_ptr(); } return scoped_ptr(new GaiaAccount(email_address, obfuscated_id, index, is_active)); } // static scoped_ptr GaiaAccount::CreateForTesting( const std::string& email_address, const std::string& obfuscated_id, size_t index, bool is_active) { scoped_ptr account(new GaiaAccount(email_address, obfuscated_id, index, is_active)); return account.Pass(); } bool GaiaAccount::operator==(const GaiaAccount& other) const { return email_address_ == other.email_address_ && obfuscated_id_ == other.obfuscated_id_ && index_ == other.index_ && is_active_ == other.is_active_; } bool GaiaAccount::operator!=(const GaiaAccount& other) const { return !(*this == other); } GaiaAccount::GaiaAccount(const std::string& email_address, const std::string& obfuscated_id, size_t index, bool is_active) : email_address_(email_address), obfuscated_id_(obfuscated_id), index_(index), is_active_(is_active) {} } // namespace wallet } // namespace autofill