1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "components/autofill/content/browser/wallet/gaia_account.h" 6 7#include "base/logging.h" 8#include "base/values.h" 9 10namespace autofill { 11 12namespace wallet { 13 14GaiaAccount::~GaiaAccount() {} 15 16// static 17scoped_ptr<GaiaAccount> GaiaAccount::Create( 18 const base::DictionaryValue& dictionary) { 19 std::string email_address; 20 if (!dictionary.GetString("buyer_email", &email_address)) { 21 DLOG(ERROR) << "GAIA account: missing email address"; 22 return scoped_ptr<GaiaAccount>(); 23 } 24 25 std::string obfuscated_id; 26 if (!dictionary.GetString("gaia_id", &obfuscated_id)) { 27 DLOG(ERROR) << "GAIA account: missing GAIA id"; 28 return scoped_ptr<GaiaAccount>(); 29 } 30 31 int index = 0; 32 if (!dictionary.GetInteger("gaia_index", &index) || 33 index < 0) { 34 DLOG(ERROR) << "GAIA account: missing or bad GAIA index"; 35 return scoped_ptr<GaiaAccount>(); 36 } 37 38 bool is_active = false; 39 if (!dictionary.GetBoolean("is_active", &is_active)) { 40 DLOG(ERROR) << "GAIA account: missing is_active"; 41 return scoped_ptr<GaiaAccount>(); 42 } 43 44 return scoped_ptr<GaiaAccount>(new GaiaAccount(email_address, 45 obfuscated_id, 46 index, 47 is_active)); 48} 49 50// static 51scoped_ptr<GaiaAccount> GaiaAccount::CreateForTesting( 52 const std::string& email_address, 53 const std::string& obfuscated_id, 54 size_t index, 55 bool is_active) { 56 scoped_ptr<GaiaAccount> account(new GaiaAccount(email_address, 57 obfuscated_id, 58 index, 59 is_active)); 60 return account.Pass(); 61} 62 63bool GaiaAccount::operator==(const GaiaAccount& other) const { 64 return email_address_ == other.email_address_ && 65 obfuscated_id_ == other.obfuscated_id_ && 66 index_ == other.index_ && 67 is_active_ == other.is_active_; 68} 69 70bool GaiaAccount::operator!=(const GaiaAccount& other) const { 71 return !(*this == other); 72} 73 74GaiaAccount::GaiaAccount(const std::string& email_address, 75 const std::string& obfuscated_id, 76 size_t index, 77 bool is_active) 78 : email_address_(email_address), 79 obfuscated_id_(obfuscated_id), 80 index_(index), 81 is_active_(is_active) {} 82 83} // namespace wallet 84 85} // namespace autofill 86