#include "base/message_loop/message_loop_proxy.h"
#include "sync/engine/non_blocking_type_processor_core.h"
+#include "sync/internal_api/public/sync_core_proxy.h"
namespace syncer {
NonBlockingTypeProcessor::NonBlockingTypeProcessor(ModelType type)
- : type_(type), enabled_(false), weak_ptr_factory_(this) {}
+ : type_(type),
+ is_preferred_(false),
+ is_connected_(false),
+ weak_ptr_factory_(this) {}
NonBlockingTypeProcessor::~NonBlockingTypeProcessor() {
}
-bool NonBlockingTypeProcessor::IsEnabled() const {
+bool NonBlockingTypeProcessor::IsPreferred() const {
DCHECK(CalledOnValidThread());
- return enabled_;
+ return is_preferred_;
+}
+
+bool NonBlockingTypeProcessor::IsConnected() const {
+ DCHECK(CalledOnValidThread());
+ return is_connected_;
}
ModelType NonBlockingTypeProcessor::GetModelType() const {
return type_;
}
-void NonBlockingTypeProcessor::Enable(SyncCoreProxy core_proxy_) {
+void NonBlockingTypeProcessor::Enable(SyncCoreProxy* core_proxy) {
DCHECK(CalledOnValidThread());
- core_proxy_.ConnectTypeToCore(
- GetModelType(),
- AsWeakPtr());
+ is_preferred_ = true;
+ core_proxy->ConnectTypeToCore(GetModelType(), AsWeakPtr());
}
void NonBlockingTypeProcessor::Disable() {
DCHECK(CalledOnValidThread());
- enabled_ = false;
- weak_ptr_factory_.InvalidateWeakPtrs();
+ is_preferred_ = false;
+ Disconnect();
+}
+
+void NonBlockingTypeProcessor::Disconnect() {
+ DCHECK(CalledOnValidThread());
+ is_connected_ = false;
core_ = base::WeakPtr<NonBlockingTypeProcessorCore>();
sync_thread_ = scoped_refptr<base::SequencedTaskRunner>();
}
base::WeakPtr<NonBlockingTypeProcessorCore> core,
scoped_refptr<base::SequencedTaskRunner> sync_thread) {
DCHECK(CalledOnValidThread());
- enabled_ = true;
+ is_connected_ = true;
core_ = core;
sync_thread_ = sync_thread;
}