Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / sync / internal_api / non_blocking_type_processor.cc
index 242c42f..d426443 100644 (file)
@@ -6,18 +6,27 @@
 
 #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 {
@@ -25,17 +34,21 @@ 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>();
 }
@@ -49,7 +62,7 @@ void NonBlockingTypeProcessor::OnConnect(
     base::WeakPtr<NonBlockingTypeProcessorCore> core,
     scoped_refptr<base::SequencedTaskRunner> sync_thread) {
   DCHECK(CalledOnValidThread());
-  enabled_ = true;
+  is_connected_ = true;
   core_ = core;
   sync_thread_ = sync_thread;
 }