Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "google_apis/gaia/gaia_auth_util.h" | 5 #include "google_apis/gaia/gaia_auth_util.h" |
| 6 | 6 |
| 7 #include "base/json/json_reader.h" | 7 #include "base/json/json_reader.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/strings/string_split.h" | 9 #include "base/strings/string_split.h" |
| 10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 36 base::RemoveChars(parts[0], ".", &parts[0]); | 36 base::RemoveChars(parts[0], ".", &parts[0]); |
| 37 } | 37 } |
| 38 | 38 |
| 39 std::string new_email = base::StringToLowerASCII(JoinString(parts, at)); | 39 std::string new_email = base::StringToLowerASCII(JoinString(parts, at)); |
| 40 VLOG(1) << "Canonicalized " << email_address << " to " << new_email; | 40 VLOG(1) << "Canonicalized " << email_address << " to " << new_email; |
| 41 return new_email; | 41 return new_email; |
| 42 } | 42 } |
| 43 | 43 |
| 44 } // namespace | 44 } // namespace |
| 45 | 45 |
| 46 | |
| 47 ListedAccount::ListedAccount() {} | |
| 48 | |
| 49 ListedAccount::~ListedAccount() {} | |
| 50 | |
| 51 bool ListedAccount::operator==(const ListedAccount& other) const { | |
| 52 return email == other.email && | |
| 53 gaia_id == other.gaia_id && | |
| 54 valid == other.valid && | |
| 55 raw_email == other.raw_email; | |
|
Roger Tawa OOO till Jul 10th
2015/06/02 21:58:42
Do we need to check all fields? Should be enough
| |
| 56 } | |
| 57 | |
| 46 std::string CanonicalizeEmail(const std::string& email_address) { | 58 std::string CanonicalizeEmail(const std::string& email_address) { |
| 47 // CanonicalizeEmail() is called to process email strings that are eventually | 59 // CanonicalizeEmail() is called to process email strings that are eventually |
| 48 // shown to the user, and may also be used in persisting email strings. To | 60 // shown to the user, and may also be used in persisting email strings. To |
| 49 // avoid breaking this existing behavior, this function will not try to | 61 // avoid breaking this existing behavior, this function will not try to |
| 50 // change googlemail to gmail. | 62 // change googlemail to gmail. |
| 51 return CanonicalizeEmailImpl(email_address, false); | 63 return CanonicalizeEmailImpl(email_address, false); |
| 52 } | 64 } |
| 53 | 65 |
| 54 std::string CanonicalizeDomain(const std::string& domain) { | 66 std::string CanonicalizeDomain(const std::string& domain) { |
| 55 // Canonicalization of domain names means lower-casing them. Make sure to | 67 // Canonicalization of domain names means lower-casing them. Make sure to |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 87 | 99 |
| 88 bool IsGaiaSignonRealm(const GURL& url) { | 100 bool IsGaiaSignonRealm(const GURL& url) { |
| 89 if (!url.SchemeIsCryptographic()) | 101 if (!url.SchemeIsCryptographic()) |
| 90 return false; | 102 return false; |
| 91 | 103 |
| 92 return url == GaiaUrls::GetInstance()->gaia_url(); | 104 return url == GaiaUrls::GetInstance()->gaia_url(); |
| 93 } | 105 } |
| 94 | 106 |
| 95 | 107 |
| 96 bool ParseListAccountsData( | 108 bool ParseListAccountsData( |
| 97 const std::string& data, | 109 const std::string& data, std::vector<ListedAccount>* accounts) { |
| 98 std::vector<std::pair<std::string, bool> >* accounts) { | |
| 99 accounts->clear(); | 110 accounts->clear(); |
| 100 | 111 |
| 101 // Parse returned data and make sure we have data. | 112 // Parse returned data and make sure we have data. |
| 102 scoped_ptr<base::Value> value = base::JSONReader::Read(data); | 113 scoped_ptr<base::Value> value = base::JSONReader::Read(data); |
| 103 if (!value) | 114 if (!value) |
| 104 return false; | 115 return false; |
| 105 | 116 |
| 106 base::ListValue* list; | 117 base::ListValue* list; |
| 107 if (!value->GetAsList(&list) || list->GetSize() < 2) | 118 if (!value->GetAsList(&list) || list->GetSize() < 2) |
| 108 return false; | 119 return false; |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 121 // Canonicalize the email since ListAccounts returns "display email". | 132 // Canonicalize the email since ListAccounts returns "display email". |
| 122 if (account->GetString(3, &email) && !email.empty()) { | 133 if (account->GetString(3, &email) && !email.empty()) { |
| 123 // New version if ListAccounts indicates whether the email's session | 134 // New version if ListAccounts indicates whether the email's session |
| 124 // is still valid or not. If this value is present and false, assume | 135 // is still valid or not. If this value is present and false, assume |
| 125 // its invalid. Otherwise assume it's valid to remain compatible with | 136 // its invalid. Otherwise assume it's valid to remain compatible with |
| 126 // old version. | 137 // old version. |
| 127 int is_email_valid = 1; | 138 int is_email_valid = 1; |
| 128 if (!account->GetInteger(9, &is_email_valid)) | 139 if (!account->GetInteger(9, &is_email_valid)) |
| 129 is_email_valid = 1; | 140 is_email_valid = 1; |
| 130 | 141 |
| 131 accounts->push_back( | 142 std::string gaia_id; |
| 132 std::make_pair(CanonicalizeEmail(email), is_email_valid != 0)); | 143 // ListAccounts must also return the Gaia Id. |
| 144 if (account->GetString(10, &gaia_id) && !gaia_id.empty()) { | |
| 145 ListedAccount listed_account; | |
| 146 listed_account.email = CanonicalizeEmail(email); | |
| 147 listed_account.gaia_id = gaia_id; | |
| 148 listed_account.valid = is_email_valid != 0; | |
| 149 listed_account.raw_email = email; | |
| 150 accounts->push_back(listed_account); | |
| 151 } | |
| 133 } | 152 } |
| 134 } | 153 } |
| 135 } | 154 } |
| 136 | 155 |
| 137 return true; | 156 return true; |
| 138 } | 157 } |
| 139 | 158 |
| 140 } // namespace gaia | 159 } // namespace gaia |
| OLD | NEW |