summaryrefslogtreecommitdiff
path: root/src/xmlpatterns/acceltree
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2014-10-09 18:10:14 +0200
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2014-10-09 18:10:14 +0200
commitd31582e689bb9aa68aaa9223577db81620e106b9 (patch)
treebf62828c8b8132ffa1d62d9df6a1e72cf55d0188 /src/xmlpatterns/acceltree
parent5cf5e9323d921f5c44a94a4fa20707c681b48f77 (diff)
parent045028f951959dc217a0fc1c19f014989bfaaa1f (diff)
downloadqtxmlpatterns-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.h11
-rw-r--r--src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp20
-rw-r--r--src/xmlpatterns/acceltree/qacceltreeresourceloader_p.h34
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.
*