Index: chrome/browser/sync_file_system/drive_backend/fake_sync_worker.cc |
diff --git a/chrome/browser/sync_file_system/drive_backend/fake_sync_worker.cc b/chrome/browser/sync_file_system/drive_backend/fake_sync_worker.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2d41d4814bc8b0b75e48f16332c8fa8aee5be2ca |
--- /dev/null |
+++ b/chrome/browser/sync_file_system/drive_backend/fake_sync_worker.cc |
@@ -0,0 +1,223 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/browser/sync_file_system/drive_backend/fake_sync_worker.h" |
+ |
+#include "base/values.h" |
+#include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants.h" |
+#include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" |
+#include "chrome/browser/sync_file_system/sync_status_code.h" |
+ |
+namespace sync_file_system { |
+namespace drive_backend { |
+ |
+FakeSyncWorker::FakeSyncWorker() |
+ : sync_enabled_(true), |
+ has_refresh_token_(true), |
+ network_available_(true) { |
+ sequence_checker_.DetachFromSequence(); |
+} |
+ |
+FakeSyncWorker::~FakeSyncWorker() { |
+ observers_.Clear(); |
+} |
+ |
+void FakeSyncWorker::Initialize() { |
+ DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
+ |
+ status_map_.clear(); |
+ // TODO(peria): Set |status_map_| as a fake metadata database. |
+} |
+ |
+void FakeSyncWorker::RegisterOrigin(const GURL& origin, |
+ const SyncStatusCallback& callback) { |
+ DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
+ // TODO(peria): Check how it should act on installing installed app? |
+ status_map_[origin] = REGISTERED; |
+ callback.Run(SYNC_STATUS_OK); |
+} |
+ |
+void FakeSyncWorker::EnableOrigin(const GURL& origin, |
+ const SyncStatusCallback& callback) { |
+ DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
+ // TODO(peria): Check how it should act on enabling non-installed app? |
+ status_map_[origin] = ENABLED; |
+ callback.Run(SYNC_STATUS_OK); |
+} |
+ |
+void FakeSyncWorker::DisableOrigin(const GURL& origin, |
+ const SyncStatusCallback& callback) { |
+ DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
+ // TODO(peria): Check how it should act on disabling non-installed app? |
+ status_map_[origin] = DISABLED; |
+ callback.Run(SYNC_STATUS_OK); |
+} |
+ |
+void FakeSyncWorker::UninstallOrigin(const GURL& origin, |
+ RemoteFileSyncService::UninstallFlag flag, |
+ const SyncStatusCallback& callback) { |
+ DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
+ // TODO(peria): Check how it should act on uninstalling non-installed app? |
+ status_map_[origin] = UNINSTALLED; |
+ callback.Run(SYNC_STATUS_OK); |
+} |
+ |
+void FakeSyncWorker::ProcessRemoteChange( |
+ const SyncFileCallback& callback) { |
+ DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
+ callback.Run(SYNC_STATUS_OK, fileapi::FileSystemURL()); |
+} |
+ |
+void FakeSyncWorker::SetRemoteChangeProcessor( |
+ RemoteChangeProcessorOnWorker* remote_change_processor_on_worker) { |
+ DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
+} |
+ |
+RemoteServiceState FakeSyncWorker::GetCurrentState() const { |
+ DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
+ return REMOTE_SERVICE_OK; |
+} |
+ |
+void FakeSyncWorker::GetOriginStatusMap( |
+ const RemoteFileSyncService::StatusMapCallback& callback) { |
+ DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
+ |
+ scoped_ptr<RemoteFileSyncService::OriginStatusMap> |
+ status_map(new RemoteFileSyncService::OriginStatusMap); |
+ for (StatusMap::const_iterator itr = status_map_.begin(); |
+ itr != status_map_.end(); ++itr) { |
+ switch (itr->second) { |
+ case REGISTERED: |
+ (*status_map)[itr->first] = "Registered"; |
+ break; |
+ case ENABLED: |
+ (*status_map)[itr->first] = "Enabled"; |
+ break; |
+ case DISABLED: |
+ (*status_map)[itr->first] = "Disabled"; |
+ break; |
+ case UNINSTALLED: |
+ (*status_map)[itr->first] = "Uninstalled"; |
+ break; |
+ default: |
+ (*status_map)[itr->first] = "Unknown"; |
+ break; |
+ } |
+ } |
+ callback.Run(status_map.Pass()); |
+} |
+ |
+scoped_ptr<base::ListValue> FakeSyncWorker::DumpFiles(const GURL& origin) { |
+ DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
+ return scoped_ptr<base::ListValue>(); |
+} |
+ |
+scoped_ptr<base::ListValue> FakeSyncWorker::DumpDatabase() { |
+ DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
+ return scoped_ptr<base::ListValue>(); |
+} |
+ |
+void FakeSyncWorker::SetSyncEnabled(bool enabled) { |
+ DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
+ sync_enabled_ = enabled; |
+ |
+ if (enabled) |
+ UpdateServiceState(REMOTE_SERVICE_OK, "Set FakeSyncWorker enabled."); |
+ else |
+ UpdateServiceState(REMOTE_SERVICE_DISABLED, "Disabled FakeSyncWorker."); |
+} |
+ |
+void FakeSyncWorker::PromoteDemotedChanges() { |
+ DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
+ FOR_EACH_OBSERVER( |
+ Observer, |
+ observers_, |
+ OnPendingFileListUpdated(10)); |
+} |
+ |
+void FakeSyncWorker::ApplyLocalChange( |
+ const FileChange& local_change, |
+ const base::FilePath& local_path, |
+ const SyncFileMetadata& local_metadata, |
+ const fileapi::FileSystemURL& url, |
+ const SyncStatusCallback& callback) { |
+ DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
+ callback.Run(SYNC_STATUS_OK); |
+} |
+ |
+void FakeSyncWorker::OnNotificationReceived() { |
+ DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
+ UpdateServiceState(REMOTE_SERVICE_OK, "Got push notification for Drive."); |
+} |
+ |
+void FakeSyncWorker::OnReadyToSendRequests() { |
+ DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
+ has_refresh_token_ = true; |
+ UpdateServiceState(REMOTE_SERVICE_OK, "ReadyToSendRequests"); |
+} |
+ |
+void FakeSyncWorker::OnRefreshTokenInvalid() { |
+ DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
+ has_refresh_token_ = false; |
+ UpdateServiceState(REMOTE_SERVICE_OK, "RefreshTokenInvalid"); |
+} |
+ |
+void FakeSyncWorker::OnNetworkChanged( |
+ net::NetworkChangeNotifier::ConnectionType type) { |
+ DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
+ bool new_network_availability = |
+ type != net::NetworkChangeNotifier::CONNECTION_NONE; |
+ if (network_available_ && !new_network_availability) { |
+ UpdateServiceState(REMOTE_SERVICE_TEMPORARY_UNAVAILABLE, "Disconnected"); |
+ } else if (!network_available_ && new_network_availability) { |
+ UpdateServiceState(REMOTE_SERVICE_OK, "Connected"); |
+ } |
+ network_available_ = new_network_availability; |
+} |
+ |
+drive::DriveServiceInterface* FakeSyncWorker::GetDriveService() { |
+ DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
+ return NULL; |
+} |
+ |
+drive::DriveUploaderInterface* FakeSyncWorker::GetDriveUploader() { |
+ DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
+ return NULL; |
+} |
+ |
+MetadataDatabase* FakeSyncWorker::GetMetadataDatabase() { |
+ DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
+ return NULL; |
+} |
+ |
+SyncTaskManager* FakeSyncWorker::GetSyncTaskManager() { |
+ DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
+ return NULL; |
+} |
+ |
+void FakeSyncWorker::DetachFromSequence() { |
+ sequence_checker_.DetachFromSequence(); |
+} |
+ |
+void FakeSyncWorker::AddObserver(Observer* observer) { |
+ // This method is called on UI thread. |
+ observers_.AddObserver(observer); |
+} |
+ |
+void FakeSyncWorker::SetHasRefreshToken(bool has_refresh_token) { |
+ DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
+ has_refresh_token_ = has_refresh_token; |
+} |
+ |
+void FakeSyncWorker::UpdateServiceState(RemoteServiceState state, |
+ const std::string& description) { |
+ DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
+ |
+ FOR_EACH_OBSERVER( |
+ Observer, observers_, |
+ UpdateServiceState(state, description)); |
+} |
+ |
+} // namespace drive_backend |
+} // namespace sync_file_system |