Index: chrome/browser/sync_file_system/drive_backend/sync_worker.cc |
diff --git a/chrome/browser/sync_file_system/drive_backend/sync_worker.cc b/chrome/browser/sync_file_system/drive_backend/sync_worker.cc |
index 884198940690157003b4fb00b99e3db75dec4842..6a95d61f583ca88bc46c9b6b3514c29fc82376e8 100644 |
--- a/chrome/browser/sync_file_system/drive_backend/sync_worker.cc |
+++ b/chrome/browser/sync_file_system/drive_backend/sync_worker.cc |
@@ -102,6 +102,7 @@ SyncWorker::SyncWorker( |
network_available_(false), |
extension_service_(extension_service), |
context_(sync_engine_context.Pass()), |
+ has_refresh_token_(false), |
weak_ptr_factory_(this) {} |
SyncWorker::~SyncWorker() {} |
@@ -124,7 +125,7 @@ void SyncWorker::Initialize() { |
void SyncWorker::RegisterOrigin( |
const GURL& origin, |
const SyncStatusCallback& callback) { |
- if (!GetMetadataDatabase() && GetDriveService()->HasRefreshToken()) |
+ if (!GetMetadataDatabase() && has_refresh_token_) |
PostInitializeTask(); |
scoped_ptr<RegisterAppTask> task( |
@@ -346,6 +347,7 @@ void SyncWorker::OnNotificationReceived() { |
} |
void SyncWorker::OnReadyToSendRequests(const std::string& account_id) { |
+ has_refresh_token_ = true; |
if (service_state_ == REMOTE_SERVICE_OK) |
return; |
UpdateServiceState(REMOTE_SERVICE_OK, "Authenticated"); |
@@ -361,6 +363,8 @@ void SyncWorker::OnReadyToSendRequests(const std::string& account_id) { |
} |
void SyncWorker::OnRefreshTokenInvalid() { |
+ has_refresh_token_ = false; |
+ |
UpdateServiceState( |
REMOTE_SERVICE_AUTHENTICATION_REQUIRED, |
"Found invalid refresh token."); |
@@ -442,7 +446,7 @@ void SyncWorker::PostInitializeTask() { |
void SyncWorker::DidInitialize(SyncEngineInitializer* initializer, |
SyncStatusCode status) { |
if (status != SYNC_STATUS_OK) { |
- if (GetDriveService()->HasRefreshToken()) { |
+ if (has_refresh_token_) { |
UpdateServiceState(REMOTE_SERVICE_TEMPORARY_UNAVAILABLE, |
"Could not initialize remote service"); |
} else { |
@@ -671,7 +675,7 @@ void SyncWorker::UpdateServiceStateFromSyncStatusCode( |
case SYNC_STATUS_NETWORK_ERROR: |
case SYNC_STATUS_ABORT: |
case SYNC_STATUS_FAILED: |
- if (GetDriveService()->HasRefreshToken()) { |
+ if (has_refresh_token_) { |
UpdateServiceState(REMOTE_SERVICE_TEMPORARY_UNAVAILABLE, |
"Network or temporary service error."); |
} else { |