Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(304)

Side by Side Diff: components/sync/driver/glue/sync_backend_host_impl_unittest.cc

Issue 2563423005: [Sync] Move ConfigureDataTypes logic into DataTypeManagerImpl. (Closed)
Patch Set: Address comments. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/sync/driver/glue/sync_backend_host_impl.h" 5 #include "components/sync/driver/glue/sync_backend_host_impl.h"
6 6
7 #include <cstddef> 7 #include <cstddef>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
(...skipping 17 matching lines...) Expand all
28 #include "components/sync/device_info/device_info.h" 28 #include "components/sync/device_info/device_info.h"
29 #include "components/sync/driver/fake_sync_client.h" 29 #include "components/sync/driver/fake_sync_client.h"
30 #include "components/sync/engine/cycle/commit_counters.h" 30 #include "components/sync/engine/cycle/commit_counters.h"
31 #include "components/sync/engine/cycle/status_counters.h" 31 #include "components/sync/engine/cycle/status_counters.h"
32 #include "components/sync/engine/cycle/update_counters.h" 32 #include "components/sync/engine/cycle/update_counters.h"
33 #include "components/sync/engine/fake_sync_manager.h" 33 #include "components/sync/engine/fake_sync_manager.h"
34 #include "components/sync/engine/model_safe_worker.h" 34 #include "components/sync/engine/model_safe_worker.h"
35 #include "components/sync/engine/net/http_bridge_network_resources.h" 35 #include "components/sync/engine/net/http_bridge_network_resources.h"
36 #include "components/sync/engine/net/network_resources.h" 36 #include "components/sync/engine/net/network_resources.h"
37 #include "components/sync/engine/passive_model_worker.h" 37 #include "components/sync/engine/passive_model_worker.h"
38 #include "components/sync/engine/sync_engine_host.h" 38 #include "components/sync/engine/sync_engine_host_stub.h"
39 #include "components/sync/engine/sync_manager_factory.h" 39 #include "components/sync/engine/sync_manager_factory.h"
40 #include "components/sync/test/callback_counter.h" 40 #include "components/sync/test/callback_counter.h"
41 #include "components/sync_preferences/pref_service_syncable.h" 41 #include "components/sync_preferences/pref_service_syncable.h"
42 #include "components/sync_preferences/testing_pref_service_syncable.h" 42 #include "components/sync_preferences/testing_pref_service_syncable.h"
43 #include "google/cacheinvalidation/include/types.h" 43 #include "google/cacheinvalidation/include/types.h"
44 #include "google_apis/gaia/gaia_constants.h" 44 #include "google_apis/gaia/gaia_constants.h"
45 #include "net/url_request/test_url_fetcher_factory.h" 45 #include "net/url_request/test_url_fetcher_factory.h"
46 #include "net/url_request/url_request_context_getter.h" 46 #include "net/url_request/url_request_context_getter.h"
47 #include "testing/gmock/include/gmock/gmock.h" 47 #include "testing/gmock/include/gmock/gmock.h"
48 #include "testing/gtest/include/gtest/gtest.h" 48 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 11 matching lines...) Expand all
60 FILE_PATH_LITERAL("sync-test"); 60 FILE_PATH_LITERAL("sync-test");
61 61
62 ACTION_P(Signal, event) { 62 ACTION_P(Signal, event) {
63 event->Signal(); 63 event->Signal();
64 } 64 }
65 65
66 void EmptyNetworkTimeUpdate(const base::Time&, 66 void EmptyNetworkTimeUpdate(const base::Time&,
67 const base::TimeDelta&, 67 const base::TimeDelta&,
68 const base::TimeDelta&) {} 68 const base::TimeDelta&) {}
69 69
70 void QuitMessageLoop() { 70 class TestSyncEngineHost : public SyncEngineHostStub {
71 base::MessageLoop::current()->QuitWhenIdle(); 71 public:
72 } 72 explicit TestSyncEngineHost(
73 base::Callback<void(ModelTypeSet)> set_engine_types)
74 : set_engine_types_(set_engine_types) {}
73 75
74 class MockSyncEngineHost : public SyncEngineHost { 76 void OnEngineInitialized(ModelTypeSet initial_types,
75 public: 77 const WeakHandle<JsBackend>&,
76 virtual ~MockSyncEngineHost() {} 78 const WeakHandle<DataTypeDebugInfoListener>&,
79 const std::string&,
80 bool success) override {
81 EXPECT_EQ(expect_success_, success);
82 set_engine_types_.Run(initial_types);
83 base::MessageLoop::current()->QuitWhenIdle();
84 }
77 85
78 MOCK_METHOD5(OnEngineInitialized, 86 void SetExpectSuccess(bool expect_success) {
79 void(ModelTypeSet initial_types, 87 expect_success_ = expect_success;
80 const WeakHandle<JsBackend>&, 88 }
81 const WeakHandle<DataTypeDebugInfoListener>&, 89
82 const std::string&, 90 private:
83 bool)); 91 base::Callback<void(ModelTypeSet)> set_engine_types_;
84 MOCK_METHOD0(OnSyncCycleCompleted, void()); 92 bool expect_success_ = false;
85 MOCK_METHOD1(OnConnectionStatusChange, void(ConnectionStatus status));
86 MOCK_METHOD0(OnClearServerDataSucceeded, void());
87 MOCK_METHOD0(OnClearServerDataFailed, void());
88 MOCK_METHOD2(OnPassphraseRequired,
89 void(PassphraseRequiredReason, const sync_pb::EncryptedData&));
90 MOCK_METHOD0(OnPassphraseAccepted, void());
91 MOCK_METHOD2(OnEncryptedTypesChanged, void(ModelTypeSet, bool));
92 MOCK_METHOD0(OnEncryptionComplete, void());
93 MOCK_METHOD1(OnMigrationNeededForTypes, void(ModelTypeSet));
94 MOCK_METHOD1(OnProtocolEvent, void(const ProtocolEvent&));
95 MOCK_METHOD2(OnDirectoryTypeCommitCounterUpdated,
96 void(ModelType, const CommitCounters&));
97 MOCK_METHOD2(OnDirectoryTypeUpdateCounterUpdated,
98 void(ModelType, const UpdateCounters&));
99 MOCK_METHOD2(OnDatatypeStatusCounterUpdated,
100 void(ModelType, const StatusCounters&));
101 MOCK_METHOD1(OnExperimentsChanged, void(const Experiments&));
102 MOCK_METHOD1(OnActionableError, void(const SyncProtocolError& sync_error));
103 MOCK_METHOD0(OnSyncConfigureRetry, void());
104 MOCK_METHOD1(OnLocalSetPassphraseEncryption,
105 void(const SyncEncryptionHandler::NigoriState& nigori_state));
106 }; 93 };
107 94
108 class FakeSyncManagerFactory : public SyncManagerFactory { 95 class FakeSyncManagerFactory : public SyncManagerFactory {
109 public: 96 public:
110 explicit FakeSyncManagerFactory(FakeSyncManager** fake_manager) 97 explicit FakeSyncManagerFactory(FakeSyncManager** fake_manager)
111 : fake_manager_(fake_manager) { 98 : fake_manager_(fake_manager) {
112 *fake_manager_ = nullptr; 99 *fake_manager_ = nullptr;
113 } 100 }
114 ~FakeSyncManagerFactory() override {} 101 ~FakeSyncManagerFactory() override {}
115 102
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 return new PassiveModelWorker(); 137 return new PassiveModelWorker();
151 default: 138 default:
152 return nullptr; 139 return nullptr;
153 } 140 }
154 } 141 }
155 }; 142 };
156 143
157 class SyncEngineTest : public testing::Test { 144 class SyncEngineTest : public testing::Test {
158 protected: 145 protected:
159 SyncEngineTest() 146 SyncEngineTest()
160 : sync_thread_("SyncThreadForTest"), fake_manager_(nullptr) {} 147 : sync_thread_("SyncThreadForTest"),
148 host_(base::Bind(&SyncEngineTest::SetEngineTypes,
149 base::Unretained(this))),
150 fake_manager_(nullptr) {}
161 151
162 ~SyncEngineTest() override {} 152 ~SyncEngineTest() override {}
163 153
164 void SetUp() override { 154 void SetUp() override {
165 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 155 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
166 156
167 SyncPrefs::RegisterProfilePrefs(pref_service_.registry()); 157 SyncPrefs::RegisterProfilePrefs(pref_service_.registry());
168 158
169 sync_prefs_ = base::MakeUnique<SyncPrefs>(&pref_service_); 159 sync_prefs_ = base::MakeUnique<SyncPrefs>(&pref_service_);
170 sync_thread_.StartAndWaitForTesting(); 160 sync_thread_.StartAndWaitForTesting();
(...skipping 28 matching lines...) Expand all
199 backend_->Shutdown(STOP_SYNC); 189 backend_->Shutdown(STOP_SYNC);
200 } 190 }
201 backend_.reset(); 191 backend_.reset();
202 sync_prefs_.reset(); 192 sync_prefs_.reset();
203 // Pump messages posted by the sync thread. 193 // Pump messages posted by the sync thread.
204 base::RunLoop().RunUntilIdle(); 194 base::RunLoop().RunUntilIdle();
205 } 195 }
206 196
207 // Synchronously initializes the backend. 197 // Synchronously initializes the backend.
208 void InitializeBackend(bool expect_success) { 198 void InitializeBackend(bool expect_success) {
209 EXPECT_CALL(mock_host_, OnEngineInitialized(_, _, _, _, expect_success)) 199 host_.SetExpectSuccess(expect_success);
210 .WillOnce(InvokeWithoutArgs(QuitMessageLoop));
211 SyncEngine::HttpPostProviderFactoryGetter 200 SyncEngine::HttpPostProviderFactoryGetter
212 http_post_provider_factory_getter = 201 http_post_provider_factory_getter =
213 base::Bind(&NetworkResources::GetHttpPostProviderFactory, 202 base::Bind(&NetworkResources::GetHttpPostProviderFactory,
214 base::Unretained(network_resources_.get()), nullptr, 203 base::Unretained(network_resources_.get()), nullptr,
215 base::Bind(&EmptyNetworkTimeUpdate)); 204 base::Bind(&EmptyNetworkTimeUpdate));
216 205
217 SyncEngine::InitParams params; 206 SyncEngine::InitParams params;
218 params.sync_task_runner = sync_thread_.task_runner(); 207 params.sync_task_runner = sync_thread_.task_runner();
219 params.host = &mock_host_; 208 params.host = &host_;
220 params.registrar = base::MakeUnique<SyncBackendRegistrar>( 209 params.registrar = base::MakeUnique<SyncBackendRegistrar>(
221 std::string(), base::Bind(&SyncClient::CreateModelWorkerForGroup, 210 std::string(), base::Bind(&SyncClient::CreateModelWorkerForGroup,
222 base::Unretained(&sync_client_))); 211 base::Unretained(&sync_client_)));
223 params.http_factory_getter = http_post_provider_factory_getter; 212 params.http_factory_getter = http_post_provider_factory_getter;
224 params.credentials = credentials_; 213 params.credentials = credentials_;
225 params.sync_manager_factory = std::move(fake_manager_factory_); 214 params.sync_manager_factory = std::move(fake_manager_factory_);
226 params.delete_sync_data_folder = true; 215 params.delete_sync_data_folder = true;
227 params.unrecoverable_error_handler = 216 params.unrecoverable_error_handler =
228 MakeWeakHandle(test_unrecoverable_error_handler_.GetWeakPtr()), 217 MakeWeakHandle(test_unrecoverable_error_handler_.GetWeakPtr()),
229 params.saved_nigori_state = std::move(saved_nigori_state_); 218 params.saved_nigori_state = std::move(saved_nigori_state_);
230 sync_prefs_->GetInvalidationVersions(&params.invalidation_versions); 219 sync_prefs_->GetInvalidationVersions(&params.invalidation_versions);
231 220
232 backend_->Initialize(std::move(params)); 221 backend_->Initialize(std::move(params));
233 222
234 base::RunLoop run_loop; 223 PumpSyncThread();
235 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
236 FROM_HERE, run_loop.QuitClosure(), TestTimeouts::action_timeout());
237 run_loop.Run();
238 // |fake_manager_factory_|'s fake_manager() is set on the sync 224 // |fake_manager_factory_|'s fake_manager() is set on the sync
239 // thread, but we can rely on the message loop barriers to 225 // thread, but we can rely on the message loop barriers to
240 // guarantee that we see the updated value. 226 // guarantee that we see the updated value.
241 DCHECK(fake_manager_); 227 DCHECK(fake_manager_);
242 } 228 }
243 229
244 // Returns DataTypeConfigStateMap with all |enabled_types_| in 230 // Synchronously configures the backend's datatypes.
245 // CONFIGURE_ACTIVE state and all remaining types DISABLED. 231 ModelTypeSet ConfigureDataTypes() {
246 ModelTypeConfigurer::DataTypeConfigStateMap ConfigStateMapForEnabledTypes() { 232 return ConfigureDataTypesWithUnready(ModelTypeSet());
247 ModelTypeConfigurer::DataTypeConfigStateMap config_state_map;
248 ModelTypeConfigurer::SetDataTypesState(
249 ModelTypeConfigurer::CONFIGURE_ACTIVE, enabled_types_,
250 &config_state_map);
251 ModelTypeConfigurer::SetDataTypesState(
252 ModelTypeConfigurer::DISABLED,
253 Difference(ModelTypeSet::All(), enabled_types_), &config_state_map);
254 return config_state_map;
255 } 233 }
256 234
257 // Synchronously configures the backend's datatypes. 235 ModelTypeSet ConfigureDataTypesWithUnready(ModelTypeSet unready_types) {
258 ModelTypeSet ConfigureDataTypes( 236 ModelTypeSet disabled_types =
259 const ModelTypeConfigurer::DataTypeConfigStateMap& config_state_map) { 237 Difference(ModelTypeSet::All(), enabled_types_);
260 ModelTypeSet ready_types = backend_->ConfigureDataTypes( 238
261 CONFIGURE_REASON_RECONFIGURATION, config_state_map, 239 ModelTypeConfigurer::ConfigureParams params;
262 base::Bind(&SyncEngineTest::DownloadReady, base::Unretained(this)), 240 params.reason = CONFIGURE_REASON_RECONFIGURATION;
263 base::Bind(&SyncEngineTest::OnDownloadRetry, base::Unretained(this))); 241 params.enabled_types = Difference(enabled_types_, unready_types);
264 base::RunLoop run_loop; 242 params.disabled_types = Union(disabled_types, unready_types);
265 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( 243 params.to_download = Difference(params.enabled_types, engine_types_);
266 FROM_HERE, run_loop.QuitClosure(), TestTimeouts::action_timeout()); 244 if (!params.to_download.Empty()) {
267 run_loop.Run(); 245 params.to_download.Put(NIGORI);
246 }
247 params.to_purge = Intersection(engine_types_, disabled_types);
248 params.ready_task =
249 base::Bind(&SyncEngineTest::DownloadReady, base::Unretained(this));
250 params.retry_callback =
251 base::Bind(&SyncEngineTest::OnDownloadRetry, base::Unretained(this));
252
253 ModelTypeSet ready_types =
254 Difference(params.enabled_types, params.to_download);
255 backend_->ConfigureDataTypes(std::move(params));
256 PumpSyncThread();
257
268 return ready_types; 258 return ready_types;
269 } 259 }
270 260
271 protected: 261 protected:
272 void DownloadReady(ModelTypeSet succeeded_types, ModelTypeSet failed_types) { 262 void DownloadReady(ModelTypeSet succeeded_types, ModelTypeSet failed_types) {
263 engine_types_.PutAll(succeeded_types);
273 base::MessageLoop::current()->QuitWhenIdle(); 264 base::MessageLoop::current()->QuitWhenIdle();
274 } 265 }
275 266
276 void OnDownloadRetry() { NOTIMPLEMENTED(); } 267 void OnDownloadRetry() { NOTIMPLEMENTED(); }
277 268
269 void SetEngineTypes(ModelTypeSet engine_types) {
270 EXPECT_TRUE(engine_types_.Empty());
271 engine_types_ = engine_types;
272 }
273
274 void PumpSyncThread() {
275 base::RunLoop run_loop;
276 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
277 FROM_HERE, run_loop.QuitClosure(), TestTimeouts::action_timeout());
278 run_loop.Run();
279 }
280
278 base::MessageLoop message_loop_; 281 base::MessageLoop message_loop_;
279 base::ScopedTempDir temp_dir_; 282 base::ScopedTempDir temp_dir_;
280 sync_preferences::TestingPrefServiceSyncable pref_service_; 283 sync_preferences::TestingPrefServiceSyncable pref_service_;
281 base::Thread sync_thread_; 284 base::Thread sync_thread_;
282 StrictMock<MockSyncEngineHost> mock_host_; 285 TestSyncEngineHost host_;
283 SyncCredentials credentials_; 286 SyncCredentials credentials_;
284 BackendSyncClient sync_client_; 287 BackendSyncClient sync_client_;
285 TestUnrecoverableErrorHandler test_unrecoverable_error_handler_; 288 TestUnrecoverableErrorHandler test_unrecoverable_error_handler_;
286 std::unique_ptr<SyncPrefs> sync_prefs_; 289 std::unique_ptr<SyncPrefs> sync_prefs_;
287 std::unique_ptr<SyncBackendHostImpl> backend_; 290 std::unique_ptr<SyncBackendHostImpl> backend_;
288 std::unique_ptr<FakeSyncManagerFactory> fake_manager_factory_; 291 std::unique_ptr<FakeSyncManagerFactory> fake_manager_factory_;
289 FakeSyncManager* fake_manager_; 292 FakeSyncManager* fake_manager_;
293 ModelTypeSet engine_types_;
290 ModelTypeSet enabled_types_; 294 ModelTypeSet enabled_types_;
291 std::unique_ptr<NetworkResources> network_resources_; 295 std::unique_ptr<NetworkResources> network_resources_;
292 std::unique_ptr<SyncEncryptionHandler::NigoriState> saved_nigori_state_; 296 std::unique_ptr<SyncEncryptionHandler::NigoriState> saved_nigori_state_;
293 }; 297 };
294 298
295 // Test basic initialization with no initial types (first time initialization). 299 // Test basic initialization with no initial types (first time initialization).
296 // Only the nigori should be configured. 300 // Only the nigori should be configured.
297 TEST_F(SyncEngineTest, InitShutdown) { 301 TEST_F(SyncEngineTest, InitShutdown) {
298 InitializeBackend(true); 302 InitializeBackend(true);
299 EXPECT_EQ(ControlTypes(), fake_manager_->GetAndResetDownloadedTypes()); 303 EXPECT_EQ(ControlTypes(), fake_manager_->GetAndResetDownloadedTypes());
300 EXPECT_EQ(ControlTypes(), fake_manager_->InitialSyncEndedTypes()); 304 EXPECT_EQ(ControlTypes(), fake_manager_->InitialSyncEndedTypes());
301 EXPECT_TRUE( 305 EXPECT_TRUE(
302 fake_manager_->GetTypesWithEmptyProgressMarkerToken(ControlTypes()) 306 fake_manager_->GetTypesWithEmptyProgressMarkerToken(ControlTypes())
303 .Empty()); 307 .Empty());
304 } 308 }
305 309
306 // Test first time sync scenario. All types should be properly configured. 310 // Test first time sync scenario. All types should be properly configured.
307 311
308 TEST_F(SyncEngineTest, FirstTimeSync) { 312 TEST_F(SyncEngineTest, FirstTimeSync) {
309 InitializeBackend(true); 313 InitializeBackend(true);
310 EXPECT_EQ(ControlTypes(), fake_manager_->GetAndResetDownloadedTypes()); 314 EXPECT_EQ(ControlTypes(), fake_manager_->GetAndResetDownloadedTypes());
311 EXPECT_EQ(ControlTypes(), fake_manager_->InitialSyncEndedTypes()); 315 EXPECT_EQ(ControlTypes(), fake_manager_->InitialSyncEndedTypes());
312 EXPECT_TRUE( 316 EXPECT_TRUE(
313 fake_manager_->GetTypesWithEmptyProgressMarkerToken(ControlTypes()) 317 fake_manager_->GetTypesWithEmptyProgressMarkerToken(ControlTypes())
314 .Empty()); 318 .Empty());
315 319
316 ModelTypeSet ready_types = 320 ModelTypeSet ready_types = ConfigureDataTypes();
317 ConfigureDataTypes(ConfigStateMapForEnabledTypes());
318 // Nigori is always downloaded so won't be ready. 321 // Nigori is always downloaded so won't be ready.
319 EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types); 322 EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types);
320 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll( 323 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll(
321 Difference(enabled_types_, ControlTypes()))); 324 Difference(enabled_types_, ControlTypes())));
322 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes()); 325 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes());
323 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes()); 326 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes());
324 EXPECT_TRUE( 327 EXPECT_TRUE(
325 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_) 328 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)
326 .Empty()); 329 .Empty());
327 } 330 }
328 331
329 // Test the restart after setting up sync scenario. No enabled types should be 332 // Test the restart after setting up sync scenario. No enabled types should be
330 // downloaded or cleaned. 333 // downloaded or cleaned.
331 TEST_F(SyncEngineTest, Restart) { 334 TEST_F(SyncEngineTest, Restart) {
332 sync_prefs_->SetFirstSetupComplete(); 335 sync_prefs_->SetFirstSetupComplete();
333 ModelTypeSet all_but_nigori = enabled_types_; 336 ModelTypeSet all_but_nigori = enabled_types_;
334 fake_manager_factory_->set_progress_marker_types(enabled_types_); 337 fake_manager_factory_->set_progress_marker_types(enabled_types_);
335 fake_manager_factory_->set_initial_sync_ended_types(enabled_types_); 338 fake_manager_factory_->set_initial_sync_ended_types(enabled_types_);
336 InitializeBackend(true); 339 InitializeBackend(true);
337 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); 340 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty());
338 EXPECT_TRUE( 341 EXPECT_TRUE(
339 Intersection(fake_manager_->GetAndResetPurgedTypes(), enabled_types_) 342 Intersection(fake_manager_->GetAndResetPurgedTypes(), enabled_types_)
340 .Empty()); 343 .Empty());
341 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes()); 344 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes());
342 EXPECT_TRUE( 345 EXPECT_TRUE(
343 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_) 346 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)
344 .Empty()); 347 .Empty());
345 348
346 ModelTypeSet ready_types = 349 ModelTypeSet ready_types = ConfigureDataTypes();
347 ConfigureDataTypes(ConfigStateMapForEnabledTypes());
348 EXPECT_EQ(enabled_types_, ready_types); 350 EXPECT_EQ(enabled_types_, ready_types);
349 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); 351 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty());
350 EXPECT_TRUE( 352 EXPECT_TRUE(
351 Intersection(fake_manager_->GetAndResetPurgedTypes(), enabled_types_) 353 Intersection(fake_manager_->GetAndResetPurgedTypes(), enabled_types_)
352 .Empty()); 354 .Empty());
353 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes()); 355 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes());
354 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes()); 356 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes());
355 EXPECT_TRUE( 357 EXPECT_TRUE(
356 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_) 358 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)
357 .Empty()); 359 .Empty());
(...skipping 15 matching lines...) Expand all
373 InitializeBackend(true); 375 InitializeBackend(true);
374 EXPECT_EQ(ModelTypeSet(NIGORI), fake_manager_->GetAndResetDownloadedTypes()); 376 EXPECT_EQ(ModelTypeSet(NIGORI), fake_manager_->GetAndResetDownloadedTypes());
375 EXPECT_TRUE(fake_manager_->GetAndResetPurgedTypes().HasAll(partial_types)); 377 EXPECT_TRUE(fake_manager_->GetAndResetPurgedTypes().HasAll(partial_types));
376 EXPECT_EQ(Union(full_types, ModelTypeSet(NIGORI)), 378 EXPECT_EQ(Union(full_types, ModelTypeSet(NIGORI)),
377 fake_manager_->InitialSyncEndedTypes()); 379 fake_manager_->InitialSyncEndedTypes());
378 EXPECT_EQ( 380 EXPECT_EQ(
379 Difference(partial_types, ModelTypeSet(NIGORI)), 381 Difference(partial_types, ModelTypeSet(NIGORI)),
380 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)); 382 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_));
381 383
382 // Now do the actual configuration, which should download and apply bookmarks. 384 // Now do the actual configuration, which should download and apply bookmarks.
383 ModelTypeSet ready_types = 385 ModelTypeSet ready_types = ConfigureDataTypes();
384 ConfigureDataTypes(ConfigStateMapForEnabledTypes());
385 EXPECT_EQ(full_types, ready_types); 386 EXPECT_EQ(full_types, ready_types);
386 EXPECT_TRUE( 387 EXPECT_TRUE(
387 Intersection(fake_manager_->GetAndResetPurgedTypes(), enabled_types_) 388 Intersection(fake_manager_->GetAndResetPurgedTypes(), enabled_types_)
388 .Empty()); 389 .Empty());
389 EXPECT_EQ(partial_types, fake_manager_->GetAndResetDownloadedTypes()); 390 EXPECT_EQ(partial_types, fake_manager_->GetAndResetDownloadedTypes());
390 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes()); 391 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes());
391 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes()); 392 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes());
392 EXPECT_TRUE( 393 EXPECT_TRUE(
393 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_) 394 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)
394 .Empty()); 395 .Empty());
(...skipping 12 matching lines...) Expand all
407 fake_manager_->InitialSyncEndedTypes()); 408 fake_manager_->InitialSyncEndedTypes());
408 EXPECT_EQ( 409 EXPECT_EQ(
409 Difference(enabled_types_, ControlTypes()), 410 Difference(enabled_types_, ControlTypes()),
410 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)); 411 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_));
411 412
412 // The database was empty, so any cleaning is entirely optional. We want to 413 // The database was empty, so any cleaning is entirely optional. We want to
413 // reset this value before running the next part of the test, though. 414 // reset this value before running the next part of the test, though.
414 fake_manager_->GetAndResetPurgedTypes(); 415 fake_manager_->GetAndResetPurgedTypes();
415 416
416 // The actual configuration should redownload and apply all the enabled types. 417 // The actual configuration should redownload and apply all the enabled types.
417 ModelTypeSet ready_types = 418 ModelTypeSet ready_types = ConfigureDataTypes();
418 ConfigureDataTypes(ConfigStateMapForEnabledTypes());
419 // Nigori is always downloaded so won't be ready. 419 // Nigori is always downloaded so won't be ready.
420 EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types); 420 EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types);
421 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll( 421 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll(
422 Difference(enabled_types_, ControlTypes()))); 422 Difference(enabled_types_, ControlTypes())));
423 EXPECT_TRUE( 423 EXPECT_TRUE(
424 Intersection(fake_manager_->GetAndResetPurgedTypes(), enabled_types_) 424 Intersection(fake_manager_->GetAndResetPurgedTypes(), enabled_types_)
425 .Empty()); 425 .Empty());
426 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes()); 426 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes());
427 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes()); 427 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes());
428 EXPECT_TRUE( 428 EXPECT_TRUE(
429 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_) 429 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)
430 .Empty()); 430 .Empty());
431 } 431 }
432 432
433 TEST_F(SyncEngineTest, DisableTypes) { 433 TEST_F(SyncEngineTest, DisableTypes) {
434 // Simulate first time sync. 434 // Simulate first time sync.
435 InitializeBackend(true); 435 InitializeBackend(true);
436 fake_manager_->GetAndResetPurgedTypes(); 436 fake_manager_->GetAndResetPurgedTypes();
437 ModelTypeSet ready_types = 437 ModelTypeSet ready_types = ConfigureDataTypes();
438 ConfigureDataTypes(ConfigStateMapForEnabledTypes());
439 // Nigori is always downloaded so won't be ready. 438 // Nigori is always downloaded so won't be ready.
440 EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types); 439 EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types);
441 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetDownloadedTypes()); 440 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetDownloadedTypes());
442 EXPECT_TRUE( 441 EXPECT_TRUE(
443 Intersection(fake_manager_->GetAndResetPurgedTypes(), enabled_types_) 442 Intersection(fake_manager_->GetAndResetPurgedTypes(), enabled_types_)
444 .Empty()); 443 .Empty());
445 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes()); 444 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes());
446 EXPECT_TRUE( 445 EXPECT_TRUE(
447 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_) 446 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)
448 .Empty()); 447 .Empty());
449 448
450 // Then disable two datatypes. 449 // Then disable two datatypes.
451 ModelTypeSet disabled_types(BOOKMARKS, SEARCH_ENGINES); 450 ModelTypeSet disabled_types(BOOKMARKS, SEARCH_ENGINES);
452 ModelTypeSet old_types = enabled_types_; 451 ModelTypeSet old_types = enabled_types_;
453 enabled_types_.RemoveAll(disabled_types); 452 enabled_types_.RemoveAll(disabled_types);
454 ready_types = ConfigureDataTypes(ConfigStateMapForEnabledTypes()); 453 ready_types = ConfigureDataTypes();
455 454
456 // Only those datatypes disabled should be cleaned. Nothing should be 455 // Only those datatypes disabled should be cleaned. Nothing should be
457 // downloaded. 456 // downloaded.
458 EXPECT_EQ(enabled_types_, ready_types); 457 EXPECT_EQ(enabled_types_, ready_types);
459 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); 458 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty());
460 EXPECT_EQ(disabled_types, 459 EXPECT_EQ(disabled_types,
461 Intersection(fake_manager_->GetAndResetPurgedTypes(), old_types)); 460 Intersection(fake_manager_->GetAndResetPurgedTypes(), old_types));
462 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes()); 461 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes());
463 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes()); 462 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes());
464 EXPECT_TRUE( 463 EXPECT_TRUE(
465 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_) 464 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)
466 .Empty()); 465 .Empty());
467 } 466 }
468 467
469 TEST_F(SyncEngineTest, AddTypes) { 468 TEST_F(SyncEngineTest, AddTypes) {
470 // Simulate first time sync. 469 // Simulate first time sync.
471 InitializeBackend(true); 470 InitializeBackend(true);
472 fake_manager_->GetAndResetPurgedTypes(); 471 fake_manager_->GetAndResetPurgedTypes();
473 ModelTypeSet ready_types = 472 ModelTypeSet ready_types = ConfigureDataTypes();
474 ConfigureDataTypes(ConfigStateMapForEnabledTypes());
475 // Nigori is always downloaded so won't be ready. 473 // Nigori is always downloaded so won't be ready.
476 EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types); 474 EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types);
477 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetDownloadedTypes()); 475 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetDownloadedTypes());
478 EXPECT_TRUE( 476 EXPECT_TRUE(
479 Intersection(fake_manager_->GetAndResetPurgedTypes(), enabled_types_) 477 Intersection(fake_manager_->GetAndResetPurgedTypes(), enabled_types_)
480 .Empty()); 478 .Empty());
481 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes()); 479 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes());
482 EXPECT_TRUE( 480 EXPECT_TRUE(
483 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_) 481 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)
484 .Empty()); 482 .Empty());
485 483
486 // Then add two datatypes. 484 // Then add two datatypes.
487 ModelTypeSet new_types(EXTENSIONS, APPS); 485 ModelTypeSet new_types(EXTENSIONS, APPS);
488 enabled_types_.PutAll(new_types); 486 enabled_types_.PutAll(new_types);
489 ready_types = ConfigureDataTypes(ConfigStateMapForEnabledTypes()); 487 ready_types = ConfigureDataTypes();
490 488
491 // Only those datatypes added should be downloaded (plus nigori). Nothing 489 // Only those datatypes added should be downloaded (plus nigori). Nothing
492 // should be cleaned aside from the disabled types. 490 // should be cleaned aside from the disabled types.
493 new_types.Put(NIGORI); 491 new_types.Put(NIGORI);
494 EXPECT_EQ(Difference(enabled_types_, new_types), ready_types); 492 EXPECT_EQ(Difference(enabled_types_, new_types), ready_types);
495 EXPECT_EQ(new_types, fake_manager_->GetAndResetDownloadedTypes()); 493 EXPECT_EQ(new_types, fake_manager_->GetAndResetDownloadedTypes());
496 EXPECT_TRUE( 494 EXPECT_TRUE(
497 Intersection(fake_manager_->GetAndResetPurgedTypes(), enabled_types_) 495 Intersection(fake_manager_->GetAndResetPurgedTypes(), enabled_types_)
498 .Empty()); 496 .Empty());
499 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes()); 497 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes());
500 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes()); 498 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes());
501 EXPECT_TRUE( 499 EXPECT_TRUE(
502 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_) 500 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)
503 .Empty()); 501 .Empty());
504 } 502 }
505 503
506 // And and disable in the same configuration. 504 // And and disable in the same configuration.
507 TEST_F(SyncEngineTest, AddDisableTypes) { 505 TEST_F(SyncEngineTest, AddDisableTypes) {
508 // Simulate first time sync. 506 // Simulate first time sync.
509 InitializeBackend(true); 507 InitializeBackend(true);
510 fake_manager_->GetAndResetPurgedTypes(); 508 fake_manager_->GetAndResetPurgedTypes();
511 ModelTypeSet ready_types = 509 ModelTypeSet ready_types = ConfigureDataTypes();
512 ConfigureDataTypes(ConfigStateMapForEnabledTypes());
513 // Nigori is always downloaded so won't be ready. 510 // Nigori is always downloaded so won't be ready.
514 EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types); 511 EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types);
515 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetDownloadedTypes()); 512 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetDownloadedTypes());
516 EXPECT_TRUE( 513 EXPECT_TRUE(
517 Intersection(fake_manager_->GetAndResetPurgedTypes(), enabled_types_) 514 Intersection(fake_manager_->GetAndResetPurgedTypes(), enabled_types_)
518 .Empty()); 515 .Empty());
519 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes()); 516 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes());
520 EXPECT_TRUE( 517 EXPECT_TRUE(
521 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_) 518 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)
522 .Empty()); 519 .Empty());
523 520
524 // Then add two datatypes. 521 // Then add two datatypes.
525 ModelTypeSet old_types = enabled_types_; 522 ModelTypeSet old_types = enabled_types_;
526 ModelTypeSet disabled_types(BOOKMARKS, SEARCH_ENGINES); 523 ModelTypeSet disabled_types(BOOKMARKS, SEARCH_ENGINES);
527 ModelTypeSet new_types(EXTENSIONS, APPS); 524 ModelTypeSet new_types(EXTENSIONS, APPS);
528 enabled_types_.PutAll(new_types); 525 enabled_types_.PutAll(new_types);
529 enabled_types_.RemoveAll(disabled_types); 526 enabled_types_.RemoveAll(disabled_types);
530 ready_types = ConfigureDataTypes(ConfigStateMapForEnabledTypes()); 527 ready_types = ConfigureDataTypes();
531 528
532 // Only those datatypes added should be downloaded (plus nigori). Nothing 529 // Only those datatypes added should be downloaded (plus nigori). Nothing
533 // should be cleaned aside from the disabled types. 530 // should be cleaned aside from the disabled types.
534 new_types.Put(NIGORI); 531 new_types.Put(NIGORI);
535 EXPECT_EQ(Difference(enabled_types_, new_types), ready_types); 532 EXPECT_EQ(Difference(enabled_types_, new_types), ready_types);
536 EXPECT_EQ(new_types, fake_manager_->GetAndResetDownloadedTypes()); 533 EXPECT_EQ(new_types, fake_manager_->GetAndResetDownloadedTypes());
537 EXPECT_EQ(disabled_types, 534 EXPECT_EQ(disabled_types,
538 Intersection(fake_manager_->GetAndResetPurgedTypes(), old_types)); 535 Intersection(fake_manager_->GetAndResetPurgedTypes(), old_types));
539 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes()); 536 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes());
540 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes()); 537 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes());
(...skipping 16 matching lines...) Expand all
557 // Does nothing. 554 // Does nothing.
558 InitializeBackend(true); 555 InitializeBackend(true);
559 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); 556 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty());
560 EXPECT_TRUE( 557 EXPECT_TRUE(
561 Intersection(fake_manager_->GetAndResetPurgedTypes(), old_types).Empty()); 558 Intersection(fake_manager_->GetAndResetPurgedTypes(), old_types).Empty());
562 EXPECT_EQ(old_types, fake_manager_->InitialSyncEndedTypes()); 559 EXPECT_EQ(old_types, fake_manager_->InitialSyncEndedTypes());
563 EXPECT_EQ(new_types, fake_manager_->GetTypesWithEmptyProgressMarkerToken( 560 EXPECT_EQ(new_types, fake_manager_->GetTypesWithEmptyProgressMarkerToken(
564 enabled_types_)); 561 enabled_types_));
565 562
566 // Downloads and applies the new types (plus nigori). 563 // Downloads and applies the new types (plus nigori).
567 ModelTypeSet ready_types = 564 ModelTypeSet ready_types = ConfigureDataTypes();
568 ConfigureDataTypes(ConfigStateMapForEnabledTypes());
569 565
570 new_types.Put(NIGORI); 566 new_types.Put(NIGORI);
571 EXPECT_EQ(Difference(old_types, ModelTypeSet(NIGORI)), ready_types); 567 EXPECT_EQ(Difference(old_types, ModelTypeSet(NIGORI)), ready_types);
572 EXPECT_EQ(new_types, fake_manager_->GetAndResetDownloadedTypes()); 568 EXPECT_EQ(new_types, fake_manager_->GetAndResetDownloadedTypes());
573 EXPECT_TRUE( 569 EXPECT_TRUE(
574 Intersection(fake_manager_->GetAndResetPurgedTypes(), enabled_types_) 570 Intersection(fake_manager_->GetAndResetPurgedTypes(), enabled_types_)
575 .Empty()); 571 .Empty());
576 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes()); 572 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes());
577 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes()); 573 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes());
578 EXPECT_TRUE( 574 EXPECT_TRUE(
(...skipping 22 matching lines...) Expand all
601 EXPECT_EQ(ModelTypeSet(NIGORI), fake_manager_->GetAndResetDownloadedTypes()); 597 EXPECT_EQ(ModelTypeSet(NIGORI), fake_manager_->GetAndResetDownloadedTypes());
602 EXPECT_TRUE(fake_manager_->GetAndResetPurgedTypes().HasAll(partial_types)); 598 EXPECT_TRUE(fake_manager_->GetAndResetPurgedTypes().HasAll(partial_types));
603 EXPECT_EQ(Union(full_types, ModelTypeSet(NIGORI)), 599 EXPECT_EQ(Union(full_types, ModelTypeSet(NIGORI)),
604 fake_manager_->InitialSyncEndedTypes()); 600 fake_manager_->InitialSyncEndedTypes());
605 EXPECT_EQ( 601 EXPECT_EQ(
606 Union(new_types, Difference(partial_types, ModelTypeSet(NIGORI))), 602 Union(new_types, Difference(partial_types, ModelTypeSet(NIGORI))),
607 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)); 603 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_));
608 604
609 // Downloads and applies the new types and partial types (which includes 605 // Downloads and applies the new types and partial types (which includes
610 // nigori anyways). 606 // nigori anyways).
611 ModelTypeSet ready_types = 607 ModelTypeSet ready_types = ConfigureDataTypes();
612 ConfigureDataTypes(ConfigStateMapForEnabledTypes());
613 EXPECT_EQ(full_types, ready_types); 608 EXPECT_EQ(full_types, ready_types);
614 EXPECT_EQ(Union(new_types, partial_types), 609 EXPECT_EQ(Union(new_types, partial_types),
615 fake_manager_->GetAndResetDownloadedTypes()); 610 fake_manager_->GetAndResetDownloadedTypes());
616 EXPECT_TRUE( 611 EXPECT_TRUE(
617 Intersection(fake_manager_->GetAndResetPurgedTypes(), enabled_types_) 612 Intersection(fake_manager_->GetAndResetPurgedTypes(), enabled_types_)
618 .Empty()); 613 .Empty());
619 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes()); 614 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes());
620 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes()); 615 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes());
621 EXPECT_TRUE( 616 EXPECT_TRUE(
622 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_) 617 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
709 // If bookmarks encounter an error that results in disabling without purging 704 // If bookmarks encounter an error that results in disabling without purging
710 // (such as when the type is unready), and then is explicitly disabled, the 705 // (such as when the type is unready), and then is explicitly disabled, the
711 // SyncEngine needs to tell the manager to purge the type, even though 706 // SyncEngine needs to tell the manager to purge the type, even though
712 // it's already disabled (crbug.com/386778). 707 // it's already disabled (crbug.com/386778).
713 TEST_F(SyncEngineTest, DisableThenPurgeType) { 708 TEST_F(SyncEngineTest, DisableThenPurgeType) {
714 ModelTypeSet error_types(BOOKMARKS); 709 ModelTypeSet error_types(BOOKMARKS);
715 710
716 InitializeBackend(true); 711 InitializeBackend(true);
717 712
718 // First enable the types. 713 // First enable the types.
719 ModelTypeSet ready_types = 714 ModelTypeSet ready_types = ConfigureDataTypes();
720 ConfigureDataTypes(ConfigStateMapForEnabledTypes());
721 715
722 // Nigori is always downloaded so won't be ready. 716 // Nigori is always downloaded so won't be ready.
723 EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types); 717 EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types);
724 718
725 // Then mark the error types as unready (disables without purging). 719 // Then mark the error types as unready (disables without purging).
726 ModelTypeConfigurer::DataTypeConfigStateMap config_state_map = 720 ready_types = ConfigureDataTypesWithUnready(error_types);
727 ConfigStateMapForEnabledTypes();
728 ModelTypeConfigurer::SetDataTypesState(ModelTypeConfigurer::UNREADY,
729 error_types, &config_state_map);
730 ready_types = ConfigureDataTypes(config_state_map);
731 EXPECT_EQ(Difference(enabled_types_, error_types), ready_types); 721 EXPECT_EQ(Difference(enabled_types_, error_types), ready_types);
732 EXPECT_TRUE( 722 EXPECT_TRUE(
733 fake_manager_->GetTypesWithEmptyProgressMarkerToken(error_types).Empty()); 723 fake_manager_->GetTypesWithEmptyProgressMarkerToken(error_types).Empty());
734 724
735 // Lastly explicitly disable the error types, which should result in a purge. 725 // Lastly explicitly disable the error types, which should result in a purge.
736 enabled_types_.RemoveAll(error_types); 726 enabled_types_.RemoveAll(error_types);
737 ready_types = ConfigureDataTypes(ConfigStateMapForEnabledTypes()); 727 ready_types = ConfigureDataTypes();
738 EXPECT_EQ(Difference(enabled_types_, error_types), ready_types); 728 EXPECT_EQ(Difference(enabled_types_, error_types), ready_types);
739 EXPECT_FALSE( 729 EXPECT_FALSE(
740 fake_manager_->GetTypesWithEmptyProgressMarkerToken(error_types).Empty()); 730 fake_manager_->GetTypesWithEmptyProgressMarkerToken(error_types).Empty());
741 } 731 }
742 732
743 // Test that a call to ClearServerData is forwarded to the underlying 733 // Test that a call to ClearServerData is forwarded to the underlying
744 // SyncManager. 734 // SyncManager.
745 TEST_F(SyncEngineTest, ClearServerDataCallsAreForwarded) { 735 TEST_F(SyncEngineTest, ClearServerDataCallsAreForwarded) {
746 InitializeBackend(true); 736 InitializeBackend(true);
747 CallbackCounter callback_counter; 737 CallbackCounter callback_counter;
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
816 // DataTypeManager shutdown. 806 // DataTypeManager shutdown.
817 TEST_F(SyncEngineTest, ModelTypeConnectorValidDuringShutdown) { 807 TEST_F(SyncEngineTest, ModelTypeConnectorValidDuringShutdown) {
818 InitializeBackend(true); 808 InitializeBackend(true);
819 backend_->StopSyncingForShutdown(); 809 backend_->StopSyncingForShutdown();
820 // Verify that call to DeactivateNonBlockingDataType doesn't assert. 810 // Verify that call to DeactivateNonBlockingDataType doesn't assert.
821 backend_->DeactivateNonBlockingDataType(AUTOFILL); 811 backend_->DeactivateNonBlockingDataType(AUTOFILL);
822 backend_->Shutdown(STOP_SYNC); 812 backend_->Shutdown(STOP_SYNC);
823 backend_.reset(); 813 backend_.reset();
824 } 814 }
825 815
826 // Ensure that types in CONFIGURE_CLEAN state are unapplied.
827 TEST_F(SyncEngineTest, ConfigureCelanTypesAreUnapplied) {
828 ModelTypeSet clean_types(AUTOFILL);
829
830 InitializeBackend(true);
831
832 // First enable the types.
833 ModelTypeSet ready_types =
834 ConfigureDataTypes(ConfigStateMapForEnabledTypes());
835 EXPECT_TRUE(
836 fake_manager_->GetTypesWithEmptyProgressMarkerToken(clean_types).Empty());
837
838 // Then unapply AUTOFILL.
839 ModelTypeConfigurer::DataTypeConfigStateMap config_state_map =
840 ConfigStateMapForEnabledTypes();
841 ModelTypeConfigurer::SetDataTypesState(ModelTypeConfigurer::CONFIGURE_CLEAN,
842 clean_types, &config_state_map);
843
844 ready_types = ConfigureDataTypes(config_state_map);
845
846 // Autofill should be unapplied as part of PurgeDisabledTypes, but should
847 // retain progress markers.
848 ModelTypeSet purged_types = fake_manager_->GetAndResetPurgedTypes();
849 ModelTypeSet unapplied_types = fake_manager_->GetAndResetUnappliedTypes();
850 EXPECT_EQ(unapplied_types, clean_types);
851 EXPECT_TRUE(purged_types.HasAll(clean_types));
852 EXPECT_TRUE(
853 fake_manager_->GetTypesWithEmptyProgressMarkerToken(clean_types).Empty());
854 }
855
856 } // namespace 816 } // namespace
857 817
858 } // namespace syncer 818 } // namespace syncer
OLDNEW
« no previous file with comments | « components/sync/driver/glue/sync_backend_host_impl.cc ('k') | components/sync/driver/model_type_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698