Index: components/signin/core/browser/account_fetcher_service.cc |
diff --git a/components/signin/core/browser/account_fetcher_service.cc b/components/signin/core/browser/account_fetcher_service.cc |
index 22c804f6b496723a0a935e75abe82b37765e7d51..2e42959389cde3eaf39a16ed8fad40f9df1d20db 100644 |
--- a/components/signin/core/browser/account_fetcher_service.cc |
+++ b/components/signin/core/browser/account_fetcher_service.cc |
@@ -55,6 +55,7 @@ AccountFetcherService::AccountFetcherService() |
invalidation_service_(nullptr), |
network_fetches_enabled_(false), |
shutdown_called_(false), |
+ refresh_required_on_load_(false), |
child_info_request_(nullptr) {} |
AccountFetcherService::~AccountFetcherService() { |
@@ -168,7 +169,10 @@ void AccountFetcherService::ScheduleNextRefresh() { |
const base::TimeDelta time_since_update = base::Time::Now() - last_updated_; |
if(time_since_update > kRefreshFromTokenServiceDelay) { |
- RefreshAllAccountsAndScheduleNext(); |
+ // The service is due for a refresh but the TokenService isn't ready at this |
+ // point so |refresh_required_on_load_| is set to make sure we update all |
+ // the accounts in OnRefreshTokensLoaded(). |
+ refresh_required_on_load_ = true; |
} else { |
timer_.Start(FROM_HERE, kRefreshFromTokenServiceDelay - time_since_update, |
this, |
@@ -317,6 +321,6 @@ void AccountFetcherService::OnRefreshTokenRevoked( |
void AccountFetcherService::OnRefreshTokensLoaded() { |
// OnRefreshTokenAvailable has been called for all accounts by this point. |
// Maybe remove this after further investigation. |
- RefreshAllAccountInfo(true); |
+ RefreshAllAccountInfo(!refresh_required_on_load_); |
UpdateChildInfo(); |
} |