| 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 60a5b5d072b243b7dfd55b2f599566e7d2bb22de..66f3b85580b2635d03a339d66e84387c446dc263 100644
|
| --- a/chrome/browser/invalidation/invalidation_logger_unittest.cc
|
| +++ b/chrome/browser/invalidation/invalidation_logger_unittest.cc
|
| @@ -16,15 +16,16 @@ class InvalidationLoggerTest : public testing::Test {
|
|
|
| class InvalidationLoggerObserverTest : public InvalidationLoggerObserver {
|
| public:
|
| - InvalidationLoggerObserverTest() { resetStates(); }
|
| + InvalidationLoggerObserverTest() { ResetStates(); }
|
|
|
| - void resetStates() {
|
| + void ResetStates() {
|
| registrationReceived = false;
|
| unregistrationReceived = false;
|
| stateReceived = false;
|
| updateIdReceived = false;
|
| debugMessageReceived = false;
|
| invalidationReceived = false;
|
| + updateIdsReplicated = std::map<std::string, syncer::ObjectIdSet>();
|
| }
|
|
|
| virtual void OnRegistration(const base::DictionaryValue& details) OVERRIDE {
|
| @@ -40,8 +41,10 @@ class InvalidationLoggerObserverTest : public InvalidationLoggerObserver {
|
| stateReceived = true;
|
| }
|
|
|
| - virtual void OnUpdateIds(const base::DictionaryValue& details) OVERRIDE {
|
| + virtual void OnUpdateIds(std::string handler,
|
| + const syncer::ObjectIdSet& details) OVERRIDE {
|
| updateIdReceived = true;
|
| + updateIdsReplicated[handler] = details;
|
| }
|
|
|
| virtual void OnDebugMessage(const base::DictionaryValue& details) OVERRIDE {
|
| @@ -59,6 +62,7 @@ class InvalidationLoggerObserverTest : public InvalidationLoggerObserver {
|
| bool updateIdReceived;
|
| bool debugMessageReceived;
|
| bool invalidationReceived;
|
| + std::map<std::string, syncer::ObjectIdSet> updateIdsReplicated;
|
| };
|
|
|
| // Test that the callbacks are actually being called when observers are
|
| @@ -76,7 +80,7 @@ TEST_F(InvalidationLoggerTest, TestCallbacks) {
|
| EXPECT_FALSE(observerTest.unregistrationReceived);
|
| EXPECT_FALSE(observerTest.debugMessageReceived);
|
|
|
| - observerTest.resetStates();
|
| + observerTest.ResetStates();
|
|
|
| log.OnInvalidation(syncer::ObjectIdInvalidationMap());
|
| EXPECT_TRUE(observerTest.invalidationReceived);
|
| @@ -104,7 +108,7 @@ TEST_F(InvalidationLoggerTest, TestReleaseOfObserver) {
|
| log.OnRegistration(base::DictionaryValue());
|
| log.OnUnregistration(base::DictionaryValue());
|
| log.OnDebugMessage(base::DictionaryValue());
|
| - log.OnUpdateIds(base::DictionaryValue());
|
| + log.OnUpdateIds(std::map<std::string, syncer::ObjectIdSet>());
|
| EXPECT_FALSE(observerTest.registrationReceived);
|
| EXPECT_FALSE(observerTest.unregistrationReceived);
|
| EXPECT_FALSE(observerTest.updateIdReceived);
|
| @@ -114,21 +118,74 @@ TEST_F(InvalidationLoggerTest, TestReleaseOfObserver) {
|
| }
|
|
|
| // Test the EmitContet in InvalidationLogger is actually
|
| -// sending (only) state notifications.
|
| +// sending state and updateIds notifications.
|
| TEST_F(InvalidationLoggerTest, TestEmitContent) {
|
| InvalidationLogger log;
|
| InvalidationLoggerObserverTest observerTest;
|
|
|
| log.RegisterForDebug(&observerTest);
|
| EXPECT_FALSE(observerTest.stateReceived);
|
| + EXPECT_FALSE(observerTest.updateIdReceived);
|
| log.EmitContent();
|
| -
|
| + // Only expect state because no Ids were registered.
|
| EXPECT_TRUE(observerTest.stateReceived);
|
| EXPECT_FALSE(observerTest.registrationReceived);
|
| EXPECT_FALSE(observerTest.unregistrationReceived);
|
| EXPECT_FALSE(observerTest.updateIdReceived);
|
| EXPECT_FALSE(observerTest.invalidationReceived);
|
| EXPECT_FALSE(observerTest.debugMessageReceived);
|
| +
|
| + observerTest.ResetStates();
|
| + std::map<std::string, syncer::ObjectIdSet> testMap;
|
| + testMap["Test"] = syncer::ObjectIdSet();
|
| + log.OnUpdateIds(testMap);
|
| + EXPECT_TRUE(observerTest.updateIdReceived);
|
| + observerTest.ResetStates();
|
| +
|
| + log.EmitContent();
|
| + // Expect now state and ids change.
|
| + EXPECT_TRUE(observerTest.stateReceived);
|
| + EXPECT_TRUE(observerTest.updateIdReceived);
|
| + EXPECT_FALSE(observerTest.registrationReceived);
|
| + EXPECT_FALSE(observerTest.unregistrationReceived);
|
| + EXPECT_FALSE(observerTest.invalidationReceived);
|
| + EXPECT_FALSE(observerTest.debugMessageReceived);
|
| + log.UnregisterForDebug(&observerTest);
|
| +}
|
| +
|
| +// Test that the updateId notification actually sends
|
| +// what was is sent to the Observer.
|
| +// The ObserverTest rebuilds the map that is sent in pieces by the logger.
|
| +TEST_F(InvalidationLoggerTest, TestUpdateIdsMap) {
|
| + InvalidationLogger log;
|
| + InvalidationLoggerObserverTest observerTest;
|
| + std::map<std::string, syncer::ObjectIdSet> testMap;
|
| + log.RegisterForDebug(&observerTest);
|
| +
|
| + syncer::ObjectIdSet syncSetA;
|
| + syncSetA.insert(ObjectId(1000, "DataType1"));
|
| + syncSetA.insert(ObjectId(1000, "DataType2"));
|
| + syncer::ObjectIdSet syncSetB;
|
| + syncSetB.insert(ObjectId(1020, "DataTypeA"));
|
| + testMap["TestA"] = syncSetA;
|
| + testMap["TestB"] = syncSetB;
|
| +
|
| + log.OnUpdateIds(testMap);
|
| + EXPECT_EQ(testMap, observerTest.updateIdsReplicated);
|
| +
|
| + syncer::ObjectIdSet syncSetB2;
|
| + syncSetB2.insert(ObjectId(1020, "DataTypeF"));
|
| + syncSetB2.insert(ObjectId(1020, "DataTypeG"));
|
| + testMap["TestB"] = syncSetB2;
|
| +
|
| + log.OnUpdateIds(testMap);
|
| + EXPECT_EQ(testMap, observerTest.updateIdsReplicated);
|
| +
|
| + // The emit content should return the same map too.
|
| + observerTest.ResetStates();
|
| + log.EmitContent();
|
| + EXPECT_EQ(testMap, observerTest.updateIdsReplicated);
|
| +
|
| log.UnregisterForDebug(&observerTest);
|
| }
|
| } // namespace invalidation
|
|
|