| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/search_engines/search_engine_data_type_controller.h" | 5 #include "components/search_engines/search_engine_data_type_controller.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 | 25 |
| 26 using testing::_; | 26 using testing::_; |
| 27 using testing::DoAll; | 27 using testing::DoAll; |
| 28 using testing::InvokeWithoutArgs; | 28 using testing::InvokeWithoutArgs; |
| 29 using testing::Return; | 29 using testing::Return; |
| 30 using testing::SetArgumentPointee; | 30 using testing::SetArgumentPointee; |
| 31 | 31 |
| 32 namespace browser_sync { | 32 namespace browser_sync { |
| 33 namespace { | 33 namespace { |
| 34 | 34 |
| 35 class SyncSearchEngineDataTypeControllerTest : public testing::Test, | 35 class SyncSearchEngineDataTypeControllerTest |
| 36 public syncer::FakeSyncClient { | 36 : public testing::Test, |
| 37 public sync_driver::FakeSyncClient { |
| 37 public: | 38 public: |
| 38 SyncSearchEngineDataTypeControllerTest() | 39 SyncSearchEngineDataTypeControllerTest() |
| 39 : syncer::FakeSyncClient(&profile_sync_factory_), | 40 : sync_driver::FakeSyncClient(&profile_sync_factory_), |
| 40 template_url_service_(nullptr, 0), | 41 template_url_service_(nullptr, 0), |
| 41 search_engine_dtc_(base::Closure(), this, &template_url_service_) { | 42 search_engine_dtc_(base::Closure(), this, &template_url_service_) { |
| 42 // Disallow the TemplateURLService from loading until | 43 // Disallow the TemplateURLService from loading until |
| 43 // PreloadTemplateURLService() is called . | 44 // PreloadTemplateURLService() is called . |
| 44 template_url_service_.set_disable_load(true); | 45 template_url_service_.set_disable_load(true); |
| 45 } | 46 } |
| 46 | 47 |
| 47 // FakeSyncClient overrides. | 48 // FakeSyncClient overrides. |
| 48 base::WeakPtr<syncer::SyncableService> GetSyncableServiceForType( | 49 base::WeakPtr<syncer::SyncableService> GetSyncableServiceForType( |
| 49 syncer::ModelType type) override { | 50 syncer::ModelType type) override { |
| 50 return syncable_service_.AsWeakPtr(); | 51 return syncable_service_.AsWeakPtr(); |
| 51 } | 52 } |
| 52 | 53 |
| 53 void TearDown() override { | 54 void TearDown() override { |
| 54 // Must be done before we pump the loop. | 55 // Must be done before we pump the loop. |
| 55 syncable_service_.StopSyncing(syncer::SEARCH_ENGINES); | 56 syncable_service_.StopSyncing(syncer::SEARCH_ENGINES); |
| 56 } | 57 } |
| 57 | 58 |
| 58 protected: | 59 protected: |
| 59 void PreloadTemplateURLService() { | 60 void PreloadTemplateURLService() { |
| 60 template_url_service_.set_disable_load(false); | 61 template_url_service_.set_disable_load(false); |
| 61 template_url_service_.Load(); | 62 template_url_service_.Load(); |
| 62 } | 63 } |
| 63 | 64 |
| 64 void SetStartExpectations() { | 65 void SetStartExpectations() { |
| 65 search_engine_dtc_.SetGenericChangeProcessorFactoryForTest( | 66 search_engine_dtc_.SetGenericChangeProcessorFactoryForTest( |
| 66 base::WrapUnique<syncer::GenericChangeProcessorFactory>( | 67 base::WrapUnique<sync_driver::GenericChangeProcessorFactory>( |
| 67 new syncer::FakeGenericChangeProcessorFactory( | 68 new sync_driver::FakeGenericChangeProcessorFactory( |
| 68 base::MakeUnique<syncer::FakeGenericChangeProcessor>( | 69 base::MakeUnique<sync_driver::FakeGenericChangeProcessor>( |
| 69 syncer::SEARCH_ENGINES, this)))); | 70 syncer::SEARCH_ENGINES, this)))); |
| 70 EXPECT_CALL(model_load_callback_, Run(_, _)); | 71 EXPECT_CALL(model_load_callback_, Run(_, _)); |
| 71 } | 72 } |
| 72 | 73 |
| 73 void Start() { | 74 void Start() { |
| 74 search_engine_dtc_.LoadModels( | 75 search_engine_dtc_.LoadModels( |
| 75 base::Bind(&syncer::ModelLoadCallbackMock::Run, | 76 base::Bind(&sync_driver::ModelLoadCallbackMock::Run, |
| 76 base::Unretained(&model_load_callback_))); | 77 base::Unretained(&model_load_callback_))); |
| 77 search_engine_dtc_.StartAssociating(base::Bind( | 78 search_engine_dtc_.StartAssociating( |
| 78 &syncer::StartCallbackMock::Run, base::Unretained(&start_callback_))); | 79 base::Bind(&sync_driver::StartCallbackMock::Run, |
| 80 base::Unretained(&start_callback_))); |
| 79 base::RunLoop().RunUntilIdle(); | 81 base::RunLoop().RunUntilIdle(); |
| 80 } | 82 } |
| 81 | 83 |
| 82 base::MessageLoop message_loop_; | 84 base::MessageLoop message_loop_; |
| 83 TemplateURLService template_url_service_; | 85 TemplateURLService template_url_service_; |
| 84 SearchEngineDataTypeController search_engine_dtc_; | 86 SearchEngineDataTypeController search_engine_dtc_; |
| 85 syncer::SyncApiComponentFactoryMock profile_sync_factory_; | 87 SyncApiComponentFactoryMock profile_sync_factory_; |
| 86 syncer::FakeSyncableService syncable_service_; | 88 syncer::FakeSyncableService syncable_service_; |
| 87 syncer::StartCallbackMock start_callback_; | 89 sync_driver::StartCallbackMock start_callback_; |
| 88 syncer::ModelLoadCallbackMock model_load_callback_; | 90 sync_driver::ModelLoadCallbackMock model_load_callback_; |
| 89 }; | 91 }; |
| 90 | 92 |
| 91 TEST_F(SyncSearchEngineDataTypeControllerTest, StartURLServiceReady) { | 93 TEST_F(SyncSearchEngineDataTypeControllerTest, StartURLServiceReady) { |
| 92 SetStartExpectations(); | 94 SetStartExpectations(); |
| 93 // We want to start ready. | 95 // We want to start ready. |
| 94 PreloadTemplateURLService(); | 96 PreloadTemplateURLService(); |
| 95 EXPECT_CALL(start_callback_, Run(syncer::DataTypeController::OK, _, _)); | 97 EXPECT_CALL(start_callback_, Run(sync_driver::DataTypeController::OK, _, _)); |
| 96 | 98 |
| 97 EXPECT_EQ(syncer::DataTypeController::NOT_RUNNING, | 99 EXPECT_EQ(sync_driver::DataTypeController::NOT_RUNNING, |
| 98 search_engine_dtc_.state()); | 100 search_engine_dtc_.state()); |
| 99 EXPECT_FALSE(syncable_service_.syncing()); | 101 EXPECT_FALSE(syncable_service_.syncing()); |
| 100 Start(); | 102 Start(); |
| 101 EXPECT_EQ(syncer::DataTypeController::RUNNING, search_engine_dtc_.state()); | 103 EXPECT_EQ(sync_driver::DataTypeController::RUNNING, |
| 104 search_engine_dtc_.state()); |
| 102 EXPECT_TRUE(syncable_service_.syncing()); | 105 EXPECT_TRUE(syncable_service_.syncing()); |
| 103 } | 106 } |
| 104 | 107 |
| 105 TEST_F(SyncSearchEngineDataTypeControllerTest, StartURLServiceNotReady) { | 108 TEST_F(SyncSearchEngineDataTypeControllerTest, StartURLServiceNotReady) { |
| 106 EXPECT_CALL(model_load_callback_, Run(_, _)); | 109 EXPECT_CALL(model_load_callback_, Run(_, _)); |
| 107 EXPECT_FALSE(syncable_service_.syncing()); | 110 EXPECT_FALSE(syncable_service_.syncing()); |
| 108 search_engine_dtc_.LoadModels( | 111 search_engine_dtc_.LoadModels( |
| 109 base::Bind(&syncer::ModelLoadCallbackMock::Run, | 112 base::Bind(&sync_driver::ModelLoadCallbackMock::Run, |
| 110 base::Unretained(&model_load_callback_))); | 113 base::Unretained(&model_load_callback_))); |
| 111 EXPECT_TRUE(search_engine_dtc_.GetSubscriptionForTesting()); | 114 EXPECT_TRUE(search_engine_dtc_.GetSubscriptionForTesting()); |
| 112 EXPECT_EQ(syncer::DataTypeController::MODEL_STARTING, | 115 EXPECT_EQ(sync_driver::DataTypeController::MODEL_STARTING, |
| 113 search_engine_dtc_.state()); | 116 search_engine_dtc_.state()); |
| 114 EXPECT_FALSE(syncable_service_.syncing()); | 117 EXPECT_FALSE(syncable_service_.syncing()); |
| 115 | 118 |
| 116 // Send the notification that the TemplateURLService has started. | 119 // Send the notification that the TemplateURLService has started. |
| 117 PreloadTemplateURLService(); | 120 PreloadTemplateURLService(); |
| 118 EXPECT_EQ(NULL, search_engine_dtc_.GetSubscriptionForTesting()); | 121 EXPECT_EQ(NULL, search_engine_dtc_.GetSubscriptionForTesting()); |
| 119 EXPECT_EQ(syncer::DataTypeController::MODEL_LOADED, | 122 EXPECT_EQ(sync_driver::DataTypeController::MODEL_LOADED, |
| 120 search_engine_dtc_.state()); | 123 search_engine_dtc_.state()); |
| 121 | 124 |
| 122 // Wait until WebDB is loaded before we shut it down. | 125 // Wait until WebDB is loaded before we shut it down. |
| 123 base::RunLoop().RunUntilIdle(); | 126 base::RunLoop().RunUntilIdle(); |
| 124 } | 127 } |
| 125 | 128 |
| 126 TEST_F(SyncSearchEngineDataTypeControllerTest, StartAssociationFailed) { | 129 TEST_F(SyncSearchEngineDataTypeControllerTest, StartAssociationFailed) { |
| 127 SetStartExpectations(); | 130 SetStartExpectations(); |
| 128 PreloadTemplateURLService(); | 131 PreloadTemplateURLService(); |
| 129 EXPECT_CALL(start_callback_, | 132 EXPECT_CALL(start_callback_, |
| 130 Run(syncer::DataTypeController::ASSOCIATION_FAILED, _, _)); | 133 Run(sync_driver::DataTypeController::ASSOCIATION_FAILED, _, _)); |
| 131 syncable_service_.set_merge_data_and_start_syncing_error( | 134 syncable_service_.set_merge_data_and_start_syncing_error( |
| 132 syncer::SyncError(FROM_HERE, | 135 syncer::SyncError(FROM_HERE, |
| 133 syncer::SyncError::DATATYPE_ERROR, | 136 syncer::SyncError::DATATYPE_ERROR, |
| 134 "Error", | 137 "Error", |
| 135 syncer::SEARCH_ENGINES)); | 138 syncer::SEARCH_ENGINES)); |
| 136 | 139 |
| 137 Start(); | 140 Start(); |
| 138 EXPECT_EQ(syncer::DataTypeController::DISABLED, search_engine_dtc_.state()); | 141 EXPECT_EQ(sync_driver::DataTypeController::DISABLED, |
| 142 search_engine_dtc_.state()); |
| 139 EXPECT_FALSE(syncable_service_.syncing()); | 143 EXPECT_FALSE(syncable_service_.syncing()); |
| 140 search_engine_dtc_.Stop(); | 144 search_engine_dtc_.Stop(); |
| 141 EXPECT_EQ(syncer::DataTypeController::NOT_RUNNING, | 145 EXPECT_EQ(sync_driver::DataTypeController::NOT_RUNNING, |
| 142 search_engine_dtc_.state()); | 146 search_engine_dtc_.state()); |
| 143 EXPECT_FALSE(syncable_service_.syncing()); | 147 EXPECT_FALSE(syncable_service_.syncing()); |
| 144 } | 148 } |
| 145 | 149 |
| 146 TEST_F(SyncSearchEngineDataTypeControllerTest, Stop) { | 150 TEST_F(SyncSearchEngineDataTypeControllerTest, Stop) { |
| 147 SetStartExpectations(); | 151 SetStartExpectations(); |
| 148 PreloadTemplateURLService(); | 152 PreloadTemplateURLService(); |
| 149 EXPECT_CALL(start_callback_, Run(syncer::DataTypeController::OK, _, _)); | 153 EXPECT_CALL(start_callback_, Run(sync_driver::DataTypeController::OK, _, _)); |
| 150 | 154 |
| 151 EXPECT_EQ(syncer::DataTypeController::NOT_RUNNING, | 155 EXPECT_EQ(sync_driver::DataTypeController::NOT_RUNNING, |
| 152 search_engine_dtc_.state()); | 156 search_engine_dtc_.state()); |
| 153 EXPECT_FALSE(syncable_service_.syncing()); | 157 EXPECT_FALSE(syncable_service_.syncing()); |
| 154 Start(); | 158 Start(); |
| 155 EXPECT_EQ(syncer::DataTypeController::RUNNING, search_engine_dtc_.state()); | 159 EXPECT_EQ(sync_driver::DataTypeController::RUNNING, |
| 160 search_engine_dtc_.state()); |
| 156 EXPECT_TRUE(syncable_service_.syncing()); | 161 EXPECT_TRUE(syncable_service_.syncing()); |
| 157 search_engine_dtc_.Stop(); | 162 search_engine_dtc_.Stop(); |
| 158 EXPECT_EQ(syncer::DataTypeController::NOT_RUNNING, | 163 EXPECT_EQ(sync_driver::DataTypeController::NOT_RUNNING, |
| 159 search_engine_dtc_.state()); | 164 search_engine_dtc_.state()); |
| 160 EXPECT_FALSE(syncable_service_.syncing()); | 165 EXPECT_FALSE(syncable_service_.syncing()); |
| 161 } | 166 } |
| 162 | 167 |
| 163 TEST_F(SyncSearchEngineDataTypeControllerTest, StopBeforeLoaded) { | 168 TEST_F(SyncSearchEngineDataTypeControllerTest, StopBeforeLoaded) { |
| 164 EXPECT_FALSE(syncable_service_.syncing()); | 169 EXPECT_FALSE(syncable_service_.syncing()); |
| 165 search_engine_dtc_.LoadModels( | 170 search_engine_dtc_.LoadModels( |
| 166 base::Bind(&syncer::ModelLoadCallbackMock::Run, | 171 base::Bind(&sync_driver::ModelLoadCallbackMock::Run, |
| 167 base::Unretained(&model_load_callback_))); | 172 base::Unretained(&model_load_callback_))); |
| 168 EXPECT_TRUE(search_engine_dtc_.GetSubscriptionForTesting()); | 173 EXPECT_TRUE(search_engine_dtc_.GetSubscriptionForTesting()); |
| 169 EXPECT_EQ(syncer::DataTypeController::MODEL_STARTING, | 174 EXPECT_EQ(sync_driver::DataTypeController::MODEL_STARTING, |
| 170 search_engine_dtc_.state()); | 175 search_engine_dtc_.state()); |
| 171 EXPECT_FALSE(syncable_service_.syncing()); | 176 EXPECT_FALSE(syncable_service_.syncing()); |
| 172 search_engine_dtc_.Stop(); | 177 search_engine_dtc_.Stop(); |
| 173 EXPECT_EQ(NULL, search_engine_dtc_.GetSubscriptionForTesting()); | 178 EXPECT_EQ(NULL, search_engine_dtc_.GetSubscriptionForTesting()); |
| 174 EXPECT_EQ(syncer::DataTypeController::NOT_RUNNING, | 179 EXPECT_EQ(sync_driver::DataTypeController::NOT_RUNNING, |
| 175 search_engine_dtc_.state()); | 180 search_engine_dtc_.state()); |
| 176 EXPECT_FALSE(syncable_service_.syncing()); | 181 EXPECT_FALSE(syncable_service_.syncing()); |
| 177 } | 182 } |
| 178 | 183 |
| 179 } // namespace | 184 } // namespace |
| 180 } // namespace browser_sync | 185 } // namespace browser_sync |
| OLD | NEW |