summaryrefslogtreecommitdiff
path: root/src/webchannel
Commit message (Collapse)AuthorAgeFilesLines
* Fix outdated FDL headerKai Koehne2017-09-294-12/+12
| | | | | Change-Id: I5a200b078a6d3485cd6277f79902aca8021b6770 Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
* Highlight standalone exampleKai Koehne2017-09-141-0/+2
| | | | | | | | Highlighted examples will show up prominently in the Qt Creator Welcome screen. Change-Id: I59f55ff9e3e7ff737dcbe22b9265eb7149588358 Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
* Allow examples to be built without module sourcesKai Koehne2017-09-062-428/+1
| | | | | | | | | | | | | | | | | | | | | | qwebchannel.js is used by examples, which so far tried to copy it directly from the library source directory. However, in the case of an installed prefix build of Qt, the library sources are not available. This patches therefore moves the qwebchannel.js file to the examples directory, which is installed including sources. The obvious alternative would be copying the file inside the source tree, but that causes code duplication and a maintenance burden that we want to avoid. Another alternative would have been to install qwebchannel.js into QT_INSTALL_DATA, or extract the file at build time from the Qt library. However, this requires bigger changes, and is also dubious because the use case are in particular applications _not_ using Qt. Task-number: QTBUG-57654 Change-Id: I96bc93b6e3d248e4b4facdd582d9fa53ae562924 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
* Do not crash on non-QVariant return typesMilian Wolff2017-08-081-2/+2
| | | | | | | | | | | | | Patch e354bdc5 introduced a regression that triggers a crash in Qt 5.9 when returning a type that is not implicitly convertible to QVariant, such as a QJsonValue, from an invoked method/slot. This patch fixes this situation and adds proper unit test coverage. Change-Id: Ib8cb0c96e7496bc8dc9a628245d7a44e4234aff0 Task-number: QTBUG-62045 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io> Reviewed-by: Kai Dohmen <psykai1993@googlemail.com>
* Gracefully handle early deregistration of objectsMilian Wolff2017-05-151-2/+6
| | | | | | | | | | | 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 <psykai1993@googlemail.com> Reviewed-by: Konstantin Tokarev <annulen@yandex.ru>
* Merge remote-tracking branch 'origin/5.7' into 5.8Liang Qi2016-11-262-11/+15
|\ | | | | | | Change-Id: I09a494a9b94ce169d60e77f4bffa8845db01293a
| * Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-10-012-11/+15
| |\ | | | | | | | | | Change-Id: Ib8b5300d27583018bc7582be41140dfda0ab5309
| | * Fix asynchronous signals from QObjects in different threadsDave Andrews2016-09-291-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Switches the signal listener in QWebChannel from using Qt::DirectConnection to Qt::AutoConnection to relay signals from QObjects in different affinities than the QWebChannel. Also adds a unit test in testAsyncObject() to verify that QWebChannel no longer crashes when receiving such a signal, and that such objects can be added and removed dynamically. Task-number: QTBUG-51366 Change-Id: I51a4886286fec9257a21ea95360c1ea8889a584a Reviewed-by: Dave Andrews <jetdog330@hotmail.com> Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
| | * Fix asynchronous method calls on QObjects in different threadsDave Andrews2016-09-291-10/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use QMetaMethod::invoke without a return for void method calls, which allows making asynchronous method calls onto QObjects in different affinities than the QWebChannel that's emitting them. Also adds a unit test called testAsyncObject that intentionally places a QObject in a different affinity and then tests calls into it from the QWebChannel's synchronous publisher. Task-number: QTBUG-47678 Change-Id: I6c35ee54f764c0fc1b0431fb0774aa7e75039abf Reviewed-by: Dave Andrews <jetdog330@hotmail.com> Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
| * | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-08-013-1/+35
| |\ \ | | |/ | | | | | | Change-Id: If2a4f50d03fccc2654b8336d9e40daea85d6adca
| | * Remove deleted transport objectsKai Dohmen2016-07-213-1/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added a QMultiHash which maps transport objects to wrapped object ids. transportRemoved iterates over all matching wrapped objects and removes the passed transport object from their transports-vector. If the transports-vector is empty after removing the passed transport object the objectDestroyed will be called on the wrapped object. transportRemoved will be called either on the transports destoryed signal or on disconnecting the webchannel from it. Without this changes the QMetaObjectPublisher::wrappedObjects and ::registeredObjectIds would only be cleaned up if the website calls deleteLater on QObjects but not on website reloads. Task-number: QTBUG-50074 Change-Id: If294564fee2406edd7fb578852aeb269cac23a92 Reviewed-by: Milian Wolff <milian.wolff@kdab.com> (cherry picked from commit fa2374d7c4dedea907e2df26fdad28bdee73b122) Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
* | | Merge remote-tracking branch 'origin/5.7' into devEdward Welbourne2016-07-2111-57/+196
|\ \ \ | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/webchannel/doc/src/index.qdoc src/webchannel/qwebchannelabstracttransport.cpp Overlapping changes to documentation; constructed hybrid. src/webchannel/qmetaobjectpublisher.cpp tests/auto/webchannel/tst_webchannel.cpp tests/auto/webchannel/tst_webchannel.h Both sides made additions; in the same place. Change-Id: Iff12970978b70946dc3e1290841aca2d35c9c1d0
| * | Merge remote-tracking branch 'origin/5.6' into 5.7Edward Welbourne2016-07-158-54/+134
| |\ \ | | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Alleged Conflicts: examples/webchannel/chatclient-html/doc/src/chatclient-html.qdoc examples/webchannel/chatclient-qml/doc/src/chatclient-qml.qdoc examples/webchannel/chatserver-cpp/doc/src/chatserver-cpp.qdoc In each case, the two sides agreed byte-for-byte. Not quite sure what git thought the conflict was ! Change-Id: I5da9695b667f4112848c520b630ab1304d61cea3
| | * Properly unwrap QObject signal parameters on the JavaScript side.Milian Wolff2016-06-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This enables you to pass `QObject*` parameters via signals to the JavaScript side. The object will be serialized and then unwrapped as needed now. Task-number: QTBUG-54243 Change-Id: Ie8a6d14eb1351f14f1855d242ceb3b3f8262152d Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com>
| | * Make passing objects from website to server possibleKai Dohmen2016-06-213-27/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If you get an object from the server and want to pass it back to the server via a function the id of the object is passed instead of the whole json object. On the server side QMetaObjectPublisher::invokeMethod now looks up the object in QMetaObjectPublisher::wrappedObjects by the passed object-id. Task-number: QTBUG-50075 Change-Id: Id0df2dfaa79bcba12ca48391ae7537ac1a086898 Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
| | * Doc: Fix linking to methods and properties within the typeLeena Miettinen2016-06-011-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | You don't need the type name for linking within the type docs. Also, the convention in QML and Qt Quick is to use a period and not a double colon. Change-Id: Ic93bae51e766ef782f089ce69dc4e54a712445c6 Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
| | * Doc: Use 3rd person singular verb form to begin method docsLeena Miettinen2016-06-011-4/+5
| | | | | | | | | | | | | | | | | | | | | And fix a typo "connectect". Change-Id: I14c4b249af3cad142a5f6042b2059f653a9c3eae Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
| | * Doc: Use standard verb form to start function docsLeena Miettinen2016-05-312-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | For consistency, the first verb should be in 3rd person singular form. Change-Id: I5e24ecbbac1b1ab85e737f127b021f24a55c8dd4 Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
| | * Doc: Fix links to other modulesLeena Miettinen2016-05-313-13/+11
| | | | | | | | | | | | | | | | | | | | | -Remove references to Qt WebKit Change-Id: I0bd184021b1a87828e93f5783c38b9ba97f37763 Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
| | * Doc: Edit the index pageLeena Miettinen2016-05-311-8/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Remove reference to Qt WebKit - Add Getting Started section - Use standard section titles for API Reference and Examples Change-Id: Ie5e3ac792a109f680132a79e86d5e1065f4c3829 Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
| | * Doc: Edit example documentationLeena Miettinen2016-05-313-2/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Add images to the examples. - Add instructions for running the examples - Edit for grammar and style - Add dependencies to Qt WebEngine and Qt WebSockets modules - Add a workaround for preventing autolinking of WebChannel, WebEngine and WebSockets to the wrong targets - Use explicit linking where necessary Change-Id: Ia4025284063fa09c9e2a0b2c347ee682bba8a615 Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
| | * Fix setting properties of QJson{Value,Array,Object} type.Milian Wolff2016-05-262-8/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Similar to the previous issue, where these types were not properly converted to QVariant when invoking a method, we manually do the conversion now to get the desired behavior. The culprit is again that QJsonValue::toVariant converts an object e.g. to a QVariantMap, and not to a QVariant containing a QJsonObject. [ChangeLog] QObject properties of type QJsonValue, QJsonArray or QJsonObject can now be set via the Qt WebChannel. Task-number: QTBUG-48198 Change-Id: I5d574b1a5cffd6d6ad9b555f2a3e872b9c3425a7 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * Enable calling C++ functions taking QJson arguments via webchannel.Milian Wolff2016-05-251-5/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We used to convert the QJsonValue arguments to QVariants, which then failed to call a C++ function which expected on of the three QJson data types, i.e. QJsonValue, QJsonObject or QJsonArray. Instead, we now detect these three cases and manually convert the QJsonValue as needed. [ChangeLog] C++ functions taking arguments of type QJsonValue, QJsonArray or QJsonObject can now be called via the Qt WebChannel. Change-Id: I94e0c8937ca35e2ecd3554f7ddf2d4e5a3328570 Task-number: QTBUG-48198 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | Doc: Edit example documentationLeena Miettinen2016-06-023-2/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Add images to the examples. - Add instructions for running the examples - Edit for grammar and style - Add dependencies to Qt WebEngine and Qt WebSockets modules - Add a workaround for preventing autolinking of WebChannel, WebEngine and WebSockets to the wrong targets - Use explicit linking where necessary Change-Id: Ia4025284063fa09c9e2a0b2c347ee682bba8a615 Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com> (cherry picked from commit 01ea92c7c8d77d3d3c10ab1cc4bf4f214aa07126)
* | | Remove deleted transport objectsKai Dohmen2016-05-313-1/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added a QMultiHash which maps transport objects to wrapped object ids. transportRemoved iterates over all matching wrapped objects and removes the passed transport object from their transports-vector. If the transports-vector is empty after removing the passed transport object the objectDestroyed will be called on the wrapped object. transportRemoved will be called either on the transports destoryed signal or on disconnecting the webchannel from it. Without this changes the QMetaObjectPublisher::wrappedObjects and ::registeredObjectIds would only be cleaned up if the website calls deleteLater on QObjects but not on website reloads. Task-number: QTBUG-50074 Change-Id: If294564fee2406edd7fb578852aeb269cac23a92 Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
* | | Merge remote-tracking branch 'origin/5.7' into devLiang Qi2016-05-241-1/+1
|\ \ \ | |/ / | | | | | | Change-Id: Ica9ff8d7142c5bd5328d44505beb8c22b4c21766
| * | Merge remote-tracking branch 'origin/5.6' into 5.7v5.7.0-rc1Liang Qi2016-05-191-1/+1
| |\ \ | | |/ | | | | | | | | | | | | | | | Conflicts: .qmake.conf Change-Id: I52dc7e8ad7a9ce6fa36ad2d6ce5d8ea29b77b400
| | * Doc: Remove repository name from examplesinstallpathv5.6.1-1v5.6.15.6.1Topi Reinio2016-05-121-1/+1
| | | | | | | | | | | | | | | | | | | | | Examples in binary packages now directly match the install path. Change-Id: I06c85e42d312bd6a1e1ae619330676b717b6ccbd Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
* | | Clarify the module descriptionFrank Meerkoetter2016-04-251-8/+7
| | | | | | | | | | | | | | | Change-Id: Ib651958ec7aa12eb205a11a515fa9a464e254bd0 Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
* | | Fix typoFrank Meerkoetter2016-04-131-1/+1
| | | | | | | | | | | | | | | Change-Id: I8da406c190ed3e3f925c50ede6c7b845033837b9 Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
* | | Fix broken linkFrank Meerkoetter2016-04-131-1/+1
|/ / | | | | | | | | Change-Id: I50b0bfde043596a75dd28a93098a5543587fd581 Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
* | Merge remote-tracking branch 'origin/5.6' into 5.7v5.7.0-beta1Liang Qi2016-03-074-6/+6
|\ \ | |/ | | | | Change-Id: Ifb2b9cc762b5c75f1ec3bf47c607906fdfef9bd1
| * Make public headers compile with -Wzero-as-null-pointer-constantMarc Mutz2016-03-033-4/+4
| | | | | | | | | | | | | | | | | | | | | | ... or equivalent. QtBase 5.6 headers already compile that way, so let the other modules follow suit. Change-Id: I972f844bd5845f4d7d88a14ff1b358c8c2b2643d Task-number: QTBUG-45291 Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
| * consistently put {qt,qml}_{module,plugin} at the end of project filesOswald Buddenhagen2016-02-251-2/+2
| | | | | | | | | | | | | | | | this fixes static builds by ensuring that all dependencies are exported. Task-number: QTBUG-51071 Change-Id: Ibf63974f6b989abb6c7967a74ff770af09bab114 Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
* | Merge remote-tracking branch 'origin/5.6' into 5.7v5.7.0-alpha1Liang Qi2016-02-156-1/+56
|\ \ | |/ | | | | | | | | | | Conflicts: .qmake.conf Change-Id: I42bfb38e5a9bf03b43636309fe9e29e8d772bb06
| * Add the "We mean it" warning to private headersv5.6.0-rc1v5.6.05.6.0Sergio Martins2016-02-095-0/+55
| | | | | | | | | | Change-Id: I34bcf2e4a2d66c9cb126c2edae79a45064b82a67 Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
| * Doc: Update examplesinstallpath to include the repository namev5.6.0-beta1Topi Reinio2015-10-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | The examplesinstallpath variable in .qdocconf files defines the path under QT_INSTALL_EXAMPLES where examples are found. To match the way examples are packaged in Qt 5.6, prefix the install path with the repository name. Task-number: QTBUG-48736 Change-Id: Iafb0663b319f97d2fa3e8f938e4546ae11eaaa69 Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com> Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
* | Updated license headersAntti Kokko2016-01-2016-227/+323
|/ | | | | | | | | | From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/ Updated license headers to use new LGPL header instead of LGPL21 one (in those files which will be under LGPL v3) Change-Id: I2fe282e6b9d52f9635cd69e3e8de53724cbb8b0a Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* Merge remote-tracking branch 'origin/5.5' into 5.6Liang Qi2015-10-022-4/+4
|\ | | | | | | | | | | | | | | Conflicts: src/webchannel/qmetaobjectpublisher.cpp src/webchannel/webchannel.pro Change-Id: Ia573d780424399a8fa6e5a809148c888b223446a
| * Compile when QML is disabled5.5Andy Shaw2015-09-292-0/+6
| | | | | | | | | | | | | | | | | | | | Since QJSValue is part of the QML module then it should check if that is available before using it so we add a QT_NO_JSVALUE define to help with this. Task-number: QTBUG-46850 Change-Id: I1974518a5c134dbb8508a46505b43c820a7a700a Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
* | Fix #include's in public headersPierre Rossi2015-08-192-3/+3
| | | | | | | | | | | | | | | | | | | | | | Uniformly use the <Module/class.h> style, like https://wiki.qt.io/Coding_Conventions mandates. Change-Id: Ia2de5fb5ba4e3229c614c204d43349bd7fcbeaab Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
* | Fix builds without qml moduleJulien Corjon2015-07-242-0/+6
| | | | | | | | | | | | | | | | When we build without qml module we cannot use QJSValue in qmetaobjectpublisher Change-Id: I79d06d8cc6d43fdad57cbab17ebc1756444a7311 Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
* | Support subclass property getters and setters.Pierre Rossi2015-07-081-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QDialog for instance adds a setter for the modal property already exposed by QWidget. Object.defineProperty requires configurable set to true in order to add that setter at a later stage. Adds some reusable autotest logic with a soft dependency on QJSEngine to test some of the C++/JS integration aspects. Task-number: QTBUG-46548 Change-Id: Ibd49274f7d334c068c4006fb09417abf911c24e9 Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
* | Merge remote-tracking branch 'origin/5.5' into devLiang Qi2015-06-291-5/+13
|\ \ | |/ | | | | | | | | | | Conflicts: .qmake.conf Change-Id: Ia5b809f6aeaa29c6acd6f45b696da285fe06b5f2
| * Doc: Added a brief overview about the modulev5.5.0-beta1Venugopal Shivashankar2015-04-201-5/+13
| | | | | | | | | | Change-Id: Ib45c48613c687fdfcafd121ed9d4932cbc116799 Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
* | Fix wrap registered object issueLutz Schönemann2015-05-152-4/+7
|/ | | | | | | | | | | | | | | | 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>
* Update copyright headersv5.5.0-alpha1Antti Kokko2015-02-1719-114/+114
| | | | | | | | | Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Change-Id: Iebed549451f58a9fbdd86adf5d0340412d7766d7 Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
* Merge branch '5.4' into devMilian Wolff2015-02-044-60/+128
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This merge required extensive conflict handling because the bug fix in 5.4 to properly wrap and forward QObjects referenced by published objects' properties clashed with some feature additions in dev, namely the client separation logic. All unit test pass for me locally now again. Conflicts: .qmake.conf src/webchannel/qmetaobjectpublisher.cpp tests/auto/qml/tst_webchannel.qml Change-Id: If3d00e13b265c6ab9fb2c38023014f97f8e7779b
| * Fix crash on signal after deregistrationLutz Schönemann2014-12-032-9/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implemented a remove method in SignalHandler that allows us to remove and disconnect an object from SignalHandler w/o decrementing the connection counter until it hits zero or deleting the object That same functionality was used to remove an object from internal lists when receiving a destroyed signal from an object. In case of deregistering an object we haven't received a destoryed signal but simulated reception of that signal and so that code was not called in that case. Change-Id: Ie20cf628a2de028375f5d29f913682e25ebf8d44 Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
| * Fix: Delete objects even when no transport is availableLutz Schönemann2014-12-021-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | The issue is that objects that get deleted will not be removed from the internal lists. This patch checks for destroyed signals in cases when no transport is available (no connection established). cherry picked from commit 037c67962de3d74669c55a9db456ffd38a28480f Change-Id: I24e345dcbfe88e15031d288eb65abb2c3066d4c0 Reviewed-by: Milian Wolff <milian.wolff@kdab.com>