diff options
author | Lars Knoll <lars.knoll@qt.io> | 2020-02-28 08:40:53 +0100 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2020-02-28 09:48:30 +0100 |
commit | a450cce6b670dbcac84fcc4a66fc632b31ce8414 (patch) | |
tree | 35b77fa22c4def97b619bd3a87f6d394e452bb2e | |
parent | f6f6eab89f57fb0db8f623f4a92a7b9c4ba6e9ea (diff) | |
parent | 4c86e667d220e27bb4b6e370675ffb2872e8521c (diff) |
Merge remote-tracking branch 'origin/5.15' into dev
Change-Id: I469b0501cc65fc5ce4d797a69ae89405cc69c7f8
107 files changed, 1109 insertions, 562 deletions
diff --git a/examples/embedded/flightinfo/flightinfo.cpp b/examples/embedded/flightinfo/flightinfo.cpp index a20a03de43..f7df368dd7 100644 --- a/examples/embedded/flightinfo/flightinfo.cpp +++ b/examples/embedded/flightinfo/flightinfo.cpp @@ -144,7 +144,7 @@ public: private slots: void handleNetworkData(QNetworkReply *networkReply) { - if (!networkReply->networkError()) { + if (!networkReply->error()) { if (!mapReplies.contains(networkReply)) { // Assume UTF-8 encoded QByteArray data = networkReply->readAll(); diff --git a/examples/embedded/lightmaps/slippymap.cpp b/examples/embedded/lightmaps/slippymap.cpp index dfc21862fb..da003981ff 100644 --- a/examples/embedded/lightmaps/slippymap.cpp +++ b/examples/embedded/lightmaps/slippymap.cpp @@ -162,7 +162,7 @@ void SlippyMap::handleNetworkData(QNetworkReply *reply) { QImage img; QPoint tp = reply->request().attribute(QNetworkRequest::User).toPoint(); - if (!reply->networkError()) + if (!reply->error()) if (!img.load(reply, 0)) img = QImage(); reply->deleteLater(); diff --git a/examples/network/blockingfortuneclient/fortunethread.cpp b/examples/network/blockingfortuneclient/fortunethread.cpp index 24801436df..67ac7ebfa5 100644 --- a/examples/network/blockingfortuneclient/fortunethread.cpp +++ b/examples/network/blockingfortuneclient/fortunethread.cpp @@ -103,7 +103,7 @@ void FortuneThread::run() //! [6] //! [8] if (!socket.waitForConnected(Timeout)) { - emit error(socket.socketError(), socket.errorString()); + emit error(socket.error(), socket.errorString()); return; } //! [8] //! [11] @@ -115,7 +115,7 @@ void FortuneThread::run() do { if (!socket.waitForReadyRead(Timeout)) { - emit error(socket.socketError(), socket.errorString()); + emit error(socket.error(), socket.errorString()); return; } diff --git a/examples/network/doc/src/fortuneclient.qdoc b/examples/network/doc/src/fortuneclient.qdoc index 544fa156b7..4cb7544fc0 100644 --- a/examples/network/doc/src/fortuneclient.qdoc +++ b/examples/network/doc/src/fortuneclient.qdoc @@ -89,7 +89,7 @@ The only QTcpSocket signals we need in this example are QTcpSocket::readyRead(), signifying that data has been received, and - QTcpSocket::error(), which we will use to catch any connection errors: + QTcpSocket::errorOccurred(), which we will use to catch any connection errors: \dots \snippet fortuneclient/client.cpp 3 @@ -118,11 +118,11 @@ \li \e{An error occurs.} We need to inform the user if the connection failed or was broken. In this case, QTcpSocket will emit - \l{QTcpSocket::error()}{error()}, and \c Client::displayError() will be + \l{QTcpSocket::errorOccurred()}{errorOccurred()}, and \c Client::displayError() will be called. \endlist - Let's go through the \l{QTcpSocket::error()}{error()} case first: + Let's go through the \l{QTcpSocket::errorOccurred()}{errorOccurred()} case first: \snippet fortuneclient/client.cpp 13 diff --git a/examples/network/download/main.cpp b/examples/network/download/main.cpp index f496c1723e..076dfdfd0b 100644 --- a/examples/network/download/main.cpp +++ b/examples/network/download/main.cpp @@ -175,7 +175,7 @@ void DownloadManager::sslErrors(const QList<QSslError> &sslErrors) void DownloadManager::downloadFinished(QNetworkReply *reply) { QUrl url = reply->url(); - if (reply->networkError()) { + if (reply->error()) { fprintf(stderr, "Download of %s failed: %s\n", url.toEncoded().constData(), qPrintable(reply->errorString())); diff --git a/examples/network/downloadmanager/downloadmanager.cpp b/examples/network/downloadmanager/downloadmanager.cpp index eceb48977b..cbad29541a 100644 --- a/examples/network/downloadmanager/downloadmanager.cpp +++ b/examples/network/downloadmanager/downloadmanager.cpp @@ -162,7 +162,7 @@ void DownloadManager::downloadFinished() progressBar.clear(); output.close(); - if (currentDownload->networkError()) { + if (currentDownload->error()) { // download failed fprintf(stderr, "Failed: %s\n", qPrintable(currentDownload->errorString())); output.remove(); diff --git a/examples/network/fortuneclient/client.cpp b/examples/network/fortuneclient/client.cpp index 0ccbf51df8..2daac33c2b 100644 --- a/examples/network/fortuneclient/client.cpp +++ b/examples/network/fortuneclient/client.cpp @@ -121,7 +121,7 @@ Client::Client(QWidget *parent) //! [2] //! [3] connect(tcpSocket, &QIODevice::readyRead, this, &Client::readFortune); //! [2] //! [4] - connect(tcpSocket, QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error), + connect(tcpSocket, &QAbstractSocket::errorOccurred, //! [3] this, &Client::displayError); //! [4] diff --git a/examples/network/googlesuggest/googlesuggest.cpp b/examples/network/googlesuggest/googlesuggest.cpp index 1ae515f530..2cba43178e 100644 --- a/examples/network/googlesuggest/googlesuggest.cpp +++ b/examples/network/googlesuggest/googlesuggest.cpp @@ -209,7 +209,7 @@ void GSuggestCompletion::preventSuggest() void GSuggestCompletion::handleNetworkData(QNetworkReply *networkReply) { QUrl url = networkReply->url(); - if (networkReply->networkError() == QNetworkReply::NoError) { + if (networkReply->error() == QNetworkReply::NoError) { QVector<QString> choices; QByteArray response(networkReply->readAll()); diff --git a/examples/network/http/CMakeLists.txt b/examples/network/http/CMakeLists.txt index 3ce82d63da..d9f50f5c9d 100644 --- a/examples/network/http/CMakeLists.txt +++ b/examples/network/http/CMakeLists.txt @@ -28,6 +28,16 @@ target_link_libraries(http PUBLIC Qt::Widgets ) +if(ANDROID AND TARGET Qt::AndroidExtras) + target_compile_definitions(http PUBLIC + REQUEST_PERMISSIONS_ON_ANDROID + ) + + target_link_libraries(http PUBLIC + Qt::AndroidExtras + ) +endif() + install(TARGETS http RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/network/http/http.pro b/examples/network/http/http.pro index 2f2d3b00ae..f67cd01495 100644 --- a/examples/network/http/http.pro +++ b/examples/network/http/http.pro @@ -1,4 +1,8 @@ QT += network widgets +android: qtHaveModule(androidextras) { + QT += androidextras + DEFINES += REQUEST_PERMISSIONS_ON_ANDROID +} HEADERS += httpwindow.h SOURCES += httpwindow.cpp \ diff --git a/examples/network/http/httpwindow.cpp b/examples/network/http/httpwindow.cpp index d0eb2529cd..c7bf0c0dff 100644 --- a/examples/network/http/httpwindow.cpp +++ b/examples/network/http/httpwindow.cpp @@ -249,7 +249,7 @@ void HttpWindow::httpFinished() return; } - if (reply->networkError()) { + if (reply->error()) { QFile::remove(fi.absoluteFilePath()); statusLabel->setText(tr("Download failed:\n%1.").arg(reply->errorString())); downloadButton->setEnabled(true); diff --git a/examples/network/http/main.cpp b/examples/network/http/main.cpp index f126c7846a..1339f2f693 100644 --- a/examples/network/http/main.cpp +++ b/examples/network/http/main.cpp @@ -53,11 +53,30 @@ #include <QScreen> #include "httpwindow.h" +#ifdef REQUEST_PERMISSIONS_ON_ANDROID +#include <QtAndroid> + +bool requestStoragePermission() { + using namespace QtAndroid; + + QString permission = QStringLiteral("android.permission.WRITE_EXTERNAL_STORAGE"); + const QHash<QString, PermissionResult> results = requestPermissionsSync(QStringList({permission})); + if (!results.contains(permission) || results[permission] == PermissionResult::Denied) { + qWarning() << "Couldn't get permission: " << permission; + return false; + } + + return true; +} +#endif int main(int argc, char *argv[]) { QApplication app(argc, argv); - +#ifdef REQUEST_PERMISSIONS_ON_ANDROID + if (!requestStoragePermission()) + return -1; +#endif HttpWindow httpWin; const QRect availableSize = httpWin.screen()->availableGeometry(); httpWin.resize(availableSize.width() / 5, availableSize.height() / 5); diff --git a/examples/network/loopback/dialog.cpp b/examples/network/loopback/dialog.cpp index d87f024031..4037f4c085 100644 --- a/examples/network/loopback/dialog.cpp +++ b/examples/network/loopback/dialog.cpp @@ -78,7 +78,7 @@ Dialog::Dialog(QWidget *parent) connect(&tcpClient, &QAbstractSocket::connected, this, &Dialog::startTransfer); connect(&tcpClient, &QIODevice::bytesWritten, this, &Dialog::updateClientProgress); - connect(&tcpClient, QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error), + connect(&tcpClient, &QAbstractSocket::errorOccurred, this, &Dialog::displayError); QVBoxLayout *mainLayout = new QVBoxLayout; @@ -131,8 +131,7 @@ void Dialog::acceptConnection() connect(tcpServerConnection, &QIODevice::readyRead, this, &Dialog::updateServerProgress); - connect(tcpServerConnection, - QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error), + connect(tcpServerConnection, &QAbstractSocket::errorOccurred, this, &Dialog::displayError); connect(tcpServerConnection, &QTcpSocket::disconnected, tcpServerConnection, &QTcpSocket::deleteLater); diff --git a/examples/network/network-chat/client.cpp b/examples/network/network-chat/client.cpp index d451181813..fe35d535f4 100644 --- a/examples/network/network-chat/client.cpp +++ b/examples/network/network-chat/client.cpp @@ -102,8 +102,7 @@ void Client::newConnection(Connection *connection) { connection->setGreetingMessage(peerManager->userName()); - connect(connection, QOverload<QAbstractSocket::SocketError>::of(&Connection::error), - this, &Client::connectionError); + connect(connection, &Connection::errorOccurred, this, &Client::connectionError); connect(connection, &Connection::disconnected, this, &Client::disconnected); connect(connection, &Connection::readyForUse, this, &Client::readyForUse); } diff --git a/examples/network/threadedfortuneserver/fortunethread.cpp b/examples/network/threadedfortuneserver/fortunethread.cpp index 2e730c6c8f..ddde5121a3 100644 --- a/examples/network/threadedfortuneserver/fortunethread.cpp +++ b/examples/network/threadedfortuneserver/fortunethread.cpp @@ -65,7 +65,7 @@ void FortuneThread::run() QTcpSocket tcpSocket; //! [1] //! [2] if (!tcpSocket.setSocketDescriptor(socketDescriptor)) { - emit error(tcpSocket.socketError()); + emit error(tcpSocket.error()); return; } //! [2] //! [3] diff --git a/examples/network/torrent/peerwireclient.cpp b/examples/network/torrent/peerwireclient.cpp index cea4ef53fa..c30abd0e13 100644 --- a/examples/network/torrent/peerwireclient.cpp +++ b/examples/network/torrent/peerwireclient.cpp @@ -107,8 +107,8 @@ PeerWireClient::PeerWireClient(const QByteArray &peerId, QObject *parent) this, &PeerWireClient::readyRead); connect(&socket, &QTcpSocket::disconnected, this, &PeerWireClient::disconnected); - connect(&socket, QOverload<QAbstractSocket::SocketError>::of(&QTcpSocket::error), - this, QOverload<QAbstractSocket::SocketError>::of(&PeerWireClient::error)); + connect(&socket, &QTcpSocket::errorOccurred, + this, &PeerWireClient::errorOccurred); connect(&socket, &QTcpSocket::bytesWritten, this, &PeerWireClient::bytesWritten); connect(&socket, &QTcpSocket::stateChanged, diff --git a/examples/network/torrent/torrentclient.cpp b/examples/network/torrent/torrentclient.cpp index 00f46df892..2ba4476861 100644 --- a/examples/network/torrent/torrentclient.cpp +++ b/examples/network/torrent/torrentclient.cpp @@ -843,7 +843,7 @@ void TorrentClient::initializeConnection(PeerWireClient *client) this, &TorrentClient::setupOutgoingConnection); connect(client, &PeerWireClient::disconnected, this, &TorrentClient::removeClient); - connect(client, QOverload<QAbstractSocket::SocketError>::of(&PeerWireClient::error), + connect(client, &PeerWireClient::errorOccurred, this, &TorrentClient::removeClient); connect(client, &PeerWireClient::piecesAvailable, this, &TorrentClient::peerPiecesAvailable); @@ -867,7 +867,7 @@ void TorrentClient::removeClient() // Remove the host from our list of known peers if the connection // failed. - if (client->peer() && client->socketError() == QAbstractSocket::ConnectionRefusedError) + if (client->peer() && client->error() == QAbstractSocket::ConnectionRefusedError) d->peers.removeAll(client->peer()); // Remove the client from RateController and all structures. diff --git a/examples/network/torrent/torrentserver.cpp b/examples/network/torrent/torrentserver.cpp index 215498194b..7af958c27c 100644 --- a/examples/network/torrent/torrentserver.cpp +++ b/examples/network/torrent/torrentserver.cpp @@ -80,7 +80,7 @@ void TorrentServer::incomingConnection(qintptr socketDescriptor) if (ConnectionManager::instance()->canAddConnection() && !clients.isEmpty()) { connect(client, &PeerWireClient::infoHashReceived, this, &TorrentServer::processInfoHash); - connect(client, QOverload<QAbstractSocket::SocketError>::of(&PeerWireClient::error), + connect(client, &PeerWireClient::errorOccurred, this, QOverload<>::of(&TorrentServer::removeClient)); RateController::instance()->addSocket(client); ConnectionManager::instance()->addConnection(client); diff --git a/examples/network/torrent/trackerclient.cpp b/examples/network/torrent/trackerclient.cpp index a50a49fd64..264a6cc04c 100644 --- a/examples/network/torrent/trackerclient.cpp +++ b/examples/network/torrent/trackerclient.cpp @@ -165,8 +165,8 @@ void TrackerClient::httpRequestDone(QNetworkReply *reply) return; } - if (reply->networkError() != QNetworkReply::NoError) { - emit connectionError(reply->networkError()); + if (reply->error() != QNetworkReply::NoError) { + emit connectionError(reply->error()); return; } diff --git a/mkspecs/common/g++-win32.conf b/mkspecs/common/g++-win32.conf index 6369436863..c3a1f3a373 100644 --- a/mkspecs/common/g++-win32.conf +++ b/mkspecs/common/g++-win32.conf @@ -17,7 +17,7 @@ include(g++-base.conf) MAKEFILE_GENERATOR = MINGW QMAKE_PLATFORM = win32 mingw -CONFIG += precompile_header +CONFIG += debug_and_release debug_and_release_target precompile_header DEFINES += UNICODE _UNICODE WIN32 MINGW_HAS_SECURE_API=1 QMAKE_COMPILER_DEFINES += __GNUC__ _WIN32 # can't add 'DEFINES += WIN64' and 'QMAKE_COMPILER_DEFINES += _WIN64' defines for diff --git a/mkspecs/features/qt_build_config.prf b/mkspecs/features/qt_build_config.prf index 9aa0a4aadc..7ca9943c32 100644 --- a/mkspecs/features/qt_build_config.prf +++ b/mkspecs/features/qt_build_config.prf @@ -91,10 +91,13 @@ android|uikit|winrt: \ # Prevent warnings about object files without any symbols macos: CONFIG += no_warn_empty_obj_files +# Make sure the doc features are loaded last since they depend on other +# features setting up things like includepaths to find everything. +CONFIG = prepare_docs qt_docs_targets $$CONFIG + CONFIG += \ utf8_source \ create_prl link_prl \ - prepare_docs qt_docs_targets \ no_private_qt_headers_warning QTDIR_build \ qt_example_installs \ # Qt modules get compiled without exceptions enabled by default. diff --git a/mkspecs/features/qt_helper_lib.prf b/mkspecs/features/qt_helper_lib.prf index 216c24c7aa..8a9672e603 100644 --- a/mkspecs/features/qt_helper_lib.prf +++ b/mkspecs/features/qt_helper_lib.prf @@ -60,7 +60,7 @@ win32|CONFIG(static, static|shared) { "QMAKE_DEFINES_$${ucmodule} = $$val_escape(MODULE_DEFINES)" android { MODULE_PRI_CONT += "QMAKE_LIBS_$${ucmodule} =" - } else: debug_and_release { + } else: qtConfig(debug_and_release): { win32: \ MODULE_DEBUG_LIBS = $$DESTDIR/$$prefix$${TARGET}d.$$suffix else: darwin: \ diff --git a/src/corelib/itemmodels/qconcatenatetablesproxymodel.cpp b/src/corelib/itemmodels/qconcatenatetablesproxymodel.cpp index 3afa132483..a2597faa93 100644 --- a/src/corelib/itemmodels/qconcatenatetablesproxymodel.cpp +++ b/src/corelib/itemmodels/qconcatenatetablesproxymodel.cpp @@ -448,6 +448,17 @@ QSize QConcatenateTablesProxyModel::span(const QModelIndex &index) const } /*! + Returns a list of models that were added as source models for this proxy model. + + \since 5.15 +*/ +QList<QAbstractItemModel *> QConcatenateTablesProxyModel::sourceModels() const +{ + Q_D(const QConcatenateTablesProxyModel); + return d->m_models.toList(); +} + +/*! Adds a source model \a sourceModel, below all previously added source models. The ownership of \a sourceModel is not affected by this. diff --git a/src/corelib/itemmodels/qconcatenatetablesproxymodel.h b/src/corelib/itemmodels/qconcatenatetablesproxymodel.h index 69b3a2ba09..1fa84d5f51 100644 --- a/src/corelib/itemmodels/qconcatenatetablesproxymodel.h +++ b/src/corelib/itemmodels/qconcatenatetablesproxymodel.h @@ -56,6 +56,7 @@ public: explicit QConcatenateTablesProxyModel(QObject *parent = nullptr); ~QConcatenateTablesProxyModel(); + QList<QAbstractItemModel *> sourceModels() const; Q_SCRIPTABLE void addSourceModel(QAbstractItemModel *sourceModel); Q_SCRIPTABLE void removeSourceModel(QAbstractItemModel *sourceModel); diff --git a/src/corelib/kernel/qobjectdefs_impl.h b/src/corelib/kernel/qobjectdefs_impl.h index 31ecc8b20d..aed50d6c5a 100644 --- a/src/corelib/kernel/qobjectdefs_impl.h +++ b/src/corelib/kernel/qobjectdefs_impl.h @@ -285,11 +285,15 @@ namespace QtPrivate { { }; + template <typename T> + using is_bool = std::is_same<bool, typename std::decay<T>::type>; + template<typename From, typename To> struct AreArgumentsNarrowedBase<From, To, typename std::enable_if<sizeof(From) && sizeof(To)>::type> : std::integral_constant<bool, (std::is_floating_point<From>::value && std::is_integral<To>::value) || (std::is_floating_point<From>::value && std::is_floating_point<To>::value && sizeof(From) > sizeof(To)) || + ((std::is_pointer<From>::value || std::is_member_pointer<From>::value) && QtPrivate::is_bool<To>::value) || ((std::is_integral<From>::value || std::is_enum<From>::value) && std::is_floating_point<To>::value) || (std::is_integral<From>::value && std::is_integral<To>::value && (sizeof(From) > sizeof(To) diff --git a/src/corelib/mimetypes/qmimeprovider_p.h b/src/corelib/mimetypes/qmimeprovider_p.h index 0629df8a95..c4e712b318 100644 --- a/src/corelib/mimetypes/qmimeprovider_p.h +++ b/src/corelib/mimetypes/qmimeprovider_p.h @@ -140,7 +140,7 @@ public: enum : bool { InternalDatabaseAvailable = false }; QMimeXMLProvider(QMimeDatabasePrivate *db, InternalDatabaseEnum) : QMimeProviderBase(db, QString()) - { Q_UNREACHABLE() }; + { Q_UNREACHABLE(); }; #endif QMimeXMLProvider(QMimeDatabasePrivate *db, const QString &directory); ~QMimeXMLProvider(); diff --git a/src/corelib/serialization/qxmlstream.cpp b/src/corelib/serialization/qxmlstream.cpp index 7ff87885a5..d7fb0d0d41 100644 --- a/src/corelib/serialization/qxmlstream.cpp +++ b/src/corelib/serialization/qxmlstream.cpp @@ -2041,6 +2041,42 @@ QStringRef QXmlStreamReader::dtdSystemId() const return QStringRef(); } +/*! + \since 5.15 + + Returns the maximum amount of characters a single entity is + allowed to expand into. If a single entity expands past the + given limit, the document is not considered well formed. + + \sa setEntityExpansionLimit +*/ +int QXmlStreamReader::entityExpansionLimit() const +{ + Q_D(const QXmlStreamReader); + return d->entityExpansionLimit; +} + +/*! + \since 5.15 + + Sets the maximum amount of characters a single entity is + allowed to expand into to \a limit. If a single entity expands + past the given limit, the document is not considered well formed. + + The limit is there to prevent DoS attacks when loading unknown + XML documents where recursive entity expansion could otherwise + exhaust all available memory. + + The default value for this property is 4096 characters. + + \sa entityExpansionLimit +*/ +void QXmlStreamReader::setEntityExpansionLimit(int limit) +{ + Q_D(QXmlStreamReader); + d->entityExpansionLimit = limit; +} + /*! If the tokenType() is \l StartElement, this function returns the element's namespace declarations. Otherwise an empty vector is returned. diff --git a/src/corelib/serialization/qxmlstream.g b/src/corelib/serialization/qxmlstream.g index 12ecc9bdb2..b623de9505 100644 --- a/src/corelib/serialization/qxmlstream.g +++ b/src/corelib/serialization/qxmlstream.g @@ -285,9 +285,19 @@ public: QHash<QStringView, Entity> entityHash; QHash<QStringView, Entity> parameterEntityHash; QXmlStreamSimpleStack<Entity *>entityReferenceStack; + int entityExpansionLimit = 4096; + int entityLength = 0; inline bool referenceEntity(Entity &entity) { if (entity.isCurrentlyReferenced) { - raiseWellFormedError(QXmlStream::tr("Recursive entity detected.")); + raiseWellFormedError(QXmlStream::tr("Self-referencing entity detected.")); + return false; + } + // entityLength represents the amount of additional characters the + // entity expands into (can be negative for e.g. &). It's used to + // avoid DoS attacks through recursive entity expansions + entityLength += entity.value.size() - entity.name.size() - 2; + if (entityLength > entityExpansionLimit) { + raiseWellFormedError(QXmlStream::tr("Entity expands to more characters than the entity expansion limit.")); return false; } entity.isCurrentlyReferenced = true; @@ -838,6 +848,8 @@ entity_done ::= ENTITY_DONE; /. case $rule_number: entityReferenceStack.pop()->isCurrentlyReferenced = false; + if (entityReferenceStack.isEmpty()) + entityLength = 0; clearSym(); break; ./ diff --git a/src/corelib/serialization/qxmlstream.h b/src/corelib/serialization/qxmlstream.h index 7d0aa64570..c8647e0465 100644 --- a/src/corelib/serialization/qxmlstream.h +++ b/src/corelib/serialization/qxmlstream.h @@ -426,6 +426,8 @@ public: QStringRef dtdPublicId() const; QStringRef dtdSystemId() const; + int entityExpansionLimit() const; + void setEntityExpansionLimit(int limit); enum Error { NoError, diff --git a/src/corelib/serialization/qxmlstream_p.h b/src/corelib/serialization/qxmlstream_p.h index 9c94e6d434..103b123b10 100644 --- a/src/corelib/serialization/qxmlstream_p.h +++ b/src/corelib/serialization/qxmlstream_p.h @@ -774,9 +774,19 @@ public: QHash<QStringView, Entity> entityHash; QHash<QStringView, Entity> parameterEntityHash; QXmlStreamSimpleStack<Entity *>entityReferenceStack; + int entityExpansionLimit = 4096; + int entityLength = 0; inline bool referenceEntity(Entity &entity) { if (entity.isCurrentlyReferenced) { - raiseWellFormedError(QXmlStream::tr("Recursive entity detected.")); + raiseWellFormedError(QXmlStream::tr("Self-referencing entity detected.")); + return false; + } + // entityLength represents the amount of additional characters the + // entity expands into (can be negative for e.g. &). It's used to + // avoid DoS attacks through recursive entity expansions + entityLength += entity.value.size() - entity.name.size() - 2; + if (entityLength > entityExpansionLimit) { + raiseWellFormedError(QXmlStream::tr("Entity expands to more characters than the entity expansion limit.")); return false; } entity.isCurrentlyReferenced = true; @@ -1308,6 +1318,8 @@ bool QXmlStreamReaderPrivate::parse() case 10: entityReferenceStack.pop()->isCurrentlyReferenced = false; + if (entityReferenceStack.isEmpty()) + entityLength = 0; clearSym(); break; diff --git a/src/corelib/thread/qrunnable.cpp b/src/corelib/thread/qrunnable.cpp index 5b883a05da..32f3cd657e 100644 --- a/src/corelib/thread/qrunnable.cpp +++ b/src/corelib/thread/qrunnable.cpp @@ -115,29 +115,29 @@ QRunnable::~QRunnable() class FunctionRunnable : public QRunnable { - std::function<void()> m_functor; + std::function<void()> m_functionToRun; public: - FunctionRunnable(std::function<void()> functor) : m_functor(std::move(functor)) + FunctionRunnable(std::function<void()> functionToRun) : m_functionToRun(std::move(functionToRun)) { } void run() override { - m_functor(); + m_functionToRun(); } }; /*! \since 5.15 - Creates a QRunnable that calls \a fun in run(). + Creates a QRunnable that calls \a functionToRun in run(). Auto-deletion is enabled by default. \sa run(), autoDelete() */ -QRunnable *QRunnable::create(std::function<void()> fun) +QRunnable *QRunnable::create(std::function<void()> functionToRun) { - return new FunctionRunnable(std::move(fun)); + return new FunctionRunnable(std::move(functionToRun)); } QT_END_NAMESPACE diff --git a/src/corelib/thread/qrunnable.h b/src/corelib/thread/qrunnable.h index c13aa3fa8c..26b6b991ac 100644 --- a/src/corelib/thread/qrunnable.h +++ b/src/corelib/thread/qrunnable.h @@ -60,7 +60,7 @@ public: QRunnable() : ref(0) { } virtual ~QRunnable(); - static QRunnable *create(std::function<void()> fun); + static QRunnable *create(std::function<void()> functionToRun); bool autoDelete() const { return ref != -1; } void setAutoDelete(bool _autoDelete) { ref = _autoDelete ? 0 : -1; } diff --git a/src/corelib/thread/qthreadpool.cpp b/src/corelib/thread/qthreadpool.cpp index d1875a69a9..a9352c3894 100644 --- a/src/corelib/thread/qthreadpool.cpp +++ b/src/corelib/thread/qthreadpool.cpp @@ -515,16 +515,16 @@ void QThreadPool::start(QRunnable *runnable, int priority) \overload \since 5.15 - Reserves a thread and uses it to run \a fun, unless this thread will + Reserves a thread and uses it to run \a functionToRun, unless this thread will make the current thread count exceed maxThreadCount(). In that case, - \a fun is added to a run queue instead. The \a priority argument can + \a functionToRun is added to a run queue instead. The \a priority argument can be used to control the run queue's order of execution. */ -void QThreadPool::start(std::function<void()> fun, int priority) +void QThreadPool::start(std::function<void()> functionToRun, int priority) { - if (!fun) + if (!functionToRun) return; - start(QRunnable::create(std::move(fun)), priority); + start(QRunnable::create(std::move(functionToRun)), priority); } /*! @@ -561,17 +561,17 @@ bool QThreadPool::tryStart(QRunnable *runnable) /*! \overload \since 5.15 - Attempts to reserve a thread to run \a fun. + Attempts to reserve a thread to run \a functionToRun. If no threads are available at the time of calling, then this function - does nothing and returns \c false. Otherwise, \a fun is run immediately + does nothing and returns \c false. Otherwise, \a functionToRun is run immediately using one available thread and this function returns \c true. */ -bool QThreadPool::tryStart(std::function<void()> fun) +bool QThreadPool::tryStart(std::function<void()> functionToRun) { - if (!fun) + if (!functionToRun) return false; - return tryStart(QRunnable::create(std::move(fun))); + return tryStart(QRunnable::create(std::move(functionToRun))); } /*! \property QThreadPool::expiryTimeout diff --git a/src/corelib/thread/qthreadpool.h b/src/corelib/thread/qthreadpool.h index 2eede44eca..e3691ab010 100644 --- a/src/corelib/thread/qthreadpool.h +++ b/src/corelib/thread/qthreadpool.h @@ -72,8 +72,8 @@ public: void start(QRunnable *runnable, int priority = 0); bool tryStart(QRunnable *runnable); - void start(std::function<void()> fun, int priority = 0); - bool tryStart(std::function<void()> fun); + void start(std::function<void()> functionToRun, int priority = 0); + bool tryStart(std::function<void()> functionToRun); int expiryTimeout() const; void setExpiryTimeout(int expiryTimeout); diff --git a/src/corelib/time/qdatetimeparser.cpp b/src/corelib/time/qdatetimeparser.cpp index 790c20004a..2a19611493 100644 --- a/src/corelib/time/qdatetimeparser.cpp +++ b/src/corelib/time/qdatetimeparser.cpp @@ -1539,6 +1539,14 @@ QDateTimeParser::parse(QString input, int position, const QDateTime &defaultValu text = scan.input = input; // Set spec *after* all checking, so validity is a property of the string: scan.value = scan.value.toTimeSpec(spec); + + /* + However, even with a valid string we might have ended up with an invalid datetime: + the non-existent hour during dst changes, for instance. + */ + if (!scan.value.isValid() && scan.state == Acceptable) + scan.state = Intermediate; + return scan; } diff --git a/src/corelib/tools/qhash.h b/src/corelib/tools/qhash.h index 47fa0520d9..59883e3968 100644 --- a/src/corelib/tools/qhash.h +++ b/src/corelib/tools/qhash.h @@ -324,7 +324,7 @@ public: QHashData::Node *i; public: -#if QT_DEPRECATED_SINCE(5, 15) +#if QT_DEPRECATED_WARNINGS_SINCE < QT_VERSION_CHECK(5, 15, 0) typedef std::bidirectional_iterator_tag iterator_category; #else typedef std::forward_iterator_tag iterator_category; @@ -354,23 +354,23 @@ public: return r; } #if QT_DEPRECATED_SINCE(5, 15) - inline QT_DEPRECATED iterator &operator--() + inline QT_DEPRECATED_VERSION_5_15 iterator &operator--() { i = QHashData::previousNode(i); return *this; } - inline QT_DEPRECATED iterator operator--(int) + inline QT_DEPRECATED_VERSION_5_15 iterator operator--(int) { iterator r = *this; i = QHashData::previousNode(i); return r; } - inline QT_DEPRECATED iterator operator+(int j) const + inline QT_DEPRECATED_VERSION_5_15 iterator operator+(int j) const { iterator r = *this; if (j > 0) while (j--) ++r; else while (j++) --r; return r; } - inline QT_DEPRECATED iterator operator-(int j) const { return operator+(-j); } - inline QT_DEPRECATED iterator &operator+=(int j) { return *this = *this + j; } - inline QT_DEPRECATED iterator &operator-=(int j) { return *this = *this - j; } - friend inline QT_DEPRECATED iterator operator+(int j, iterator k) { return k + j; } + inline QT_DEPRECATED_VERSION_5_15 iterator operator-(int j) const { return operator+(-j); } + inline QT_DEPRECATED_VERSION_5_15 iterator &operator+=(int j) { return *this = *this + j; } + inline QT_DEPRECATED_VERSION_5_15 iterator &operator-=(int j) { return *this = *this - j; } + friend inline QT_DEPRECATED_VERSION_5_15 iterator operator+(int j, iterator k) { return k + j; } #endif inline bool operator==(const const_iterator &o) const { return i == o.i; } @@ -387,7 +387,7 @@ public: QHashData::Node *i; public: -#if QT_DEPRECATED_SINCE(5, 15) +#if QT_DEPRECATED_WARNINGS_SINCE < QT_VERSION_CHECK(5, 15, 0) typedef std::bidirectional_iterator_tag iterator_category; #else typedef std::forward_iterator_tag iterator_category; @@ -420,23 +420,23 @@ public: return r; } #if QT_DEPRECATED_SINCE(5, 15) - inline QT_DEPRECATED const_iterator &operator--() + inline QT_DEPRECATED_VERSION_5_15 const_iterator &operator--() { i = QHashData::previousNode(i); return *this; } - inline QT_DEPRECATED const_iterator operator--(int) + inline QT_DEPRECATED_VERSION_5_15 const_iterator operator--(int) { const_iterator r = *this; i = QHashData::previousNode(i); return r; } - inline QT_DEPRECATED const_iterator operator+(int j) const + inline QT_DEPRECATED_VERSION_5_15 const_iterator operator+(int j) const { const_iterator r = *this; if (j > 0) while (j--) ++r; else while (j++) --r; return r; } - inline QT_DEPRECATED const_iterator operator-(int j) const { return operator+(-j); } - inline QT_DEPRECATED const_iterator &operator+=(int j) { return *this = *this + j; } - inline QT_DEPRECATED const_iterator &operator-=(int j) { return *this = *this - j; } - friend inline QT_DEPRECATED const_iterator operator+(int j, const_iterator k) + inline QT_DEPRECATED_VERSION_5_15 const_iterator operator-(int j) const { return operator+(-j); } + inline QT_DEPRECATED_VERSION_5_15 const_iterator &operator+=(int j) { return *this = *this + j; } + inline QT_DEPRECATED_VERSION_5_15 const_iterator &operator-=(int j) { return *this = *this - j; } + friend inline QT_DEPRECATED_VERSION_5_15 const_iterator operator+(int j, const_iterator k) { return k + j; } @@ -466,12 +466,12 @@ public: inline key_iterator &operator++() { ++i; return *this; } inline key_iterator operator++(int) { return key_iterator(i++);} #if QT_DEPRECATED_SINCE(5, 15) - inline QT_DEPRECATED key_iterator &operator--() + inline QT_DEPRECATED_VERSION_5_15 key_iterator &operator--() { --i; return *this; } - inline QT_DEPRECATED key_iterator operator--(int) { return key_iterator(i--); } + inline QT_DEPRECATED_VERSION_5_15 key_iterator operator--(int) { return key_iterator(i--); } #endif const_iterator base() const { return i; } }; @@ -1302,18 +1302,18 @@ public: return false; } #if QT_DEPRECATED_SINCE(5, 15) - inline QT_DEPRECATED bool hasPrevious() const { return i != c.constBegin(); } - inline QT_DEPRECATED Item previous() + inline QT_DEPRECATED_VERSION_5_15 bool hasPrevious() const { return i != c.constBegin(); } + inline QT_DEPRECATED_VERSION_5_15 Item previous() { n = --i; return n; } - inline QT_DEPRECATED Item peekPrevious() const + inline QT_DEPRECATED_VERSION_5_15 Item peekPrevious() const { const_iterator p = i; return --p; } - inline bool QT_DEPRECATED findPrevious(const T &t) + inline bool QT_DEPRECATED_VERSION_5_15 findPrevious(const T &t) { while (i != c.constBegin()) if (*(n = --i) == t) @@ -1399,18 +1399,18 @@ public: return false; } #if QT_DEPRECATED_SINCE(5, 15) - inline QT_DEPRECATED bool hasPrevious() const { return const_iterator(i) != c->constBegin(); } - inline QT_DEPRECATED Item previous() + inline QT_DEPRECATED_VERSION_5_15 bool hasPrevious() const { return const_iterator(i) != c->constBegin(); } + inline QT_DEPRECATED_VERSION_5_15 Item previous() { n = --i; return n; } - inline QT_DEPRECATED Item peekPrevious() const + inline QT_DEPRECATED_VERSION_5_15 Item peekPrevious() const { iterator p = i; return --p; } - inline QT_DEPRECATED bool findPrevious(const T &t) + inline QT_DEPRECATED_VERSION_5_15 bool findPrevious(const T &t) { while (const_iterator(i) != c->constBegin()) if (*(n = --i) == t) diff --git a/src/gui/kernel/qscreen.cpp b/src/gui/kernel/qscreen.cpp index fd25becbca..d5a4b7c027 100644 --- a/src/gui/kernel/qscreen.cpp +++ b/src/gui/kernel/qscreen.cpp @@ -710,7 +710,7 @@ void QScreenPrivate::updatePrimaryOrientation() \since 5.15 */ -QScreen *QScreen::virtualSiblingAt(const QPoint &point) +QScreen *QScreen::virtualSiblingAt(QPoint point) { const auto &siblings = virtualSiblings(); for (QScreen *sibling : siblings) { diff --git a/src/gui/kernel/qscreen.h b/src/gui/kernel/qscreen.h index 88925ab731..09e1d4259a 100644 --- a/src/gui/kernel/qscreen.h +++ b/src/gui/kernel/qscreen.h @@ -125,7 +125,7 @@ public: QRect availableGeometry() const; QList<QScreen *> virtualSiblings() const; - QScreen *virtualSiblingAt(const QPoint &point); + QScreen *virtualSiblingAt(QPoint point); QSize virtualSize() const; QRect virtualGeometry() const; diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp index 38814937f6..ec90247feb 100644 --- a/src/gui/text/qfontengine.cpp +++ b/src/gui/text/qfontengine.cpp @@ -663,6 +663,9 @@ glyph_metrics_t QFontEngine::tightBoundingBox(const QGlyphLayout &glyphs) QFixed ymax = 0; QFixed xmax = 0; for (int i = 0; i < glyphs.numGlyphs; i++) { + // If shaping has found this should be ignored, ignore it. + if (!glyphs.advances[i] || glyphs.attributes[i].dontPrint) + continue; glyph_metrics_t bb = boundingBox(glyphs.glyphs[i]); QFixed x = overall.xoff + glyphs.offsets[i].x + bb.x; QFixed y = overall.yoff + glyphs.offsets[i].y + bb.y; diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index ac39a8cf69..81ed8fa97a 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -712,9 +712,8 @@ struct QBidiAlgorithm { analysis[pos].bidiDirection = QChar::DirEN; ++it; } - } else { - lastETPosition.clear(); } + lastETPosition.clear(); } last = current; lastPos = pos; diff --git a/src/network/access/qftp.cpp b/src/network/access/qftp.cpp index cda800ce35..2589c64b1c 100644 --- a/src/network/access/qftp.cpp +++ b/src/network/access/qftp.cpp @@ -324,7 +324,7 @@ void QFtpDTP::connectToHost(const QString & host, quint16 port) socket->setObjectName(QLatin1String("QFtpDTP Passive state socket")); connect(socket, SIGNAL(connected()), SLOT(socketConnected())); connect(socket, SIGNAL(readyRead()), SLOT(socketReadyRead())); - connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), SLOT(socketError(QAbstractSocket::SocketError))); + connect(socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), SLOT(socketError(QAbstractSocket::SocketError))); connect(socket, SIGNAL(disconnected()), SLOT(socketConnectionClosed())); connect(socket, SIGNAL(bytesWritten(qint64)), SLOT(socketBytesWritten(qint64))); @@ -769,7 +769,7 @@ void QFtpDTP::setupSocket() socket->setObjectName(QLatin1String("QFtpDTP Active state socket")); connect(socket, SIGNAL(connected()), SLOT(socketConnected())); connect(socket, SIGNAL(readyRead()), SLOT(socketReadyRead())); - connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), SLOT(socketError(QAbstractSocket::SocketError))); + connect(socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), SLOT(socketError(QAbstractSocket::SocketError))); connect(socket, SIGNAL(disconnected()), SLOT(socketConnectionClosed())); connect(socket, SIGNAL(bytesWritten(qint64)), SLOT(socketBytesWritten(qint64))); @@ -807,7 +807,7 @@ QFtpPI::QFtpPI(QObject *parent) : SLOT(connectionClosed())); connect(&commandSocket, SIGNAL(readyRead()), SLOT(readyRead())); - connect(&commandSocket, SIGNAL(error(QAbstractSocket::SocketError)), + connect(&commandSocket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), SLOT(error(QAbstractSocket::SocketError))); connect(&dtp, SIGNAL(connectState(int)), diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp index 65c2ae3054..c1bb19650f 100644 --- a/src/network/access/qhttpnetworkconnectionchannel.cpp +++ b/src/network/access/qhttpnetworkconnectionchannel.cpp @@ -156,7 +156,7 @@ void QHttpNetworkConnectionChannel::init() QObject::connect(socket, SIGNAL(disconnected()), this, SLOT(_q_disconnected()), Qt::DirectConnection); - QObject::connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), + QObject::connect(socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), this, SLOT(_q_error(QAbstractSocket::SocketError)), Qt::DirectConnection); diff --git a/src/network/access/qhttpprotocolhandler.cpp b/src/network/access/qhttpprotocolhandler.cpp index 981effb54f..d39589fb96 100644 --- a/src/network/access/qhttpprotocolhandler.cpp +++ b/src/network/access/qhttpprotocolhandler.cpp @@ -233,7 +233,7 @@ void QHttpProtocolHandler::_q_readyRead() char c; qint64 ret = m_socket->peek(&c, 1); if (ret < 0) { - m_channel->_q_error(m_socket->socketError()); + m_channel->_q_error(m_socket->error()); // We still need to handle the reply so it emits its signals etc. if (m_reply) _q_receiveReply(); diff --git a/src/network/access/qnetworkaccessdebugpipebackend.cpp b/src/network/access/qnetworkaccessdebugpipebackend.cpp index 0406f2fac1..0029df41fe 100644 --- a/src/network/access/qnetworkaccessdebugpipebackend.cpp +++ b/src/network/access/qnetworkaccessdebugpipebackend.cpp @@ -98,7 +98,7 @@ void QNetworkAccessDebugPipeBackend::open() // socket ready read -> we can push from socket to downstream connect(&socket, SIGNAL(readyRead()), SLOT(socketReadyRead())); - connect(&socket, SIGNAL(error(QAbstractSocket::SocketError)), SLOT(socketError())); + connect(&socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), SLOT(socketError())); connect(&socket, SIGNAL(disconnected()), SLOT(socketDisconnected())); connect(&socket, SIGNAL(connected()), SLOT(socketConnected())); // socket bytes written -> we can push more from upstream to socket @@ -242,9 +242,9 @@ void QNetworkAccessDebugPipeBackend::closeDownstreamChannel() void QNetworkAccessDebugPipeBackend::socketError() { - qWarning("QNetworkAccessDebugPipeBackend::socketError() %d",socket.socketError()); + qWarning("QNetworkAccessDebugPipeBackend::socketError() %d",socket.error()); QNetworkReply::NetworkError code; - switch (socket.socketError()) { + switch (socket.error()) { case QAbstractSocket::RemoteHostClosedError: return; // socketDisconnected will be called diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp index 85f065223a..21d46011d7 100644 --- a/src/network/access/qnetworkaccessmanager.cpp +++ b/src/network/access/qnetworkaccessmanager.cpp @@ -1726,7 +1726,7 @@ int QNetworkAccessManager::transferTimeout() const Transfers are aborted if no bytes are transferred before the timeout expires. Zero means no timer is set. If no argument is provided, the timeout is - QNetworkRequest::TransferTimeoutPreset. If this function + QNetworkRequest::DefaultTransferTimeoutConstant. If this function is not called, the timeout is disabled and has the value zero. The request-specific non-zero timeouts set for the requests that are executed override this value. This means diff --git a/src/network/access/qnetworkreply.cpp b/src/network/access/qnetworkreply.cpp index c22dce8f1c..fb30bfd4f1 100644 --- a/src/network/access/qnetworkreply.cpp +++ b/src/network/access/qnetworkreply.cpp @@ -554,32 +554,13 @@ QNetworkAccessManager::Operation QNetworkReply::operation() const return d_func()->operation; } -#if QT_DEPRECATED_SINCE(5, 15) /*! - \deprecated - - Use networkError() instead. - - Returns the error that was found during the processing of this - request. If no error was found, returns NoError. - - \sa setError(), networkError() -*/ -QNetworkReply::NetworkError QNetworkReply::error() const -{ - return networkError(); -} -#endif // QT_DEPRECATED_SINCE(5, 15) - -/*! - \since 5.15 - Returns the error that was found during the processing of this request. If no error was found, returns NoError. \sa setError() */ -QNetworkReply::NetworkError QNetworkReply::networkError() const +QNetworkReply::NetworkError QNetworkReply::error() const { return d_func()->errorCode; } @@ -877,7 +858,7 @@ void QNetworkReply::setRequest(const QNetworkRequest &request) Calling setError() does not emit the error(QNetworkReply::NetworkError) signal. - \sa error(), errorString(), networkError() + \sa error(), errorString() */ void QNetworkReply::setError(NetworkError errorCode, const QString &errorString) { diff --git a/src/network/access/qnetworkreply.h b/src/network/access/qnetworkreply.h index 139009a56a..4a402daa91 100644 --- a/src/network/access/qnetworkreply.h +++ b/src/network/access/qnetworkreply.h @@ -124,12 +124,7 @@ public: QNetworkAccessManager *manager() const; QNetworkAccessManager::Operation operation() const; QNetworkRequest request() const; - -#if QT_DEPRECATED_SINCE(5, 15) - QT_DEPRECATED_X("Use networkError()") NetworkError error() const; -#endif // QT_DEPRECATED_SINCE(5, 15) - NetworkError networkError() const; - + NetworkError error() const; bool isFinished() const; bool isRunning() const; QUrl url() const; diff --git a/src/network/access/qnetworkrequest.cpp b/src/network/access/qnetworkrequest.cpp index 4765fdc30e..33526bb7d5 100644 --- a/src/network/access/qnetworkrequest.cpp +++ b/src/network/access/qnetworkrequest.cpp @@ -931,7 +931,7 @@ int QNetworkRequest::transferTimeout() const Transfers are aborted if no bytes are transferred before the timeout expires. Zero means no timer is set. If no argument is provided, the timeout is - QNetworkRequest::TransferTimeoutPreset. If this function + QNetworkRequest::DefaultTransferTimeoutConstant. If this function is not called, the timeout is disabled and has the value zero. diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp index 5f1ff2fcb8..fb792e428f 100644 --- a/src/network/socket/qabstractsocket.cpp +++ b/src/network/socket/qabstractsocket.cpp @@ -84,7 +84,7 @@ HostLookupState. If the host is found, QAbstractSocket enters ConnectingState and emits the hostFound() signal. When the connection has been established, it enters ConnectedState and - emits connected(). If an error occurs at any stage, error() is + emits connected(). If an error occurs at any stage, errorOccurred() is emitted. Whenever the state changes, stateChanged() is emitted. For convenience, isValid() returns \c true if the socket is ready for reading and writing, but note that the socket's state must be @@ -113,7 +113,7 @@ QAbstractSocket::UnconnectedState, and emits disconnected(). If you want to abort a connection immediately, discarding all pending data, call abort() instead. If the remote host closes the connection, - QAbstractSocket will emit error(QAbstractSocket::RemoteHostClosedError), + QAbstractSocket will emit errorOccurred(QAbstractSocket::RemoteHostClosedError), during which the socket state will still be ConnectedState, and then the disconnected() signal will be emitted. @@ -203,6 +203,14 @@ /*! \fn void QAbstractSocket::error(QAbstractSocket::SocketError socketError) + \obsolete + + Use errorOccurred() instead. +*/ + +/*! + \fn void QAbstractSocket::errorOccurred(QAbstractSocket::SocketError socketError) + \since 5.15 This signal is emitted after an error occurred. The \a socketError parameter describes the type of error that occurred. @@ -215,7 +223,7 @@ connections, you will have to register it with Q_DECLARE_METATYPE() and qRegisterMetaType(). - \sa socketError(), errorString(), {Creating Custom Qt Types} + \sa error(), errorString(), {Creating Custom Qt Types} */ /*! @@ -329,7 +337,8 @@ is non-blocking). \value UnknownSocketError An unidentified error occurred. - \sa QAbstractSocket::socketError() + \sa QAbstractSocket::error() + \sa QAbstractSocket::errorOccurred() */ /*! @@ -988,7 +997,7 @@ void QAbstractSocketPrivate::startConnectingByName(const QString &host) } state = QAbstractSocket::UnconnectedState; - emit q->error(socketError); + emit q->errorOccurred(socketError); emit q->stateChanged(state); } @@ -1047,7 +1056,7 @@ void QAbstractSocketPrivate::_q_startConnecting(const QHostInfo &hostInfo) state = QAbstractSocket::UnconnectedState; setError(QAbstractSocket::HostNotFoundError, QAbstractSocket::tr("Host not found")); emit q->stateChanged(state); - emit q->error(QAbstractSocket::HostNotFoundError); + emit q->errorOccurred(QAbstractSocket::HostNotFoundError); return; } @@ -1070,8 +1079,8 @@ void QAbstractSocketPrivate::_q_startConnecting(const QHostInfo &hostInfo) _q_testConnection(), this function takes the first address of the pending addresses list and tries to connect to it. If the connection succeeds, QAbstractSocket will emit - connected(). Otherwise, error(ConnectionRefusedError) or - error(SocketTimeoutError) is emitted. + connected(). Otherwise, errorOccurred(ConnectionRefusedError) or + errorOccurred(SocketTimeoutError) is emitted. */ void QAbstractSocketPrivate::_q_connectToNextAddress() { @@ -1101,7 +1110,7 @@ void QAbstractSocketPrivate::_q_connectToNextAddress() // q->setErrorString(QAbstractSocket::tr("Connection refused")); } emit q->stateChanged(state); - emit q->error(socketError); + emit q->errorOccurred(socketError); return; } @@ -1223,7 +1232,7 @@ void QAbstractSocketPrivate::_q_abortConnectionAttempt() setError(QAbstractSocket::SocketTimeoutError, QAbstractSocket::tr("Connection timed out")); emit q->stateChanged(state); - emit q->error(socketError); + emit q->errorOccurred(socketError); } else { _q_connectToNextAddress(); } @@ -1430,14 +1439,14 @@ void QAbstractSocketPrivate::setError(QAbstractSocket::SocketError errorCode, \internal Sets the socket error state to \c errorCode and \a errorString, - and emits the QAbstractSocket::error() signal. + and emits the QAbstractSocket::errorOccurred() signal. */ void QAbstractSocketPrivate::setErrorAndEmit(QAbstractSocket::SocketError errorCode, const QString &errorString) { Q_Q(QAbstractSocket); setError(errorCode, errorString); - emit q->error(errorCode); + emit q->errorOccurred(errorCode); } /*! \internal @@ -1456,6 +1465,9 @@ QAbstractSocket::QAbstractSocket(SocketType socketType, : socketType == SctpSocket ? "Sctp" : "Unknown", &dd, parent); #endif d->socketType = socketType; + + // Support the deprecated error() signal: + connect(this, &QAbstractSocket::errorOccurred, this, QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error)); } /*! @@ -1654,7 +1666,7 @@ bool QAbstractSocket::isValid() const established, QAbstractSocket enters ConnectedState and emits connected(). - At any point, the socket can emit error() to signal that an error + At any point, the socket can emit errorOccurred() to signal that an error occurred. \a hostName may be an IP address in string form (e.g., @@ -2092,7 +2104,7 @@ QVariant QAbstractSocket::socketOption(QAbstractSocket::SocketOption option) Waits until the socket is connected, up to \a msecs milliseconds. If the connection has been established, this function returns \c true; otherwise it returns \c false. In the case - where it returns \c false, you can call socketError() to determine + where it returns \c false, you can call error() to determine the cause of the error. The following example waits up to one second for a connection @@ -2864,7 +2876,7 @@ void QAbstractSocket::setReadBufferSize(qint64 size) /*! Returns the state of the socket. - \sa socketError() + \sa error() */ QAbstractSocket::SocketState QAbstractSocket::state() const { @@ -2891,35 +2903,16 @@ QAbstractSocket::SocketType QAbstractSocket::socketType() const return d_func()->socketType; } -#if QT_DEPRECATED_SINCE(5, 15) -/*! - \deprecated - - Use socketError() instead. - - Returns the type of error that last occurred. - - \sa state(), errorString(), socketError() -*/ -QAbstractSocket::SocketError QAbstractSocket::error() const -{ - return socketError(); -} -#endif // QT_DEPRECATED_SINCE(5, 15) - /*! - \since 5.15 - Returns the type of error that last occurred. \sa state(), errorString() */ -QAbstractSocket::SocketError QAbstractSocket::socketError() const +QAbstractSocket::SocketError QAbstractSocket::error() const { return d_func()->socketError; } - /*! Sets the type of error that last occurred to \a socketError. diff --git a/src/network/socket/qabstractsocket.h b/src/network/socket/qabstractsocket.h index cbc79ea684..1482dcaab2 100644 --- a/src/network/socket/qabstractsocket.h +++ b/src/network/socket/qabstractsocket.h @@ -180,12 +180,7 @@ public: SocketType socketType() const; SocketState state() const; - -#if QT_DEPRECATED_SINCE(5, 15) - QT_DEPRECATED_X("Use socketError()") SocketError error() const; -#endif // QT_DEPRECATED_SINCE(5, 15) - - SocketError socketError() const; + SocketError error() const; // from QIODevice void close() override; @@ -211,7 +206,11 @@ Q_SIGNALS: void connected(); void disconnected(); void stateChanged(QAbstractSocket::SocketState); +#if QT_DEPRECATED_SINCE(5,15) + QT_DEPRECATED_X("Use QAbstractSocket::errorOccurred(QAbstractSocket::SocketError) instead") void error(QAbstractSocket::SocketError); +#endif + void errorOccurred(QAbstractSocket::SocketError); #ifndef QT_NO_NETWORKPROXY void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator); #endif diff --git a/src/network/socket/qhttpsocketengine.cpp b/src/network/socket/qhttpsocketengine.cpp index b80bdec992..9b0460b184 100644 --- a/src/network/socket/qhttpsocketengine.cpp +++ b/src/network/socket/qhttpsocketengine.cpp @@ -93,7 +93,7 @@ bool QHttpSocketEngine::initialize(QAbstractSocket::SocketType type, QAbstractSo connect(d->socket, SIGNAL(bytesWritten(qint64)), this, SLOT(slotSocketBytesWritten()), Qt::DirectConnection); - connect(d->socket, SIGNAL(error(QAbstractSocket::SocketError)), + connect(d->socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), this, SLOT(slotSocketError(QAbstractSocket::SocketError)), Qt::DirectConnection); connect(d->socket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), @@ -370,8 +370,8 @@ bool QHttpSocketEngine::waitForRead(int msecs, bool *timedOut) if (!d->socket->waitForReadyRead(qt_subtract_from_timeout(msecs, stopWatch.elapsed()))) { if (d->socket->state() == QAbstractSocket::UnconnectedState) return true; - setError(d->socket->socketError(), d->socket->errorString()); - if (timedOut && d->socket->socketError() == QAbstractSocket::SocketTimeoutError) + setError(d->socket->error(), d->socket->errorString()); + if (timedOut && d->socket->error() == QAbstractSocket::SocketTimeoutError) *timedOut = true; return false; } @@ -385,8 +385,8 @@ bool QHttpSocketEngine::waitForRead(int msecs, bool *timedOut) // Report any error that may occur. if (d->state != Connected) { - setError(d->socket->socketError(), d->socket->errorString()); - if (timedOut && d->socket->socketError() == QAbstractSocket::SocketTimeoutError) + setError(d->socket->error(), d->socket->errorString()); + if (timedOut && d->socket->error() == QAbstractSocket::SocketTimeoutError) *timedOut = true; return false; } @@ -401,7 +401,7 @@ bool QHttpSocketEngine::waitForWrite(int msecs, bool *timedOut) if (d->state == Connected) { if (d->socket->bytesToWrite()) { if (!d->socket->waitForBytesWritten(msecs)) { - if (d->socket->socketError() == QAbstractSocket::SocketTimeoutError && timedOut) + if (d->socket->error() == QAbstractSocket::SocketTimeoutError && timedOut) *timedOut = true; return false; } @@ -421,7 +421,8 @@ bool QHttpSocketEngine::waitForWrite(int msecs, bool *timedOut) // Report any error that may occur. if (d->state != Connected) { - if (timedOut && d->socket->socketError() == QAbstractSocket::SocketTimeoutError) +// setError(d->socket->error(), d->socket->errorString()); + if (timedOut && d->socket->error() == QAbstractSocket::SocketTimeoutError) *timedOut = true; } diff --git a/src/network/socket/qlocalsocket.h b/src/network/socket/qlocalsocket.h index ae78c86b3c..9cd62abca6 100644 --- a/src/network/socket/qlocalsocket.h +++ b/src/network/socket/qlocalsocket.h @@ -132,14 +132,14 @@ private: Q_DISABLE_COPY(QLocalSocket) #if defined(QT_LOCALSOCKET_TCP) Q_PRIVATE_SLOT(d_func(), void _q_stateChanged(QAbstractSocket::SocketState)) - Q_PRIVATE_SLOT(d_func(), void _q_error(QAbstractSocket::SocketError)) + Q_PRIVATE_SLOT(d_func(), void _q_errorOccurred(QAbstractSocket::SocketError)) #elif defined(Q_OS_WIN) Q_PRIVATE_SLOT(d_func(), void _q_canWrite()) Q_PRIVATE_SLOT(d_func(), void _q_pipeClosed()) Q_PRIVATE_SLOT(d_func(), void _q_winError(ulong, const QString &)) #else Q_PRIVATE_SLOT(d_func(), void _q_stateChanged(QAbstractSocket::SocketState)) - Q_PRIVATE_SLOT(d_func(), void _q_error(QAbstractSocket::SocketError)) + Q_PRIVATE_SLOT(d_func(), void _q_errorOccurred(QAbstractSocket::SocketError)) Q_PRIVATE_SLOT(d_func(), void _q_connectToSocket()) Q_PRIVATE_SLOT(d_func(), void _q_abortConnectionAttempt()) #endif diff --git a/src/network/socket/qlocalsocket_p.h b/src/network/socket/qlocalsocket_p.h index e3bcd92326..0e05e4c5d7 100644 --- a/src/network/socket/qlocalsocket_p.h +++ b/src/network/socket/qlocalsocket_p.h @@ -127,7 +127,7 @@ public: QString generateErrorString(QLocalSocket::LocalSocketError, const QString &function) const; void setErrorAndEmit(QLocalSocket::LocalSocketError, const QString &function); void _q_stateChanged(QAbstractSocket::SocketState newState); - void _q_error(QAbstractSocket::SocketError newError); + void _q_errorOccurred(QAbstractSocket::SocketError newError); #elif defined(Q_OS_WIN) ~QLocalSocketPrivate(); void destroyPipeHandles(); @@ -144,7 +144,7 @@ public: QString generateErrorString(QLocalSocket::LocalSocketError, const QString &function) const; void setErrorAndEmit(QLocalSocket::LocalSocketError, const QString &function); void _q_stateChanged(QAbstractSocket::SocketState newState); - void _q_error(QAbstractSocket::SocketError newError); + void _q_errorOccurred(QAbstractSocket::SocketError newError); void _q_connectToSocket(); void _q_abortConnectionAttempt(); void cancelDelayedConnect(); diff --git a/src/network/socket/qlocalsocket_tcp.cpp b/src/network/socket/qlocalsocket_tcp.cpp index e13bcfc0cb..1c63d16187 100644 --- a/src/network/socket/qlocalsocket_tcp.cpp +++ b/src/network/socket/qlocalsocket_tcp.cpp @@ -77,8 +77,8 @@ void QLocalSocketPrivate::setSocket(QLocalUnixSocket* socket) q->connect(tcpSocket, SIGNAL(disconnected()), q, SIGNAL(disconnected())); q->connect(tcpSocket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), q, SLOT(_q_stateChanged(QAbstractSocket::SocketState))); - q->connect(tcpSocket, SIGNAL(error(QAbstractSocket::SocketError)), - q, SLOT(_q_error(QAbstractSocket::SocketError))); + q->connect(tcpSocket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), + q, SLOT(_q_errorOccurred(QAbstractSocket::SocketError))); q->connect(tcpSocket, SIGNAL(readChannelFinished()), q, SIGNAL(readChannelFinished())); tcpSocket->setParent(q); } @@ -88,7 +88,7 @@ qint64 QLocalSocketPrivate::skip(qint64 maxSize) return tcpSocket->skip(maxSize); } -void QLocalSocketPrivate::_q_error(QAbstractSocket::SocketError socketError) +void QLocalSocketPrivate::_q_errorOccurred(QAbstractSocket::SocketError socketError) { Q_Q(QLocalSocket); QString function = QLatin1String("QLocalSocket"); diff --git a/src/network/socket/qlocalsocket_unix.cpp b/src/network/socket/qlocalsocket_unix.cpp index e860b880d5..d9b39a7752 100644 --- a/src/network/socket/qlocalsocket_unix.cpp +++ b/src/network/socket/qlocalsocket_unix.cpp @@ -81,8 +81,8 @@ void QLocalSocketPrivate::init() q->connect(&unixSocket, SIGNAL(disconnected()), q, SIGNAL(disconnected())); q->connect(&unixSocket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), q, SLOT(_q_stateChanged(QAbstractSocket::SocketState))); - q->connect(&unixSocket, SIGNAL(error(QAbstractSocket::SocketError)), - q, SLOT(_q_error(QAbstractSocket::SocketError))); + q->connect(&unixSocket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), + q, SLOT(_q_errorOccurred(QAbstractSocket::SocketError))); q->connect(&unixSocket, SIGNAL(readChannelFinished()), q, SIGNAL(readChannelFinished())); unixSocket.setParent(q); } @@ -92,7 +92,7 @@ qint64 QLocalSocketPrivate::skip(qint64 maxSize) return unixSocket.skip(maxSize); } -void QLocalSocketPrivate::_q_error(QAbstractSocket::SocketError socketError) +void QLocalSocketPrivate::_q_errorOccurred(QAbstractSocket::SocketError socketError) { Q_Q(QLocalSocket); QString function = QLatin1String("QLocalSocket"); @@ -464,7 +464,7 @@ void QLocalSocket::disconnectFromServer() QLocalSocket::LocalSocketError QLocalSocket::error() const { Q_D(const QLocalSocket); - switch (d->unixSocket.socketError()) { + switch (d->unixSocket.error()) { case QAbstractSocket::ConnectionRefusedError: return QLocalSocket::ConnectionRefusedError; case QAbstractSocket::RemoteHostClosedError: diff --git a/src/network/socket/qsocks5socketengine.cpp b/src/network/socket/qsocks5socketengine.cpp index eb5d181134..6a9979a675 100644 --- a/src/network/socket/qsocks5socketengine.cpp +++ b/src/network/socket/qsocks5socketengine.cpp @@ -559,8 +559,8 @@ void QSocks5SocketEnginePrivate::initialize(Socks5Mode socks5Mode) Qt::DirectConnection); QObject::connect(data->controlSocket, SIGNAL(bytesWritten(qint64)), q, SLOT(_q_controlSocketBytesWritten()), Qt::DirectConnection); - QObject::connect(data->controlSocket, SIGNAL(error(QAbstractSocket::SocketError)), - q, SLOT(_q_controlSocketError(QAbstractSocket::SocketError)), + QObject::connect(data->controlSocket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), + q, SLOT(_q_controlSocketErrorOccurred(QAbstractSocket::SocketError)), Qt::DirectConnection); QObject::connect(data->controlSocket, SIGNAL(disconnected()), q, SLOT(_q_controlSocketDisconnected()), Qt::DirectConnection); @@ -594,7 +594,7 @@ void QSocks5SocketEnginePrivate::setErrorState(Socks5State state, const QString case ConnectError: case ControlSocketError: { - QAbstractSocket::SocketError controlSocketError = data->controlSocket->socketError(); + QAbstractSocket::SocketError controlSocketError = data->controlSocket->error(); if (socks5State != Connected) { switch (controlSocketError) { case QAbstractSocket::ConnectionRefusedError: @@ -918,7 +918,7 @@ void QSocks5SocketEnginePrivate::_q_emitPendingReadNotification() return; // check if there needs to be a new zero read notification if (data && data->controlSocket->state() == QAbstractSocket::UnconnectedState - && data->controlSocket->socketError() == QAbstractSocket::RemoteHostClosedError) { + && data->controlSocket->error() == QAbstractSocket::RemoteHostClosedError) { connectData->readBuffer.clear(); emitReadNotification(); } @@ -1056,7 +1056,7 @@ bool QSocks5SocketEngine::initialize(qintptr socketDescriptor, QAbstractSocket:: Qt::DirectConnection); QObject::connect(d->data->controlSocket, SIGNAL(bytesWritten(qint64)), this, SLOT(_q_controlSocketBytesWritten()), Qt::DirectConnection); - QObject::connect(d->data->controlSocket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(_q_controlSocketError(QAbstractSocket::SocketError)), + QObject::connect(d->data->controlSocket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), this, SLOT(_q_controlSocketErrorOccurred(QAbstractSocket::SocketError)), Qt::DirectConnection); QObject::connect(d->data->controlSocket, SIGNAL(disconnected()), this, SLOT(_q_controlSocketDisconnected()), Qt::DirectConnection); @@ -1231,7 +1231,7 @@ void QSocks5SocketEnginePrivate::_q_controlSocketBytesWritten() } } -void QSocks5SocketEnginePrivate::_q_controlSocketError(QAbstractSocket::SocketError error) +void QSocks5SocketEnginePrivate::_q_controlSocketErrorOccurred(QAbstractSocket::SocketError error) { QSOCKS5_D_DEBUG << "controlSocketError" << error << data->controlSocket->errorString(); @@ -1256,7 +1256,7 @@ void QSocks5SocketEnginePrivate::_q_controlSocketError(QAbstractSocket::SocketEr data->controlSocket->close(); emitConnectionNotification(); } else { - q_func()->setError(data->controlSocket->socketError(), data->controlSocket->errorString()); + q_func()->setError(data->controlSocket->error(), data->controlSocket->errorString()); emitReadNotification(); emitWriteNotification(); } @@ -1348,7 +1348,7 @@ bool QSocks5SocketEngine::bind(const QHostAddress &addr, quint16 port) if (d->mode == QSocks5SocketEnginePrivate::UdpAssociateMode) { if (!d->udpData->udpSocket->bind(address, port)) { QSOCKS5_Q_DEBUG << "local udp bind failed"; - setError(d->udpData->udpSocket->socketError(), d->udpData->udpSocket->errorString()); + setError(d->udpData->udpSocket->error(), d->udpData->udpSocket->errorString()); return false; } d->localAddress = d->udpData->udpSocket->localAddress(); @@ -1656,8 +1656,8 @@ qint64 QSocks5SocketEngine::writeDatagram(const char *data, qint64 len, const QI } if (d->udpData->udpSocket->writeDatagram(sealedBuf, d->udpData->associateAddress, d->udpData->associatePort) != sealedBuf.size()) { //### try frgamenting - if (d->udpData->udpSocket->socketError() == QAbstractSocket::DatagramTooLargeError) - setError(d->udpData->udpSocket->socketError(), d->udpData->udpSocket->errorString()); + if (d->udpData->udpSocket->error() == QAbstractSocket::DatagramTooLargeError) + setError(d->udpData->udpSocket->error(), d->udpData->udpSocket->errorString()); //### else maybe more serious error return -1; } @@ -1727,7 +1727,7 @@ bool QSocks5SocketEnginePrivate::waitForConnected(int msecs, bool *timedOut) return true; setErrorState(QSocks5SocketEnginePrivate::ControlSocketError); - if (timedOut && data->controlSocket->socketError() == QAbstractSocket::SocketTimeoutError) + if (timedOut && data->controlSocket->error() == QAbstractSocket::SocketTimeoutError) *timedOut = true; return false; } @@ -1765,8 +1765,8 @@ bool QSocks5SocketEngine::waitForRead(int msecs, bool *timedOut) if (d->data->controlSocket->state() == QAbstractSocket::UnconnectedState) return true; - setError(d->data->controlSocket->socketError(), d->data->controlSocket->errorString()); - if (timedOut && d->data->controlSocket->socketError() == QAbstractSocket::SocketTimeoutError) + setError(d->data->controlSocket->error(), d->data->controlSocket->errorString()); + if (timedOut && d->data->controlSocket->error() == QAbstractSocket::SocketTimeoutError) *timedOut = true; return false; } @@ -1775,8 +1775,8 @@ bool QSocks5SocketEngine::waitForRead(int msecs, bool *timedOut) } else { while (!d->readNotificationActivated) { if (!d->udpData->udpSocket->waitForReadyRead(qt_subtract_from_timeout(msecs, stopWatch.elapsed()))) { - setError(d->udpData->udpSocket->socketError(), d->udpData->udpSocket->errorString()); - if (timedOut && d->udpData->udpSocket->socketError() == QAbstractSocket::SocketTimeoutError) + setError(d->udpData->udpSocket->error(), d->udpData->udpSocket->errorString()); + if (timedOut && d->udpData->udpSocket->error() == QAbstractSocket::SocketTimeoutError) *timedOut = true; return false; } diff --git a/src/network/socket/qsocks5socketengine_p.h b/src/network/socket/qsocks5socketengine_p.h index c256987e2d..77b461b944 100644 --- a/src/network/socket/qsocks5socketengine_p.h +++ b/src/network/socket/qsocks5socketengine_p.h @@ -130,7 +130,7 @@ private: Q_DISABLE_COPY_MOVE(QSocks5SocketEngine) Q_PRIVATE_SLOT(d_func(), void _q_controlSocketConnected()) Q_PRIVATE_SLOT(d_func(), void _q_controlSocketReadNotification()) - Q_PRIVATE_SLOT(d_func(), void _q_controlSocketError(QAbstractSocket::SocketError)) + Q_PRIVATE_SLOT(d_func(), void _q_controlSocketErrorOccurred(QAbstractSocket::SocketError)) #ifndef QT_NO_UDPSOCKET Q_PRIVATE_SLOT(d_func(), void _q_udpSocketReadNotification()) #endif @@ -246,7 +246,7 @@ public: void _q_controlSocketConnected(); void _q_controlSocketReadNotification(); - void _q_controlSocketError(QAbstractSocket::SocketError); + void _q_controlSocketErrorOccurred(QAbstractSocket::SocketError); #ifndef QT_NO_UDPSOCKET void _q_udpSocketReadNotification(); #endif diff --git a/src/network/ssl/qdtls_openssl.cpp b/src/network/ssl/qdtls_openssl.cpp index 36b4d572fd..25a6c5f49c 100644 --- a/src/network/ssl/qdtls_openssl.cpp +++ b/src/network/ssl/qdtls_openssl.cpp @@ -1125,7 +1125,7 @@ qint64 QDtlsPrivateOpenSSL::writeDatagramEncrypted(QUdpSocket *socket, // some errors can be just ignored (it's UDP, not TCP after all). // Unlike QSslSocket we do not abort though. QString description(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); - if (socket->socketError() != QAbstractSocket::UnknownSocketError && description.isEmpty()) { + if (socket->error() != QAbstractSocket::UnknownSocketError && description.isEmpty()) { setDtlsError(QDtlsError::UnderlyingSocketError, socket->errorString()); } else { setDtlsError(QDtlsError::TlsFatalError, diff --git a/src/network/ssl/qsslsocket.cpp b/src/network/ssl/qsslsocket.cpp index 64c6629645..da9d4a38fe 100644 --- a/src/network/ssl/qsslsocket.cpp +++ b/src/network/ssl/qsslsocket.cpp @@ -676,7 +676,7 @@ bool QSslSocket::setSocketDescriptor(qintptr socketDescriptor, SocketState state d->createPlainSocket(openMode); bool retVal = d->plainSocket->setSocketDescriptor(socketDescriptor, state, openMode); d->cachedSocketDescriptor = d->plainSocket->socketDescriptor(); - d->setError(d->plainSocket->socketError(), d->plainSocket->errorString()); + d->setError(d->plainSocket->error(), d->plainSocket->errorString()); setSocketState(state); setOpenMode(openMode); setLocalPort(d->plainSocket->localPort()); @@ -1784,7 +1784,7 @@ bool QSslSocket::waitForConnected(int msecs) bool retVal = d->plainSocket->waitForConnected(msecs); if (!retVal) { setSocketState(d->plainSocket->state()); - d->setError(d->plainSocket->socketError(), d->plainSocket->errorString()); + d->setError(d->plainSocket->error(), d->plainSocket->errorString()); } return retVal; } @@ -1953,7 +1953,7 @@ bool QSslSocket::waitForDisconnected(int msecs) bool retVal = d->plainSocket->waitForDisconnected(qt_subtract_from_timeout(msecs, stopWatch.elapsed())); if (!retVal) { setSocketState(d->plainSocket->state()); - d->setError(d->plainSocket->socketError(), d->plainSocket->errorString()); + d->setError(d->plainSocket->error(), d->plainSocket->errorString()); } return retVal; } @@ -2681,7 +2681,7 @@ void QSslSocketPrivate::createPlainSocket(QIODevice::OpenMode openMode) q->connect(plainSocket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), q, SLOT(_q_stateChangedSlot(QAbstractSocket::SocketState)), Qt::DirectConnection); - q->connect(plainSocket, SIGNAL(error(QAbstractSocket::SocketError)), + q->connect(plainSocket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), q, SLOT(_q_errorSlot(QAbstractSocket::SocketError)), Qt::DirectConnection); q->connect(plainSocket, SIGNAL(readyRead()), @@ -2857,7 +2857,7 @@ void QSslSocketPrivate::_q_errorSlot(QAbstractSocket::SocketError error) readBufferMaxSize = tmpReadBufferMaxSize; } - setErrorAndEmit(plainSocket->socketError(), plainSocket->errorString()); + setErrorAndEmit(plainSocket->error(), plainSocket->errorString()); } /*! diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp index f033d3b298..57f7f459ce 100644 --- a/src/network/ssl/qsslsocket_openssl.cpp +++ b/src/network/ssl/qsslsocket_openssl.cpp @@ -1125,7 +1125,7 @@ void QSslSocketBackendPrivate::transmit() if (actualWritten < 0) { //plain socket write fails if it was in the pending close state. const ScopedBool bg(inSetAndEmitError, true); - setErrorAndEmit(plainSocket->socketError(), plainSocket->errorString()); + setErrorAndEmit(plainSocket->error(), plainSocket->errorString()); return; } transmitting = true; diff --git a/src/network/ssl/qsslsocket_schannel.cpp b/src/network/ssl/qsslsocket_schannel.cpp index ba15a0a65e..2db5c48ff2 100644 --- a/src/network/ssl/qsslsocket_schannel.cpp +++ b/src/network/ssl/qsslsocket_schannel.cpp @@ -576,7 +576,7 @@ bool QSslSocketBackendPrivate::sendToken(void *token, unsigned long tokenLength, if (written != qint64(tokenLength)) { // Failed to write/buffer everything or an error occurred if (emitError) - setErrorAndEmit(plainSocket->socketError(), plainSocket->errorString()); + setErrorAndEmit(plainSocket->error(), plainSocket->errorString()); return false; } return true; @@ -1286,7 +1286,7 @@ void QSslSocketBackendPrivate::transmit() if (bytesWritten >= 0) { totalBytesWritten += bytesWritten; } else { - setErrorAndEmit(plainSocket->socketError(), plainSocket->errorString()); + setErrorAndEmit(plainSocket->error(), plainSocket->errorString()); return; } } diff --git a/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp b/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp index a2619b2d25..d7ccd9db92 100644 --- a/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp +++ b/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp @@ -1693,6 +1693,9 @@ glyph_metrics_t QFontEngineFT::boundingBox(const QGlyphLayout &glyphs) QFixed ymax = 0; QFixed xmax = 0; for (int i = 0; i < glyphs.numGlyphs; i++) { + // If shaping has found this should be ignored, ignore it. + if (!glyphs.advances[i] || glyphs.attributes[i].dontPrint) + continue; Glyph *g = cacheEnabled ? defaultGlyphSet.getGlyph(glyphs.glyphs[i]) : nullptr; if (!g) { if (!face) diff --git a/src/plugins/platforms/wasm/qwasmbackingstore.cpp b/src/plugins/platforms/wasm/qwasmbackingstore.cpp index a7423e9c47..cef15543d4 100644 --- a/src/plugins/platforms/wasm/qwasmbackingstore.cpp +++ b/src/plugins/platforms/wasm/qwasmbackingstore.cpp @@ -36,7 +36,7 @@ #include <QtGui/qpainter.h> #include <private/qguiapplication_p.h> #include <qpa/qplatformscreen.h> - +#include <QtGui/qoffscreensurface.h> #include <QtGui/qbackingstore.h> QT_BEGIN_NAMESPACE @@ -53,12 +53,29 @@ QWasmBackingStore::QWasmBackingStore(QWasmCompositor *compositor, QWindow *windo QWasmBackingStore::~QWasmBackingStore() { + auto window = this->window(); + QWasmIntegration::get()->removeBackingStore(window); + destroy(); + QWasmWindow *wasmWindow = static_cast<QWasmWindow *>(window->handle()); + if (wasmWindow) + wasmWindow->setBackingStore(nullptr); } void QWasmBackingStore::destroy() { - if (m_texture->isCreated()) - m_texture->destroy(); + if (m_texture->isCreated()) { + auto context = m_compositor->context(); + auto currentContext = QOpenGLContext::currentContext(); + if (!currentContext || !QOpenGLContext::areSharing(context, currentContext)) { + QOffscreenSurface offScreenSurface(m_compositor->screen()->screen()); + offScreenSurface.setFormat(context->format()); + offScreenSurface.create(); + context->makeCurrent(&offScreenSurface); + m_texture->destroy(); + } else { + m_texture->destroy(); + } + } } QPaintDevice *QWasmBackingStore::paintDevice() @@ -81,9 +98,9 @@ void QWasmBackingStore::updateTexture() if (m_dirty.isNull()) return; - if (m_recreateTexture && m_texture->isCreated()) { + if (m_recreateTexture) { m_recreateTexture = false; - m_texture->destroy(); + destroy(); } if (!m_texture->isCreated()) { diff --git a/src/plugins/platforms/wasm/qwasmcompositor.cpp b/src/plugins/platforms/wasm/qwasmcompositor.cpp index 74890ead82..a4cfaa85a8 100644 --- a/src/plugins/platforms/wasm/qwasmcompositor.cpp +++ b/src/plugins/platforms/wasm/qwasmcompositor.cpp @@ -58,7 +58,6 @@ QWasmCompositedWindow::QWasmCompositedWindow() QWasmCompositor::QWasmCompositor(QWasmScreen *screen) :QObject(screen) - , m_frameBuffer(nullptr) , m_blitter(new QOpenGLTextureBlitter) , m_needComposit(false) , m_inFlush(false) @@ -70,7 +69,6 @@ QWasmCompositor::QWasmCompositor(QWasmScreen *screen) QWasmCompositor::~QWasmCompositor() { - delete m_frameBuffer; destroy(); } @@ -747,3 +745,8 @@ QWasmScreen *QWasmCompositor::screen() { return static_cast<QWasmScreen *>(parent()); } + +QOpenGLContext *QWasmCompositor::context() +{ + return m_context.data(); +} diff --git a/src/plugins/platforms/wasm/qwasmcompositor.h b/src/plugins/platforms/wasm/qwasmcompositor.h index 250d244c9f..a07c747a98 100644 --- a/src/plugins/platforms/wasm/qwasmcompositor.h +++ b/src/plugins/platforms/wasm/qwasmcompositor.h @@ -124,11 +124,13 @@ public: static QWasmTitleBarOptions makeTitleBarOptions(const QWasmWindow *window); static QRect titlebarRect(QWasmTitleBarOptions tb, QWasmCompositor::SubControls subcontrol); + QWasmScreen *screen(); + QOpenGLContext *context(); + private slots: void frame(); private: - QWasmScreen *screen(); void notifyTopWindowChanged(QWasmWindow *window); void drawWindow(QOpenGLTextureBlitter *blitter, QWasmScreen *screen, QWasmWindow *window); void drawWindowContent(QOpenGLTextureBlitter *blitter, QWasmScreen *screen, QWasmWindow *window); @@ -137,7 +139,6 @@ private: void drawWindowDecorations(QOpenGLTextureBlitter *blitter, QWasmScreen *screen, QWasmWindow *window); void drwPanelButton(); - QImage *m_frameBuffer; QScopedPointer<QOpenGLContext> m_context; QScopedPointer<QOpenGLTextureBlitter> m_blitter; diff --git a/src/plugins/platforms/wasm/qwasmintegration.cpp b/src/plugins/platforms/wasm/qwasmintegration.cpp index d1901d840e..37cc6185c5 100644 --- a/src/plugins/platforms/wasm/qwasmintegration.cpp +++ b/src/plugins/platforms/wasm/qwasmintegration.cpp @@ -189,6 +189,11 @@ QPlatformBackingStore *QWasmIntegration::createPlatformBackingStore(QWindow *win #endif } +void QWasmIntegration::removeBackingStore(QWindow* window) +{ + m_backingStores.remove(window); +} + #ifndef QT_NO_OPENGL QPlatformOpenGLContext *QWasmIntegration::createPlatformOpenGLContext(QOpenGLContext *context) const { diff --git a/src/plugins/platforms/wasm/qwasmintegration.h b/src/plugins/platforms/wasm/qwasmintegration.h index 08b68cb5f7..cb8639086a 100644 --- a/src/plugins/platforms/wasm/qwasmintegration.h +++ b/src/plugins/platforms/wasm/qwasmintegration.h @@ -89,6 +89,7 @@ public: void resizeScreen(const emscripten::val &canvas); void resizeAllScreens(); void updateDpi(); + void removeBackingStore(QWindow* window); private: mutable QWasmFontDatabase *m_fontDb; diff --git a/src/sql/doc/src/sql-driver.qdoc b/src/sql/doc/src/sql-driver.qdoc index 95fa8355c7..28e17d2301 100644 --- a/src/sql/doc/src/sql-driver.qdoc +++ b/src/sql/doc/src/sql-driver.qdoc @@ -181,7 +181,7 @@ Run the installer, select custom installation and install the MySQL C Connector which matches your Qt installation (x86 or x64). - After installation make sure that the needed files are there: + After installation check that the needed files are there: \list \li \c {<MySQL dir>/lib/libmysql.lib} \li \c {<MySQL dir>/lib/libmysql.dll} @@ -194,16 +194,20 @@ \li \c {<MariaDB dir>/include/mysql.h} \endlist - Build the plugin as follows (here it is assumed that the MySQL - C Connector is installed in + \note As of MySQL 8.0.19, the C Connector is no longer offered as a standalone + installable component. Instead, you can get \c{mysql.h} and \c{libmysql.*} by + installing the full MySQL Server (x64 only) or the + \l{https://downloads.mariadb.org/connector-c/}{MariaDB C Connector}. + + Build the plugin as follows (here it is assumed that \c{<MySQL dir>} is \c{C:/Program Files/MySQL/MySQL Connector C 6.1}): \snippet code/doc_src_sql-driver.qdoc 5 If you are not using a Microsoft compiler, replace \c nmake with \c - mingw32-make in the line above. + mingw32-make above. - When you distribute your application, remember to include libmysql.dll / libmariadb.dll + When you distribute your application, remember to include \e libmysql.dll / \e libmariadb.dll in your installation package. It must be placed in the same folder as the application executable. \e libmysql.dll additionally needs the MSVC runtime libraries which can be installed with diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp index 437ce4a114..3fb5578153 100644 --- a/src/widgets/dialogs/qfiledialog.cpp +++ b/src/widgets/dialogs/qfiledialog.cpp @@ -1302,8 +1302,12 @@ QStringList QFileDialog::selectedFiles() const QStringList files; const QList<QUrl> userSelectedFiles = d->userSelectedFiles(); files.reserve(userSelectedFiles.size()); - for (const QUrl &file : userSelectedFiles) - files.append(file.toLocalFile()); + for (const QUrl &file : userSelectedFiles) { + if (file.isLocalFile() || file.isEmpty()) + files.append(file.toLocalFile()); + else + files.append(file.toString()); + } if (files.isEmpty() && d->usingWidgets()) { const FileMode fm = fileMode(); if (fm != ExistingFile && fm != ExistingFiles) @@ -3151,7 +3155,7 @@ void QFileDialogPrivate::createWidgets() // filetype qFileDialogUi->fileTypeCombo->setDuplicatesEnabled(false); - qFileDialogUi->fileTypeCombo->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLength); + qFileDialogUi->fileTypeCombo->setSizeAdjustPolicy(QComboBox::AdjustToContentsOnFirstShow); qFileDialogUi->fileTypeCombo->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); QObject::connect(qFileDialogUi->fileTypeCombo, SIGNAL(activated(int)), q, SLOT(_q_useNameFilter(int))); diff --git a/src/widgets/dialogs/qwizard.cpp b/src/widgets/dialogs/qwizard.cpp index 31e32bb931..b0f4312f40 100644 --- a/src/widgets/dialogs/qwizard.cpp +++ b/src/widgets/dialogs/qwizard.cpp @@ -2384,13 +2384,23 @@ bool QWizard::hasVisitedPage(int theid) const \sa hasVisitedPage() */ -QList<int> QWizard::visitedPages() const +QList<int> QWizard::visitedIds() const { Q_D(const QWizard); return d->history; } /*! + \obsolete Use visitedIds() instead +*/ +#if QT_DEPRECATED_SINCE(5, 15) +QList<int> QWizard::visitedPages() const +{ + return visitedIds(); +} +#endif + +/*! Returns the list of page IDs. \since 4.5 */ diff --git a/src/widgets/dialogs/qwizard.h b/src/widgets/dialogs/qwizard.h index ef71efa0cb..a40635c4a5 100644 --- a/src/widgets/dialogs/qwizard.h +++ b/src/widgets/dialogs/qwizard.h @@ -128,7 +128,10 @@ public: void removePage(int id); QWizardPage *page(int id) const; bool hasVisitedPage(int id) const; - QList<int> visitedPages() const; // ### Qt 6: visitedIds()? +#if QT_DEPRECATED_SINCE(5, 15) + QList<int> visitedPages() const; +#endif + QList<int> visitedIds() const; QList<int> pageIds() const; void setStartId(int id); int startId() const; diff --git a/src/widgets/kernel/qshortcut.h b/src/widgets/kernel/qshortcut.h index 6c92f87c46..a519a8696a 100644 --- a/src/widgets/kernel/qshortcut.h +++ b/src/widgets/kernel/qshortcut.h @@ -90,7 +90,8 @@ public: template<class Obj1, typename Func1> QShortcut(const QKeySequence &key, QWidget *parent, const Obj1 *object1, Func1 slot1, - Qt::ShortcutContext context = Qt::WindowShortcut) + Qt::ShortcutContext context = Qt::WindowShortcut, + typename std::enable_if<QtPrivate::IsPointerToTypeDerivedFromQObject<Obj1*>::Value>::type* = 0) : QShortcut(key, parent, static_cast<const char*>(nullptr), static_cast<const char*>(nullptr), context) { connect(this, &QShortcut::activated, object1, std::move(slot1)); @@ -98,7 +99,8 @@ public: template<class Obj1, typename Func1, typename Func2> QShortcut(const QKeySequence &key, QWidget *parent, const Obj1 *object1, Func1 slot1, Func2 slot2, - Qt::ShortcutContext context = Qt::WindowShortcut) + Qt::ShortcutContext context = Qt::WindowShortcut, + typename std::enable_if<QtPrivate::IsPointerToTypeDerivedFromQObject<Obj1*>::Value>::type* = 0) : QShortcut(key, parent, static_cast<const char*>(nullptr), static_cast<const char*>(nullptr), context) { connect(this, &QShortcut::activated, object1, std::move(slot1)); @@ -108,7 +110,9 @@ public: QShortcut(const QKeySequence &key, QWidget *parent, const Obj1 *object1, Func1 slot1, const Obj2 *object2, Func2 slot2, - Qt::ShortcutContext context = Qt::WindowShortcut) + Qt::ShortcutContext context = Qt::WindowShortcut, + typename std::enable_if<QtPrivate::IsPointerToTypeDerivedFromQObject<Obj1*>::Value>::type* = 0, + typename std::enable_if<QtPrivate::IsPointerToTypeDerivedFromQObject<Obj2*>::Value>::type* = 0) : QShortcut(key, parent, static_cast<const char*>(nullptr), static_cast<const char*>(nullptr), context) { connect(this, &QShortcut::activated, object1, std::move(slot1)); diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index b4699ae040..03d6ea31e9 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -395,7 +395,7 @@ void QWidget::setAutoFillBackground(bool enabled) Every widget's constructor accepts one or two standard arguments: \list 1 - \li \c{QWidget *parent = \nullptr} is the parent of the new widget. + \li \c{QWidget *parent = nullptr} is the parent of the new widget. If it is \nullptr (the default), the new widget will be a window. If not, it will be a child of \e parent, and be constrained by \e parent's geometry (unless you specify Qt::Window as window flag). diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp index 9c1bd1e79a..47993b8f3b 100644 --- a/src/widgets/widgets/qcombobox.cpp +++ b/src/widgets/widgets/qcombobox.cpp @@ -894,7 +894,7 @@ QStyleOptionComboBox QComboBoxPrivateContainer::comboStyleOption() const \value AdjustToContents The combobox will always adjust to the contents \value AdjustToContentsOnFirstShow The combobox will adjust to its contents the first time it is shown. - \value AdjustToMinimumContentsLength Use AdjustToContents or AdjustToContentsOnFirstShow instead. + \omitvalue AdjustToMinimumContentsLength \value AdjustToMinimumContentsLengthWithIcon The combobox will adjust to \l minimumContentsLength plus space for an icon. For performance reasons use this policy on large models. */ diff --git a/src/widgets/widgets/qcombobox.h b/src/widgets/widgets/qcombobox.h index 444c834e88..99816954fa 100644 --- a/src/widgets/widgets/qcombobox.h +++ b/src/widgets/widgets/qcombobox.h @@ -137,8 +137,11 @@ public: enum SizeAdjustPolicy { AdjustToContents, AdjustToContentsOnFirstShow, - AdjustToMinimumContentsLength, // ### Qt 6: remove - AdjustToMinimumContentsLengthWithIcon +#if QT_DEPRECATED_SINCE(5, 15) + AdjustToMinimumContentsLength Q_DECL_ENUMERATOR_DEPRECATED_X( + "Use AdjustToContents or AdjustToContentsOnFirstShow"), // ### Qt 6: remove +#endif + AdjustToMinimumContentsLengthWithIcon = AdjustToContentsOnFirstShow + 2 }; Q_ENUM(SizeAdjustPolicy) diff --git a/src/widgets/widgets/qdatetimeedit.cpp b/src/widgets/widgets/qdatetimeedit.cpp index 48588b1e8e..105318ba20 100644 --- a/src/widgets/widgets/qdatetimeedit.cpp +++ b/src/widgets/widgets/qdatetimeedit.cpp @@ -683,7 +683,8 @@ void QDateTimeEdit::setTimeRange(QTime min, QTime max) \brief The currently displayed fields of the date time edit. Returns a bit set of the displayed sections for this format. - \a setDisplayFormat(), displayFormat() + + \sa setDisplayFormat(), displayFormat() */ QDateTimeEdit::Sections QDateTimeEdit::displayedSections() const @@ -696,7 +697,8 @@ QDateTimeEdit::Sections QDateTimeEdit::displayedSections() const \property QDateTimeEdit::currentSection \brief The current section of the spinbox. - \a setCurrentSection() + + \sa setCurrentSection() */ QDateTimeEdit::Section QDateTimeEdit::currentSection() const @@ -776,8 +778,7 @@ int QDateTimeEdit::sectionCount() const the cursorPosition is 5, currentSectionIndex returns 1. If the cursorPosition is 3, currentSectionIndex is 0, and so on. - \a setCurrentSection() - \sa currentSection() + \sa setCurrentSection(), currentSection() */ int QDateTimeEdit::currentSectionIndex() const @@ -1448,7 +1449,16 @@ void QDateTimeEdit::fixup(QString &input) const QValidator::State state; int copy = d->edit->cursorPosition(); - d->validateAndInterpret(input, copy, state, true); + QDateTime value = d->validateAndInterpret(input, copy, state, true); + /* + String was valid, but the datetime still is not; use the time that + has the same distance from epoch. + CorrectToPreviousValue correction is handled by QAbstractSpinBox. + */ + if (!value.isValid() && d->correctionMode == QAbstractSpinBox::CorrectToNearestValue) { + value = QDateTime::fromMSecsSinceEpoch(value.toMSecsSinceEpoch(), value.timeSpec()); + input = textFromDateTime(value); + } } @@ -2085,6 +2095,17 @@ QDateTime QDateTimeEditPrivate::stepBy(int sectionIndex, int steps, bool test) c const int oldDay = v.date().day(calendar); setDigit(v, sectionIndex, val); + /* + Stepping into a daylight saving time that doesn't exist, + so use the time that has the same distance from epoch. + */ + if (!v.isValid()) { + auto msecsSinceEpoch = v.toMSecsSinceEpoch(); + // decreasing from e.g 3am to 2am would get us back to 3am, but we want 1am + if (steps < 0 && sn.type & HourSectionMask) + msecsSinceEpoch -= 3600 * 1000; + v = QDateTime::fromMSecsSinceEpoch(msecsSinceEpoch, v.timeSpec()); + } // if this sets year or month it will make // sure that days are lowered if needed. diff --git a/src/widgets/widgets/qdockwidget.h b/src/widgets/widgets/qdockwidget.h index b53a991dae..36dff4d420 100644 --- a/src/widgets/widgets/qdockwidget.h +++ b/src/widgets/widgets/qdockwidget.h @@ -78,7 +78,10 @@ public: DockWidgetVerticalTitleBar = 0x08, DockWidgetFeatureMask = 0x0f, - AllDockWidgetFeatures = DockWidgetClosable|DockWidgetMovable|DockWidgetFloatable, // ### Qt 6: remove +#if QT_DEPRECATED_SINCE(5, 15) + AllDockWidgetFeatures Q_DECL_ENUMERATOR_DEPRECATED = + DockWidgetClosable|DockWidgetMovable|DockWidgetFloatable, // ### Qt 6: remove +#endif NoDockWidgetFeatures = 0x00, Reserved = 0xff diff --git a/src/widgets/widgets/qlcdnumber.cpp b/src/widgets/widgets/qlcdnumber.cpp index 3ddada4514..4d299d8739 100644 --- a/src/widgets/widgets/qlcdnumber.cpp +++ b/src/widgets/widgets/qlcdnumber.cpp @@ -713,7 +713,7 @@ void QLCDNumber::paintEvent(QPaintEvent *) void QLCDNumberPrivate::internalSetString(const QString& s) { Q_Q(QLCDNumber); - QString buffer; + QString buffer(ndigits, QChar()); int i; int len = s.length(); QBitArray newPoints(ndigits); diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp index 9faf161cb1..0ba3611cfd 100644 --- a/src/widgets/widgets/qlineedit.cpp +++ b/src/widgets/widgets/qlineedit.cpp @@ -1202,8 +1202,8 @@ QMargins QLineEdit::textMargins() const The input mask is an input template string. It can contain the following elements: \table - \row \li Mask Characters \li Defines the class of input characters that are - considered valid in this position + \row \li Mask Characters \li Defines the \l {QChar::} {Category} of input characters + that are considered valid in this position \row \li Meta Characters \li Various special meanings \row \li Separators \li All other characters are regarded as immutable separators \endtable @@ -1212,17 +1212,21 @@ QMargins QLineEdit::textMargins() const \table \header \li Mask Character \li Meaning - \row \li \c A \li ASCII alphabetic character required. A-Z, a-z. - \row \li \c a \li ASCII alphabetic character permitted but not required. - \row \li \c N \li ASCII alphanumeric character required. A-Z, a-z, 0-9. - \row \li \c n \li ASCII alphanumeric character permitted but not required. + \row \li \c A \li character of the Letter category required, such as A-Z, a-z. + \row \li \c a \li character of the Letter category permitted but not required. + \row \li \c N \li character of the Letter or Number category required, such as + A-Z, a-z, 0-9. + \row \li \c n \li character of the Letter or Number category permitted but not required. \row \li \c X \li Any non-blank character required. \row \li \c x \li Any non-blank character permitted but not required. - \row \li \c 9 \li ASCII digit required. 0-9. - \row \li \c 0 \li ASCII digit permitted but not required. - \row \li \c D \li ASCII digit required. 1-9. - \row \li \c d \li ASCII digit permitted but not required (1-9). - \row \li \c # \li ASCII digit or plus/minus sign permitted but not required. + \row \li \c 9 \li character of the Number category required, e.g 0-9. + \row \li \c 0 \li character of the Number category permitted but not required. + \row \li \c D \li character of the Number category and larger than zero required, + such as 1-9 + \row \li \c d \li character of the Number category and larger than zero permitted but not + required, such as 1-9. + \row \li \c # \li character of the Number category, or plus/minus sign permitted but not + required. \row \li \c H \li Hexadecimal character required. A-F, a-f, 0-9. \row \li \c h \li Hexadecimal character permitted but not required. \row \li \c B \li Binary character required. 0-1. @@ -1264,7 +1268,7 @@ QMargins QLineEdit::textMargins() const To get range control (e.g., for an IP address) use masks together with \l{setValidator()}{validators}. - \sa maxLength + \sa maxLength, QChar::isLetter(), QChar::isNumber(), QChar::digitValue() */ QString QLineEdit::inputMask() const { diff --git a/src/widgets/widgets/qstatusbar.h b/src/widgets/widgets/qstatusbar.h index 2492e8487f..976e45f9ed 100644 --- a/src/widgets/widgets/qstatusbar.h +++ b/src/widgets/widgets/qstatusbar.h @@ -83,7 +83,6 @@ protected: void paintEvent(QPaintEvent *) override; void resizeEvent(QResizeEvent *) override; - // ### Qt 6: consider making reformat() and hideOrShow() private void reformat(); void hideOrShow(); bool event(QEvent *) override; diff --git a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp index c969e72c18..427ce1a424 100644 --- a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp +++ b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp @@ -2335,14 +2335,15 @@ void tst_QSettings::testRegistry32And64Bit() void tst_QSettings::trailingWhitespace() { + const QString path = settingsPath("trailingWhitespace"); { - QSettings s("tst_QSettings_trailingWhitespace"); + QSettings s(path, QSettings::IniFormat); s.setValue("trailingSpace", "x "); s.setValue("trailingTab", "x\t"); s.setValue("trailingNewline", "x\n"); } { - QSettings s("tst_QSettings_trailingWhitespace"); + QSettings s(path, QSettings::IniFormat); QCOMPARE(s.value("trailingSpace").toString(), QLatin1String("x ")); QCOMPARE(s.value("trailingTab").toString(), QLatin1String("x\t")); QCOMPARE(s.value("trailingNewline").toString(), QLatin1String("x\n")); diff --git a/tests/auto/corelib/kernel/qdeadlinetimer/tst_qdeadlinetimer.cpp b/tests/auto/corelib/kernel/qdeadlinetimer/tst_qdeadlinetimer.cpp index 4e105d7dc7..35c5e7cb75 100644 --- a/tests/auto/corelib/kernel/qdeadlinetimer/tst_qdeadlinetimer.cpp +++ b/tests/auto/corelib/kernel/qdeadlinetimer/tst_qdeadlinetimer.cpp @@ -580,11 +580,26 @@ void tst_QDeadlineTimer::stdchrono() auto now = QDeadlineTimer::current(timerType); QTest::qSleep(minResolution); + auto sampling_start = steady_clock::now(); + auto steady_deadline = now.deadline<steady_clock>(); + auto system_deadline = now.deadline<system_clock>(); auto steady_after = steady_clock::now(); auto system_after = system_clock::now(); + auto sampling_end = steady_clock::now(); + + auto sampling_diff = duration_cast<milliseconds>(sampling_end - sampling_start).count(); + if (sampling_diff > minResolution/2) { + qWarning() << "Sampling clock took" << sampling_diff << "ms"; + QSKIP("Sampling clock took too long, aborting test", Abort); + } + auto total_diff = duration_cast<milliseconds>(steady_after - steady_before).count(); + if (total_diff >= 3*minResolution) { + qWarning() << "Measurement took" << total_diff << "ms"; + QSKIP("Measurement took too long, aborting test", Abort); + } { - auto diff = duration_cast<milliseconds>(steady_after - now.deadline<steady_clock>()); + auto diff = duration_cast<milliseconds>(steady_after - steady_deadline); QVERIFY2(diff.count() > minResolution/2, QByteArray::number(qint64(diff.count()))); QVERIFY2(diff.count() < 3*minResolution/2, QByteArray::number(qint64(diff.count()))); QDeadlineTimer dt_after(steady_after, timerType); @@ -592,7 +607,7 @@ void tst_QDeadlineTimer::stdchrono() ("now = " + QLocale().toString(now.deadlineNSecs()) + "; after = " + QLocale().toString(dt_after.deadlineNSecs())).toLatin1()); - diff = duration_cast<milliseconds>(now.deadline<steady_clock>() - steady_before); + diff = duration_cast<milliseconds>(steady_deadline - steady_before); QVERIFY2(diff.count() > minResolution/2, QByteArray::number(qint64(diff.count()))); QVERIFY2(diff.count() < 3*minResolution/2, QByteArray::number(qint64(diff.count()))); QDeadlineTimer dt_before(steady_before, timerType); @@ -601,7 +616,7 @@ void tst_QDeadlineTimer::stdchrono() "; before = " + QLocale().toString(dt_before.deadlineNSecs())).toLatin1()); } { - auto diff = duration_cast<milliseconds>(system_after - now.deadline<system_clock>()); + auto diff = duration_cast<milliseconds>(system_after - system_deadline); QVERIFY2(diff.count() > minResolution/2, QByteArray::number(qint64(diff.count()))); QVERIFY2(diff.count() < 3*minResolution/2, QByteArray::number(qint64(diff.count()))); QDeadlineTimer dt_after(system_after, timerType); @@ -609,7 +624,7 @@ void tst_QDeadlineTimer::stdchrono() ("now = " + QLocale().toString(now.deadlineNSecs()) + "; after = " + QLocale().toString(dt_after.deadlineNSecs())).toLatin1()); - diff = duration_cast<milliseconds>(now.deadline<system_clock>() - system_before); + diff = duration_cast<milliseconds>(system_deadline - system_before); QVERIFY2(diff.count() > minResolution/2, QByteArray::number(qint64(diff.count()))); QVERIFY2(diff.count() < 3*minResolution/2, QByteArray::number(qint64(diff.count()))); QDeadlineTimer dt_before(system_before, timerType); diff --git a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp index b1d3ea19d6..05599f9585 100644 --- a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp +++ b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp @@ -7416,6 +7416,12 @@ void tst_QObject::checkArgumentsForNarrowing() FITS(bool, const QObject *&); FITS(int (*)(bool), void (QObject::*)()); + { + // wg21.link/P1957 + NARROWS(char*, bool); + NARROWS(void (QObject::*)(), bool); + } + #undef IS_UNSCOPED_ENUM_SIGNED #undef NARROWS_IF diff --git a/tests/auto/corelib/serialization/qxmlstream/tst_qxmlstream.cpp b/tests/auto/corelib/serialization/qxmlstream/tst_qxmlstream.cpp index 12279133a2..28922574b8 100644 --- a/tests/auto/corelib/serialization/qxmlstream/tst_qxmlstream.cpp +++ b/tests/auto/corelib/serialization/qxmlstream/tst_qxmlstream.cpp @@ -397,8 +397,6 @@ public: return true; } - QXmlStreamReader reader(&inputFile); - /* See testcases.dtd which reads: 'Nonvalidating parsers * must also accept "invalid" testcases, but validating ones must reject them.' */ if(type == QLatin1String("invalid") || type == QLatin1String("valid")) @@ -583,6 +581,8 @@ private slots: void roundTrip() const; void roundTrip_data() const; + void entityExpansionLimit() const; + private: static QByteArray readFile(const QString &filename); @@ -1755,6 +1755,46 @@ void tst_QXmlStream::roundTrip_data() const "</root>\n"; } +void tst_QXmlStream::entityExpansionLimit() const +{ + QString xml = QStringLiteral("<?xml version=\"1.0\"?>" + "<!DOCTYPE foo [" + "<!ENTITY a \"0123456789\" >" + "<!ENTITY b \"&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;\" >" + "<!ENTITY c \"&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;\" >" + "<!ENTITY d \"&c;&c;&c;&c;&c;&c;&c;&c;&c;&c;\" >" + "]>" + "<foo>&d;&d;&d;</foo>"); + { + QXmlStreamReader reader(xml); + QCOMPARE(reader.entityExpansionLimit(), 4096); + do { + reader.readNext(); + } while (!reader.atEnd()); + QCOMPARE(reader.error(), QXmlStreamReader::NotWellFormedError); + } + + // &d; expands to 10k characters, minus the 3 removed (&d;) means it should fail + // with a limit of 9996 chars and pass with 9997 + { + QXmlStreamReader reader(xml); + reader.setEntityExpansionLimit(9996); + do { + reader.readNext(); + } while (!reader.atEnd()); + + QCOMPARE(reader.error(), QXmlStreamReader::NotWellFormedError); + } + { + QXmlStreamReader reader(xml); + reader.setEntityExpansionLimit(9997); + do { + reader.readNext(); + } while (!reader.atEnd()); + QCOMPARE(reader.error(), QXmlStreamReader::NoError); + } +} + void tst_QXmlStream::roundTrip() const { QFETCH(QString, in); diff --git a/tests/auto/gui/image/qimagereader/tst_qimagereader.cpp b/tests/auto/gui/image/qimagereader/tst_qimagereader.cpp index 771a4d0a32..6001829854 100644 --- a/tests/auto/gui/image/qimagereader/tst_qimagereader.cpp +++ b/tests/auto/gui/image/qimagereader/tst_qimagereader.cpp @@ -1081,7 +1081,7 @@ private slots: void acceptNewConnection() { serverSocket = server.nextPendingConnection(); - connect(serverSocket, SIGNAL(error(QAbstractSocket::SocketError)), + connect(serverSocket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), this, SLOT(remoteHostClosed())); } diff --git a/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp b/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp index a0e8525268..6fe3e20083 100644 --- a/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp +++ b/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp @@ -59,6 +59,7 @@ private slots: void mnemonicTextWidth(); void leadingBelowLine(); void elidedMetrics(); + void zeroWidthMetrics(); }; void tst_QFontMetrics::same() @@ -358,5 +359,28 @@ void tst_QFontMetrics::elidedMetrics() QFontDatabase::removeApplicationFont(id); } +void tst_QFontMetrics::zeroWidthMetrics() +{ + QString zwnj(QChar(0x200c)); + QString zwsp(QChar(0x200b)); + + QFont font; + QFontMetricsF fm(font); + QCOMPARE(fm.horizontalAdvance(zwnj), 0); + QCOMPARE(fm.horizontalAdvance(zwsp), 0); + QCOMPARE(fm.boundingRect(zwnj).width(), 0); + QCOMPARE(fm.boundingRect(zwsp).width(), 0); + + QString string1 = QStringLiteral("(") + zwnj + QStringLiteral(")"); + QString string2 = QStringLiteral("(") + zwnj + zwnj + QStringLiteral(")"); + QString string3 = QStringLiteral("(") + zwsp + QStringLiteral(")"); + QString string4 = QStringLiteral("(") + zwsp + zwsp + QStringLiteral(")"); + + QCOMPARE(fm.horizontalAdvance(string1), fm.horizontalAdvance(string2)); + QCOMPARE(fm.horizontalAdvance(string3), fm.horizontalAdvance(string4)); + QCOMPARE(fm.boundingRect(string1).width(), fm.boundingRect(string2).width()); + QCOMPARE(fm.boundingRect(string3).width(), fm.boundingRect(string4).width()); +} + QTEST_MAIN(tst_QFontMetrics) #include "tst_qfontmetrics.moc" diff --git a/tests/auto/network-settings.h b/tests/auto/network-settings.h index 641bf1d672..4dd6ce897b 100644 --- a/tests/auto/network-settings.h +++ b/tests/auto/network-settings.h @@ -190,7 +190,7 @@ public: if (!s.peerAddress().isNull()) debug << ", peer=" << s.peerAddress().toString() << ':' << s.peerPort(); debug << ", type=" << s.socketType() << ", state=" << s.state() - << ", error=" << s.socketError() << ": " << s.errorString(); + << ", error=" << s.error() << ": " << s.errorString(); return result.toLocal8Bit(); } #endif // QT_NETWORK_LIB diff --git a/tests/auto/network/access/http2/tst_http2.cpp b/tests/auto/network/access/http2/tst_http2.cpp index 38db74e52c..904cfd52b0 100644 --- a/tests/auto/network/access/http2/tst_http2.cpp +++ b/tests/auto/network/access/http2/tst_http2.cpp @@ -279,7 +279,7 @@ void tst_Http2::singleRequest() QVERIFY(prefaceOK); QVERIFY(serverGotSettingsACK); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QVERIFY(reply->isFinished()); } @@ -444,7 +444,7 @@ void tst_Http2::pushPromise() QVERIFY(prefaceOK); QVERIFY(serverGotSettingsACK); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QVERIFY(reply->isFinished()); // Now, the most interesting part! @@ -466,7 +466,7 @@ void tst_Http2::pushPromise() QCOMPARE(nSentRequests, 0); // Decreased by replyFinished(): QCOMPARE(nRequests, 0); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QVERIFY(reply->isFinished()); } @@ -511,7 +511,7 @@ void tst_Http2::goaway() QNetworkRequest request(url); request.setAttribute(QNetworkRequest::Http2AllowedAttribute, QVariant(true)); replies[i] = manager->get(request); - QCOMPARE(replies[i]->networkError(), QNetworkReply::NoError); + QCOMPARE(replies[i]->error(), QNetworkReply::NoError); void (QNetworkReply::*errorSignal)(QNetworkReply::NetworkError) = &QNetworkReply::error; connect(replies[i], errorSignal, this, &tst_Http2::replyFinishedWithError); @@ -671,7 +671,7 @@ void tst_Http2::connectToHost() connect(reply, &QNetworkReply::finished, [this, reply]() { --nRequests; eventLoop.exitLoop(); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QVERIFY(reply->isFinished()); // Nothing received back: QVERIFY(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).isNull()); @@ -698,7 +698,7 @@ void tst_Http2::connectToHost() QVERIFY(prefaceOK); QVERIFY(serverGotSettingsACK); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QVERIFY(reply->isFinished()); } @@ -927,10 +927,10 @@ void tst_Http2::replyFinished() QVERIFY(nRequests); if (const auto reply = qobject_cast<QNetworkReply *>(sender())) { - if (reply->networkError() != QNetworkReply::NoError) + if (reply->error() != QNetworkReply::NoError) stopEventLoop(); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); const QVariant http2Used(reply->attribute(QNetworkRequest::Http2WasUsedAttribute)); if (!http2Used.isValid() || !http2Used.toBool()) @@ -960,9 +960,9 @@ void tst_Http2::replyFinishedWithError() if (const auto reply = qobject_cast<QNetworkReply *>(sender())) { // For now this is a 'generic' code, it just verifies some error was // reported without testing its type. - if (reply->networkError() == QNetworkReply::NoError) + if (reply->error() == QNetworkReply::NoError) stopEventLoop(); - QVERIFY(reply->networkError() != QNetworkReply::NoError); + QVERIFY(reply->error() != QNetworkReply::NoError); } --nRequests; diff --git a/tests/auto/network/access/qabstractnetworkcache/tst_qabstractnetworkcache.cpp b/tests/auto/network/access/qabstractnetworkcache/tst_qabstractnetworkcache.cpp index 4b6e04f467..182e3e9547 100644 --- a/tests/auto/network/access/qabstractnetworkcache/tst_qabstractnetworkcache.cpp +++ b/tests/auto/network/access/qabstractnetworkcache/tst_qabstractnetworkcache.cpp @@ -322,10 +322,10 @@ void tst_QAbstractNetworkCache::runTest() QByteArray secondData = reply2->readAll(); if (!fetchFromCache && cacheLoadControl == QNetworkRequest::AlwaysCache) { - QCOMPARE(reply2->networkError(), QNetworkReply::ContentNotFoundError); + QCOMPARE(reply2->error(), QNetworkReply::ContentNotFoundError); QCOMPARE(secondData, QByteArray()); } else { - QCOMPARE(reply2->networkError(), QNetworkReply::NoError); + QCOMPARE(reply2->error(), QNetworkReply::NoError); QCOMPARE(QString(secondData), QString(goodData)); QCOMPARE(secondData, goodData); QCOMPARE(reply2->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); @@ -375,12 +375,12 @@ void tst_QAbstractNetworkCache::checkSynchronous() QByteArray secondData = reply2->readAll(); if (!fetchFromCache && cacheLoadControl == QNetworkRequest::AlwaysCache) { - QCOMPARE(reply2->networkError(), QNetworkReply::ContentNotFoundError); + QCOMPARE(reply2->error(), QNetworkReply::ContentNotFoundError); QCOMPARE(secondData, QByteArray()); } else { - if (reply2->networkError() != QNetworkReply::NoError) + if (reply2->error() != QNetworkReply::NoError) qDebug() << reply2->errorString(); - QCOMPARE(reply2->networkError(), QNetworkReply::NoError); + QCOMPARE(reply2->error(), QNetworkReply::NoError); QCOMPARE(QString(secondData), QString(goodData)); QCOMPARE(secondData, goodData); QCOMPARE(reply2->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); diff --git a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp index 5ddcc5ae37..5d46002a7c 100644 --- a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp +++ b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp @@ -684,7 +684,7 @@ private: //qDebug() << "connectSocketSignals" << client; connect(client.data(), SIGNAL(readyRead()), this, SLOT(readyReadSlot())); connect(client.data(), SIGNAL(bytesWritten(qint64)), this, SLOT(bytesWrittenSlot())); - connect(client.data(), SIGNAL(error(QAbstractSocket::SocketError)), + connect(client.data(), SIGNAL(errorOccurred(QAbstractSocket::SocketError)), this, SLOT(slotError(QAbstractSocket::SocketError))); } @@ -1121,7 +1121,7 @@ protected: // get the "request" packet if (!client->waitForReadyRead(2000)) { - qDebug() << "FastSender:" << client->socketError() << "waiting for \"request\" packet"; + qDebug() << "FastSender:" << client->error() << "waiting for \"request\" packet"; return; } client->readAll(); // we're not interested in the actual contents (e.g. HTTP request) @@ -1158,7 +1158,7 @@ protected: while (client->bytesToWrite() > 0) { qDebug() << "Still having" << client->bytesToWrite() << "bytes to write, doing that now"; if (!client->waitForBytesWritten(10000)) { - qDebug() << "ERROR: FastSender:" << client->socketError() << "cleaning up residue"; + qDebug() << "ERROR: FastSender:" << client->error() << "cleaning up residue"; return; } } @@ -1178,7 +1178,7 @@ protected: while (client->bytesToWrite() > 0) { if (!client->waitForBytesWritten(10000)) { - qDebug() << "ERROR: FastSender:" << client->socketError() << "during blocking write"; + qDebug() << "ERROR: FastSender:" << client->error() << "during blocking write"; return; } } @@ -1436,7 +1436,7 @@ QString tst_QNetworkReply::runSimpleRequest(QNetworkAccessManager::Operation op, if (request.attribute(QNetworkRequest::SynchronousRequestAttribute).toBool()) { if (reply->isFinished()) - code = reply->networkError() != QNetworkReply::NoError ? Failure : Success; + code = reply->error() != QNetworkReply::NoError ? Failure : Success; else code = Failure; } else { @@ -1501,10 +1501,10 @@ static QByteArray msgWaitForFinished(QNetworkReplyPtr &reply) debug << reply->url(); if (!reply->isFinished()) debug << "timed out."; - else if (reply->networkError() == QNetworkReply::NoError) + else if (reply->error() == QNetworkReply::NoError) debug << "finished."; else - debug << "failed: #" << reply->networkError() << reply->errorString(); + debug << "failed: #" << reply->error() << reply->errorString(); return result.toLocal8Bit(); } @@ -1652,7 +1652,7 @@ void tst_QNetworkReply::stateChecking() QCOMPARE(int(reply->operation()), int(QNetworkAccessManager::GetOperation)); // error and not error are OK since we might change underlying behaviour again if (!reply->isFinished()) - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->url(), url); reply->abort(); @@ -1669,7 +1669,7 @@ void tst_QNetworkReply::invalidProtocol() QCOMPARE(result, errorMsg); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::ProtocolUnknownError); + QCOMPARE(reply->error(), QNetworkReply::ProtocolUnknownError); } void tst_QNetworkReply::getFromData_data() @@ -1761,7 +1761,7 @@ void tst_QNetworkReply::getFromData() RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, req, reply)); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->header(QNetworkRequest::ContentTypeHeader).toString(), mimeType); QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), qint64(expected.size())); @@ -1800,7 +1800,7 @@ void tst_QNetworkReply::getFromFile() QVERIFY(waitForFinish(reply) != Timeout); QCOMPARE(reply->url(), request.url()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), file.size()); QCOMPARE(reply->readAll(), data); @@ -1817,7 +1817,7 @@ void tst_QNetworkReply::getFromFile() RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply)); QCOMPARE(reply->url(), request.url()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), file.size()); QCOMPARE(qint64(reply->readAll().size()), file.size()); @@ -1856,7 +1856,7 @@ void tst_QNetworkReply::getFromFileSpecial() RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply)); QCOMPARE(reply->url(), request.url()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), resource.size()); QCOMPARE(reply->readAll(), resource.readAll()); @@ -1890,7 +1890,7 @@ void tst_QNetworkReply::getFromFtp() RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply)); QCOMPARE(reply->url(), request.url()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), reference.size()); QCOMPARE(reply->readAll(), reference.readAll()); @@ -1903,7 +1903,7 @@ void tst_QNetworkReply::getFromFtpAfterError() invalidReply.reset(manager.get(invalidRequest)); QSignalSpy spy(invalidReply.data(), SIGNAL(error(QNetworkReply::NetworkError))); QVERIFY(spy.wait()); - QCOMPARE(invalidReply->networkError(), QNetworkReply::ContentNotFoundError); + QCOMPARE(invalidReply->error(), QNetworkReply::ContentNotFoundError); QFile reference(testDataDir + "/rfc3252.txt"); QVERIFY(reference.open(QIODevice::ReadOnly)); @@ -1911,7 +1911,7 @@ void tst_QNetworkReply::getFromFtpAfterError() QNetworkReplyPtr validReply; RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, validRequest, validReply)); QCOMPARE(validReply->url(), validRequest.url()); - QCOMPARE(validReply->networkError(), QNetworkReply::NoError); + QCOMPARE(validReply->error(), QNetworkReply::NoError); QCOMPARE(validReply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), reference.size()); QCOMPARE(validReply->readAll(), reference.readAll()); } @@ -1944,7 +1944,7 @@ void tst_QNetworkReply::getFromHttp() RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply)); QCOMPARE(reply->url(), request.url()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); QCOMPARE(reply->size(), reference.size()); // only compare when the header is set. @@ -2039,7 +2039,7 @@ void tst_QNetworkReply::headFromHttp() QVERIFY(time.elapsed() < 8000); //check authentication didn't wait for the server to timeout the http connection (15s on qt test server) QCOMPARE(reply->url(), request.url()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // only compare when the header is set. if (reply->header(QNetworkRequest::ContentLengthHeader).isValid() && referenceSize >= 0) @@ -2115,8 +2115,8 @@ static QByteArray msgGetErrors(int waitResult, const QNetworkReplyPtr &reply) QByteArray result ="waitResult=" + QByteArray::number(waitResult); if (reply->isFinished()) result += ", finished"; - if (reply->networkError() != QNetworkReply::NoError) - result += ", error: " + QByteArray::number(int(reply->networkError())); + if (reply->error() != QNetworkReply::NoError) + result += ", error: " + QByteArray::number(int(reply->error())); return result; } @@ -2146,7 +2146,7 @@ void tst_QNetworkReply::getErrors() reply->setParent(this); // we have expect-fails if (!reply->isFinished()) - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); // now run the request: const int waitResult = waitForFinish(reply); @@ -2158,7 +2158,7 @@ void tst_QNetworkReply::getErrors() // the line below is not necessary QEXPECT_FAIL("ftp-dir-not-readable", "QFtp cannot provide enough detail", Abort); #endif - QCOMPARE(reply->networkError(), QNetworkReply::NetworkError(error)); + QCOMPARE(reply->error(), QNetworkReply::NetworkError(error)); QTEST(reply->readAll().isEmpty(), "dataIsEmpty"); @@ -2217,7 +2217,7 @@ void tst_QNetworkReply::putToFile() RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PutOperation, request, reply, data)); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), Q_INT64_C(0)); QVERIFY(reply->readAll().isEmpty()); @@ -2248,7 +2248,7 @@ void tst_QNetworkReply::putToFtp() RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PutOperation, request, reply, data)); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), Q_INT64_C(0)); QVERIFY(reply->readAll().isEmpty()); @@ -2296,7 +2296,7 @@ void tst_QNetworkReply::putToFtpWithInvalidCredentials() QVERIFY(r->isFinished()); QCOMPARE(r->url(), url); - QCOMPARE(r->networkError(), QNetworkReply::AuthenticationRequiredError); + QCOMPARE(r->error(), QNetworkReply::AuthenticationRequiredError); r->close(); } } @@ -2322,7 +2322,7 @@ void tst_QNetworkReply::putToHttp() RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PutOperation, request, reply, data)); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 201); // 201 Created @@ -2363,7 +2363,7 @@ void tst_QNetworkReply::putToHttpSynchronous() RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PutOperation, request, reply, data)); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 201); // 201 Created @@ -2397,7 +2397,7 @@ void tst_QNetworkReply::postToHttp() RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PostOperation, request, reply, data)); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok @@ -2429,7 +2429,7 @@ void tst_QNetworkReply::postToHttpSynchronous() RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PostOperation, request, reply, data)); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok @@ -2692,7 +2692,7 @@ void tst_QNetworkReply::postToHttpMultipart() multiPart->deleteLater(); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok @@ -2734,7 +2734,7 @@ void tst_QNetworkReply::multipartSkipIndices() // QTBUG-32534 QNetworkReplyPtr reply; RUN_REQUEST(runMultipartRequest(request, reply, multiPart, "POST")); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok QByteArray line; @@ -2780,7 +2780,7 @@ void tst_QNetworkReply::putToHttpMultipart() multiPart->deleteLater(); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok @@ -2819,7 +2819,7 @@ void tst_QNetworkReply::putToHttps() RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PutOperation, request, reply, data)); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 201); // 201 Created @@ -2864,7 +2864,7 @@ void tst_QNetworkReply::putToHttpsSynchronous() RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PutOperation, request, reply, data)); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 201); // 201 Created @@ -2902,7 +2902,7 @@ void tst_QNetworkReply::postToHttps() RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PostOperation, request, reply, data)); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok @@ -2938,7 +2938,7 @@ void tst_QNetworkReply::postToHttpsSynchronous() RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PostOperation, request, reply, data)); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok @@ -2983,7 +2983,7 @@ void tst_QNetworkReply::postToHttpsMultipart() multiPart->deleteLater(); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok @@ -3036,7 +3036,7 @@ void tst_QNetworkReply::deleteFromHttp() QNetworkReplyPtr reply; runSimpleRequest(QNetworkAccessManager::DeleteOperation, request, reply, 0); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), error); + QCOMPARE(reply->error(), error); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), resultCode); } @@ -3086,19 +3086,19 @@ void tst_QNetworkReply::putGetDeleteGetFromHttp() QNetworkReplyPtr reply; RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PutOperation, putRequest, reply, 0)); - QCOMPARE(reply->networkError(), putError); + QCOMPARE(reply->error(), putError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), putResultCode); runSimpleRequest(QNetworkAccessManager::GetOperation, putRequest, reply, 0); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); runSimpleRequest(QNetworkAccessManager::DeleteOperation, deleteRequest, reply, 0); - QCOMPARE(reply->networkError(), deleteError); + QCOMPARE(reply->error(), deleteError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), deleteResultCode); runSimpleRequest(QNetworkAccessManager::GetOperation, get2Request, reply, 0); - QCOMPARE(reply->networkError(), get2Error); + QCOMPARE(reply->error(), get2Error); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), get2ResultCode); } @@ -3143,7 +3143,7 @@ void tst_QNetworkReply::connectToIPv6Address() QVERIFY(server.receivedData.contains(hostinfo)); QCOMPARE(content, dataToSend); QCOMPARE(reply->url(), request.url()); - QCOMPARE(reply->networkError(), error); + QCOMPARE(reply->error(), error); } void tst_QNetworkReply::sendCustomRequestToHttp_data() @@ -3189,7 +3189,7 @@ void tst_QNetworkReply::sendCustomRequestToHttp() runCustomRequest(request, reply, verb, device); QCOMPARE(reply->url(), url); QFETCH(QNetworkReply::NetworkError, error); - QCOMPARE(reply->networkError(), error); + QCOMPARE(reply->error(), error); QFETCH(int, resultCode); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), resultCode); QFETCH(QByteArray, expectedContent); @@ -3225,7 +3225,7 @@ void tst_QNetworkReply::ioGetFromData() QVERIFY(!QTestEventLoop::instance().timeout()); QCOMPARE(reply->url(), request.url()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QFETCH(QByteArray, data); QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toInt(), data.size()); @@ -3261,7 +3261,7 @@ void tst_QNetworkReply::ioGetFromFileSpecial() QVERIFY(!QTestEventLoop::instance().timeout()); QCOMPARE(reply->url(), request.url()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), resource.size()); QCOMPARE(qint64(reader.data.size()), resource.size()); @@ -3294,7 +3294,7 @@ void tst_QNetworkReply::ioGetFromFile() QVERIFY(!QTestEventLoop::instance().timeout()); QCOMPARE(reply->url(), request.url()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), file.size()); QCOMPARE(qint64(reader.data.size()), file.size()); @@ -3326,7 +3326,7 @@ void tst_QNetworkReply::ioGetFromFtp() QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->url(), request.url()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QFETCH(qint64, expectedSize); QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), expectedSize); @@ -3356,8 +3356,8 @@ void tst_QNetworkReply::ioGetFromFtpWithReuse() QCOMPARE(reply1->url(), request.url()); QCOMPARE(reply2->url(), request.url()); - QCOMPARE(reply1->networkError(), QNetworkReply::NoError); - QCOMPARE(reply2->networkError(), QNetworkReply::NoError); + QCOMPARE(reply1->error(), QNetworkReply::NoError); + QCOMPARE(reply2->error(), QNetworkReply::NoError); QCOMPARE(qint64(reader1.data.size()), reference.size()); QCOMPARE(qint64(reader2.data.size()), reference.size()); @@ -3382,7 +3382,7 @@ void tst_QNetworkReply::ioGetFromHttp() QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->url(), request.url()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), reference.size()); @@ -3408,8 +3408,8 @@ void tst_QNetworkReply::ioGetFromHttpWithReuseParallel() QCOMPARE(reply1->url(), request.url()); QCOMPARE(reply2->url(), request.url()); - QCOMPARE(reply1->networkError(), QNetworkReply::NoError); - QCOMPARE(reply2->networkError(), QNetworkReply::NoError); + QCOMPARE(reply1->error(), QNetworkReply::NoError); + QCOMPARE(reply2->error(), QNetworkReply::NoError); QCOMPARE(reply1->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); QCOMPARE(reply2->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); @@ -3436,7 +3436,7 @@ void tst_QNetworkReply::ioGetFromHttpWithReuseSequential() QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->url(), request.url()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), reference.size()); @@ -3454,7 +3454,7 @@ void tst_QNetworkReply::ioGetFromHttpWithReuseSequential() QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->url(), request.url()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), reference.size()); @@ -3577,7 +3577,7 @@ void tst_QNetworkReply::ioGetFromHttpWithAuth() QVERIFY(replySync->isFinished()); // synchronous if (expectedAuth) { // bad credentials in a synchronous request should just fail - QCOMPARE(replySync->networkError(), QNetworkReply::AuthenticationRequiredError); + QCOMPARE(replySync->error(), QNetworkReply::AuthenticationRequiredError); } else { QCOMPARE(authspy.count(), 0); @@ -3603,7 +3603,7 @@ void tst_QNetworkReply::ioGetFromHttpWithAuth() QVERIFY(replySync->isFinished()); // synchronous if (expectedAuth) { // bad credentials in a synchronous request should just fail - QCOMPARE(replySync->networkError(), QNetworkReply::AuthenticationRequiredError); + QCOMPARE(replySync->error(), QNetworkReply::AuthenticationRequiredError); } else { QCOMPARE(authspy.count(), 0); @@ -3630,7 +3630,7 @@ void tst_QNetworkReply::ioGetFromHttpWithAuthSynchronous() QSignalSpy authspy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*))); QNetworkReplyPtr replySync(manager.get(request)); QVERIFY(replySync->isFinished()); // synchronous - QCOMPARE(replySync->networkError(), QNetworkReply::AuthenticationRequiredError); + QCOMPARE(replySync->error(), QNetworkReply::AuthenticationRequiredError); QCOMPARE(authspy.count(), 0); QCOMPARE(replySync->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 401); } @@ -3735,7 +3735,7 @@ void tst_QNetworkReply::ioGetFromHttpWithProxyAuthSynchronous() QNetworkReplyPtr replySync(manager.get(request)); manager.setProxy(QNetworkProxy()); // reset QVERIFY(replySync->isFinished()); // synchronous - QCOMPARE(replySync->networkError(), QNetworkReply::ProxyAuthenticationRequiredError); + QCOMPARE(replySync->error(), QNetworkReply::ProxyAuthenticationRequiredError); QCOMPARE(authspy.count(), 0); QCOMPARE(replySync->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 407); } @@ -3791,9 +3791,9 @@ void tst_QNetworkReply::ioGetFromHttpWithSocksProxy() QVERIFY(!reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).isValid()); QVERIFY(reader.data.isEmpty()); - QVERIFY(int(reply->networkError()) > 0); + QVERIFY(int(reply->error()) > 0); QEXPECT_FAIL("", "QTcpSocket doesn't return enough information yet", Continue); - QCOMPARE(int(reply->networkError()), int(QNetworkReply::ProxyConnectionRefusedError)); + QCOMPARE(int(reply->error()), int(QNetworkReply::ProxyConnectionRefusedError)); QCOMPARE(authspy.count(), 0); } @@ -3873,7 +3873,7 @@ void tst_QNetworkReply::ioGetFromHttpsWithSslHandshakeError() QCOMPARE(waitForFinish(reply), int(Failure)); - QCOMPARE(reply->networkError(), QNetworkReply::SslHandshakeFailedError); + QCOMPARE(reply->error(), QNetworkReply::SslHandshakeFailedError); QCOMPARE(sslspy.count(), 0); } #endif @@ -3933,7 +3933,7 @@ void tst_QNetworkReply::ioGetFromHttpBrokenServer() QCOMPARE(reply->url(), request.url()); QCOMPARE(spy.count(), 1); - QVERIFY(reply->networkError() != QNetworkReply::NoError); + QVERIFY(reply->error() != QNetworkReply::NoError); } void tst_QNetworkReply::ioGetFromHttpStatus100_data() @@ -3962,7 +3962,7 @@ void tst_QNetworkReply::ioGetFromHttpStatus100() QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->url(), request.url()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), statusCode); QVERIFY(reply->rawHeader("bla").isNull()); } @@ -3985,7 +3985,7 @@ void tst_QNetworkReply::ioGetFromHttpNoHeaders() QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->url(), request.url()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); } @@ -4432,7 +4432,7 @@ void tst_QNetworkReply::ioGetWithManyProxies() #if QT_CONFIG(ftp) QEXPECT_FAIL("ftp-on-socks", "QFtp is too limited and won't accept non-FTP proxies", Abort); #endif - QCOMPARE(reply->networkError(), expectedError); + QCOMPARE(reply->error(), expectedError); // Verify that the factory was called properly QCOMPARE(proxyFactory->callCount, 1); @@ -4486,7 +4486,7 @@ void tst_QNetworkReply::ioPutToFileFromFile() QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), Q_INT64_C(0)); QVERIFY(reply->readAll().isEmpty()); @@ -4519,10 +4519,10 @@ void tst_QNetworkReply::ioPutToFileFromSocket() socketpair.endPoints[0]->close(); QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), Q_INT64_C(0)); QVERIFY(reply->readAll().isEmpty()); @@ -4567,10 +4567,10 @@ void tst_QNetworkReply::ioPutToFileFromLocalSocket() QEXPECT_FAIL("", "QTBUG-18385", Abort); #endif QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), Q_INT64_C(0)); QVERIFY(reply->readAll().isEmpty()); @@ -4619,7 +4619,7 @@ void tst_QNetworkReply::ioPutToFileFromProcess() QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), Q_INT64_C(0)); QVERIFY(reply->readAll().isEmpty()); @@ -4654,7 +4654,7 @@ void tst_QNetworkReply::ioPutToFtpFromFile() QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), Q_INT64_C(0)); QVERIFY(reply->readAll().isEmpty()); @@ -4704,7 +4704,7 @@ void tst_QNetworkReply::ioPutToHttpFromFile() QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); // verify that the HTTP status code is 201 Created QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 201); @@ -4719,7 +4719,7 @@ void tst_QNetworkReply::ioPutToHttpFromFile() QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok QCOMPARE(reply->readAll(), sourceFile.readAll()); @@ -4745,7 +4745,7 @@ void tst_QNetworkReply::ioPostToHttpFromFile() QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); // verify that the HTTP status code is 200 Ok QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); @@ -4835,10 +4835,10 @@ void tst_QNetworkReply::ioPostToHttpFromSocket() this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*))); disconnect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)), this, SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*))); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); // verify that the HTTP status code is 200 Ok QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); @@ -4898,10 +4898,10 @@ void tst_QNetworkReply::ioPostToHttpFromSocketSynchronous() QVERIFY(reply->isFinished()); socketpair.endPoints[0]->close(); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); // verify that the HTTP status code is 200 Ok QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); @@ -5021,7 +5021,7 @@ void tst_QNetworkReply::ioPostToHttpNoBufferFlag() this, SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*))); // verify: error code is QNetworkReply::ContentReSendError - QCOMPARE(reply->networkError(), QNetworkReply::ContentReSendError); + QCOMPARE(reply->error(), QNetworkReply::ContentReSendError); } #ifndef QT_NO_SSL @@ -5203,7 +5203,7 @@ void tst_QNetworkReply::ioGetFromBuiltinHttp() << "(it received" << reader.totalBytesRead << "bytes in" << elapsedTime << "ms)"; QCOMPARE(reply->url(), request.url()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), (qint64)testData.size()); @@ -5439,7 +5439,7 @@ void tst_QNetworkReply::httpCanReadLine() QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QVERIFY(reply->canReadLine()); QVERIFY(!reply->readAll().isEmpty()); @@ -5498,7 +5498,7 @@ void tst_QNetworkReply::rateControl() sender.wait(); QCOMPARE(reply->url(), request.url()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QVERIFY(sender.transferRate != -1); int minRate = rate * 1024 * 9 / 10; @@ -5648,11 +5648,11 @@ void tst_QNetworkReply::chaining() QCOMPARE(waitForFinish(putReply), int(Success)); QCOMPARE(getReply->url(), QUrl::fromLocalFile(sourceFile.fileName())); - QCOMPARE(getReply->networkError(), QNetworkReply::NoError); + QCOMPARE(getReply->error(), QNetworkReply::NoError); QCOMPARE(getReply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), sourceFile.size()); QCOMPARE(putReply->url(), url); - QCOMPARE(putReply->networkError(), QNetworkReply::NoError); + QCOMPARE(putReply->error(), QNetworkReply::NoError); QCOMPARE(putReply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), Q_INT64_C(0)); QVERIFY(putReply->readAll().isEmpty()); @@ -5723,7 +5723,7 @@ void tst_QNetworkReply::receiveCookiesFromHttp() RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PostOperation, request, reply, data)); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok @@ -5755,7 +5755,7 @@ void tst_QNetworkReply::receiveCookiesFromHttpSynchronous() RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PostOperation, request, reply, data)); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok @@ -5818,7 +5818,7 @@ void tst_QNetworkReply::sendCookies() RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply)); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok @@ -5847,7 +5847,7 @@ void tst_QNetworkReply::sendCookiesSynchronous() RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply)); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok @@ -5940,6 +5940,9 @@ void tst_QNetworkReply::httpProxyCommands() // wait for the finished signal QVERIFY(waitForFinish(reply) != Timeout); + //qDebug() << reply->error() << reply->errorString(); + //qDebug() << proxyServer.receivedData; + // we don't really care if the request succeeded // especially since it won't succeed in the HTTPS case // so just check that the command was correct @@ -6022,6 +6025,8 @@ void tst_QNetworkReply::httpProxyCommandsSynchronous() QVERIFY(reply->isFinished()); // synchronous manager.setProxy(QNetworkProxy()); + //qDebug() << reply->error() << reply->errorString(); + // we don't really care if the request succeeded // especially since it won't succeed in the HTTPS case // so just check that the command was correct @@ -6061,11 +6066,11 @@ void tst_QNetworkReply::proxyChange() QVERIFY(!QTestEventLoop::instance().timeout()); // verify that the replies succeeded - QCOMPARE(reply1->networkError(), QNetworkReply::NoError); + QCOMPARE(reply1->error(), QNetworkReply::NoError); QCOMPARE(reply1->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); QCOMPARE(reply1->size(), 1); - QCOMPARE(reply2->networkError(), QNetworkReply::NoError); + QCOMPARE(reply2->error(), QNetworkReply::NoError); QCOMPARE(reply2->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); QVERIFY(reply2->size() > 1); @@ -6082,7 +6087,7 @@ void tst_QNetworkReply::proxyChange() QCOMPARE(waitForFinish(reply3), int(Failure)); - QVERIFY(int(reply3->networkError()) > 0); + QVERIFY(int(reply3->error()) > 0); } #endif // !QT_NO_NETWORKPROXY @@ -6115,7 +6120,7 @@ void tst_QNetworkReply::authorizationError() QNetworkRequest request(url); QNetworkReplyPtr reply(manager.get(request)); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QSignalSpy errorSpy(reply.data(), SIGNAL(error(QNetworkReply::NetworkError))); QSignalSpy finishedSpy(reply.data(), SIGNAL(finished())); @@ -6127,7 +6132,7 @@ void tst_QNetworkReply::authorizationError() QFETCH(int, finishedSignalCount); QCOMPARE(finishedSpy.count(), finishedSignalCount); QFETCH(int, error); - QCOMPARE(reply->networkError(), QNetworkReply::NetworkError(error)); + QCOMPARE(reply->error(), QNetworkReply::NetworkError(error)); QFETCH(int, httpStatusCode); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), httpStatusCode); @@ -6195,7 +6200,7 @@ void tst_QNetworkReply::httpReUsingConnectionSequential() connect(reply1, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop())); QTestEventLoop::instance().enterLoop(2); QVERIFY(!QTestEventLoop::instance().timeout()); - QVERIFY(!reply1->networkError()); + QVERIFY(!reply1->error()); int reply1port = server.client->peerPort(); if (doDeleteLater) @@ -6206,7 +6211,7 @@ void tst_QNetworkReply::httpReUsingConnectionSequential() connect(reply2, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop())); QTestEventLoop::instance().enterLoop(2); QVERIFY(!QTestEventLoop::instance().timeout()); - QVERIFY(!reply2->networkError()); + QVERIFY(!reply2->error()); int reply2port = server.client->peerPort(); // should still be the same object QVERIFY(reply1port > 0); @@ -6229,7 +6234,7 @@ public: public slots: void finishedSlot() { - QVERIFY(!reply1->networkError()); + QVERIFY(!reply1->error()); QFETCH(bool, doDeleteLater); if (doDeleteLater) { @@ -6271,7 +6276,7 @@ void tst_QNetworkReply::httpReUsingConnectionFromFinishedSlot() QVERIFY(!QTestEventLoop::instance().timeout()); QVERIFY(helper.reply2); - QVERIFY(!helper.reply2->networkError()); + QVERIFY(!helper.reply2->error()); QCOMPARE(server.totalConnections, 1); } @@ -6298,7 +6303,7 @@ public slots: requestsFinishedCount++; QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender()); - QVERIFY(!reply->networkError()); + QVERIFY(!reply->error()); QCOMPARE(reply->bytesAvailable(), 27906); if (requestsFinishedCount == 60) { @@ -6316,7 +6321,7 @@ public slots: void readyReadSlot() { QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender()); - QVERIFY(!reply->networkError()); + QVERIFY(!reply->error()); if (requestsStartedCount_readyRead < 30 && reply->bytesAvailable() > 27906/2) { startOne(); @@ -6378,7 +6383,7 @@ void tst_QNetworkReply::ignoreSslErrorsList() QVERIFY(waitForFinish(reply) != Timeout); QFETCH(QNetworkReply::NetworkError, expectedNetworkError); - QCOMPARE(reply->networkError(), expectedNetworkError); + QCOMPARE(reply->error(), expectedNetworkError); } void tst_QNetworkReply::ignoreSslErrorsListWithSlot_data() @@ -6409,7 +6414,7 @@ void tst_QNetworkReply::ignoreSslErrorsListWithSlot() QVERIFY(waitForFinish(reply) != Timeout); QFETCH(QNetworkReply::NetworkError, expectedNetworkError); - QCOMPARE(reply->networkError(), expectedNetworkError); + QCOMPARE(reply->error(), expectedNetworkError); } void tst_QNetworkReply::sslConfiguration_data() @@ -6488,7 +6493,7 @@ void tst_QNetworkReply::sslConfiguration() QFETCH(bool, works); QNetworkReply::NetworkError expectedError = works ? QNetworkReply::NoError : QNetworkReply::SslHandshakeFailedError; - QCOMPARE(reply->networkError(), expectedError); + QCOMPARE(reply->error(), expectedError); } #ifdef QT_BUILD_INTERNAL @@ -6523,7 +6528,7 @@ void tst_QNetworkReply::sslSessionSharing() connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop())); QTestEventLoop::instance().enterLoop(20); QVERIFY(!QTestEventLoop::instance().timeout()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); reply->deleteLater(); // now send several requests at the same time, so we open more sockets and reuse the SSL session @@ -6548,7 +6553,7 @@ void tst_QNetworkReply::sslSessionSharingHelperSlot() sslSessionSharingWasUsed = true; QString urlQueryString = reply->url().query(); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); count++; @@ -6589,7 +6594,7 @@ void tst_QNetworkReply::sslSessionSharingFromPersistentSession() connect(warmupReply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop())); QTestEventLoop::instance().enterLoop(20); QVERIFY(!QTestEventLoop::instance().timeout()); - QCOMPARE(warmupReply->networkError(), QNetworkReply::NoError); + QCOMPARE(warmupReply->error(), QNetworkReply::NoError); QByteArray sslSession = warmupReply->sslConfiguration().sessionTicket(); QCOMPARE(!sslSession.isEmpty(), sessionPersistenceEnabled); @@ -6617,7 +6622,7 @@ void tst_QNetworkReply::sslSessionSharingFromPersistentSession() connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop())); QTestEventLoop::instance().enterLoop(20); QVERIFY(!QTestEventLoop::instance().timeout()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); bool sslSessionSharingWasUsedInReply = QSslConfigurationPrivate::peerSessionWasShared( reply->sslConfiguration()); @@ -6671,7 +6676,7 @@ void tst_QNetworkReply::symbianOpenCDataUrlCrash() RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, req, reply)); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), qint64(598)); } @@ -6891,7 +6896,7 @@ void tst_QNetworkReply::getFromHttpIntoBuffer2() connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection); QTestEventLoop::instance().enterLoop(40); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QVERIFY(!QTestEventLoop::instance().timeout()); } @@ -6909,7 +6914,7 @@ void tst_QNetworkReply::getFromHttpIntoBufferCanReadLine() QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QVERIFY(reply->canReadLine()); QCOMPARE(reply->read(1), QByteArray("x")); QVERIFY(reply->canReadLine()); @@ -6935,7 +6940,7 @@ void tst_QNetworkReply::ioGetFromHttpWithoutContentLength() QCOMPARE(reply->url(), request.url()); QVERIFY(reply->isFinished()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); } // Is handled somewhere else too, introduced this special test to have it more accessible @@ -6957,7 +6962,7 @@ void tst_QNetworkReply::ioGetFromHttpBrokenChunkedEncoding() QVERIFY(!QTestEventLoop::instance().timeout()); QEXPECT_FAIL(0, "We should close the socket and not just do nothing", Continue); QVERIFY(reply->isFinished()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); } // TODO: @@ -6981,7 +6986,7 @@ void tst_QNetworkReply::qtbug12908compressedHttpReply() QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->size(), qint64(16384)); QCOMPARE(reply->readAll(), QByteArray(16384, '\0')); } @@ -7004,7 +7009,7 @@ void tst_QNetworkReply::compressedHttpReplyBrokenGzip() QCOMPARE(waitForFinish(reply), int(Failure)); - QCOMPARE(reply->networkError(), QNetworkReply::ProtocolFailure); + QCOMPARE(reply->error(), QNetworkReply::ProtocolFailure); } // TODO add similar test for FTP @@ -7059,7 +7064,7 @@ void tst_QNetworkReply::getFromUnreachableIp() QCOMPARE(waitForFinish(reply), int(Failure)); - QVERIFY(reply->networkError() != QNetworkReply::NoError); + QVERIFY(reply->error() != QNetworkReply::NoError); } void tst_QNetworkReply::qtbug4121unknownAuthentication() @@ -7083,7 +7088,7 @@ void tst_QNetworkReply::qtbug4121unknownAuthentication() QCOMPARE(finishedSpy.count(), 1); QCOMPARE(errorSpy.count(), 1); - QCOMPARE(reply->networkError(), QNetworkReply::AuthenticationRequiredError); + QCOMPARE(reply->error(), QNetworkReply::AuthenticationRequiredError); } #ifndef QT_NO_NETWORKPROXY @@ -7174,7 +7179,7 @@ void tst_QNetworkReply::authenticationCacheAfterCancel() QTestEventLoop::instance().enterLoop(10); QVERIFY(!QTestEventLoop::instance().timeout()); - QCOMPARE(reply->networkError(), QNetworkReply::ProxyAuthenticationRequiredError); + QCOMPARE(reply->error(), QNetworkReply::ProxyAuthenticationRequiredError); QCOMPARE(authSpy.count(), 0); QCOMPARE(proxyAuthSpy.count(), 1); proxyAuthSpy.clear(); @@ -7188,8 +7193,8 @@ void tst_QNetworkReply::authenticationCacheAfterCancel() QVERIFY(!QTestEventLoop::instance().timeout()); // Work round known quirk in the old test server (danted -v < v1.1.19): - if (reply->networkError() != QNetworkReply::HostNotFoundError) - QCOMPARE(reply->networkError(), QNetworkReply::ProxyAuthenticationRequiredError); + if (reply->error() != QNetworkReply::HostNotFoundError) + QCOMPARE(reply->error(), QNetworkReply::ProxyAuthenticationRequiredError); QCOMPARE(authSpy.count(), 0); QVERIFY(proxyAuthSpy.count() > 0); proxyAuthSpy.clear(); @@ -7215,7 +7220,7 @@ void tst_QNetworkReply::authenticationCacheAfterCancel() QTestEventLoop::instance().enterLoop(10); QVERIFY(!QTestEventLoop::instance().timeout()); - QCOMPARE(reply->networkError(), QNetworkReply::AuthenticationRequiredError); + QCOMPARE(reply->error(), QNetworkReply::AuthenticationRequiredError); QVERIFY(authSpy.count() > 0); authSpy.clear(); if (proxyAuth) { @@ -7231,7 +7236,7 @@ void tst_QNetworkReply::authenticationCacheAfterCancel() QTestEventLoop::instance().enterLoop(10); QVERIFY(!QTestEventLoop::instance().timeout()); - QCOMPARE(reply->networkError(), QNetworkReply::AuthenticationRequiredError); + QCOMPARE(reply->error(), QNetworkReply::AuthenticationRequiredError); QVERIFY(authSpy.count() > 0); authSpy.clear(); if (proxyAuth) { @@ -7249,7 +7254,7 @@ void tst_QNetworkReply::authenticationCacheAfterCancel() QTestEventLoop::instance().enterLoop(10); QVERIFY(!QTestEventLoop::instance().timeout()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QVERIFY(authSpy.count() > 0); authSpy.clear(); if (proxyAuth) { @@ -7264,7 +7269,7 @@ void tst_QNetworkReply::authenticationCacheAfterCancel() QTestEventLoop::instance().enterLoop(10); QVERIFY(!QTestEventLoop::instance().timeout()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); //should be supplied from cache QCOMPARE(authSpy.count(), 0); authSpy.clear(); @@ -7295,7 +7300,7 @@ void tst_QNetworkReply::authenticationWithDifferentRealm() connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection); QTestEventLoop::instance().enterLoop(10); QVERIFY(!QTestEventLoop::instance().timeout()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); helper.httpUserName = "httptest"; helper.httpPassword = "httptest"; @@ -7305,7 +7310,7 @@ void tst_QNetworkReply::authenticationWithDifferentRealm() connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection); QTestEventLoop::instance().enterLoop(10); QVERIFY(!QTestEventLoop::instance().timeout()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); } #endif // !QT_NO_NETWORKPROXY @@ -7356,7 +7361,7 @@ void tst_QNetworkReply::qtbug13431replyThrottling() QTestEventLoop::instance().enterLoop(30); QVERIFY(!QTestEventLoop::instance().timeout()); QVERIFY(helper.m_reply->isFinished()); - QCOMPARE(helper.m_reply->networkError(), QNetworkReply::NoError); + QCOMPARE(helper.m_reply->error(), QNetworkReply::NoError); } void tst_QNetworkReply::httpWithNoCredentialUsage() @@ -7405,7 +7410,7 @@ void tst_QNetworkReply::httpWithNoCredentialUsage() QCOMPARE(finishedSpy.count(), 1); QCOMPARE(errorSpy.count(), 1); - QCOMPARE(reply->networkError(), QNetworkReply::AuthenticationRequiredError); + QCOMPARE(reply->error(), QNetworkReply::AuthenticationRequiredError); } } @@ -7421,7 +7426,7 @@ void tst_QNetworkReply::qtbug15311doubleContentLength() QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(reply->isFinished()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->size(), qint64(3)); QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), qint64(3)); QCOMPARE(reply->rawHeader("Content-length"), QByteArray("3, 3")); @@ -7440,7 +7445,7 @@ void tst_QNetworkReply::qtbug18232gzipContentLengthZero() QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(reply->isFinished()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->size(), qint64(0)); QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), qint64(0)); QCOMPARE(reply->readAll(), QByteArray()); @@ -7461,7 +7466,7 @@ void tst_QNetworkReply::qtbug22660gzipNoContentLengthEmptyContent() QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(reply->isFinished()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->size(), qint64(0)); QVERIFY(!reply->header(QNetworkRequest::ContentLengthHeader).isValid()); QCOMPARE(reply->readAll(), QByteArray()); @@ -7534,7 +7539,7 @@ void tst_QNetworkReply::qtbug27161httpHeaderMayBeDamaged(){ QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(reply->isFinished()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->size(), qint64(3)); QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), qint64(3)); QCOMPARE(reply->rawHeader("Content-length"), QByteArray("3")); @@ -7585,7 +7590,7 @@ void tst_QNetworkReply::qtbug28035browserDoesNotLoadQtProjectOrgCorrectly() { QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(reply->isFinished()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->readAll(), QByteArray("GET")); QCOMPARE(reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute).toBool(), false); @@ -7595,7 +7600,7 @@ void tst_QNetworkReply::qtbug28035browserDoesNotLoadQtProjectOrgCorrectly() { QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(reply->isFinished()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->readAll(), QByteArray("GET")); QCOMPARE(reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute).toBool(), true); @@ -7607,7 +7612,7 @@ void tst_QNetworkReply::qtbug28035browserDoesNotLoadQtProjectOrgCorrectly() { QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(reply->isFinished()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->rawHeader("Content-length"), QByteArray("4")); QCOMPARE(reply->readAll(), QByteArray("POST")); QCOMPARE(reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute).toBool(), false); @@ -7619,7 +7624,7 @@ void tst_QNetworkReply::qtbug28035browserDoesNotLoadQtProjectOrgCorrectly() { QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(reply->isFinished()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->readAll(), QByteArray("GET")); QCOMPARE(reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute).toBool(), false); @@ -7630,7 +7635,7 @@ void tst_QNetworkReply::qtbug28035browserDoesNotLoadQtProjectOrgCorrectly() { QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(reply->isFinished()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->readAll(), QByteArray("GET")); QCOMPARE(reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute).toBool(), true); @@ -7641,7 +7646,7 @@ void tst_QNetworkReply::qtbug28035browserDoesNotLoadQtProjectOrgCorrectly() { QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(reply->isFinished()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute).toBool(), false); server.clearHeaderParserState(); @@ -7651,7 +7656,7 @@ void tst_QNetworkReply::qtbug28035browserDoesNotLoadQtProjectOrgCorrectly() { QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(reply->isFinished()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->readAll(), QByteArray("GET")); QCOMPARE(reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute).toBool(), false); @@ -7662,7 +7667,7 @@ void tst_QNetworkReply::qtbug28035browserDoesNotLoadQtProjectOrgCorrectly() { QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(reply->isFinished()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->readAll(), QByteArray("GET")); QCOMPARE(reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute).toBool(), true); } @@ -7813,7 +7818,7 @@ void tst_QNetworkReply::synchronousRequestSslFailure() QSignalSpy sslErrorsSpy(&manager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>))); runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply, 0); QVERIFY(reply->isFinished()); - QCOMPARE(reply->networkError(), QNetworkReply::SslHandshakeFailedError); + QCOMPARE(reply->error(), QNetworkReply::SslHandshakeFailedError); QCOMPARE(sslErrorsSpy.count(), 0); } #endif @@ -7855,14 +7860,14 @@ void tst_QNetworkReply::httpAbort() HttpAbortHelper replyHolder(reply.data()); QTestEventLoop::instance().enterLoop(10); QVERIFY(!QTestEventLoop::instance().timeout()); - QCOMPARE(reply->networkError(), QNetworkReply::OperationCanceledError); + QCOMPARE(reply->error(), QNetworkReply::OperationCanceledError); QVERIFY(reply->isFinished()); // Abort immediately after the get() QNetworkReplyPtr reply2(manager.get(request)); connect(reply2, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop())); reply2->abort(); - QCOMPARE(reply2->networkError(), QNetworkReply::OperationCanceledError); + QCOMPARE(reply2->error(), QNetworkReply::OperationCanceledError); QVERIFY(reply2->isFinished()); // Abort after the finished() @@ -7873,7 +7878,7 @@ void tst_QNetworkReply::httpAbort() QVERIFY(reply3->isFinished()); reply3->abort(); - QCOMPARE(reply3->networkError(), QNetworkReply::NoError); + QCOMPARE(reply3->error(), QNetworkReply::NoError); } void tst_QNetworkReply::dontInsertPartialContentIntoTheCache() @@ -7920,7 +7925,7 @@ void tst_QNetworkReply::httpUserAgent() QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(reply->isFinished()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QVERIFY(server.receivedData.contains("\r\nUser-Agent: abcDEFghi\r\n")); } @@ -7973,7 +7978,7 @@ void tst_QNetworkReply::synchronousAuthenticationCache() QNetworkReplyPtr reply(manager.get(request)); QVERIFY(reply->isFinished()); - QCOMPARE(reply->networkError(), QNetworkReply::AuthenticationRequiredError); + QCOMPARE(reply->error(), QNetworkReply::AuthenticationRequiredError); } //2) URL with credentials, we are authenticated @@ -7984,7 +7989,7 @@ void tst_QNetworkReply::synchronousAuthenticationCache() QNetworkReplyPtr reply(manager.get(request)); QVERIFY(reply->isFinished()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->readAll().constData(), "OK"); } @@ -7996,7 +8001,7 @@ void tst_QNetworkReply::synchronousAuthenticationCache() QNetworkReplyPtr reply(manager.get(request)); QVERIFY(reply->isFinished()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->readAll().constData(), "OK"); } } @@ -8093,7 +8098,7 @@ void tst_QNetworkReply::ftpAuthentication() runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply); QCOMPARE(reply->url(), request.url()); - QCOMPARE(reply->networkError(), QNetworkReply::NetworkError(error)); + QCOMPARE(reply->error(), QNetworkReply::NetworkError(error)); } #endif @@ -8201,7 +8206,7 @@ void tst_QNetworkReply::backgroundRequest() QNetworkSessionPrivate::setUsagePolicies(*session, original); QVERIFY(reply->isFinished()); - QCOMPARE(reply->networkError(), error); + QCOMPARE(reply->error(), error); #endif } #endif @@ -8282,7 +8287,7 @@ void tst_QNetworkReply::backgroundRequestInterruption() QNetworkSessionPrivate::setUsagePolicies(*session, original); QVERIFY(reply->isFinished()); - QCOMPARE(reply->networkError(), error); + QCOMPARE(reply->error(), error); #endif } #endif @@ -8433,7 +8438,7 @@ void tst_QNetworkReply::putWithRateLimiting() rateLimitedUploadDevice.open(QIODevice::ReadOnly); RUN_REQUEST(runCustomRequest(request, reply,QByteArray("POST"), &rateLimitedUploadDevice)); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); QByteArray uploadedData = reply->readAll(); @@ -8481,7 +8486,7 @@ void tst_QNetworkReply::ioHttpSingleRedirect() // Reply url is set to the redirect url QCOMPARE(reply->url(), redirectUrl); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QVERIFY(validateRedirectedResponseHeaders(reply)); } @@ -8518,7 +8523,7 @@ void tst_QNetworkReply::ioHttpChangeMaxRedirects() QCOMPARE(redSpy.count(), request.maximumRedirectsAllowed()); QCOMPARE(spy.count(), 1); - QCOMPARE(reply->networkError(), QNetworkReply::TooManyRedirectsError); + QCOMPARE(reply->error(), QNetworkReply::TooManyRedirectsError); // Increase max redirects to allow successful completion request.setMaximumRedirectsAllowed(3); @@ -8530,7 +8535,7 @@ void tst_QNetworkReply::ioHttpChangeMaxRedirects() QCOMPARE(redSpy2.count(), 2); QCOMPARE(reply2->url(), server3Url); - QCOMPARE(reply2->networkError(), QNetworkReply::NoError); + QCOMPARE(reply2->error(), QNetworkReply::NoError); QVERIFY(validateRedirectedResponseHeaders(reply2)); } @@ -8588,7 +8593,7 @@ void tst_QNetworkReply::ioHttpRedirectErrors() watchDog.start(5000); QCOMPARE(eventLoop.exec(), int(Failure)); - QCOMPARE(reply->networkError(), error); + QCOMPARE(reply->error(), error); } struct SameOriginRedirector : MiniHttpServer @@ -8746,7 +8751,7 @@ void tst_QNetworkReply::ioHttpRedirectPolicyErrors() QCOMPARE(waitForFinish(reply), int(Failure)); QCOMPARE(spy.count(), 1); - QCOMPARE(reply->networkError(), expectedError); + QCOMPARE(reply->error(), expectedError); } void tst_QNetworkReply::ioHttpUserVerifiedRedirect_data() @@ -8889,7 +8894,7 @@ void tst_QNetworkReply::ioHttpRedirectFromLocalToRemote() QCOMPARE(waitForFinish(reply), int(Success)); QCOMPARE(reply->url(), targetUrl); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), reference.size()); QCOMPARE(reply->readAll(), reference.readAll()); } @@ -9008,7 +9013,7 @@ void tst_QNetworkReply::ioHttpRedirectMultipartPost() multiPart->deleteLater(); QCOMPARE(reply->url(), url); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 OK @@ -9397,7 +9402,7 @@ void tst_QNetworkReply::getWithTimeout() QCOMPARE(waitForFinish(reply), int(Success)); QCOMPARE(spy.count(), 0); - QVERIFY(reply->networkError() == QNetworkReply::NoError); + QVERIFY(reply->error() == QNetworkReply::NoError); request.setTransferTimeout(1000); server.stopTransfer = true; @@ -9408,7 +9413,7 @@ void tst_QNetworkReply::getWithTimeout() QCOMPARE(waitForFinish(reply2), int(Failure)); QCOMPARE(spy2.count(), 1); - QVERIFY(reply2->networkError() == QNetworkReply::OperationCanceledError); + QVERIFY(reply2->error() == QNetworkReply::OperationCanceledError); request.setTransferTimeout(0); manager.setTransferTimeout(1000); @@ -9419,7 +9424,7 @@ void tst_QNetworkReply::getWithTimeout() QCOMPARE(waitForFinish(reply3), int(Failure)); QCOMPARE(spy3.count(), 1); - QVERIFY(reply3->networkError() == QNetworkReply::OperationCanceledError); + QVERIFY(reply3->error() == QNetworkReply::OperationCanceledError); manager.setTransferTimeout(0); } @@ -9437,7 +9442,7 @@ void tst_QNetworkReply::postWithTimeout() QCOMPARE(waitForFinish(reply), int(Success)); QCOMPARE(spy.count(), 0); - QVERIFY(reply->networkError() == QNetworkReply::NoError); + QVERIFY(reply->error() == QNetworkReply::NoError); request.setTransferTimeout(1000); server.stopTransfer = true; @@ -9448,7 +9453,7 @@ void tst_QNetworkReply::postWithTimeout() QCOMPARE(waitForFinish(reply2), int(Failure)); QCOMPARE(spy2.count(), 1); - QVERIFY(reply2->networkError() == QNetworkReply::OperationCanceledError); + QVERIFY(reply2->error() == QNetworkReply::OperationCanceledError); request.setTransferTimeout(0); manager.setTransferTimeout(1000); @@ -9459,7 +9464,7 @@ void tst_QNetworkReply::postWithTimeout() QCOMPARE(waitForFinish(reply3), int(Failure)); QCOMPARE(spy3.count(), 1); - QVERIFY(reply3->networkError() == QNetworkReply::OperationCanceledError); + QVERIFY(reply3->error() == QNetworkReply::OperationCanceledError); manager.setTransferTimeout(0); } diff --git a/tests/auto/network/socket/qhttpsocketengine/tst_qhttpsocketengine.cpp b/tests/auto/network/socket/qhttpsocketengine/tst_qhttpsocketengine.cpp index 1931df3d07..2d0d9f5ffc 100644 --- a/tests/auto/network/socket/qhttpsocketengine/tst_qhttpsocketengine.cpp +++ b/tests/auto/network/socket/qhttpsocketengine/tst_qhttpsocketengine.cpp @@ -270,12 +270,12 @@ void tst_QHttpSocketEngine::errorTest() socket.setProxy(QNetworkProxy(QNetworkProxy::HttpProxy, hostname, port, username, username)); socket.connectToHost("0.1.2.3", 12345); - connect(&socket, SIGNAL(error(QAbstractSocket::SocketError)), + connect(&socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), &QTestEventLoop::instance(), SLOT(exitLoop())); QTestEventLoop::instance().enterLoop(30); QVERIFY(!QTestEventLoop::instance().timeout()); - QCOMPARE(int(socket.socketError()), expectedError); + QCOMPARE(int(socket.error()), expectedError); } //--------------------------------------------------------------------------- diff --git a/tests/auto/network/socket/qsocks5socketengine/tst_qsocks5socketengine.cpp b/tests/auto/network/socket/qsocks5socketengine/tst_qsocks5socketengine.cpp index da9cdee691..85eec6e783 100644 --- a/tests/auto/network/socket/qsocks5socketengine/tst_qsocks5socketengine.cpp +++ b/tests/auto/network/socket/qsocks5socketengine/tst_qsocks5socketengine.cpp @@ -283,12 +283,12 @@ void tst_QSocks5SocketEngine::errorTest() socket.setProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, hostname, port, username, username)); socket.connectToHost("0.1.2.3", 12345); - connect(&socket, SIGNAL(error(QAbstractSocket::SocketError)), + connect(&socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), &QTestEventLoop::instance(), SLOT(exitLoop())); QTestEventLoop::instance().enterLoop(10); QVERIFY(!QTestEventLoop::instance().timeout()); - QCOMPARE(int(socket.socketError()), expectedError); + QCOMPARE(int(socket.error()), expectedError); } //--------------------------------------------------------------------------- @@ -753,7 +753,7 @@ void tst_QSocks5SocketEngine::downloadBigFile() QTestEventLoop::instance().exitLoop(); }); - connect(&socket, QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error), + connect(&socket, &QAbstractSocket::errorOccurred, [&socket, &stopWatch] (QAbstractSocket::SocketError errorCode) { qWarning().noquote().nospace() << QTest::currentTestFunction() @@ -1006,12 +1006,12 @@ void tst_QSocks5SocketEngine::incomplete() connect(&socket, SIGNAL(connected()), &QTestEventLoop::instance(), SLOT(exitLoop())); - connect(&socket, SIGNAL(error(QAbstractSocket::SocketError)), + connect(&socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), &QTestEventLoop::instance(), SLOT(exitLoop())); QTestEventLoop::instance().enterLoop(70); QVERIFY(!QTestEventLoop::instance().timeout()); - QCOMPARE(socket.socketError(), QAbstractSocket::ProxyConnectionClosedError); + QCOMPARE(socket.error(), QAbstractSocket::ProxyConnectionClosedError); } //---------------------------------------------------------------------------------- diff --git a/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp b/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp index 099aa5fb51..6dd390ccbd 100644 --- a/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp +++ b/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp @@ -493,7 +493,7 @@ void tst_QTcpSocket::constructing() QCOMPARE(socket->peerAddress(), QHostAddress()); QCOMPARE(socket->readChannelCount(), 0); QCOMPARE(socket->writeChannelCount(), 0); - QCOMPARE(socket->socketError(), QTcpSocket::UnknownSocketError); + QCOMPARE(socket->error(), QTcpSocket::UnknownSocketError); QCOMPARE(socket->errorString(), QString("Unknown error")); // Check the state of the socket layer? @@ -603,7 +603,7 @@ void tst_QTcpSocket::bind() } bool bindSuccess = socket->bind(addr, port); - if (!bindSuccess && randomPort && socket->socketError() == QTcpSocket::AddressInUseError) { + if (!bindSuccess && randomPort && socket->error() == QTcpSocket::AddressInUseError) { // we may have been unlucky and hit an already open port, so try another --attemptsLeft; continue; @@ -730,7 +730,7 @@ void tst_QTcpSocket::setInvalidSocketDescriptor() QVERIFY(!socket->setSocketDescriptor(-5, QTcpSocket::UnconnectedState)); QCOMPARE(socket->socketDescriptor(), (qintptr)-1); - QCOMPARE(socket->socketError(), QTcpSocket::UnsupportedSocketOperationError); + QCOMPARE(socket->error(), QTcpSocket::UnsupportedSocketOperationError); delete socket; } @@ -893,7 +893,7 @@ void tst_QTcpSocket::hostNotFound() "when we expect 404", Continue); } #endif - QCOMPARE(int(socket->socketError()), int(QTcpSocket::HostNotFoundError)); + QCOMPARE(int(socket->error()), int(QTcpSocket::HostNotFoundError)); delete socket; } @@ -919,7 +919,7 @@ void tst_QTcpSocket::timeoutConnect() QVERIFY(timer.elapsed() < 150); QVERIFY(!socket->waitForConnected(1000)); //200ms is too short when using SOCKS proxy authentication QCOMPARE(socket->state(), QTcpSocket::UnconnectedState); - QCOMPARE(int(socket->socketError()), int(QTcpSocket::SocketTimeoutError)); + QCOMPARE(int(socket->error()), int(QTcpSocket::SocketTimeoutError)); QCOMPARE(socket->readChannelCount(), 0); QCOMPARE(socket->writeChannelCount(), 0); @@ -1238,7 +1238,7 @@ void tst_QTcpSocket::openCloseOpenClose() QCOMPARE(socket->localAddress(), QHostAddress()); QCOMPARE((int) socket->peerPort(), 0); QCOMPARE(socket->peerAddress(), QHostAddress()); - QCOMPARE(socket->socketError(), QTcpSocket::UnknownSocketError); + QCOMPARE(socket->error(), QTcpSocket::UnknownSocketError); QCOMPARE(socket->errorString(), QString("Unknown error")); QCOMPARE(socket->state(), QTcpSocket::UnconnectedState); @@ -1392,7 +1392,7 @@ protected: while (!quit) { if (socket->waitForDisconnected(500)) break; - if (socket->socketError() != QAbstractSocket::SocketTimeoutError) + if (socket->error() != QAbstractSocket::SocketTimeoutError) return; } @@ -1628,8 +1628,8 @@ void tst_QTcpSocket::readLine() QVERIFY(!socket->waitForReadyRead(100)); QCOMPARE(socket->readLine(buffer, sizeof(buffer)), qint64(0)); - QVERIFY(socket->socketError() == QAbstractSocket::SocketTimeoutError - || socket->socketError() == QAbstractSocket::RemoteHostClosedError); + QVERIFY(socket->error() == QAbstractSocket::SocketTimeoutError + || socket->error() == QAbstractSocket::RemoteHostClosedError); QCOMPARE(socket->bytesAvailable(), qint64(0)); socket->close(); @@ -1778,11 +1778,11 @@ void tst_QTcpSocket::dontCloseOnTimeout() QTcpSocket *socket = newSocket(); socket->connectToHost(serverAddress, server.serverPort()); QVERIFY(!socket->waitForReadyRead(100)); - QCOMPARE(socket->socketError(), QTcpSocket::SocketTimeoutError); + QCOMPARE(socket->error(), QTcpSocket::SocketTimeoutError); QVERIFY(socket->isOpen()); QVERIFY(!socket->waitForDisconnected(100)); - QCOMPARE(socket->socketError(), QTcpSocket::SocketTimeoutError); + QCOMPARE(socket->error(), QTcpSocket::SocketTimeoutError); QVERIFY(socket->isOpen()); delete socket; @@ -2019,14 +2019,14 @@ void tst_QTcpSocket::remoteCloseError() QCOMPARE(clientSocket->bytesAvailable(), qint64(5)); qRegisterMetaType<QAbstractSocket::SocketError>("QAbstractSocket::SocketError"); - QSignalSpy errorSpy(clientSocket, SIGNAL(error(QAbstractSocket::SocketError))); + QSignalSpy errorSpy(clientSocket, SIGNAL(errorOccurred(QAbstractSocket::SocketError))); QSignalSpy disconnectedSpy(clientSocket, SIGNAL(disconnected())); clientSocket->write("World"); serverSocket->disconnectFromHost(); tmpSocket = clientSocket; - connect(clientSocket, SIGNAL(error(QAbstractSocket::SocketError)), + connect(clientSocket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), this, SLOT(remoteCloseErrorSlot())); enterLoop(30); @@ -2034,7 +2034,7 @@ void tst_QTcpSocket::remoteCloseError() QCOMPARE(disconnectedSpy.count(), 1); QCOMPARE(errorSpy.count(), 1); - QCOMPARE(clientSocket->socketError(), QAbstractSocket::RemoteHostClosedError); + QCOMPARE(clientSocket->error(), QAbstractSocket::RemoteHostClosedError); delete serverSocket; @@ -2079,7 +2079,7 @@ void tst_QTcpSocket::nestedEventLoopInErrorSlot() { QTcpSocket *socket = newSocket(); QPointer<QTcpSocket> p(socket); - connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(enterLoopSlot())); + connect(socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), this, SLOT(enterLoopSlot())); socket->connectToHost("hostnotfoundhostnotfound.qt-project.org", 9999); enterLoop(30); @@ -2109,7 +2109,7 @@ void tst_QTcpSocket::connectToHostError() QFETCH(int, port); QFETCH(QAbstractSocket::SocketError, expectedError); - connect(socket, QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error),[&](QAbstractSocket::SocketError socketError){ + connect(socket, &QAbstractSocket::errorOccurred, [&](QAbstractSocket::SocketError socketError){ error = socketError; }); socket->connectToHost(host, port); // no service running here, one suspects @@ -2326,7 +2326,7 @@ void tst_QTcpSocket::abortiveClose() qRegisterMetaType<QAbstractSocket::SocketError>("QAbstractSocket::SocketError"); QSignalSpy readyReadSpy(clientSocket, SIGNAL(readyRead())); - QSignalSpy errorSpy(clientSocket, SIGNAL(error(QAbstractSocket::SocketError))); + QSignalSpy errorSpy(clientSocket, SIGNAL(errorOccurred(QAbstractSocket::SocketError))); connect(clientSocket, SIGNAL(disconnected()), this, SLOT(exitLoopSlot())); QTimer::singleShot(0, this, SLOT(abortiveClose_abortSlot())); @@ -2402,7 +2402,7 @@ void tst_QTcpSocket::zeroAndMinusOneReturns() socket->write("GET / HTTP/1.0\r\n\r\n"); QVERIFY(socket->waitForDisconnected(15000)); - QCOMPARE(socket->socketError(), QAbstractSocket::RemoteHostClosedError); + QCOMPARE(socket->error(), QAbstractSocket::RemoteHostClosedError); QCOMPARE(socket->write("BLUBBER"), qint64(-1)); QVERIFY(socket->getChar(c)); @@ -2439,19 +2439,19 @@ void tst_QTcpSocket::connectionRefused() QTcpSocket *socket = newSocket(); QSignalSpy stateSpy(socket, SIGNAL(stateChanged(QAbstractSocket::SocketState))); - QSignalSpy errorSpy(socket, SIGNAL(error(QAbstractSocket::SocketError))); - connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), + QSignalSpy errorSpy(socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError))); + connect(socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), &QTestEventLoop::instance(), SLOT(exitLoop())); socket->connectToHost(QtNetworkSettings::httpServerName(), 144); enterLoop(10); - disconnect(socket, SIGNAL(error(QAbstractSocket::SocketError)), + disconnect(socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), &QTestEventLoop::instance(), SLOT(exitLoop())); QVERIFY2(!timeout(), "Network timeout"); QCOMPARE(socket->state(), QAbstractSocket::UnconnectedState); - QCOMPARE(socket->socketError(), QAbstractSocket::ConnectionRefusedError); + QCOMPARE(socket->error(), QAbstractSocket::ConnectionRefusedError); QCOMPARE(stateSpy.count(), 3); QCOMPARE(qvariant_cast<QAbstractSocket::SocketState>(stateSpy.at(0).at(0)), QAbstractSocket::HostLookupState); @@ -2574,7 +2574,7 @@ void tst_QTcpSocket::connectToMultiIP() socket->connectToHost("multi.dev.qt-project.org", 81); QVERIFY(!socket->waitForConnected(2000)); QVERIFY(stopWatch.elapsed() < 2000); - QCOMPARE(socket->socketError(), QAbstractSocket::SocketTimeoutError); + QCOMPARE(socket->error(), QAbstractSocket::SocketTimeoutError); delete socket; #endif @@ -2760,7 +2760,7 @@ void tst_QTcpSocket::taskQtBug5799ConnectionErrorWaitForConnected() socket.waitForConnected(10000); QVERIFY2(timer.elapsed() < 9900, "Connection to closed port timed out instead of refusing, something is wrong"); QVERIFY2(socket.state() == QAbstractSocket::UnconnectedState, "Socket connected unexpectedly!"); - QVERIFY2(socket.socketError() == QAbstractSocket::ConnectionRefusedError, + QVERIFY2(socket.error() == QAbstractSocket::ConnectionRefusedError, QString("Could not reach server: %1").arg(socket.errorString()).toLocal8Bit()); } @@ -2773,13 +2773,13 @@ void tst_QTcpSocket::taskQtBug5799ConnectionErrorEventLoop() // check that we get a proper error connecting to port 12346 // This testcase uses an event loop QTcpSocket socket; - connect(&socket, SIGNAL(error(QAbstractSocket::SocketError)), &QTestEventLoop::instance(), SLOT(exitLoop())); + connect(&socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), &QTestEventLoop::instance(), SLOT(exitLoop())); socket.connectToHost(QtNetworkSettings::httpServerName(), 12346); QTestEventLoop::instance().enterLoop(10); QVERIFY2(!QTestEventLoop::instance().timeout(), "Connection to closed port timed out instead of refusing, something is wrong"); QVERIFY2(socket.state() == QAbstractSocket::UnconnectedState, "Socket connected unexpectedly!"); - QVERIFY2(socket.socketError() == QAbstractSocket::ConnectionRefusedError, + QVERIFY2(socket.error() == QAbstractSocket::ConnectionRefusedError, QString("Could not reach server: %1").arg(socket.errorString()).toLocal8Bit()); } @@ -2789,12 +2789,12 @@ void tst_QTcpSocket::taskQtBug7054TimeoutErrorResetting() socket->connectToHost(QtNetworkSettings::httpServerName(), 443); QVERIFY(socket->waitForConnected(5*1000)); - QCOMPARE(socket->socketError(), QAbstractSocket::UnknownSocketError); + QCOMPARE(socket->error(), QAbstractSocket::UnknownSocketError); // We connected to the HTTPS port. Wait two seconds to receive data. We will receive // nothing because we would need to start the SSL handshake QVERIFY(!socket->waitForReadyRead(2*1000)); - QCOMPARE(socket->socketError(), QAbstractSocket::SocketTimeoutError); + QCOMPARE(socket->error(), QAbstractSocket::SocketTimeoutError); // Now write some crap to make the server disconnect us. 4 lines are enough. socket->write("a\r\nb\r\nc\r\nd\r\n"); @@ -2804,7 +2804,7 @@ void tst_QTcpSocket::taskQtBug7054TimeoutErrorResetting() // should get a better error since the server disconnected us QVERIFY(!socket->waitForReadyRead(2*1000)); // It must NOT be the SocketTimeoutError that had been set before - QCOMPARE(socket->socketError(), QAbstractSocket::RemoteHostClosedError); + QCOMPARE(socket->error(), QAbstractSocket::RemoteHostClosedError); } #ifndef QT_NO_NETWORKPROXY @@ -2862,7 +2862,7 @@ void tst_QTcpSocket::invalidProxy() // note: the following test is not a hard failure. // Sometimes, error codes change for the better - QTEST(int(socket->socketError()), "expectedError"); + QTEST(int(socket->error()), "expectedError"); delete socket; } @@ -2982,7 +2982,7 @@ void tst_QTcpSocket::proxyFactory() // note: the following test is not a hard failure. // Sometimes, error codes change for the better - QTEST(int(socket->socketError()), "expectedError"); + QTEST(int(socket->error()), "expectedError"); delete socket; } @@ -3209,7 +3209,7 @@ void tst_QTcpSocket::readNotificationsAfterBind() QAbstractSocket socket(QAbstractSocket::TcpSocket, nullptr); QVERIFY2(socket.bind(), "Bind error!"); - connect(&socket, SIGNAL(error(QAbstractSocket::SocketError)), &QTestEventLoop::instance(), SLOT(exitLoop())); + connect(&socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), &QTestEventLoop::instance(), SLOT(exitLoop())); QSignalSpy spyReadyRead(&socket, SIGNAL(readyRead())); socket.connectToHost(QtNetworkSettings::serverName(), 12346); diff --git a/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp b/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp index 88898cd8a8..cc41260d59 100644 --- a/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp +++ b/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp @@ -337,7 +337,7 @@ void tst_QUdpSocket::constructing() QCOMPARE(socket.canReadLine(), false); QCOMPARE(socket.readLine(), QByteArray()); QCOMPARE(socket.socketDescriptor(), (qintptr)-1); - QCOMPARE(socket.socketError(), QUdpSocket::UnknownSocketError); + QCOMPARE(socket.error(), QUdpSocket::UnknownSocketError); QCOMPARE(socket.errorString(), QString("Unknown error")); // Check the state of the socket api @@ -575,7 +575,7 @@ void tst_QUdpSocket::ipv6Loop() int paulPort; if (!peter.bind(QHostAddress(QHostAddress::LocalHostIPv6), 0)) { - QCOMPARE(peter.socketError(), QUdpSocket::UnsupportedSocketOperationError); + QCOMPARE(peter.error(), QUdpSocket::UnsupportedSocketOperationError); return; } @@ -883,7 +883,7 @@ void tst_QUdpSocket::writeDatagram() qRegisterMetaType<QAbstractSocket::SocketError>("QAbstractSocket::SocketError"); for(int i=0;;i++) { - QSignalSpy errorspy(&client, SIGNAL(error(QAbstractSocket::SocketError))); + QSignalSpy errorspy(&client, SIGNAL(errorOccurred(QAbstractSocket::SocketError))); QSignalSpy bytesspy(&client, SIGNAL(bytesWritten(qint64))); qint64 written = client.writeDatagram(QByteArray(i * 1024, 'w'), serverAddress, @@ -897,7 +897,7 @@ void tst_QUdpSocket::writeDatagram() QCOMPARE(errorspy.count(), 1); QCOMPARE(*static_cast<const int *>(errorspy.at(0).at(0).constData()), int(QUdpSocket::DatagramTooLargeError)); - QCOMPARE(client.socketError(), QUdpSocket::DatagramTooLargeError); + QCOMPARE(client.error(), QUdpSocket::DatagramTooLargeError); break; } QCOMPARE(bytesspy.count(), 1); @@ -1044,7 +1044,7 @@ void tst_QUdpSocket::writeToNonExistingPeer() QUdpSocket sConnected; QSignalSpy sConnectedReadyReadSpy(&sConnected, SIGNAL(readyRead())); - QSignalSpy sConnectedErrorSpy(&sConnected, SIGNAL(error(QAbstractSocket::SocketError))); + QSignalSpy sConnectedErrorSpy(&sConnected, SIGNAL(errorOccurred(QAbstractSocket::SocketError))); sConnected.connectToHost(peerAddress, peerPort, QIODevice::ReadWrite); QVERIFY(sConnected.waitForConnected(10000)); @@ -1054,14 +1054,14 @@ void tst_QUdpSocket::writeToNonExistingPeer() // the second one should fail! QTest::qSleep(1000); // do not process events QCOMPARE(sConnected.write("", 1), qint64(-1)); - QCOMPARE(int(sConnected.socketError()), int(QUdpSocket::ConnectionRefusedError)); + QCOMPARE(int(sConnected.error()), int(QUdpSocket::ConnectionRefusedError)); // the third one will succeed... QCOMPARE(sConnected.write("", 1), qint64(1)); QTestEventLoop::instance().enterLoop(1); QCOMPARE(sConnectedReadyReadSpy.count(), 0); QCOMPARE(sConnectedErrorSpy.count(), 1); - QCOMPARE(int(sConnected.socketError()), int(QUdpSocket::ConnectionRefusedError)); + QCOMPARE(int(sConnected.error()), int(QUdpSocket::ConnectionRefusedError)); // we should now get a read error QCOMPARE(sConnected.write("", 1), qint64(1)); @@ -1071,12 +1071,12 @@ void tst_QUdpSocket::writeToNonExistingPeer() QCOMPARE(sConnected.bytesAvailable(), Q_INT64_C(0)); QCOMPARE(sConnected.pendingDatagramSize(), Q_INT64_C(-1)); QCOMPARE(sConnected.readDatagram(buf, 2), Q_INT64_C(-1)); - QCOMPARE(int(sConnected.socketError()), int(QUdpSocket::ConnectionRefusedError)); + QCOMPARE(int(sConnected.error()), int(QUdpSocket::ConnectionRefusedError)); QCOMPARE(sConnected.write("", 1), qint64(1)); QTest::qSleep(1000); // do not process events QCOMPARE(sConnected.read(buf, 2), Q_INT64_C(0)); - QCOMPARE(int(sConnected.socketError()), int(QUdpSocket::ConnectionRefusedError)); + QCOMPARE(int(sConnected.error()), int(QUdpSocket::ConnectionRefusedError)); // we should still be connected QCOMPARE(int(sConnected.state()), int(QUdpSocket::ConnectedState)); diff --git a/tests/auto/network/ssl/qocsp/tst_qocsp.cpp b/tests/auto/network/ssl/qocsp/tst_qocsp.cpp index 8e579f7b5e..27476f451e 100644 --- a/tests/auto/network/ssl/qocsp/tst_qocsp.cpp +++ b/tests/auto/network/ssl/qocsp/tst_qocsp.cpp @@ -409,7 +409,7 @@ private: static QString certDirPath; - void (QSslSocket::*socketErrorSignal)(QAbstractSocket::SocketError) = &QAbstractSocket::error; + void (QSslSocket::*socketErrorSignal)(QAbstractSocket::SocketError) = &QAbstractSocket::errorOccurred; void (QSslSocket::*tlsErrorsSignal)(const QList<QSslError> &) = &QSslSocket::sslErrors; void (QTestEventLoop::*exitLoopSlot)() = &QTestEventLoop::exitLoop; @@ -605,7 +605,7 @@ void tst_QOcsp::malformedResponse() loop.enterLoopMSecs(handshakeTimeoutMS); QVERIFY(!clientSocket.isEncrypted()); - QCOMPARE(clientSocket.socketError(), QAbstractSocket::SslHandshakeFailedError); + QCOMPARE(clientSocket.error(), QAbstractSocket::SslHandshakeFailedError); } void tst_QOcsp::expiredResponse_data() diff --git a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp index 18b449a953..c793a6a98b 100644 --- a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp +++ b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp @@ -533,7 +533,7 @@ void tst_QSslSocket::constructing() QCOMPARE(socket.write(0, 0), qint64(-1)); QTest::ignoreMessage(QtWarningMsg, writeNotOpenMessage); QCOMPARE(socket.write(QByteArray()), qint64(-1)); - QCOMPARE(socket.socketError(), QAbstractSocket::UnknownSocketError); + QCOMPARE(socket.error(), QAbstractSocket::UnknownSocketError); QVERIFY(!socket.flush()); QVERIFY(!socket.isValid()); QCOMPARE(socket.localAddress(), QHostAddress()); @@ -1229,7 +1229,7 @@ protected: configuration.setProtocol(protocol); if (ignoreSslErrors) connect(socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot())); - connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SIGNAL(socketError(QAbstractSocket::SocketError))); + connect(socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), this, SIGNAL(socketError(QAbstractSocket::SocketError))); connect(socket, &QSslSocket::alertReceived, this, &SslServer::gotAlert); connect(socket, &QSslSocket::alertSent, this, &SslServer::alertSent); @@ -1360,8 +1360,8 @@ void tst_QSslSocket::protocolServerSide() socket = &client; QFETCH(QSsl::SslProtocol, clientProtocol); socket->setProtocol(clientProtocol); - // upon SSL wrong version error, error will be triggered, not sslErrors - connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), &loop, SLOT(quit())); + // upon SSL wrong version error, errorOccurred will be triggered, not sslErrors + connect(socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), &loop, SLOT(quit())); connect(socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot())); connect(socket, SIGNAL(encrypted()), &loop, SLOT(quit())); @@ -1373,16 +1373,16 @@ void tst_QSslSocket::protocolServerSide() QAbstractSocket::SocketState expectedState = (works) ? QAbstractSocket::ConnectedState : QAbstractSocket::UnconnectedState; // Determine whether the client or the server caused the event loop // to quit due to a socket error, and investigate the culprit. - if (client.socketError() != QAbstractSocket::UnknownSocketError) { + if (client.error() != QAbstractSocket::UnknownSocketError) { // It can happen that the client, after TCP connection established, before // incomingConnection() slot fired, hits TLS initialization error and stops // the loop, so the server socket is not created yet. if (server.socket) - QVERIFY(server.socket->socketError() == QAbstractSocket::UnknownSocketError); + QVERIFY(server.socket->error() == QAbstractSocket::UnknownSocketError); QCOMPARE(client.state(), expectedState); - } else if (server.socket->socketError() != QAbstractSocket::UnknownSocketError) { - QVERIFY(client.socketError() == QAbstractSocket::UnknownSocketError); + } else if (server.socket->error() != QAbstractSocket::UnknownSocketError) { + QVERIFY(client.error() == QAbstractSocket::UnknownSocketError); QCOMPARE(server.socket->state(), expectedState); } @@ -1421,8 +1421,8 @@ void tst_QSslSocket::serverCipherPreferences() sslConfig.setCiphers({QSslCipher("AES256-SHA"), QSslCipher("AES128-SHA")}); socket->setSslConfiguration(sslConfig); - // upon SSL wrong version error, error will be triggered, not sslErrors - connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), &loop, SLOT(quit())); + // upon SSL wrong version error, errorOccurred will be triggered, not sslErrors + connect(socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), &loop, SLOT(quit())); connect(socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot())); connect(socket, SIGNAL(encrypted()), &loop, SLOT(quit())); @@ -1453,8 +1453,8 @@ void tst_QSslSocket::serverCipherPreferences() sslConfig.setCiphers({QSslCipher("AES256-SHA"), QSslCipher("AES128-SHA")}); socket->setSslConfiguration(sslConfig); - // upon SSL wrong version error, error will be triggered, not sslErrors - connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), &loop, SLOT(quit())); + // upon SSL wrong version error, errorOccurred will be triggered, not sslErrors + connect(socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), &loop, SLOT(quit())); connect(socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot())); connect(socket, SIGNAL(encrypted()), &loop, SLOT(quit())); @@ -1544,7 +1544,7 @@ void tst_QSslSocket::setLocalCertificateChain() const QScopedPointer<QSslSocket, QScopedPointerDeleteLater> client(new QSslSocket); socket = client.data(); connect(socket, SIGNAL(encrypted()), &loop, SLOT(quit())); - connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), &loop, SLOT(quit())); + connect(socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), &loop, SLOT(quit())); connect(socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot())); socket->connectToHostEncrypted(QHostAddress(QHostAddress::LocalHost).toString(), server.serverPort()); @@ -1994,7 +1994,7 @@ void tst_QSslSocket::setEmptyKey() QTestEventLoop::instance().enterLoop(2); QCOMPARE(socket.state(), QAbstractSocket::ConnectedState); - QCOMPARE(socket.socketError(), QAbstractSocket::UnknownSocketError); + QCOMPARE(socket.error(), QAbstractSocket::UnknownSocketError); } void tst_QSslSocket::spontaneousWrite() @@ -2534,8 +2534,8 @@ void tst_QSslSocket::closeWhileEmittingSocketError() clientConfig.setPeerVerifyMode(QSslSocket::VerifyNone); clientSocket.setSslConfiguration(clientConfig); - QSignalSpy socketErrorSpy(&clientSocket, SIGNAL(error(QAbstractSocket::SocketError))); - void (QSslSocket::*errorSignal)(QAbstractSocket::SocketError) = &QSslSocket::error; + QSignalSpy socketErrorSpy(&clientSocket, SIGNAL(errorOccurred(QAbstractSocket::SocketError))); + void (QSslSocket::*errorSignal)(QAbstractSocket::SocketError) = &QSslSocket::errorOccurred; connect(&clientSocket, errorSignal, &handshake, &BrokenPskHandshake::socketError); clientSocket.connectToHostEncrypted(QStringLiteral("127.0.0.1"), handshake.serverPort()); @@ -2635,7 +2635,7 @@ void tst_QSslSocket::ignoreSslErrorsList() socket.ignoreSslErrors(expectedSslErrors); QFETCH(int, expectedSslErrorSignalCount); - QSignalSpy sslErrorsSpy(&socket, SIGNAL(error(QAbstractSocket::SocketError))); + QSignalSpy sslErrorsSpy(&socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError))); socket.connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443); @@ -2766,11 +2766,11 @@ void tst_QSslSocket::writeBigChunk() // no better way to do this right now since the error is the same as the default error. if (socket->errorString().startsWith(QLatin1String("Unable to write data"))) { - qWarning() << socket->socketError() << socket->errorString(); + qWarning() << socket->error() << socket->errorString(); QFAIL("Error while writing! Check if the OpenSSL BIO size is limited?!"); } // also check the error string. If another error (than UnknownError) occurred, it should be different than before - QVERIFY2(errorBefore == errorAfter || socket->socketError() == QAbstractSocket::RemoteHostClosedError, + QVERIFY2(errorBefore == errorAfter || socket->error() == QAbstractSocket::RemoteHostClosedError, QByteArray("unexpected error: ").append(qPrintable(errorAfter))); // check that everything has been written to OpenSSL @@ -2929,13 +2929,13 @@ void tst_QSslSocket::resume() QSignalSpy sslErrorSpy(&socket, SIGNAL(sslErrors(QList<QSslError>))); QSignalSpy encryptedSpy(&socket, SIGNAL(encrypted())); - QSignalSpy errorSpy(&socket, SIGNAL(error(QAbstractSocket::SocketError))); + QSignalSpy errorSpy(&socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError))); connect(&socket, SIGNAL(sslErrors(QList<QSslError>)), &QTestEventLoop::instance(), SLOT(exitLoop())); connect(&socket, SIGNAL(encrypted()), &QTestEventLoop::instance(), SLOT(exitLoop())); connect(&socket, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)), this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*))); - connect(&socket, SIGNAL(error(QAbstractSocket::SocketError)), &QTestEventLoop::instance(), SLOT(exitLoop())); + connect(&socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), &QTestEventLoop::instance(), SLOT(exitLoop())); socket.connectToHostEncrypted(QtNetworkSettings::imapServerName(), 993); QTestEventLoop::instance().enterLoop(10); @@ -2965,7 +2965,7 @@ void tst_QSslSocket::resume() QCOMPARE(encryptedSpy.count(), 0); QVERIFY(!socket.isEncrypted()); QCOMPARE(errorSpy.count(), 1); - QCOMPARE(socket.socketError(), QAbstractSocket::SslHandshakeFailedError); + QCOMPARE(socket.error(), QAbstractSocket::SslHandshakeFailedError); } } @@ -3246,7 +3246,7 @@ void tst_QSslSocket::dhServer() QSslSocket client; socket = &client; - connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), &loop, SLOT(quit())); + connect(socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), &loop, SLOT(quit())); connect(socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot())); connect(socket, SIGNAL(encrypted()), &loop, SLOT(quit())); @@ -3280,7 +3280,7 @@ void tst_QSslSocket::dhServerCustomParamsNull() QSslSocket client; socket = &client; - connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), &loop, SLOT(quit())); + connect(socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), &loop, SLOT(quit())); connect(socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot())); connect(socket, SIGNAL(encrypted()), &loop, SLOT(quit())); @@ -3325,7 +3325,7 @@ void tst_QSslSocket::dhServerCustomParams() QSslSocket client; socket = &client; - connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), &loop, SLOT(quit())); + connect(socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), &loop, SLOT(quit())); connect(socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot())); connect(socket, SIGNAL(encrypted()), &loop, SLOT(quit())); @@ -3360,7 +3360,7 @@ void tst_QSslSocket::ecdhServer() QSslSocket client; socket = &client; - connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), &loop, SLOT(quit())); + connect(socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), &loop, SLOT(quit())); connect(socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot())); connect(socket, SIGNAL(encrypted()), &loop, SLOT(quit())); @@ -3552,7 +3552,7 @@ void tst_QSslSocket::readBufferMaxSize() QSslSocketPtr client(new QSslSocket); socket = client.data(); - connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), &loop, SLOT(quit())); + connect(socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), &loop, SLOT(quit())); connect(socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot())); connect(socket, SIGNAL(encrypted()), &loop, SLOT(quit())); @@ -3813,7 +3813,7 @@ void tst_QSslSocket::simplePskConnect() QSignalSpy sslErrorsSpy(&socket, SIGNAL(sslErrors(QList<QSslError>))); QVERIFY(sslErrorsSpy.isValid()); - QSignalSpy socketErrorsSpy(&socket, SIGNAL(error(QAbstractSocket::SocketError))); + QSignalSpy socketErrorsSpy(&socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError))); QVERIFY(socketErrorsSpy.isValid()); QSignalSpy peerVerifyErrorSpy(&socket, SIGNAL(peerVerifyError(QSslError))); @@ -3827,7 +3827,7 @@ void tst_QSslSocket::simplePskConnect() connect(&socket, SIGNAL(modeChanged(QSslSocket::SslMode)), this, SLOT(exitLoop())); connect(&socket, SIGNAL(encrypted()), this, SLOT(exitLoop())); connect(&socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(exitLoop())); - connect(&socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(exitLoop())); + connect(&socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), this, SLOT(exitLoop())); connect(&socket, SIGNAL(peerVerifyError(QSslError)), this, SLOT(exitLoop())); connect(&socket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(exitLoop())); @@ -4095,7 +4095,7 @@ void tst_QSslSocket::pskServer() connect(&socket, SIGNAL(modeChanged(QSslSocket::SslMode)), this, SLOT(exitLoop())); connect(&socket, SIGNAL(encrypted()), this, SLOT(exitLoop())); connect(&socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(exitLoop())); - connect(&socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(exitLoop())); + connect(&socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), this, SLOT(exitLoop())); connect(&socket, SIGNAL(peerVerifyError(QSslError)), this, SLOT(exitLoop())); connect(&socket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(exitLoop())); @@ -4275,7 +4275,7 @@ void tst_QSslSocket::signatureAlgorithm() QEventLoop loop; QTimer::singleShot(5000, &loop, &QEventLoop::quit); - connect(socket, QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error), &loop, &QEventLoop::quit); + connect(socket, &QAbstractSocket::errorOccurred, &loop, &QEventLoop::quit); connect(socket, QOverload<const QList<QSslError> &>::of(&QSslSocket::sslErrors), this, &tst_QSslSocket::ignoreErrorSlot); connect(socket, &QSslSocket::encrypted, &loop, &QEventLoop::quit); @@ -4333,9 +4333,9 @@ void tst_QSslSocket::unsupportedProtocols() // early, preventing any real connection from ever starting. QSslSocket socket; socket.setProtocol(unsupportedProtocol); - QCOMPARE(socket.socketError(), QAbstractSocket::UnknownSocketError); + QCOMPARE(socket.error(), QAbstractSocket::UnknownSocketError); socket.connectToHostEncrypted(QStringLiteral("doesnotmatter.org"), 1010); - QCOMPARE(socket.socketError(), QAbstractSocket::SslInvalidUserDataError); + QCOMPARE(socket.error(), QAbstractSocket::SslInvalidUserDataError); QCOMPARE(socket.state(), QAbstractSocket::UnconnectedState); } { @@ -4345,14 +4345,14 @@ void tst_QSslSocket::unsupportedProtocols() QVERIFY(server.listen()); QSslSocket socket; - QCOMPARE(socket.socketError(), QAbstractSocket::UnknownSocketError); + QCOMPARE(socket.error(), QAbstractSocket::UnknownSocketError); socket.connectToHost(QHostAddress::LocalHost, server.serverPort()); QVERIFY(socket.waitForConnected(timeoutMS)); socket.setProtocol(unsupportedProtocol); socket.startClientEncryption(); - QCOMPARE(socket.socketError(), QAbstractSocket::SslInvalidUserDataError); + QCOMPARE(socket.error(), QAbstractSocket::SslInvalidUserDataError); } { // 2. waitForEncrypted: client-side, blocking API plus requires from us @@ -4376,7 +4376,7 @@ void tst_QSslSocket::unsupportedProtocols() loop.enterLoopMSecs(timeoutMS); QVERIFY(!loop.timeout()); QVERIFY(server.socket); - QCOMPARE(server.socket->socketError(), QAbstractSocket::SslInvalidUserDataError); + QCOMPARE(server.socket->error(), QAbstractSocket::SslInvalidUserDataError); } } diff --git a/tests/auto/other/networkselftest/tst_networkselftest.cpp b/tests/auto/other/networkselftest/tst_networkselftest.cpp index 0f50718328..396e23da0c 100644 --- a/tests/auto/other/networkselftest/tst_networkselftest.cpp +++ b/tests/auto/other/networkselftest/tst_networkselftest.cpp @@ -428,7 +428,7 @@ void tst_NetworkSelfTest::serverReachability() QVERIFY2(timer.elapsed() < 9900, "Connection to closed port timed out instead of refusing, something is wrong"); QVERIFY2(socket.state() == QAbstractSocket::UnconnectedState, "Socket connected unexpectedly!"); - QVERIFY2(socket.socketError() == QAbstractSocket::ConnectionRefusedError, + QVERIFY2(socket.error() == QAbstractSocket::ConnectionRefusedError, QString("Could not reach server: %1").arg(socket.errorString()).toLocal8Bit()); } @@ -458,7 +458,7 @@ void tst_NetworkSelfTest::remotePortsOpen() socket.connectToHost(QtNetworkSettings::serverName(), portNumber); if (!socket.waitForConnected(10000)) { - if (socket.socketError() == QAbstractSocket::SocketTimeoutError) + if (socket.error() == QAbstractSocket::SocketTimeoutError) QFAIL(QString("Network timeout connecting to the server on port %1").arg(portNumber).toLocal8Bit()); else QFAIL(QString("Error connecting to server on port %1: %2").arg(portNumber).arg(socket.errorString()).toLocal8Bit()); diff --git a/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp b/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp index dae274a8b6..5b7ded0ecb 100644 --- a/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp +++ b/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp @@ -586,7 +586,7 @@ void tst_QWizard::addPage() #define CHECK_VISITED(wizard, list) \ do { \ QList<int> myList = list; \ - QCOMPARE((wizard).visitedPages(), myList); \ + QCOMPARE((wizard).visitedIds(), myList); \ Q_FOREACH(int id, myList) \ QVERIFY((wizard).hasVisitedPage(id)); \ } while (0) @@ -2293,7 +2293,7 @@ void tst_QWizard::removePage() wizard.restart(); QCOMPARE(wizard.pageIds().size(), 4); - QCOMPARE(wizard.visitedPages().size(), 1); + QCOMPARE(wizard.visitedIds().size(), 1); QCOMPARE(spy.count(), 0); // Removing a non-existent page @@ -2331,14 +2331,14 @@ void tst_QWizard::removePage() wizard.setPage(2, page2); // restore wizard.restart(); wizard.next(); - QCOMPARE(wizard.visitedPages().size(), 2); + QCOMPARE(wizard.visitedIds().size(), 2); QCOMPARE(wizard.currentPage(), page1); QCOMPARE(spy.count(), 0); wizard.removePage(2); QCOMPARE(spy.count(), 1); arguments = spy.takeFirst(); QCOMPARE(arguments.at(0).toInt(), 2); - QCOMPARE(wizard.visitedPages().size(), 2); + QCOMPARE(wizard.visitedIds().size(), 2); QVERIFY(!wizard.pageIds().contains(2)); QCOMPARE(wizard.currentPage(), page1); @@ -2347,14 +2347,14 @@ void tst_QWizard::removePage() wizard.restart(); wizard.next(); QCOMPARE(spy.count(), 0); - QCOMPARE(wizard.visitedPages().size(), 2); + QCOMPARE(wizard.visitedIds().size(), 2); QCOMPARE(wizard.currentPage(), page1); wizard.removePage(0); QCOMPARE(spy.count(), 1); arguments = spy.takeFirst(); QCOMPARE(arguments.at(0).toInt(), 0); - QCOMPARE(wizard.visitedPages().size(), 1); - QVERIFY(!wizard.visitedPages().contains(0)); + QCOMPARE(wizard.visitedIds().size(), 1); + QVERIFY(!wizard.visitedIds().contains(0)); QVERIFY(!wizard.pageIds().contains(0)); QCOMPARE(wizard.currentPage(), page1); @@ -2363,14 +2363,14 @@ void tst_QWizard::removePage() wizard.restart(); wizard.next(); QCOMPARE(spy.count(), 0); - QCOMPARE(wizard.visitedPages().size(), 2); + QCOMPARE(wizard.visitedIds().size(), 2); QCOMPARE(wizard.currentPage(), page1); wizard.removePage(1); QCOMPARE(spy.count(), 1); arguments = spy.takeFirst(); QCOMPARE(arguments.at(0).toInt(), 1); - QCOMPARE(wizard.visitedPages().size(), 1); - QVERIFY(!wizard.visitedPages().contains(1)); + QCOMPARE(wizard.visitedIds().size(), 1); + QVERIFY(!wizard.visitedIds().contains(1)); QVERIFY(!wizard.pageIds().contains(1)); QCOMPARE(wizard.currentPage(), page0); @@ -2379,8 +2379,8 @@ void tst_QWizard::removePage() QCOMPARE(spy.count(), 1); arguments = spy.takeFirst(); QCOMPARE(arguments.at(0).toInt(), 0); - QCOMPARE(wizard.visitedPages().size(), 1); - QVERIFY(!wizard.visitedPages().contains(0)); + QCOMPARE(wizard.visitedIds().size(), 1); + QVERIFY(!wizard.visitedIds().contains(0)); QCOMPARE(wizard.pageIds().size(), 2); QVERIFY(!wizard.pageIds().contains(0)); QCOMPARE(wizard.currentPage(), page2); @@ -2389,8 +2389,8 @@ void tst_QWizard::removePage() QCOMPARE(spy.count(), 1); arguments = spy.takeFirst(); QCOMPARE(arguments.at(0).toInt(), 2); - QCOMPARE(wizard.visitedPages().size(), 1); - QVERIFY(!wizard.visitedPages().contains(2)); + QCOMPARE(wizard.visitedIds().size(), 1); + QVERIFY(!wizard.visitedIds().contains(2)); QCOMPARE(wizard.pageIds().size(), 1); QVERIFY(!wizard.pageIds().contains(2)); QCOMPARE(wizard.currentPage(), page3); @@ -2399,7 +2399,7 @@ void tst_QWizard::removePage() QCOMPARE(spy.count(), 1); arguments = spy.takeFirst(); QCOMPARE(arguments.at(0).toInt(), 3); - QVERIFY(wizard.visitedPages().empty()); + QVERIFY(wizard.visitedIds().empty()); QVERIFY(wizard.pageIds().empty()); QCOMPARE(wizard.currentPage(), nullptr); } diff --git a/tests/auto/widgets/kernel/qwidget/BLACKLIST b/tests/auto/widgets/kernel/qwidget/BLACKLIST index cf35491ec0..70ea8433a6 100644 --- a/tests/auto/widgets/kernel/qwidget/BLACKLIST +++ b/tests/auto/widgets/kernel/qwidget/BLACKLIST @@ -8,11 +8,6 @@ b2qt opensuse-42.3 [restoreVersion1Geometry] ubuntu-16.04 -[updateWhileMinimized] -ubuntu-18.04 -rhel-7.4 -ubuntu-16.04 -rhel-7.6 [focusProxyAndInputMethods] rhel-7.6 opensuse-leap diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp index f0c490b598..1f2060942b 100644 --- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp +++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp @@ -8074,7 +8074,17 @@ void tst_QWidget::updateWhileMinimized() QTest::qWait(10); if (m_platform == QStringLiteral("winrt")) QEXPECT_FAIL("", "WinRT: This fails. QTBUG-68297.", Abort); - QCOMPARE(widget.numPaintEvents, 0); + int count = 0; + // mutter/GNOME Shell doesn't unmap when minimizing window. + // More details at https://gitlab.gnome.org/GNOME/mutter/issues/185 + if (m_platform == QStringLiteral("xcb")) { + const QString desktop = qgetenv("XDG_CURRENT_DESKTOP"); + qDebug() << "xcb: XDG_CURRENT_DESKTOP=" << desktop; + if (desktop == QStringLiteral("ubuntu:GNOME") + || desktop == QStringLiteral("GNOME-Classic:GNOME")) + count = 1; + } + QCOMPARE(widget.numPaintEvents, count); // Restore window. widget.showNormal(); diff --git a/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp b/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp index 9eae1f10ea..9659d89833 100644 --- a/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp +++ b/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp @@ -296,6 +296,13 @@ private slots: void stepModifierPressAndHold_data(); void stepModifierPressAndHold(); + + void springForward_data(); + void springForward(); + + void stepIntoDSTGap_data(); + void stepIntoDSTGap(); + private: EditorDateEdit* testWidget; QWidget *testFocusWidget; @@ -4387,5 +4394,229 @@ void tst_QDateTimeEdit::stepModifierPressAndHold() QCOMPARE(value.toDate(), expectedDate); } +/* + The following tests verify correct handling of the spring forward gap; which + hour is skipped, and on which day, depends on the local time zone. We try to + make it reasonably robust by discovering the first day of spring in a given + year, but we won't try to handle every situation. + + If this function returns an invalid QDateTime, then the tests should be skipped. +*/ +static QDateTime findSpring(int year, const QTimeZone &timeZone) +{ + if (!timeZone.hasTransitions()) + return QDateTime(); + + // Southern hemisphere spring is after midsummer + const QDateTime midSummer = QDate(year, 6, 21).startOfDay(); + const QTimeZone::OffsetData transition = + midSummer.isDaylightTime() ? timeZone.previousTransition(midSummer) + : timeZone.nextTransition(midSummer); + const QDateTime spring = transition.atUtc.toLocalTime(); + // there might have been DST at some point, but not in the year we care about + if (spring.date().year() != year || !spring.isDaylightTime()) + return QDateTime(); + + return spring; +}; + +/*! + Test that typing in a time that is invalid due to spring forward gap + produces reasonable results. +*/ +void tst_QDateTimeEdit::springForward_data() +{ + QTest::addColumn<QDateTime>("start"); + QTest::addColumn<QAbstractSpinBox::CorrectionMode>("correctionMode"); + QTest::addColumn<QTime>("inputTime"); + QTest::addColumn<QDateTime>("expected"); + + const QTimeZone timeZone = QTimeZone::systemTimeZone(); + if (!timeZone.hasDaylightTime()) + QSKIP("This test needs to run in a timezone that observes DST!"); + + const QDateTime springTransition = findSpring(2019, timeZone); + if (!springTransition.isValid()) + QSKIP("Failed to obtain valid spring forward datetime for 2019!"); + + const QDate springDate = springTransition.date(); + const int gapWidth = timeZone.daylightTimeOffset(springTransition.addDays(1)); + const QTime springGap = springTransition.time().addSecs(-gapWidth); + const QTime springGapMiddle = springTransition.time().addSecs(-gapWidth/2); + + QTest::addRow("forward to %s, correct to previous", qPrintable(springGap.toString("hh:mm"))) + << QDateTime(springDate, springGap.addSecs(-gapWidth)) + << QAbstractSpinBox::CorrectToPreviousValue + << springGap + << QDateTime(springDate, springGap.addSecs(-gapWidth)); + + QTest::addRow("back to %s, correct to previous", qPrintable(springGap.toString("hh:mm"))) + << springTransition + << QAbstractSpinBox::CorrectToPreviousValue + << springGap + << springTransition; + + QTest::addRow("forward to %s, correct to nearest", qPrintable(springGap.toString("hh:mm"))) + << QDateTime(springDate, springGap.addSecs(-gapWidth)) + << QAbstractSpinBox::CorrectToNearestValue + << springGapMiddle + << springTransition; + + QTest::addRow("back to %s, correct to nearest", qPrintable(springGap.toString("hh:mm"))) + << springTransition + << QAbstractSpinBox::CorrectToNearestValue + << springGapMiddle + << springTransition; + + QTest::addRow("jump to %s, correct to nearest", qPrintable(springGapMiddle.toString("hh:mm"))) + << QDateTime(QDate(1980, 5, 10), springGap) + << QAbstractSpinBox::CorrectToNearestValue + << springGapMiddle + << springTransition; +} + +void tst_QDateTimeEdit::springForward() +{ + QFETCH(QDateTime, start); + QFETCH(QAbstractSpinBox::CorrectionMode, correctionMode); + QFETCH(QTime, inputTime); + QFETCH(QDateTime, expected); + + QDateTimeEdit edit; + edit.setDisplayFormat(QLatin1String("dd.MM.yyyy hh:mm")); + edit.setCorrectionMode(correctionMode); + + // we always want to start with a valid time + QVERIFY(start.isValid()); + edit.setDateTime(start); + + edit.setSelectedSection(QDateTimeEdit::DaySection); + const QDate date = expected.date(); + const QString day = QString::number(date.day()).rightJustified(2, QLatin1Char('0')); + const QString month = QString::number(date.month()).rightJustified(2, QLatin1Char('0')); + const QString year = QString::number(date.year()); + const QString hour = QString::number(inputTime.hour()).rightJustified(2, QLatin1Char('0')); + const QString minute = QString::number(inputTime.minute()).rightJustified(2, QLatin1Char('0')); + QTest::keyClicks(&edit, day); + QTest::keyClicks(&edit, month); + QTest::keyClicks(&edit, year); + QTest::keyClicks(&edit, hour); + QTest::keyClicks(&edit, minute); + QTest::keyClick(&edit, Qt::Key_Return, {}); + + QCOMPARE(edit.dateTime(), expected); +} + +/*! + Test that using the up/down spinners to modify a valid time into a time that + is invalid due to daylight-saving changes produces reasonable results. + + 2007 is a year in which the DST transition in most tested places was not on the + last or first day of the month, which allows us to test the various steps. +*/ +void tst_QDateTimeEdit::stepIntoDSTGap_data() +{ + QTest::addColumn<QDateTime>("start"); + QTest::addColumn<QDateTimeEdit::Section>("section"); + QTest::addColumn<int>("steps"); + QTest::addColumn<QDateTime>("end"); + + const QTimeZone timeZone = QTimeZone::systemTimeZone(); + if (!timeZone.hasDaylightTime()) + QSKIP("This test needs to run in a timezone that observes DST!"); + + const QDateTime springTransition = findSpring(2007, timeZone); + if (!springTransition.isValid()) + QSKIP("Failed to obtain valid spring forward datetime for 2007!"); + + const QDate spring = springTransition.date(); + const int gapWidth = timeZone.daylightTimeOffset(springTransition.addDays(1)); + const QTime springGap = springTransition.time().addSecs(-gapWidth); + + // change hour + if (springGap.hour() != 0) { + QTest::addRow("hour up into %s gap", qPrintable(springGap.toString("hh:mm"))) + << QDateTime(spring, springGap.addSecs(-3600)) + << QDateTimeEdit::HourSection + << +1 + << springTransition; + + // 3:00:10 into 2:00:10 should get us to 1:00:10 + QTest::addRow("hour down into %s gap", qPrintable(springGap.toString("hh:mm"))) + << QDateTime(spring, springGap.addSecs(3610)) + << QDateTimeEdit::HourSection + << -1 + << QDateTime(spring, springGap.addSecs(-3590)); + } + + // change day + if (spring.day() != 1) { + // today's 2:05 is tomorrow's 3:05 + QTest::addRow("day up into %s gap", qPrintable(springGap.toString("hh:mm"))) + << QDateTime(spring.addDays(-1), springGap.addSecs(300)) + << QDateTimeEdit::DaySection + << +1 + << springTransition.addSecs(300); + } + + if (spring.day() != spring.daysInMonth()) { + QTest::addRow("day down into %s gap", qPrintable(springGap.toString("hh:mm"))) + << QDateTime(spring.addDays(1), springGap) + << QDateTimeEdit::DaySection + << -1 + << springTransition; + } + + // 2018-03-25 - change month + QTest::addRow("month up into %s gap", qPrintable(springGap.toString("hh:mm"))) + << QDateTime(spring.addMonths(-1), springGap) + << QDateTimeEdit::MonthSection + << +1 + << springTransition; + QTest::addRow("month down into %s gap", qPrintable(springGap.toString("hh:mm"))) + << QDateTime(spring.addMonths(1), springGap) + << QDateTimeEdit::MonthSection + << -1 + << springTransition; + + // 2018-03-25 - change year + QTest::addRow("year up into %s gap", qPrintable(springGap.toString("hh:mm"))) + << QDateTime(spring.addYears(-1), springGap) + << QDateTimeEdit::YearSection + << +1 + << springTransition; + QTest::addRow("year down into %s gap", qPrintable(springGap.toString("hh:mm"))) + << QDateTime(spring.addYears(1), springGap) + << QDateTimeEdit::YearSection + << -1 + << springTransition; +} + +void tst_QDateTimeEdit::stepIntoDSTGap() +{ + QFETCH(QDateTime, start); + QFETCH(QDateTimeEdit::Section, section); + QFETCH(int, steps); + QFETCH(QDateTime, end); + + QDateTimeEdit edit; + edit.setDisplayFormat(QLatin1String("dd.MM.yyyy hh:mm")); + + // we always want to start with a valid time + QVERIFY(start.isValid()); + edit.setDateTime(start); + + edit.setSelectedSection(section); + + // we want to end with a valid value + QVERIFY(end.isValid()); + + const auto stepCount = qAbs(steps); + for (int step = 0; step < stepCount; ++step) + QTest::keyClick(&edit, steps > 0 ? Qt::Key_Up : Qt::Key_Down, {}); + + QCOMPARE(edit.dateTime(), end); +} + QTEST_MAIN(tst_QDateTimeEdit) #include "tst_qdatetimeedit.moc" diff --git a/tests/auto/xml/sax/qxmlinputsource/tst_qxmlinputsource.cpp b/tests/auto/xml/sax/qxmlinputsource/tst_qxmlinputsource.cpp index 5dce69bd8c..afdcc825d8 100644 --- a/tests/auto/xml/sax/qxmlinputsource/tst_qxmlinputsource.cpp +++ b/tests/auto/xml/sax/qxmlinputsource/tst_qxmlinputsource.cpp @@ -149,7 +149,7 @@ public slots: void requestFinished(QNetworkReply *reply) { - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); reply->deleteLater(); } diff --git a/tests/baselineserver/shared/baselineprotocol.cpp b/tests/baselineserver/shared/baselineprotocol.cpp index d11369f3d2..16915b7c02 100644 --- a/tests/baselineserver/shared/baselineprotocol.cpp +++ b/tests/baselineserver/shared/baselineprotocol.cpp @@ -545,7 +545,7 @@ bool BaselineProtocol::receiveBlock(Command *cmd, QByteArray *block) QString BaselineProtocol::errorMessage() { QString ret = errMsg; - if (socket.socketError() >= 0) + if (socket.error() >= 0) ret += QLS(" Socket state: ") + socket.errorString(); return ret; } diff --git a/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp index 1a8c8de0c8..95ee094f00 100644 --- a/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp +++ b/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp @@ -537,7 +537,7 @@ void tst_qnetworkreply::echoPerformance() connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection); QTestEventLoop::instance().enterLoop(5); QVERIFY(!QTestEventLoop::instance().timeout()); - QVERIFY(reply->networkError() == QNetworkReply::NoError); + QVERIFY(reply->error() == QNetworkReply::NoError); delete reply; } } @@ -562,7 +562,7 @@ void tst_qnetworkreply::preConnectEncrypted() QPair<QNetworkReply *, qint64> normalResult = runGetRequest(&manager, request); QNetworkReply *normalReply = normalResult.first; QVERIFY(!QTestEventLoop::instance().timeout()); - QVERIFY(normalReply->networkError() == QNetworkReply::NoError); + QVERIFY(normalReply->error() == QNetworkReply::NoError); qint64 normalElapsed = normalResult.second; // clear all caches again @@ -581,7 +581,7 @@ void tst_qnetworkreply::preConnectEncrypted() QPair<QNetworkReply *, qint64> preConnectResult = runGetRequest(&manager, request); QNetworkReply *preConnectReply = normalResult.first; QVERIFY(!QTestEventLoop::instance().timeout()); - QVERIFY(preConnectReply->networkError() == QNetworkReply::NoError); + QVERIFY(preConnectReply->error() == QNetworkReply::NoError); qint64 preConnectElapsed = preConnectResult.second; qDebug() << request.url().toString() << "full request:" << normalElapsed << "ms, pre-connect request:" << preConnectElapsed << "ms, difference:" @@ -636,7 +636,7 @@ void tst_qnetworkreply::uploadPerformance() QTimer::singleShot(5000, &generator, SLOT(stop())); QTestEventLoop::instance().enterLoop(30); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QVERIFY(!QTestEventLoop::instance().timeout()); } @@ -662,7 +662,7 @@ void tst_qnetworkreply::httpUploadPerformance() reader.exit(); reader.wait(); QVERIFY(reply->isFinished()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QVERIFY(!QTestEventLoop::instance().timeout()); qDebug() << "tst_QNetworkReply::httpUploadPerformance" << elapsed << "msec, " @@ -723,7 +723,7 @@ void tst_qnetworkreply::httpDownloadPerformance() QTime time; time.start(); QTestEventLoop::instance().enterLoop(40); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QVERIFY(!QTestEventLoop::instance().timeout()); qint64 elapsed = time.elapsed(); @@ -805,7 +805,7 @@ void tst_qnetworkreply::httpDownloadPerformanceDownloadBuffer() QBENCHMARK_ONCE { QTestEventLoop::instance().enterLoop(40); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); QVERIFY(reply->isFinished()); QVERIFY(!QTestEventLoop::instance().timeout()); } @@ -840,7 +840,7 @@ public slots: } QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender()); if (reply) { - QVERIFY(reply->networkError() == QNetworkReply::NoError); + QVERIFY(reply->error() == QNetworkReply::NoError); qDebug() << "time =" << timeOneRequest.elapsed() << "ms"; timeList.append(timeOneRequest.elapsed()); } @@ -895,7 +895,7 @@ void tst_qnetworkreply::runHttpsUploadRequest(const QByteArray &data, const QNet connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop())); QTestEventLoop::instance().enterLoop(15); QVERIFY(!QTestEventLoop::instance().timeout()); - QCOMPARE(reply->networkError(), QNetworkReply::NoError); + QCOMPARE(reply->error(), QNetworkReply::NoError); reply->deleteLater(); } @@ -935,7 +935,7 @@ void tst_qnetworkreply::preConnect() QPair<QNetworkReply *, qint64> normalResult = runGetRequest(&manager, request); QNetworkReply *normalReply = normalResult.first; QVERIFY(!QTestEventLoop::instance().timeout()); - QVERIFY(normalReply->networkError() == QNetworkReply::NoError); + QVERIFY(normalReply->error() == QNetworkReply::NoError); qint64 normalElapsed = normalResult.second; // clear all caches again @@ -955,7 +955,7 @@ void tst_qnetworkreply::preConnect() QPair<QNetworkReply *, qint64> preConnectResult = runGetRequest(&manager, request); QNetworkReply *preConnectReply = normalResult.first; QVERIFY(!QTestEventLoop::instance().timeout()); - QVERIFY(preConnectReply->networkError() == QNetworkReply::NoError); + QVERIFY(preConnectReply->error() == QNetworkReply::NoError); qint64 preConnectElapsed = preConnectResult.second; qDebug() << request.url().toString() << "full request:" << normalElapsed << "ms, pre-connect request:" << preConnectElapsed << "ms, difference:" diff --git a/tests/libfuzzer/corelib/serialization/qcborvalue/fromcbor/fromcbor.pro b/tests/libfuzzer/corelib/serialization/qcborvalue/fromcbor/fromcbor.pro new file mode 100644 index 0000000000..6c988c2434 --- /dev/null +++ b/tests/libfuzzer/corelib/serialization/qcborvalue/fromcbor/fromcbor.pro @@ -0,0 +1,10 @@ +QT -= gui +CONFIG += console +CONFIG -= app_bundle +SOURCES += main.cpp +FUZZ_ENGINE = $$(LIB_FUZZING_ENGINE) +isEmpty(FUZZ_ENGINE) { + QMAKE_LFLAGS += -fsanitize=fuzzer +} else { + LIBS += $$FUZZ_ENGINE +} diff --git a/tests/libfuzzer/corelib/serialization/qcborvalue/fromcbor/main.cpp b/tests/libfuzzer/corelib/serialization/qcborvalue/fromcbor/main.cpp new file mode 100644 index 0000000000..5e2a440d1b --- /dev/null +++ b/tests/libfuzzer/corelib/serialization/qcborvalue/fromcbor/main.cpp @@ -0,0 +1,34 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QCborValue> + +extern "C" int LLVMFuzzerTestOneInput(const char *Data, size_t Size) { + QCborValue::fromCbor(QByteArray::fromRawData(Data, Size)); + return 0; +} diff --git a/tests/manual/bearerex/datatransferer.cpp b/tests/manual/bearerex/datatransferer.cpp index 0eeeb090ae..b4409ce52c 100644 --- a/tests/manual/bearerex/datatransferer.cpp +++ b/tests/manual/bearerex/datatransferer.cpp @@ -53,7 +53,7 @@ DataTransfererQTcp::DataTransfererQTcp(QObject* parent) connect(&m_qsocket, SIGNAL(readyRead()), this, SLOT(readyRead())); connect(&m_qsocket, SIGNAL(connected()), this, SLOT(connected())); - connect(&m_qsocket, SIGNAL(error(QAbstractSocket::SocketError)), + connect(&m_qsocket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), this, SLOT(error(QAbstractSocket::SocketError))); } |