| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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_worker.h" | 5 #include "chrome/browser/sync_file_system/drive_backend/sync_worker.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/memory/weak_ptr.h" | |
| 11 #include "base/threading/sequenced_worker_pool.h" | |
| 12 #include "base/values.h" | |
| 13 #include "chrome/browser/drive/drive_api_service.h" | |
| 14 #include "chrome/browser/drive/drive_notification_manager.h" | |
| 15 #include "chrome/browser/drive/drive_notification_manager_factory.h" | |
| 16 #include "chrome/browser/drive/drive_service_interface.h" | 10 #include "chrome/browser/drive/drive_service_interface.h" |
| 17 #include "chrome/browser/drive/drive_uploader.h" | |
| 18 #include "chrome/browser/extensions/extension_service.h" | 11 #include "chrome/browser/extensions/extension_service.h" |
| 19 #include "chrome/browser/profiles/profile.h" | |
| 20 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h" | |
| 21 #include "chrome/browser/signin/signin_manager_factory.h" | |
| 22 #include "chrome/browser/sync_file_system/drive_backend/callback_helper.h" | 12 #include "chrome/browser/sync_file_system/drive_backend/callback_helper.h" |
| 23 #include "chrome/browser/sync_file_system/drive_backend/conflict_resolver.h" | 13 #include "chrome/browser/sync_file_system/drive_backend/conflict_resolver.h" |
| 24 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants.
h" | 14 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants.
h" |
| 25 #include "chrome/browser/sync_file_system/drive_backend/list_changes_task.h" | 15 #include "chrome/browser/sync_file_system/drive_backend/list_changes_task.h" |
| 26 #include "chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer.h
" | 16 #include "chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer.h
" |
| 27 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" | 17 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" |
| 28 #include "chrome/browser/sync_file_system/drive_backend/register_app_task.h" | 18 #include "chrome/browser/sync_file_system/drive_backend/register_app_task.h" |
| 29 #include "chrome/browser/sync_file_system/drive_backend/remote_change_processor_
on_worker.h" | 19 #include "chrome/browser/sync_file_system/drive_backend/remote_change_processor_
on_worker.h" |
| 30 #include "chrome/browser/sync_file_system/drive_backend/remote_change_processor_
wrapper.h" | |
| 31 #include "chrome/browser/sync_file_system/drive_backend/remote_to_local_syncer.h
" | 20 #include "chrome/browser/sync_file_system/drive_backend/remote_to_local_syncer.h
" |
| 32 #include "chrome/browser/sync_file_system/drive_backend/sync_engine_context.h" | 21 #include "chrome/browser/sync_file_system/drive_backend/sync_engine_context.h" |
| 33 #include "chrome/browser/sync_file_system/drive_backend/sync_engine_initializer.
h" | 22 #include "chrome/browser/sync_file_system/drive_backend/sync_engine_initializer.
h" |
| 34 #include "chrome/browser/sync_file_system/drive_backend/sync_task.h" | 23 #include "chrome/browser/sync_file_system/drive_backend/sync_task.h" |
| 35 #include "chrome/browser/sync_file_system/drive_backend/uninstall_app_task.h" | 24 #include "chrome/browser/sync_file_system/drive_backend/uninstall_app_task.h" |
| 36 #include "chrome/browser/sync_file_system/file_status_observer.h" | |
| 37 #include "chrome/browser/sync_file_system/logger.h" | 25 #include "chrome/browser/sync_file_system/logger.h" |
| 38 #include "chrome/browser/sync_file_system/syncable_file_system_util.h" | 26 #include "chrome/browser/sync_file_system/syncable_file_system_util.h" |
| 39 #include "components/signin/core/browser/profile_oauth2_token_service.h" | |
| 40 #include "components/signin/core/browser/signin_manager.h" | |
| 41 #include "content/public/browser/browser_thread.h" | |
| 42 #include "extensions/browser/extension_system.h" | |
| 43 #include "extensions/browser/extension_system_provider.h" | |
| 44 #include "extensions/browser/extensions_browser_client.h" | |
| 45 #include "extensions/common/extension.h" | |
| 46 #include "google_apis/drive/drive_api_url_generator.h" | |
| 47 #include "google_apis/drive/gdata_wapi_url_generator.h" | |
| 48 #include "webkit/common/blob/scoped_file.h" | |
| 49 #include "webkit/common/fileapi/file_system_util.h" | 27 #include "webkit/common/fileapi/file_system_util.h" |
| 50 | 28 |
| 51 namespace sync_file_system { | 29 namespace sync_file_system { |
| 52 | 30 |
| 53 class RemoteChangeProcessor; | 31 class RemoteChangeProcessor; |
| 54 | 32 |
| 55 namespace drive_backend { | 33 namespace drive_backend { |
| 56 | 34 |
| 57 namespace { | 35 namespace { |
| 58 | 36 |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 282 MetadataDatabase* metadata_db = GetMetadataDatabase(); | 260 MetadataDatabase* metadata_db = GetMetadataDatabase(); |
| 283 if (metadata_db && metadata_db->HasLowPriorityDirtyTracker()) { | 261 if (metadata_db && metadata_db->HasLowPriorityDirtyTracker()) { |
| 284 metadata_db->PromoteLowerPriorityTrackersToNormal(); | 262 metadata_db->PromoteLowerPriorityTrackersToNormal(); |
| 285 FOR_EACH_OBSERVER( | 263 FOR_EACH_OBSERVER( |
| 286 Observer, | 264 Observer, |
| 287 observers_, | 265 observers_, |
| 288 OnPendingFileListUpdated(metadata_db->CountDirtyTracker())); | 266 OnPendingFileListUpdated(metadata_db->CountDirtyTracker())); |
| 289 } | 267 } |
| 290 } | 268 } |
| 291 | 269 |
| 292 SyncStatusCode SyncWorker::SetDefaultConflictResolutionPolicy( | |
| 293 ConflictResolutionPolicy policy) { | |
| 294 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); | |
| 295 | |
| 296 default_conflict_resolution_policy_ = policy; | |
| 297 return SYNC_STATUS_OK; | |
| 298 } | |
| 299 | |
| 300 SyncStatusCode SyncWorker::SetConflictResolutionPolicy( | |
| 301 const GURL& origin, | |
| 302 ConflictResolutionPolicy policy) { | |
| 303 NOTIMPLEMENTED(); | |
| 304 default_conflict_resolution_policy_ = policy; | |
| 305 return SYNC_STATUS_OK; | |
| 306 } | |
| 307 | |
| 308 ConflictResolutionPolicy SyncWorker::GetDefaultConflictResolutionPolicy() | |
| 309 const { | |
| 310 return default_conflict_resolution_policy_; | |
| 311 } | |
| 312 | |
| 313 ConflictResolutionPolicy SyncWorker::GetConflictResolutionPolicy( | |
| 314 const GURL& origin) const { | |
| 315 NOTIMPLEMENTED(); | |
| 316 return default_conflict_resolution_policy_; | |
| 317 } | |
| 318 | |
| 319 void SyncWorker::ApplyLocalChange( | 270 void SyncWorker::ApplyLocalChange( |
| 320 const FileChange& local_change, | 271 const FileChange& local_change, |
| 321 const base::FilePath& local_path, | 272 const base::FilePath& local_path, |
| 322 const SyncFileMetadata& local_metadata, | 273 const SyncFileMetadata& local_metadata, |
| 323 const fileapi::FileSystemURL& url, | 274 const fileapi::FileSystemURL& url, |
| 324 const SyncStatusCallback& callback) { | 275 const SyncStatusCallback& callback) { |
| 325 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); | 276 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
| 326 | 277 |
| 327 LocalToRemoteSyncer* syncer = new LocalToRemoteSyncer( | 278 LocalToRemoteSyncer* syncer = new LocalToRemoteSyncer( |
| 328 context_.get(), local_metadata, local_change, local_path, url); | 279 context_.get(), local_metadata, local_change, local_path, url); |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 442 MetadataDatabase* SyncWorker::GetMetadataDatabase() { | 393 MetadataDatabase* SyncWorker::GetMetadataDatabase() { |
| 443 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); | 394 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
| 444 return context_->GetMetadataDatabase(); | 395 return context_->GetMetadataDatabase(); |
| 445 } | 396 } |
| 446 | 397 |
| 447 SyncTaskManager* SyncWorker::GetSyncTaskManager() { | 398 SyncTaskManager* SyncWorker::GetSyncTaskManager() { |
| 448 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); | 399 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
| 449 return task_manager_.get(); | 400 return task_manager_.get(); |
| 450 } | 401 } |
| 451 | 402 |
| 452 void SyncWorker::AddObserver(Observer* observer) { | |
| 453 observers_.AddObserver(observer); | |
| 454 } | |
| 455 | |
| 456 void SyncWorker::DetachFromSequence() { | 403 void SyncWorker::DetachFromSequence() { |
| 457 context_->DetachFromSequence(); | 404 context_->DetachFromSequence(); |
| 458 sequence_checker_.DetachFromSequence(); | 405 sequence_checker_.DetachFromSequence(); |
| 459 } | 406 } |
| 460 | 407 |
| 408 void SyncWorker::AddObserver(Observer* observer) { |
| 409 observers_.AddObserver(observer); |
| 410 } |
| 411 |
| 412 void SyncWorker::SetHasRefreshToken(bool has_refresh_token) { |
| 413 has_refresh_token_ = has_refresh_token; |
| 414 } |
| 415 |
| 461 void SyncWorker::DoDisableApp(const std::string& app_id, | 416 void SyncWorker::DoDisableApp(const std::string& app_id, |
| 462 const SyncStatusCallback& callback) { | 417 const SyncStatusCallback& callback) { |
| 463 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); | 418 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
| 464 | 419 |
| 465 if (GetMetadataDatabase()) { | 420 if (GetMetadataDatabase()) { |
| 466 GetMetadataDatabase()->DisableApp(app_id, callback); | 421 GetMetadataDatabase()->DisableApp(app_id, callback); |
| 467 } else { | 422 } else { |
| 468 context_->GetUITaskRunner()->PostTask( | 423 context_->GetUITaskRunner()->PostTask( |
| 469 FROM_HERE, base::Bind(callback, SYNC_STATUS_OK)); | 424 FROM_HERE, base::Bind(callback, SYNC_STATUS_OK)); |
| 470 } | 425 } |
| (...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 785 "Service state changed: %d->%d: %s", | 740 "Service state changed: %d->%d: %s", |
| 786 old_state, GetCurrentState(), description.c_str()); | 741 old_state, GetCurrentState(), description.c_str()); |
| 787 | 742 |
| 788 FOR_EACH_OBSERVER( | 743 FOR_EACH_OBSERVER( |
| 789 Observer, observers_, | 744 Observer, observers_, |
| 790 UpdateServiceState(GetCurrentState(), description)); | 745 UpdateServiceState(GetCurrentState(), description)); |
| 791 } | 746 } |
| 792 | 747 |
| 793 } // namespace drive_backend | 748 } // namespace drive_backend |
| 794 } // namespace sync_file_system | 749 } // namespace sync_file_system |
| OLD | NEW |