From 446978af11ab886d734ca3972dcd73f847df9fbc Mon Sep 17 00:00:00 2001 From: Milian Wolff Date: Thu, 20 Apr 2017 12:05:11 +0200 Subject: Gracefully handle early deregistration of objects When an object is deregistered before the signal handler got initializated, we asserted. Now, we check for this case and skip the signal handler removal when it wasn't set up yet. Change-Id: I7abad204cbab72be7729d42f58ce63babd2310d8 Task-number: QTBUG-60250 Reviewed-by: Kai Dohmen Reviewed-by: Konstantin Tokarev --- tests/auto/webchannel/tst_webchannel.cpp | 15 +++++++++++++++ tests/auto/webchannel/tst_webchannel.h | 1 + 2 files changed, 16 insertions(+) (limited to 'tests') diff --git a/tests/auto/webchannel/tst_webchannel.cpp b/tests/auto/webchannel/tst_webchannel.cpp index 24d473f..2e80477 100644 --- a/tests/auto/webchannel/tst_webchannel.cpp +++ b/tests/auto/webchannel/tst_webchannel.cpp @@ -312,6 +312,21 @@ void TestWebChannel::testDeregisterObjects() emit testObject.sig1(); } +void TestWebChannel::testDeregisterObjectAtStart() +{ + QWebChannel channel; + QVERIFY(channel.registeredObjects().isEmpty()); + + TestObject testObject; + testObject.setObjectName("myTestObject"); + + channel.registerObject(testObject.objectName(), &testObject); + QCOMPARE(channel.registeredObjects().size(), 1); + + channel.deregisterObject(&testObject); + QVERIFY(channel.registeredObjects().isEmpty()); +} + void TestWebChannel::testInfoForObject() { TestObject obj; diff --git a/tests/auto/webchannel/tst_webchannel.h b/tests/auto/webchannel/tst_webchannel.h index 5e832c9..aaacb5a 100644 --- a/tests/auto/webchannel/tst_webchannel.h +++ b/tests/auto/webchannel/tst_webchannel.h @@ -285,6 +285,7 @@ signals: private slots: void testRegisterObjects(); void testDeregisterObjects(); + void testDeregisterObjectAtStart(); void testInfoForObject(); void testInvokeMethodConversion(); void testSetPropertyConversion(); -- cgit v1.2.1