summaryrefslogtreecommitdiff
path: root/tests/auto/webchannel/tst_webchannel.h
diff options
context:
space:
mode:
authorJüri Valdmann <juri.valdmann@qt.io>2017-12-15 13:04:02 +0100
committerJüri Valdmann <juri.valdmann@qt.io>2018-01-08 13:53:50 +0000
commit6701ff310933ec33f9199b53d78299764f646387 (patch)
tree5ef941383eb8021acb81ed00a65cc25ff43906e8 /tests/auto/webchannel/tst_webchannel.h
parentb90fbebbb5e257f771e96980109fb543647b1844 (diff)
downloadqtwebchannel-6701ff310933ec33f9199b53d78299764f646387.tar.gz
Allow deleting a channel during method invocation
A real-life use case is the session restore page in KDE Falkon or, more generally, any kind of closeTab() method exposed to JS in a QWebEnginePage. The approach taken in this patch will only work if the transport can also deal with deletion during a messageReceived signal emission. Alternatively, method invocation could be delayed via the event loop, but this would come with an obvious performance penalty. Change-Id: I2940f61e07c77365f6e3e7cd29463d4cb5b525a6 Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
Diffstat (limited to 'tests/auto/webchannel/tst_webchannel.h')
-rw-r--r--tests/auto/webchannel/tst_webchannel.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/tests/auto/webchannel/tst_webchannel.h b/tests/auto/webchannel/tst_webchannel.h
index d2597e5..85a9f39 100644
--- a/tests/auto/webchannel/tst_webchannel.h
+++ b/tests/auto/webchannel/tst_webchannel.h
@@ -31,6 +31,7 @@
#include <QObject>
#include <QVariant>
+#include <QVector>
#include <QJsonValue>
#include <QJsonObject>
#include <QJsonArray>
@@ -53,10 +54,18 @@ public:
emit messageReceived(message, this);
}
+ QVector<QJsonObject> messagesSent() const
+ {
+ return mMessagesSent;
+ }
+
public slots:
- void sendMessage(const QJsonObject &/*message*/) Q_DECL_OVERRIDE
+ void sendMessage(const QJsonObject &message) Q_DECL_OVERRIDE
{
+ mMessagesSent.push_back(message);
}
+private:
+ QVector<QJsonObject> mMessagesSent;
};
class TestObject : public QObject
@@ -296,6 +305,8 @@ private slots:
void testPassWrappedObjectBack();
void testInfiniteRecursion();
void testAsyncObject();
+ void testDeletionDuringMethodInvocation_data();
+ void testDeletionDuringMethodInvocation();
void benchClassInfo();
void benchInitializeClients();