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 |