summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/declarative/qml/qmlcomponent.cpp9
-rw-r--r--tests/auto/declarative/qmllanguage/data/lib/com/nokia/installedtest/PrivateType.qml2
-rw-r--r--tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp46
3 files changed, 50 insertions, 7 deletions
diff --git a/src/declarative/qml/qmlcomponent.cpp b/src/declarative/qml/qmlcomponent.cpp
index bd2d1d0..6181f41 100644
--- a/src/declarative/qml/qmlcomponent.cpp
+++ b/src/declarative/qml/qmlcomponent.cpp
@@ -386,8 +386,9 @@ void QmlComponent::setData(const QByteArray &data, const QUrl &url)
QmlCompositeTypeData *typeData =
QmlEnginePrivate::get(d->engine)->typeManager.getImmediate(data, url);
- if (typeData->status == QmlCompositeTypeData::Waiting) {
-
+ if (typeData->status == QmlCompositeTypeData::Waiting
+ || typeData->status == QmlCompositeTypeData::WaitingResources)
+ {
d->typeData = typeData;
d->typeData->addWaiter(d);
@@ -432,7 +433,9 @@ void QmlComponent::loadUrl(const QUrl &url)
QmlCompositeTypeData *data =
QmlEnginePrivate::get(d->engine)->typeManager.get(d->url);
- if (data->status == QmlCompositeTypeData::Waiting) {
+ if (data->status == QmlCompositeTypeData::Waiting
+ || data->status == QmlCompositeTypeData::WaitingResources)
+ {
d->typeData = data;
d->typeData->addWaiter(d);
d->progress = data->progress;
diff --git a/tests/auto/declarative/qmllanguage/data/lib/com/nokia/installedtest/PrivateType.qml b/tests/auto/declarative/qmllanguage/data/lib/com/nokia/installedtest/PrivateType.qml
new file mode 100644
index 0000000..93c7630
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/lib/com/nokia/installedtest/PrivateType.qml
@@ -0,0 +1,2 @@
+import Qt 4.6
+Image {}
diff --git a/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp b/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp
index 2746e98..6494c40 100644
--- a/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp
+++ b/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp
@@ -7,6 +7,9 @@
#include <QtCore/qdir.h>
#include "testtypes.h"
+#include "../../../shared/util.h"
+#include "../../network-settings.h"
+
/*
This test case covers QML language issues. This covers everything that does
involve evaluating ECMAScript expressions and bindings.
@@ -69,6 +72,8 @@ private slots:
void importsBuiltin();
void importsLocal_data();
void importsLocal();
+ void importsRemote_data();
+ void importsRemote();
void importsInstalled_data();
void importsInstalled();
void importsOrder_data();
@@ -805,6 +810,8 @@ void tst_qmllanguage::testType(const QString& qml, const QString& type)
{
QmlComponent component(&engine, qml.toUtf8(), TEST_FILE("empty.qml")); // just a file for relative local imports
+ QTRY_VERIFY(!component.isLoading());
+
if (type.isEmpty()) {
QVERIFY(component.isError());
} else {
@@ -824,8 +831,12 @@ QML_DEFINE_TYPE(com.nokia.Test, 1, 8, 9, Test, TestType2)
QML_DEFINE_TYPE(com.nokia.Test, 1, 12, 13, Test, TestType2)
QML_DEFINE_TYPE(com.nokia.Test, 1, 9, 11, OldTest, TestType)
+// Import tests (QT-558)
+
void tst_qmllanguage::importsBuiltin_data()
{
+ // QT-610
+
QTest::addColumn<QString>("qml");
QTest::addColumn<QString>("type");
@@ -842,7 +853,7 @@ void tst_qmllanguage::importsBuiltin_data()
"Test {}"
<< "TestType";
QTest::newRow("qualified wrong")
- << "import com.nokia.Test 1.0 as T\n"
+ << "import com.nokia.Test 1.0 as T\n" // QT-610
"Test {}"
<< "";
QTest::newRow("qualified right")
@@ -934,7 +945,7 @@ void tst_qmllanguage::importsLocal_data()
// import locals
QTest::newRow("local import")
- << "import \"subdir\"\n"
+ << "import \"subdir\"\n" // QT-613
"Test {}"
<< "QFxRect";
QTest::newRow("local import as")
@@ -959,20 +970,47 @@ void tst_qmllanguage::importsLocal()
testType(qml,type);
}
+void tst_qmllanguage::importsRemote_data()
+{
+ QTest::addColumn<QString>("qml");
+ QTest::addColumn<QString>("type");
+
+ QString serverdir = "http://"
+ + QtNetworkSettings::serverName()
+ + "/qtest/declarative/qmllanguage";
+
+ QTest::newRow("remote import") << "import \""+serverdir+"\"\nTest {}" << "QFxRect";
+ QTest::newRow("remote import with subdir") << "import \""+serverdir+"\"\nTestSubDir {}" << "QFxText";
+ QTest::newRow("remote import with local") << "import \""+serverdir+"\"\nTestLocal {}" << "QFxImage";
+}
+
+void tst_qmllanguage::importsRemote()
+{
+ QFETCH(QString, qml);
+ QFETCH(QString, type);
+ testType(qml,type);
+}
+
void tst_qmllanguage::importsInstalled_data()
{
+ // QT-610
+
QTest::addColumn<QString>("qml");
QTest::addColumn<QString>("type");
// import installed
- QTest::newRow("installed import")
+ QTest::newRow("installed import 1")
<< "import com.nokia.installedtest 1.0\n"
"InstalledTest {}"
<< "QFxRect";
- QTest::newRow("installed import")
+ QTest::newRow("installed import 2")
<< "import com.nokia.installedtest 1.4\n"
"InstalledTest {}"
<< "QFxText";
+ QTest::newRow("installed import visibility") // QT-614
+ << "import com.nokia.installedtest 1.4\n"
+ "PrivateType {}"
+ << "";
}
void tst_qmllanguage::importsInstalled()