Index: chrome/browser/sync/glue/shared_change_processor.cc |
diff --git a/chrome/browser/sync/glue/shared_change_processor.cc b/chrome/browser/sync/glue/shared_change_processor.cc |
deleted file mode 100644 |
index 1a122686cef3c5a082f7165b8354ad2e5d546824..0000000000000000000000000000000000000000 |
--- a/chrome/browser/sync/glue/shared_change_processor.cc |
+++ /dev/null |
@@ -1,211 +0,0 @@ |
-// Copyright (c) 2012 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/glue/shared_change_processor.h" |
- |
-#include "base/message_loop/message_loop_proxy.h" |
-#include "components/sync_driver/generic_change_processor.h" |
-#include "components/sync_driver/generic_change_processor_factory.h" |
-#include "components/sync_driver/sync_api_component_factory.h" |
-#include "sync/api/sync_change.h" |
- |
-using base::AutoLock; |
- |
-namespace browser_sync { |
- |
-SharedChangeProcessor::SharedChangeProcessor() |
- : disconnected_(false), |
- type_(syncer::UNSPECIFIED), |
- frontend_loop_(base::MessageLoopProxy::current()), |
- generic_change_processor_(NULL), |
- error_handler_(NULL) { |
-} |
- |
-SharedChangeProcessor::~SharedChangeProcessor() { |
- // We can either be deleted when the DTC is destroyed (on UI |
- // thread), or when the syncer::SyncableService stop's syncing (datatype |
- // thread). |generic_change_processor_|, if non-NULL, must be |
- // deleted on |backend_loop_|. |
- if (frontend_loop_->BelongsToCurrentThread()) { |
- if (backend_loop_.get()) { |
- if (!backend_loop_->DeleteSoon(FROM_HERE, generic_change_processor_)) { |
- NOTREACHED(); |
- } |
- } else { |
- DCHECK(!generic_change_processor_); |
- } |
- } else { |
- DCHECK(backend_loop_.get()); |
- DCHECK(backend_loop_->BelongsToCurrentThread()); |
- delete generic_change_processor_; |
- } |
-} |
- |
-base::WeakPtr<syncer::SyncableService> SharedChangeProcessor::Connect( |
- browser_sync::SyncApiComponentFactory* sync_factory, |
- GenericChangeProcessorFactory* processor_factory, |
- syncer::UserShare* user_share, |
- DataTypeErrorHandler* error_handler, |
- syncer::ModelType type, |
- const base::WeakPtr<syncer::SyncMergeResult>& merge_result) { |
- DCHECK(sync_factory); |
- DCHECK(error_handler); |
- DCHECK_NE(type, syncer::UNSPECIFIED); |
- backend_loop_ = base::MessageLoopProxy::current(); |
- AutoLock lock(monitor_lock_); |
- if (disconnected_) |
- return base::WeakPtr<syncer::SyncableService>(); |
- type_ = type; |
- error_handler_ = error_handler; |
- base::WeakPtr<syncer::SyncableService> local_service = |
- sync_factory->GetSyncableServiceForType(type); |
- if (!local_service.get()) { |
- LOG(WARNING) << "SyncableService destroyed before DTC was stopped."; |
- disconnected_ = true; |
- return base::WeakPtr<syncer::SyncableService>(); |
- } |
- |
- generic_change_processor_ = |
- processor_factory->CreateGenericChangeProcessor(user_share, |
- error_handler, |
- local_service, |
- merge_result, |
- sync_factory).release(); |
- return local_service; |
-} |
- |
-bool SharedChangeProcessor::Disconnect() { |
- // May be called from any thread. |
- DVLOG(1) << "Disconnecting change processor."; |
- AutoLock lock(monitor_lock_); |
- bool was_connected = !disconnected_; |
- disconnected_ = true; |
- error_handler_ = NULL; |
- return was_connected; |
-} |
- |
-ChangeProcessor* SharedChangeProcessor::generic_change_processor() { |
- return generic_change_processor_; |
-} |
- |
-int SharedChangeProcessor::GetSyncCount() { |
- DCHECK(backend_loop_.get()); |
- DCHECK(backend_loop_->BelongsToCurrentThread()); |
- AutoLock lock(monitor_lock_); |
- if (disconnected_) { |
- LOG(ERROR) << "Change processor disconnected."; |
- return 0; |
- } |
- return generic_change_processor_->GetSyncCountForType(type_); |
-} |
- |
-syncer::SyncError SharedChangeProcessor::ProcessSyncChanges( |
- const tracked_objects::Location& from_here, |
- const syncer::SyncChangeList& list_of_changes) { |
- DCHECK(backend_loop_.get()); |
- DCHECK(backend_loop_->BelongsToCurrentThread()); |
- AutoLock lock(monitor_lock_); |
- if (disconnected_) { |
- // The DTC that disconnects us must ensure it posts a StopSyncing task. |
- // If we reach this, it means it just hasn't executed yet. |
- syncer::SyncError error(FROM_HERE, |
- syncer::SyncError::DATATYPE_ERROR, |
- "Change processor disconnected.", |
- type_); |
- return error; |
- } |
- return generic_change_processor_->ProcessSyncChanges( |
- from_here, list_of_changes); |
-} |
- |
-syncer::SyncDataList SharedChangeProcessor::GetAllSyncData( |
- syncer::ModelType type) const { |
- syncer::SyncDataList data; |
- GetAllSyncDataReturnError(type, &data); // Handles the disconnect case. |
- return data; |
-} |
- |
-syncer::SyncError SharedChangeProcessor::GetAllSyncDataReturnError( |
- syncer::ModelType type, |
- syncer::SyncDataList* data) const { |
- DCHECK(backend_loop_.get()); |
- DCHECK(backend_loop_->BelongsToCurrentThread()); |
- AutoLock lock(monitor_lock_); |
- if (disconnected_) { |
- syncer::SyncError error(FROM_HERE, |
- syncer::SyncError::DATATYPE_ERROR, |
- "Change processor disconnected.", |
- type_); |
- return error; |
- } |
- return generic_change_processor_->GetAllSyncDataReturnError(type, data); |
-} |
- |
-syncer::SyncError SharedChangeProcessor::UpdateDataTypeContext( |
- syncer::ModelType type, |
- syncer::SyncChangeProcessor::ContextRefreshStatus refresh_status, |
- const std::string& context) { |
- DCHECK(backend_loop_.get()); |
- DCHECK(backend_loop_->BelongsToCurrentThread()); |
- AutoLock lock(monitor_lock_); |
- if (disconnected_) { |
- syncer::SyncError error(FROM_HERE, |
- syncer::SyncError::DATATYPE_ERROR, |
- "Change processor disconnected.", |
- type_); |
- return error; |
- } |
- return generic_change_processor_->UpdateDataTypeContext( |
- type, refresh_status, context); |
-} |
- |
-bool SharedChangeProcessor::SyncModelHasUserCreatedNodes(bool* has_nodes) { |
- DCHECK(backend_loop_.get()); |
- DCHECK(backend_loop_->BelongsToCurrentThread()); |
- AutoLock lock(monitor_lock_); |
- if (disconnected_) { |
- LOG(ERROR) << "Change processor disconnected."; |
- return false; |
- } |
- return generic_change_processor_->SyncModelHasUserCreatedNodes( |
- type_, has_nodes); |
-} |
- |
-bool SharedChangeProcessor::CryptoReadyIfNecessary() { |
- DCHECK(backend_loop_.get()); |
- DCHECK(backend_loop_->BelongsToCurrentThread()); |
- AutoLock lock(monitor_lock_); |
- if (disconnected_) { |
- LOG(ERROR) << "Change processor disconnected."; |
- return true; // Otherwise we get into infinite spin waiting. |
- } |
- return generic_change_processor_->CryptoReadyIfNecessary(type_); |
-} |
- |
-bool SharedChangeProcessor::GetDataTypeContext(std::string* context) const { |
- DCHECK(backend_loop_.get()); |
- DCHECK(backend_loop_->BelongsToCurrentThread()); |
- AutoLock lock(monitor_lock_); |
- if (disconnected_) { |
- LOG(ERROR) << "Change processor disconnected."; |
- return false; |
- } |
- return generic_change_processor_->GetDataTypeContext(type_, context); |
-} |
- |
-syncer::SyncError SharedChangeProcessor::CreateAndUploadError( |
- const tracked_objects::Location& location, |
- const std::string& message) { |
- AutoLock lock(monitor_lock_); |
- if (!disconnected_) { |
- return error_handler_->CreateAndUploadError(location, message, type_); |
- } else { |
- return syncer::SyncError(location, |
- syncer::SyncError::DATATYPE_ERROR, |
- message, |
- type_); |
- } |
-} |
- |
-} // namespace browser_sync |