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

Side by Side Diff: chrome/browser/sync_file_system/drive_backend/sync_engine.cc

Issue 110113003: SyncFS v2: Add re-initialization code for temporary service failure case (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: build fix Created 7 years 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/sync_file_system/drive_backend/sync_engine.h" 5 #include "chrome/browser/sync_file_system/drive_backend/sync_engine.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/threading/sequenced_worker_pool.h" 8 #include "base/threading/sequenced_worker_pool.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "chrome/browser/drive/drive_api_service.h" 10 #include "chrome/browser/drive/drive_api_service.h"
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 service_observers_.AddObserver(observer); 141 service_observers_.AddObserver(observer);
142 } 142 }
143 143
144 void SyncEngine::AddFileStatusObserver(FileStatusObserver* observer) { 144 void SyncEngine::AddFileStatusObserver(FileStatusObserver* observer) {
145 file_status_observers_.AddObserver(observer); 145 file_status_observers_.AddObserver(observer);
146 } 146 }
147 147
148 void SyncEngine::RegisterOrigin( 148 void SyncEngine::RegisterOrigin(
149 const GURL& origin, 149 const GURL& origin,
150 const SyncStatusCallback& callback) { 150 const SyncStatusCallback& callback) {
151 if (!metadata_database_ && drive_service_->HasRefreshToken())
152 PostInitializeTask();
153
151 task_manager_->ScheduleSyncTaskAtPriority( 154 task_manager_->ScheduleSyncTaskAtPriority(
152 scoped_ptr<SyncTask>(new RegisterAppTask(this, origin.host())), 155 scoped_ptr<SyncTask>(new RegisterAppTask(this, origin.host())),
153 SyncTaskManager::PRIORITY_HIGH, 156 SyncTaskManager::PRIORITY_HIGH,
154 callback); 157 callback);
155 } 158 }
156 159
157 void SyncEngine::EnableOrigin( 160 void SyncEngine::EnableOrigin(
158 const GURL& origin, 161 const GURL& origin,
159 const SyncStatusCallback& callback) { 162 const SyncStatusCallback& callback) {
160 task_manager_->ScheduleTaskAtPriority( 163 task_manager_->ScheduleTaskAtPriority(
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 if (metadata_database_) { 326 if (metadata_database_) {
324 FOR_EACH_OBSERVER( 327 FOR_EACH_OBSERVER(
325 Observer, 328 Observer,
326 service_observers_, 329 service_observers_,
327 OnRemoteChangeQueueUpdated( 330 OnRemoteChangeQueueUpdated(
328 metadata_database_->GetDirtyTrackerCount())); 331 metadata_database_->GetDirtyTrackerCount()));
329 } 332 }
330 } 333 }
331 334
332 void SyncEngine::OnNotificationReceived() { 335 void SyncEngine::OnNotificationReceived() {
336 if (service_state_ == REMOTE_SERVICE_TEMPORARY_UNAVAILABLE)
337 UpdateServiceState(REMOTE_SERVICE_OK, "Got push notification for Drive.");
338
333 should_check_remote_change_ = true; 339 should_check_remote_change_ = true;
334 MaybeScheduleNextTask(); 340 MaybeScheduleNextTask();
335 } 341 }
336 342
337 void SyncEngine::OnPushNotificationEnabled(bool enabled) {} 343 void SyncEngine::OnPushNotificationEnabled(bool enabled) {}
338 344
339 void SyncEngine::OnReadyToSendRequests() { 345 void SyncEngine::OnReadyToSendRequests() {
340 if (service_state_ == REMOTE_SERVICE_OK) 346 if (service_state_ == REMOTE_SERVICE_OK)
341 return; 347 return;
342 UpdateServiceState(REMOTE_SERVICE_OK, "Authenticated"); 348 UpdateServiceState(REMOTE_SERVICE_OK, "Authenticated");
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 void SyncEngine::PostInitializeTask() { 436 void SyncEngine::PostInitializeTask() {
431 DCHECK(!metadata_database_); 437 DCHECK(!metadata_database_);
432 438
433 // This initializer task may not run if metadata_database_ is already 439 // This initializer task may not run if metadata_database_ is already
434 // initialized when it runs. 440 // initialized when it runs.
435 SyncEngineInitializer* initializer = 441 SyncEngineInitializer* initializer =
436 new SyncEngineInitializer(this, 442 new SyncEngineInitializer(this,
437 task_runner_.get(), 443 task_runner_.get(),
438 drive_service_.get(), 444 drive_service_.get(),
439 base_dir_.Append(kDatabaseName)); 445 base_dir_.Append(kDatabaseName));
440 task_manager_->ScheduleSyncTask( 446 task_manager_->ScheduleSyncTaskAtPriority(
441 scoped_ptr<SyncTask>(initializer), 447 scoped_ptr<SyncTask>(initializer),
448 SyncTaskManager::PRIORITY_HIGH,
442 base::Bind(&SyncEngine::DidInitialize, weak_ptr_factory_.GetWeakPtr(), 449 base::Bind(&SyncEngine::DidInitialize, weak_ptr_factory_.GetWeakPtr(),
443 initializer)); 450 initializer));
444 } 451 }
445 452
446 void SyncEngine::DidInitialize(SyncEngineInitializer* initializer, 453 void SyncEngine::DidInitialize(SyncEngineInitializer* initializer,
447 SyncStatusCode status) { 454 SyncStatusCode status) {
448 if (status != SYNC_STATUS_OK) { 455 if (status != SYNC_STATUS_OK) {
449 if (drive_service_->HasRefreshToken()) { 456 if (drive_service_->HasRefreshToken()) {
450 UpdateServiceState(REMOTE_SERVICE_TEMPORARY_UNAVAILABLE, 457 UpdateServiceState(REMOTE_SERVICE_TEMPORARY_UNAVAILABLE,
451 "Could not initialize remote service"); 458 "Could not initialize remote service");
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
663 tracker.tracker_kind() == TRACKER_KIND_APP_ROOT; 670 tracker.tracker_kind() == TRACKER_KIND_APP_ROOT;
664 if (is_app_enabled && !is_app_root_tracker_enabled) 671 if (is_app_enabled && !is_app_root_tracker_enabled)
665 EnableOrigin(origin, base::Bind(&EmptyStatusCallback)); 672 EnableOrigin(origin, base::Bind(&EmptyStatusCallback));
666 else if (!is_app_enabled && is_app_root_tracker_enabled) 673 else if (!is_app_enabled && is_app_root_tracker_enabled)
667 DisableOrigin(origin, base::Bind(&EmptyStatusCallback)); 674 DisableOrigin(origin, base::Bind(&EmptyStatusCallback));
668 } 675 }
669 } 676 }
670 677
671 } // namespace drive_backend 678 } // namespace drive_backend
672 } // namespace sync_file_system 679 } // namespace sync_file_system
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698