diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-10-09 18:10:14 +0200 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-10-09 18:10:14 +0200 |
commit | d31582e689bb9aa68aaa9223577db81620e106b9 (patch) | |
tree | bf62828c8b8132ffa1d62d9df6a1e72cf55d0188 /src/xmlpatterns/acceltree | |
parent | 5cf5e9323d921f5c44a94a4fa20707c681b48f77 (diff) | |
parent | 045028f951959dc217a0fc1c19f014989bfaaa1f (diff) | |
download | qtxmlpatterns-d31582e689bb9aa68aaa9223577db81620e106b9.tar.gz |
Merge remote-tracking branch 'origin/5.4' into dev
Change-Id: I4a853063ea9aaeb5d7055d4652be6faef468236e
Diffstat (limited to 'src/xmlpatterns/acceltree')
-rw-r--r-- | src/xmlpatterns/acceltree/qacceltreebuilder_tpl_p.h | 11 | ||||
-rw-r--r-- | src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp | 20 | ||||
-rw-r--r-- | src/xmlpatterns/acceltree/qacceltreeresourceloader_p.h | 34 |
3 files changed, 23 insertions, 42 deletions
diff --git a/src/xmlpatterns/acceltree/qacceltreebuilder_tpl_p.h b/src/xmlpatterns/acceltree/qacceltreebuilder_tpl_p.h index 85330d4..3de58f0 100644 --- a/src/xmlpatterns/acceltree/qacceltreebuilder_tpl_p.h +++ b/src/xmlpatterns/acceltree/qacceltreebuilder_tpl_p.h @@ -31,6 +31,17 @@ ** ****************************************************************************/ +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + /** * @file * @short This file is included by qacceltreebuilder_p.h. diff --git a/src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp b/src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp index 7c877c6..85ea41a 100644 --- a/src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp +++ b/src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp @@ -110,15 +110,20 @@ QNetworkReply *AccelTreeResourceLoader::load(const QUrl &uri, Q_ASSERT(networkManager); Q_ASSERT(uri.isValid()); - NetworkLoop networkLoop; - + const bool ftpSchemeUsed = (uri.scheme() == QStringLiteral("ftp")); + // QNAM doesn't have support for SynchronousRequestAttribute in its ftp backend. + QEventLoop ftpNetworkLoop; QNetworkRequest request(uri); + if (!ftpSchemeUsed) + request.setAttribute(QNetworkRequest::SynchronousRequestAttribute, true); QNetworkReply *const reply = networkManager->get(request); - networkLoop.connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(error(QNetworkReply::NetworkError))); - networkLoop.connect(reply, SIGNAL(finished()), SLOT(finished())); + if (ftpSchemeUsed) { + ftpNetworkLoop.connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(quit())); + ftpNetworkLoop.connect(reply, SIGNAL(finished()), SLOT(quit())); + ftpNetworkLoop.exec(QEventLoop::ExcludeUserInputEvents); + } - if(networkLoop.exec(QEventLoop::ExcludeUserInputEvents)) - { + if (reply->error() != QNetworkReply::NoError) { const QString errorMessage(escape(reply->errorString())); /* Note, we delete reply before we exit this function with error(). */ @@ -130,8 +135,7 @@ QNetworkReply *AccelTreeResourceLoader::load(const QUrl &uri, context->error(errorMessage, ReportContext::FODC0002, location); return 0; - } - else + } else return reply; } diff --git a/src/xmlpatterns/acceltree/qacceltreeresourceloader_p.h b/src/xmlpatterns/acceltree/qacceltreeresourceloader_p.h index 0adc8c8..7ac4389 100644 --- a/src/xmlpatterns/acceltree/qacceltreeresourceloader_p.h +++ b/src/xmlpatterns/acceltree/qacceltreeresourceloader_p.h @@ -62,40 +62,6 @@ class QIODevice; namespace QPatternist { /** - * @short An helper class which enables QNetworkAccessManager - * to be used in a blocking manner. - * - * @see AccelTreeResourceLoader::load() - * @author Frans Englich <frans.englich@nokia.com> - */ - class NetworkLoop : public QEventLoop - { - Q_OBJECT - public: - NetworkLoop() : m_hasReceivedError(false) - { - } - - public Q_SLOTS: - void error(QNetworkReply::NetworkError code) - { - Q_UNUSED(code); - m_hasReceivedError = true; - exit(1); - } - - void finished() - { - if(m_hasReceivedError) - exit(1); - else - exit(0); - } - private: - bool m_hasReceivedError; - }; - - /** * @short Handles requests for documents, and instantiates * them as AccelTree instances. * |