QQuickWindow autotest: verify that onClosing can block close()
authorShawn Rutledge <shawn.rutledge@digia.com>
Fri, 7 Nov 2014 11:54:16 +0000 (12:54 +0100)
committerShawn Rutledge <shawn.rutledge@digia.com>
Fri, 7 Nov 2014 12:48:43 +0000 (13:48 +0100)
Task-number: QTBUG-40093
Change-Id: I800259f45d95736172d500494e68042180178e93
Reviewed-by: Caroline Chao <caroline.chao@theqtcompany.com>
tests/auto/quick/qquickwindow/tst_qquickwindow.cpp

index 043203c..a25ed9b 100644 (file)
@@ -341,6 +341,7 @@ private slots:
     void testWindowVisibilityOrder();
 
     void blockClosing();
+    void blockCloseMethod();
 
     void crashWhenHoverItemDeleted();
 
@@ -1739,6 +1740,25 @@ void tst_qquickwindow::blockClosing()
     QTRY_VERIFY(!window->isVisible());
 }
 
+void tst_qquickwindow::blockCloseMethod()
+{
+    QQmlEngine engine;
+    QQmlComponent component(&engine);
+    component.loadUrl(testFileUrl("ucantclosethis.qml"));
+    QQuickWindow *window = qobject_cast<QQuickWindow *>(component.create());
+    QVERIFY(window);
+    window->show();
+    QTest::qWaitForWindowExposed(window);
+    QVERIFY(window->isVisible());
+    QVERIFY(QMetaObject::invokeMethod(window, "close", Qt::DirectConnection));
+    QVERIFY(window->isVisible());
+    QVERIFY(QMetaObject::invokeMethod(window, "close", Qt::DirectConnection));
+    QVERIFY(window->isVisible());
+    window->setProperty("canCloseThis", true);
+    QVERIFY(QMetaObject::invokeMethod(window, "close", Qt::DirectConnection));
+    QTRY_VERIFY(!window->isVisible());
+}
+
 void tst_qquickwindow::crashWhenHoverItemDeleted()
 {
     // QTBUG-32771