OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |