From da955aadf5d5189b4f8de3eb2ed1b2f2f129cb28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5rten=20Nordheim?= Date: Fri, 21 May 2021 16:36:57 +0200 Subject: QNetworkInformation: Behind captive portal This patch adds the API, with no supporting backends Task-number: QTBUG-93848 Change-Id: I50454717f928819e1b990df91872675e842f9987 Reviewed-by: Edward Welbourne Reviewed-by: Timur Pocheptsov --- .../tst_qnetworkinformation.cpp | 37 +++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) (limited to 'tests/auto/network') diff --git a/tests/auto/network/kernel/qnetworkinformation/tst_qnetworkinformation.cpp b/tests/auto/network/kernel/qnetworkinformation/tst_qnetworkinformation.cpp index 09fa65273d..188355d373 100644 --- a/tests/auto/network/kernel/qnetworkinformation/tst_qnetworkinformation.cpp +++ b/tests/auto/network/kernel/qnetworkinformation/tst_qnetworkinformation.cpp @@ -40,6 +40,7 @@ class tst_QNetworkInformation : public QObject private slots: void initTestCase(); void reachability(); + void behindCaptivePortal(); void cleanupTestCase(); private: @@ -56,6 +57,7 @@ public: Q_ASSERT(!instance); instance = this; setReachability(QNetworkInformation::Reachability::Online); + setNewBehindCaptivePortal(QNetworkInformation::TriState::False); } ~MockBackend() { instance = nullptr; } @@ -72,9 +74,16 @@ public: instance->setReachability(value); } + static void setNewBehindCaptivePortal(QNetworkInformation::TriState value) + { + Q_ASSERT(instance); + instance->setBehindCaptivePortal(value); + } + static QNetworkInformation::Features featuresSupportedStatic() { - return { QNetworkInformation::Feature::Reachability }; + return { QNetworkInformation::Feature::Reachability, + QNetworkInformation::Feature::CaptivePortal }; } private: @@ -152,5 +161,31 @@ void tst_QNetworkInformation::reachability() QCOMPARE(boundIsOnline, QNetworkInformation::Reachability::Site); } +void tst_QNetworkInformation::behindCaptivePortal() +{ + auto info = QNetworkInformation::instance(); + QNetworkInformation::TriState behindPortal = QNetworkInformation::TriState::Unknown; + bool signalEmitted = false; + + connect(info, &QNetworkInformation::behindCaptivePortalChanged, this, + [&, info](QNetworkInformation::TriState state) { + signalEmitted = true; + QCOMPARE(state, info->behindCaptivePortal()); + behindPortal = info->behindCaptivePortal(); + }); + QCOMPARE(info->behindCaptivePortal(), QNetworkInformation::TriState::False); + MockBackend::setNewBehindCaptivePortal(QNetworkInformation::TriState::True); + QCoreApplication::processEvents(); + QVERIFY(signalEmitted); + QCOMPARE(info->behindCaptivePortal(), QNetworkInformation::TriState::True); + QCOMPARE(behindPortal, QNetworkInformation::TriState::True); + + // Set the same value again, signal should not be emitted again + signalEmitted = false; + MockBackend::setNewBehindCaptivePortal(QNetworkInformation::TriState::True); + QCoreApplication::processEvents(); + QVERIFY(!signalEmitted); +} + QTEST_MAIN(tst_QNetworkInformation); #include "tst_qnetworkinformation.moc" -- cgit v1.2.3