| 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 "chrome/browser/drive/drive_service_interface.h" | 10 #include "chrome/browser/drive/drive_service_interface.h" |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 namespace sync_file_system { | 29 namespace sync_file_system { |
| 30 | 30 |
| 31 class RemoteChangeProcessor; | 31 class RemoteChangeProcessor; |
| 32 | 32 |
| 33 namespace drive_backend { | 33 namespace drive_backend { |
| 34 | 34 |
| 35 namespace { | 35 namespace { |
| 36 | 36 |
| 37 void EmptyStatusCallback(SyncStatusCode status) {} | 37 void EmptyStatusCallback(SyncStatusCode status) {} |
| 38 | 38 |
| 39 void QueryAppStatusOnUIThread( | |
| 40 const base::WeakPtr<ExtensionServiceInterface>& extension_service_ptr, | |
| 41 const std::vector<std::string>* app_ids, | |
| 42 SyncWorker::AppStatusMap* status, | |
| 43 const base::Closure& callback) { | |
| 44 ExtensionServiceInterface* extension_service = extension_service_ptr.get(); | |
| 45 if (!extension_service) { | |
| 46 callback.Run(); | |
| 47 return; | |
| 48 } | |
| 49 | |
| 50 for (std::vector<std::string>::const_iterator itr = app_ids->begin(); | |
| 51 itr != app_ids->end(); ++itr) { | |
| 52 const std::string& app_id = *itr; | |
| 53 if (!extension_service->GetInstalledExtension(app_id)) | |
| 54 (*status)[app_id] = SyncWorker::APP_STATUS_UNINSTALLED; | |
| 55 else if (!extension_service->IsExtensionEnabled(app_id)) | |
| 56 (*status)[app_id] = SyncWorker::APP_STATUS_DISABLED; | |
| 57 else | |
| 58 (*status)[app_id] = SyncWorker::APP_STATUS_ENABLED; | |
| 59 } | |
| 60 | |
| 61 callback.Run(); | |
| 62 } | |
| 63 | |
| 64 } // namespace | 39 } // namespace |
| 65 | 40 |
| 66 SyncWorker::SyncWorker( | 41 SyncWorker::SyncWorker( |
| 67 const base::FilePath& base_dir, | 42 const base::FilePath& base_dir, |
| 68 const base::WeakPtr<ExtensionServiceInterface>& extension_service, | 43 const base::WeakPtr<ExtensionServiceInterface>& extension_service, |
| 69 scoped_ptr<SyncEngineContext> sync_engine_context, | 44 scoped_ptr<SyncEngineContext> sync_engine_context, |
| 70 leveldb::Env* env_override) | 45 leveldb::Env* env_override) |
| 71 : base_dir_(base_dir), | 46 : base_dir_(base_dir), |
| 72 env_override_(env_override), | 47 env_override_(env_override), |
| 73 service_state_(REMOTE_SERVICE_TEMPORARY_UNAVAILABLE), | 48 service_state_(REMOTE_SERVICE_TEMPORARY_UNAVAILABLE), |
| 74 should_check_conflict_(true), | 49 should_check_conflict_(true), |
| 75 should_check_remote_change_(true), | 50 should_check_remote_change_(true), |
| 76 listing_remote_changes_(false), | 51 listing_remote_changes_(false), |
| 77 sync_enabled_(false), | 52 sync_enabled_(false), |
| 78 default_conflict_resolution_policy_( | 53 default_conflict_resolution_policy_( |
| 79 CONFLICT_RESOLUTION_POLICY_LAST_WRITE_WIN), | 54 CONFLICT_RESOLUTION_POLICY_LAST_WRITE_WIN), |
| 80 network_available_(false), | 55 network_available_(false), |
| 81 extension_service_(extension_service), | 56 extension_service_(extension_service), |
| 82 context_(sync_engine_context.Pass()), | 57 context_(sync_engine_context.Pass()), |
| 83 has_refresh_token_(false), | 58 has_refresh_token_(false), |
| 84 weak_ptr_factory_(this) { | 59 weak_ptr_factory_(this) { |
| 85 sequence_checker_.DetachFromSequence(); | 60 sequence_checker_.DetachFromSequence(); |
| 86 DCHECK(base_dir_.IsAbsolute()); | 61 DCHECK(base_dir_.IsAbsolute()); |
| 87 } | 62 } |
| 88 | 63 |
| 89 SyncWorker::~SyncWorker() {} | 64 SyncWorker::~SyncWorker() { |
| 65 observers_.Clear(); |
| 66 } |
| 90 | 67 |
| 91 void SyncWorker::Initialize() { | 68 void SyncWorker::Initialize() { |
| 92 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); | 69 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
| 93 DCHECK(!task_manager_); | 70 DCHECK(!task_manager_); |
| 94 | 71 |
| 95 task_manager_.reset(new SyncTaskManager( | 72 task_manager_.reset(new SyncTaskManager( |
| 96 weak_ptr_factory_.GetWeakPtr(), 0 /* maximum_background_task */)); | 73 weak_ptr_factory_.GetWeakPtr(), 0 /* maximum_background_task */)); |
| 97 task_manager_->Initialize(SYNC_STATUS_OK); | 74 task_manager_->Initialize(SYNC_STATUS_OK); |
| 98 | 75 |
| 99 PostInitializeTask(); | 76 PostInitializeTask(); |
| (...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 491 metadata_db->GetRegisteredAppIDs(app_ids.get()); | 468 metadata_db->GetRegisteredAppIDs(app_ids.get()); |
| 492 | 469 |
| 493 AppStatusMap* app_status = new AppStatusMap; | 470 AppStatusMap* app_status = new AppStatusMap; |
| 494 base::Closure callback = | 471 base::Closure callback = |
| 495 base::Bind(&SyncWorker::DidQueryAppStatus, | 472 base::Bind(&SyncWorker::DidQueryAppStatus, |
| 496 weak_ptr_factory_.GetWeakPtr(), | 473 weak_ptr_factory_.GetWeakPtr(), |
| 497 base::Owned(app_status)); | 474 base::Owned(app_status)); |
| 498 | 475 |
| 499 context_->GetUITaskRunner()->PostTask( | 476 context_->GetUITaskRunner()->PostTask( |
| 500 FROM_HERE, | 477 FROM_HERE, |
| 501 base::Bind(&QueryAppStatusOnUIThread, | 478 base::Bind(&SyncWorker::QueryAppStatusOnUIThread, |
| 502 extension_service_, | 479 extension_service_, |
| 503 base::Owned(app_ids.release()), | 480 base::Owned(app_ids.release()), |
| 504 app_status, | 481 app_status, |
| 505 RelayCallbackToTaskRunner( | 482 RelayCallbackToTaskRunner( |
| 506 context_->GetWorkerTaskRunner(), | 483 context_->GetWorkerTaskRunner(), |
| 507 FROM_HERE, callback))); | 484 FROM_HERE, callback))); |
| 508 } | 485 } |
| 509 | 486 |
| 487 void SyncWorker::QueryAppStatusOnUIThread( |
| 488 const base::WeakPtr<ExtensionServiceInterface>& extension_service_ptr, |
| 489 const std::vector<std::string>* app_ids, |
| 490 AppStatusMap* status, |
| 491 const base::Closure& callback) { |
| 492 ExtensionServiceInterface* extension_service = extension_service_ptr.get(); |
| 493 if (!extension_service) { |
| 494 callback.Run(); |
| 495 return; |
| 496 } |
| 497 |
| 498 for (std::vector<std::string>::const_iterator itr = app_ids->begin(); |
| 499 itr != app_ids->end(); ++itr) { |
| 500 const std::string& app_id = *itr; |
| 501 if (!extension_service->GetInstalledExtension(app_id)) |
| 502 (*status)[app_id] = APP_STATUS_UNINSTALLED; |
| 503 else if (!extension_service->IsExtensionEnabled(app_id)) |
| 504 (*status)[app_id] = APP_STATUS_DISABLED; |
| 505 else |
| 506 (*status)[app_id] = APP_STATUS_ENABLED; |
| 507 } |
| 508 |
| 509 callback.Run(); |
| 510 } |
| 511 |
| 510 void SyncWorker::DidQueryAppStatus(const AppStatusMap* app_status) { | 512 void SyncWorker::DidQueryAppStatus(const AppStatusMap* app_status) { |
| 511 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); | 513 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
| 512 | 514 |
| 513 MetadataDatabase* metadata_db = GetMetadataDatabase(); | 515 MetadataDatabase* metadata_db = GetMetadataDatabase(); |
| 514 DCHECK(metadata_db); | 516 DCHECK(metadata_db); |
| 515 | 517 |
| 516 // Update the status of every origin using status from ExtensionService. | 518 // Update the status of every origin using status from ExtensionService. |
| 517 for (AppStatusMap::const_iterator itr = app_status->begin(); | 519 for (AppStatusMap::const_iterator itr = app_status->begin(); |
| 518 itr != app_status->end(); ++itr) { | 520 itr != app_status->end(); ++itr) { |
| 519 const std::string& app_id = itr->first; | 521 const std::string& app_id = itr->first; |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 743 "Service state changed: %d->%d: %s", | 745 "Service state changed: %d->%d: %s", |
| 744 old_state, GetCurrentState(), description.c_str()); | 746 old_state, GetCurrentState(), description.c_str()); |
| 745 | 747 |
| 746 FOR_EACH_OBSERVER( | 748 FOR_EACH_OBSERVER( |
| 747 Observer, observers_, | 749 Observer, observers_, |
| 748 UpdateServiceState(GetCurrentState(), description)); | 750 UpdateServiceState(GetCurrentState(), description)); |
| 749 } | 751 } |
| 750 | 752 |
| 751 } // namespace drive_backend | 753 } // namespace drive_backend |
| 752 } // namespace sync_file_system | 754 } // namespace sync_file_system |
| OLD | NEW |