| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
| |
Replace the current license disclaimer in files by
a SPDX-License-Identifier.
License files are organized under LICENSES directory.
Pick-to: 6.4
Task-number: QTBUG-67283
Change-Id: I315d7ce1d6c6c3497afdfe8b61a113fdc181c935
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move the implementations of setRegistryUrl() and setHostUrl() virtual
methods to the non-virtual methods in the corresponding private classes
and call them from the constructors. Although in the context of the
current code the virtual method calls were legal and didn't lead to
anything unexpected, but generally it's not recommended (so the
codechecker complains) and can lead to issues in future, for example
when refactoring or changing the code.
Pick-to: 6.2
Task-number: QTBUG-95752
Change-Id: I13b97e3a1e179b0e5ce5bc7e9bbb9f5bb7166ebb
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Added QtRO prefix to IoDeviceBase, ServerIoDevice and ClientIoDevice
classes. These classes are exported and can be used externally for
supporting a custom transport by deriving from them and implementing
the virtual methods. Added the prefix also to ExternalIoDevice, to keep
the naming consistent.
Pick-to: 6.2
Change-Id: I64845cff55687a127d2c43de03ecc65ac9bd321b
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
This is more appropriate than having a separate mapping of connection to
Codec.
Change-Id: I3b54bfb479de04706a3f9563e7a987af91d0282d
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
|
|
|
|
|
|
|
|
|
|
| |
This hides implementation details and allows for different implementations
in the future.
Change-Id: I5502bb040afe502f7b127668cf7ff81ee79f5e89
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This addresses the regressions from moving to Qt6's metatype changes. The
underlying changes in QtBase allow for better compile time support for
type generation and automatically clear dynamically generated types based
on reference count.
There are three primary fixes.
1) For Gadgets, the constructor needs to copy the original QVariantList
instance in to the newly constructed value. This is the only way the
types of the variants will be known for the QDataStream `>>` operator
to work.
2) Enum registration needs to occur _before_ the metaobjectbuilder's
toMetaObject() method is called in order for property metaobject's to
be defined.
3) A little surprisingly, it is the id() method on the QMetaType that does
the actual registration, and the object this is called on needs to be
kept around to keep the reference count and prevent unregistration.
Fixes: QTBUG-83333
Task-number: QTBUG-84590
Change-Id: Ie93ff60276177c3c713dd0bd3bfc08a03cf98e07
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
|
|
|
|
|
|
|
|
| |
If the server goes away, we must unproxy the objects. Otherwise if the
server returns we will end up attempting to reproxy the same objects.
As a side effect the proxy_multprocess autotest becomes more stable.
Change-Id: I9f3f0c9e4aa40790da7a999273badb141beacd62
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds new tests for checking that the proxy (which uses dynamic
replicas to avoid needing to include headers for all proxied types) works
correctly over multiple processes.
This found several edge cases not seen in the earlier (single process)
proxy auto tests.
1) When sending a new sub class to a dynamic replica, the properties need
to be stored in a separate QByteArray and extracted after the metatype
info (for both classes and gadgets) is processed.
2) When the templated acquire is used, the metatype information needs to
be added to the dynamicTypeManager.
3) There is an edge case where the DynamicApiMap for a null object could
not be built correctly. In this case, it needed to be regenerated once
a valid object was available for the Replica sub-class.
4) There were several edge cases where the typeName needed to be updated.
[ChangeLog][Important Behavior Changes] Qt Remote Objects uses an internal
protocol to pass data between processes and/or devices. The same protocol
version needs to be used on all sides. The version was bumped from 1.2 to
1.3 in this release, fixing potential crashes (see QTBUG-75017). If there
is a mismatch, the connecting node will output a warning and the host node
will not send any data.
Change-Id: I7af50f16ed370351eb0692d5f4b983848846b504
Fixes: QTBUG-75017
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
|
|
|
|
|
|
|
|
|
| |
Always prepend the module and use headers directly.
Qt for Python requires the modules to be present.
Task-number: PYSIDE-862
Fixes: QTBUG-72675
Change-Id: I94e38fbab0f041370ca9d67ca13c78f0d33816b7
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
|
|
|
|
|
|
| |
Change-Id: I370e462780e25b788afc599f03ef2189e41d6476
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
|
|\
| |
| |
| | |
Change-Id: Ia8536328b6ea1c25923e40b473be54045375d31f
|
| |
| |
| |
| |
| | |
Change-Id: Ie3fd6a57559604aea231aad7936ffbaf9cdce185
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This adds the APIs that will be necessary to create SSL sockets flexibly
(and outside of QtRO) and pass them in. The integration tests are extended
to show everything works if the tcp/ip connection is created outside QtRO.
The Registry is supported by allowing an "external schema" to be set as the
HostNode's url, which is then used by the registry as the address for any
remoted() source objects. The client Node calls registerExternalSchema()
with a std::function callback that can create the client-side QIODevice
given the registry provided url.
Change-Id: I0f2d0ea270771e096a787134ef87d537769045f6
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
|\|
| |
| |
| |
| |
| |
| | |
Conflicts:
src/remoteobjects/qremoteobjectnode.cpp
Change-Id: I91e662166909a52817e2e14d2b379c46b3756d89
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Prior to supporting nested source objects (internally), there was no way
to support changing pointed to objects. Thus repc forced MODEL and CLASS
types to be CONSTANT. This change adds update support, which required a
few internal changes.
First of all, the Q_PROPERTY flags were extended to include a new mode,
SOURCEONLYSETTER. Having a replica setter for a pointer type makes no
sense (it wouldn't then be part of the API contract, and would fail if
the Node containing the replica dropped off the bus). So READWRITE didn't
make sense for pointer types. That left READONLY, but that mode generated
a protected, not public, setter on the Source side (the idea being that
something internal to the source class, not public, would change the
values). This would limit the functionality of pointer types, as they
could only be updated by inheriting from a Source class. Adding
SOURCEONLYSETTER addresses this, making the property read-only on the
replica-side, but read/write (with a public setter) on the source-side.
MODEL/CLASS now use SOURCEONLYSETTER.
Another internal impact is that templated acquire calls (where metaobject
data does not need to be sent from the source to define the type) can now
be updated, which requires storing the compile-time generated metaobject
for re-use. Thus a staticTypes member was added to the node metaoject-
manager.
Several tests (the ones with pointer-to-qobject properties) needed updating
since those properties are not constant anymore, and thus don't have (or
require) constructor parameters for setting the values.
Change-Id: If20cb0fb673d5e91613f9c238b514ed05380f975
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This would support, for example, using the "local" (or "qnx") backend on
a target, while still supporting debug via proxying the same objects over
a single tcp connection.
It should also, in theory, support converting to other marshalling formats
(maybe CBOR?).
Change-Id: Ib3c536d0c99b7a722c1c6ed145c8b5b567453f76
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
|\|
| |
| |
| | |
Change-Id: I1a0f084cf418f0eae22891d2011c00bac8e54476
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The change allows the registry to use the automatic reconnect strategy to
repeat the attempts to connect if the registry is not initially available.
It also takes advantage of the registry replica's storage of known types,
to allow replicas and sources to be used before the registry initialization
occurs, thus removing the need for the node's atomic isInitialized
parameter.
Change-Id: I1734988f0c7926ff4fb64dbc9a5fd35fee889e7a
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
|\|
| |
| |
| | |
Change-Id: I7d3ccacaf7d2ce429a530993e4ea81cf3adf7958
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We create a new type (QRO_) to allow storing a subclass as a variant. Thus
when a QObject* property is marshalled, all of the pointed to properties
can be sent as a single variant. This can be decoded into the proper type
on the replica side.
This required giving Node's private a new QRemoteObjectMetaObjectManager,
a class to handle the building of dynamic metatypes.
Change-Id: Ib83b1edb2fd37dd12defb066d4c2b69509985eaa
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
|/
|
|
|
|
|
| |
Change-Id: I3ab651af68389bb7ea3aad1595873c9488f3dd9d
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Class and Model extensions to QML are very similar in that they come
down to additional QObject derived types that need to be made available
to the QtRO bus. The original Model behavior only supported c++ templated
calls on the source and replica side.
This change adds support for nested classes, via an extension to the .rep
file format. Similar to how POD types work, if multiple classes are
described in a .rep file, a class can include other classes as children.
When the `parent` is acquired, all child classes will be acquired as
well, automatically.
The syntax is `CLASS <name>(<type>), where type needs to be a class
defined in the same rep file, and the name is the getter name used to
access the sub-QObject. See tests/auto/subclassreplica/class.rep for an
example of usage.
This change includes supporting the non-templated enableRemoting() call,
as well as using/constructing replica types from QML for both Class and
Model.
Future TODO - update docs
Change-Id: Ib1e75c1a6db44497f78026e7f89caab5da94375b
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
|
|
|
|
|
|
|
|
|
| |
This property can be used to periodically check the connection between
the replica and the source. If the connection is lost, the replica
enters in the "Suspect" state and will attempt to reconnect.
Task-number: QTBUG-64086
Change-Id: Icf67e173073c9d277575c8faf01a0a1ffab5bc07
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/remoteobjects/qremoteobjectabstractitemmodeladapter_p.h
src/remoteobjects/qremoteobjectdynamicreplica.cpp
src/remoteobjects/qremoteobjectnode_p.h
src/remoteobjects/qremoteobjectregistry.cpp
tests/auto/auto.pro
tools/repc/repcodegenerator.cpp
Done-with: BogDan Vatra <bogdan@kdab.com>
Change-Id: I9d0230736b768eac44b06376aeaab1b0b09eb22a
|
| |
| |
| |
| |
| |
| |
| |
| | |
[ChangeLog] This is a backwards incompatible change, but is required for
future changes to the underlying datastream protocol
Change-Id: I7399977b99ede6308ecfa81dbdd2387027b2007b
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
All those implementations for the QtROReplica ('InProcess', 'Connected',
'RemoteObject') aren't technically d-pointers. Mark them as such by
naming them differently.
This also has the nice benefit that one does not override QObject's
'd_ptr' variable accidentally with these implementation instances.
Needed in order to pimpl QRemoteObjectRegistry properly
Change-Id: I88322e37d2ff7e5044980e8fdf9f713d6be80c38
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Rename QRemoteObjectPersistedStore to QRemoteObjectAbstractPersistedStore to
reflect that this class contains virtual functions
Change-Id: I39a721332ace9d5c49afd58cfdf3d083c8e01ff0
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The idea is to make this class usable from within QML.
One idea how this could be used inside QML:
Node {
registryUrl: "local:myUrl"
persistedStore: DiskStore { root: "/fs/rwdata/" }
// or: InMemoryStore {}
// or: SqlStore { database: "myDB" }
// or: ...
}
Note: This patch breaks source and binary compatibility due to the
following changes:
- enum StorageOwnership
- void setPersistedStore(QRemoteObjectPersistedStore *store, StorageOwnership ownership=DoNotPassOwnership);
+ void setPersistedStore(QRemoteObjectPersistedStore *store);
Change-Id: Ib6668fec9d688ecee81be66f53dedc35597baae9
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
|
|/
|
|
|
| |
Change-Id: Id67366f3eaf251b1f2c8d9a91a41dec72117cc7c
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
|
|\
| |
| |
| |
| |
| |
| | |
Conflicts:
.qmake.conf
Change-Id: I2dacf93b383ca1b8d56caefb8ff9c4e5aa5e4fca
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Unify licensing as it is in other submodules
- Src is licensed under Commercial, LGPLv3, GPLv2 and GPLv3 licenses
- Examples are licensed under Commercial and BSD licenses
- Tools and tests are licensed under commercial and GPLv3 license with
some exceptions
Task-number: QTBUG-58921
Change-Id: I4494bf8b705568b243340c98316bedd706145db5
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
|
|\|
| |
| |
| | |
Change-Id: Icb1840ff398c65335b8b7352af088aeae01f7c1d
|
| |
| |
| |
| |
| | |
Change-Id: I0ff4b3434a5d4b26bf68b96db28691186813e10d
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
|
|/
|
|
|
|
|
|
|
| |
Since qtbase.git commit 29bcbeab90210da80234529905d17280374f9684,
QSignalMapper is deprecated
Change-Id: Iedd6aaed8d4a6eaff12298aff4b0c01a781fe1af
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
Reviewed-by: Continuous Integration (KDAB) <build@kdab.com>
|
|
|
|
|
|
|
|
| |
Change-Id: I3cf39180b08b80ea65c46e7b6a9e81f3aa79d1af
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
Reviewed-by: Continuous Integration (KDAB) <build@kdab.com>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
|
|
|
|
|
|
|
|
| |
- Add "we mean it" warning to private headers
- Properly include module headers in public headers
Change-Id: I3feded431f890fd451c07920edb102ae902a0fb9
Reviewed-by: Continuous Integration (KDAB) <build@kdab.com>
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Replicas already provide a mechanism to show a default value before the
connection to the Source is established. This enhancement allows the
.rep PROP definition to include a 'PERSISTED' flag as well, which saves
the property value when the Replica is stopped and restores the value
when it is started again.
Because a shared dll (QtRO) should not know or care where and how values
are persisted, a persistence class needs to be set for the owner Node
for this feature to work.
Change-Id: I5718b024fd268c95d1add2b1be49e6864127782e
Reviewed-by: Continuous Integration (KDAB) <build@kdab.com>
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
|
|
|
|
|
|
|
|
| |
If the signature mismatch it will not complete the connection and will
signal the error.
Change-Id: Idd4a7a5290bb60d7428e16047a1b82db5e52b372
Reviewed-by: Continuous Integration (KDAB) <build@kdab.com>
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
|
|
|
|
|
|
|
|
| |
Notifies about changes in the QRemoteObject::lastError property
Change-Id: I080d78f3235fea35e6bab0c37aac693ba1cefae2
Reviewed-by: Continuous Integration (KDAB) <build@kdab.com>
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
|
|
|
|
|
|
|
|
| |
Consistency++
Change-Id: Id121813f78287ca0c03774986b3f1daf019d08bd
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
Reviewed-by: Continuous Integration (KDAB) <build@kdab.com>
|
|
|
|
|
|
| |
Change-Id: Idc222afe132083f617fd9b424685a4ed8168974f
Reviewed-by: Continuous Integration (KDAB) <build@kdab.com>
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
|
|
|
|
|
|
|
|
|
| |
Extend QRemoteObjectSourceLocation to also carry the type name of the
object.
Change-Id: Ic50b3682343b92099a5e2f6c564bd10cc543356c
Reviewed-by: Continuous Integration (KDAB) <build@kdab.com>
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
|
|
|
|
|
|
|
|
| |
Also cleans up the logic a bit
Change-Id: I0c8b4a5cfd1f3874ecac384f3c5fbb2fa8e35f49
Reviewed-by: Continuous Integration (KDAB) <build@kdab.com>
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This requires a code refactor to let the Replica initialize
itself, rather than have the Node's acquire() call do the
initialization.
It also requires adding a 2nd constructor for all Replica
types.
Change-Id: I2bcad98a6b5a8ac958e8206cd5069f48e230f2d4
Reviewed-by: Continuous Integration (KDAB) <build@kdab.com>
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before a default Replica constructor can be provided, there
needs to be a Replica private type that supports the default
functionality (isInitialized, get/set/default properties) but
isn't tied to a Node. This change adds said stub private type.
Change-Id: I3665586670967edbeeda6e03130e6cfe544f324f
Reviewed-by: Continuous Integration (KDAB) <build@kdab.com>
Reviewed-by: Kevin Funk <kfunk@kde.org>
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change affects lots of lines of code, but is
basically a refactoring, not changing much. It
does change the QtRO API, though.
In the interest of making it easier to expose QtRO
types to QML, the move to QObject types for Nodes was
necessary.
The static generators allowed for different "types"
of Nodes to be created with different combinations of
1 or 2 QUrl parameters, but this also forced a Node
type that had methods that might not make sense (for
instance, enableRemoting() from a Node that wasn't a
Host Node). And Nodes needed to be copy-able.
This change addresses those issues by creating
three distinct types. QRemoteObjectNode is
the most basic type, and only supports acquiring
Replica objects. QRemoteObjectHost Nodes add the
ability to share Source objects on the network. Both
Node and Host types support connecting to a Registry.
QRemoteObjectRegistryHost Nodes host a Registry object
other nodes can connect to.
This change requires converting end-user code from
the static functions (createHostNode, etc) to using
the new types explicitly.
Aside from the obvious change from static generator
functions, there are two other impacts to user code:
1) connect() was renamed to connectToNode to not
conflict with QObject's connect()
2) default QUrls for Hosting and Registry were removed
(it was too easy to create name clashes with unexpected
results).
Change-Id: Ieff62b95e71dac870367ebb90eab83fb59fc063b
Reviewed-by: Continuous Integration (KDAB) <build@kdab.com>
Reviewed-by: Kevin Funk <kfunk@kde.org>
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
|
|
|
|
|
|
|
|
|
|
| |
A previous change added the parent QObject, but
we still did manual close()/delete.
Change-Id: I8e4e951b6da597dd14a9251c0db206b3ca8acd58
Reviewed-by: Continuous Integration (KDAB) <build@kdab.com>
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
Reviewed-by: Kevin Funk <kfunk@kde.org>
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a large change, but it is completely
a refactoring of code, not code changes. The
connectionfactory classes are now public and
describe the connection backends (local and
tcp/ip).
Instead of putting the client code in a set
of files and the server code in a set of files,
we have local_backend and tcpip_backend which
include both client/server code. The packet
type enums were moved to the global header file
to make them available to additional backends.
Change-Id: I83efc9c1f2013f41f97a4350a31a708f484749e4
Reviewed-by: Continuous Integration (KDAB) <build@kdab.com>
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
Reviewed-by: Allen Winter <allen.winter@kdab.com>
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Removed qconnectionabstractfactory_p.h and made static
versions of the client/server factories. This will make
it possible to add more backends without having to re-
compile the factory constructors.
Change-Id: I5da780cc871c507d5cc67eaeac96817a785355bc
Reviewed-by: Continuous Integration (KDAB) <build@kdab.com>
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
|
|
|
|
|
|
|
|
|
|
| |
Unhappy paths for invalid urls cleaned up.
Change-Id: I8b979f00cc7bd108cf342980201b3a09b5a82763
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
Reviewed-by: Continuous Integration (KDAB) <build@kdab.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
|