From 3dbe05f6bf3fd51ce8097c35f6c7f12b39acb0f6 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Wed, 10 Sep 2014 17:13:10 +0200 Subject: Fix mapping of JS objects/arrays to C++ [ChangeLog][QtQml][Important Behavior Changes] When a JavaScript object/array is passed to C++ through a QVariant, the engine no longer immediately converts the object recursively into a QVariantMap or QVariantList but instead stores a QJSValue in the QVariant. This prevents a loss of data when the JS object contains non-primitive types such as function objects for example. Code that expects the variant type to be exactly QVariant::Map or QVariant::List may need to be adapted. Registered conversion functions however ensure that code that merely calls toMap() or toList() continues to work. Task-number: QTBUG-40431 Change-Id: I1dbc1d5f8e78ad28bb62db3681b9a0b34557e7f5 Reviewed-by: Lars Knoll --- tests/auto/qml/qquickworkerscript/tst_qquickworkerscript.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'tests/auto/qml/qquickworkerscript/tst_qquickworkerscript.cpp') diff --git a/tests/auto/qml/qquickworkerscript/tst_qquickworkerscript.cpp b/tests/auto/qml/qquickworkerscript/tst_qquickworkerscript.cpp index 66ddb392f9..801707f2ec 100644 --- a/tests/auto/qml/qquickworkerscript/tst_qquickworkerscript.cpp +++ b/tests/auto/qml/qquickworkerscript/tst_qquickworkerscript.cpp @@ -115,7 +115,10 @@ void tst_QQuickWorkerScript::messaging() waitForEchoMessage(worker); const QMetaObject *mo = worker->metaObject(); - QCOMPARE(mo->property(mo->indexOfProperty("response")).read(worker).value(), value); + QVariant response = mo->property(mo->indexOfProperty("response")).read(worker).value(); + if (response.userType() == qMetaTypeId()) + response = response.value().toVariant(); + QCOMPARE(response, value); qApp->processEvents(); delete worker; -- cgit v1.2.3