| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Implemented a C++ Server, providing a chatservice through a simple
QObject using QWebChannel and also both a QML and HTML Client to
interact with the server.
The examples show how to use properties, signals and methods,
separated in server and clients.
This reverts commit e8c280a15f7822fa5a563388615313858fd90848.
The integration issues w.r.t. unconditional usage of the
websockets module have been resolved.
Change-Id: I4a07646dcd5e6050d3bd6b9bd1c5b07dbc7d7d69
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
|
| |
| |
| |
| |
| |
| |
| | |
This reverts commit e9ec067e628564e0b065c625dcd7e695857706ac which breaks qt5.git integration
Change-Id: I92f23d1c0891ed0e52348ab36b73541027095146
Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Implemented a C++ Server, providing a chatservice through a simple
QObject using QWebChannel and also both a QML and HTML Client to
interact with the server.
The examples show how to use properties, signals and methods,
separated in server and clients.
Change-Id: I20c84c2104d0bb599ead1771aad499e59657f83e
Reviewed-by: Milian Wolff <milian.wolff@kdab.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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
qwclient can connect to any qwebchannel server using a websocket
transport. The service can then be used through a REPL.
It can, for instance, be used with the standalone example server.
Change-Id: Ie73d19b0376caf2fcf6ae02ec19a56e27bddfd33
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
|
|\ \
| |/
| |
| | |
Change-Id: Ibbab64e34150e1131fadf37f2e84a0a3f618974f
|
| |
| |
| |
| |
| |
| |
| |
| | |
Some testcases do not consider all messages. These changes make
the test wait at specific points until these messages are sent.
Change-Id: Ie8f4b9492fefade0be91e7f829824db39d61ddee
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>
|
|/
|
|
| |
Change-Id: I1d56bb01e6c9997eb7eba45e9d804109a3cb6384
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
| |
This is a small sample of a command line chat client which
shows how to use QWebChannel with NodeJS.
See included readme for instructions on how to execute it.
A known port has been introduced to make this work.
Change-Id: If430703f8c2267df758df9d5978509675c8aea9d
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Install qwebchannel.js file and also copy it to the build dir.
This makes the examples subdirectory self-contained and useable when
compiling it from the install directory. Making individual examples
self-contained would cause too much code duplication, so it was not
done.
Change-Id: Ifeb5eac7d05b92779d24cb4da413f3fb173f992d
Reviewed-by: Sumedha Widyadharma <sumedha.widyadharma@basyskom.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
|
|
|
|
|
|
| |
Change-Id: I66b102f0076d8ab39f871ce2be300a1e33228eac
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
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>
|
|
|
|
|
|
|
|
| |
The tests don't depend on QtWebKit anymore, so they should be run even
without QtWebKit installed.
Change-Id: Id60ebec861b29b73522fba670b1a0c19375cb826
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
|
|
|
|
|
|
| |
Change-Id: I0a0e05cf1a6e36a7c9b26dfbe5fc083cd5d0ad2b
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Milian Wolff <milian.wolff@kdab.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>
|
|
|
|
|
| |
Change-Id: I908f06bdcea1dfa422cf70817df48cdb1d290690
Reviewed-by: Milian Wolff <milian.wolff@kdab.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>
|
|
|
|
|
|
|
|
| |
This module will be shipped with Qt 5.4.0, so set the version
accordingly. Furthermore, the warning_clean flag is added to CONFIG.
Change-Id: Id8936dc496bf585f838842bcc29fff238523927b
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.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>
|