summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2019-02-25 10:15:13 +0100
committerLiang Qi <liang.qi@qt.io>2019-02-25 10:15:13 +0100
commit3809bdf15524e65397447eb7ba62a289c5ef58d4 (patch)
tree96fd257f2dba2696a79026ab1101a57496189875
parent7fa4cf258af693f0fe61e5006ad83a91c63a45df (diff)
parentd14c6aa5855ebfb8bb624efd7817bb3cdd4c96e4 (diff)
downloadqtwebchannel-3809bdf15524e65397447eb7ba62a289c5ef58d4.tar.gz
Merge remote-tracking branch 'origin/5.12' into 5.13v5.13.0-beta1
Conflicts: src/webchannel/qmetaobjectpublisher.cpp Done-With: Arno Rehn <a.rehn@menlosystems.com> Change-Id: I763a76cf055547c5c5e59511ded51c467d6c7526
-rw-r--r--src/webchannel/qmetaobjectpublisher.cpp3
-rw-r--r--tests/auto/webchannel/tst_webchannel.cpp35
-rw-r--r--tests/auto/webchannel/tst_webchannel.h2
3 files changed, 40 insertions, 0 deletions
diff --git a/src/webchannel/qmetaobjectpublisher.cpp b/src/webchannel/qmetaobjectpublisher.cpp
index cd2d940..c9285b7 100644
--- a/src/webchannel/qmetaobjectpublisher.cpp
+++ b/src/webchannel/qmetaobjectpublisher.cpp
@@ -491,6 +491,9 @@ QObject *QMetaObjectPublisher::unwrapObject(const QString &objectId) const
ObjectInfo objectInfo = wrappedObjects.value(objectId);
if (objectInfo.object && !objectInfo.classinfo.isEmpty())
return objectInfo.object;
+ QObject *object = registeredObjects.value(objectId);
+ if (object)
+ return object;
}
qWarning() << "No wrapped object" << objectId;
diff --git a/tests/auto/webchannel/tst_webchannel.cpp b/tests/auto/webchannel/tst_webchannel.cpp
index 13d1567..9a0f575 100644
--- a/tests/auto/webchannel/tst_webchannel.cpp
+++ b/tests/auto/webchannel/tst_webchannel.cpp
@@ -708,6 +708,25 @@ void TestWebChannel::testWrapRegisteredObject()
QCOMPARE(obj.objectName(), returnedId);
}
+void TestWebChannel::testUnwrapObject()
+{
+ QWebChannel channel;
+
+ {
+ TestObject obj;
+ obj.setObjectName("testObject");
+ channel.registerObject(obj.objectName(), &obj);
+ QObject *unwrapped = channel.d_func()->publisher->unwrapObject(obj.objectName());
+ QCOMPARE(unwrapped, &obj);
+ }
+ {
+ TestObject obj;
+ QJsonObject objectInfo = channel.d_func()->publisher->wrapResult(QVariant::fromValue(&obj), m_dummyTransport).toObject();
+ QObject *unwrapped = channel.d_func()->publisher->unwrapObject(objectInfo["id"].toString());
+ QCOMPARE(unwrapped, &obj);
+ }
+}
+
void TestWebChannel::testRemoveUnusedTransports()
{
QWebChannel channel;
@@ -780,6 +799,22 @@ void TestWebChannel::testWrapValues()
}
}
+void TestWebChannel::testWrapObjectWithMultipleTransports()
+{
+ QWebChannel channel;
+ QMetaObjectPublisher *pub = channel.d_func()->publisher;
+
+ DummyTransport *dummyTransport = new DummyTransport(this);
+ DummyTransport *dummyTransport2 = new DummyTransport(this);
+
+ TestObject obj;
+
+ pub->wrapResult(QVariant::fromValue(&obj), dummyTransport);
+ pub->wrapResult(QVariant::fromValue(&obj), dummyTransport2);
+
+ QCOMPARE(pub->transportedWrappedObjects.count(), 2);
+}
+
void TestWebChannel::testJsonToVariant()
{
QWebChannel channel;
diff --git a/tests/auto/webchannel/tst_webchannel.h b/tests/auto/webchannel/tst_webchannel.h
index c4fee23..3d16f7b 100644
--- a/tests/auto/webchannel/tst_webchannel.h
+++ b/tests/auto/webchannel/tst_webchannel.h
@@ -311,9 +311,11 @@ private slots:
void testSetPropertyConversion();
void testDisconnect();
void testWrapRegisteredObject();
+ void testUnwrapObject();
void testRemoveUnusedTransports();
void testPassWrappedObjectBack();
void testWrapValues();
+ void testWrapObjectWithMultipleTransports();
void testJsonToVariant();
void testInfiniteRecursion();
void testAsyncObject();