summaryrefslogtreecommitdiff
path: root/src/webchannel/qwebchannel.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/5.7' into devEdward Welbourne2016-07-211-5/+5
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | 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-151-5/+5
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| | * Doc: Use standard verb form to start function docsLeena Miettinen2016-05-311-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | 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-311-1/+1
| | | | | | | | | | | | | | | | | | | | | -Remove references to Qt WebKit Change-Id: I0bd184021b1a87828e93f5783c38b9ba97f37763 Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
* | | Remove deleted transport objectsKai Dohmen2016-05-311-1/+4
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | Updated license headersAntti Kokko2016-01-201-15/+21
|/ | | | | | | | | | 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>
* Update copyright headersv5.5.0-alpha1Antti Kokko2015-02-171-7/+7
| | | | | | | | | 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>
* Update license headers and add new licensesJani Heikkinen2014-08-261-18/+10
| | | | | | | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 & LICENSE.GPLv2 - Removed LICENSE.GPL Furthermore we need to update the sync.profile to not point to the dev branch in order to integrate this patch in the CI. Change-Id: I06b5496b5d865e2da4808532362616429c969658 Reviewed-by: Sergio Ahumada <sahumada@blackberry.com> Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
* Doc: Edited links JavaScript API page and other documentation fixes.Jerome Pasion2014-08-231-3/+3
| | | | | | | | | The JavaScript API page is important to the rest of the documentation but there was no link to it. Task-number: QTBUG-40756 Change-Id: Id741a67ac2b57e21da548c2961c622c7516ac8cf Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
* Doc: Fix example documentation and pathsTopi Reinio2014-08-131-1/+1
| | | | | | | | | | | | | | | To fix issues related to example documentation and to follow Qt convention, do the following changes: - Rename examples/qwebchannel to examples/webchannel - Move example-specific documentation to correct location(s) - Include generic 'Running the Example' instructions - Add the module name to example title, fix links This ensures that example docs are built and the example manifest file generated correctly. Change-Id: I284e0b13db95a6738d72258735018b59156cc7da Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
* Fixup documentation issues.Milian Wolff2014-08-041-2/+2
| | | | | | | | | These issues were raised by Sze Howe Koh in code review 89965 of change I259c204e. This change set does not yet include any comparison to the old Qt WebKit bridging functionality. I'll hand this in later. Change-Id: Idc7df0e02bfcda3c3fcf1a4e147c1dfac4f18a64 Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
* Properly disconnect a transport from the QtMetaObjectPublisher.Milian Wolff2014-08-011-0/+1
| | | | | | | | | | | | | | This fixes a bug, where messages from the transport would still be send to the QtMetaObjectPublisher even though it was previously disconnected. I'll refactor this code eventually to get rid of QtMetaObjectPublisher alltogether and merge its code into QWebChannelPrivate where appropriate. Change-Id: Ie0c35bd81a5e633bdcb6be55b64f947d4a545a59 Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com> Reviewed-by: Lutz Schönemann <lutz.schoenemann@basyskom.com>
* Add documentation for the QtWebChannel module.Milian Wolff2014-08-011-0/+108
| | | | | | | | | | | Please proof-read it and tell me what needs to be improved. I assume most people will probably not use the QWebChannel directly. Rather, they will only consume its features indirectly through the integration in QtWebKit/QtWebEngine. Thus the documentation here is for QWebChannel as a library. User-end documentation should be added to QtWebKit, I think. Change-Id: I259c204e24331271b8dc74ea11695988234a79d3 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* Refactor and streamline API and IPC protocol.Milian Wolff2014-07-291-30/+1
| | | | | | | | | | | | | | | This patch removes the obsolete API support to send raw messages using a QWebChannel. Instead, it is encouraged to directly use WebSockets or navigator.qt. By doing so, we can cleanup the code considerably. While at it, the transport API is adapted to work on QJsonObject messages, instead of QStrings. This will allow us to use more efficient formats in e.g. QtWebKit or QtWebEngine. One could also implement a JSONRPC interface using a custom transport then. Change-Id: Ia8c125a5558507b3cbecf128a46b19fdb013f47b Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
* Make the QWebChannel QML API publically accessible.Milian Wolff2014-07-151-5/+27
| | | | | | | | | | This is required for proper QtWebKit/QtWebEngine integration, as otherwise these modules would have to redo a lot of the QtWebChannel QML API. Furthermore, without this, we could not use the WebChannel.id attached property everywhere, independent of the web browser technology. Change-Id: I032a9326841d505c2f77959a240bbfc71e94b6e8 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Make the registered objects of a QWebChannel accessible.Milian Wolff2014-07-051-0/+5
| | | | | | | This is useful for integration into QtWebKit. Change-Id: I80d79c0ed8a627d62ee45090d7bceca22fdf56ce Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
* Refactor code to use QWebChannelAbstractTransport and QtWebSockets.Milian Wolff2014-07-041-10/+22
| | | | | | | | | | | | | | | | | | | | | | This is a quite big changeset, but necessary to get the roadmap implemented that was discussed at QtCS. With this patchset landed, the QWebChannel does not depend on QtWebKit anymore, not even for the tests. Rather, we will introduce the dependency in the other way (i.e. QtWebKit will optionally use QtWebChannel if available). For the pure Qt/C++ use-case, we ship a utility implementation of a QWebChannelAbstractTransport that uses a QWebSocket for the server-client communication. This way, we can get rid of the custom WebSocket implementation. The tests are refactored to run the qwebchannel.js code directly inside QML. Integration tests for QtWebKit/QtWebEngine as well as examples will be added to these repositories. Change-Id: Icc1c1c5918ec46e31d5070937c14c4ca25a3e2d6 Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
* Send response data only to target client.Milian Wolff2014-03-211-17/+11
| | | | | | | | | | | | | | Before, the response was sent to all clients in a broad-cast and had to be filtered on the client-side. This required additional client identification data to be added to all requests and responses. Now, we keep track of the transport and transport-internal client and only send the response to that client. This is very benefitial for multi-client setups but also reduces traffic for single-client setups and thus their performance. Change-Id: Ia1ef5e031b0058222083d352a8aa28a7d566a6ca Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Fix minor coding style issues.Milian Wolff2014-03-211-2/+2
| | | | | | | | Add space between type name and & or *. Change-Id: I64bfe20510cb43ee0a0b6e08bd433fc657e925a0 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* Make the underlying transport mechanism of the webchannel pluggable.Milian Wolff2014-02-061-45/+30
| | | | | | | | | | | | | | | | | | | | | This enables us to optionally use navigator.qt instead of a WebSocket, which is nicer setup-wise and is also slightly faster: navigator.qt: 284.0 msecs per iteration (total: 2,840, iterations: 10) WebSocket: 295.8 msecs per iteration (total: 2,959, iterations: 10) The baseline is ca. 203 msecs, which would mean a performance boost of ca. 12.7%. Furthermore, this sets the fundation to eventually add a WebEngine transport mechanism. The WebViewTransport should also be removed and instead the WebView itself should directly implement the WebChannelTransportInterface. Change-Id: I368bb27e38ffa2f17ffeb7f5ae695690f6f5ad21 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Fix compilation when building with namespaced Qt.Milian Wolff2014-01-311-0/+4
| | | | | | | | Wrap everything in the QtWebChannel module with the Qt namespace or use the Qt namespace where appropriate. Change-Id: I1ef2b2f5eb22ec5e04ca76c034ef8ebf4043b899 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Fixup license headers of the files written by me.Milian Wolff2014-01-161-3/+3
| | | | | | | | | | | | Some tests referenced Nokia in their license even though that was never the case. The tests where written completely by me after Qt Nokia times. What is missing are the examples which are still mostly original work by Noam back then in Nokia times. The rest was (re-)written by me completely since then anyways. Change-Id: Ib423fb3459bcc1f7464a02de4fd82ddfd614d282 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Add declarative object-registration API to QML WebChannel.Milian Wolff2014-01-101-0/+6
| | | | | | | | | | | | The new registeredObjects list property is now preferred over the old imparative registerObject/registerObjects API. Items that are added to the list need an attached WebChannel.id property which holds the identifier under which the object is published to remote clients. Change-Id: I96a8047b9a85e27f3fd48c900180c22ebd20eb35 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Cleanup public API, remove private slot.Milian Wolff2014-01-081-9/+3
| | | | | Change-Id: I73a83380c571ed5a400b16cb255562bb8079eaac Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Simplify usage of QWebChannel on the server side.Milian Wolff2014-01-081-98/+51
| | | | | | | | | | | This is achieved by hiding the MetaObjectPublisher completely as private API. The QWebChannel is the only publisher API and now handles both the socket as well as the publisher internally. This now allows us to create a proper QML api in the new QmlWebChannel. Change-Id: I3096364af8485353ca9bc19df4a81a8e4552c3d7 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Restructure sources and assimilate to Qt module structure.Milian Wolff2013-12-121-0/+207
This module can hopefully be done in time for 5.3. This commit changes the source structure and QMake files to adapt to typical Qt modules. With this in place, we can now use QT += webchannel in qmake files to link against the pure Qt/C++ QtWebChannel library. The QML plugin is separated from it and can be loaded optionally, if the quick module could be found. Also added is now a qmlplugindump for tooling integration. Note that the Qt.labs namespace is removed. The test file structure is also adapted to how its done in the QtDeclarative module. Note that this setup apparently does not support to run tests without running make install first. Change-Id: I1c15d72e7ab5f525d5a6f651f4e965ef86bc17bd Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>