diff options
Diffstat (limited to 'chrome/browser/sync/notifier/registration_manager_unittest.cc')
| -rw-r--r-- | chrome/browser/sync/notifier/registration_manager_unittest.cc | 92 |
1 files changed, 73 insertions, 19 deletions
diff --git a/chrome/browser/sync/notifier/registration_manager_unittest.cc b/chrome/browser/sync/notifier/registration_manager_unittest.cc index da93ac8..ac5b236 100644 --- a/chrome/browser/sync/notifier/registration_manager_unittest.cc +++ b/chrome/browser/sync/notifier/registration_manager_unittest.cc @@ -4,6 +4,7 @@ #include "chrome/browser/sync/notifier/registration_manager.h" +#include <algorithm> #include <cstddef> #include <deque> #include <vector> @@ -15,7 +16,13 @@ #include "testing/gtest/include/gtest/gtest.h" namespace sync_notifier { -namespace { + +syncable::ModelType ObjectIdToModelType( + const invalidation::ObjectId& object_id) { + syncable::ModelType model_type = syncable::UNSPECIFIED; + EXPECT_TRUE(ObjectIdToRealModelType(object_id, &model_type)); + return model_type; +} // Fake invalidation client that just stores the args of calls to // Register(). @@ -28,11 +35,22 @@ class FakeInvalidationClient : public invalidation::InvalidationClient { virtual void Start(const std::string& state) {} virtual void Register(const invalidation::ObjectId& oid) { - registered_oids.push_back(oid); + registered_types.push_back(ObjectIdToModelType(oid)); } virtual void Unregister(const invalidation::ObjectId& oid) { - ADD_FAILURE(); + syncable::ModelType type_to_unregister = ObjectIdToModelType(oid); + std::vector<syncable::ModelType>::iterator it = std::find( + registered_types.begin(), + registered_types.end(), + type_to_unregister); + + if(it == registered_types.end()) { + // We should not be unregistering a thing that is not yet registered. + ADD_FAILURE(); + } else { + registered_types.erase(it); + } } virtual invalidation::NetworkEndpoint* network_endpoint() { @@ -40,7 +58,7 @@ class FakeInvalidationClient : public invalidation::InvalidationClient { return NULL; } - std::deque<invalidation::ObjectId> registered_oids; + std::vector<syncable::ModelType> registered_types; private: DISALLOW_COPY_AND_ASSIGN(FakeInvalidationClient); @@ -60,13 +78,6 @@ class RegistrationManagerTest : public testing::Test { DISALLOW_COPY_AND_ASSIGN(RegistrationManagerTest); }; -syncable::ModelType ObjectIdToModelType( - const invalidation::ObjectId& object_id) { - syncable::ModelType model_type = syncable::UNSPECIFIED; - EXPECT_TRUE(ObjectIdToRealModelType(object_id, &model_type)); - return model_type; -} - TEST_F(RegistrationManagerTest, RegisterType) { const syncable::ModelType kModelTypes[] = { syncable::BOOKMARKS, @@ -85,7 +96,7 @@ TEST_F(RegistrationManagerTest, RegisterType) { } ASSERT_EQ(kModelTypeCount, - fake_invalidation_client_.registered_oids.size()); + fake_invalidation_client_.registered_types.size()); // Everything should be registered. for (size_t i = 0; i < kModelTypeCount; ++i) { @@ -95,8 +106,52 @@ TEST_F(RegistrationManagerTest, RegisterType) { // Check object IDs. for (size_t i = 0; i < kModelTypeCount; ++i) { EXPECT_EQ(kModelTypes[i], - ObjectIdToModelType( - fake_invalidation_client_.registered_oids[i])); + fake_invalidation_client_.registered_types[i]); + } +} + +TEST_F(RegistrationManagerTest, UnregisterType) { + const syncable::ModelType kModelTypes[] = { + syncable::BOOKMARKS, + syncable::PREFERENCES, + syncable::THEMES, + syncable::AUTOFILL, + syncable::EXTENSIONS, + }; + const size_t kModelTypeCount = arraysize(kModelTypes); + + // Register types. + for (size_t i = 0; i < kModelTypeCount; ++i) { + // Register twice; it shouldn't matter. + registration_manager_.RegisterType(kModelTypes[i]); + } + + ASSERT_EQ(kModelTypeCount, + fake_invalidation_client_.registered_types.size()); + + // Everything should be registered. + for (size_t i = 0; i < kModelTypeCount; ++i) { + EXPECT_TRUE(registration_manager_.IsRegistered(kModelTypes[i])); + } + + // Check object IDs. + for (size_t i = 0; i < kModelTypeCount; ++i) { + EXPECT_EQ(kModelTypes[i], + fake_invalidation_client_.registered_types[i]); + } + + // Now unregister the extension. + registration_manager_.UnregisterType(syncable::EXTENSIONS); + + // Check the count and the types currently registered to ensure extensions + // is unregistered. + ASSERT_EQ(kModelTypeCount - 1, + fake_invalidation_client_.registered_types.size()); + + // Check object IDs. + for (size_t i = 0; i < kModelTypeCount - 1; ++i) { + EXPECT_EQ(kModelTypes[i], + fake_invalidation_client_.registered_types[i]); } } @@ -116,7 +171,7 @@ TEST_F(RegistrationManagerTest, MarkRegistrationLost) { } ASSERT_EQ(kModelTypeCount, - fake_invalidation_client_.registered_oids.size()); + fake_invalidation_client_.registered_types.size()); // All should be registered. for (size_t i = 0; i < kModelTypeCount; ++i) { @@ -129,7 +184,7 @@ TEST_F(RegistrationManagerTest, MarkRegistrationLost) { } ASSERT_EQ(2 * kModelTypeCount - 1, - fake_invalidation_client_.registered_oids.size()); + fake_invalidation_client_.registered_types.size()); // All should still be registered. for (size_t i = 0; i < kModelTypeCount; ++i) { @@ -153,7 +208,7 @@ TEST_F(RegistrationManagerTest, MarkAllRegistrationsLost) { } ASSERT_EQ(kModelTypeCount, - fake_invalidation_client_.registered_oids.size()); + fake_invalidation_client_.registered_types.size()); // All should be registered. for (size_t i = 0; i < kModelTypeCount; ++i) { @@ -168,7 +223,7 @@ TEST_F(RegistrationManagerTest, MarkAllRegistrationsLost) { registration_manager_.MarkAllRegistrationsLost(); ASSERT_EQ(3 * kModelTypeCount - 1, - fake_invalidation_client_.registered_oids.size()); + fake_invalidation_client_.registered_types.size()); // All should still be registered. for (size_t i = 0; i < kModelTypeCount; ++i) { @@ -176,5 +231,4 @@ TEST_F(RegistrationManagerTest, MarkAllRegistrationsLost) { } } -} // namespace } // namespace notifier |
