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 10 namespace autofill { 11 12 namespace wallet { 13 14 GaiaAccount::~GaiaAccount() {} 15 16 // static 17 scoped_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 51 scoped_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 63 bool 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 70 bool GaiaAccount::operator!=(const GaiaAccount& other) const { 71 return !(*this == other); 72 } 73 74 GaiaAccount::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