• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
~GaiaAccount()14 GaiaAccount::~GaiaAccount() {}
15 
16 // static
Create(const base::DictionaryValue & dictionary)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
CreateForTesting(const std::string & email_address,const std::string & obfuscated_id,size_t index,bool is_active)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 
operator ==(const GaiaAccount & other) const63 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 
operator !=(const GaiaAccount & other) const70 bool GaiaAccount::operator!=(const GaiaAccount& other) const {
71   return !(*this == other);
72 }
73 
GaiaAccount(const std::string & email_address,const std::string & obfuscated_id,size_t index,bool is_active)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