qdbusinterface.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/dbus/qdbusinterface.cpp
Source codeSwitch to Preprocessed file
LineSourceCount
1/****************************************************************************-
2**-
3** Copyright (C) 2016 The Qt Company Ltd.-
4** Contact: https://www.qt.io/licensing/-
5**-
6** This file is part of the QtDBus module of the Qt Toolkit.-
7**-
8** $QT_BEGIN_LICENSE:LGPL$-
9** Commercial License Usage-
10** Licensees holding valid commercial Qt licenses may use this file in-
11** accordance with the commercial license agreement provided with the-
12** Software or, alternatively, in accordance with the terms contained in-
13** a written agreement between you and The Qt Company. For licensing terms-
14** and conditions see https://www.qt.io/terms-conditions. For further-
15** information use the contact form at https://www.qt.io/contact-us.-
16**-
17** GNU Lesser General Public License Usage-
18** Alternatively, this file may be used under the terms of the GNU Lesser-
19** General Public License version 3 as published by the Free Software-
20** Foundation and appearing in the file LICENSE.LGPL3 included in the-
21** packaging of this file. Please review the following information to-
22** ensure the GNU Lesser General Public License version 3 requirements-
23** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.-
24**-
25** GNU General Public License Usage-
26** Alternatively, this file may be used under the terms of the GNU-
27** General Public License version 2.0 or (at your option) the GNU General-
28** Public license version 3 or any later version approved by the KDE Free-
29** Qt Foundation. The licenses are as published by the Free Software-
30** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3-
31** included in the packaging of this file. Please review the following-
32** information to ensure the GNU General Public License requirements will-
33** be met: https://www.gnu.org/licenses/gpl-2.0.html and-
34** https://www.gnu.org/licenses/gpl-3.0.html.-
35**-
36** $QT_END_LICENSE$-
37**-
38****************************************************************************/-
39-
40#include "qdbusinterface.h"-
41#include "qdbusinterface_p.h"-
42-
43#include "qdbus_symbols_p.h"-
44#include <QtCore/qpointer.h>-
45#include <QtCore/qstringlist.h>-
46-
47#include "qdbusmetatype_p.h"-
48#include "qdbusconnection_p.h"-
49-
50#ifndef QT_NO_DBUS-
51-
52QT_BEGIN_NAMESPACE-
53-
54static void copyArgument(void *to, int id, const QVariant &arg)-
55{-
56 if (id == arg.userType()) {
id == arg.userType()Description
TRUEevaluated 12 times by 1 test
Evaluated by:
  • tst_qdbusinterface - unknown status
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tst_qdbusinterface - unknown status
4-12
57 switch (id) {-
58 case QVariant::Bool:
never executed: case QVariant::Bool:
0
59 *reinterpret_cast<bool *>(to) = arg.toBool();-
60 return;
never executed: return;
0
61-
62 case QMetaType::UChar:
never executed: case QMetaType::UChar:
0
63 *reinterpret_cast<uchar *>(to) = arg.value<uchar>();-
64 return;
never executed: return;
0
65-
66 case QMetaType::Short:
never executed: case QMetaType::Short:
0
67 *reinterpret_cast<short *>(to) = arg.value<short>();-
68 return;
never executed: return;
0
69-
70 case QMetaType::UShort:
never executed: case QMetaType::UShort:
0
71 *reinterpret_cast<ushort *>(to) = arg.value<ushort>();-
72 return;
never executed: return;
0
73-
74 case QVariant::Int:
never executed: case QVariant::Int:
0
75 *reinterpret_cast<int *>(to) = arg.toInt();-
76 return;
never executed: return;
0
77-
78 case QVariant::UInt:
never executed: case QVariant::UInt:
0
79 *reinterpret_cast<uint *>(to) = arg.toUInt();-
80 return;
never executed: return;
0
81-
82 case QVariant::LongLong:
never executed: case QVariant::LongLong:
0
83 *reinterpret_cast<qlonglong *>(to) = arg.toLongLong();-
84 return;
never executed: return;
0
85-
86 case QVariant::ULongLong:
never executed: case QVariant::ULongLong:
0
87 *reinterpret_cast<qulonglong *>(to) = arg.toULongLong();-
88 return;
never executed: return;
0
89-
90 case QVariant::Double:
never executed: case QVariant::Double:
0
91 *reinterpret_cast<double *>(to) = arg.toDouble();-
92 return;
never executed: return;
0
93-
94 case QVariant::String:
never executed: case QVariant::String:
0
95 *reinterpret_cast<QString *>(to) = arg.toString();-
96 return;
never executed: return;
0
97-
98 case QVariant::ByteArray:
never executed: case QVariant::ByteArray:
0
99 *reinterpret_cast<QByteArray *>(to) = arg.toByteArray();-
100 return;
never executed: return;
0
101-
102 case QVariant::StringList:
never executed: case QVariant::StringList:
0
103 *reinterpret_cast<QStringList *>(to) = arg.toStringList();-
104 return;
never executed: return;
0
105 }-
106-
107 if (id == QDBusMetaTypeId::variant()) {
id == QDBusMet...eId::variant()Description
TRUEevaluated 12 times by 1 test
Evaluated by:
  • tst_qdbusinterface - unknown status
FALSEnever evaluated
0-12
108 *reinterpret_cast<QDBusVariant *>(to) = arg.value<QDBusVariant>();-
109 return;
executed 12 times by 1 test: return;
Executed by:
  • tst_qdbusinterface - unknown status
12
110 } else if (id == QDBusMetaTypeId::objectpath()) {
id == QDBusMet...::objectpath()Description
TRUEnever evaluated
FALSEnever evaluated
0
111 *reinterpret_cast<QDBusObjectPath *>(to) = arg.value<QDBusObjectPath>();-
112 return;
never executed: return;
0
113 } else if (id == QDBusMetaTypeId::signature()) {
id == QDBusMet...d::signature()Description
TRUEnever evaluated
FALSEnever evaluated
0
114 *reinterpret_cast<QDBusSignature *>(to) = arg.value<QDBusSignature>();-
115 return;
never executed: return;
0
116 }-
117-
118 // those above are the only types possible-
119 // the demarshaller code doesn't demarshall anything else-
120 qFatal("Found a decoded basic type in a D-Bus reply that shouldn't be there");-
121 }
never executed: end of block
0
122-
123 // if we got here, it's either an un-dermarshalled type or a mismatch-
124 if (arg.userType() != QDBusMetaTypeId::argument()) {
arg.userType()...Id::argument()Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tst_qdbusinterface - unknown status
0-4
125 // it's a mismatch-
126 //qWarning?-
127 return;
never executed: return;
0
128 }-
129-
130 // is this type registered?-
131 const char *userSignature = QDBusMetaType::typeToSignature(id);-
132 if (!userSignature || !*userSignature) {
!userSignatureDescription
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tst_qdbusinterface - unknown status
!*userSignatureDescription
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tst_qdbusinterface - unknown status
0-4
133 // type not registered-
134 //qWarning?-
135 return;
never executed: return;
0
136 }-
137-
138 // is it the same signature?-
139 QDBusArgument dbarg = arg.value<QDBusArgument>();-
140 if (dbarg.currentSignature() != QLatin1String(userSignature)) {
dbarg.currentS...userSignature)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tst_qdbusinterface - unknown status
0-4
141 // not the same signature, another mismatch-
142 //qWarning?-
143 return;
never executed: return;
0
144 }-
145-
146 // we can demarshall-
147 QDBusMetaType::demarshall(dbarg, id, to);-
148}
executed 4 times by 1 test: end of block
Executed by:
  • tst_qdbusinterface - unknown status
4
149-
150QDBusInterfacePrivate::QDBusInterfacePrivate(const QString &serv, const QString &p,-
151 const QString &iface, const QDBusConnection &con)-
152 : QDBusAbstractInterfacePrivate(serv, p, iface, con, true), metaObject(0)-
153{-
154 // QDBusAbstractInterfacePrivate's constructor checked the parameters for us-
155 if (connection.isConnected()) {
connection.isConnected()Description
TRUEevaluated 131 times by 12 tests
Evaluated by:
  • tst_QSystemTrayIcon
  • tst_qdbusabstractadaptor - unknown status
  • tst_qdbusabstractinterface - unknown status
  • tst_qdbusconnection - unknown status
  • tst_qdbusconnection_no_app - unknown status
  • tst_qdbusconnection_spyhook - unknown status
  • tst_qdbuscontext - unknown status
  • tst_qdbusinterface - unknown status
  • tst_qdbuspendingcall - unknown status
  • tst_qdbuspendingreply - unknown status
  • tst_qdbusreply - unknown status
  • tst_qdbusthreading - unknown status
FALSEevaluated 4 times by 3 tests
Evaluated by:
  • tst_qdbusinterface - unknown status
  • tst_qdbuspendingreply - unknown status
  • tst_qdbusreply - unknown status
4-131
156 metaObject = connectionPrivate()->findMetaObject(service, path, interface, lastError);-
157-
158 if (!metaObject) {
!metaObjectDescription
TRUEevaluated 41 times by 3 tests
Evaluated by:
  • tst_QSystemTrayIcon
  • tst_qdbusabstractadaptor - unknown status
  • tst_qdbusinterface - unknown status
FALSEevaluated 90 times by 11 tests
Evaluated by:
  • tst_qdbusabstractadaptor - unknown status
  • tst_qdbusabstractinterface - unknown status
  • tst_qdbusconnection - unknown status
  • tst_qdbusconnection_no_app - unknown status
  • tst_qdbusconnection_spyhook - unknown status
  • tst_qdbuscontext - unknown status
  • tst_qdbusinterface - unknown status
  • tst_qdbuspendingcall - unknown status
  • tst_qdbuspendingreply - unknown status
  • tst_qdbusreply - unknown status
  • tst_qdbusthreading - unknown status
41-90
159 // creation failed, somehow-
160 // most common causes are that the service doesn't exist or doesn't support introspection-
161 // those are not fatal errors, so we continue working-
162-
163 if (!lastError.isValid())
!lastError.isValid()Description
TRUEnever evaluated
FALSEevaluated 41 times by 3 tests
Evaluated by:
  • tst_QSystemTrayIcon
  • tst_qdbusabstractadaptor - unknown status
  • tst_qdbusinterface - unknown status
0-41
164 lastError = QDBusError(QDBusError::InternalError, QLatin1String("Unknown error"));
never executed: lastError = QDBusError(QDBusError::InternalError, QLatin1String("Unknown error"));
0
165 }
executed 41 times by 3 tests: end of block
Executed by:
  • tst_QSystemTrayIcon
  • tst_qdbusabstractadaptor - unknown status
  • tst_qdbusinterface - unknown status
41
166 }
executed 131 times by 12 tests: end of block
Executed by:
  • tst_QSystemTrayIcon
  • tst_qdbusabstractadaptor - unknown status
  • tst_qdbusabstractinterface - unknown status
  • tst_qdbusconnection - unknown status
  • tst_qdbusconnection_no_app - unknown status
  • tst_qdbusconnection_spyhook - unknown status
  • tst_qdbuscontext - unknown status
  • tst_qdbusinterface - unknown status
  • tst_qdbuspendingcall - unknown status
  • tst_qdbuspendingreply - unknown status
  • tst_qdbusreply - unknown status
  • tst_qdbusthreading - unknown status
131
167}
executed 135 times by 12 tests: end of block
Executed by:
  • tst_QSystemTrayIcon
  • tst_qdbusabstractadaptor - unknown status
  • tst_qdbusabstractinterface - unknown status
  • tst_qdbusconnection - unknown status
  • tst_qdbusconnection_no_app - unknown status
  • tst_qdbusconnection_spyhook - unknown status
  • tst_qdbuscontext - unknown status
  • tst_qdbusinterface - unknown status
  • tst_qdbuspendingcall - unknown status
  • tst_qdbuspendingreply - unknown status
  • tst_qdbusreply - unknown status
  • tst_qdbusthreading - unknown status
135
168-
169QDBusInterfacePrivate::~QDBusInterfacePrivate()-
170{-
171 if (metaObject && !metaObject->cached)
metaObjectDescription
TRUEevaluated 90 times by 11 tests
Evaluated by:
  • tst_qdbusabstractadaptor - unknown status
  • tst_qdbusabstractinterface - unknown status
  • tst_qdbusconnection - unknown status
  • tst_qdbusconnection_no_app - unknown status
  • tst_qdbusconnection_spyhook - unknown status
  • tst_qdbuscontext - unknown status
  • tst_qdbusinterface - unknown status
  • tst_qdbuspendingcall - unknown status
  • tst_qdbuspendingreply - unknown status
  • tst_qdbusreply - unknown status
  • tst_qdbusthreading - unknown status
FALSEevaluated 45 times by 5 tests
Evaluated by:
  • tst_QSystemTrayIcon
  • tst_qdbusabstractadaptor - unknown status
  • tst_qdbusinterface - unknown status
  • tst_qdbuspendingreply - unknown status
  • tst_qdbusreply - unknown status
!metaObject->cachedDescription
TRUEevaluated 42 times by 7 tests
Evaluated by:
  • tst_qdbusabstractadaptor - unknown status
  • tst_qdbusconnection - unknown status
  • tst_qdbusconnection_no_app - unknown status
  • tst_qdbusconnection_spyhook - unknown status
  • tst_qdbuscontext - unknown status
  • tst_qdbusinterface - unknown status
  • tst_qdbusthreading - unknown status
FALSEevaluated 48 times by 6 tests
Evaluated by:
  • tst_qdbusabstractadaptor - unknown status
  • tst_qdbusabstractinterface - unknown status
  • tst_qdbusinterface - unknown status
  • tst_qdbuspendingcall - unknown status
  • tst_qdbuspendingreply - unknown status
  • tst_qdbusreply - unknown status
42-90
172 delete metaObject;
executed 42 times by 7 tests: delete metaObject;
Executed by:
  • tst_qdbusabstractadaptor - unknown status
  • tst_qdbusconnection - unknown status
  • tst_qdbusconnection_no_app - unknown status
  • tst_qdbusconnection_spyhook - unknown status
  • tst_qdbuscontext - unknown status
  • tst_qdbusinterface - unknown status
  • tst_qdbusthreading - unknown status
42
173}
executed 135 times by 12 tests: end of block
Executed by:
  • tst_QSystemTrayIcon
  • tst_qdbusabstractadaptor - unknown status
  • tst_qdbusabstractinterface - unknown status
  • tst_qdbusconnection - unknown status
  • tst_qdbusconnection_no_app - unknown status
  • tst_qdbusconnection_spyhook - unknown status
  • tst_qdbuscontext - unknown status
  • tst_qdbusinterface - unknown status
  • tst_qdbuspendingcall - unknown status
  • tst_qdbuspendingreply - unknown status
  • tst_qdbusreply - unknown status
  • tst_qdbusthreading - unknown status
135
174-
175-
176/*!-
177 \class QDBusInterface-
178 \inmodule QtDBus-
179 \since 4.2-
180-
181 \brief The QDBusInterface class is a proxy for interfaces on remote objects.-
182-
183 QDBusInterface is a generic accessor class that is used to place calls to remote objects,-
184 connect to signals exported by remote objects and get/set the value of remote properties. This-
185 class is useful for dynamic access to remote objects: that is, when you do not have a generated-
186 code that represents the remote interface.-
187-
188 Calls are usually placed by using the call() function, which constructs the message, sends it-
189 over the bus, waits for the reply and decodes the reply. Signals are connected to by using the-
190 normal QObject::connect() function. Finally, properties are accessed using the-
191 QObject::property() and QObject::setProperty() functions.-
192-
193 The following code snippet demonstrates how to perform a-
194 mathematical operation of \tt{"2 + 2"} in a remote application-
195 called \c com.example.Calculator, accessed via the session bus.-
196-
197 \snippet code/src_qdbus_qdbusinterface.cpp 0-
198-
199 \sa {Qt D-Bus XML compiler (qdbusxml2cpp)}-
200*/-
201-
202/*!-
203 Creates a dynamic QDBusInterface object associated with the-
204 interface \a interface on object at path \a path on service \a-
205 service, using the given \a connection. If \a interface is an-
206 empty string, the object created will refer to the merging of all-
207 interfaces found in that object.-
208-
209 \a parent is passed to the base class constructor.-
210-
211 If the remote service \a service is not present or if an error-
212 occurs trying to obtain the description of the remote interface-
213 \a interface, the object created will not be valid (see-
214 isValid()).-
215*/-
216QDBusInterface::QDBusInterface(const QString &service, const QString &path, const QString &interface,-
217 const QDBusConnection &connection, QObject *parent)-
218 : QDBusAbstractInterface(*new QDBusInterfacePrivate(service, path, interface, connection),-
219 parent)-
220{-
221}
executed 135 times by 12 tests: end of block
Executed by:
  • tst_QSystemTrayIcon
  • tst_qdbusabstractadaptor - unknown status
  • tst_qdbusabstractinterface - unknown status
  • tst_qdbusconnection - unknown status
  • tst_qdbusconnection_no_app - unknown status
  • tst_qdbusconnection_spyhook - unknown status
  • tst_qdbuscontext - unknown status
  • tst_qdbusinterface - unknown status
  • tst_qdbuspendingcall - unknown status
  • tst_qdbuspendingreply - unknown status
  • tst_qdbusreply - unknown status
  • tst_qdbusthreading - unknown status
135
222-
223/*!-
224 Destroy the object interface and frees up any resource used.-
225*/-
226QDBusInterface::~QDBusInterface()-
227{-
228 // resources are freed in QDBusInterfacePrivate::~QDBusInterfacePrivate()-
229}-
230-
231/*!-
232 \internal-
233 Overrides QObject::metaObject to return our own copy.-
234*/-
235const QMetaObject *QDBusInterface::metaObject() const-
236{-
237 return d_func()->metaObject ? d_func()->metaObject : &QDBusAbstractInterface::staticMetaObject;-
238}-
239-
240/*!-
241 \internal-
242 Override QObject::qt_metacast to catch the interface name too.-
243*/-
244void *QDBusInterface::qt_metacast(const char *_clname)-
245{-
246 if (!_clname) return 0;-
247 if (!strcmp(_clname, "QDBusInterface"))-
248 return static_cast<void*>(const_cast<QDBusInterface*>(this));-
249 if (d_func()->interface.toLatin1() == _clname)-
250 return static_cast<void*>(const_cast<QDBusInterface*>(this));-
251 return QDBusAbstractInterface::qt_metacast(_clname);-
252}-
253-
254/*!-
255 \internal-
256 Dispatch the call through the private.-
257*/-
258int QDBusInterface::qt_metacall(QMetaObject::Call _c, int _id, void **_a)-
259{-
260 _id = QDBusAbstractInterface::qt_metacall(_c, _id, _a);-
261 if (_id < 0 || !d_func()->isValid || !d_func()->metaObject)-
262 return _id;-
263 return d_func()->metacall(_c, _id, _a);-
264}-
265-
266int QDBusInterfacePrivate::metacall(QMetaObject::Call c, int id, void **argv)-
267{-
268 Q_Q(QDBusInterface);-
269-
270 if (c == QMetaObject::InvokeMetaMethod) {
c == QMetaObje...vokeMetaMethodDescription
TRUEevaluated 28 times by 2 tests
Evaluated by:
  • tst_qdbusinterface - unknown status
  • tst_qdbusthreading - unknown status
FALSEnever evaluated
0-28
271 int offset = metaObject->methodOffset();-
272 QMetaMethod mm = metaObject->method(id + offset);-
273-
274 if (mm.methodType() == QMetaMethod::Signal) {
mm.methodType(...Method::SignalDescription
TRUEevaluated 12 times by 2 tests
Evaluated by:
  • tst_qdbusinterface - unknown status
  • tst_qdbusthreading - unknown status
FALSEevaluated 16 times by 1 test
Evaluated by:
  • tst_qdbusinterface - unknown status
12-16
275 // signal relay from D-Bus world to Qt world-
276 QMetaObject::activate(q, metaObject, id, argv);-
277-
278 } else if (mm.methodType() == QMetaMethod::Slot || mm.methodType() == QMetaMethod::Method) {
executed 12 times by 2 tests: end of block
Executed by:
  • tst_qdbusinterface - unknown status
  • tst_qdbusthreading - unknown status
mm.methodType(...taMethod::SlotDescription
TRUEevaluated 16 times by 1 test
Evaluated by:
  • tst_qdbusinterface - unknown status
FALSEnever evaluated
mm.methodType(...Method::MethodDescription
TRUEnever evaluated
FALSEnever evaluated
0-16
279 // method call relay from Qt world to D-Bus world-
280 // get D-Bus equivalent signature-
281 QString methodName = QString::fromLatin1(mm.name());-
282 const int *inputTypes = metaObject->inputTypesForMethod(id);-
283 int inputTypesCount = *inputTypes;-
284-
285 // we will assume that the input arguments were passed correctly-
286 QVariantList args;-
287 args.reserve(inputTypesCount);-
288 int i = 1;-
289 for ( ; i <= inputTypesCount; ++i)
i <= inputTypesCountDescription
TRUEevaluated 20 times by 1 test
Evaluated by:
  • tst_qdbusinterface - unknown status
FALSEevaluated 16 times by 1 test
Evaluated by:
  • tst_qdbusinterface - unknown status
16-20
290 args << QVariant(inputTypes[i], argv[i]);
executed 20 times by 1 test: args << QVariant(inputTypes[i], argv[i]);
Executed by:
  • tst_qdbusinterface - unknown status
20
291-
292 // make the call-
293 QDBusMessage reply = q->callWithArgumentList(QDBus::Block, methodName, args);-
294-
295 if (reply.type() == QDBusMessage::ReplyMessage) {
reply.type() =...::ReplyMessageDescription
TRUEevaluated 16 times by 1 test
Evaluated by:
  • tst_qdbusinterface - unknown status
FALSEnever evaluated
0-16
296 // attempt to demarshall the return values-
297 args = reply.arguments();-
298 QVariantList::ConstIterator it = args.constBegin();-
299 const int *outputTypes = metaObject->outputTypesForMethod(id);-
300 int outputTypesCount = *outputTypes++;-
301-
302 if (mm.returnType() != QMetaType::UnknownType && mm.returnType() != QMetaType::Void) {
mm.returnType(...e::UnknownTypeDescription
TRUEevaluated 16 times by 1 test
Evaluated by:
  • tst_qdbusinterface - unknown status
FALSEnever evaluated
mm.returnType(...MetaType::VoidDescription
TRUEevaluated 16 times by 1 test
Evaluated by:
  • tst_qdbusinterface - unknown status
FALSEnever evaluated
0-16
303 // this method has a return type-
304 if (argv[0] && it != args.constEnd())
argv[0]Description
TRUEevaluated 12 times by 1 test
Evaluated by:
  • tst_qdbusinterface - unknown status
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tst_qdbusinterface - unknown status
it != args.constEnd()Description
TRUEevaluated 12 times by 1 test
Evaluated by:
  • tst_qdbusinterface - unknown status
FALSEnever evaluated
0-12
305 copyArgument(argv[0], *outputTypes++, *it);
executed 12 times by 1 test: copyArgument(argv[0], *outputTypes++, *it);
Executed by:
  • tst_qdbusinterface - unknown status
12
306-
307 // skip this argument even if we didn't copy it-
308 --outputTypesCount;-
309 ++it;-
310 }
executed 16 times by 1 test: end of block
Executed by:
  • tst_qdbusinterface - unknown status
16
311-
312 for (int j = 0; j < outputTypesCount && it != args.constEnd(); ++i, ++j, ++it) {
j < outputTypesCountDescription
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tst_qdbusinterface - unknown status
FALSEevaluated 16 times by 1 test
Evaluated by:
  • tst_qdbusinterface - unknown status
it != args.constEnd()Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tst_qdbusinterface - unknown status
FALSEnever evaluated
0-16
313 copyArgument(argv[i], outputTypes[j], *it);-
314 }
executed 4 times by 1 test: end of block
Executed by:
  • tst_qdbusinterface - unknown status
4
315 }
executed 16 times by 1 test: end of block
Executed by:
  • tst_qdbusinterface - unknown status
16
316-
317 // done-
318 lastError = QDBusError(reply);-
319 return -1;
executed 16 times by 1 test: return -1;
Executed by:
  • tst_qdbusinterface - unknown status
16
320 }-
321 }
executed 12 times by 2 tests: end of block
Executed by:
  • tst_qdbusinterface - unknown status
  • tst_qdbusthreading - unknown status
12
322 return id;
executed 12 times by 2 tests: return id;
Executed by:
  • tst_qdbusinterface - unknown status
  • tst_qdbusthreading - unknown status
12
323}-
324-
325QT_END_NAMESPACE-
326-
327#endif // QT_NO_DBUS-
Source codeSwitch to Preprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9