Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1219)

Unified Diff: chrome/browser/extensions/api/identity/account_tracker.cc

Issue 274853002: Identity API: add chrome.identity.getAccounts (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/identity/account_tracker.cc
diff --git a/chrome/browser/extensions/api/identity/account_tracker.cc b/chrome/browser/extensions/api/identity/account_tracker.cc
index c372a0b27151768584b42dd8b817a21c461de067..fd0834ddc5b04d97ab00f3afeddfad7d9c455928 100644
--- a/chrome/browser/extensions/api/identity/account_tracker.cc
+++ b/chrome/browser/extensions/api/identity/account_tracker.cc
@@ -53,6 +53,30 @@ void AccountTracker::RemoveObserver(Observer* observer) {
observer_list_.RemoveObserver(observer);
}
+std::vector<AccountIds> AccountTracker::GetAccounts() const {
+ const std::string primary_account_id = signin_manager_account_id();
+ std::vector<AccountIds> accounts;
+
+ for (std::map<std::string, AccountState>::const_iterator it =
+ accounts_.begin();
+ it != accounts_.end();
+ ++it) {
+ const AccountState& state = it->second;
+ bool is_visible = state.is_signed_in && !state.ids.gaia.empty();
+
+ if (it->first == primary_account_id) {
+ if (is_visible)
+ accounts.insert(accounts.begin(), state.ids);
+ else
+ return std::vector<AccountIds>();
+
+ } else if (is_visible) {
+ accounts.push_back(state.ids);
+ }
+ }
+ return accounts;
+}
+
void AccountTracker::OnRefreshTokenAvailable(const std::string& account_id) {
// Ignore refresh tokens if there is no primary account ID at all.
if (signin_manager_account_id().empty())
@@ -89,7 +113,24 @@ void AccountTracker::GoogleSignedOut(const std::string& username) {
}
}
-const std::string AccountTracker::signin_manager_account_id() {
+void AccountTracker::SetAccountStateForTest(AccountIds ids, bool is_signed_in) {
+ accounts_[ids.account_key].ids = ids;
+ accounts_[ids.account_key].is_signed_in = is_signed_in;
+
+ DVLOG(1) << "SetAccountStateForTest " << ids.account_key << ":"
+ << is_signed_in;
+
+ if (VLOG_IS_ON(1)) {
+ for (std::map<std::string, AccountState>::const_iterator it =
+ accounts_.begin();
+ it != accounts_.end();
+ ++it) {
+ DVLOG(1) << it->first << ":" << it->second.is_signed_in;
+ }
+ }
+}
+
+const std::string AccountTracker::signin_manager_account_id() const {
return SigninManagerFactory::GetForProfile(profile_)
->GetAuthenticatedAccountId();
}

Powered by Google App Engine
This is Rietveld 408576698