summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAlan Alpert <aalpert@rim.com>2012-11-26 13:29:32 -0800
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-11-28 21:38:05 +0100
commitc370a6c7fe1965157fa47380bfe7fb4da5eae96b (patch)
treedb70e20a9415de7a2e863c50080681dc556c9438 /tests
parent31fee4444587e043413393f1c5df1b6c8c7da5aa (diff)
QML file loading: honor synchronous requests made through QNAM
So that it can skip loading state when the underlying QNetworkReply is already finished. Parts-of-the-patch-by: Jeremy Nicholl Task-number: QTBUG-27723 backport of e5783b79887299d094e6976630373a4899bd7074 from qtquick1 Change-Id: I8f5ee61a754ddec81ec70f82eb39e727534a6049 Reviewed-by: Alan Alpert <aalpert@rim.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/declarative/qdeclarativeengine/tst_qdeclarativeengine.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/auto/declarative/qdeclarativeengine/tst_qdeclarativeengine.cpp b/tests/auto/declarative/qdeclarativeengine/tst_qdeclarativeengine.cpp
index c4d0ab1ce7..9c389c4bb8 100644
--- a/tests/auto/declarative/qdeclarativeengine/tst_qdeclarativeengine.cpp
+++ b/tests/auto/declarative/qdeclarativeengine/tst_qdeclarativeengine.cpp
@@ -43,6 +43,7 @@
#include <QDeclarativeEngine>
#include <QDeclarativeContext>
#include <QNetworkAccessManager>
+#include <QNetworkReply>
#include <QPointer>
#include <QDir>
#include <QDesktopServices>
@@ -70,6 +71,7 @@ private slots:
void clearComponentCache();
void outputWarningsToStandardError();
void objectOwnership();
+ void synchronousNetworkReply();
};
void tst_qdeclarativeengine::rootContext()
@@ -328,6 +330,54 @@ void tst_qdeclarativeengine::objectOwnership()
}
+class MyReply : public QNetworkReply {
+
+ Q_OBJECT
+
+public:
+ MyReply() {
+ setFinished(true);
+ }
+ virtual qint64 readData(char* buffer, qint64 number) {
+ return 0;
+ }
+ virtual void abort() { }
+};
+
+class MyManager : public QNetworkAccessManager {
+
+ Q_OBJECT
+
+public:
+ MyManager(QObject *parent = 0) : QNetworkAccessManager(parent) {
+ }
+
+ QNetworkReply *createRequest(Operation op, const QNetworkRequest & req, QIODevice * outgoingData = 0) {
+ return new MyReply;
+ }
+};
+
+class MyFactory : public QDeclarativeNetworkAccessManagerFactory {
+
+public:
+ QNetworkAccessManager *create(QObject *parent) {
+ return new MyManager;
+ }
+};
+
+void tst_qdeclarativeengine::synchronousNetworkReply()
+{
+ MyFactory factory;
+ QDeclarativeEngine engine;
+ engine.setNetworkAccessManagerFactory(&factory);
+ QDeclarativeComponent c(&engine, QUrl("myScheme://test.qml"));
+ // we get an error, but we only care about whether we are finished or not in this test
+ QTest::ignoreMessage(QtWarningMsg, "QDeclarativeComponent: Component is not ready");
+ c.create();
+ // reply is finished, so should not be in loading state.
+ QVERIFY(!c.isLoading());
+}
+
QTEST_MAIN(tst_qdeclarativeengine)
#include "tst_qdeclarativeengine.moc"