summaryrefslogtreecommitdiffstats
path: root/tests/auto/declarative
diff options
context:
space:
mode:
authorPeter Kümmel <syntheticpp@gmx.net>2012-09-20 10:50:23 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-09-25 23:11:21 +0200
commit770ef3867e7b7d8591f6a75783ee9ed1ce2da2d4 (patch)
tree6d73b5e67169041c9950b806a98f12dd94c65748 /tests/auto/declarative
parent872d6aff3ea96d548e0bad99def669b803368a36 (diff)
Revert "Delete JS-owned QML objects right away in the engine dtor."
This reverts commit ecc432a5b7ae269220f86c6f0b3dd364f8643191 to fix a crash on exit. Task-number: QTBUG-20377 Change-Id: I6606ff194f2c16e06bdbbfca94e55821cf055f75 Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
Diffstat (limited to 'tests/auto/declarative')
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/data/jsOwnedObjectsDeletedOnEngineDestroy.qml6
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/testtypes.h21
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp36
3 files changed, 1 insertions, 62 deletions
diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/jsOwnedObjectsDeletedOnEngineDestroy.qml b/tests/auto/declarative/qdeclarativeecmascript/data/jsOwnedObjectsDeletedOnEngineDestroy.qml
deleted file mode 100644
index da1b682d1e..0000000000
--- a/tests/auto/declarative/qdeclarativeecmascript/data/jsOwnedObjectsDeletedOnEngineDestroy.qml
+++ /dev/null
@@ -1,6 +0,0 @@
-import QtQuick 1.0
-
-Item {
- property variant jsOwnedObject1: deleteObject.object1()
- property variant jsOwnedObject2: deleteObject.object2
-}
diff --git a/tests/auto/declarative/qdeclarativeecmascript/testtypes.h b/tests/auto/declarative/qdeclarativeecmascript/testtypes.h
index 3d0d37fba9..19505e1458 100644
--- a/tests/auto/declarative/qdeclarativeecmascript/testtypes.h
+++ b/tests/auto/declarative/qdeclarativeecmascript/testtypes.h
@@ -903,27 +903,6 @@ protected:
qreal m_p4;
};
-class MyDeleteObject : public QObject
-{
- Q_OBJECT
- Q_PROPERTY(QObject *object2 READ object2 NOTIFY object2Changed)
-
-public:
- MyDeleteObject() : m_object1(0), m_object2(0) {}
-
- Q_INVOKABLE QObject *object1() const { return m_object1; }
- Q_INVOKABLE QObject *object2() const { return m_object2; }
- void setObject1(QObject *object) { m_object1 = object; }
- void setObject2(QObject *object) { m_object2 = object; emit object2Changed(); }
-
-signals:
- void object2Changed();
-
-private:
- QObject *m_object1;
- QObject *m_object2;
-};
-
QML_DECLARE_TYPE(MyRevisionedBaseClassRegistered)
QML_DECLARE_TYPE(MyRevisionedBaseClassUnregistered)
QML_DECLARE_TYPE(MyRevisionedClass)
diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
index 188cf1b52a..1c54494325 100644
--- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
+++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
@@ -48,7 +48,6 @@
#include <QtDeclarative/private/qdeclarativeguard_p.h>
#include <QtCore/qdir.h>
#include <QtCore/qnumeric.h>
-#include <QtTest/qsignalspy.h>
#include <private/qdeclarativeengine_p.h>
#include <private/qdeclarativeglobalscriptclass_p.h>
#include <private/qscriptdeclarativeclass_p.h>
@@ -179,7 +178,6 @@ private slots:
void pushCleanContext();
void realToInt();
void qtbug_20648();
- void jsOwnedObjectsDeletedOnEngineDestroy();
void include();
@@ -1390,7 +1388,7 @@ void tst_qdeclarativeecmascript::callQtInvokables()
QDeclarativeEngine qmlengine;
QDeclarativeEnginePrivate *ep = QDeclarativeEnginePrivate::get(&qmlengine);
- QScriptEngine *engine = ep->scriptEngine;
+ QScriptEngine *engine = &ep->scriptEngine;
QStringList names; QList<QScriptValue> values;
names << QLatin1String("object"); values << ep->objectClass->newQObject(&o);
@@ -3102,38 +3100,6 @@ void tst_qdeclarativeecmascript::qtbug_20648()
delete o;
}
-void tst_qdeclarativeecmascript::jsOwnedObjectsDeletedOnEngineDestroy()
-{
- QDeclarativeEngine *myEngine = new QDeclarativeEngine;
-
- MyDeleteObject deleteObject;
- deleteObject.setObjectName("deleteObject");
- QObject * const object1 = new QObject;
- QObject * const object2 = new QObject;
- object1->setObjectName("object1");
- object2->setObjectName("object2");
- deleteObject.setObject1(object1);
- deleteObject.setObject2(object2);
-
- // Objects returned by function calls get marked as destructible, but objects returned by
- // property getters do not - therefore we explicitly set the object as destructible.
- QDeclarativeEngine::setObjectOwnership(object2, QDeclarativeEngine::JavaScriptOwnership);
-
- myEngine->rootContext()->setContextProperty("deleteObject", &deleteObject);
- QDeclarativeComponent component(myEngine, TEST_FILE("jsOwnedObjectsDeletedOnEngineDestroy.qml"));
- QObject *object = component.create();
- QVERIFY(object);
-
- // Destroying the engine should delete all JS owned QObjects
- QSignalSpy spy1(object1, SIGNAL(destroyed()));
- QSignalSpy spy2(object2, SIGNAL(destroyed()));
- delete myEngine;
- QCOMPARE(spy1.count(), 1);
- QCOMPARE(spy2.count(), 1);
-
- delete object;
-}
-
QTEST_MAIN(tst_qdeclarativeecmascript)
#include "tst_qdeclarativeecmascript.moc"