| Index: chrome/browser/invalidation/invalidation_logger_unittest.cc
|
| diff --git a/chrome/browser/invalidation/invalidation_logger_unittest.cc b/chrome/browser/invalidation/invalidation_logger_unittest.cc
|
| index 30a3c4deecfae273eca177bacf6d9f7932569943..86e3f9ded818da142b8f792ec3a2efe220f40884 100644
|
| --- a/chrome/browser/invalidation/invalidation_logger_unittest.cc
|
| +++ b/chrome/browser/invalidation/invalidation_logger_unittest.cc
|
| @@ -16,77 +16,81 @@ class InvalidationLoggerTest : public testing::Test {
|
|
|
| class InvalidationLoggerObserverTest : public InvalidationLoggerObserver {
|
| public:
|
| - InvalidationLoggerObserverTest() { resetStates(); }
|
| -
|
| - void resetStates() {
|
| - registrationReceived = false;
|
| - unregistrationReceived = false;
|
| - stateReceived = false;
|
| - updateIdReceived = false;
|
| - debugMessageReceived = false;
|
| - invalidationReceived = false;
|
| + InvalidationLoggerObserverTest() { ResetStates(); }
|
| +
|
| + void ResetStates() {
|
| + registration_received = false;
|
| + unregistration_received = false;
|
| + state_received = false;
|
| + update_id_received = false;
|
| + debug_message_received = false;
|
| + invalidation_received = false;
|
| + update_id_replicated = std::map<std::string, syncer::ObjectIdSet>();
|
| }
|
|
|
| virtual void OnRegistration(const base::DictionaryValue& details) OVERRIDE {
|
| - registrationReceived = true;
|
| + registration_received = true;
|
| }
|
|
|
| virtual void OnUnregistration(const base::DictionaryValue& details) OVERRIDE {
|
| - unregistrationReceived = true;
|
| + unregistration_received = true;
|
| }
|
|
|
| virtual void OnStateChange(const syncer::InvalidatorState& newState)
|
| OVERRIDE {
|
| - stateReceived = true;
|
| + state_received = true;
|
| }
|
|
|
| - virtual void OnUpdateIds(const base::DictionaryValue& details) OVERRIDE {
|
| - updateIdReceived = true;
|
| + virtual void OnUpdateIds(const std::string& handler,
|
| + const syncer::ObjectIdSet& details) OVERRIDE {
|
| + update_id_received = true;
|
| + update_id_replicated[handler] = details;
|
| }
|
|
|
| virtual void OnDebugMessage(const base::DictionaryValue& details) OVERRIDE {
|
| - debugMessageReceived = true;
|
| + debug_message_received = true;
|
| }
|
|
|
| virtual void OnInvalidation(
|
| const syncer::ObjectIdInvalidationMap& newInvalidations) OVERRIDE {
|
| - invalidationReceived = true;
|
| + invalidation_received = true;
|
| }
|
|
|
| - bool registrationReceived;
|
| - bool unregistrationReceived;
|
| - bool stateReceived;
|
| - bool updateIdReceived;
|
| - bool debugMessageReceived;
|
| - bool invalidationReceived;
|
| + bool registration_received;
|
| + bool unregistration_received;
|
| + bool state_received;
|
| + bool update_id_received;
|
| + bool debug_message_received;
|
| + bool invalidation_received;
|
| + std::map<std::string, syncer::ObjectIdSet> update_id_replicated;
|
| };
|
|
|
| // Test that the callbacks are actually being called when observers are
|
| // registered and don't produce any other callback in the meantime.
|
| TEST_F(InvalidationLoggerTest, TestCallbacks) {
|
| InvalidationLogger log;
|
| - InvalidationLoggerObserverTest observerTest;
|
| + InvalidationLoggerObserverTest observer_test;
|
|
|
| - log.RegisterForDebug(&observerTest);
|
| + log.RegisterObserver(&observer_test);
|
| log.OnStateChange(syncer::INVALIDATIONS_ENABLED);
|
| - EXPECT_TRUE(observerTest.stateReceived);
|
| - EXPECT_FALSE(observerTest.updateIdReceived);
|
| - EXPECT_FALSE(observerTest.registrationReceived);
|
| - EXPECT_FALSE(observerTest.invalidationReceived);
|
| - EXPECT_FALSE(observerTest.unregistrationReceived);
|
| - EXPECT_FALSE(observerTest.debugMessageReceived);
|
| + EXPECT_TRUE(observer_test.state_received);
|
| + EXPECT_FALSE(observer_test.update_id_received);
|
| + EXPECT_FALSE(observer_test.registration_received);
|
| + EXPECT_FALSE(observer_test.invalidation_received);
|
| + EXPECT_FALSE(observer_test.unregistration_received);
|
| + EXPECT_FALSE(observer_test.debug_message_received);
|
|
|
| - observerTest.resetStates();
|
| + observer_test.ResetStates();
|
|
|
| log.OnInvalidation(syncer::ObjectIdInvalidationMap());
|
| - EXPECT_TRUE(observerTest.invalidationReceived);
|
| - EXPECT_FALSE(observerTest.stateReceived);
|
| - EXPECT_FALSE(observerTest.updateIdReceived);
|
| - EXPECT_FALSE(observerTest.registrationReceived);
|
| - EXPECT_FALSE(observerTest.unregistrationReceived);
|
| - EXPECT_FALSE(observerTest.debugMessageReceived);
|
| -
|
| - log.UnregisterForDebug(&observerTest);
|
| + EXPECT_TRUE(observer_test.invalidation_received);
|
| + EXPECT_FALSE(observer_test.state_received);
|
| + EXPECT_FALSE(observer_test.update_id_received);
|
| + EXPECT_FALSE(observer_test.registration_received);
|
| + EXPECT_FALSE(observer_test.unregistration_received);
|
| + EXPECT_FALSE(observer_test.debug_message_received);
|
| +
|
| + log.UnregisterObserver(&observer_test);
|
| }
|
|
|
| // Test that after registering an observer and then unregistering it
|
| @@ -94,41 +98,94 @@ TEST_F(InvalidationLoggerTest, TestCallbacks) {
|
| // (i.e. the observer is cleanly removed)
|
| TEST_F(InvalidationLoggerTest, TestReleaseOfObserver) {
|
| InvalidationLogger log;
|
| - InvalidationLoggerObserverTest observerTest;
|
| + InvalidationLoggerObserverTest observer_test;
|
|
|
| - log.RegisterForDebug(&observerTest);
|
| - log.UnregisterForDebug(&observerTest);
|
| + log.RegisterObserver(&observer_test);
|
| + log.UnregisterObserver(&observer_test);
|
|
|
| log.OnInvalidation(syncer::ObjectIdInvalidationMap());
|
| log.OnStateChange(syncer::INVALIDATIONS_ENABLED);
|
| log.OnRegistration(base::DictionaryValue());
|
| log.OnUnregistration(base::DictionaryValue());
|
| log.OnDebugMessage(base::DictionaryValue());
|
| - log.OnUpdateIds(base::DictionaryValue());
|
| - EXPECT_FALSE(observerTest.registrationReceived);
|
| - EXPECT_FALSE(observerTest.unregistrationReceived);
|
| - EXPECT_FALSE(observerTest.updateIdReceived);
|
| - EXPECT_FALSE(observerTest.invalidationReceived);
|
| - EXPECT_FALSE(observerTest.stateReceived);
|
| - EXPECT_FALSE(observerTest.debugMessageReceived);
|
| + log.OnUpdateIds(std::map<std::string, syncer::ObjectIdSet>());
|
| + EXPECT_FALSE(observer_test.registration_received);
|
| + EXPECT_FALSE(observer_test.unregistration_received);
|
| + EXPECT_FALSE(observer_test.update_id_received);
|
| + EXPECT_FALSE(observer_test.invalidation_received);
|
| + EXPECT_FALSE(observer_test.state_received);
|
| + EXPECT_FALSE(observer_test.debug_message_received);
|
| }
|
|
|
| // Test the EmitContet in InvalidationLogger is actually
|
| -// sending (only) state notifications.
|
| +// sending state and updateIds notifications.
|
| TEST_F(InvalidationLoggerTest, TestEmitContent) {
|
| InvalidationLogger log;
|
| - InvalidationLoggerObserverTest observerTest;
|
| + InvalidationLoggerObserverTest observer_test;
|
|
|
| - log.RegisterForDebug(&observerTest);
|
| - EXPECT_FALSE(observerTest.stateReceived);
|
| + log.RegisterObserver(&observer_test);
|
| + EXPECT_FALSE(observer_test.state_received);
|
| + EXPECT_FALSE(observer_test.update_id_received);
|
| log.EmitContent();
|
| + // Only expect state because no Ids were registered.
|
| + EXPECT_TRUE(observer_test.state_received);
|
| + EXPECT_FALSE(observer_test.registration_received);
|
| + EXPECT_FALSE(observer_test.unregistration_received);
|
| + EXPECT_FALSE(observer_test.update_id_received);
|
| + EXPECT_FALSE(observer_test.invalidation_received);
|
| + EXPECT_FALSE(observer_test.debug_message_received);
|
| +
|
| + observer_test.ResetStates();
|
| + std::map<std::string, syncer::ObjectIdSet> test_map;
|
| + test_map["Test"] = syncer::ObjectIdSet();
|
| + log.OnUpdateIds(test_map);
|
| + EXPECT_TRUE(observer_test.update_id_received);
|
| + observer_test.ResetStates();
|
|
|
| - EXPECT_TRUE(observerTest.stateReceived);
|
| - EXPECT_FALSE(observerTest.registrationReceived);
|
| - EXPECT_FALSE(observerTest.unregistrationReceived);
|
| - EXPECT_FALSE(observerTest.updateIdReceived);
|
| - EXPECT_FALSE(observerTest.invalidationReceived);
|
| - EXPECT_FALSE(observerTest.debugMessageReceived);
|
| - log.UnregisterForDebug(&observerTest);
|
| + log.EmitContent();
|
| + // Expect now state and ids change.
|
| + EXPECT_TRUE(observer_test.state_received);
|
| + EXPECT_TRUE(observer_test.update_id_received);
|
| + EXPECT_FALSE(observer_test.registration_received);
|
| + EXPECT_FALSE(observer_test.unregistration_received);
|
| + EXPECT_FALSE(observer_test.invalidation_received);
|
| + EXPECT_FALSE(observer_test.debug_message_received);
|
| + log.UnregisterObserver(&observer_test);
|
| +}
|
| +
|
| +// Test that the updateId notification actually sends
|
| +// what was sent to the Observer.
|
| +// The ObserverTest rebuilds the map that was sent in pieces by the logger.
|
| +TEST_F(InvalidationLoggerTest, TestUpdateIdsMap) {
|
| + InvalidationLogger log;
|
| + InvalidationLoggerObserverTest observer_test;
|
| + std::map<std::string, syncer::ObjectIdSet> test_map;
|
| + log.RegisterObserver(&observer_test);
|
| +
|
| + syncer::ObjectIdSet sync_set_A;
|
| + sync_set_A.insert(ObjectId(1000, "DataType1"));
|
| + sync_set_A.insert(ObjectId(1000, "DataType2"));
|
| + syncer::ObjectIdSet sync_set_B;
|
| + sync_set_B.insert(ObjectId(1020, "DataTypeA"));
|
| + test_map["TestA"] = sync_set_A;
|
| + test_map["TestB"] = sync_set_B;
|
| +
|
| + log.OnUpdateIds(test_map);
|
| + EXPECT_EQ(test_map, observer_test.update_id_replicated);
|
| +
|
| + syncer::ObjectIdSet sync_set_B2;
|
| + sync_set_B2.insert(ObjectId(1020, "DataTypeF"));
|
| + sync_set_B2.insert(ObjectId(1020, "DataTypeG"));
|
| + test_map["TestB"] = sync_set_B2;
|
| +
|
| + log.OnUpdateIds(test_map);
|
| + EXPECT_EQ(test_map, observer_test.update_id_replicated);
|
| +
|
| + // The emit content should return the same map too.
|
| + observer_test.ResetStates();
|
| + log.EmitContent();
|
| + EXPECT_EQ(test_map, observer_test.update_id_replicated);
|
| +
|
| + log.UnregisterObserver(&observer_test);
|
| }
|
| } // namespace invalidation
|
|
|