Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(160)

Side by Side Diff: third_party/WebKit/Source/core/page/NetworkStateNotifierTest.cpp

Issue 2704083002: Remove Page dependency from NetworkStateNotifier (Closed)
Patch Set: nullcheck for tests Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2014, Google Inc. All rights reserved. 2 * Copyright (c) 2014, Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 const double kNoneMaxBandwidthMbps = 0.0; 45 const double kNoneMaxBandwidthMbps = 0.0;
46 const double kBluetoothMaxBandwidthMbps = 1.0; 46 const double kBluetoothMaxBandwidthMbps = 1.0;
47 const double kEthernetMaxBandwidthMbps = 2.0; 47 const double kEthernetMaxBandwidthMbps = 2.0;
48 } 48 }
49 49
50 class StateObserver : public NetworkStateNotifier::NetworkStateObserver { 50 class StateObserver : public NetworkStateNotifier::NetworkStateObserver {
51 public: 51 public:
52 StateObserver() 52 StateObserver()
53 : m_observedType(WebConnectionTypeNone), 53 : m_observedType(WebConnectionTypeNone),
54 m_observedMaxBandwidthMbps(0.0), 54 m_observedMaxBandwidthMbps(0.0),
55 m_observedOnLineState(false),
55 m_callbackCount(0) {} 56 m_callbackCount(0) {}
56 57
57 virtual void connectionChange(WebConnectionType type, 58 virtual void connectionChange(WebConnectionType type,
58 double maxBandwidthMbps) { 59 double maxBandwidthMbps) {
59 m_observedType = type; 60 m_observedType = type;
60 m_observedMaxBandwidthMbps = maxBandwidthMbps; 61 m_observedMaxBandwidthMbps = maxBandwidthMbps;
61 m_callbackCount += 1; 62 m_callbackCount += 1;
62 63
63 if (m_closure) 64 if (m_closure)
64 (*m_closure)(); 65 (*m_closure)();
65 } 66 }
66 67
68 virtual void onLineStateChange(bool onLine) {
69 m_observedOnLineState = onLine;
70 m_callbackCount += 1;
71
72 if (m_closure)
73 (*m_closure)();
74 }
75
67 WebConnectionType observedType() const { return m_observedType; } 76 WebConnectionType observedType() const { return m_observedType; }
68
69 double observedMaxBandwidth() const { return m_observedMaxBandwidthMbps; } 77 double observedMaxBandwidth() const { return m_observedMaxBandwidthMbps; }
70 78 bool observedOnLineState() const { return m_observedOnLineState; }
71 int callbackCount() const { return m_callbackCount; } 79 int callbackCount() const { return m_callbackCount; }
72 80
73 void setNotificationCallback(std::unique_ptr<WTF::Closure> closure) { 81 void setNotificationCallback(std::unique_ptr<WTF::Closure> closure) {
74 m_closure = std::move(closure); 82 m_closure = std::move(closure);
75 } 83 }
76 84
77 private: 85 private:
78 std::unique_ptr<WTF::Closure> m_closure; 86 std::unique_ptr<WTF::Closure> m_closure;
79 WebConnectionType m_observedType; 87 WebConnectionType m_observedType;
80 double m_observedMaxBandwidthMbps; 88 double m_observedMaxBandwidthMbps;
89 bool m_observedOnLineState;
81 int m_callbackCount; 90 int m_callbackCount;
82 }; 91 };
83 92
84 class NetworkStateNotifierTest : public ::testing::Test { 93 class NetworkStateNotifierTest : public ::testing::Test {
85 public: 94 public:
86 NetworkStateNotifierTest() 95 NetworkStateNotifierTest()
87 : m_document(Document::create()), m_document2(Document::create()) { 96 : m_document(Document::create()), m_document2(Document::create()) {
88 // Initialize connection, so that future calls to setWebConnection issue 97 // Initialize connection, so that future calls to setWebConnection issue
89 // notifications. 98 // notifications.
90 m_notifier.setWebConnection(WebConnectionTypeUnknown, 0.0); 99 m_notifier.setWebConnection(WebConnectionTypeUnknown, 0.0);
100 m_notifier.setOnLine(false);
91 } 101 }
92 102
93 WebTaskRunner* getTaskRunner() { 103 WebTaskRunner* getTaskRunner() {
94 return TaskRunnerHelper::get(TaskType::Networking, m_document.get()).get(); 104 return TaskRunnerHelper::get(TaskType::Networking, m_document.get()).get();
95 } 105 }
96 106
97 WebTaskRunner* getTaskRunner2() { 107 WebTaskRunner* getTaskRunner2() {
98 return TaskRunnerHelper::get(TaskType::Networking, m_document2.get()).get(); 108 return TaskRunnerHelper::get(TaskType::Networking, m_document2.get()).get();
99 } 109 }
100 110
101 protected: 111 protected:
102 void setConnection(WebConnectionType type, double maxBandwidthMbps) { 112 void setConnection(WebConnectionType type, double maxBandwidthMbps) {
103 m_notifier.setWebConnection(type, maxBandwidthMbps); 113 m_notifier.setWebConnection(type, maxBandwidthMbps);
104 testing::runPendingTasks(); 114 testing::runPendingTasks();
105 } 115 }
116 void setOnLine(bool onLine) {
117 m_notifier.setOnLine(onLine);
118 testing::runPendingTasks();
119 }
106 120
107 void addObserverOnNotification(StateObserver* observer, 121 void addObserverOnNotification(StateObserver* observer,
108 StateObserver* observerToAdd) { 122 StateObserver* observerToAdd) {
109 observer->setNotificationCallback( 123 observer->setNotificationCallback(
110 bind(&NetworkStateNotifier::addObserver, WTF::unretained(&m_notifier), 124 bind(&NetworkStateNotifier::addConnectionObserver,
111 WTF::unretained(observerToAdd), WTF::unretained(getTaskRunner()))); 125 WTF::unretained(&m_notifier), WTF::unretained(observerToAdd),
126 WTF::unretained(getTaskRunner())));
112 } 127 }
113 128
114 void removeObserverOnNotification(StateObserver* observer, 129 void removeObserverOnNotification(StateObserver* observer,
115 StateObserver* observerToRemove) { 130 StateObserver* observerToRemove) {
116 observer->setNotificationCallback(bind( 131 observer->setNotificationCallback(
117 &NetworkStateNotifier::removeObserver, WTF::unretained(&m_notifier), 132 bind(&NetworkStateNotifier::removeConnectionObserver,
118 WTF::unretained(observerToRemove), WTF::unretained(getTaskRunner()))); 133 WTF::unretained(&m_notifier), WTF::unretained(observerToRemove),
134 WTF::unretained(getTaskRunner())));
119 } 135 }
120 136
121 bool verifyObservations(const StateObserver& observer, 137 bool verifyObservations(const StateObserver& observer,
122 WebConnectionType type, 138 WebConnectionType type,
123 double maxBandwidthMbps) { 139 double maxBandwidthMbps) {
124 EXPECT_EQ(observer.observedType(), type); 140 EXPECT_EQ(observer.observedType(), type);
125 EXPECT_EQ(observer.observedMaxBandwidth(), maxBandwidthMbps); 141 EXPECT_EQ(observer.observedMaxBandwidth(), maxBandwidthMbps);
126 return observer.observedType() == type && 142 return observer.observedType() == type &&
127 observer.observedMaxBandwidth() == maxBandwidthMbps; 143 observer.observedMaxBandwidth() == maxBandwidthMbps;
128 } 144 }
129 145
130 Persistent<Document> m_document; 146 Persistent<Document> m_document;
131 Persistent<Document> m_document2; 147 Persistent<Document> m_document2;
132 NetworkStateNotifier m_notifier; 148 NetworkStateNotifier m_notifier;
133 }; 149 };
134 150
135 TEST_F(NetworkStateNotifierTest, AddObserver) { 151 TEST_F(NetworkStateNotifierTest, AddObserver) {
136 StateObserver observer; 152 StateObserver observer;
137 m_notifier.addObserver(&observer, getTaskRunner()); 153 m_notifier.addConnectionObserver(&observer, getTaskRunner());
138 EXPECT_TRUE(verifyObservations(observer, WebConnectionTypeNone, 154 EXPECT_TRUE(verifyObservations(observer, WebConnectionTypeNone,
139 kNoneMaxBandwidthMbps)); 155 kNoneMaxBandwidthMbps));
140 156
141 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps); 157 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps);
142 EXPECT_TRUE(verifyObservations(observer, WebConnectionTypeBluetooth, 158 EXPECT_TRUE(verifyObservations(observer, WebConnectionTypeBluetooth,
143 kBluetoothMaxBandwidthMbps)); 159 kBluetoothMaxBandwidthMbps));
144 EXPECT_EQ(observer.callbackCount(), 1); 160 EXPECT_EQ(observer.callbackCount(), 1);
145 } 161 }
146 162
147 TEST_F(NetworkStateNotifierTest, RemoveObserver) { 163 TEST_F(NetworkStateNotifierTest, RemoveObserver) {
148 StateObserver observer1, observer2; 164 StateObserver observer1, observer2;
149 m_notifier.addObserver(&observer1, getTaskRunner()); 165 m_notifier.addConnectionObserver(&observer1, getTaskRunner());
150 m_notifier.removeObserver(&observer1, getTaskRunner()); 166 m_notifier.removeConnectionObserver(&observer1, getTaskRunner());
151 m_notifier.addObserver(&observer2, getTaskRunner()); 167 m_notifier.addConnectionObserver(&observer2, getTaskRunner());
152 168
153 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps); 169 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps);
154 EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeNone, 170 EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeNone,
155 kNoneMaxBandwidthMbps)); 171 kNoneMaxBandwidthMbps));
156 EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeBluetooth, 172 EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeBluetooth,
157 kBluetoothMaxBandwidthMbps)); 173 kBluetoothMaxBandwidthMbps));
158 } 174 }
159 175
160 TEST_F(NetworkStateNotifierTest, RemoveSoleObserver) { 176 TEST_F(NetworkStateNotifierTest, RemoveSoleObserver) {
161 StateObserver observer1; 177 StateObserver observer1;
162 m_notifier.addObserver(&observer1, getTaskRunner()); 178 m_notifier.addConnectionObserver(&observer1, getTaskRunner());
163 m_notifier.removeObserver(&observer1, getTaskRunner()); 179 m_notifier.removeConnectionObserver(&observer1, getTaskRunner());
164 180
165 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps); 181 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps);
166 EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeNone, 182 EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeNone,
167 kNoneMaxBandwidthMbps)); 183 kNoneMaxBandwidthMbps));
168 } 184 }
169 185
170 TEST_F(NetworkStateNotifierTest, AddObserverWhileNotifying) { 186 TEST_F(NetworkStateNotifierTest, AddObserverWhileNotifying) {
171 StateObserver observer1, observer2; 187 StateObserver observer1, observer2;
172 m_notifier.addObserver(&observer1, getTaskRunner()); 188 m_notifier.addConnectionObserver(&observer1, getTaskRunner());
173 addObserverOnNotification(&observer1, &observer2); 189 addObserverOnNotification(&observer1, &observer2);
174 190
175 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps); 191 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps);
176 EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeBluetooth, 192 EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeBluetooth,
177 kBluetoothMaxBandwidthMbps)); 193 kBluetoothMaxBandwidthMbps));
178 EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeBluetooth, 194 EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeBluetooth,
179 kBluetoothMaxBandwidthMbps)); 195 kBluetoothMaxBandwidthMbps));
180 } 196 }
181 197
182 TEST_F(NetworkStateNotifierTest, RemoveSoleObserverWhileNotifying) { 198 TEST_F(NetworkStateNotifierTest, RemoveSoleObserverWhileNotifying) {
183 StateObserver observer1; 199 StateObserver observer1;
184 m_notifier.addObserver(&observer1, getTaskRunner()); 200 m_notifier.addConnectionObserver(&observer1, getTaskRunner());
185 removeObserverOnNotification(&observer1, &observer1); 201 removeObserverOnNotification(&observer1, &observer1);
186 202
187 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps); 203 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps);
188 EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeBluetooth, 204 EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeBluetooth,
189 kBluetoothMaxBandwidthMbps)); 205 kBluetoothMaxBandwidthMbps));
190 206
191 setConnection(WebConnectionTypeEthernet, kEthernetMaxBandwidthMbps); 207 setConnection(WebConnectionTypeEthernet, kEthernetMaxBandwidthMbps);
192 EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeBluetooth, 208 EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeBluetooth,
193 kBluetoothMaxBandwidthMbps)); 209 kBluetoothMaxBandwidthMbps));
194 } 210 }
195 211
196 TEST_F(NetworkStateNotifierTest, RemoveCurrentObserverWhileNotifying) { 212 TEST_F(NetworkStateNotifierTest, RemoveCurrentObserverWhileNotifying) {
197 StateObserver observer1, observer2; 213 StateObserver observer1, observer2;
198 m_notifier.addObserver(&observer1, getTaskRunner()); 214 m_notifier.addConnectionObserver(&observer1, getTaskRunner());
199 m_notifier.addObserver(&observer2, getTaskRunner()); 215 m_notifier.addConnectionObserver(&observer2, getTaskRunner());
200 removeObserverOnNotification(&observer1, &observer1); 216 removeObserverOnNotification(&observer1, &observer1);
201 217
202 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps); 218 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps);
203 EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeBluetooth, 219 EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeBluetooth,
204 kBluetoothMaxBandwidthMbps)); 220 kBluetoothMaxBandwidthMbps));
205 EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeBluetooth, 221 EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeBluetooth,
206 kBluetoothMaxBandwidthMbps)); 222 kBluetoothMaxBandwidthMbps));
207 223
208 setConnection(WebConnectionTypeEthernet, kEthernetMaxBandwidthMbps); 224 setConnection(WebConnectionTypeEthernet, kEthernetMaxBandwidthMbps);
209 EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeBluetooth, 225 EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeBluetooth,
210 kBluetoothMaxBandwidthMbps)); 226 kBluetoothMaxBandwidthMbps));
211 EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeEthernet, 227 EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeEthernet,
212 kEthernetMaxBandwidthMbps)); 228 kEthernetMaxBandwidthMbps));
213 } 229 }
214 230
215 TEST_F(NetworkStateNotifierTest, RemovePastObserverWhileNotifying) { 231 TEST_F(NetworkStateNotifierTest, RemovePastObserverWhileNotifying) {
216 StateObserver observer1, observer2; 232 StateObserver observer1, observer2;
217 m_notifier.addObserver(&observer1, getTaskRunner()); 233 m_notifier.addConnectionObserver(&observer1, getTaskRunner());
218 m_notifier.addObserver(&observer2, getTaskRunner()); 234 m_notifier.addConnectionObserver(&observer2, getTaskRunner());
219 removeObserverOnNotification(&observer2, &observer1); 235 removeObserverOnNotification(&observer2, &observer1);
220 236
221 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps); 237 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps);
222 EXPECT_EQ(observer1.observedType(), WebConnectionTypeBluetooth); 238 EXPECT_EQ(observer1.observedType(), WebConnectionTypeBluetooth);
223 EXPECT_EQ(observer2.observedType(), WebConnectionTypeBluetooth); 239 EXPECT_EQ(observer2.observedType(), WebConnectionTypeBluetooth);
224 240
225 setConnection(WebConnectionTypeEthernet, kEthernetMaxBandwidthMbps); 241 setConnection(WebConnectionTypeEthernet, kEthernetMaxBandwidthMbps);
226 EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeBluetooth, 242 EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeBluetooth,
227 kBluetoothMaxBandwidthMbps)); 243 kBluetoothMaxBandwidthMbps));
228 EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeEthernet, 244 EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeEthernet,
229 kEthernetMaxBandwidthMbps)); 245 kEthernetMaxBandwidthMbps));
230 } 246 }
231 247
232 TEST_F(NetworkStateNotifierTest, RemoveFutureObserverWhileNotifying) { 248 TEST_F(NetworkStateNotifierTest, RemoveFutureObserverWhileNotifying) {
233 StateObserver observer1, observer2, observer3; 249 StateObserver observer1, observer2, observer3;
234 m_notifier.addObserver(&observer1, getTaskRunner()); 250 m_notifier.addConnectionObserver(&observer1, getTaskRunner());
235 m_notifier.addObserver(&observer2, getTaskRunner()); 251 m_notifier.addConnectionObserver(&observer2, getTaskRunner());
236 m_notifier.addObserver(&observer3, getTaskRunner()); 252 m_notifier.addConnectionObserver(&observer3, getTaskRunner());
237 removeObserverOnNotification(&observer1, &observer2); 253 removeObserverOnNotification(&observer1, &observer2);
238 254
239 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps); 255 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps);
240 EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeBluetooth, 256 EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeBluetooth,
241 kBluetoothMaxBandwidthMbps)); 257 kBluetoothMaxBandwidthMbps));
242 EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeNone, 258 EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeNone,
243 kNoneMaxBandwidthMbps)); 259 kNoneMaxBandwidthMbps));
244 EXPECT_TRUE(verifyObservations(observer3, WebConnectionTypeBluetooth, 260 EXPECT_TRUE(verifyObservations(observer3, WebConnectionTypeBluetooth,
245 kBluetoothMaxBandwidthMbps)); 261 kBluetoothMaxBandwidthMbps));
246 } 262 }
247 263
248 TEST_F(NetworkStateNotifierTest, MultipleContextsAddObserver) { 264 TEST_F(NetworkStateNotifierTest, MultipleContextsAddObserver) {
249 StateObserver observer1, observer2; 265 StateObserver observer1, observer2;
250 m_notifier.addObserver(&observer1, getTaskRunner()); 266 m_notifier.addConnectionObserver(&observer1, getTaskRunner());
251 m_notifier.addObserver(&observer2, getTaskRunner2()); 267 m_notifier.addConnectionObserver(&observer2, getTaskRunner2());
252 268
253 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps); 269 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps);
254 EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeBluetooth, 270 EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeBluetooth,
255 kBluetoothMaxBandwidthMbps)); 271 kBluetoothMaxBandwidthMbps));
256 EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeBluetooth, 272 EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeBluetooth,
257 kBluetoothMaxBandwidthMbps)); 273 kBluetoothMaxBandwidthMbps));
258 } 274 }
259 275
260 TEST_F(NetworkStateNotifierTest, RemoveContext) { 276 TEST_F(NetworkStateNotifierTest, RemoveContext) {
261 StateObserver observer1, observer2; 277 StateObserver observer1, observer2;
262 m_notifier.addObserver(&observer1, getTaskRunner()); 278 m_notifier.addConnectionObserver(&observer1, getTaskRunner());
263 m_notifier.addObserver(&observer2, getTaskRunner2()); 279 m_notifier.addConnectionObserver(&observer2, getTaskRunner2());
264 m_notifier.removeObserver(&observer2, getTaskRunner2()); 280 m_notifier.removeConnectionObserver(&observer2, getTaskRunner2());
265 281
266 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps); 282 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps);
267 EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeBluetooth, 283 EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeBluetooth,
268 kBluetoothMaxBandwidthMbps)); 284 kBluetoothMaxBandwidthMbps));
269 EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeNone, 285 EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeNone,
270 kNoneMaxBandwidthMbps)); 286 kNoneMaxBandwidthMbps));
271 } 287 }
272 288
273 TEST_F(NetworkStateNotifierTest, RemoveAllContexts) { 289 TEST_F(NetworkStateNotifierTest, RemoveAllContexts) {
274 StateObserver observer1, observer2; 290 StateObserver observer1, observer2;
275 m_notifier.addObserver(&observer1, getTaskRunner()); 291 m_notifier.addConnectionObserver(&observer1, getTaskRunner());
276 m_notifier.addObserver(&observer2, getTaskRunner2()); 292 m_notifier.addConnectionObserver(&observer2, getTaskRunner2());
277 m_notifier.removeObserver(&observer1, getTaskRunner()); 293 m_notifier.removeConnectionObserver(&observer1, getTaskRunner());
278 m_notifier.removeObserver(&observer2, getTaskRunner2()); 294 m_notifier.removeConnectionObserver(&observer2, getTaskRunner2());
279 295
280 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps); 296 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps);
281 EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeNone, 297 EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeNone,
282 kNoneMaxBandwidthMbps)); 298 kNoneMaxBandwidthMbps));
283 EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeNone, 299 EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeNone,
284 kNoneMaxBandwidthMbps)); 300 kNoneMaxBandwidthMbps));
285 } 301 }
286 302
287 TEST_F(NetworkStateNotifierTest, SetOverride) { 303 TEST_F(NetworkStateNotifierTest, SetOverride) {
288 StateObserver observer; 304 StateObserver observer;
289 m_notifier.addObserver(&observer, getTaskRunner()); 305 m_notifier.addConnectionObserver(&observer, getTaskRunner());
290 306
291 m_notifier.setOnLine(true); 307 m_notifier.setOnLine(true);
292 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps); 308 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps);
293 EXPECT_TRUE(verifyObservations(observer, WebConnectionTypeBluetooth, 309 EXPECT_TRUE(verifyObservations(observer, WebConnectionTypeBluetooth,
294 kBluetoothMaxBandwidthMbps)); 310 kBluetoothMaxBandwidthMbps));
295 EXPECT_TRUE(m_notifier.onLine()); 311 EXPECT_TRUE(m_notifier.onLine());
296 EXPECT_EQ(WebConnectionTypeBluetooth, m_notifier.connectionType()); 312 EXPECT_EQ(WebConnectionTypeBluetooth, m_notifier.connectionType());
297 EXPECT_EQ(kBluetoothMaxBandwidthMbps, m_notifier.maxBandwidth()); 313 EXPECT_EQ(kBluetoothMaxBandwidthMbps, m_notifier.maxBandwidth());
298 314
299 m_notifier.setOverride(true, WebConnectionTypeEthernet, 315 m_notifier.setOverride(true, WebConnectionTypeEthernet,
(...skipping 17 matching lines...) Expand all
317 EXPECT_EQ(kEthernetMaxBandwidthMbps, m_notifier.maxBandwidth()); 333 EXPECT_EQ(kEthernetMaxBandwidthMbps, m_notifier.maxBandwidth());
318 334
319 m_notifier.clearOverride(); 335 m_notifier.clearOverride();
320 testing::runPendingTasks(); 336 testing::runPendingTasks();
321 EXPECT_TRUE(verifyObservations(observer, WebConnectionTypeNone, 337 EXPECT_TRUE(verifyObservations(observer, WebConnectionTypeNone,
322 kNoneMaxBandwidthMbps)); 338 kNoneMaxBandwidthMbps));
323 EXPECT_FALSE(m_notifier.onLine()); 339 EXPECT_FALSE(m_notifier.onLine());
324 EXPECT_EQ(WebConnectionTypeNone, m_notifier.connectionType()); 340 EXPECT_EQ(WebConnectionTypeNone, m_notifier.connectionType());
325 EXPECT_EQ(kNoneMaxBandwidthMbps, m_notifier.maxBandwidth()); 341 EXPECT_EQ(kNoneMaxBandwidthMbps, m_notifier.maxBandwidth());
326 342
327 m_notifier.removeObserver(&observer, getTaskRunner()); 343 m_notifier.removeConnectionObserver(&observer, getTaskRunner());
328 } 344 }
329 345
330 TEST_F(NetworkStateNotifierTest, NoExtraNotifications) { 346 TEST_F(NetworkStateNotifierTest, NoExtraNotifications) {
331 StateObserver observer; 347 StateObserver observer;
332 m_notifier.addObserver(&observer, getTaskRunner()); 348 m_notifier.addConnectionObserver(&observer, getTaskRunner());
333 349
334 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps); 350 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps);
335 EXPECT_TRUE(verifyObservations(observer, WebConnectionTypeBluetooth, 351 EXPECT_TRUE(verifyObservations(observer, WebConnectionTypeBluetooth,
336 kBluetoothMaxBandwidthMbps)); 352 kBluetoothMaxBandwidthMbps));
337 EXPECT_EQ(observer.callbackCount(), 1); 353 EXPECT_EQ(observer.callbackCount(), 1);
338 354
339 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps); 355 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps);
340 EXPECT_EQ(observer.callbackCount(), 1); 356 EXPECT_EQ(observer.callbackCount(), 1);
341 357
342 setConnection(WebConnectionTypeEthernet, kEthernetMaxBandwidthMbps); 358 setConnection(WebConnectionTypeEthernet, kEthernetMaxBandwidthMbps);
343 EXPECT_TRUE(verifyObservations(observer, WebConnectionTypeEthernet, 359 EXPECT_TRUE(verifyObservations(observer, WebConnectionTypeEthernet,
344 kEthernetMaxBandwidthMbps)); 360 kEthernetMaxBandwidthMbps));
345 EXPECT_EQ(observer.callbackCount(), 2); 361 EXPECT_EQ(observer.callbackCount(), 2);
346 362
347 setConnection(WebConnectionTypeEthernet, kEthernetMaxBandwidthMbps); 363 setConnection(WebConnectionTypeEthernet, kEthernetMaxBandwidthMbps);
348 EXPECT_EQ(observer.callbackCount(), 2); 364 EXPECT_EQ(observer.callbackCount(), 2);
349 365
350 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps); 366 setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps);
351 EXPECT_TRUE(verifyObservations(observer, WebConnectionTypeBluetooth, 367 EXPECT_TRUE(verifyObservations(observer, WebConnectionTypeBluetooth,
352 kBluetoothMaxBandwidthMbps)); 368 kBluetoothMaxBandwidthMbps));
353 EXPECT_EQ(observer.callbackCount(), 3); 369 EXPECT_EQ(observer.callbackCount(), 3);
354 370
355 m_notifier.removeObserver(&observer, getTaskRunner()); 371 m_notifier.removeConnectionObserver(&observer, getTaskRunner());
356 } 372 }
357 373
358 TEST_F(NetworkStateNotifierTest, NoNotificationOnInitialization) { 374 TEST_F(NetworkStateNotifierTest, NoNotificationOnInitialization) {
359 NetworkStateNotifier notifier; 375 NetworkStateNotifier notifier;
360 Persistent<Document> document(Document::create()); 376 Persistent<Document> document(Document::create());
361 StateObserver observer; 377 StateObserver observer;
362 378
363 notifier.addObserver(&observer, getTaskRunner()); 379 notifier.addConnectionObserver(&observer, getTaskRunner());
380 notifier.addOnLineObserver(&observer, getTaskRunner());
364 testing::runPendingTasks(); 381 testing::runPendingTasks();
365 EXPECT_EQ(observer.callbackCount(), 0); 382 EXPECT_EQ(observer.callbackCount(), 0);
366 383
367 notifier.setWebConnection(WebConnectionTypeBluetooth, 384 notifier.setWebConnection(WebConnectionTypeBluetooth,
368 kBluetoothMaxBandwidthMbps); 385 kBluetoothMaxBandwidthMbps);
386 notifier.setOnLine(true);
369 testing::runPendingTasks(); 387 testing::runPendingTasks();
370 EXPECT_EQ(observer.callbackCount(), 0); 388 EXPECT_EQ(observer.callbackCount(), 0);
371 389
390 notifier.setOnLine(true);
372 notifier.setWebConnection(WebConnectionTypeBluetooth, 391 notifier.setWebConnection(WebConnectionTypeBluetooth,
373 kBluetoothMaxBandwidthMbps); 392 kBluetoothMaxBandwidthMbps);
374 testing::runPendingTasks(); 393 testing::runPendingTasks();
375 EXPECT_EQ(observer.callbackCount(), 0); 394 EXPECT_EQ(observer.callbackCount(), 0);
376 395
377 notifier.setWebConnection(WebConnectionTypeEthernet, 396 notifier.setWebConnection(WebConnectionTypeEthernet,
378 kEthernetMaxBandwidthMbps); 397 kEthernetMaxBandwidthMbps);
379 testing::runPendingTasks(); 398 testing::runPendingTasks();
380 EXPECT_EQ(observer.callbackCount(), 1); 399 EXPECT_EQ(observer.callbackCount(), 1);
381 EXPECT_EQ(observer.observedType(), WebConnectionTypeEthernet); 400 EXPECT_EQ(observer.observedType(), WebConnectionTypeEthernet);
382 EXPECT_EQ(observer.observedMaxBandwidth(), kEthernetMaxBandwidthMbps); 401 EXPECT_EQ(observer.observedMaxBandwidth(), kEthernetMaxBandwidthMbps);
402
403 notifier.setOnLine(false);
404 testing::runPendingTasks();
405 EXPECT_EQ(observer.callbackCount(), 2);
406 EXPECT_FALSE(observer.observedOnLineState());
407 }
408
409 TEST_F(NetworkStateNotifierTest, OnLineNotification) {
410 StateObserver observer;
411 m_notifier.addOnLineObserver(&observer, getTaskRunner());
412
413 setOnLine(true);
414 testing::runPendingTasks();
415 EXPECT_TRUE(observer.observedOnLineState());
416 EXPECT_EQ(observer.callbackCount(), 1);
417
418 setOnLine(false);
419 testing::runPendingTasks();
420 EXPECT_FALSE(observer.observedOnLineState());
421 EXPECT_EQ(observer.callbackCount(), 2);
422
423 m_notifier.removeConnectionObserver(&observer, getTaskRunner());
424 }
425
426 TEST_F(NetworkStateNotifierTest, MultipleObservers) {
427 StateObserver observer1;
428 StateObserver observer2;
429
430 // Observer1 observes online state, Observer2 observes both.
431 m_notifier.addOnLineObserver(&observer1, getTaskRunner());
432 m_notifier.addConnectionObserver(&observer2, getTaskRunner());
433 m_notifier.addOnLineObserver(&observer2, getTaskRunner());
434
435 m_notifier.setOnLine(true);
436 testing::runPendingTasks();
437 EXPECT_TRUE(observer1.observedOnLineState());
438 EXPECT_TRUE(observer2.observedOnLineState());
439 EXPECT_EQ(observer1.callbackCount(), 1);
440 EXPECT_EQ(observer2.callbackCount(), 1);
441
442 m_notifier.setOnLine(false);
443 testing::runPendingTasks();
444 EXPECT_FALSE(observer1.observedOnLineState());
445 EXPECT_FALSE(observer2.observedOnLineState());
446 EXPECT_EQ(observer1.callbackCount(), 2);
447 EXPECT_EQ(observer2.callbackCount(), 2);
448
449 m_notifier.setOnLine(true);
450 m_notifier.setWebConnection(WebConnectionTypeEthernet,
451 kEthernetMaxBandwidthMbps);
452 testing::runPendingTasks();
453 EXPECT_TRUE(observer1.observedOnLineState());
454 EXPECT_TRUE(observer2.observedOnLineState());
455 EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeEthernet,
456 kEthernetMaxBandwidthMbps));
457 EXPECT_EQ(observer1.callbackCount(), 3);
458 EXPECT_EQ(observer2.callbackCount(), 4);
459
460 m_notifier.removeConnectionObserver(&observer1, getTaskRunner());
461 m_notifier.removeConnectionObserver(&observer2, getTaskRunner());
383 } 462 }
384 463
385 } // namespace blink 464 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/page/NetworkStateNotifier.cpp ('k') | third_party/WebKit/Source/core/page/Page.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698