TEST_F(NetworkStateNotifierTest, RemoveSoleObserverWhileNotifying) { StateObserver observer1; m_notifier.addObserver(&observer1, executionContext()); removeObserverOnNotification(&observer1, &observer1); setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps); EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps)); setConnection(WebConnectionTypeEthernet, kEthernetMaxBandwidthMbps); EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps)); }
TEST_F(NetworkStateNotifierTest, RemoveSoleObserverWhileNotifying) { StateObserver observer1; m_notifier.addObserver(&observer1, executionContext()); removeObserverOnNotification(&observer1, &observer1); setType(ConnectionTypeBluetooth); EXPECT_EQ(observer1.observedType(), ConnectionTypeBluetooth); setType(ConnectionTypeEthernet); EXPECT_EQ(observer1.observedType(), ConnectionTypeBluetooth); }
TEST_F(NetworkStateNotifierTest, RemoveFutureObserverWhileNotifying) { StateObserver observer1, observer2, observer3; m_notifier.addObserver(&observer1, executionContext()); m_notifier.addObserver(&observer2, executionContext()); m_notifier.addObserver(&observer3, executionContext()); removeObserverOnNotification(&observer1, &observer2); setConnection(WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps); EXPECT_TRUE(verifyObservations(observer1, WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps)); EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeNone, kNoneMaxBandwidthMbps)); EXPECT_TRUE(verifyObservations(observer3, WebConnectionTypeBluetooth, kBluetoothMaxBandwidthMbps)); }
TEST_F(NetworkStateNotifierTest, RemoveFutureObserverWhileNotifying) { StateObserver observer1, observer2, observer3; m_notifier.addObserver(&observer1, executionContext()); m_notifier.addObserver(&observer2, executionContext()); m_notifier.addObserver(&observer3, executionContext()); removeObserverOnNotification(&observer1, &observer2); setType(ConnectionTypeBluetooth); EXPECT_EQ(observer1.observedType(), ConnectionTypeBluetooth); EXPECT_EQ(observer2.observedType(), ConnectionTypeNone); EXPECT_EQ(observer3.observedType(), ConnectionTypeBluetooth); }