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

Unified Diff: chrome/browser/chromeos/arc/arc_auth_context.cc

Issue 2752873002: Fix refresh token is not available after Chrome restart on crash. (Closed)
Patch Set: Created 3 years, 9 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/chromeos/arc/arc_auth_context.cc
diff --git a/chrome/browser/chromeos/arc/arc_auth_context.cc b/chrome/browser/chromeos/arc/arc_auth_context.cc
index dc0e829e1a4b82b2e991210c4d8abf63a6292819..f390168d206ef58b82bbd58f27031402f8d6bed9 100644
--- a/chrome/browser/chromeos/arc/arc_auth_context.cc
+++ b/chrome/browser/chromeos/arc/arc_auth_context.cc
@@ -27,21 +27,18 @@ constexpr base::TimeDelta kRefreshTokenTimeout =
} // namespace
-ArcAuthContext::ArcAuthContext(Profile* profile) {
+ArcAuthContext::ArcAuthContext(Profile* profile) : profile_(profile) {
// Reuse storage used in ARC OptIn platform app.
const std::string site_url = base::StringPrintf(
"%s://%s/persist?%s", content::kGuestScheme, ArcSupportHost::kHostAppId,
ArcSupportHost::kStorageId);
storage_partition_ = content::BrowserContext::GetStoragePartitionForSite(
- profile, GURL(site_url));
+ profile_, GURL(site_url));
CHECK(storage_partition_);
// Get token service and account ID to fetch auth tokens.
- token_service_ = ProfileOAuth2TokenServiceFactory::GetForProfile(profile);
- const SigninManagerBase* const signin_manager =
- SigninManagerFactory::GetForProfile(profile);
- CHECK(token_service_ && signin_manager);
- account_id_ = signin_manager->GetAuthenticatedAccountId();
khmel 2017/03/15 18:12:22 This is race condition on Chrome restart on crash.
xiyuan 2017/03/15 19:34:30 Not sure I understand why there is a race. SigninM
khmel 2017/03/15 19:39:05 InitProfilePreferences is not called in case of cr
xiyuan 2017/03/15 19:53:16 InitProfilePreferences stores the info in SigninMa
khmel 2017/03/16 02:07:24 So, I investigated this case and can confirm my su
xiyuan 2017/03/16 04:37:42 Thanks for looking into this. I would prefer to a
khmel 2017/03/16 15:41:42 Yes, this works.
+ token_service_ = ProfileOAuth2TokenServiceFactory::GetForProfile(profile_);
+ CHECK(token_service_);
}
ArcAuthContext::~ArcAuthContext() {
@@ -54,6 +51,12 @@ void ArcAuthContext::Prepare(const PrepareCallback& callback) {
return;
}
+ const SigninManagerBase* const signin_manager =
+ SigninManagerFactory::GetForProfile(profile_);
+ CHECK(signin_manager);
+ account_id_ = signin_manager->GetAuthenticatedAccountId();
+ DCHECK(!account_id_.empty());
+
callback_ = callback;
token_service_->RemoveObserver(this);
refresh_token_timeout_.Stop();
« no previous file with comments | « chrome/browser/chromeos/arc/arc_auth_context.h ('k') | chrome/browser/chromeos/login/session/user_session_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698