| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/account_tracker.h" | 5 #include "google_apis/gaia/account_tracker.h" |
| 6 | 6 |
| 7 #include "base/debug/trace_event.h" | 7 #include "base/debug/trace_event.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/profiler/scoped_profile.h" | 9 #include "base/profiler/scoped_tracker.h" |
| 10 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
| 11 #include "net/url_request/url_request_context_getter.h" | 11 #include "net/url_request/url_request_context_getter.h" |
| 12 | 12 |
| 13 namespace gaia { | 13 namespace gaia { |
| 14 | 14 |
| 15 AccountTracker::AccountTracker( | 15 AccountTracker::AccountTracker( |
| 16 IdentityProvider* identity_provider, | 16 IdentityProvider* identity_provider, |
| 17 net::URLRequestContextGetter* request_context_getter) | 17 net::URLRequestContextGetter* request_context_getter) |
| 18 : identity_provider_(identity_provider), | 18 : identity_provider_(identity_provider), |
| 19 request_context_getter_(request_context_getter), | 19 request_context_getter_(request_context_getter), |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 78 const AccountState& state = it->second; | 78 const AccountState& state = it->second; |
| 79 if (state.ids.gaia == gaia_id) { | 79 if (state.ids.gaia == gaia_id) { |
| 80 return state.ids; | 80 return state.ids; |
| 81 } | 81 } |
| 82 } | 82 } |
| 83 | 83 |
| 84 return AccountIds(); | 84 return AccountIds(); |
| 85 } | 85 } |
| 86 | 86 |
| 87 void AccountTracker::OnRefreshTokenAvailable(const std::string& account_id) { | 87 void AccountTracker::OnRefreshTokenAvailable(const std::string& account_id) { |
| 88 // TODO(vadimt): Remove ScopedProfile below once crbug.com/422460 is fixed. | 88 // TODO(vadimt): Remove ScopedTracker below once crbug.com/422460 is fixed. |
| 89 tracked_objects::ScopedProfile tracking_profile( | 89 tracked_objects::ScopedTracker tracking_profile( |
| 90 FROM_HERE_WITH_EXPLICIT_FUNCTION( | 90 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 91 "422460 AccountTracker::OnRefreshTokenAvailable")); | 91 "422460 AccountTracker::OnRefreshTokenAvailable")); |
| 92 | 92 |
| 93 TRACE_EVENT1("identity", | 93 TRACE_EVENT1("identity", |
| 94 "AccountTracker::OnRefreshTokenAvailable", | 94 "AccountTracker::OnRefreshTokenAvailable", |
| 95 "account_key", | 95 "account_key", |
| 96 account_id); | 96 account_id); |
| 97 | 97 |
| 98 // Ignore refresh tokens if there is no active account ID at all. | 98 // Ignore refresh tokens if there is no active account ID at all. |
| 99 if (identity_provider_->GetActiveAccountId().empty()) | 99 if (identity_provider_->GetActiveAccountId().empty()) |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 Observer, observer_list_, OnAccountAdded(account.ids)); | 157 Observer, observer_list_, OnAccountAdded(account.ids)); |
| 158 } | 158 } |
| 159 | 159 |
| 160 void AccountTracker::NotifyAccountRemoved(const AccountState& account) { | 160 void AccountTracker::NotifyAccountRemoved(const AccountState& account) { |
| 161 DCHECK(!account.ids.gaia.empty()); | 161 DCHECK(!account.ids.gaia.empty()); |
| 162 FOR_EACH_OBSERVER( | 162 FOR_EACH_OBSERVER( |
| 163 Observer, observer_list_, OnAccountRemoved(account.ids)); | 163 Observer, observer_list_, OnAccountRemoved(account.ids)); |
| 164 } | 164 } |
| 165 | 165 |
| 166 void AccountTracker::NotifySignInChanged(const AccountState& account) { | 166 void AccountTracker::NotifySignInChanged(const AccountState& account) { |
| 167 // TODO(vadimt): Remove ScopedProfile below once crbug.com/422460 is fixed. | 167 // TODO(vadimt): Remove ScopedTracker below once crbug.com/422460 is fixed. |
| 168 tracked_objects::ScopedProfile tracking_profile( | 168 tracked_objects::ScopedTracker tracking_profile( |
| 169 FROM_HERE_WITH_EXPLICIT_FUNCTION( | 169 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 170 "422460 AccountTracker::NotifySignInChanged")); | 170 "422460 AccountTracker::NotifySignInChanged")); |
| 171 | 171 |
| 172 DCHECK(!account.ids.gaia.empty()); | 172 DCHECK(!account.ids.gaia.empty()); |
| 173 FOR_EACH_OBSERVER(Observer, | 173 FOR_EACH_OBSERVER(Observer, |
| 174 observer_list_, | 174 observer_list_, |
| 175 OnAccountSignInChanged(account.ids, account.is_signed_in)); | 175 OnAccountSignInChanged(account.ids, account.is_signed_in)); |
| 176 } | 176 } |
| 177 | 177 |
| 178 void AccountTracker::UpdateSignInState(const std::string account_key, | 178 void AccountTracker::UpdateSignInState(const std::string account_key, |
| 179 bool is_signed_in) { | 179 bool is_signed_in) { |
| 180 tracked_objects::ScopedProfile tracking_profile( | 180 tracked_objects::ScopedTracker tracking_profile( |
| 181 FROM_HERE_WITH_EXPLICIT_FUNCTION( | 181 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 182 "422460 AccountTracker::UpdateSignInState")); | 182 "422460 AccountTracker::UpdateSignInState")); |
| 183 | 183 |
| 184 StartTrackingAccount(account_key); | 184 StartTrackingAccount(account_key); |
| 185 AccountState& account = accounts_[account_key]; | 185 AccountState& account = accounts_[account_key]; |
| 186 bool needs_gaia_id = account.ids.gaia.empty(); | 186 bool needs_gaia_id = account.ids.gaia.empty(); |
| 187 bool was_signed_in = account.is_signed_in; | 187 bool was_signed_in = account.is_signed_in; |
| 188 account.is_signed_in = is_signed_in; | 188 account.is_signed_in = is_signed_in; |
| 189 | 189 |
| 190 if (needs_gaia_id && is_signed_in) | 190 if (needs_gaia_id && is_signed_in) |
| 191 StartFetchingUserInfo(account_key); | 191 StartFetchingUserInfo(account_key); |
| 192 | 192 |
| 193 if (!needs_gaia_id && (was_signed_in != is_signed_in)) | 193 if (!needs_gaia_id && (was_signed_in != is_signed_in)) |
| 194 NotifySignInChanged(account); | 194 NotifySignInChanged(account); |
| 195 } | 195 } |
| 196 | 196 |
| 197 void AccountTracker::StartTrackingAccount(const std::string account_key) { | 197 void AccountTracker::StartTrackingAccount(const std::string account_key) { |
| 198 // TODO(vadimt): Remove ScopedProfile below once crbug.com/422460 is fixed. | 198 // TODO(vadimt): Remove ScopedTracker below once crbug.com/422460 is fixed. |
| 199 tracked_objects::ScopedProfile tracking_profile( | 199 tracked_objects::ScopedTracker tracking_profile( |
| 200 FROM_HERE_WITH_EXPLICIT_FUNCTION( | 200 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 201 "422460 AccountTracker::StartTrackingAccount")); | 201 "422460 AccountTracker::StartTrackingAccount")); |
| 202 | 202 |
| 203 if (!ContainsKey(accounts_, account_key)) { | 203 if (!ContainsKey(accounts_, account_key)) { |
| 204 DVLOG(1) << "StartTracking " << account_key; | 204 DVLOG(1) << "StartTracking " << account_key; |
| 205 AccountState account_state; | 205 AccountState account_state; |
| 206 account_state.ids.account_key = account_key; | 206 account_state.ids.account_key = account_key; |
| 207 account_state.ids.email = account_key; | 207 account_state.ids.email = account_key; |
| 208 account_state.is_signed_in = false; | 208 account_state.is_signed_in = false; |
| 209 accounts_.insert(make_pair(account_key, account_state)); | 209 accounts_.insert(make_pair(account_key, account_state)); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 224 if (ContainsKey(user_info_requests_, account_key)) | 224 if (ContainsKey(user_info_requests_, account_key)) |
| 225 DeleteFetcher(user_info_requests_[account_key]); | 225 DeleteFetcher(user_info_requests_[account_key]); |
| 226 } | 226 } |
| 227 | 227 |
| 228 void AccountTracker::StopTrackingAllAccounts() { | 228 void AccountTracker::StopTrackingAllAccounts() { |
| 229 while (!accounts_.empty()) | 229 while (!accounts_.empty()) |
| 230 StopTrackingAccount(accounts_.begin()->first); | 230 StopTrackingAccount(accounts_.begin()->first); |
| 231 } | 231 } |
| 232 | 232 |
| 233 void AccountTracker::StartFetchingUserInfo(const std::string account_key) { | 233 void AccountTracker::StartFetchingUserInfo(const std::string account_key) { |
| 234 // TODO(vadimt): Remove ScopedProfile below once crbug.com/422460 is fixed. | 234 // TODO(vadimt): Remove ScopedTracker below once crbug.com/422460 is fixed. |
| 235 tracked_objects::ScopedProfile tracking_profile( | 235 tracked_objects::ScopedTracker tracking_profile( |
| 236 FROM_HERE_WITH_EXPLICIT_FUNCTION( | 236 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 237 "422460 AccountTracker::StartFetchingUserInfo")); | 237 "422460 AccountTracker::StartFetchingUserInfo")); |
| 238 | 238 |
| 239 if (ContainsKey(user_info_requests_, account_key)) | 239 if (ContainsKey(user_info_requests_, account_key)) |
| 240 DeleteFetcher(user_info_requests_[account_key]); | 240 DeleteFetcher(user_info_requests_[account_key]); |
| 241 | 241 |
| 242 DVLOG(1) << "StartFetching " << account_key; | 242 DVLOG(1) << "StartFetching " << account_key; |
| 243 AccountIdFetcher* fetcher = | 243 AccountIdFetcher* fetcher = |
| 244 new AccountIdFetcher(identity_provider_->GetTokenService(), | 244 new AccountIdFetcher(identity_provider_->GetTokenService(), |
| 245 request_context_getter_.get(), | 245 request_context_getter_.get(), |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 355 "AccountIdFetcher", | 355 "AccountIdFetcher", |
| 356 this, | 356 this, |
| 357 "OnNetworkError", | 357 "OnNetworkError", |
| 358 "response_code", | 358 "response_code", |
| 359 response_code); | 359 response_code); |
| 360 LOG(ERROR) << "OnNetworkError " << response_code; | 360 LOG(ERROR) << "OnNetworkError " << response_code; |
| 361 tracker_->OnUserInfoFetchFailure(this); | 361 tracker_->OnUserInfoFetchFailure(this); |
| 362 } | 362 } |
| 363 | 363 |
| 364 } // namespace gaia | 364 } // namespace gaia |
| OLD | NEW |