summaryrefslogtreecommitdiffstats
path: root/tests/auto
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 09:59:16 +0100
commite5783b79887299d094e6976630373a4899bd7074 (patch)
tree264a8555718ab47b3553d73ead39295517c451fa /tests/auto
parent70579cf5f1b82460443b764aef1f2d2b23732acd (diff)
QML file loading: honor synchronous requests made through QNAM
So that it can skip loading state when the underlying QNetworkReply is already finished. Change-Id: Ic2d26271868b64bf8a411b4b54d7e5be7ee5d2b5 Parts-of-the-patch-by: Jeremy Nicholl Task-number: QTBUG-27723 Reviewed-by: Alan Alpert <aalpert@rim.com>
Diffstat (limited to 'tests/auto')
-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 803f42b1..70dc3c0b 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 <QStandardPaths>
@@ -65,6 +66,7 @@ private slots:
void clearComponentCache();
void outputWarningsToStandardError();
void objectOwnership();
+ void synchronousNetworkReply();
};
void tst_qdeclarativeengine::rootContext()
@@ -323,6 +325,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"