summaryrefslogtreecommitdiffstats
path: root/chrome/browser/sync/notifier/registration_manager_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/sync/notifier/registration_manager_unittest.cc')
-rw-r--r--chrome/browser/sync/notifier/registration_manager_unittest.cc92
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