Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(56)

Side by Side Diff: chrome/browser/sync_file_system/drive_backend/sync_worker.cc

Issue 328063003: [SyncFS] Migrate SyncWorker::Observer to SyncWorkerInterface (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698