diff options
author | Lutz Schönemann <lutz.schoenemann@basyskom.com> | 2014-12-17 16:27:35 +0100 |
---|---|---|
committer | Tony Sarajärvi <tony.sarajarvi@digia.com> | 2015-05-15 17:58:17 +0000 |
commit | 368adbf8e75c00712c7a30eb6b8d7a7e175e89d7 (patch) | |
tree | dab3625745d0add6087c5fc69f27dbbb87d87d06 /tests/auto/webchannel/tst_webchannel.h | |
parent | c3bcbd1dcd8df8c93924853308d7f2ec95aba825 (diff) | |
download | qtwebchannel-368adbf8e75c00712c7a30eb6b8d7a7e175e89d7.tar.gz |
Fix wrap registered object issue
When wrapping a registered object the code generated a new
ID for an already known object. That new ID wasn't stored
but returned to the client including the objects information.
That resulted in a new created object on client side but
the remote object (on the server) was not accessible.
This patch fixes the issue by just returning the known ID
of a known object. Because the client already has a local
representation of that object it does not have to unwrap
the object description.
Change-Id: I31964823c84c84fd7ebce4386865c18fb5518be7
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.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/auto/webchannel/tst_webchannel.h b/tests/auto/webchannel/tst_webchannel.h index 7b9a1e3..649e61f 100644 --- a/tests/auto/webchannel/tst_webchannel.h +++ b/tests/auto/webchannel/tst_webchannel.h @@ -69,9 +69,12 @@ class TestObject : public QObject Q_PROPERTY(Foo foo READ foo CONSTANT) Q_PROPERTY(int asdf READ asdf NOTIFY asdfChanged) Q_PROPERTY(QString bar READ bar NOTIFY theBarHasChanged) + Q_PROPERTY(QObject * objectProperty READ objectProperty WRITE setObjectProperty NOTIFY objectPropertyChanged) + public: explicit TestObject(QObject *parent = 0) : QObject(parent) + , mObjectProperty(0) { } enum Foo { @@ -83,6 +86,11 @@ public: int asdf() const {return 42;} QString bar() const {return QString();} + QObject *objectProperty() const + { + return mObjectProperty; + } + Q_INVOKABLE void method1() {} protected: @@ -96,16 +104,26 @@ signals: void sig2(const QString&); void asdfChanged(); void theBarHasChanged(); + void objectPropertyChanged(); public slots: void slot1() {} void slot2(const QString&) {} + void setObjectProperty(QObject *object) + { + mObjectProperty = object; + emit objectPropertyChanged(); + } + protected slots: void slot3() {} private slots: void slot4() {} + +public: + QObject *mObjectProperty; }; class BenchObject : public QObject @@ -218,6 +236,8 @@ private slots: void testInfoForObject(); void testInvokeMethodConversion(); void testDisconnect(); + void testWrapRegisteredObject(); + void testInfiniteRecursion(); void benchClassInfo(); void benchInitializeClients(); |