Chromium Code Reviews| Index: third_party/WebKit/Source/platform/network/NetworkStateNotifierTest.cpp |
| diff --git a/third_party/WebKit/Source/core/page/NetworkStateNotifierTest.cpp b/third_party/WebKit/Source/platform/network/NetworkStateNotifierTest.cpp |
| similarity index 89% |
| rename from third_party/WebKit/Source/core/page/NetworkStateNotifierTest.cpp |
| rename to third_party/WebKit/Source/platform/network/NetworkStateNotifierTest.cpp |
| index d441622eb3963b1c2b2ac58a4d1d11b2dfdeb41e..479dcb79bc545668d9a4c6c62cf9a980175ef370 100644 |
| --- a/third_party/WebKit/Source/core/page/NetworkStateNotifierTest.cpp |
| +++ b/third_party/WebKit/Source/platform/network/NetworkStateNotifierTest.cpp |
| @@ -28,10 +28,9 @@ |
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| -#include "core/page/NetworkStateNotifier.h" |
| +#include "platform/network/NetworkStateNotifier.h" |
| -#include "core/dom/Document.h" |
| -#include "core/dom/TaskRunnerHelper.h" |
| +#include "platform/scheduler/test/fake_web_task_runner.h" |
| #include "platform/testing/UnitTestHelpers.h" |
| #include "public/platform/Platform.h" |
| #include "public/platform/WebConnectionType.h" |
| @@ -41,6 +40,8 @@ |
| namespace blink { |
| +using scheduler::FakeWebTaskRunner; |
| + |
| namespace { |
| const double kNoneMaxBandwidthMbps = 0.0; |
| const double kBluetoothMaxBandwidthMbps = 1.0; |
| @@ -93,29 +94,36 @@ class StateObserver : public NetworkStateNotifier::NetworkStateObserver { |
| class NetworkStateNotifierTest : public ::testing::Test { |
| public: |
| NetworkStateNotifierTest() |
| - : m_document(Document::create()), m_document2(Document::create()) { |
| + : m_taskRunner(adoptRef(new FakeWebTaskRunner())), |
| + m_taskRunner2(adoptRef(new FakeWebTaskRunner())) { |
| // Initialize connection, so that future calls to setWebConnection issue |
| // notifications. |
| m_notifier.setWebConnection(WebConnectionTypeUnknown, 0.0); |
| m_notifier.setOnLine(false); |
| } |
| - WebTaskRunner* getTaskRunner() { |
| - return TaskRunnerHelper::get(TaskType::Networking, m_document.get()).get(); |
| - } |
| + WebTaskRunner* getTaskRunner() { return m_taskRunner.get(); } |
| + WebTaskRunner* getTaskRunner2() { return m_taskRunner2.get(); } |
| - WebTaskRunner* getTaskRunner2() { |
| - return TaskRunnerHelper::get(TaskType::Networking, m_document2.get()).get(); |
| + void TearDown() override { |
| + runPendingTasks(); |
| + m_taskRunner = nullptr; |
| + m_taskRunner2 = nullptr; |
| } |
| protected: |
| + void runPendingTasks() { |
| + m_taskRunner->runUntilIdle(); |
| + m_taskRunner2->runUntilIdle(); |
| + } |
| + |
| void setConnection(WebConnectionType type, double maxBandwidthMbps) { |
| m_notifier.setWebConnection(type, maxBandwidthMbps); |
| - testing::runPendingTasks(); |
| + runPendingTasks(); |
| } |
| void setOnLine(bool onLine) { |
| m_notifier.setOnLine(onLine); |
| - testing::runPendingTasks(); |
| + runPendingTasks(); |
| } |
| void addObserverOnNotification(StateObserver* observer, |
| @@ -143,8 +151,8 @@ class NetworkStateNotifierTest : public ::testing::Test { |
| observer.observedMaxBandwidth() == maxBandwidthMbps; |
| } |
| - Persistent<Document> m_document; |
| - Persistent<Document> m_document2; |
| + RefPtr<FakeWebTaskRunner> m_taskRunner; |
| + RefPtr<FakeWebTaskRunner> m_taskRunner2; |
| NetworkStateNotifier m_notifier; |
| }; |
| @@ -158,6 +166,7 @@ TEST_F(NetworkStateNotifierTest, AddObserver) { |
| EXPECT_TRUE(verifyObservations(observer, WebConnectionTypeBluetooth, |
| kBluetoothMaxBandwidthMbps)); |
| EXPECT_EQ(observer.callbackCount(), 1); |
| + m_notifier.removeConnectionObserver(&observer, getTaskRunner()); |
| } |
| TEST_F(NetworkStateNotifierTest, RemoveObserver) { |
| @@ -171,6 +180,7 @@ TEST_F(NetworkStateNotifierTest, RemoveObserver) { |
| kNoneMaxBandwidthMbps)); |
| EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeBluetooth, |
| kBluetoothMaxBandwidthMbps)); |
| + m_notifier.removeConnectionObserver(&observer2, getTaskRunner()); |
| } |
| TEST_F(NetworkStateNotifierTest, RemoveSoleObserver) { |
| @@ -193,6 +203,8 @@ TEST_F(NetworkStateNotifierTest, AddObserverWhileNotifying) { |
| kBluetoothMaxBandwidthMbps)); |
| EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeBluetooth, |
| kBluetoothMaxBandwidthMbps)); |
| + m_notifier.removeConnectionObserver(&observer1, getTaskRunner()); |
| + m_notifier.removeConnectionObserver(&observer2, getTaskRunner()); |
| } |
| TEST_F(NetworkStateNotifierTest, RemoveSoleObserverWhileNotifying) { |
| @@ -226,6 +238,9 @@ TEST_F(NetworkStateNotifierTest, RemoveCurrentObserverWhileNotifying) { |
| kBluetoothMaxBandwidthMbps)); |
| EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeEthernet, |
| kEthernetMaxBandwidthMbps)); |
| + |
| + m_notifier.removeConnectionObserver(&observer1, getTaskRunner()); |
| + m_notifier.removeConnectionObserver(&observer2, getTaskRunner()); |
| } |
| TEST_F(NetworkStateNotifierTest, RemovePastObserverWhileNotifying) { |
| @@ -243,6 +258,9 @@ TEST_F(NetworkStateNotifierTest, RemovePastObserverWhileNotifying) { |
| kBluetoothMaxBandwidthMbps)); |
| EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeEthernet, |
| kEthernetMaxBandwidthMbps)); |
| + |
| + m_notifier.removeConnectionObserver(&observer1, getTaskRunner()); |
| + m_notifier.removeConnectionObserver(&observer2, getTaskRunner()); |
| } |
| TEST_F(NetworkStateNotifierTest, RemoveFutureObserverWhileNotifying) { |
| @@ -259,6 +277,10 @@ TEST_F(NetworkStateNotifierTest, RemoveFutureObserverWhileNotifying) { |
| kNoneMaxBandwidthMbps)); |
| EXPECT_TRUE(verifyObservations(observer3, WebConnectionTypeBluetooth, |
| kBluetoothMaxBandwidthMbps)); |
| + |
| + m_notifier.removeConnectionObserver(&observer1, getTaskRunner()); |
| + m_notifier.removeConnectionObserver(&observer2, getTaskRunner()); |
| + m_notifier.removeConnectionObserver(&observer3, getTaskRunner()); |
| } |
| TEST_F(NetworkStateNotifierTest, MultipleContextsAddObserver) { |
| @@ -271,6 +293,9 @@ TEST_F(NetworkStateNotifierTest, MultipleContextsAddObserver) { |
| kBluetoothMaxBandwidthMbps)); |
| EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeBluetooth, |
| kBluetoothMaxBandwidthMbps)); |
| + |
| + m_notifier.removeConnectionObserver(&observer1, getTaskRunner()); |
| + m_notifier.removeConnectionObserver(&observer2, getTaskRunner()); |
|
sof
2017/03/06 06:43:03
getTaskRunner2()
sof
2017/03/06 06:53:21
..but why are explicit removals now needed?
kinuko
2017/03/06 07:39:02
Done.
|
| } |
| TEST_F(NetworkStateNotifierTest, RemoveContext) { |
| @@ -284,6 +309,8 @@ TEST_F(NetworkStateNotifierTest, RemoveContext) { |
| kBluetoothMaxBandwidthMbps)); |
| EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeNone, |
| kNoneMaxBandwidthMbps)); |
| + |
| + m_notifier.removeConnectionObserver(&observer1, getTaskRunner()); |
| } |
| TEST_F(NetworkStateNotifierTest, RemoveAllContexts) { |
| @@ -314,7 +341,7 @@ TEST_F(NetworkStateNotifierTest, SetOverride) { |
| m_notifier.setOverride(true, WebConnectionTypeEthernet, |
| kEthernetMaxBandwidthMbps); |
| - testing::runPendingTasks(); |
| + runPendingTasks(); |
| EXPECT_TRUE(verifyObservations(observer, WebConnectionTypeEthernet, |
| kEthernetMaxBandwidthMbps)); |
| EXPECT_TRUE(m_notifier.onLine()); |
| @@ -325,7 +352,7 @@ TEST_F(NetworkStateNotifierTest, SetOverride) { |
| // ignored. |
| m_notifier.setOnLine(false); |
| setConnection(WebConnectionTypeNone, kNoneMaxBandwidthMbps); |
| - testing::runPendingTasks(); |
| + runPendingTasks(); |
| EXPECT_TRUE(verifyObservations(observer, WebConnectionTypeEthernet, |
| kEthernetMaxBandwidthMbps)); |
| EXPECT_TRUE(m_notifier.onLine()); |
| @@ -333,7 +360,7 @@ TEST_F(NetworkStateNotifierTest, SetOverride) { |
| EXPECT_EQ(kEthernetMaxBandwidthMbps, m_notifier.maxBandwidth()); |
| m_notifier.clearOverride(); |
| - testing::runPendingTasks(); |
| + runPendingTasks(); |
| EXPECT_TRUE(verifyObservations(observer, WebConnectionTypeNone, |
| kNoneMaxBandwidthMbps)); |
| EXPECT_FALSE(m_notifier.onLine()); |
| @@ -373,37 +400,39 @@ TEST_F(NetworkStateNotifierTest, NoExtraNotifications) { |
| TEST_F(NetworkStateNotifierTest, NoNotificationOnInitialization) { |
| NetworkStateNotifier notifier; |
| - Persistent<Document> document(Document::create()); |
| StateObserver observer; |
| notifier.addConnectionObserver(&observer, getTaskRunner()); |
| notifier.addOnLineObserver(&observer, getTaskRunner()); |
| - testing::runPendingTasks(); |
| + runPendingTasks(); |
| EXPECT_EQ(observer.callbackCount(), 0); |
| notifier.setWebConnection(WebConnectionTypeBluetooth, |
| kBluetoothMaxBandwidthMbps); |
| notifier.setOnLine(true); |
| - testing::runPendingTasks(); |
| + runPendingTasks(); |
| EXPECT_EQ(observer.callbackCount(), 0); |
| notifier.setOnLine(true); |
| notifier.setWebConnection(WebConnectionTypeBluetooth, |
| kBluetoothMaxBandwidthMbps); |
| - testing::runPendingTasks(); |
| + runPendingTasks(); |
| EXPECT_EQ(observer.callbackCount(), 0); |
| notifier.setWebConnection(WebConnectionTypeEthernet, |
| kEthernetMaxBandwidthMbps); |
| - testing::runPendingTasks(); |
| + runPendingTasks(); |
| EXPECT_EQ(observer.callbackCount(), 1); |
| EXPECT_EQ(observer.observedType(), WebConnectionTypeEthernet); |
| EXPECT_EQ(observer.observedMaxBandwidth(), kEthernetMaxBandwidthMbps); |
| notifier.setOnLine(false); |
| - testing::runPendingTasks(); |
| + runPendingTasks(); |
| EXPECT_EQ(observer.callbackCount(), 2); |
| EXPECT_FALSE(observer.observedOnLineState()); |
| + |
| + m_notifier.removeConnectionObserver(&observer, getTaskRunner()); |
| + m_notifier.removeOnLineObserver(&observer, getTaskRunner()); |
| } |
| TEST_F(NetworkStateNotifierTest, OnLineNotification) { |
| @@ -411,12 +440,12 @@ TEST_F(NetworkStateNotifierTest, OnLineNotification) { |
| m_notifier.addOnLineObserver(&observer, getTaskRunner()); |
| setOnLine(true); |
| - testing::runPendingTasks(); |
| + runPendingTasks(); |
| EXPECT_TRUE(observer.observedOnLineState()); |
| EXPECT_EQ(observer.callbackCount(), 1); |
| setOnLine(false); |
| - testing::runPendingTasks(); |
| + runPendingTasks(); |
| EXPECT_FALSE(observer.observedOnLineState()); |
| EXPECT_EQ(observer.callbackCount(), 2); |
| @@ -433,14 +462,14 @@ TEST_F(NetworkStateNotifierTest, MultipleObservers) { |
| m_notifier.addOnLineObserver(&observer2, getTaskRunner()); |
| m_notifier.setOnLine(true); |
| - testing::runPendingTasks(); |
| + runPendingTasks(); |
| EXPECT_TRUE(observer1.observedOnLineState()); |
| EXPECT_TRUE(observer2.observedOnLineState()); |
| EXPECT_EQ(observer1.callbackCount(), 1); |
| EXPECT_EQ(observer2.callbackCount(), 1); |
| m_notifier.setOnLine(false); |
| - testing::runPendingTasks(); |
| + runPendingTasks(); |
| EXPECT_FALSE(observer1.observedOnLineState()); |
| EXPECT_FALSE(observer2.observedOnLineState()); |
| EXPECT_EQ(observer1.callbackCount(), 2); |
| @@ -449,7 +478,7 @@ TEST_F(NetworkStateNotifierTest, MultipleObservers) { |
| m_notifier.setOnLine(true); |
| m_notifier.setWebConnection(WebConnectionTypeEthernet, |
| kEthernetMaxBandwidthMbps); |
| - testing::runPendingTasks(); |
| + runPendingTasks(); |
| EXPECT_TRUE(observer1.observedOnLineState()); |
| EXPECT_TRUE(observer2.observedOnLineState()); |
| EXPECT_TRUE(verifyObservations(observer2, WebConnectionTypeEthernet, |