Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / sync / glue / non_frontend_data_type_controller_unittest.cc
index 77f5e9e..617f831 100644 (file)
 #include "base/synchronization/waitable_event.h"
 #include "base/test/test_timeouts.h"
 #include "base/tracked_objects.h"
-#include "chrome/browser/sync/glue/change_processor_mock.h"
-#include "chrome/browser/sync/glue/data_type_controller_mock.h"
-#include "chrome/browser/sync/glue/model_associator_mock.h"
 #include "chrome/browser/sync/glue/non_frontend_data_type_controller.h"
 #include "chrome/browser/sync/glue/non_frontend_data_type_controller_mock.h"
 #include "chrome/browser/sync/profile_sync_components_factory_mock.h"
 #include "chrome/browser/sync/profile_sync_service_mock.h"
 #include "chrome/test/base/profile_mock.h"
+#include "components/sync_driver/change_processor_mock.h"
+#include "components/sync_driver/data_type_controller_mock.h"
+#include "components/sync_driver/model_associator_mock.h"
 #include "content/public/test/test_browser_thread.h"
 #include "sync/internal_api/public/engine/model_safe_worker.h"
 
 using base::WaitableEvent;
-using browser_sync::ChangeProcessorMock;
-using browser_sync::DataTypeController;
 using syncer::GROUP_DB;
 using browser_sync::NonFrontendDataTypeController;
 using browser_sync::NonFrontendDataTypeControllerMock;
-using browser_sync::ModelAssociatorMock;
-using browser_sync::ModelLoadCallbackMock;
-using browser_sync::StartCallbackMock;
+using sync_driver::ChangeProcessorMock;
+using sync_driver::DataTypeController;
+using sync_driver::ModelAssociatorMock;
+using sync_driver::ModelLoadCallbackMock;
+using sync_driver::StartCallbackMock;
 using content::BrowserThread;
 using testing::_;
 using testing::DoAll;
@@ -56,50 +56,45 @@ class NonFrontendDataTypeControllerFake : public NonFrontendDataTypeController {
       Profile* profile,
       ProfileSyncService* sync_service,
       NonFrontendDataTypeControllerMock* mock)
-      : NonFrontendDataTypeController(profile_sync_factory,
+      : NonFrontendDataTypeController(base::MessageLoopProxy::current(),
+                                      base::Closure(),
+                                      profile_sync_factory,
                                       profile,
                                       sync_service),
         mock_(mock) {}
 
-  virtual syncer::ModelType type() const OVERRIDE { return syncer::BOOKMARKS; }
-  virtual syncer::ModelSafeGroup model_safe_group() const OVERRIDE {
+  syncer::ModelType type() const override { return syncer::BOOKMARKS; }
+  syncer::ModelSafeGroup model_safe_group() const override {
     return syncer::GROUP_DB;
   }
 
  private:
-  virtual ~NonFrontendDataTypeControllerFake() {}
+  ~NonFrontendDataTypeControllerFake() override {}
 
-  virtual ProfileSyncComponentsFactory::SyncComponents
-  CreateSyncComponents() OVERRIDE {
+  ProfileSyncComponentsFactory::SyncComponents CreateSyncComponents() override {
     return profile_sync_factory()->
             CreateBookmarkSyncComponents(profile_sync_service(), this);
   }
 
-  virtual bool PostTaskOnBackendThread(
-      const tracked_objects::Location& from_here,
-      const base::Closure& task) OVERRIDE {
+  bool PostTaskOnBackendThread(const tracked_objects::Location& from_here,
+                               const base::Closure& task) override {
     return BrowserThread::PostTask(BrowserThread::DB, from_here, task);
   }
 
   // We mock the following methods because their default implementations do
   // nothing, but we still want to make sure they're called appropriately.
-  virtual bool StartModels() OVERRIDE {
-    return mock_->StartModels();
-  }
-  virtual void RecordUnrecoverableError(
-      const tracked_objects::Location& from_here,
-      const std::string& message) OVERRIDE {
+  bool StartModels() override { return mock_->StartModels(); }
+  void RecordUnrecoverableError(const tracked_objects::Location& from_here,
+                                const std::string& message) override {
     mock_->RecordUnrecoverableError(from_here, message);
   }
-  virtual void RecordAssociationTime(base::TimeDelta time) OVERRIDE {
+  void RecordAssociationTime(base::TimeDelta time) override {
     mock_->RecordAssociationTime(time);
   }
-  virtual void RecordStartFailure(
-      DataTypeController::StartResult result) OVERRIDE {
+  void RecordStartFailure(DataTypeController::ConfigureResult result) override {
     mock_->RecordStartFailure(result);
   }
-  virtual void DisconnectProcessor(
-      browser_sync::ChangeProcessor* processor) OVERRIDE{
+  void DisconnectProcessor(sync_driver::ChangeProcessor* processor) override {
     mock_->DisconnectProcessor(processor);
   }
 
@@ -112,13 +107,13 @@ class SyncNonFrontendDataTypeControllerTest : public testing::Test {
   SyncNonFrontendDataTypeControllerTest()
       : ui_thread_(BrowserThread::UI, &message_loop_),
         db_thread_(BrowserThread::DB),
+        service_(&profile_),
         model_associator_(NULL),
         change_processor_(NULL) {}
 
-  virtual void SetUp() {
+  void SetUp() override {
     db_thread_.Start();
-    profile_sync_factory_.reset(
-        new StrictMock<ProfileSyncComponentsFactoryMock>());
+    profile_sync_factory_.reset(new ProfileSyncComponentsFactoryMock());
 
     // All of these are refcounted, so don't need to be released.
     dtc_mock_ = new StrictMock<NonFrontendDataTypeControllerMock>();
@@ -129,7 +124,7 @@ class SyncNonFrontendDataTypeControllerTest : public testing::Test {
                                               dtc_mock_.get());
   }
 
-  virtual void TearDown() {
+  void TearDown() override {
     if (non_frontend_dtc_->state() !=
         NonFrontendDataTypeController::NOT_RUNNING) {
       non_frontend_dtc_->Stop();
@@ -158,8 +153,7 @@ class SyncNonFrontendDataTypeControllerTest : public testing::Test {
     EXPECT_CALL(*dtc_mock_.get(), RecordAssociationTime(_));
   }
 
-  void SetActivateExpectations(DataTypeController::StartResult result) {
-    EXPECT_CALL(service_, ActivateDataType(_, _, _));
+  void SetActivateExpectations(DataTypeController::ConfigureResult result) {
     EXPECT_CALL(start_callback_, Run(result, _, _));
   }
 
@@ -170,7 +164,7 @@ class SyncNonFrontendDataTypeControllerTest : public testing::Test {
                 WillOnce(Return(syncer::SyncError()));
   }
 
-  void SetStartFailExpectations(DataTypeController::StartResult result) {
+  void SetStartFailExpectations(DataTypeController::ConfigureResult result) {
     if (DataTypeController::IsUnrecoverableResult(result))
       EXPECT_CALL(*dtc_mock_.get(), RecordUnrecoverableError(_, _));
     if (model_associator_) {
@@ -314,9 +308,6 @@ TEST_F(SyncNonFrontendDataTypeControllerTest, AbortDuringAssociationInactive) {
       SignalEvent(&pause_db_thread));
   EXPECT_CALL(*model_associator_, AssociateModels(_, _)).
               WillOnce(Return(syncer::SyncError()));
-  EXPECT_CALL(start_callback_, Run(DataTypeController::ABORTED,_,_));
-  EXPECT_CALL(*dtc_mock_.get(),
-              RecordStartFailure(DataTypeController::ABORTED));
   SetStopExpectations();
   EXPECT_EQ(DataTypeController::NOT_RUNNING, non_frontend_dtc_->state());
   Start();
@@ -344,9 +335,6 @@ TEST_F(SyncNonFrontendDataTypeControllerTest, AbortDuringAssociationActivated) {
           SignalEvent(&wait_for_association_starts),
           WaitOnEvent(&wait_for_dtc_stop),
           Return(syncer::SyncError())));
-  EXPECT_CALL(start_callback_, Run(DataTypeController::ABORTED,_,_));
-  EXPECT_CALL(*dtc_mock_.get(),
-              RecordStartFailure(DataTypeController::ABORTED));
   SetStopExpectations();
   EXPECT_EQ(DataTypeController::NOT_RUNNING, non_frontend_dtc_->state());
   Start();
@@ -370,13 +358,14 @@ TEST_F(SyncNonFrontendDataTypeControllerTest, Stop) {
   EXPECT_EQ(DataTypeController::NOT_RUNNING, non_frontend_dtc_->state());
 }
 
+// Disabled due to http://crbug.com/388367
 TEST_F(SyncNonFrontendDataTypeControllerTest,
-       OnSingleDatatypeUnrecoverableError) {
+       DISABLED_OnSingleDataTypeUnrecoverableError) {
   SetStartExpectations();
   SetAssociateExpectations();
   SetActivateExpectations(DataTypeController::OK);
   EXPECT_CALL(*dtc_mock_.get(), RecordUnrecoverableError(_, "Test"));
-  EXPECT_CALL(service_, DisableBrokenDatatype(_, _, _))
+  EXPECT_CALL(service_, DisableDatatype(_))
       .WillOnce(InvokeWithoutArgs(non_frontend_dtc_.get(),
                                   &NonFrontendDataTypeController::Stop));
   SetStopExpectations();
@@ -385,11 +374,14 @@ TEST_F(SyncNonFrontendDataTypeControllerTest,
   WaitForDTC();
   EXPECT_EQ(DataTypeController::RUNNING, non_frontend_dtc_->state());
   // This should cause non_frontend_dtc_->Stop() to be called.
+  syncer::SyncError error(FROM_HERE,
+                          syncer::SyncError::DATATYPE_ERROR,
+                          "error",
+                          non_frontend_dtc_->type());
   BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, base::Bind(
-      &NonFrontendDataTypeControllerFake::OnSingleDatatypeUnrecoverableError,
+      &NonFrontendDataTypeControllerFake::OnSingleDataTypeUnrecoverableError,
       non_frontend_dtc_.get(),
-      FROM_HERE,
-      std::string("Test")));
+      error));
   WaitForDTC();
   EXPECT_EQ(DataTypeController::NOT_RUNNING, non_frontend_dtc_->state());
 }