Index: sync/sessions/model_type_registry_unittest.cc |
diff --git a/sync/sessions/model_type_registry_unittest.cc b/sync/sessions/model_type_registry_unittest.cc |
deleted file mode 100644 |
index 82ba8faabd88348217a0ece39f42f35a6c78fd15..0000000000000000000000000000000000000000 |
--- a/sync/sessions/model_type_registry_unittest.cc |
+++ /dev/null |
@@ -1,281 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "sync/sessions/model_type_registry.h" |
- |
-#include <utility> |
-#include <vector> |
- |
-#include "base/deferred_sequenced_task_runner.h" |
-#include "base/memory/ptr_util.h" |
-#include "base/message_loop/message_loop.h" |
-#include "sync/internal_api/public/activation_context.h" |
-#include "sync/internal_api/public/base/model_type.h" |
-#include "sync/internal_api/public/test/fake_model_type_processor.h" |
-#include "sync/protocol/data_type_state.pb.h" |
-#include "sync/syncable/directory.h" |
-#include "sync/syncable/model_neutral_mutable_entry.h" |
-#include "sync/syncable/syncable_model_neutral_write_transaction.h" |
-#include "sync/test/engine/fake_model_worker.h" |
-#include "sync/test/engine/mock_nudge_handler.h" |
-#include "sync/test/engine/test_directory_setter_upper.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-namespace syncer { |
- |
-class ModelTypeRegistryTest : public ::testing::Test { |
- public: |
- ModelTypeRegistryTest(); |
- void SetUp() override; |
- void TearDown() override; |
- |
- ModelTypeRegistry* registry(); |
- |
- static sync_pb::DataTypeState MakeInitialDataTypeState(ModelType type) { |
- sync_pb::DataTypeState state; |
- state.mutable_progress_marker()->set_data_type_id( |
- GetSpecificsFieldNumberFromModelType(type)); |
- return state; |
- } |
- |
- static std::unique_ptr<syncer_v2::ActivationContext> MakeActivationContext( |
- const sync_pb::DataTypeState& data_type_state, |
- std::unique_ptr<syncer_v2::ModelTypeProcessor> type_processor) { |
- std::unique_ptr<syncer_v2::ActivationContext> context = |
- base::WrapUnique(new syncer_v2::ActivationContext); |
- context->data_type_state = data_type_state; |
- context->type_processor = std::move(type_processor); |
- return context; |
- } |
- |
- void MarkInitialSyncEndedForDirectoryType(ModelType type) { |
- syncable::ModelNeutralWriteTransaction trans(FROM_HERE, syncable::SYNCER, |
- directory()); |
- syncable::ModelNeutralMutableEntry entry( |
- &trans, syncable::CREATE_NEW_TYPE_ROOT, type); |
- ASSERT_TRUE(entry.good()); |
- entry.PutServerIsDir(true); |
- entry.PutUniqueServerTag(ModelTypeToRootTag(type)); |
- directory()->MarkInitialSyncEndedForType(&trans, type); |
- } |
- |
- private: |
- syncable::Directory* directory(); |
- |
- base::MessageLoop message_loop_; |
- |
- TestDirectorySetterUpper dir_maker_; |
- std::vector<scoped_refptr<ModelSafeWorker> > workers_; |
- std::unique_ptr<ModelTypeRegistry> registry_; |
- MockNudgeHandler mock_nudge_handler_; |
-}; |
- |
-ModelTypeRegistryTest::ModelTypeRegistryTest() {} |
- |
-void ModelTypeRegistryTest::SetUp() { |
- dir_maker_.SetUp(); |
- scoped_refptr<ModelSafeWorker> passive_worker( |
- new FakeModelWorker(GROUP_PASSIVE)); |
- scoped_refptr<ModelSafeWorker> ui_worker( |
- new FakeModelWorker(GROUP_UI)); |
- scoped_refptr<ModelSafeWorker> db_worker( |
- new FakeModelWorker(GROUP_DB)); |
- workers_.push_back(passive_worker); |
- workers_.push_back(ui_worker); |
- workers_.push_back(db_worker); |
- |
- registry_.reset( |
- new ModelTypeRegistry(workers_, directory(), &mock_nudge_handler_)); |
-} |
- |
-void ModelTypeRegistryTest::TearDown() { |
- registry_.reset(); |
- workers_.clear(); |
- dir_maker_.TearDown(); |
-} |
- |
-ModelTypeRegistry* ModelTypeRegistryTest::registry() { |
- return registry_.get(); |
-} |
- |
-syncable::Directory* ModelTypeRegistryTest::directory() { |
- return dir_maker_.directory(); |
-} |
- |
-// Create some directory update handlers and commit contributors. |
-// |
-// We don't get to inspect any of the state we're modifying. This test is |
-// useful only for detecting crashes or memory leaks. |
-TEST_F(ModelTypeRegistryTest, SetEnabledDirectoryTypes_Once) { |
- ModelSafeRoutingInfo routing_info; |
- routing_info.insert(std::make_pair(NIGORI, GROUP_PASSIVE)); |
- routing_info.insert(std::make_pair(BOOKMARKS, GROUP_UI)); |
- routing_info.insert(std::make_pair(AUTOFILL, GROUP_DB)); |
- routing_info.insert(std::make_pair(APPS, GROUP_NON_BLOCKING)); |
- |
- registry()->SetEnabledDirectoryTypes(routing_info); |
- |
- UpdateHandlerMap* update_handler_map = registry()->update_handler_map(); |
- // Apps is non-blocking type, SetEnabledDirectoryTypes shouldn't instantiate |
- // update_handler for it. |
- EXPECT_TRUE(update_handler_map->find(APPS) == update_handler_map->end()); |
-} |
- |
-// Try two different routing info settings. |
-// |
-// We don't get to inspect any of the state we're modifying. This test is |
-// useful only for detecting crashes or memory leaks. |
-TEST_F(ModelTypeRegistryTest, SetEnabledDirectoryTypes_Repeatedly) { |
- ModelSafeRoutingInfo routing_info1; |
- routing_info1.insert(std::make_pair(NIGORI, GROUP_PASSIVE)); |
- routing_info1.insert(std::make_pair(BOOKMARKS, GROUP_PASSIVE)); |
- routing_info1.insert(std::make_pair(AUTOFILL, GROUP_PASSIVE)); |
- routing_info1.insert(std::make_pair(APPS, GROUP_NON_BLOCKING)); |
- |
- registry()->SetEnabledDirectoryTypes(routing_info1); |
- |
- ModelSafeRoutingInfo routing_info2; |
- routing_info2.insert(std::make_pair(NIGORI, GROUP_PASSIVE)); |
- routing_info2.insert(std::make_pair(BOOKMARKS, GROUP_UI)); |
- routing_info2.insert(std::make_pair(AUTOFILL, GROUP_DB)); |
- routing_info2.insert(std::make_pair(APPS, GROUP_NON_BLOCKING)); |
- |
- registry()->SetEnabledDirectoryTypes(routing_info2); |
-} |
- |
-// Test removing all types from the list. |
-// |
-// We don't get to inspect any of the state we're modifying. This test is |
-// useful only for detecting crashes or memory leaks. |
-TEST_F(ModelTypeRegistryTest, SetEnabledDirectoryTypes_Clear) { |
- ModelSafeRoutingInfo routing_info1; |
- routing_info1.insert(std::make_pair(NIGORI, GROUP_PASSIVE)); |
- routing_info1.insert(std::make_pair(BOOKMARKS, GROUP_UI)); |
- routing_info1.insert(std::make_pair(AUTOFILL, GROUP_DB)); |
- routing_info1.insert(std::make_pair(APPS, GROUP_NON_BLOCKING)); |
- |
- registry()->SetEnabledDirectoryTypes(routing_info1); |
- |
- ModelSafeRoutingInfo routing_info2; |
- registry()->SetEnabledDirectoryTypes(routing_info2); |
-} |
- |
-// Test disabling then re-enabling some directory types. |
-// |
-// We don't get to inspect any of the state we're modifying. This test is |
-// useful only for detecting crashes or memory leaks. |
-TEST_F(ModelTypeRegistryTest, SetEnabledDirectoryTypes_OffAndOn) { |
- ModelSafeRoutingInfo routing_info1; |
- routing_info1.insert(std::make_pair(NIGORI, GROUP_PASSIVE)); |
- routing_info1.insert(std::make_pair(BOOKMARKS, GROUP_UI)); |
- routing_info1.insert(std::make_pair(AUTOFILL, GROUP_DB)); |
- routing_info1.insert(std::make_pair(APPS, GROUP_NON_BLOCKING)); |
- |
- registry()->SetEnabledDirectoryTypes(routing_info1); |
- |
- ModelSafeRoutingInfo routing_info2; |
- registry()->SetEnabledDirectoryTypes(routing_info2); |
- |
- registry()->SetEnabledDirectoryTypes(routing_info1); |
-} |
- |
-TEST_F(ModelTypeRegistryTest, NonBlockingTypes) { |
- EXPECT_TRUE(registry()->GetEnabledTypes().Empty()); |
- |
- registry()->ConnectType( |
- syncer::THEMES, |
- MakeActivationContext( |
- MakeInitialDataTypeState(THEMES), |
- base::WrapUnique(new syncer_v2::FakeModelTypeProcessor()))); |
- EXPECT_EQ(ModelTypeSet(syncer::THEMES), registry()->GetEnabledTypes()); |
- |
- registry()->ConnectType( |
- syncer::SESSIONS, |
- MakeActivationContext( |
- MakeInitialDataTypeState(SESSIONS), |
- base::WrapUnique(new syncer_v2::FakeModelTypeProcessor()))); |
- EXPECT_EQ(ModelTypeSet(syncer::THEMES, syncer::SESSIONS), |
- registry()->GetEnabledTypes()); |
- |
- registry()->DisconnectType(syncer::THEMES); |
- EXPECT_EQ(ModelTypeSet(syncer::SESSIONS), registry()->GetEnabledTypes()); |
- |
- // Allow ModelTypeRegistry destruction to delete the |
- // Sessions' ModelTypeSyncWorker. |
-} |
- |
-TEST_F(ModelTypeRegistryTest, NonBlockingTypesWithDirectoryTypes) { |
- ModelSafeRoutingInfo routing_info1; |
- routing_info1.insert(std::make_pair(NIGORI, GROUP_PASSIVE)); |
- routing_info1.insert(std::make_pair(BOOKMARKS, GROUP_UI)); |
- routing_info1.insert(std::make_pair(AUTOFILL, GROUP_DB)); |
- routing_info1.insert(std::make_pair(THEMES, GROUP_NON_BLOCKING)); |
- routing_info1.insert(std::make_pair(SESSIONS, GROUP_NON_BLOCKING)); |
- |
- ModelTypeSet directory_types(NIGORI, BOOKMARKS, AUTOFILL); |
- |
- ModelTypeSet current_types; |
- EXPECT_TRUE(registry()->GetEnabledTypes().Empty()); |
- |
- // Add the themes non-blocking type. |
- registry()->ConnectType( |
- syncer::THEMES, |
- MakeActivationContext( |
- MakeInitialDataTypeState(THEMES), |
- base::WrapUnique(new syncer_v2::FakeModelTypeProcessor()))); |
- current_types.Put(syncer::THEMES); |
- EXPECT_EQ(current_types, registry()->GetEnabledTypes()); |
- |
- // Add some directory types. |
- registry()->SetEnabledDirectoryTypes(routing_info1); |
- current_types.PutAll(directory_types); |
- EXPECT_EQ(current_types, registry()->GetEnabledTypes()); |
- |
- // Add sessions non-blocking type. |
- registry()->ConnectType( |
- syncer::SESSIONS, |
- MakeActivationContext( |
- MakeInitialDataTypeState(SESSIONS), |
- base::WrapUnique(new syncer_v2::FakeModelTypeProcessor()))); |
- current_types.Put(syncer::SESSIONS); |
- EXPECT_EQ(current_types, registry()->GetEnabledTypes()); |
- |
- // Remove themes non-blocking type. |
- registry()->DisconnectType(syncer::THEMES); |
- current_types.Remove(syncer::THEMES); |
- EXPECT_EQ(current_types, registry()->GetEnabledTypes()); |
- |
- // Clear all directory types. |
- ModelSafeRoutingInfo routing_info2; |
- registry()->SetEnabledDirectoryTypes(routing_info2); |
- current_types.RemoveAll(directory_types); |
- EXPECT_EQ(current_types, registry()->GetEnabledTypes()); |
-} |
- |
-// Tests correct result returned from GetInitialSyncEndedTypes. |
-TEST_F(ModelTypeRegistryTest, GetInitialSyncEndedTypes) { |
- ModelSafeRoutingInfo routing_info; |
- // Add two directory and two non-blocking types. |
- routing_info.insert(std::make_pair(AUTOFILL, GROUP_PASSIVE)); |
- routing_info.insert(std::make_pair(BOOKMARKS, GROUP_PASSIVE)); |
- routing_info.insert(std::make_pair(THEMES, GROUP_NON_BLOCKING)); |
- routing_info.insert(std::make_pair(SESSIONS, GROUP_NON_BLOCKING)); |
- registry()->SetEnabledDirectoryTypes(routing_info); |
- |
- // Only Autofill and Themes types finished initial sync. |
- MarkInitialSyncEndedForDirectoryType(AUTOFILL); |
- |
- sync_pb::DataTypeState data_type_state = MakeInitialDataTypeState(THEMES); |
- data_type_state.set_initial_sync_done(true); |
- registry()->ConnectType( |
- syncer::THEMES, |
- MakeActivationContext( |
- data_type_state, |
- base::WrapUnique(new syncer_v2::FakeModelTypeProcessor()))); |
- |
- EXPECT_EQ(ModelTypeSet(AUTOFILL, THEMES), |
- registry()->GetInitialSyncEndedTypes()); |
-} |
- |
-} // namespace syncer |