Add QNetworkRequestFactory::(set)?Priority

To enable setting a default priority for all requests to a given site.

Fixes: QTBUG-121669
Change-Id: Icd8a9c59e4afb0432c65f84cc8115ae0c7f85506
Reviewed-by: Juha Vuolle <juha.vuolle@qt.io>
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
This commit is contained in:
Mårten Nordheim 2024-01-29 22:58:15 +01:00
parent 27383285a1
commit 3b3b2024f9
4 changed files with 50 additions and 0 deletions

View File

@ -475,6 +475,37 @@ void QNetworkRequestFactory::clearQueryParameters()
d->queryParameters.clear();
}
/*!
\since 6.8
Sets the priority for any future requests created by this factory to
\a priority.
The default priority is \l QNetworkRequest::NormalPriority.
\sa priority(), QNetworkRequest::setPriority()
*/
void QNetworkRequestFactory::setPriority(QNetworkRequest::Priority priority)
{
if (d->priority == priority)
return;
d.detach();
d->priority = priority;
}
/*!
\since 6.8
Returns the priority assigned to any future requests created by this
factory.
\sa setPriority(), QNetworkRequest::priority()
*/
QNetworkRequest::Priority QNetworkRequestFactory::priority() const
{
return d->priority;
}
QNetworkRequestFactoryPrivate::QNetworkRequestFactoryPrivate()
= default;
@ -507,6 +538,7 @@ QNetworkRequest QNetworkRequestFactoryPrivate::newRequest(const QUrl &url) const
request.setRawHeader("Authorization"_ba, Bearer + bearerToken);
request.setTransferTimeout(transferTimeout);
request.setPriority(priority);
return request;
}

View File

@ -74,6 +74,9 @@ public:
Q_NETWORK_EXPORT void setQueryParameters(const QUrlQuery &query);
Q_NETWORK_EXPORT void clearQueryParameters();
Q_NETWORK_EXPORT void setPriority(QNetworkRequest::Priority priority);
Q_NETWORK_EXPORT QNetworkRequest::Priority priority() const;
private:
#ifndef QT_NO_DEBUG_STREAM
friend Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QNetworkRequestFactory &reply);

View File

@ -44,6 +44,7 @@ public:
QString userName;
QString password;
QUrlQuery queryParameters;
QNetworkRequest::Priority priority = QNetworkRequest::NormalPriority;
std::chrono::milliseconds transferTimeout{0};
};

View File

@ -26,6 +26,7 @@ private Q_SLOTS:
void operators();
void timeout();
void userInfo();
void priority();
private:
const QUrl url1{u"http://foo.io"_s};
@ -354,5 +355,18 @@ void tst_QNetworkRequestFactory::userInfo()
QVERIFY(factory.password().isEmpty());
}
void tst_QNetworkRequestFactory::priority()
{
QNetworkRequestFactory factory(u"http://example.com"_s);
QCOMPARE(factory.priority(), QNetworkRequest::NormalPriority);
auto request = factory.createRequest("/index.html");
QCOMPARE(request.priority(), QNetworkRequest::NormalPriority);
factory.setPriority(QNetworkRequest::HighPriority);
QCOMPARE(factory.priority(), QNetworkRequest::HighPriority);
request = factory.createRequest("/index.html");
QCOMPARE(request.priority(), QNetworkRequest::HighPriority);
}
QTEST_MAIN(tst_QNetworkRequestFactory)
#include "tst_qnetworkrequestfactory.moc"