fake_sync_worker.cc revision 5f1c94371a64b3196d4be9466099bb892df9b88e
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 3// found in the LICENSE file. 4 5#include "chrome/browser/sync_file_system/drive_backend/fake_sync_worker.h" 6 7#include "base/values.h" 8#include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants.h" 9#include "chrome/browser/sync_file_system/drive_backend/sync_engine_context.h" 10#include "chrome/browser/sync_file_system/sync_status_code.h" 11 12namespace sync_file_system { 13namespace drive_backend { 14 15FakeSyncWorker::FakeSyncWorker() 16 : sync_enabled_(true) { 17 sequence_checker_.DetachFromSequence(); 18} 19 20FakeSyncWorker::~FakeSyncWorker() { 21 observers_.Clear(); 22} 23 24void FakeSyncWorker::Initialize( 25 scoped_ptr<SyncEngineContext> sync_engine_context) { 26 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 27 28 sync_engine_context_ = sync_engine_context.Pass(); 29 status_map_.clear(); 30 // TODO(peria): Set |status_map_| as a fake metadata database. 31} 32 33void FakeSyncWorker::RegisterOrigin(const GURL& origin, 34 const SyncStatusCallback& callback) { 35 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 36 // TODO(peria): Check how it should act on installing installed app? 37 status_map_[origin] = REGISTERED; 38 callback.Run(SYNC_STATUS_OK); 39} 40 41void FakeSyncWorker::EnableOrigin(const GURL& origin, 42 const SyncStatusCallback& callback) { 43 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 44 // TODO(peria): Check how it should act on enabling non-installed app? 45 status_map_[origin] = ENABLED; 46 callback.Run(SYNC_STATUS_OK); 47} 48 49void FakeSyncWorker::DisableOrigin(const GURL& origin, 50 const SyncStatusCallback& callback) { 51 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 52 // TODO(peria): Check how it should act on disabling non-installed app? 53 status_map_[origin] = DISABLED; 54 callback.Run(SYNC_STATUS_OK); 55} 56 57void FakeSyncWorker::UninstallOrigin(const GURL& origin, 58 RemoteFileSyncService::UninstallFlag flag, 59 const SyncStatusCallback& callback) { 60 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 61 // TODO(peria): Check how it should act on uninstalling non-installed app? 62 status_map_[origin] = UNINSTALLED; 63 callback.Run(SYNC_STATUS_OK); 64} 65 66void FakeSyncWorker::ProcessRemoteChange( 67 const SyncFileCallback& callback) { 68 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 69 callback.Run(SYNC_STATUS_OK, fileapi::FileSystemURL()); 70} 71 72void FakeSyncWorker::SetRemoteChangeProcessor( 73 RemoteChangeProcessorOnWorker* remote_change_processor_on_worker) { 74 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 75} 76 77RemoteServiceState FakeSyncWorker::GetCurrentState() const { 78 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 79 return REMOTE_SERVICE_OK; 80} 81 82void FakeSyncWorker::GetOriginStatusMap( 83 const RemoteFileSyncService::StatusMapCallback& callback) { 84 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 85 86 scoped_ptr<RemoteFileSyncService::OriginStatusMap> 87 status_map(new RemoteFileSyncService::OriginStatusMap); 88 for (StatusMap::const_iterator itr = status_map_.begin(); 89 itr != status_map_.end(); ++itr) { 90 switch (itr->second) { 91 case REGISTERED: 92 (*status_map)[itr->first] = "Registered"; 93 break; 94 case ENABLED: 95 (*status_map)[itr->first] = "Enabled"; 96 break; 97 case DISABLED: 98 (*status_map)[itr->first] = "Disabled"; 99 break; 100 case UNINSTALLED: 101 (*status_map)[itr->first] = "Uninstalled"; 102 break; 103 default: 104 (*status_map)[itr->first] = "Unknown"; 105 break; 106 } 107 } 108 callback.Run(status_map.Pass()); 109} 110 111scoped_ptr<base::ListValue> FakeSyncWorker::DumpFiles(const GURL& origin) { 112 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 113 return scoped_ptr<base::ListValue>(); 114} 115 116scoped_ptr<base::ListValue> FakeSyncWorker::DumpDatabase() { 117 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 118 return scoped_ptr<base::ListValue>(); 119} 120 121void FakeSyncWorker::SetSyncEnabled(bool enabled) { 122 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 123 sync_enabled_ = enabled; 124 125 if (enabled) 126 UpdateServiceState(REMOTE_SERVICE_OK, "Set FakeSyncWorker enabled."); 127 else 128 UpdateServiceState(REMOTE_SERVICE_DISABLED, "Disabled FakeSyncWorker."); 129} 130 131void FakeSyncWorker::PromoteDemotedChanges(const base::Closure& callback) { 132 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 133 FOR_EACH_OBSERVER( 134 Observer, 135 observers_, 136 OnPendingFileListUpdated(10)); 137 callback.Run(); 138} 139 140void FakeSyncWorker::ApplyLocalChange( 141 const FileChange& local_change, 142 const base::FilePath& local_path, 143 const SyncFileMetadata& local_metadata, 144 const fileapi::FileSystemURL& url, 145 const SyncStatusCallback& callback) { 146 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 147 callback.Run(SYNC_STATUS_OK); 148} 149 150void FakeSyncWorker::ActivateService(RemoteServiceState service_state, 151 const std::string& description) { 152 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 153 UpdateServiceState(service_state, description); 154} 155 156void FakeSyncWorker::DeactivateService(const std::string& description) { 157 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 158 UpdateServiceState(REMOTE_SERVICE_TEMPORARY_UNAVAILABLE, description); 159} 160 161void FakeSyncWorker::DetachFromSequence() { 162 sequence_checker_.DetachFromSequence(); 163} 164 165void FakeSyncWorker::AddObserver(Observer* observer) { 166 // This method is called on UI thread. 167 observers_.AddObserver(observer); 168} 169 170void FakeSyncWorker::UpdateServiceState(RemoteServiceState state, 171 const std::string& description) { 172 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 173 174 FOR_EACH_OBSERVER( 175 Observer, observers_, 176 UpdateServiceState(state, description)); 177} 178 179} // namespace drive_backend 180} // namespace sync_file_system 181