| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| |
| |
| |
| | |
Conflicts:
.qmake.conf
Change-Id: Ia5b809f6aeaa29c6acd6f45b696da285fe06b5f2
|
| |
| |
| |
| |
| | |
Change-Id: Ib45c48613c687fdfcafd121ed9d4932cbc116799
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| |
| |
| |
| |
| |
| |
| |
| | |
Also adapt the .pro file so that future updates can just be triggered
by 'make qmltypes'.
Change-Id: Ide120291c89e4e37991e87663b32be03af0e3f88
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Similar to the support for factory-methods, we must wrap objects in
properties to make them accessible to clients. This patch adds the
required code for that. Besides support for simple properties that
reference an object, this patch also adds support for list properties
that contain objects.
The client-side unwrap of properties is delayed until all objects
are initialized, as a property might reference another registered
object.
Change-Id: I9fb90a8eab4c66d2f4231fdb482e0d97d128df3e
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The tests have been flaky on the CI. And indeed, running the tests
locally under valgrind, which heavily influences the timings, I could
reproduce failures on my local machine as well.
The failure was due to multiple things, but most notably boils down
to intermittend property update noficiations. To reduce that, the
myFactory.lastObj property is propagated up. This way, any change to
that property won't be propagated to the clients and influence the
test.
Furthermore, the failing tests are hardened by also checking the
server messages, which is crucial to correct the flow of messages.
Finally, a bug was found, where an empty property change could be
broadcasted to all clients, when only a specific client's object got
its properties changed. This is also fixed by this patch now.
Change-Id: I2c7ba53253e2841db1a290872dacb097a7b984cf
Reviewed-by: Bernd Lamecker <bernd.lamecker@basyskom.com>
Reviewed-by: Risto Avila <risto.avila@theqtcompany.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Signals and property changes caused by dynamically created
qobjects (qobjects returned from a method call at runtime)
should not be broadcasted to any client but only sent to clients
which know these qobjects.
Also added testcases for the changes.
Change-Id: I9aacfa9e7e9df9314b44c6ba8e7339a2069e3c37
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Currently, a new client gets a list of _all_ registered QObjects,
whether they were explicitly registered or not.
This leaks internal information which the clients cannot use right away
anyway.
Change-Id: I4b25a731e9bc2d646f903057b409aecd34dc7f11
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Instead, send the data as a response to the initialization request
message. This simplifies the code and makes it more predictable, as we
do not spam all clients with initialization broadcasts anymore.
Note that the pending initialization "feature" is removed, but I don't
see a need for it anymore. If you want to delay client initialization,
do it on the client side.
Change-Id: I1ab71fd6c9e809ccb6085f1a3fbac3eb9b2e910b
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
|
|\ \
| |/
| |
| |
| |
| |
| | |
Conflicts:
examples/webchannel/webchannel.pro
Change-Id: Ia768202d177a24ae90358b5d88621a5fa88f9002
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The conversion from QJSValue to QJsonArray seems to work just fine
with Qt 5.4. Originally, this work-around was introduced to fix the QML
tests, which still pass without this code now.
Change-Id: Id52a5a16ebe25914f01d597778152e0595c9f1f4
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The web channel always connects to that signal automatically for
internal book-keeping purposes. Thus we do not have to connect to the
signal for wrapped objects. This simplifies the tests and reduces the
IPC traffic for wrapped objects.
Change-Id: Iaf8d9ce0b87874917cdcdf9013e21a53ee36b53a
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
|
| |
| |
| |
| |
| | |
Change-Id: I1358cab3e60158b7b21b38907f872a0a7a007e71
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
|
|\ \
| |/
| |
| | |
Change-Id: I7179dcfb603cb01a62b66d0860fb57f9ef98d6d8
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
For static linkage we need to explicitly reference the plugin factory class, to
prevent the linker from discarding the symbol. The Qt build system takes care of
generating the necessary code for referencing the symbol and linking that reference
into the application - see also qt.prf. For the build system to do this automatically,
it needs to know the class name, which is stored in the qmldir file.
This patch adds the missing class name. The first failure for this was when
building the tests/auto/qml test, which specifies an IMPORTPATH that causes the
qml import scanner to find the erroneous qmldir file and error out (see
qt.prf). However otherwise this error would've appeared when trying to link an
app on say iOS for example.
Change-Id: Ia28307593e651d038ff1daaea7597f6eb5e40eb1
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
|
|/
|
|
|
|
|
|
|
|
| |
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).
Change-Id: I384b9e9dc280887d41bbfa59476400e9d8b1199b
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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>
|
|
|
|
|
|
|
|
|
|
|
|
| |
This was a historic artefact which should not be required anymore.
Back then it was added when trying to improve the perceived performance
of the webchannel on an embedded device. Nowadays, using the built-in
WebKit IPC mechanism instead of WebSockets, paired with the rest of
the code cleanup and other changes, it should not be required anymore.
Change-Id: I4b2d76d84aaf92e12592a0b2bcf94710b697846e
Reviewed-by: Lutz Schönemann <lutz.schoenemann@basyskom.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
| |
As the examples include files with extension that are not
included in the global Qt documentation config, add them
to the module's .qdocconf to get the files listed in the
example documentation pages.
Change-Id: Ifc3bf473b67d6acc795ce3f951f0c5269d69b69c
Task-number: QTBUG-40831
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
|
|
|
|
|
|
|
|
|
| |
Returned QObject pointer got wrapped correctly but
a wrong QJsonObject was given to initializePropertyUpdates()
method.
Change-Id: I157b862ba2a90e87c295beb3c02fff932aac83c6
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
|
|
|
|
|
|
|
| |
qwebchannel.h:60:101: error: extra ‘;’ [-Wpedantic]
Change-Id: I7623b68ace59431266ca6a48bfa23bc306363e7e
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
|
|
|
|
|
|
|
|
|
| |
-added 'qtdoc' to the depends variables in
qtwebchannel.qdocconf file
Task-number: QTBUG-40756
Change-Id: Ida3e1aa1237bcd91f0280d1969c2361f4ee70405
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
|
|
|
|
|
| |
Change-Id: Ic51555b34823354092a5a4e8583c51d50a1aded8
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
| |
If QtWebChannel is used with a synchronous transport it can
happen that the clients idle state is wrong because the clients
idle message is received before the idle state is set to
'false'.
This patch changes the order of setting the idle state and
broadcasting the property update message to avoid that problem.
Change-Id: I7762b5279febb99d3cb2e110ec9306596fc71e14
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
The JS lib will miss to add QObjects to the local
object descriptions when receiving a new description
and the user has not registered a callback function.
This patch makes the lib execute unwrapQObject for
all responses received from a function call.
Change-Id: I72d872d65a7e7bec1d7e6ffb1eea674d0f6e50d7
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of using stringified pointers to identify
objects this patch creates UUIDs (version 4) for
every object that get's wrapped by QMetaObjectPublisher
Especially when using QtWebChannel to publish an
interface to the network it comes to the point
that you don't want to publish internal memory
addresses
Change-Id: I7e3fec7497d63572cfba72a5dacc10542aef415c
Reviewed-by: Sumedha Widyadharma <sumedha.widyadharma@basyskom.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
Reviewed-by: Michael Bruning <michael.bruning@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
| |
This assimilates the JavaScript side to the QML/C++ side. We get rid
of the automagic WebSocket code. Instead, users pass in the WebSocket
from the outside, if they want to use that for communication. In the
QtWebKit/QtWebEngine cases, we will pass in our custom IPC objects.
Change-Id: I15e15b5130f99dc8b39dfbfa8cd3d8b2d34dbbc0
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Reviewed-by: Lutz Schönemann <lutz.schoenemann@basyskom.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
The module.export allows qwebchannel.js being included and used from
within a nodejs environment.
Change-Id: I3db6ba85e8d3406031c0262815e50aca0f214ace
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
|
|
|
|
|
|
|
|
| |
QWebChannelPrivate was declared as struct, even though it is defined as
class later on. Clang emits a warning in such cases.
Change-Id: Ia5988d229d41f02493035e2502955e92079f2baf
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
|
|
|
|
|
| |
Change-Id: I700f1e1d6508dd4d861bec4f5aa15b666d6eecc0
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
|
|
|
|
|
|
|
|
|
|
| |
__define[SG]etter__ are non-standard.
Object.defineProperty is the standard way to do this.
See also: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/__defineGetter__
Change-Id: If58e420fe84ef2fbb005838955fabf9d96f225b0
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
|
|
|
|
|
|
|
|
|
|
| |
This is a minor cleanup commit. Renaming the .pro file is required
for qt.pro to find it. The rename of the resource path makes it more
explicit by using the module name.
Change-Id: Ib724882d02d2a8aea7468ef984ed573dca1d3e7b
Reviewed-by: Michael Bruning <michael.bruning@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
This is useful for integration into QtWebKit.
Change-Id: I80d79c0ed8a627d62ee45090d7bceca22fdf56ce
Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
|
|
|
|
|
|
|
| |
It is not required anymore.
Change-Id: Ifb76ed515193591a09a81b73edee12703d16d04c
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The utility QWebChannelAbstractTransport implementation based on the
QtWebSocket has no big value. Instead, it would pull in the QtWebSocket
link-time dependency into QtWebKit/QtWebEngine, which is not desired.
Considering that the WebSocket usecase is minor, and only few people
will ever use it, we agreed that having the code in the example alone
is enough.
Change-Id: Ica038329a1d684f33e805fc296e9dff71b1446ba
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
This simplifies the usage and lets properties be used just like normal
JavaScript properties. This is possible since the properties are cached
on the HTML side.
Change-Id: Ic60076f4596cd8df063567dfbd630e5bd6403119
Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
|
|
|
|
|
|
|
|
|
| |
QtWebEngineCore has to build that way, so we better make sure the
two can play nicely together.
Change-Id: Ibab5a2d042b3c8ea230922aeca6768ffec2ca452
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|