diff options
Diffstat (limited to 'tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp')
-rw-r--r-- | tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp | 341 |
1 files changed, 193 insertions, 148 deletions
diff --git a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp index e93b226b04..2d784fcbbc 100644 --- a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp +++ b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp @@ -75,6 +75,7 @@ #include <QtNetwork/qnetworkconfigmanager.h> #include <QtNetwork/qnetworkconfiguration.h> #include <QtNetwork/qnetworksession.h> +#include <QtNetwork/private/qnetworksession_p.h> #endif #ifdef QT_BUILD_INTERNAL #include <QtNetwork/private/qnetworkaccessmanager_p.h> @@ -102,15 +103,7 @@ Q_DECLARE_METATYPE(QList<QFile*>) // for multiparts Q_DECLARE_METATYPE(QSslConfiguration) #endif -class QNetworkReplyPtr: public QSharedPointer<QNetworkReply> -{ -public: - inline QNetworkReplyPtr(QNetworkReply *ptr = 0) - : QSharedPointer<QNetworkReply>(ptr) - { } - - inline operator QNetworkReply *() const { return data(); } -}; +typedef QSharedPointer<QNetworkReply> QNetworkReplyPtr; class MyCookieJar; class tst_QNetworkReply: public QObject @@ -158,6 +151,12 @@ class tst_QNetworkReply: public QObject QScopedPointer<QNetworkSession> networkSession; #endif + using QObject::connect; + static bool connect(const QNetworkReplyPtr &ptr, const char *signal, const QObject *receiver, const char *slot, Qt::ConnectionType ct = Qt::AutoConnection) + { return connect(ptr.data(), signal, receiver, slot, ct); } + bool connect(const QNetworkReplyPtr &ptr, const char *signal, const char *slot, Qt::ConnectionType ct = Qt::AutoConnection) + { return connect(ptr.data(), signal, slot, ct); } + public: tst_QNetworkReply(); ~tst_QNetworkReply(); @@ -404,6 +403,9 @@ private Q_SLOTS: void ftpAuthentication_data(); void ftpAuthentication(); + void backgroundRequest_data(); + void backgroundRequest(); + // NOTE: This test must be last! void parentingRepliesToTheApp(); private: @@ -745,6 +747,8 @@ public: QByteArray data; QIODevice *device; bool accumulate; + DataReader(const QNetworkReplyPtr &dev, bool acc = true) : totalBytes(0), device(dev.data()), accumulate(acc) + { connect(device, SIGNAL(readyRead()), SLOT(doRead()) ); } DataReader(QIODevice *dev, bool acc = true) : totalBytes(0), device(dev), accumulate(acc) { connect(device, SIGNAL(readyRead()), SLOT(doRead())); @@ -1181,15 +1185,15 @@ QString tst_QNetworkReply::runMultipartRequest(const QNetworkRequest &request, const QByteArray &verb) { if (verb == "POST") - reply = manager.post(request, multiPart); + reply.reset(manager.post(request, multiPart)); else - reply = manager.put(request, multiPart); + reply.reset(manager.put(request, multiPart)); // the code below is copied from tst_QNetworkReply::runSimpleRequest, see below reply->setParent(this); connect(reply, SIGNAL(finished()), SLOT(finished())); connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(gotError())); - multiPart->setParent(reply); + multiPart->setParent(reply.data()); returnCode = Timeout; loop = new QEventLoop; @@ -1214,23 +1218,23 @@ QString tst_QNetworkReply::runSimpleRequest(QNetworkAccessManager::Operation op, { switch (op) { case QNetworkAccessManager::HeadOperation: - reply = manager.head(request); + reply.reset(manager.head(request)); break; case QNetworkAccessManager::GetOperation: - reply = manager.get(request); + reply.reset(manager.get(request)); break; case QNetworkAccessManager::PutOperation: - reply = manager.put(request, data); + reply.reset(manager.put(request, data)); break; case QNetworkAccessManager::PostOperation: - reply = manager.post(request, data); + reply.reset(manager.post(request, data)); break; case QNetworkAccessManager::DeleteOperation: - reply = manager.deleteResource(request); + reply.reset(manager.deleteResource(request)); break; default: @@ -1252,7 +1256,7 @@ QString tst_QNetworkReply::runSimpleRequest(QNetworkAccessManager::Operation op, int count = 0; loop = new QEventLoop; - QSignalSpy spy(reply, SIGNAL(downloadProgress(qint64,qint64))); + QSignalSpy spy(reply.data(), SIGNAL(downloadProgress(qint64,qint64))); while (!reply->isFinished()) { QTimer::singleShot(20000, loop, SLOT(quit())); code = loop->exec(); @@ -1280,7 +1284,7 @@ QString tst_QNetworkReply::runCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QIODevice *data) { - reply = manager.sendCustomRequest(request, verb, data); + reply.reset(manager.sendCustomRequest(request, verb, data)); reply->setParent(this); connect(reply, SIGNAL(finished()), SLOT(finished())); connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(gotError())); @@ -1309,7 +1313,7 @@ int tst_QNetworkReply::waitForFinish(QNetworkReplyPtr &reply) connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(gotError())); returnCode = Success; loop = new QEventLoop; - QSignalSpy spy(reply, SIGNAL(downloadProgress(qint64,qint64))); + QSignalSpy spy(reply.data(), SIGNAL(downloadProgress(qint64,qint64))); while (!reply->isFinished()) { QTimer::singleShot(5000, loop, SLOT(quit())); if ( loop->exec() == Timeout && count == spy.count() && !reply->isFinished()) { @@ -1404,7 +1408,7 @@ void tst_QNetworkReply::stateChecking() { QUrl url = QUrl("file:///"); QNetworkRequest req(url); // you can't open this file, I know - QNetworkReplyPtr reply = manager.get(req); + QNetworkReplyPtr reply(manager.get(req)); QVERIFY(reply.data()); QVERIFY(reply->isOpen()); @@ -1571,7 +1575,7 @@ void tst_QNetworkReply::getFromFile() file.flush(); // run again - reply = 0; + reply.clear(); RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply)); QCOMPARE(reply->url(), request.url()); @@ -1809,7 +1813,7 @@ void tst_QNetworkReply::getErrors() } #endif - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); reply->setParent(this); // we have expect-fails if (!reply->isFinished()) @@ -2503,7 +2507,7 @@ void tst_QNetworkReply::connectToIPv6Address() url.setPort(server.serverPort()); QNetworkRequest request(url); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QVERIFY(waitForFinish(reply) == Success); QByteArray content = reply->readAll(); //qDebug() << server.receivedData; @@ -2584,7 +2588,7 @@ void tst_QNetworkReply::ioGetFromData() QUrl url = QUrl::fromEncoded(urlStr.toLatin1()); QNetworkRequest request(url); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); DataReader reader(reply); connect(reply, SIGNAL(finished()), @@ -2616,7 +2620,7 @@ void tst_QNetworkReply::ioGetFromFileSpecial() QNetworkRequest request; request.setUrl(url); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); DataReader reader(reply); connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop())); @@ -2648,7 +2652,7 @@ void tst_QNetworkReply::ioGetFromFile() QCOMPARE(file.size(), qint64(data.size())); QNetworkRequest request(QUrl::fromLocalFile(file.fileName())); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QVERIFY(reply->isFinished()); // a file should immediately be done DataReader reader(reply); @@ -2682,7 +2686,7 @@ void tst_QNetworkReply::ioGetFromFtp() reference.open(QIODevice::ReadOnly); // will fail for bigfile QNetworkRequest request("ftp://" + QtNetworkSettings::serverName() + "/qtest/" + fileName); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); DataReader reader(reply); QVERIFY(waitForFinish(reply) == Success); @@ -2707,11 +2711,11 @@ void tst_QNetworkReply::ioGetFromFtpWithReuse() QNetworkRequest request(QUrl("ftp://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt")); // two concurrent (actually, consecutive) gets: - QNetworkReplyPtr reply1 = manager.get(request); + QNetworkReplyPtr reply1(manager.get(request)); DataReader reader1(reply1); - QNetworkReplyPtr reply2 = manager.get(request); + QNetworkReplyPtr reply2(manager.get(request)); DataReader reader2(reply2); - QSignalSpy spy(reply1, SIGNAL(finished())); + QSignalSpy spy(reply1.data(), SIGNAL(finished())); QVERIFY(waitForFinish(reply1) == Success); QVERIFY(waitForFinish(reply2) == Success); @@ -2737,7 +2741,7 @@ void tst_QNetworkReply::ioGetFromHttp() QVERIFY(reference.open(QIODevice::ReadOnly)); QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt")); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); DataReader reader(reply); QVERIFY(waitForFinish(reply) == Success); @@ -2758,11 +2762,11 @@ void tst_QNetworkReply::ioGetFromHttpWithReuseParallel() QVERIFY(reference.open(QIODevice::ReadOnly)); QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt")); - QNetworkReplyPtr reply1 = manager.get(request); - QNetworkReplyPtr reply2 = manager.get(request); + QNetworkReplyPtr reply1(manager.get(request)); + QNetworkReplyPtr reply2(manager.get(request)); DataReader reader1(reply1); DataReader reader2(reply2); - QSignalSpy spy(reply1, SIGNAL(finished())); + QSignalSpy spy(reply1.data(), SIGNAL(finished())); QVERIFY(waitForFinish(reply2) == Success); QVERIFY(waitForFinish(reply1) == Success); @@ -2791,7 +2795,7 @@ void tst_QNetworkReply::ioGetFromHttpWithReuseSequential() QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt")); { - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); DataReader reader(reply); QVERIFY(waitForFinish(reply) == Success); @@ -2809,7 +2813,7 @@ void tst_QNetworkReply::ioGetFromHttpWithReuseSequential() reference.seek(0); // rinse and repeat: { - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); DataReader reader(reply); QVERIFY(waitForFinish(reply) == Success); @@ -2857,11 +2861,11 @@ void tst_QNetworkReply::ioGetFromHttpWithAuth() QFETCH(int, expectedAuth); QNetworkRequest request(url); { - QNetworkReplyPtr reply1 = manager.get(request); - QNetworkReplyPtr reply2 = manager.get(request); + QNetworkReplyPtr reply1(manager.get(request)); + QNetworkReplyPtr reply2(manager.get(request)); DataReader reader1(reply1); DataReader reader2(reply2); - QSignalSpy finishedspy(reply1, SIGNAL(finished())); + QSignalSpy finishedspy(reply1.data(), SIGNAL(finished())); QSignalSpy authspy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*))); connect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)), @@ -2884,7 +2888,7 @@ void tst_QNetworkReply::ioGetFromHttpWithAuth() // rinse and repeat: { - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); DataReader reader(reply); QSignalSpy authspy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*))); @@ -2910,7 +2914,7 @@ void tst_QNetworkReply::ioGetFromHttpWithAuth() true); QSignalSpy authspy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*))); - QNetworkReplyPtr replySync = manager.get(request); + QNetworkReplyPtr replySync(manager.get(request)); QVERIFY(replySync->isFinished()); // synchronous if (expectedAuth) { // bad credentials in a synchronous request should just fail @@ -2936,7 +2940,7 @@ void tst_QNetworkReply::ioGetFromHttpWithAuth() true); QSignalSpy authspy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*))); - QNetworkReplyPtr replySync = manager.get(request); + QNetworkReplyPtr replySync(manager.get(request)); QVERIFY(replySync->isFinished()); // synchronous if (expectedAuth) { // bad credentials in a synchronous request should just fail @@ -2965,7 +2969,7 @@ void tst_QNetworkReply::ioGetFromHttpWithAuthSynchronous() true); QSignalSpy authspy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*))); - QNetworkReplyPtr replySync = manager.get(request); + QNetworkReplyPtr replySync(manager.get(request)); QVERIFY(replySync->isFinished()); // synchronous QCOMPARE(replySync->error(), QNetworkReply::AuthenticationRequiredError); QCOMPARE(authspy.count(), 0); @@ -2984,13 +2988,13 @@ void tst_QNetworkReply::ioGetFromHttpWithProxyAuth() QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt")); { manager.setProxy(proxy); - QNetworkReplyPtr reply1 = manager.get(request); - QNetworkReplyPtr reply2 = manager.get(request); + QNetworkReplyPtr reply1(manager.get(request)); + QNetworkReplyPtr reply2(manager.get(request)); manager.setProxy(QNetworkProxy()); DataReader reader1(reply1); DataReader reader2(reply2); - QSignalSpy finishedspy(reply1, SIGNAL(finished())); + QSignalSpy finishedspy(reply1.data(), SIGNAL(finished())); QSignalSpy authspy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*))); connect(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)), @@ -3015,7 +3019,7 @@ void tst_QNetworkReply::ioGetFromHttpWithProxyAuth() // rinse and repeat: { manager.setProxy(proxy); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); DataReader reader(reply); manager.setProxy(QNetworkProxy()); @@ -3042,7 +3046,7 @@ void tst_QNetworkReply::ioGetFromHttpWithProxyAuth() true); QSignalSpy authspy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*))); - QNetworkReplyPtr replySync = manager.get(request); + QNetworkReplyPtr replySync(manager.get(request)); QVERIFY(replySync->isFinished()); // synchronous QCOMPARE(authspy.count(), 0); @@ -3068,7 +3072,7 @@ void tst_QNetworkReply::ioGetFromHttpWithProxyAuthSynchronous() true); QSignalSpy authspy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*))); - QNetworkReplyPtr replySync = manager.get(request); + QNetworkReplyPtr replySync(manager.get(request)); manager.setProxy(QNetworkProxy()); // reset QVERIFY(replySync->isFinished()); // synchronous QCOMPARE(replySync->error(), QNetworkReply::ProxyAuthenticationRequiredError); @@ -3088,7 +3092,7 @@ void tst_QNetworkReply::ioGetFromHttpWithSocksProxy() QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt")); { manager.setProxy(proxy); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); DataReader reader(reply); manager.setProxy(QNetworkProxy()); @@ -3111,7 +3115,7 @@ void tst_QNetworkReply::ioGetFromHttpWithSocksProxy() proxy = QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1079); { manager.setProxy(proxy); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); DataReader reader(reply); manager.setProxy(QNetworkProxy()); @@ -3142,7 +3146,7 @@ void tst_QNetworkReply::ioGetFromHttpsWithSslErrors() QVERIFY(reference.open(QIODevice::ReadOnly)); QNetworkRequest request(QUrl("https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt")); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); DataReader reader(reply); QSignalSpy sslspy(&manager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>))); @@ -3174,7 +3178,7 @@ void tst_QNetworkReply::ioGetFromHttpsWithIgnoreSslErrors() QNetworkRequest request(QUrl("https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt")); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); reply->ignoreSslErrors(); DataReader reader(reply); @@ -3199,7 +3203,7 @@ void tst_QNetworkReply::ioGetFromHttpsWithSslHandshakeError() QNetworkRequest request(QUrl("https://" + QtNetworkSettings::serverName() + ":80")); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); reply->ignoreSslErrors(); DataReader reader(reply); @@ -3261,8 +3265,8 @@ void tst_QNetworkReply::ioGetFromHttpBrokenServer() server.doClose = doDisconnect; QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort()))); - QNetworkReplyPtr reply = manager.get(request); - QSignalSpy spy(reply, SIGNAL(error(QNetworkReply::NetworkError))); + QNetworkReplyPtr reply(manager.get(request)); + QSignalSpy spy(reply.data(), SIGNAL(error(QNetworkReply::NetworkError))); QVERIFY(waitForFinish(reply) == Failure); @@ -3292,7 +3296,7 @@ void tst_QNetworkReply::ioGetFromHttpStatus100() server.doClose = true; QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort()))); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QVERIFY(waitForFinish(reply) == Success); @@ -3315,7 +3319,7 @@ void tst_QNetworkReply::ioGetFromHttpNoHeaders() server.doClose = true; QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort()))); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QVERIFY(waitForFinish(reply) == Success); @@ -3485,7 +3489,7 @@ void tst_QNetworkReply::ioGetFromHttpWithCache() request.setRawHeader(header.toLatin1(), value.toLatin1()); // To latin1? Deal with it! } - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QVERIFY(waitForFinish(reply) != Timeout); @@ -3709,7 +3713,7 @@ void tst_QNetworkReply::ioGetWithManyProxies() QFETCH(QString, url); QUrl theUrl(url); QNetworkRequest request(theUrl); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); DataReader reader(reply); QSignalSpy authspy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*))); @@ -3777,7 +3781,7 @@ void tst_QNetworkReply::ioPutToFileFromFile() QUrl url = QUrl::fromLocalFile(targetFile.fileName()); QNetworkRequest request(url); - QNetworkReplyPtr reply = manager.put(request, &sourceFile); + QNetworkReplyPtr reply(manager.put(request, &sourceFile)); QVERIFY(waitForFinish(reply) == Success); @@ -3812,7 +3816,7 @@ void tst_QNetworkReply::ioPutToFileFromSocket() QVERIFY(socketpair.endPoints[0] && socketpair.endPoints[1]); socketpair.endPoints[0]->write(data); - QNetworkReplyPtr reply = manager.put(QNetworkRequest(url), socketpair.endPoints[1]); + QNetworkReplyPtr reply(manager.put(QNetworkRequest(url), socketpair.endPoints[1])); socketpair.endPoints[0]->close(); QVERIFY(waitForFinish(reply) == Success); @@ -3856,8 +3860,8 @@ void tst_QNetworkReply::ioPutToFileFromLocalSocket() QFETCH(QByteArray, data); active.write(data); active.close(); - QNetworkReplyPtr reply = manager.put(QNetworkRequest(url), passive); - passive->setParent(reply); + QNetworkReplyPtr reply(manager.put(QNetworkRequest(url), passive)); + passive->setParent(reply.data()); #ifdef Q_OS_WIN if (!data.isEmpty()) @@ -3909,7 +3913,7 @@ void tst_QNetworkReply::ioPutToFileFromProcess() process.write(data); process.closeWriteChannel(); - QNetworkReplyPtr reply = manager.put(QNetworkRequest(url), &process); + QNetworkReplyPtr reply(manager.put(QNetworkRequest(url), &process)); QVERIFY(waitForFinish(reply) == Success); @@ -3943,7 +3947,7 @@ void tst_QNetworkReply::ioPutToFtpFromFile() .arg(uniqueExtension)); QNetworkRequest request(url); - QNetworkReplyPtr reply = manager.put(request, &sourceFile); + QNetworkReplyPtr reply(manager.put(request, &sourceFile)); QVERIFY(waitForFinish(reply) == Success); @@ -3992,7 +3996,7 @@ void tst_QNetworkReply::ioPutToHttpFromFile() .arg(uniqueExtension)); QNetworkRequest request(url); - QNetworkReplyPtr reply = manager.put(request, &sourceFile); + QNetworkReplyPtr reply(manager.put(request, &sourceFile)); QVERIFY(waitForFinish(reply) == Success); @@ -4007,7 +4011,7 @@ void tst_QNetworkReply::ioPutToHttpFromFile() // download the file again from HTTP to make sure it was uploaded // correctly - reply = manager.get(request); + reply.reset(manager.get(request)); QVERIFY(waitForFinish(reply) == Success); @@ -4033,7 +4037,7 @@ void tst_QNetworkReply::ioPostToHttpFromFile() QNetworkRequest request(url); request.setRawHeader("Content-Type", "application/octet-stream"); - QNetworkReplyPtr reply = manager.post(request, &sourceFile); + QNetworkReplyPtr reply(manager.post(request, &sourceFile)); QVERIFY(waitForFinish(reply) == Success); @@ -4106,7 +4110,7 @@ void tst_QNetworkReply::ioPostToHttpFromSocket() request.setRawHeader("Content-Type", "application/octet-stream"); manager.setProxy(proxy); - QNetworkReplyPtr reply = manager.post(request, socketpair.endPoints[1]); + QNetworkReplyPtr reply(manager.post(request, socketpair.endPoints[1])); socketpair.endPoints[0]->close(); connect(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)), @@ -4183,7 +4187,7 @@ void tst_QNetworkReply::ioPostToHttpFromSocketSynchronous() QNetworkRequest::SynchronousRequestAttribute, true); - QNetworkReplyPtr reply = manager.post(request, socketpair.endPoints[1]); + QNetworkReplyPtr reply(manager.post(request, socketpair.endPoints[1])); QVERIFY(reply->isFinished()); socketpair.endPoints[0]->close(); @@ -4209,7 +4213,7 @@ void tst_QNetworkReply::ioPostToHttpFromMiddleOfFileToEnd() QUrl url = "http://" + QtNetworkSettings::serverName() + "/qtest/protected/cgi-bin/md5sum.cgi"; QNetworkRequest request(url); request.setRawHeader("Content-Type", "application/octet-stream"); - QNetworkReplyPtr reply = manager.post(request, &sourceFile); + QNetworkReplyPtr reply(manager.post(request, &sourceFile)); connect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)), SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*))); @@ -4238,7 +4242,7 @@ void tst_QNetworkReply::ioPostToHttpFromMiddleOfFileFiveBytes() // only send 5 bytes request.setHeader(QNetworkRequest::ContentLengthHeader, 5); QVERIFY(request.header(QNetworkRequest::ContentLengthHeader).isValid()); - QNetworkReplyPtr reply = manager.post(request, &sourceFile); + QNetworkReplyPtr reply(manager.post(request, &sourceFile)); connect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)), SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*))); @@ -4266,7 +4270,7 @@ void tst_QNetworkReply::ioPostToHttpFromMiddleOfQBufferFiveBytes() QUrl url = "http://" + QtNetworkSettings::serverName() + "/qtest/protected/cgi-bin/md5sum.cgi"; QNetworkRequest request(url); request.setRawHeader("Content-Type", "application/octet-stream"); - QNetworkReplyPtr reply = manager.post(request, &uploadBuffer); + QNetworkReplyPtr reply(manager.post(request, &uploadBuffer)); connect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)), SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*))); @@ -4298,7 +4302,7 @@ void tst_QNetworkReply::ioPostToHttpNoBufferFlag() // disallow buffering request.setAttribute(QNetworkRequest::DoNotBufferUploadDataAttribute, true); request.setHeader(QNetworkRequest::ContentLengthHeader, data.size()); - QNetworkReplyPtr reply = manager.post(request, socketpair.endPoints[1]); + QNetworkReplyPtr reply(manager.post(request, socketpair.endPoints[1])); socketpair.endPoints[0]->close(); connect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)), @@ -4376,11 +4380,11 @@ void tst_QNetworkReply::ioPostToHttpsUploadProgress() QNetworkRequest request(url); request.setRawHeader("Content-Type", "application/octet-stream"); - QNetworkReplyPtr reply = manager.post(request, sourceFile); + QNetworkReplyPtr reply(manager.post(request, sourceFile)); - QSignalSpy spy(reply, SIGNAL(uploadProgress(qint64,qint64))); + QSignalSpy spy(reply.data(), SIGNAL(uploadProgress(qint64,qint64))); connect(&server, SIGNAL(newEncryptedConnection()), &QTestEventLoop::instance(), SLOT(exitLoop())); - connect(reply, SIGNAL(sslErrors(const QList<QSslError>&)), reply, SLOT(ignoreSslErrors())); + connect(reply, SIGNAL(sslErrors(const QList<QSslError>&)), reply.data(), SLOT(ignoreSslErrors())); // get the request started and the incoming socket connected QTestEventLoop::instance().enterLoop(10); @@ -4464,11 +4468,11 @@ void tst_QNetworkReply::ioGetFromBuiltinHttp() .arg(https?"https":"http") .arg(server.serverPort())); QNetworkRequest request(url); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); reply->setReadBufferSize(bufferSize); reply->ignoreSslErrors(); const int rate = 200; // in kB per sec - RateControlledReader reader(server, reply, rate, bufferSize); + RateControlledReader reader(server, reply.data(), rate, bufferSize); QTime loopTime; loopTime.start(); @@ -4523,8 +4527,8 @@ void tst_QNetworkReply::ioPostToHttpUploadProgress() QUrl url = QUrl(QString("http://127.0.0.1:%1/").arg(server.serverPort())); QNetworkRequest request(url); request.setRawHeader("Content-Type", "application/octet-stream"); - QNetworkReplyPtr reply = manager.post(request, &sourceFile); - QSignalSpy spy(reply, SIGNAL(uploadProgress(qint64,qint64))); + QNetworkReplyPtr reply(manager.post(request, &sourceFile)); + QSignalSpy spy(reply.data(), SIGNAL(uploadProgress(qint64,qint64))); connect(&server, SIGNAL(newConnection()), &QTestEventLoop::instance(), SLOT(exitLoop())); // get the request started and the incoming socket connected @@ -4583,8 +4587,8 @@ void tst_QNetworkReply::ioPostToHttpEmptyUploadProgress() QUrl url = QUrl(QString("http://127.0.0.1:%1/").arg(server.serverPort())); QNetworkRequest request(url); request.setRawHeader("Content-Type", "application/octet-stream"); - QNetworkReplyPtr reply = manager.post(request, &buffer); - QSignalSpy spy(reply, SIGNAL(uploadProgress(qint64,qint64))); + QNetworkReplyPtr reply(manager.post(request, &buffer)); + QSignalSpy spy(reply.data(), SIGNAL(uploadProgress(qint64,qint64))); connect(&server, SIGNAL(newConnection()), &QTestEventLoop::instance(), SLOT(exitLoop())); @@ -4623,7 +4627,7 @@ void tst_QNetworkReply::lastModifiedHeaderForFile() QUrl url = QUrl::fromLocalFile(fileInfo.filePath()); QNetworkRequest request(url); - QNetworkReplyPtr reply = manager.head(request); + QNetworkReplyPtr reply(manager.head(request)); QVERIFY(waitForFinish(reply) == Success); @@ -4637,7 +4641,7 @@ void tst_QNetworkReply::lastModifiedHeaderForHttp() QUrl url = "http://" + QtNetworkSettings::serverName() + "/qtest/fluke.gif"; QNetworkRequest request(url); - QNetworkReplyPtr reply = manager.head(request); + QNetworkReplyPtr reply(manager.head(request)); QVERIFY(waitForFinish(reply) == Success); @@ -4651,7 +4655,7 @@ void tst_QNetworkReply::lastModifiedHeaderForHttp() void tst_QNetworkReply::httpCanReadLine() { QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt")); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QVERIFY(waitForFinish(reply) == Success); @@ -4690,11 +4694,11 @@ void tst_QNetworkReply::rateControl() FastSender sender(20 * rate * 1024); QNetworkRequest request("debugpipe://localhost:" + QString::number(sender.serverPort())); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); reply->setReadBufferSize(32768); - QSignalSpy errorSpy(reply, SIGNAL(error(QNetworkReply::NetworkError))); + QSignalSpy errorSpy(reply.data(), SIGNAL(error(QNetworkReply::NetworkError))); - RateControlledReader reader(sender, reply, rate, 20); + RateControlledReader reader(sender, reply.data(), rate, 20); // this test is designed to run for 25 seconds at most QTime loopTime; @@ -4742,8 +4746,8 @@ void tst_QNetworkReply::downloadProgress() QVERIFY(server.listen()); QNetworkRequest request("debugpipe://127.0.0.1:" + QString::number(server.serverPort()) + "/?bare=1"); - QNetworkReplyPtr reply = manager.get(request); - QSignalSpy spy(reply, SIGNAL(downloadProgress(qint64,qint64))); + QNetworkReplyPtr reply(manager.get(request)); + QSignalSpy spy(reply.data(), SIGNAL(downloadProgress(qint64,qint64))); connect(reply, SIGNAL(downloadProgress(qint64,qint64)), &QTestEventLoop::instance(), SLOT(exitLoop())); QVERIFY(spy.isValid()); @@ -4808,9 +4812,9 @@ void tst_QNetworkReply::uploadProgress() QVERIFY(server.listen()); QNetworkRequest request("debugpipe://127.0.0.1:" + QString::number(server.serverPort()) + "/?bare=1"); - QNetworkReplyPtr reply = manager.put(request, data); - QSignalSpy spy(reply, SIGNAL(uploadProgress(qint64,qint64))); - QSignalSpy finished(reply, SIGNAL(finished())); + QNetworkReplyPtr reply(manager.put(request, data)); + QSignalSpy spy(reply.data(), SIGNAL(uploadProgress(qint64,qint64))); + QSignalSpy finished(reply.data(), SIGNAL(finished())); QVERIFY(spy.isValid()); QVERIFY(finished.isValid()); @@ -4851,12 +4855,12 @@ void tst_QNetworkReply::chaining() QCOMPARE(sourceFile.size(), qint64(data.size())); QNetworkRequest request(QUrl::fromLocalFile(sourceFile.fileName())); - QNetworkReplyPtr getReply = manager.get(request); + QNetworkReplyPtr getReply(manager.get(request)); QFile targetFile(testFileName); QUrl url = QUrl::fromLocalFile(targetFile.fileName()); request.setUrl(url); - QNetworkReplyPtr putReply = manager.put(request, getReply); + QNetworkReplyPtr putReply(manager.put(request, getReply.data())); QVERIFY(waitForFinish(putReply) == Success); @@ -5087,10 +5091,10 @@ void tst_QNetworkReply::nestedEventLoops() QUrl url("http://" + QtNetworkSettings::serverName()); QNetworkRequest request(url); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); - QSignalSpy finishedspy(reply, SIGNAL(finished())); - QSignalSpy errorspy(reply, SIGNAL(error(QNetworkReply::NetworkError))); + QSignalSpy finishedspy(reply.data(), SIGNAL(finished())); + QSignalSpy errorspy(reply.data(), SIGNAL(error(QNetworkReply::NetworkError))); connect(reply, SIGNAL(finished()), SLOT(nestedEventLoops_slot())); QTestEventLoop::instance().enterLoop(20); @@ -5130,7 +5134,7 @@ void tst_QNetworkReply::httpProxyCommands() manager.setProxy(proxy); QNetworkRequest request(url); request.setRawHeader("User-Agent", "QNetworkReplyAutoTest/1.0"); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); //clearing the proxy here causes the test to fail. //the proxy isn't used until after the bearer has been started //which is correct in general, because system proxy isn't known until that time. @@ -5217,7 +5221,7 @@ void tst_QNetworkReply::httpProxyCommandsSynchronous() QNetworkRequest::SynchronousRequestAttribute, true); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QVERIFY(reply->isFinished()); // synchronous manager.setProxy(QNetworkProxy()); @@ -5242,11 +5246,11 @@ void tst_QNetworkReply::proxyChange() proxyServer.doClose = false; manager.setProxy(dummyProxy); - QNetworkReplyPtr reply1 = manager.get(req); + QNetworkReplyPtr reply1(manager.get(req)); connect(reply1, SIGNAL(finished()), &helper, SLOT(finishedSlot())); manager.setProxy(QNetworkProxy()); - QNetworkReplyPtr reply2 = manager.get(req); + QNetworkReplyPtr reply2(manager.get(req)); connect(reply2, SIGNAL(finished()), &helper, SLOT(finishedSlot())); QTestEventLoop::instance().enterLoop(20); @@ -5270,7 +5274,7 @@ void tst_QNetworkReply::proxyChange() "Content-Length: 1\r\n\r\n1"; manager.setProxy(dummyProxy); - QNetworkReplyPtr reply3 = manager.get(req); + QNetworkReplyPtr reply3(manager.get(req)); QVERIFY(waitForFinish(reply3) == Failure); @@ -5300,12 +5304,12 @@ void tst_QNetworkReply::authorizationError() { QFETCH(QString, url); QNetworkRequest request(url); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QCOMPARE(reply->error(), QNetworkReply::NoError); - QSignalSpy errorSpy(reply, SIGNAL(error(QNetworkReply::NetworkError))); - QSignalSpy finishedSpy(reply, SIGNAL(finished())); + QSignalSpy errorSpy(reply.data(), SIGNAL(error(QNetworkReply::NetworkError))); + QSignalSpy finishedSpy(reply.data(), SIGNAL(finished())); // now run the request: QVERIFY(waitForFinish(reply) == Failure); @@ -5552,7 +5556,7 @@ void tst_QNetworkReply::ignoreSslErrorsList() { QFETCH(QString, url); QNetworkRequest request(url); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QFETCH(QList<QSslError>, expectedSslErrors); reply->ignoreSslErrors(expectedSslErrors); @@ -5579,7 +5583,7 @@ void tst_QNetworkReply::ignoreSslErrorsListWithSlot() { QFETCH(QString, url); QNetworkRequest request(url); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QFETCH(QList<QSslError>, expectedSslErrors); // store the errors to ignore them later in the slot connected below @@ -5614,7 +5618,7 @@ void tst_QNetworkReply::sslConfiguration() QNetworkRequest request(QUrl("https://" + QtNetworkSettings::serverName() + "/index.html")); QFETCH(QSslConfiguration, configuration); request.setSslConfiguration(configuration); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QVERIFY(waitForFinish(reply) != Timeout); @@ -5889,9 +5893,9 @@ void tst_QNetworkReply::getFromHttpIntoBuffer2() request.setAttribute(QNetworkRequest::MaximumDownloadBufferSizeAttribute, 1024*1024*128); // 128 MB is max allowed QNetworkAccessManager manager; - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); - GetFromHttpIntoBuffer2Client client(reply, useDownloadBuffer, UploadSize); + GetFromHttpIntoBuffer2Client client(reply.data(), useDownloadBuffer, UploadSize); connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection); QTestEventLoop::instance().enterLoop(40); @@ -5909,7 +5913,7 @@ void tst_QNetworkReply::getFromHttpIntoBufferCanReadLine() QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort()))); request.setAttribute(QNetworkRequest::MaximumDownloadBufferSizeAttribute, 1024*1024*128); // 128 MB is max allowed - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QVERIFY(waitForFinish(reply) == Success); @@ -5933,7 +5937,7 @@ void tst_QNetworkReply::ioGetFromHttpWithoutContentLength() server.doClose = true; QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort()))); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QVERIFY(waitForFinish(reply) == Success); @@ -5952,7 +5956,7 @@ void tst_QNetworkReply::ioGetFromHttpBrokenChunkedEncoding() server.doClose = false; // FIXME QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort()))); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop())); QTestEventLoop::instance().enterLoop(10); @@ -5981,7 +5985,7 @@ void tst_QNetworkReply::qtbug12908compressedHttpReply() server.doClose = true; QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort()))); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QVERIFY(waitForFinish(reply) == Success); @@ -6004,7 +6008,7 @@ void tst_QNetworkReply::compressedHttpReplyBrokenGzip() server.doClose = true; QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort()))); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QVERIFY(waitForFinish(reply) == Failure); @@ -6017,7 +6021,7 @@ void tst_QNetworkReply::getFromUnreachableIp() QNetworkAccessManager manager; QNetworkRequest request(QUrl("http://255.255.255.255/42/23/narf/narf/narf")); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QVERIFY(waitForFinish(reply) == Failure); @@ -6031,11 +6035,11 @@ void tst_QNetworkReply::qtbug4121unknownAuthentication() QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort()))); QNetworkAccessManager manager; - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QSignalSpy authSpy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*))); QSignalSpy finishedSpy(&manager, SIGNAL(finished(QNetworkReply*))); - QSignalSpy errorSpy(reply, SIGNAL(error(QNetworkReply::NetworkError))); + QSignalSpy errorSpy(reply.data(), SIGNAL(error(QNetworkReply::NetworkError))); connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection); QTestEventLoop::instance().enterLoop(10); @@ -6124,7 +6128,7 @@ void tst_QNetworkReply::authenticationCacheAfterCancel() QNetworkReplyPtr reply; if (proxyAuth) { //should fail due to no credentials - reply = manager.get(request); + reply.reset(manager.get(request)); connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection); QTestEventLoop::instance().enterLoop(10); QVERIFY(!QTestEventLoop::instance().timeout()); @@ -6137,7 +6141,7 @@ void tst_QNetworkReply::authenticationCacheAfterCancel() //should fail due to bad credentials helper.proxyUserName = "qsockstest"; helper.proxyPassword = "badpassword"; - reply = manager.get(request); + reply.reset(manager.get(request)); connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection); QTestEventLoop::instance().enterLoop(10); QVERIFY(!QTestEventLoop::instance().timeout()); @@ -6165,7 +6169,7 @@ void tst_QNetworkReply::authenticationCacheAfterCancel() } //should fail due to no credentials - reply = manager.get(request); + reply.reset(manager.get(request)); connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection); QTestEventLoop::instance().enterLoop(10); QVERIFY(!QTestEventLoop::instance().timeout()); @@ -6181,7 +6185,7 @@ void tst_QNetworkReply::authenticationCacheAfterCancel() //should fail due to bad credentials helper.httpUserName = "baduser"; helper.httpPassword = "badpassword"; - reply = manager.get(request); + reply.reset(manager.get(request)); connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection); QTestEventLoop::instance().enterLoop(10); QVERIFY(!QTestEventLoop::instance().timeout()); @@ -6199,7 +6203,7 @@ void tst_QNetworkReply::authenticationCacheAfterCancel() helper.httpUserName = "httptest"; helper.httpPassword = "httptest"; - reply = manager.get(request); + reply.reset(manager.get(request)); connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection); QTestEventLoop::instance().enterLoop(10); QVERIFY(!QTestEventLoop::instance().timeout()); @@ -6214,7 +6218,7 @@ void tst_QNetworkReply::authenticationCacheAfterCancel() } //next auth should use cached credentials - reply = manager.get(request); + reply.reset(manager.get(request)); connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection); QTestEventLoop::instance().enterLoop(10); QVERIFY(!QTestEventLoop::instance().timeout()); @@ -6323,7 +6327,7 @@ void tst_QNetworkReply::httpWithNoCredentialUsage() // Get with credentials, to preload authentication cache { QNetworkRequest request(QUrl("http://httptest:httptest@" + QtNetworkSettings::serverName() + "/qtest/protected/cgi-bin/md5sum.cgi")); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QVERIFY(waitForFinish(reply) == Success); // credentials in URL, so don't expect authentication signal QCOMPARE(authSpy.count(), 0); @@ -6334,7 +6338,7 @@ void tst_QNetworkReply::httpWithNoCredentialUsage() // Get with cached credentials (normal usage) { QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/protected/cgi-bin/md5sum.cgi")); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QVERIFY(waitForFinish(reply) == Success); // credentials in cache, so don't expect authentication signal QCOMPARE(authSpy.count(), 0); @@ -6346,9 +6350,9 @@ void tst_QNetworkReply::httpWithNoCredentialUsage() { QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/protected/cgi-bin/md5sum.cgi")); request.setAttribute(QNetworkRequest::AuthenticationReuseAttribute, QNetworkRequest::Manual); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); - QSignalSpy errorSpy(reply, SIGNAL(error(QNetworkReply::NetworkError))); + QSignalSpy errorSpy(reply.data(), SIGNAL(error(QNetworkReply::NetworkError))); connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection); QTestEventLoop::instance().enterLoop(10); @@ -6370,7 +6374,7 @@ void tst_QNetworkReply::qtbug15311doubleContentLength() server.doClose = true; QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort()))); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QVERIFY(waitForFinish(reply) == Success); @@ -6389,7 +6393,7 @@ void tst_QNetworkReply::qtbug18232gzipContentLengthZero() server.doClose = true; QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort()))); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QVERIFY(waitForFinish(reply) == Success); @@ -6410,7 +6414,7 @@ void tst_QNetworkReply::qtbug22660gzipNoContentLengthEmptyContent() server.doClose = true; QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort()))); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QVERIFY(waitForFinish(reply) == Success); @@ -6573,16 +6577,15 @@ void tst_QNetworkReply::httpAbort() // Abort after the first readyRead() QNetworkRequest request("http://" + QtNetworkSettings::serverName() + "/qtest/bigfile"); - QNetworkReplyPtr reply; - reply = manager.get(request); - HttpAbortHelper replyHolder(reply); + QNetworkReplyPtr reply(manager.get(request)); + HttpAbortHelper replyHolder(reply.data()); QTestEventLoop::instance().enterLoop(10); QVERIFY(!QTestEventLoop::instance().timeout()); QCOMPARE(reply->error(), QNetworkReply::OperationCanceledError); QVERIFY(reply->isFinished()); // Abort immediately after the get() - QNetworkReplyPtr reply2 = manager.get(request); + QNetworkReplyPtr reply2(manager.get(request)); connect(reply2, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop())); reply2->abort(); QCOMPARE(reply2->error(), QNetworkReply::OperationCanceledError); @@ -6590,7 +6593,7 @@ void tst_QNetworkReply::httpAbort() // Abort after the finished() QNetworkRequest request3("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"); - QNetworkReplyPtr reply3 = manager.get(request3); + QNetworkReplyPtr reply3(manager.get(request3)); QVERIFY(waitForFinish(reply3) == Success); @@ -6621,7 +6624,7 @@ void tst_QNetworkReply::dontInsertPartialContentIntoTheCache() QNetworkRequest request(url); request.setRawHeader("Range", "bytes=2-6"); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QVERIFY(waitForFinish(reply) == Success); @@ -6638,7 +6641,7 @@ void tst_QNetworkReply::httpUserAgent() QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort()))); request.setHeader(QNetworkRequest::UserAgentHeader, "abcDEFghi"); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QVERIFY(waitForFinish(reply) == Success); @@ -6691,7 +6694,7 @@ void tst_QNetworkReply::synchronousAuthenticationCache() QNetworkRequest request(url); request.setAttribute(QNetworkRequest::SynchronousRequestAttribute, true); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QVERIFY(reply->isFinished()); QCOMPARE(reply->error(), QNetworkReply::AuthenticationRequiredError); } @@ -6702,7 +6705,7 @@ void tst_QNetworkReply::synchronousAuthenticationCache() QNetworkRequest request(url); request.setAttribute(QNetworkRequest::SynchronousRequestAttribute, true); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QVERIFY(reply->isFinished()); QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->readAll().constData(), "OK"); @@ -6714,7 +6717,7 @@ void tst_QNetworkReply::synchronousAuthenticationCache() QNetworkRequest request(url); request.setAttribute(QNetworkRequest::SynchronousRequestAttribute, true); - QNetworkReplyPtr reply = manager.get(request); + QNetworkReplyPtr reply(manager.get(request)); QVERIFY(reply->isFinished()); QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->readAll().constData(), "OK"); @@ -6728,7 +6731,7 @@ void tst_QNetworkReply::pipelining() for (int a = 0; a < 20; a++) { QNetworkRequest request(urlString + QString::number(a)); request.setAttribute(QNetworkRequest::HttpPipeliningAllowedAttribute, QVariant(true)); - replies.append(manager.get(request)); + replies.append(QNetworkReplyPtr(manager.get(request))); connect(replies.at(a), SIGNAL(finished()), this, SLOT(pipeliningHelperSlot())); } QTestEventLoop::instance().enterLoop(20); @@ -6746,7 +6749,7 @@ void tst_QNetworkReply::pipeliningHelperSlot() { pipeliningWasUsed = true; // check that the contents match (the response to echo.cgi?3 should return 3 etc.) - QString urlQueryString = reply->url().queryItems().at(0).first; + QString urlQueryString = reply->url().query(); QString content = reply->readAll(); QVERIFY2(urlQueryString == content, "data corruption with pipelining detected"); @@ -6779,7 +6782,6 @@ void tst_QNetworkReply::closeDuringDownload() QTest::qWait(1000); //cancelling ftp takes some time, this avoids a warning caused by test's cleanup() destroying the connection cache before the abort is finished } - void tst_QNetworkReply::ftpAuthentication_data() { QTest::addColumn<QString>("referenceName"); @@ -6807,6 +6809,49 @@ void tst_QNetworkReply::ftpAuthentication() QCOMPARE(reply->error(), QNetworkReply::NetworkError(error)); } +void tst_QNetworkReply::backgroundRequest_data() +{ + QTest::addColumn<bool>("background"); + QTest::addColumn<int>("policy"); + QTest::addColumn<QNetworkReply::NetworkError>("error"); + + QTest::newRow("fg, normal") << false << 0 << QNetworkReply::NoError; + QTest::newRow("bg, normal") << true << 0 << QNetworkReply::NoError; + QTest::newRow("fg, nobg") << false << (int)QNetworkSession::NoBackgroundTrafficPolicy << QNetworkReply::NoError; + QTest::newRow("bg, nobg") << true << (int)QNetworkSession::NoBackgroundTrafficPolicy << QNetworkReply::BackgroundRequestNotAllowedError; + +} + +void tst_QNetworkReply::backgroundRequest() +{ +#ifdef QT_BUILD_INTERNAL + QFETCH(bool, background); + QFETCH(int, policy); + QFETCH(QNetworkReply::NetworkError, error); + + QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName())); + + if (background) + request.setAttribute(QNetworkRequest::BackgroundRequestAttribute, QVariant::fromValue(true)); + + //this preconstructs the session so we can change policies in advance + manager.setConfiguration(networkConfiguration); + + const QWeakPointer<const QNetworkSession> session = QNetworkAccessManagerPrivate::getNetworkSession(&manager); + QVERIFY(session); + QNetworkSession::UsagePolicies original = session.data()->usagePolicies(); + QNetworkSessionPrivate::setUsagePolicies(*const_cast<QNetworkSession *>(session.data()), QNetworkSession::UsagePolicies(policy)); + + QNetworkReplyPtr reply(manager.get(request)); + + QVERIFY(waitForFinish(reply) != Timeout); + if (session) + QNetworkSessionPrivate::setUsagePolicies(*const_cast<QNetworkSession *>(session.data()), original); + + QVERIFY(reply->isFinished()); + QCOMPARE(reply->error(), error); +#endif +} // NOTE: This test must be last testcase in tst_qnetworkreply! void tst_QNetworkReply::parentingRepliesToTheApp() |