Index: chrome/browser/chromeos/arc/arc_android_management_checker.cc |
diff --git a/chrome/browser/chromeos/arc/arc_android_management_checker.cc b/chrome/browser/chromeos/arc/arc_android_management_checker.cc |
index 1bff14f9689852738e3579f450e92266dba8dcdd..fca4ff739842546b9663d232c4c78172980c22b5 100644 |
--- a/chrome/browser/chromeos/arc/arc_android_management_checker.cc |
+++ b/chrome/browser/chromeos/arc/arc_android_management_checker.cc |
@@ -13,10 +13,9 @@ |
#include "components/policy/core/common/cloud/device_management_service.h" |
#include "components/signin/core/browser/profile_oauth2_token_service.h" |
-namespace arc { |
- |
namespace { |
+constexpr int kRefreshTokenTimeoutMs = 10 * 1000; // 10 sec. |
constexpr int kRetryTimeMinMs = 10 * 1000; // 10 sec. |
constexpr int kRetryTimeMaxMs = 1 * 60 * 60 * 1000; // 1 hour. |
@@ -31,7 +30,7 @@ |
ArcAndroidManagementChecker::ArcAndroidManagementChecker( |
ArcAndroidManagementCheckerDelegate* delegate, |
ProfileOAuth2TokenService* token_service, |
- const std::string& account_id, |
+ const std::string account_id, |
bool background_mode) |
: delegate_(delegate), |
token_service_(token_service), |
@@ -46,8 +45,12 @@ |
if (token_service_->RefreshTokenIsAvailable(account_id_)) { |
StartCheck(); |
} else { |
- DCHECK(background_mode_); |
token_service_->AddObserver(this); |
+ if (!background_mode_) { |
+ refresh_token_timeout_.Start( |
+ FROM_HERE, base::TimeDelta::FromMilliseconds(kRefreshTokenTimeoutMs), |
+ this, &ArcAndroidManagementChecker::OnRefreshTokenTimeout); |
+ } |
} |
} |
@@ -68,6 +71,14 @@ |
} |
void ArcAndroidManagementChecker::OnRefreshTokensLoaded() { |
+ token_service_->RemoveObserver(this); |
+ refresh_token_timeout_.Stop(); |
+ StartCheck(); |
+} |
+ |
+void ArcAndroidManagementChecker::OnRefreshTokenTimeout() { |
+ DCHECK(!background_mode_); |
+ VLOG(2) << "Failed to wait for refresh token for android management check."; |
token_service_->RemoveObserver(this); |
StartCheck(); |
} |
@@ -120,5 +131,3 @@ |
FROM_HERE, base::Bind(&ArcAndroidManagementChecker::DispatchResult, |
weak_ptr_factory_.GetWeakPtr(), result)); |
} |
- |
-} // namespace arc |