blob: 30a3c4deecfae273eca177bacf6d9f7932569943 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
// 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 "chrome/browser/invalidation/invalidation_logger.h"
#include "chrome/browser/invalidation/invalidation_logger_observer.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace invalidation {
class InvalidationLoggerTest : public testing::Test {
public:
InvalidationLoggerTest() {}
};
class InvalidationLoggerObserverTest : public InvalidationLoggerObserver {
public:
InvalidationLoggerObserverTest() { resetStates(); }
void resetStates() {
registrationReceived = false;
unregistrationReceived = false;
stateReceived = false;
updateIdReceived = false;
debugMessageReceived = false;
invalidationReceived = false;
}
virtual void OnRegistration(const base::DictionaryValue& details) OVERRIDE {
registrationReceived = true;
}
virtual void OnUnregistration(const base::DictionaryValue& details) OVERRIDE {
unregistrationReceived = true;
}
virtual void OnStateChange(const syncer::InvalidatorState& newState)
OVERRIDE {
stateReceived = true;
}
virtual void OnUpdateIds(const base::DictionaryValue& details) OVERRIDE {
updateIdReceived = true;
}
virtual void OnDebugMessage(const base::DictionaryValue& details) OVERRIDE {
debugMessageReceived = true;
}
virtual void OnInvalidation(
const syncer::ObjectIdInvalidationMap& newInvalidations) OVERRIDE {
invalidationReceived = true;
}
bool registrationReceived;
bool unregistrationReceived;
bool stateReceived;
bool updateIdReceived;
bool debugMessageReceived;
bool invalidationReceived;
};
// 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;
log.RegisterForDebug(&observerTest);
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);
observerTest.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);
}
// Test that after registering an observer and then unregistering it
// no callbacks regarding that observer are called.
// (i.e. the observer is cleanly removed)
TEST_F(InvalidationLoggerTest, TestReleaseOfObserver) {
InvalidationLogger log;
InvalidationLoggerObserverTest observerTest;
log.RegisterForDebug(&observerTest);
log.UnregisterForDebug(&observerTest);
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);
}
// Test the EmitContet in InvalidationLogger is actually
// sending (only) state notifications.
TEST_F(InvalidationLoggerTest, TestEmitContent) {
InvalidationLogger log;
InvalidationLoggerObserverTest observerTest;
log.RegisterForDebug(&observerTest);
EXPECT_FALSE(observerTest.stateReceived);
log.EmitContent();
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);
}
} // namespace invalidation
|