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 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
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_->ScheduleSyncTaskAtPriority( |
168 task.PassAs<SyncTask>(), SyncTaskManager::PRIORITY_HIGH, callback); | 168 FROM_HERE, task.PassAs<SyncTask>(), SyncTaskManager::PRIORITY_HIGH, |
nhiroki
2014/03/07 07:12:03
style-nit: can you have a line-break per each argu
tzik
2014/03/07 09:38:11
Done.
| |
169 callback); | |
169 } | 170 } |
170 | 171 |
171 void SyncEngine::EnableOrigin( | 172 void SyncEngine::EnableOrigin( |
172 const GURL& origin, | 173 const GURL& origin, |
173 const SyncStatusCallback& callback) { | 174 const SyncStatusCallback& callback) { |
174 task_manager_->ScheduleTaskAtPriority( | 175 task_manager_->ScheduleTaskAtPriority( |
176 FROM_HERE, | |
175 base::Bind(&SyncEngine::DoEnableApp, | 177 base::Bind(&SyncEngine::DoEnableApp, |
176 weak_ptr_factory_.GetWeakPtr(), | 178 weak_ptr_factory_.GetWeakPtr(), |
177 origin.host()), | 179 origin.host()), |
178 SyncTaskManager::PRIORITY_HIGH, | 180 SyncTaskManager::PRIORITY_HIGH, |
179 callback); | 181 callback); |
180 } | 182 } |
181 | 183 |
182 void SyncEngine::DisableOrigin( | 184 void SyncEngine::DisableOrigin( |
183 const GURL& origin, | 185 const GURL& origin, |
184 const SyncStatusCallback& callback) { | 186 const SyncStatusCallback& callback) { |
185 task_manager_->ScheduleTaskAtPriority( | 187 task_manager_->ScheduleTaskAtPriority( |
188 FROM_HERE, | |
186 base::Bind(&SyncEngine::DoDisableApp, | 189 base::Bind(&SyncEngine::DoDisableApp, |
187 weak_ptr_factory_.GetWeakPtr(), | 190 weak_ptr_factory_.GetWeakPtr(), |
188 origin.host()), | 191 origin.host()), |
189 SyncTaskManager::PRIORITY_HIGH, | 192 SyncTaskManager::PRIORITY_HIGH, |
190 callback); | 193 callback); |
191 } | 194 } |
192 | 195 |
193 void SyncEngine::UninstallOrigin( | 196 void SyncEngine::UninstallOrigin( |
194 const GURL& origin, | 197 const GURL& origin, |
195 UninstallFlag flag, | 198 UninstallFlag flag, |
196 const SyncStatusCallback& callback) { | 199 const SyncStatusCallback& callback) { |
197 task_manager_->ScheduleSyncTaskAtPriority( | 200 task_manager_->ScheduleSyncTaskAtPriority( |
201 FROM_HERE, | |
198 scoped_ptr<SyncTask>(new UninstallAppTask(this, origin.host(), flag)), | 202 scoped_ptr<SyncTask>(new UninstallAppTask(this, origin.host(), flag)), |
199 SyncTaskManager::PRIORITY_HIGH, | 203 SyncTaskManager::PRIORITY_HIGH, |
200 callback); | 204 callback); |
201 } | 205 } |
202 | 206 |
203 void SyncEngine::ProcessRemoteChange( | 207 void SyncEngine::ProcessRemoteChange( |
204 const SyncFileCallback& callback) { | 208 const SyncFileCallback& callback) { |
205 RemoteToLocalSyncer* syncer = new RemoteToLocalSyncer(this); | 209 RemoteToLocalSyncer* syncer = new RemoteToLocalSyncer(this); |
206 task_manager_->ScheduleSyncTask( | 210 task_manager_->ScheduleSyncTask( |
211 FROM_HERE, | |
207 scoped_ptr<SyncTask>(syncer), | 212 scoped_ptr<SyncTask>(syncer), |
208 base::Bind(&SyncEngine::DidProcessRemoteChange, | 213 base::Bind(&SyncEngine::DidProcessRemoteChange, |
209 weak_ptr_factory_.GetWeakPtr(), | 214 weak_ptr_factory_.GetWeakPtr(), |
210 syncer, callback)); | 215 syncer, callback)); |
211 } | 216 } |
212 | 217 |
213 void SyncEngine::SetRemoteChangeProcessor( | 218 void SyncEngine::SetRemoteChangeProcessor( |
214 RemoteChangeProcessor* processor) { | 219 RemoteChangeProcessor* processor) { |
215 remote_change_processor_ = processor; | 220 remote_change_processor_ = processor; |
216 } | 221 } |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
328 | 333 |
329 void SyncEngine::ApplyLocalChange( | 334 void SyncEngine::ApplyLocalChange( |
330 const FileChange& local_change, | 335 const FileChange& local_change, |
331 const base::FilePath& local_path, | 336 const base::FilePath& local_path, |
332 const SyncFileMetadata& local_metadata, | 337 const SyncFileMetadata& local_metadata, |
333 const fileapi::FileSystemURL& url, | 338 const fileapi::FileSystemURL& url, |
334 const SyncStatusCallback& callback) { | 339 const SyncStatusCallback& callback) { |
335 LocalToRemoteSyncer* syncer = new LocalToRemoteSyncer( | 340 LocalToRemoteSyncer* syncer = new LocalToRemoteSyncer( |
336 this, local_metadata, local_change, local_path, url); | 341 this, local_metadata, local_change, local_path, url); |
337 task_manager_->ScheduleSyncTask( | 342 task_manager_->ScheduleSyncTask( |
343 FROM_HERE, | |
338 scoped_ptr<SyncTask>(syncer), | 344 scoped_ptr<SyncTask>(syncer), |
339 base::Bind(&SyncEngine::DidApplyLocalChange, | 345 base::Bind(&SyncEngine::DidApplyLocalChange, |
340 weak_ptr_factory_.GetWeakPtr(), | 346 weak_ptr_factory_.GetWeakPtr(), |
341 syncer, callback)); | 347 syncer, callback)); |
342 } | 348 } |
343 | 349 |
344 void SyncEngine::MaybeScheduleNextTask() { | 350 void SyncEngine::MaybeScheduleNextTask() { |
345 if (GetCurrentState() == REMOTE_SERVICE_DISABLED) | 351 if (GetCurrentState() == REMOTE_SERVICE_DISABLED) |
346 return; | 352 return; |
347 | 353 |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
483 | 489 |
484 // This initializer task may not run if metadata_database_ is already | 490 // This initializer task may not run if metadata_database_ is already |
485 // initialized when it runs. | 491 // initialized when it runs. |
486 SyncEngineInitializer* initializer = | 492 SyncEngineInitializer* initializer = |
487 new SyncEngineInitializer(this, | 493 new SyncEngineInitializer(this, |
488 task_runner_.get(), | 494 task_runner_.get(), |
489 drive_service_.get(), | 495 drive_service_.get(), |
490 base_dir_.Append(kDatabaseName), | 496 base_dir_.Append(kDatabaseName), |
491 env_override_); | 497 env_override_); |
492 task_manager_->ScheduleSyncTaskAtPriority( | 498 task_manager_->ScheduleSyncTaskAtPriority( |
499 FROM_HERE, | |
493 scoped_ptr<SyncTask>(initializer), | 500 scoped_ptr<SyncTask>(initializer), |
494 SyncTaskManager::PRIORITY_HIGH, | 501 SyncTaskManager::PRIORITY_HIGH, |
495 base::Bind(&SyncEngine::DidInitialize, weak_ptr_factory_.GetWeakPtr(), | 502 base::Bind(&SyncEngine::DidInitialize, weak_ptr_factory_.GetWeakPtr(), |
496 initializer)); | 503 initializer)); |
497 } | 504 } |
498 | 505 |
499 void SyncEngine::DidInitialize(SyncEngineInitializer* initializer, | 506 void SyncEngine::DidInitialize(SyncEngineInitializer* initializer, |
500 SyncStatusCode status) { | 507 SyncStatusCode status) { |
501 if (status != SYNC_STATUS_OK) { | 508 if (status != SYNC_STATUS_OK) { |
502 if (drive_service_->HasRefreshToken()) { | 509 if (drive_service_->HasRefreshToken()) { |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
569 } | 576 } |
570 | 577 |
571 if (status == SYNC_STATUS_UNKNOWN_ORIGIN && syncer->url().is_valid()) { | 578 if (status == SYNC_STATUS_UNKNOWN_ORIGIN && syncer->url().is_valid()) { |
572 RegisterOrigin(syncer->url().origin(), | 579 RegisterOrigin(syncer->url().origin(), |
573 base::Bind(&EmptyStatusCallback)); | 580 base::Bind(&EmptyStatusCallback)); |
574 } | 581 } |
575 | 582 |
576 if (syncer->needs_remote_change_listing() && | 583 if (syncer->needs_remote_change_listing() && |
577 !listing_remote_changes_) { | 584 !listing_remote_changes_) { |
578 task_manager_->ScheduleSyncTaskAtPriority( | 585 task_manager_->ScheduleSyncTaskAtPriority( |
586 FROM_HERE, | |
579 scoped_ptr<SyncTask>(new ListChangesTask(this)), | 587 scoped_ptr<SyncTask>(new ListChangesTask(this)), |
580 SyncTaskManager::PRIORITY_HIGH, | 588 SyncTaskManager::PRIORITY_HIGH, |
581 base::Bind(&SyncEngine::DidFetchChanges, | 589 base::Bind(&SyncEngine::DidFetchChanges, |
582 weak_ptr_factory_.GetWeakPtr())); | 590 weak_ptr_factory_.GetWeakPtr())); |
583 should_check_remote_change_ = false; | 591 should_check_remote_change_ = false; |
584 listing_remote_changes_ = true; | 592 listing_remote_changes_ = true; |
585 time_to_check_changes_ = | 593 time_to_check_changes_ = |
586 base::TimeTicks::Now() + | 594 base::TimeTicks::Now() + |
587 base::TimeDelta::FromSeconds(kListChangesRetryDelaySeconds); | 595 base::TimeDelta::FromSeconds(kListChangesRetryDelaySeconds); |
588 } | 596 } |
(...skipping 18 matching lines...) Expand all Loading... | |
607 return; | 615 return; |
608 | 616 |
609 if (listing_remote_changes_) | 617 if (listing_remote_changes_) |
610 return; | 618 return; |
611 | 619 |
612 base::TimeTicks now = base::TimeTicks::Now(); | 620 base::TimeTicks now = base::TimeTicks::Now(); |
613 if (!should_check_remote_change_ && now < time_to_check_changes_) { | 621 if (!should_check_remote_change_ && now < time_to_check_changes_) { |
614 if (!metadata_database_->HasDirtyTracker() && should_check_conflict_) { | 622 if (!metadata_database_->HasDirtyTracker() && should_check_conflict_) { |
615 should_check_conflict_ = false; | 623 should_check_conflict_ = false; |
616 task_manager_->ScheduleSyncTaskIfIdle( | 624 task_manager_->ScheduleSyncTaskIfIdle( |
625 FROM_HERE, | |
617 scoped_ptr<SyncTask>(new ConflictResolver(this)), | 626 scoped_ptr<SyncTask>(new ConflictResolver(this)), |
618 base::Bind(&SyncEngine::DidResolveConflict, | 627 base::Bind(&SyncEngine::DidResolveConflict, |
619 weak_ptr_factory_.GetWeakPtr())); | 628 weak_ptr_factory_.GetWeakPtr())); |
620 } | 629 } |
621 return; | 630 return; |
622 } | 631 } |
623 | 632 |
624 if (task_manager_->ScheduleSyncTaskIfIdle( | 633 if (task_manager_->ScheduleSyncTaskIfIdle( |
634 FROM_HERE, | |
625 scoped_ptr<SyncTask>(new ListChangesTask(this)), | 635 scoped_ptr<SyncTask>(new ListChangesTask(this)), |
626 base::Bind(&SyncEngine::DidFetchChanges, | 636 base::Bind(&SyncEngine::DidFetchChanges, |
627 weak_ptr_factory_.GetWeakPtr()))) { | 637 weak_ptr_factory_.GetWeakPtr()))) { |
628 should_check_remote_change_ = false; | 638 should_check_remote_change_ = false; |
629 listing_remote_changes_ = true; | 639 listing_remote_changes_ = true; |
630 time_to_check_changes_ = | 640 time_to_check_changes_ = |
631 now + base::TimeDelta::FromSeconds(kListChangesRetryDelaySeconds); | 641 now + base::TimeDelta::FromSeconds(kListChangesRetryDelaySeconds); |
632 } | 642 } |
633 } | 643 } |
634 | 644 |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
741 tracker.tracker_kind() == TRACKER_KIND_APP_ROOT; | 751 tracker.tracker_kind() == TRACKER_KIND_APP_ROOT; |
742 if (is_app_enabled && !is_app_root_tracker_enabled) | 752 if (is_app_enabled && !is_app_root_tracker_enabled) |
743 EnableOrigin(origin, base::Bind(&EmptyStatusCallback)); | 753 EnableOrigin(origin, base::Bind(&EmptyStatusCallback)); |
744 else if (!is_app_enabled && is_app_root_tracker_enabled) | 754 else if (!is_app_enabled && is_app_root_tracker_enabled) |
745 DisableOrigin(origin, base::Bind(&EmptyStatusCallback)); | 755 DisableOrigin(origin, base::Bind(&EmptyStatusCallback)); |
746 } | 756 } |
747 } | 757 } |
748 | 758 |
749 } // namespace drive_backend | 759 } // namespace drive_backend |
750 } // namespace sync_file_system | 760 } // namespace sync_file_system |
OLD | NEW |