Commit 433ee094 authored by Muyuan Li's avatar Muyuan Li Committed by Commit Bot

assistant: retry retrieving primary account info when failed.

Bug: b/78943493
Test: Manual
Change-Id: I571c310f4ff49902a52c10e978ea13add1ebe74d
Reviewed-on: https://chromium-review.googlesource.com/1098032Reviewed-by: default avatarXiaohui Chen <xiaohuic@chromium.org>
Commit-Queue: Muyuan Li <muyuanli@chromium.org>
Cr-Commit-Position: refs/heads/master@{#566661}
parent 7456eb31
......@@ -173,11 +173,25 @@ identity::mojom::IdentityManager* Service::GetIdentityManager() {
return identity_manager_.get();
}
void Service::RetryRefreshToken() {
base::TimeDelta backoff_delay =
std::min(kMinTokenRefreshDelay *
(1 << (token_refresh_error_backoff_factor - 1)),
kMaxTokenRefreshDelay) +
base::RandDouble() * kMinTokenRefreshDelay;
if (backoff_delay < kMaxTokenRefreshDelay)
++token_refresh_error_backoff_factor;
token_refresh_timer_->Start(FROM_HERE, backoff_delay, this,
&Service::RequestAccessToken);
}
void Service::GetPrimaryAccountInfoCallback(
const base::Optional<AccountInfo>& account_info,
const identity::AccountState& account_state) {
if (!account_info.has_value() || !account_state.has_refresh_token ||
account_info.value().gaia.empty()) {
LOG(ERROR) << "Failed to retrieve primary account info.";
RetryRefreshToken();
return;
}
account_id_ = AccountId::FromUserEmailGaiaId(account_info.value().email,
......@@ -195,17 +209,7 @@ void Service::GetAccessTokenCallback(const base::Optional<std::string>& token,
const GoogleServiceAuthError& error) {
if (!token.has_value()) {
LOG(ERROR) << "Failed to retrieve token, error: " << error.ToString();
base::TimeDelta backoff_delay =
std::min(kMinTokenRefreshDelay *
(1 << (token_refresh_error_backoff_factor - 1)),
kMaxTokenRefreshDelay) +
base::RandDouble() * kMinTokenRefreshDelay;
if (backoff_delay < kMaxTokenRefreshDelay)
++token_refresh_error_backoff_factor;
token_refresh_timer_->Start(FROM_HERE, backoff_delay, this,
&Service::RequestAccessToken);
RetryRefreshToken();
return;
}
......
......@@ -96,6 +96,8 @@ class Service : public service_manager::Service,
void FinalizeAssistantManagerService();
void RetryRefreshToken();
service_manager::BinderRegistry registry_;
mojo::BindingSet<mojom::Assistant> bindings_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment