| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |