| 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 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 const SyncStatusCallback& callback) { | 157 const SyncStatusCallback& callback) { |
| 158 if (!metadata_database_ && drive_service_->HasRefreshToken()) | 158 if (!metadata_database_ && drive_service_->HasRefreshToken()) |
| 159 PostInitializeTask(); | 159 PostInitializeTask(); |
| 160 | 160 |
| 161 scoped_ptr<RegisterAppTask> task(new RegisterAppTask(this, origin.host())); | 161 scoped_ptr<RegisterAppTask> task(new RegisterAppTask(this, origin.host())); |
| 162 if (task->CanFinishImmediately()) { | 162 if (task->CanFinishImmediately()) { |
| 163 callback.Run(SYNC_STATUS_OK); | 163 callback.Run(SYNC_STATUS_OK); |
| 164 return; | 164 return; |
| 165 } | 165 } |
| 166 | 166 |
| 167 task_manager_->ScheduleSyncTaskAtPriority( | 167 task_manager_->ScheduleSyncTask( |
| 168 FROM_HERE, | 168 FROM_HERE, |
| 169 task.PassAs<SyncTask>(), | 169 task.PassAs<SyncTask>(), |
| 170 SyncTaskManager::PRIORITY_HIGH, | 170 SyncTaskManager::PRIORITY_HIGH, |
| 171 callback); | 171 callback); |
| 172 } | 172 } |
| 173 | 173 |
| 174 void SyncEngine::EnableOrigin( | 174 void SyncEngine::EnableOrigin( |
| 175 const GURL& origin, | 175 const GURL& origin, |
| 176 const SyncStatusCallback& callback) { | 176 const SyncStatusCallback& callback) { |
| 177 task_manager_->ScheduleTaskAtPriority( | 177 task_manager_->ScheduleTask( |
| 178 FROM_HERE, | 178 FROM_HERE, |
| 179 base::Bind(&SyncEngine::DoEnableApp, | 179 base::Bind(&SyncEngine::DoEnableApp, |
| 180 weak_ptr_factory_.GetWeakPtr(), | 180 weak_ptr_factory_.GetWeakPtr(), |
| 181 origin.host()), | 181 origin.host()), |
| 182 SyncTaskManager::PRIORITY_HIGH, | 182 SyncTaskManager::PRIORITY_HIGH, |
| 183 callback); | 183 callback); |
| 184 } | 184 } |
| 185 | 185 |
| 186 void SyncEngine::DisableOrigin( | 186 void SyncEngine::DisableOrigin( |
| 187 const GURL& origin, | 187 const GURL& origin, |
| 188 const SyncStatusCallback& callback) { | 188 const SyncStatusCallback& callback) { |
| 189 task_manager_->ScheduleTaskAtPriority( | 189 task_manager_->ScheduleTask( |
| 190 FROM_HERE, | 190 FROM_HERE, |
| 191 base::Bind(&SyncEngine::DoDisableApp, | 191 base::Bind(&SyncEngine::DoDisableApp, |
| 192 weak_ptr_factory_.GetWeakPtr(), | 192 weak_ptr_factory_.GetWeakPtr(), |
| 193 origin.host()), | 193 origin.host()), |
| 194 SyncTaskManager::PRIORITY_HIGH, | 194 SyncTaskManager::PRIORITY_HIGH, |
| 195 callback); | 195 callback); |
| 196 } | 196 } |
| 197 | 197 |
| 198 void SyncEngine::UninstallOrigin( | 198 void SyncEngine::UninstallOrigin( |
| 199 const GURL& origin, | 199 const GURL& origin, |
| 200 UninstallFlag flag, | 200 UninstallFlag flag, |
| 201 const SyncStatusCallback& callback) { | 201 const SyncStatusCallback& callback) { |
| 202 task_manager_->ScheduleSyncTaskAtPriority( | 202 task_manager_->ScheduleSyncTask( |
| 203 FROM_HERE, | 203 FROM_HERE, |
| 204 scoped_ptr<SyncTask>(new UninstallAppTask(this, origin.host(), flag)), | 204 scoped_ptr<SyncTask>(new UninstallAppTask(this, origin.host(), flag)), |
| 205 SyncTaskManager::PRIORITY_HIGH, | 205 SyncTaskManager::PRIORITY_HIGH, |
| 206 callback); | 206 callback); |
| 207 } | 207 } |
| 208 | 208 |
| 209 void SyncEngine::ProcessRemoteChange( | 209 void SyncEngine::ProcessRemoteChange( |
| 210 const SyncFileCallback& callback) { | 210 const SyncFileCallback& callback) { |
| 211 RemoteToLocalSyncer* syncer = new RemoteToLocalSyncer(this); | 211 RemoteToLocalSyncer* syncer = new RemoteToLocalSyncer(this); |
| 212 task_manager_->ScheduleSyncTask( | 212 task_manager_->ScheduleSyncTask( |
| 213 FROM_HERE, | 213 FROM_HERE, |
| 214 scoped_ptr<SyncTask>(syncer), | 214 scoped_ptr<SyncTask>(syncer), |
| 215 SyncTaskManager::PRIORITY_MED, |
| 215 base::Bind(&SyncEngine::DidProcessRemoteChange, | 216 base::Bind(&SyncEngine::DidProcessRemoteChange, |
| 216 weak_ptr_factory_.GetWeakPtr(), | 217 weak_ptr_factory_.GetWeakPtr(), |
| 217 syncer, callback)); | 218 syncer, callback)); |
| 218 } | 219 } |
| 219 | 220 |
| 220 void SyncEngine::SetRemoteChangeProcessor( | 221 void SyncEngine::SetRemoteChangeProcessor( |
| 221 RemoteChangeProcessor* processor) { | 222 RemoteChangeProcessor* processor) { |
| 222 remote_change_processor_ = processor; | 223 remote_change_processor_ = processor; |
| 223 } | 224 } |
| 224 | 225 |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 337 const FileChange& local_change, | 338 const FileChange& local_change, |
| 338 const base::FilePath& local_path, | 339 const base::FilePath& local_path, |
| 339 const SyncFileMetadata& local_metadata, | 340 const SyncFileMetadata& local_metadata, |
| 340 const fileapi::FileSystemURL& url, | 341 const fileapi::FileSystemURL& url, |
| 341 const SyncStatusCallback& callback) { | 342 const SyncStatusCallback& callback) { |
| 342 LocalToRemoteSyncer* syncer = new LocalToRemoteSyncer( | 343 LocalToRemoteSyncer* syncer = new LocalToRemoteSyncer( |
| 343 this, local_metadata, local_change, local_path, url); | 344 this, local_metadata, local_change, local_path, url); |
| 344 task_manager_->ScheduleSyncTask( | 345 task_manager_->ScheduleSyncTask( |
| 345 FROM_HERE, | 346 FROM_HERE, |
| 346 scoped_ptr<SyncTask>(syncer), | 347 scoped_ptr<SyncTask>(syncer), |
| 348 SyncTaskManager::PRIORITY_MED, |
| 347 base::Bind(&SyncEngine::DidApplyLocalChange, | 349 base::Bind(&SyncEngine::DidApplyLocalChange, |
| 348 weak_ptr_factory_.GetWeakPtr(), | 350 weak_ptr_factory_.GetWeakPtr(), |
| 349 syncer, callback)); | 351 syncer, callback)); |
| 350 } | 352 } |
| 351 | 353 |
| 352 void SyncEngine::MaybeScheduleNextTask() { | 354 void SyncEngine::MaybeScheduleNextTask() { |
| 353 if (GetCurrentState() == REMOTE_SERVICE_DISABLED) | 355 if (GetCurrentState() == REMOTE_SERVICE_DISABLED) |
| 354 return; | 356 return; |
| 355 | 357 |
| 356 // TODO(tzik): Notify observer of OnRemoteChangeQueueUpdated. | 358 // TODO(tzik): Notify observer of OnRemoteChangeQueueUpdated. |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 490 DCHECK(!metadata_database_); | 492 DCHECK(!metadata_database_); |
| 491 | 493 |
| 492 // This initializer task may not run if metadata_database_ is already | 494 // This initializer task may not run if metadata_database_ is already |
| 493 // initialized when it runs. | 495 // initialized when it runs. |
| 494 SyncEngineInitializer* initializer = | 496 SyncEngineInitializer* initializer = |
| 495 new SyncEngineInitializer(this, | 497 new SyncEngineInitializer(this, |
| 496 task_runner_.get(), | 498 task_runner_.get(), |
| 497 drive_service_.get(), | 499 drive_service_.get(), |
| 498 base_dir_.Append(kDatabaseName), | 500 base_dir_.Append(kDatabaseName), |
| 499 env_override_); | 501 env_override_); |
| 500 task_manager_->ScheduleSyncTaskAtPriority( | 502 task_manager_->ScheduleSyncTask( |
| 501 FROM_HERE, | 503 FROM_HERE, |
| 502 scoped_ptr<SyncTask>(initializer), | 504 scoped_ptr<SyncTask>(initializer), |
| 503 SyncTaskManager::PRIORITY_HIGH, | 505 SyncTaskManager::PRIORITY_HIGH, |
| 504 base::Bind(&SyncEngine::DidInitialize, weak_ptr_factory_.GetWeakPtr(), | 506 base::Bind(&SyncEngine::DidInitialize, weak_ptr_factory_.GetWeakPtr(), |
| 505 initializer)); | 507 initializer)); |
| 506 } | 508 } |
| 507 | 509 |
| 508 void SyncEngine::DidInitialize(SyncEngineInitializer* initializer, | 510 void SyncEngine::DidInitialize(SyncEngineInitializer* initializer, |
| 509 SyncStatusCode status) { | 511 SyncStatusCode status) { |
| 510 if (status != SYNC_STATUS_OK) { | 512 if (status != SYNC_STATUS_OK) { |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 577 SYNC_DIRECTION_LOCAL_TO_REMOTE)); | 579 SYNC_DIRECTION_LOCAL_TO_REMOTE)); |
| 578 } | 580 } |
| 579 | 581 |
| 580 if (status == SYNC_STATUS_UNKNOWN_ORIGIN && syncer->url().is_valid()) { | 582 if (status == SYNC_STATUS_UNKNOWN_ORIGIN && syncer->url().is_valid()) { |
| 581 RegisterOrigin(syncer->url().origin(), | 583 RegisterOrigin(syncer->url().origin(), |
| 582 base::Bind(&EmptyStatusCallback)); | 584 base::Bind(&EmptyStatusCallback)); |
| 583 } | 585 } |
| 584 | 586 |
| 585 if (syncer->needs_remote_change_listing() && | 587 if (syncer->needs_remote_change_listing() && |
| 586 !listing_remote_changes_) { | 588 !listing_remote_changes_) { |
| 587 task_manager_->ScheduleSyncTaskAtPriority( | 589 task_manager_->ScheduleSyncTask( |
| 588 FROM_HERE, | 590 FROM_HERE, |
| 589 scoped_ptr<SyncTask>(new ListChangesTask(this)), | 591 scoped_ptr<SyncTask>(new ListChangesTask(this)), |
| 590 SyncTaskManager::PRIORITY_HIGH, | 592 SyncTaskManager::PRIORITY_HIGH, |
| 591 base::Bind(&SyncEngine::DidFetchChanges, | 593 base::Bind(&SyncEngine::DidFetchChanges, |
| 592 weak_ptr_factory_.GetWeakPtr())); | 594 weak_ptr_factory_.GetWeakPtr())); |
| 593 should_check_remote_change_ = false; | 595 should_check_remote_change_ = false; |
| 594 listing_remote_changes_ = true; | 596 listing_remote_changes_ = true; |
| 595 time_to_check_changes_ = | 597 time_to_check_changes_ = |
| 596 base::TimeTicks::Now() + | 598 base::TimeTicks::Now() + |
| 597 base::TimeDelta::FromSeconds(kListChangesRetryDelaySeconds); | 599 base::TimeDelta::FromSeconds(kListChangesRetryDelaySeconds); |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 753 tracker.tracker_kind() == TRACKER_KIND_APP_ROOT; | 755 tracker.tracker_kind() == TRACKER_KIND_APP_ROOT; |
| 754 if (is_app_enabled && !is_app_root_tracker_enabled) | 756 if (is_app_enabled && !is_app_root_tracker_enabled) |
| 755 EnableOrigin(origin, base::Bind(&EmptyStatusCallback)); | 757 EnableOrigin(origin, base::Bind(&EmptyStatusCallback)); |
| 756 else if (!is_app_enabled && is_app_root_tracker_enabled) | 758 else if (!is_app_enabled && is_app_root_tracker_enabled) |
| 757 DisableOrigin(origin, base::Bind(&EmptyStatusCallback)); | 759 DisableOrigin(origin, base::Bind(&EmptyStatusCallback)); |
| 758 } | 760 } |
| 759 } | 761 } |
| 760 | 762 |
| 761 } // namespace drive_backend | 763 } // namespace drive_backend |
| 762 } // namespace sync_file_system | 764 } // namespace sync_file_system |
| OLD | NEW |