QNI: Add supportedFeatures getter

Which just returns all the supported features

Change-Id: I8c3996b00a6ebb114bdbc9db3085a0e27fc8fa79
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
This commit is contained in:
Mårten Nordheim 2021-10-21 12:18:41 +02:00
parent a43dd9a6b1
commit 5f8e9c194e
4 changed files with 32 additions and 2 deletions

View File

@ -593,6 +593,16 @@ bool QNetworkInformation::supports(Features features) const
return (d_func()->backend->featuresSupported() & features) == features;
}
/*!
\since 6.3
Returns all the supported features of the current backend.
*/
QNetworkInformation::Features QNetworkInformation::supportedFeatures() const
{
return d_func()->backend->featuresSupported();
}
/*!
Attempts to load a backend whose name matches \a backend
(case insensitively).

View File

@ -94,6 +94,7 @@ public:
QString backendName() const;
bool supports(Features features) const;
Features supportedFeatures() const;
static bool load(QStringView backend);
static bool load(Features features);

View File

@ -39,6 +39,7 @@ class tst_QNetworkInformation : public QObject
Q_OBJECT
private slots:
void initTestCase();
void supportedFeatures();
void reachability();
void behindCaptivePortal();
void transportMedium();
@ -89,8 +90,9 @@ public:
static QNetworkInformation::Features featuresSupportedStatic()
{
return { QNetworkInformation::Feature::Reachability,
QNetworkInformation::Feature::CaptivePortal };
return { QNetworkInformation::Feature::Reachability
| QNetworkInformation::Feature::CaptivePortal
| QNetworkInformation::Feature::TransportMedium };
}
private:
@ -138,6 +140,22 @@ void tst_QNetworkInformation::cleanupTestCase()
QVERIFY(!backends.contains(u"mock"));
}
void tst_QNetworkInformation::supportedFeatures()
{
auto info = QNetworkInformation::instance();
auto allFeatures = QNetworkInformation::Features(
QNetworkInformation::Feature::CaptivePortal | QNetworkInformation::Feature::Reachability
| QNetworkInformation::Feature::TransportMedium);
QCOMPARE(info->supportedFeatures(), allFeatures);
QVERIFY(info->supports(allFeatures));
QVERIFY(info->supports(QNetworkInformation::Feature::CaptivePortal));
QVERIFY(info->supports(QNetworkInformation::Feature::Reachability));
QVERIFY(info->supports(QNetworkInformation::Feature::TransportMedium));
}
void tst_QNetworkInformation::reachability()
{
auto info = QNetworkInformation::instance();

View File

@ -55,6 +55,7 @@ int main(int argc, char **argv)
}
QNetworkInformation *info = QNetworkInformation::instance();
qDebug() << "Backend loaded:" << info->backendName();
qDebug() << "Supports:" << info->supportedFeatures();
qDebug() << "Now you can make changes to the current network connection. Qt should see the "
"changes and notify about it.";
QObject::connect(info, &QNetworkInformation::reachabilityChanged,