qnetworkaccessmanager.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/network/access/qnetworkaccessmanager.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 QtNetwork 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 "qnetworkaccessmanager.h"-
41#include "qnetworkaccessmanager_p.h"-
42#include "qnetworkrequest.h"-
43#include "qnetworkreply.h"-
44#include "qnetworkreply_p.h"-
45#include "qnetworkcookie.h"-
46#include "qnetworkcookiejar.h"-
47#include "qabstractnetworkcache.h"-
48-
49#include "QtNetwork/qnetworksession.h"-
50#include "QtNetwork/private/qsharednetworksession_p.h"-
51-
52#include "qnetworkaccessftpbackend_p.h"-
53#include "qnetworkaccessfilebackend_p.h"-
54#include "qnetworkaccessdebugpipebackend_p.h"-
55#include "qnetworkaccesscachebackend_p.h"-
56#include "qnetworkreplydataimpl_p.h"-
57#include "qnetworkreplyfileimpl_p.h"-
58-
59#include "QtCore/qbuffer.h"-
60#include "QtCore/qurl.h"-
61#include "QtCore/qvector.h"-
62#include "QtNetwork/private/qauthenticator_p.h"-
63#include "QtNetwork/qsslconfiguration.h"-
64#include "QtNetwork/qnetworkconfigmanager.h"-
65#include "QtNetwork/qhttpmultipart.h"-
66#include "qhttpmultipart_p.h"-
67-
68#include "qnetworkreplyhttpimpl_p.h"-
69-
70#include "qthread.h"-
71-
72QT_BEGIN_NAMESPACE-
73-
74Q_GLOBAL_STATIC(QNetworkAccessFileBackendFactory, fileBackend)
executed 10 times by 10 tests: end of block
Executed by:
  • tst_qabstractnetworkcache - unknown status
  • tst_qhttpnetworkconnection - unknown status
  • tst_qnetworkaccessmanager - unknown status
  • tst_qnetworkaccessmanager_and_qprogressdialog - unknown status
  • tst_qnetworkconfigurationmanagerqappless - unknown status
  • tst_qnetworkdiskcache - unknown status
  • tst_qnetworkproxyfactory - unknown status
  • tst_qxmlinputsource - unknown status
  • tst_qxmlstream - unknown status
  • tst_spdy - unknown status
executed 10 times by 10 tests: guard.store(QtGlobalStatic::Destroyed);
Executed by:
  • tst_qabstractnetworkcache - unknown status
  • tst_qhttpnetworkconnection - unknown status
  • tst_qnetworkaccessmanager - unknown status
  • tst_qnetworkaccessmanager_and_qprogressdialog - unknown status
  • tst_qnetworkconfigurationmanagerqappless - unknown status
  • tst_qnetworkdiskcache - unknown status
  • tst_qnetworkproxyfactory - unknown status
  • tst_qxmlinputsource - unknown status
  • tst_qxmlstream - unknown status
  • tst_spdy - unknown status
executed 91 times by 10 tests: return &holder.value;
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkConfigurationManager
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_QXmlStream
guard.load() =...c::InitializedDescription
TRUEevaluated 10 times by 10 tests
Evaluated by:
  • tst_qabstractnetworkcache - unknown status
  • tst_qhttpnetworkconnection - unknown status
  • tst_qnetworkaccessmanager - unknown status
  • tst_qnetworkaccessmanager_and_qprogressdialog - unknown status
  • tst_qnetworkconfigurationmanagerqappless - unknown status
  • tst_qnetworkdiskcache - unknown status
  • tst_qnetworkproxyfactory - unknown status
  • tst_qxmlinputsource - unknown status
  • tst_qxmlstream - unknown status
  • tst_spdy - unknown status
FALSEnever evaluated
0-91
75#ifndef QT_NO_FTP-
76Q_GLOBAL_STATIC(QNetworkAccessFtpBackendFactory, ftpBackend)
executed 10 times by 10 tests: end of block
Executed by:
  • tst_qabstractnetworkcache - unknown status
  • tst_qhttpnetworkconnection - unknown status
  • tst_qnetworkaccessmanager - unknown status
  • tst_qnetworkaccessmanager_and_qprogressdialog - unknown status
  • tst_qnetworkconfigurationmanagerqappless - unknown status
  • tst_qnetworkdiskcache - unknown status
  • tst_qnetworkproxyfactory - unknown status
  • tst_qxmlinputsource - unknown status
  • tst_qxmlstream - unknown status
  • tst_spdy - unknown status
executed 10 times by 10 tests: guard.store(QtGlobalStatic::Destroyed);
Executed by:
  • tst_qabstractnetworkcache - unknown status
  • tst_qhttpnetworkconnection - unknown status
  • tst_qnetworkaccessmanager - unknown status
  • tst_qnetworkaccessmanager_and_qprogressdialog - unknown status
  • tst_qnetworkconfigurationmanagerqappless - unknown status
  • tst_qnetworkdiskcache - unknown status
  • tst_qnetworkproxyfactory - unknown status
  • tst_qxmlinputsource - unknown status
  • tst_qxmlstream - unknown status
  • tst_spdy - unknown status
executed 91 times by 10 tests: return &holder.value;
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkConfigurationManager
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_QXmlStream
guard.load() =...c::InitializedDescription
TRUEevaluated 10 times by 10 tests
Evaluated by:
  • tst_qabstractnetworkcache - unknown status
  • tst_qhttpnetworkconnection - unknown status
  • tst_qnetworkaccessmanager - unknown status
  • tst_qnetworkaccessmanager_and_qprogressdialog - unknown status
  • tst_qnetworkconfigurationmanagerqappless - unknown status
  • tst_qnetworkdiskcache - unknown status
  • tst_qnetworkproxyfactory - unknown status
  • tst_qxmlinputsource - unknown status
  • tst_qxmlstream - unknown status
  • tst_spdy - unknown status
FALSEnever evaluated
0-91
77#endif // QT_NO_FTP-
78-
79#ifdef QT_BUILD_INTERNAL-
80Q_GLOBAL_STATIC(QNetworkAccessDebugPipeBackendFactory, debugpipeBackend)
executed 10 times by 10 tests: end of block
Executed by:
  • tst_qabstractnetworkcache - unknown status
  • tst_qhttpnetworkconnection - unknown status
  • tst_qnetworkaccessmanager - unknown status
  • tst_qnetworkaccessmanager_and_qprogressdialog - unknown status
  • tst_qnetworkconfigurationmanagerqappless - unknown status
  • tst_qnetworkdiskcache - unknown status
  • tst_qnetworkproxyfactory - unknown status
  • tst_qxmlinputsource - unknown status
  • tst_qxmlstream - unknown status
  • tst_spdy - unknown status
executed 10 times by 10 tests: guard.store(QtGlobalStatic::Destroyed);
Executed by:
  • tst_qabstractnetworkcache - unknown status
  • tst_qhttpnetworkconnection - unknown status
  • tst_qnetworkaccessmanager - unknown status
  • tst_qnetworkaccessmanager_and_qprogressdialog - unknown status
  • tst_qnetworkconfigurationmanagerqappless - unknown status
  • tst_qnetworkdiskcache - unknown status
  • tst_qnetworkproxyfactory - unknown status
  • tst_qxmlinputsource - unknown status
  • tst_qxmlstream - unknown status
  • tst_spdy - unknown status
executed 91 times by 10 tests: return &holder.value;
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkConfigurationManager
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_QXmlStream
guard.load() =...c::InitializedDescription
TRUEevaluated 10 times by 10 tests
Evaluated by:
  • tst_qabstractnetworkcache - unknown status
  • tst_qhttpnetworkconnection - unknown status
  • tst_qnetworkaccessmanager - unknown status
  • tst_qnetworkaccessmanager_and_qprogressdialog - unknown status
  • tst_qnetworkconfigurationmanagerqappless - unknown status
  • tst_qnetworkdiskcache - unknown status
  • tst_qnetworkproxyfactory - unknown status
  • tst_qxmlinputsource - unknown status
  • tst_qxmlstream - unknown status
  • tst_spdy - unknown status
FALSEnever evaluated
0-91
81#endif-
82-
83#if defined(Q_OS_MACX)-
84-
85#include <CoreServices/CoreServices.h>-
86#include <SystemConfiguration/SystemConfiguration.h>-
87#include <Security/SecKeychain.h>-
88-
89bool getProxyAuth(const QString& proxyHostname, const QString &scheme, QString& username, QString& password)-
90{-
91 OSStatus err;-
92 SecKeychainItemRef itemRef;-
93 bool retValue = false;-
94 SecProtocolType protocolType = kSecProtocolTypeAny;-
95 if (scheme.compare(QLatin1String("ftp"),Qt::CaseInsensitive)==0) {-
96 protocolType = kSecProtocolTypeFTPProxy;-
97 } else if (scheme.compare(QLatin1String("http"),Qt::CaseInsensitive)==0-
98 || scheme.compare(QLatin1String("preconnect-http"),Qt::CaseInsensitive)==0) {-
99 protocolType = kSecProtocolTypeHTTPProxy;-
100 } else if (scheme.compare(QLatin1String("https"),Qt::CaseInsensitive)==0-
101 || scheme.compare(QLatin1String("preconnect-https"),Qt::CaseInsensitive)==0) {-
102 protocolType = kSecProtocolTypeHTTPSProxy;-
103 }-
104 QByteArray proxyHostnameUtf8(proxyHostname.toUtf8());-
105 err = SecKeychainFindInternetPassword(NULL,-
106 proxyHostnameUtf8.length(), proxyHostnameUtf8.constData(),-
107 0,NULL,-
108 0, NULL,-
109 0, NULL,-
110 0,-
111 protocolType,-
112 kSecAuthenticationTypeAny,-
113 0, NULL,-
114 &itemRef);-
115 if (err == noErr) {-
116-
117 SecKeychainAttribute attr;-
118 SecKeychainAttributeList attrList;-
119 UInt32 length;-
120 void *outData;-
121-
122 attr.tag = kSecAccountItemAttr;-
123 attr.length = 0;-
124 attr.data = NULL;-
125-
126 attrList.count = 1;-
127 attrList.attr = &attr;-
128-
129 if (SecKeychainItemCopyContent(itemRef, NULL, &attrList, &length, &outData) == noErr) {-
130 username = QString::fromUtf8((const char*)attr.data, attr.length);-
131 password = QString::fromUtf8((const char*)outData, length);-
132 SecKeychainItemFreeContent(&attrList,outData);-
133 retValue = true;-
134 }-
135 CFRelease(itemRef);-
136 }-
137 return retValue;-
138}-
139#endif-
140-
141-
142-
143static void ensureInitialized()-
144{-
145#ifndef QT_NO_FTP-
146 (void) ftpBackend();-
147#endif-
148-
149#ifdef QT_BUILD_INTERNAL-
150 (void) debugpipeBackend();-
151#endif-
152-
153 // leave this one last since it will query the special QAbstractFileEngines-
154 (void) fileBackend();-
155}
executed 91 times by 10 tests: end of block
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkConfigurationManager
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_QXmlStream
91
156-
157/*!-
158 \class QNetworkAccessManager-
159 \brief The QNetworkAccessManager class allows the application to-
160 send network requests and receive replies-
161 \since 4.4-
162-
163 \ingroup network-
164 \inmodule QtNetwork-
165 \reentrant-
166-
167 The Network Access API is constructed around one QNetworkAccessManager-
168 object, which holds the common configuration and settings for the requests-
169 it sends. It contains the proxy and cache configuration, as well as the-
170 signals related to such issues, and reply signals that can be used to-
171 monitor the progress of a network operation. One QNetworkAccessManager-
172 should be enough for the whole Qt application.-
173-
174 Once a QNetworkAccessManager object has been created, the application can-
175 use it to send requests over the network. A group of standard functions-
176 are supplied that take a request and optional data, and each return a-
177 QNetworkReply object. The returned object is used to obtain any data-
178 returned in response to the corresponding request.-
179-
180 A simple download off the network could be accomplished with:-
181 \snippet code/src_network_access_qnetworkaccessmanager.cpp 0-
182-
183 QNetworkAccessManager has an asynchronous API.-
184 When the \tt replyFinished slot above is called, the parameter it-
185 takes is the QNetworkReply object containing the downloaded data-
186 as well as meta-data (headers, etc.).-
187-
188 \note After the request has finished, it is the responsibility of the user-
189 to delete the QNetworkReply object at an appropriate time. Do not directly-
190 delete it inside the slot connected to finished(). You can use the-
191 deleteLater() function.-
192-
193 \note QNetworkAccessManager queues the requests it receives. The number-
194 of requests executed in parallel is dependent on the protocol.-
195 Currently, for the HTTP protocol on desktop platforms, 6 requests are-
196 executed in parallel for one host/port combination.-
197-
198 A more involved example, assuming the manager is already existent,-
199 can be:-
200 \snippet code/src_network_access_qnetworkaccessmanager.cpp 1-
201-
202 \section1 Network and Roaming Support-
203-
204 With the addition of the \l {Bearer Management} API to Qt 4.7-
205 QNetworkAccessManager gained the ability to manage network connections.-
206 QNetworkAccessManager can start the network interface if the device is-
207 offline and terminates the interface if the current process is the last-
208 one to use the uplink. Note that some platforms utilize grace periods from-
209 when the last application stops using a uplink until the system actually-
210 terminates the connectivity link. Roaming is equally transparent. Any-
211 queued/pending network requests are automatically transferred to the new-
212 access point.-
213-
214 Clients wanting to utilize this feature should not require any changes. In fact-
215 it is likely that existing platform specific connection code can simply be-
216 removed from the application.-
217-
218 \note The network and roaming support in QNetworkAccessManager is conditional-
219 upon the platform supporting connection management. The-
220 \l QNetworkConfigurationManager::NetworkSessionRequired can be used to-
221 detect whether QNetworkAccessManager utilizes this feature.-
222-
223 \sa QNetworkRequest, QNetworkReply, QNetworkProxy-
224*/-
225-
226/*!-
227 \enum QNetworkAccessManager::Operation-
228-
229 Indicates the operation this reply is processing.-
230-
231 \value HeadOperation retrieve headers operation (created-
232 with head())-
233-
234 \value GetOperation retrieve headers and download contents-
235 (created with get())-
236-
237 \value PutOperation upload contents operation (created-
238 with put())-
239-
240 \value PostOperation send the contents of an HTML form for-
241 processing via HTTP POST (created with post())-
242-
243 \value DeleteOperation delete contents operation (created with-
244 deleteResource())-
245-
246 \value CustomOperation custom operation (created with-
247 sendCustomRequest()) \since 4.7-
248-
249 \omitvalue UnknownOperation-
250-
251 \sa QNetworkReply::operation()-
252*/-
253-
254/*!-
255 \enum QNetworkAccessManager::NetworkAccessibility-
256-
257 Indicates whether the network is accessible via this network access manager.-
258-
259 \value UnknownAccessibility The network accessibility cannot be determined.-
260 \value NotAccessible The network is not currently accessible, either because there-
261 is currently no network coverage or network access has been-
262 explicitly disabled by a call to setNetworkAccessible().-
263 \value Accessible The network is accessible.-
264-
265 \sa networkAccessible-
266*/-
267-
268/*!-
269 \property QNetworkAccessManager::networkAccessible-
270 \brief whether the network is currently accessible via this network access manager.-
271-
272 \since 4.7-
273-
274 If the network is \l {NotAccessible}{not accessible} the network access manager will not-
275 process any new network requests, all such requests will fail with an error. Requests with-
276 URLs with the file:// scheme will still be processed.-
277-
278 By default the value of this property reflects the physical state of the device. Applications-
279 may override it to disable all network requests via this network access manager by calling-
280-
281 \snippet code/src_network_access_qnetworkaccessmanager.cpp 4-
282-
283 Network requests can be re-enabled again, and this property will resume to-
284 reflect the actual device state by calling-
285-
286 \snippet code/src_network_access_qnetworkaccessmanager.cpp 5-
287-
288 \note Calling setNetworkAccessible() does not change the network state.-
289*/-
290-
291/*!-
292 \fn void QNetworkAccessManager::networkAccessibleChanged(QNetworkAccessManager::NetworkAccessibility accessible)-
293-
294 This signal is emitted when the value of the \l networkAccessible property changes.-
295 \a accessible is the new network accessibility.-
296*/-
297-
298/*!-
299 \fn void QNetworkAccessManager::networkSessionConnected()-
300-
301 \since 4.7-
302-
303 \internal-
304-
305 This signal is emitted when the status of the network session changes into a usable (Connected)-
306 state. It is used to signal to QNetworkReplys to start or migrate their network operation once-
307 the network session has been opened or finished roaming.-
308*/-
309-
310/*!-
311 \fn void QNetworkAccessManager::proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)-
312-
313 This signal is emitted whenever a proxy requests authentication-
314 and QNetworkAccessManager cannot find a valid, cached-
315 credential. The slot connected to this signal should fill in the-
316 credentials for the proxy \a proxy in the \a authenticator object.-
317-
318 QNetworkAccessManager will cache the credentials internally. The-
319 next time the proxy requests authentication, QNetworkAccessManager-
320 will automatically send the same credential without emitting the-
321 proxyAuthenticationRequired signal again.-
322-
323 If the proxy rejects the credentials, QNetworkAccessManager will-
324 emit the signal again.-
325-
326 \sa proxy(), setProxy(), authenticationRequired()-
327*/-
328-
329/*!-
330 \fn void QNetworkAccessManager::authenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator)-
331-
332 This signal is emitted whenever a final server requests-
333 authentication before it delivers the requested contents. The slot-
334 connected to this signal should fill the credentials for the-
335 contents (which can be determined by inspecting the \a reply-
336 object) in the \a authenticator object.-
337-
338 QNetworkAccessManager will cache the credentials internally and-
339 will send the same values if the server requires authentication-
340 again, without emitting the authenticationRequired() signal. If it-
341 rejects the credentials, this signal will be emitted again.-
342-
343 \note To have the request not send credentials you must not call-
344 setUser() or setPassword() on the \a authenticator object. This-
345 will result in the \l finished() signal being emitted with a-
346 \l QNetworkReply with error \l {QNetworkReply::} {AuthenticationRequiredError}.-
347-
348 \note It is not possible to use a QueuedConnection to connect to-
349 this signal, as the connection will fail if the authenticator has-
350 not been filled in with new information when the signal returns.-
351-
352 \sa proxyAuthenticationRequired(), QAuthenticator::setUser(), QAuthenticator::setPassword()-
353*/-
354-
355/*!-
356 \fn void QNetworkAccessManager::finished(QNetworkReply *reply)-
357-
358 This signal is emitted whenever a pending network reply is-
359 finished. The \a reply parameter will contain a pointer to the-
360 reply that has just finished. This signal is emitted in tandem-
361 with the QNetworkReply::finished() signal.-
362-
363 See QNetworkReply::finished() for information on the status that-
364 the object will be in.-
365-
366 \note Do not delete the \a reply object in the slot connected to this-
367 signal. Use deleteLater().-
368-
369 \sa QNetworkReply::finished(), QNetworkReply::error()-
370*/-
371-
372/*!-
373 \fn void QNetworkAccessManager::encrypted(QNetworkReply *reply)-
374 \since 5.1-
375-
376 This signal is emitted when an SSL/TLS session has successfully-
377 completed the initial handshake. At this point, no user data-
378 has been transmitted. The signal can be used to perform-
379 additional checks on the certificate chain, for example to-
380 notify users when the certificate for a website has changed. The-
381 \a reply parameter specifies which network reply is responsible.-
382 If the reply does not match the expected criteria then it should-
383 be aborted by calling QNetworkReply::abort() by a slot connected-
384 to this signal. The SSL configuration in use can be inspected-
385 using the QNetworkReply::sslConfiguration() method.-
386-
387 Internally, QNetworkAccessManager may open multiple connections-
388 to a server, in order to allow it process requests in parallel.-
389 These connections may be reused, which means that the encrypted()-
390 signal would not be emitted. This means that you are only-
391 guaranteed to receive this signal for the first connection to a-
392 site in the lifespan of the QNetworkAccessManager.-
393-
394 \sa QSslSocket::encrypted()-
395 \sa QNetworkReply::encrypted()-
396*/-
397-
398/*!-
399 \fn void QNetworkAccessManager::sslErrors(QNetworkReply *reply, const QList<QSslError> &errors)-
400-
401 This signal is emitted if the SSL/TLS session encountered errors-
402 during the set up, including certificate verification errors. The-
403 \a errors parameter contains the list of errors and \a reply is-
404 the QNetworkReply that is encountering these errors.-
405-
406 To indicate that the errors are not fatal and that the connection-
407 should proceed, the QNetworkReply::ignoreSslErrors() function should be called-
408 from the slot connected to this signal. If it is not called, the-
409 SSL session will be torn down before any data is exchanged-
410 (including the URL).-
411-
412 This signal can be used to display an error message to the user-
413 indicating that security may be compromised and display the-
414 SSL settings (see sslConfiguration() to obtain it). If the user-
415 decides to proceed after analyzing the remote certificate, the-
416 slot should call ignoreSslErrors().-
417-
418 \sa QSslSocket::sslErrors(), QNetworkReply::sslErrors(),-
419 QNetworkReply::sslConfiguration(), QNetworkReply::ignoreSslErrors()-
420*/-
421-
422/*!-
423 \fn void QNetworkAccessManager::preSharedKeyAuthenticationRequired(QNetworkReply *reply, QSslPreSharedKeyAuthenticator *authenticator)-
424 \since 5.5-
425-
426 This signal is emitted if the SSL/TLS handshake negotiates a PSK-
427 ciphersuite, and therefore a PSK authentication is then required.-
428 The \a reply object is the QNetworkReply that is negotiating-
429 such ciphersuites.-
430-
431 When using PSK, the client must send to the server a valid identity and a-
432 valid pre shared key, in order for the SSL handshake to continue.-
433 Applications can provide this information in a slot connected to this-
434 signal, by filling in the passed \a authenticator object according to their-
435 needs.-
436-
437 \note Ignoring this signal, or failing to provide the required credentials,-
438 will cause the handshake to fail, and therefore the connection to be aborted.-
439-
440 \note The \a authenticator object is owned by the reply and must not be-
441 deleted by the application.-
442-
443 \sa QSslPreSharedKeyAuthenticator-
444*/-
445-
446/*!-
447 Constructs a QNetworkAccessManager object that is the center of-
448 the Network Access API and sets \a parent as the parent object.-
449*/-
450QNetworkAccessManager::QNetworkAccessManager(QObject *parent)-
451 : QObject(*new QNetworkAccessManagerPrivate, parent)-
452{-
453 ensureInitialized();-
454-
455 qRegisterMetaType<QNetworkReply::NetworkError>();-
456#ifndef QT_NO_NETWORKPROXY-
457 qRegisterMetaType<QNetworkProxy>();-
458#endif-
459#ifndef QT_NO_SSL-
460 qRegisterMetaType<QList<QSslError> >();-
461 qRegisterMetaType<QSslConfiguration>();-
462 qRegisterMetaType<QSslPreSharedKeyAuthenticator *>();-
463#endif-
464 qRegisterMetaType<QList<QPair<QByteArray,QByteArray> > >();-
465#ifndef QT_NO_HTTP-
466 qRegisterMetaType<QHttpNetworkRequest>();-
467#endif-
468 qRegisterMetaType<QNetworkReply::NetworkError>();-
469 qRegisterMetaType<QSharedPointer<char> >();-
470-
471#ifndef QT_NO_BEARERMANAGEMENT-
472 Q_D(QNetworkAccessManager);-
473 // if a session is required, we track online state through-
474 // the QNetworkSession's signals if a request is already made.-
475 // we need to track current accessibility state by default-
476 //-
477 connect(&d->networkConfigurationManager, SIGNAL(onlineStateChanged(bool)),-
478 SLOT(_q_onlineStateChanged(bool)));-
479 connect(&d->networkConfigurationManager, SIGNAL(configurationChanged(const QNetworkConfiguration &)),-
480 SLOT(_q_configurationChanged(const QNetworkConfiguration &)));-
481-
482#endif-
483}
executed 91 times by 10 tests: end of block
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkConfigurationManager
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_QXmlStream
91
484-
485/*!-
486 Destroys the QNetworkAccessManager object and frees up any-
487 resources. Note that QNetworkReply objects that are returned from-
488 this class have this object set as their parents, which means that-
489 they will be deleted along with it if you don't call-
490 QObject::setParent() on them.-
491*/-
492QNetworkAccessManager::~QNetworkAccessManager()-
493{-
494#ifndef QT_NO_NETWORKPROXY-
495 delete d_func()->proxyFactory;-
496#endif-
497-
498 // Delete the QNetworkReply children first.-
499 // Else a QAbstractNetworkCache might get deleted in ~QObject-
500 // before a QNetworkReply that accesses the QAbstractNetworkCache-
501 // object in its destructor.-
502 qDeleteAll(findChildren<QNetworkReply *>());-
503 // The other children will be deleted in this ~QObject-
504 // FIXME instead of this "hack" make the QNetworkReplyImpl-
505 // properly watch the cache deletion, e.g. via a QWeakPointer.-
506}
executed 92 times by 11 tests: end of block
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkConfigurationManager
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_QXmlStream
  • tst_spdy - unknown status
92
507-
508#ifndef QT_NO_NETWORKPROXY-
509/*!-
510 Returns the QNetworkProxy that the requests sent using this-
511 QNetworkAccessManager object will use. The default value for the-
512 proxy is QNetworkProxy::DefaultProxy.-
513-
514 \sa setProxy(), setProxyFactory(), proxyAuthenticationRequired()-
515*/-
516QNetworkProxy QNetworkAccessManager::proxy() const-
517{-
518 return d_func()->proxy;
never executed: return d_func()->proxy;
0
519}-
520-
521/*!-
522 Sets the proxy to be used in future requests to be \a proxy. This-
523 does not affect requests that have already been sent. The-
524 proxyAuthenticationRequired() signal will be emitted if the proxy-
525 requests authentication.-
526-
527 A proxy set with this function will be used for all requests-
528 issued by QNetworkAccessManager. In some cases, it might be-
529 necessary to select different proxies depending on the type of-
530 request being sent or the destination host. If that's the case,-
531 you should consider using setProxyFactory().-
532-
533 \sa proxy(), proxyAuthenticationRequired()-
534*/-
535void QNetworkAccessManager::setProxy(const QNetworkProxy &proxy)-
536{-
537 Q_D(QNetworkAccessManager);-
538 delete d->proxyFactory;-
539 d->proxy = proxy;-
540 d->proxyFactory = 0;-
541}
executed 788 times by 2 tests: end of block
Executed by:
  • tst_QNetworkReply
  • tst_Spdy
788
542-
543/*!-
544 \fn QNetworkProxyFactory *QNetworkAccessManager::proxyFactory() const-
545 \since 4.5-
546-
547 Returns the proxy factory that this QNetworkAccessManager object-
548 is using to determine the proxies to be used for requests.-
549-
550 Note that the pointer returned by this function is managed by-
551 QNetworkAccessManager and could be deleted at any time.-
552-
553 \sa setProxyFactory(), proxy()-
554*/-
555QNetworkProxyFactory *QNetworkAccessManager::proxyFactory() const-
556{-
557 return d_func()->proxyFactory;
never executed: return d_func()->proxyFactory;
0
558}-
559-
560/*!-
561 \since 4.5-
562-
563 Sets the proxy factory for this class to be \a factory. A proxy-
564 factory is used to determine a more specific list of proxies to be-
565 used for a given request, instead of trying to use the same proxy-
566 value for all requests.-
567-
568 All queries sent by QNetworkAccessManager will have type-
569 QNetworkProxyQuery::UrlRequest.-
570-
571 For example, a proxy factory could apply the following rules:-
572 \list-
573 \li if the target address is in the local network (for example,-
574 if the hostname contains no dots or if it's an IP address in-
575 the organization's range), return QNetworkProxy::NoProxy-
576 \li if the request is FTP, return an FTP proxy-
577 \li if the request is HTTP or HTTPS, then return an HTTP proxy-
578 \li otherwise, return a SOCKSv5 proxy server-
579 \endlist-
580-
581 The lifetime of the object \a factory will be managed by-
582 QNetworkAccessManager. It will delete the object when necessary.-
583-
584 \note If a specific proxy is set with setProxy(), the factory will not-
585 be used.-
586-
587 \sa proxyFactory(), setProxy(), QNetworkProxyQuery-
588*/-
589void QNetworkAccessManager::setProxyFactory(QNetworkProxyFactory *factory)-
590{-
591 Q_D(QNetworkAccessManager);-
592 delete d->proxyFactory;-
593 d->proxyFactory = factory;-
594 d->proxy = QNetworkProxy();-
595}
executed 20 times by 1 test: end of block
Executed by:
  • tst_QNetworkReply
20
596#endif-
597-
598/*!-
599 \since 4.5-
600-
601 Returns the cache that is used to store data obtained from the network.-
602-
603 \sa setCache()-
604*/-
605QAbstractNetworkCache *QNetworkAccessManager::cache() const-
606{-
607 Q_D(const QNetworkAccessManager);-
608 return d->networkCache;
never executed: return d->networkCache;
0
609}-
610-
611/*!-
612 \since 4.5-
613-
614 Sets the manager's network cache to be the \a cache specified. The cache-
615 is used for all requests dispatched by the manager.-
616-
617 Use this function to set the network cache object to a class that implements-
618 additional features, like saving the cookies to permanent storage.-
619-
620 \note QNetworkAccessManager takes ownership of the \a cache object.-
621-
622 QNetworkAccessManager by default does not have a set cache.-
623 Qt provides a simple disk cache, QNetworkDiskCache, which can be used.-
624-
625 \sa cache(), QNetworkRequest::CacheLoadControl-
626*/-
627void QNetworkAccessManager::setCache(QAbstractNetworkCache *cache)-
628{-
629 Q_D(QNetworkAccessManager);-
630 if (d->networkCache != cache) {
d->networkCache != cacheDescription
TRUEevaluated 94 times by 3 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkDiskCache
  • tst_QNetworkReply
FALSEevaluated 614 times by 1 test
Evaluated by:
  • tst_QNetworkReply
94-614
631 delete d->networkCache;-
632 d->networkCache = cache;-
633 if (d->networkCache)
d->networkCacheDescription
TRUEevaluated 69 times by 3 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkDiskCache
  • tst_QNetworkReply
FALSEevaluated 25 times by 2 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkReply
25-69
634 d->networkCache->setParent(this);
executed 69 times by 3 tests: d->networkCache->setParent(this);
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkDiskCache
  • tst_QNetworkReply
69
635 }
executed 94 times by 3 tests: end of block
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkDiskCache
  • tst_QNetworkReply
94
636}
executed 708 times by 3 tests: end of block
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkDiskCache
  • tst_QNetworkReply
708
637-
638/*!-
639 Returns the QNetworkCookieJar that is used to store cookies-
640 obtained from the network as well as cookies that are about to be-
641 sent.-
642-
643 \sa setCookieJar()-
644*/-
645QNetworkCookieJar *QNetworkAccessManager::cookieJar() const-
646{-
647 Q_D(const QNetworkAccessManager);-
648 if (!d->cookieJar)
!d->cookieJarDescription
TRUEnever evaluated
FALSEevaluated 13 times by 1 test
Evaluated by:
  • tst_QNetworkReply
0-13
649 d->createCookieJar();
never executed: d->createCookieJar();
0
650 return d->cookieJar;
executed 13 times by 1 test: return d->cookieJar;
Executed by:
  • tst_QNetworkReply
13
651}-
652-
653/*!-
654 Sets the manager's cookie jar to be the \a cookieJar specified.-
655 The cookie jar is used by all requests dispatched by the manager.-
656-
657 Use this function to set the cookie jar object to a class that-
658 implements additional features, like saving the cookies to permanent-
659 storage.-
660-
661 \note QNetworkAccessManager takes ownership of the \a cookieJar object.-
662-
663 If \a cookieJar is in the same thread as this QNetworkAccessManager,-
664 it will set the parent of the \a cookieJar-
665 so that the cookie jar is deleted when this-
666 object is deleted as well. If you want to share cookie jars-
667 between different QNetworkAccessManager objects, you may want to-
668 set the cookie jar's parent to 0 after calling this function.-
669-
670 QNetworkAccessManager by default does not implement any cookie-
671 policy of its own: it accepts all cookies sent by the server, as-
672 long as they are well formed and meet the minimum security-
673 requirements (cookie domain matches the request's and cookie path-
674 matches the request's). In order to implement your own security-
675 policy, override the QNetworkCookieJar::cookiesForUrl() and-
676 QNetworkCookieJar::setCookiesFromUrl() virtual functions. Those-
677 functions are called by QNetworkAccessManager when it detects a-
678 new cookie.-
679-
680 \sa cookieJar(), QNetworkCookieJar::cookiesForUrl(), QNetworkCookieJar::setCookiesFromUrl()-
681*/-
682void QNetworkAccessManager::setCookieJar(QNetworkCookieJar *cookieJar)-
683{-
684 Q_D(QNetworkAccessManager);-
685 d->cookieJarCreated = true;-
686 if (d->cookieJar != cookieJar) {
d->cookieJar != cookieJarDescription
TRUEnever evaluated
FALSEnever evaluated
0
687 if (d->cookieJar && d->cookieJar->parent() == this)
d->cookieJarDescription
TRUEnever evaluated
FALSEnever evaluated
d->cookieJar->parent() == thisDescription
TRUEnever evaluated
FALSEnever evaluated
0
688 delete d->cookieJar;
never executed: delete d->cookieJar;
0
689 d->cookieJar = cookieJar;-
690 if (thread() == cookieJar->thread())
thread() == co...eJar->thread()Description
TRUEnever evaluated
FALSEnever evaluated
0
691 d->cookieJar->setParent(this);
never executed: d->cookieJar->setParent(this);
0
692 }
never executed: end of block
0
693}
never executed: end of block
0
694-
695/*!-
696 Posts a request to obtain the network headers for \a request-
697 and returns a new QNetworkReply object which will contain such headers.-
698-
699 The function is named after the HTTP request associated (HEAD).-
700*/-
701QNetworkReply *QNetworkAccessManager::head(const QNetworkRequest &request)-
702{-
703 return d_func()->postProcess(createRequest(QNetworkAccessManager::HeadOperation, request));
executed 27 times by 1 test: return d_func()->postProcess(createRequest(QNetworkAccessManager::HeadOperation, request));
Executed by:
  • tst_QNetworkReply
27
704}-
705-
706/*!-
707 Posts a request to obtain the contents of the target \a request-
708 and returns a new QNetworkReply object opened for reading which emits the-
709 \l{QIODevice::readyRead()}{readyRead()} signal whenever new data-
710 arrives.-
711-
712 The contents as well as associated headers will be downloaded.-
713-
714 \sa post(), put(), deleteResource(), sendCustomRequest()-
715*/-
716QNetworkReply *QNetworkAccessManager::get(const QNetworkRequest &request)-
717{-
718 return d_func()->postProcess(createRequest(QNetworkAccessManager::GetOperation, request));
executed 776 times by 9 tests: return d_func()->postProcess(createRequest(QNetworkAccessManager::GetOperation, request));
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlStream
  • tst_Spdy
776
719}-
720-
721/*!-
722 Sends an HTTP POST request to the destination specified by \a request-
723 and returns a new QNetworkReply object opened for reading that will-
724 contain the reply sent by the server. The contents of the \a data-
725 device will be uploaded to the server.-
726-
727 \a data must be open for reading and must remain valid until the-
728 finished() signal is emitted for this reply.-
729-
730 \note Sending a POST request on protocols other than HTTP and-
731 HTTPS is undefined and will probably fail.-
732-
733 \sa get(), put(), deleteResource(), sendCustomRequest()-
734*/-
735QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, QIODevice *data)-
736{-
737 return d_func()->postProcess(createRequest(QNetworkAccessManager::PostOperation, request, data));
executed 157 times by 3 tests: return d_func()->postProcess(createRequest(QNetworkAccessManager::PostOperation, request, data));
Executed by:
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
157
738}-
739-
740/*!-
741 \overload-
742-
743 Sends the contents of the \a data byte array to the destination-
744 specified by \a request.-
745*/-
746QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, const QByteArray &data)-
747{-
748 QBuffer *buffer = new QBuffer;-
749 buffer->setData(data);-
750 buffer->open(QIODevice::ReadOnly);-
751-
752 QNetworkReply *reply = post(request, buffer);-
753 buffer->setParent(reply);-
754 return reply;
executed 54 times by 3 tests: return reply;
Executed by:
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
54
755}-
756-
757/*!-
758 \since 4.8-
759-
760 \overload-
761-
762 Sends the contents of the \a multiPart message to the destination-
763 specified by \a request.-
764-
765 This can be used for sending MIME multipart messages over HTTP.-
766-
767 \sa QHttpMultiPart, QHttpPart, put()-
768*/-
769QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, QHttpMultiPart *multiPart)-
770{-
771 QNetworkRequest newRequest = d_func()->prepareMultipart(request, multiPart);-
772 QIODevice *device = multiPart->d_func()->device;-
773 QNetworkReply *reply = post(newRequest, device);-
774 return reply;
executed 24 times by 2 tests: return reply;
Executed by:
  • tst_QNetworkReply
  • tst_Spdy
24
775}-
776-
777/*!-
778 \since 4.8-
779-
780 \overload-
781-
782 Sends the contents of the \a multiPart message to the destination-
783 specified by \a request.-
784-
785 This can be used for sending MIME multipart messages over HTTP.-
786-
787 \sa QHttpMultiPart, QHttpPart, post()-
788*/-
789QNetworkReply *QNetworkAccessManager::put(const QNetworkRequest &request, QHttpMultiPart *multiPart)-
790{-
791 QNetworkRequest newRequest = d_func()->prepareMultipart(request, multiPart);-
792 QIODevice *device = multiPart->d_func()->device;-
793 QNetworkReply *reply = put(newRequest, device);-
794 return reply;
never executed: return reply;
0
795}-
796-
797/*!-
798 Uploads the contents of \a data to the destination \a request and-
799 returnes a new QNetworkReply object that will be open for reply.-
800-
801 \a data must be opened for reading when this function is called-
802 and must remain valid until the finished() signal is emitted for-
803 this reply.-
804-
805 Whether anything will be available for reading from the returned-
806 object is protocol dependent. For HTTP, the server may send a-
807 small HTML page indicating the upload was successful (or not).-
808 Other protocols will probably have content in their replies.-
809-
810 \note For HTTP, this request will send a PUT request, which most servers-
811 do not allow. Form upload mechanisms, including that of uploading-
812 files through HTML forms, use the POST mechanism.-
813-
814 \sa get(), post(), deleteResource(), sendCustomRequest()-
815*/-
816QNetworkReply *QNetworkAccessManager::put(const QNetworkRequest &request, QIODevice *data)-
817{-
818 return d_func()->postProcess(createRequest(QNetworkAccessManager::PutOperation, request, data));
executed 95 times by 2 tests: return d_func()->postProcess(createRequest(QNetworkAccessManager::PutOperation, request, data));
Executed by:
  • tst_QNetworkReply
  • tst_Spdy
95
819}-
820-
821/*!-
822 \overload-
823-
824 Sends the contents of the \a data byte array to the destination-
825 specified by \a request.-
826*/-
827QNetworkReply *QNetworkAccessManager::put(const QNetworkRequest &request, const QByteArray &data)-
828{-
829 QBuffer *buffer = new QBuffer;-
830 buffer->setData(data);-
831 buffer->open(QIODevice::ReadOnly);-
832-
833 QNetworkReply *reply = put(request, buffer);-
834 buffer->setParent(reply);-
835 return reply;
executed 55 times by 2 tests: return reply;
Executed by:
  • tst_QNetworkReply
  • tst_Spdy
55
836}-
837-
838/*!-
839 \since 4.6-
840-
841 Sends a request to delete the resource identified by the URL of \a request.-
842-
843 \note This feature is currently available for HTTP only, performing an-
844 HTTP DELETE request.-
845-
846 \sa get(), post(), put(), sendCustomRequest()-
847*/-
848QNetworkReply *QNetworkAccessManager::deleteResource(const QNetworkRequest &request)-
849{-
850 return d_func()->postProcess(createRequest(QNetworkAccessManager::DeleteOperation, request));
executed 7 times by 1 test: return d_func()->postProcess(createRequest(QNetworkAccessManager::DeleteOperation, request));
Executed by:
  • tst_QNetworkReply
7
851}-
852-
853#ifndef QT_NO_BEARERMANAGEMENT-
854-
855/*!-
856 \since 4.7-
857-
858 Sets the network configuration that will be used when creating the-
859 \l {QNetworkSession}{network session} to \a config.-
860-
861 The network configuration is used to create and open a network session before any request that-
862 requires network access is process. If no network configuration is explicitly set via this-
863 function the network configuration returned by-
864 QNetworkConfigurationManager::defaultConfiguration() will be used.-
865-
866 To restore the default network configuration set the network configuration to the value-
867 returned from QNetworkConfigurationManager::defaultConfiguration().-
868-
869 Setting a network configuration means that the QNetworkAccessManager instance will only-
870 be using the specified one. In particular, if the default network configuration changes-
871 (upon e.g. Wifi being available), this new configuration needs to be enabled-
872 manually if desired.-
873-
874 \snippet code/src_network_access_qnetworkaccessmanager.cpp 2-
875-
876 If an invalid network configuration is set, a network session will not be created. In this-
877 case network requests will be processed regardless, but may fail. For example:-
878-
879 \snippet code/src_network_access_qnetworkaccessmanager.cpp 3-
880-
881 \sa configuration(), QNetworkSession-
882*/-
883void QNetworkAccessManager::setConfiguration(const QNetworkConfiguration &config)-
884{-
885 Q_D(QNetworkAccessManager);-
886 d->networkConfiguration = config;-
887 d->customNetworkConfiguration = true;-
888 d->createSession(config);-
889}
executed 26 times by 3 tests: end of block
Executed by:
  • tst_QNetworkAccessManager
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
26
890-
891/*!-
892 \since 4.7-
893-
894 Returns the network configuration that will be used to create the-
895 \l {QNetworkSession}{network session} which will be used when processing network requests.-
896-
897 \sa setConfiguration(), activeConfiguration()-
898*/-
899QNetworkConfiguration QNetworkAccessManager::configuration() const-
900{-
901 Q_D(const QNetworkAccessManager);-
902-
903 QSharedPointer<QNetworkSession> session(d->getNetworkSession());-
904 if (session) {
sessionDescription
TRUEnever evaluated
FALSEnever evaluated
0
905 return session->configuration();
never executed: return session->configuration();
0
906 } else {-
907 QNetworkConfigurationManager manager;-
908 return manager.defaultConfiguration();
never executed: return manager.defaultConfiguration();
0
909 }-
910}-
911-
912/*!-
913 \since 4.7-
914-
915 Returns the current active network configuration.-
916-
917 If the network configuration returned by configuration() is of type-
918 QNetworkConfiguration::ServiceNetwork this function will return the current active child-
919 network configuration of that configuration. Otherwise returns the same network configuration-
920 as configuration().-
921-
922 Use this function to return the actual network configuration currently in use by the network-
923 session.-
924-
925 \sa configuration()-
926*/-
927QNetworkConfiguration QNetworkAccessManager::activeConfiguration() const-
928{-
929 Q_D(const QNetworkAccessManager);-
930-
931 QSharedPointer<QNetworkSession> networkSession(d->getNetworkSession());-
932 QNetworkConfigurationManager manager;-
933 if (networkSession) {
networkSessionDescription
TRUEnever evaluated
FALSEnever evaluated
0
934 return manager.configurationFromIdentifier(
never executed: return manager.configurationFromIdentifier( networkSession->sessionProperty(QLatin1String("ActiveConfiguration")).toString());
0
935 networkSession->sessionProperty(QLatin1String("ActiveConfiguration")).toString());
never executed: return manager.configurationFromIdentifier( networkSession->sessionProperty(QLatin1String("ActiveConfiguration")).toString());
0
936 } else {-
937 return manager.defaultConfiguration();
never executed: return manager.defaultConfiguration();
0
938 }-
939}-
940-
941/*!-
942 \since 4.7-
943-
944 Overrides the reported network accessibility. If \a accessible is NotAccessible the reported-
945 network accessiblity will always be NotAccessible. Otherwise the reported network-
946 accessibility will reflect the actual device state.-
947*/-
948void QNetworkAccessManager::setNetworkAccessible(QNetworkAccessManager::NetworkAccessibility accessible)-
949{-
950 Q_D(QNetworkAccessManager);-
951-
952 d->defaultAccessControl = accessible == NotAccessible ? false : true;
accessible == NotAccessibleDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • tst_QNetworkAccessManager
FALSEevaluated 1 time by 1 test
Evaluated by:
  • tst_QNetworkAccessManager
1-2
953-
954 if (d->networkAccessible != accessible) {
d->networkAcce... != accessibleDescription
TRUEevaluated 3 times by 1 test
Evaluated by:
  • tst_QNetworkAccessManager
FALSEnever evaluated
0-3
955 NetworkAccessibility previous = networkAccessible();-
956 d->networkAccessible = accessible;-
957 NetworkAccessibility current = networkAccessible();-
958 if (previous != current)
previous != currentDescription
TRUEevaluated 3 times by 1 test
Evaluated by:
  • tst_QNetworkAccessManager
FALSEnever evaluated
0-3
959 emit networkAccessibleChanged(current);
executed 3 times by 1 test: networkAccessibleChanged(current);
Executed by:
  • tst_QNetworkAccessManager
3
960 }
executed 3 times by 1 test: end of block
Executed by:
  • tst_QNetworkAccessManager
3
961}
executed 3 times by 1 test: end of block
Executed by:
  • tst_QNetworkAccessManager
3
962-
963/*!-
964 \since 4.7-
965-
966 Returns the current network accessibility.-
967*/-
968QNetworkAccessManager::NetworkAccessibility QNetworkAccessManager::networkAccessible() const-
969{-
970 Q_D(const QNetworkAccessManager);-
971-
972 if (d->networkConfiguration.state().testFlag(QNetworkConfiguration::Undefined))
d->networkConf...on::Undefined)Description
TRUEnever evaluated
FALSEevaluated 12 times by 1 test
Evaluated by:
  • tst_QNetworkAccessManager
0-12
973 return UnknownAccessibility;
never executed: return UnknownAccessibility;
0
974-
975 if (d->networkSessionRequired) {
d->networkSessionRequiredDescription
TRUEnever evaluated
FALSEevaluated 12 times by 1 test
Evaluated by:
  • tst_QNetworkAccessManager
0-12
976 QSharedPointer<QNetworkSession> networkSession(d->getNetworkSession());-
977 if (networkSession) {
networkSessionDescription
TRUEnever evaluated
FALSEnever evaluated
0
978 // d->online holds online/offline state of this network session.-
979 if (d->online)
d->onlineDescription
TRUEnever evaluated
FALSEnever evaluated
0
980 return d->networkAccessible;
never executed: return d->networkAccessible;
0
981 else-
982 return NotAccessible;
never executed: return NotAccessible;
0
983 } else {-
984 if (d->defaultAccessControl) {
d->defaultAccessControlDescription
TRUEnever evaluated
FALSEnever evaluated
0
985 if (d->online)
d->onlineDescription
TRUEnever evaluated
FALSEnever evaluated
0
986 return d->networkAccessible;
never executed: return d->networkAccessible;
0
987 else-
988 return NotAccessible;
never executed: return NotAccessible;
0
989 }-
990 return (d->networkAccessible);
never executed: return (d->networkAccessible);
0
991 }-
992 } else {-
993 if (d->online)
d->onlineDescription
TRUEevaluated 12 times by 1 test
Evaluated by:
  • tst_QNetworkAccessManager
FALSEnever evaluated
0-12
994 return d->networkAccessible;
executed 12 times by 1 test: return d->networkAccessible;
Executed by:
  • tst_QNetworkAccessManager
12
995 else-
996 return NotAccessible;
never executed: return NotAccessible;
0
997 }-
998}-
999-
1000/*!-
1001 \internal-
1002-
1003 Returns the network session currently in use.-
1004 This can be changed at any time, ownership remains with the QNetworkAccessManager-
1005*/-
1006const QWeakPointer<const QNetworkSession> QNetworkAccessManagerPrivate::getNetworkSession(const QNetworkAccessManager *q)-
1007{-
1008 return q->d_func()->networkSessionWeakRef;
executed 30 times by 1 test: return q->d_func()->networkSessionWeakRef;
Executed by:
  • tst_QNetworkReply
30
1009}-
1010-
1011QSharedPointer<QNetworkSession> QNetworkAccessManagerPrivate::getNetworkSession() const-
1012{-
1013 if (networkSessionStrongRef)
networkSessionStrongRefDescription
TRUEevaluated 4125 times by 8 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
FALSEevaluated 28 times by 2 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkAccessManager
28-4125
1014 return networkSessionStrongRef;
executed 4125 times by 8 tests: return networkSessionStrongRef;
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
4125
1015 return networkSessionWeakRef.toStrongRef();
executed 28 times by 2 tests: return networkSessionWeakRef.toStrongRef();
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkAccessManager
28
1016}-
1017-
1018#endif // QT_NO_BEARERMANAGEMENT-
1019-
1020-
1021#ifndef QT_NO_SSL-
1022/*!-
1023 \since 5.2-
1024-
1025 Initiates a connection to the host given by \a hostName at port \a port, using-
1026 \a sslConfiguration. This function is useful to complete the TCP and SSL handshake-
1027 to a host before the HTTPS request is made, resulting in a lower network latency.-
1028-
1029 \note Preconnecting a SPDY connection can be done by calling setAllowedNextProtocols()-
1030 on \a sslConfiguration with QSslConfiguration::NextProtocolSpdy3_0 contained in-
1031 the list of allowed protocols. When using SPDY, one single connection per host is-
1032 enough, i.e. calling this method multiple times per host will not result in faster-
1033 network transactions.-
1034-
1035 \note This function has no possibility to report errors.-
1036-
1037 \sa connectToHost(), get(), post(), put(), deleteResource()-
1038*/-
1039void QNetworkAccessManager::connectToHostEncrypted(const QString &hostName, quint16 port,-
1040 const QSslConfiguration &sslConfiguration)-
1041{-
1042 QUrl url;-
1043 url.setHost(hostName);-
1044 url.setPort(port);-
1045 url.setScheme(QLatin1String("preconnect-https"));-
1046 QNetworkRequest request(url);-
1047 if (sslConfiguration != QSslConfiguration::defaultConfiguration())
sslConfigurati...onfiguration()Description
TRUEnever evaluated
FALSEnever evaluated
0
1048 request.setSslConfiguration(sslConfiguration);
never executed: request.setSslConfiguration(sslConfiguration);
0
1049-
1050 // There is no way to enable SPDY via a request, so we need to check-
1051 // the ssl configuration whether SPDY is allowed here.-
1052 if (sslConfiguration.allowedNextProtocols().contains(
sslConfigurati...otocolSpdy3_0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1053 QSslConfiguration::NextProtocolSpdy3_0))
sslConfigurati...otocolSpdy3_0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1054 request.setAttribute(QNetworkRequest::SpdyAllowedAttribute, true);
never executed: request.setAttribute(QNetworkRequest::SpdyAllowedAttribute, true);
0
1055-
1056 get(request);-
1057}
never executed: end of block
0
1058#endif-
1059-
1060/*!-
1061 \since 5.2-
1062-
1063 Initiates a connection to the host given by \a hostName at port \a port.-
1064 This function is useful to complete the TCP handshake-
1065 to a host before the HTTP request is made, resulting in a lower network latency.-
1066-
1067 \note This function has no possibility to report errors.-
1068-
1069 \sa connectToHostEncrypted(), get(), post(), put(), deleteResource()-
1070*/-
1071void QNetworkAccessManager::connectToHost(const QString &hostName, quint16 port)-
1072{-
1073 QUrl url;-
1074 url.setHost(hostName);-
1075 url.setPort(port);-
1076 url.setScheme(QLatin1String("preconnect-http"));-
1077 QNetworkRequest request(url);-
1078 get(request);-
1079}
never executed: end of block
0
1080-
1081/*!-
1082 \since 4.7-
1083-
1084 Sends a custom request to the server identified by the URL of \a request.-
1085-
1086 It is the user's responsibility to send a \a verb to the server that is valid-
1087 according to the HTTP specification.-
1088-
1089 This method provides means to send verbs other than the common ones provided-
1090 via get() or post() etc., for instance sending an HTTP OPTIONS command.-
1091-
1092 If \a data is not empty, the contents of the \a data-
1093 device will be uploaded to the server; in that case, data must be open for-
1094 reading and must remain valid until the finished() signal is emitted for this reply.-
1095-
1096 \note This feature is currently available for HTTP(S) only.-
1097-
1098 \sa get(), post(), put(), deleteResource()-
1099*/-
1100QNetworkReply *QNetworkAccessManager::sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QIODevice *data)-
1101{-
1102 QNetworkRequest newRequest(request);-
1103 newRequest.setAttribute(QNetworkRequest::CustomVerbAttribute, verb);-
1104 return d_func()->postProcess(createRequest(QNetworkAccessManager::CustomOperation, newRequest, data));
executed 7 times by 1 test: return d_func()->postProcess(createRequest(QNetworkAccessManager::CustomOperation, newRequest, data));
Executed by:
  • tst_QNetworkReply
7
1105}-
1106-
1107/*!-
1108 Returns a new QNetworkReply object to handle the operation \a op-
1109 and request \a req. The device \a outgoingData is always 0 for Get and-
1110 Head requests, but is the value passed to post() and put() in-
1111 those operations (the QByteArray variants will pass a QBuffer-
1112 object).-
1113-
1114 The default implementation calls QNetworkCookieJar::cookiesForUrl()-
1115 on the cookie jar set with setCookieJar() to obtain the cookies to-
1116 be sent to the remote server.-
1117-
1118 The returned object must be in an open state.-
1119*/-
1120QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Operation op,-
1121 const QNetworkRequest &req,-
1122 QIODevice *outgoingData)-
1123{-
1124 Q_D(QNetworkAccessManager);-
1125-
1126 bool isLocalFile = req.url().isLocalFile();-
1127 QString scheme = req.url().scheme();-
1128-
1129 // fast path for GET on file:// URLs-
1130 // The QNetworkAccessFileBackend will right now only be used for PUT-
1131 if (op == QNetworkAccessManager::GetOperation
op == QNetwork...::GetOperationDescription
TRUEevaluated 776 times by 9 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlStream
  • tst_Spdy
FALSEevaluated 293 times by 3 tests
Evaluated by:
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
293-776
1132 || op == QNetworkAccessManager::HeadOperation) {
op == QNetwork...:HeadOperationDescription
TRUEevaluated 27 times by 1 test
Evaluated by:
  • tst_QNetworkReply
FALSEevaluated 266 times by 3 tests
Evaluated by:
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
27-266
1133 if (isLocalFile
isLocalFileDescription
TRUEevaluated 28 times by 2 tests
Evaluated by:
  • tst_QNetworkReply
  • tst_QXmlStream
FALSEevaluated 775 times by 8 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_Spdy
28-775
1134#ifdef Q_OS_ANDROID-
1135 || scheme == QLatin1String("assets")-
1136#endif-
1137 || scheme == QLatin1String("qrc")) {
scheme == QLatin1String("qrc")Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • tst_QNetworkReply
FALSEevaluated 773 times by 8 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_Spdy
2-773
1138 return new QNetworkReplyFileImpl(this, req, op);
executed 30 times by 2 tests: return new QNetworkReplyFileImpl(this, req, op);
Executed by:
  • tst_QNetworkReply
  • tst_QXmlStream
30
1139 }-
1140-
1141 if (scheme == QLatin1String("data"))
scheme == QLat...String("data")Description
TRUEevaluated 30 times by 1 test
Evaluated by:
  • tst_QNetworkReply
FALSEevaluated 743 times by 8 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_Spdy
30-743
1142 return new QNetworkReplyDataImpl(this, req, op);
executed 30 times by 1 test: return new QNetworkReplyDataImpl(this, req, op);
Executed by:
  • tst_QNetworkReply
30
1143-
1144 // A request with QNetworkRequest::AlwaysCache does not need any bearer management-
1145 QNetworkRequest::CacheLoadControl mode =-
1146 static_cast<QNetworkRequest::CacheLoadControl>(-
1147 req.attribute(QNetworkRequest::CacheLoadControlAttribute,-
1148 QNetworkRequest::PreferNetwork).toInt());-
1149 if (mode == QNetworkRequest::AlwaysCache) {
mode == QNetwo...t::AlwaysCacheDescription
TRUEevaluated 14 times by 3 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkAccessManager
  • tst_QNetworkReply
FALSEevaluated 729 times by 7 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_Spdy
14-729
1150 // FIXME Implement a QNetworkReplyCacheImpl instead, see QTBUG-15106-
1151 QNetworkReplyImpl *reply = new QNetworkReplyImpl(this);-
1152 QNetworkReplyImplPrivate *priv = reply->d_func();-
1153 priv->manager = this;-
1154 priv->backend = new QNetworkAccessCacheBackend();-
1155 priv->backend->manager = this->d_func();-
1156 priv->backend->setParent(reply);-
1157 priv->backend->reply = priv;-
1158 priv->setup(op, req, outgoingData);-
1159 return reply;
executed 14 times by 3 tests: return reply;
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkAccessManager
  • tst_QNetworkReply
14
1160 }-
1161 }
executed 729 times by 7 tests: end of block
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_Spdy
729
1162-
1163#ifndef QT_NO_BEARERMANAGEMENT-
1164 // Return a disabled network reply if network access is disabled.-
1165 // Except if the scheme is empty or file://.-
1166 if (d->networkAccessible == NotAccessible && !isLocalFile) {
d->networkAcce... NotAccessibleDescription
TRUEnever evaluated
FALSEevaluated 995 times by 8 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
!isLocalFileDescription
TRUEnever evaluated
FALSEnever evaluated
0-995
1167 return new QDisabledNetworkReply(this, req, op);
never executed: return new QDisabledNetworkReply(this, req, op);
0
1168 }-
1169-
1170 if (!d->networkSessionStrongRef && (d->initializeSession || !d->networkConfiguration.identifier().isEmpty())) {
!d->networkSessionStrongRefDescription
TRUEevaluated 196 times by 7 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
FALSEevaluated 799 times by 4 tests
Evaluated by:
  • tst_QHttpNetworkConnection
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_Spdy
d->initializeSessionDescription
TRUEevaluated 85 times by 7 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
FALSEevaluated 111 times by 3 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkReply
  • tst_Spdy
!d->networkCon...er().isEmpty()Description
TRUEevaluated 111 times by 3 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkReply
  • tst_Spdy
FALSEnever evaluated
0-799
1171 QNetworkConfigurationManager manager;-
1172 if (!d->networkConfiguration.identifier().isEmpty()) {
!d->networkCon...er().isEmpty()Description
TRUEevaluated 196 times by 7 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
FALSEnever evaluated
0-196
1173 if ((d->networkConfiguration.state() & QNetworkConfiguration::Defined)-
1174 && d->networkConfiguration != manager.defaultConfiguration())
d->networkConf...onfiguration()Description
TRUEnever evaluated
FALSEevaluated 196 times by 7 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
0-196
1175 d->createSession(manager.defaultConfiguration());
never executed: d->createSession(manager.defaultConfiguration());
0
1176 else-
1177 d->createSession(d->networkConfiguration);
executed 196 times by 7 tests: d->createSession(d->networkConfiguration);
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
196
1178-
1179 } else {-
1180 if (manager.capabilities() & QNetworkConfigurationManager::NetworkSessionRequired)
manager.capabi...essionRequiredDescription
TRUEnever evaluated
FALSEnever evaluated
0
1181 d->createSession(manager.defaultConfiguration());
never executed: d->createSession(manager.defaultConfiguration());
0
1182 else-
1183 d->initializeSession = false;
never executed: d->initializeSession = false;
0
1184 }-
1185 }-
1186#endif-
1187-
1188 QNetworkRequest request = req;-
1189 if (!request.header(QNetworkRequest::ContentLengthHeader).isValid() &&
!request.heade...der).isValid()Description
TRUEevaluated 992 times by 7 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_Spdy
FALSEevaluated 3 times by 2 tests
Evaluated by:
  • tst_QNetworkReply
  • tst_QXmlInputSource
3-992
1190 outgoingData && !outgoingData->isSequential()) {
outgoingDataDescription
TRUEevaluated 252 times by 2 tests
Evaluated by:
  • tst_QNetworkReply
  • tst_Spdy
FALSEevaluated 740 times by 7 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_Spdy
!outgoingData->isSequential()Description
TRUEevaluated 159 times by 2 tests
Evaluated by:
  • tst_QNetworkReply
  • tst_Spdy
FALSEevaluated 93 times by 1 test
Evaluated by:
  • tst_QNetworkReply
93-740
1191 // request has no Content-Length-
1192 // but the data that is outgoing is random-access-
1193 request.setHeader(QNetworkRequest::ContentLengthHeader, outgoingData->size());-
1194 }
executed 159 times by 2 tests: end of block
Executed by:
  • tst_QNetworkReply
  • tst_Spdy
159
1195-
1196 if (static_cast<QNetworkRequest::LoadControl>
static_cast<QN...est::AutomaticDescription
TRUEevaluated 995 times by 8 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
FALSEnever evaluated
0-995
1197 (request.attribute(QNetworkRequest::CookieLoadControlAttribute,
static_cast<QN...est::AutomaticDescription
TRUEevaluated 995 times by 8 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
FALSEnever evaluated
0-995
1198 QNetworkRequest::Automatic).toInt()) == QNetworkRequest::Automatic) {
static_cast<QN...est::AutomaticDescription
TRUEevaluated 995 times by 8 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
FALSEnever evaluated
0-995
1199 if (d->cookieJar) {
d->cookieJarDescription
TRUEevaluated 650 times by 1 test
Evaluated by:
  • tst_QNetworkReply
FALSEevaluated 345 times by 8 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
345-650
1200 QList<QNetworkCookie> cookies = d->cookieJar->cookiesForUrl(request.url());-
1201 if (!cookies.isEmpty())
!cookies.isEmpty()Description
TRUEevaluated 8 times by 1 test
Evaluated by:
  • tst_QNetworkReply
FALSEevaluated 642 times by 1 test
Evaluated by:
  • tst_QNetworkReply
8-642
1202 request.setHeader(QNetworkRequest::CookieHeader, QVariant::fromValue(cookies));
executed 8 times by 1 test: request.setHeader(QNetworkRequest::CookieHeader, QVariant::fromValue(cookies));
Executed by:
  • tst_QNetworkReply
8
1203 }
executed 650 times by 1 test: end of block
Executed by:
  • tst_QNetworkReply
650
1204 }
executed 995 times by 8 tests: end of block
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
995
1205-
1206#ifndef QT_NO_HTTP-
1207 // Since Qt 5 we use the new QNetworkReplyHttpImpl-
1208 if (scheme == QLatin1String("http") || scheme == QLatin1String("preconnect-http")
scheme == QLat...String("http")Description
TRUEevaluated 655 times by 8 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
FALSEevaluated 340 times by 2 tests
Evaluated by:
  • tst_QNetworkReply
  • tst_Spdy
scheme == QLat...connect-http")Description
TRUEnever evaluated
FALSEevaluated 340 times by 2 tests
Evaluated by:
  • tst_QNetworkReply
  • tst_Spdy
0-655
1209#ifndef QT_NO_SSL-
1210 || scheme == QLatin1String("https") || scheme == QLatin1String("preconnect-https")
scheme == QLat...tring("https")Description
TRUEevaluated 232 times by 2 tests
Evaluated by:
  • tst_QNetworkReply
  • tst_Spdy
FALSEevaluated 108 times by 1 test
Evaluated by:
  • tst_QNetworkReply
scheme == QLat...onnect-https")Description
TRUEnever evaluated
FALSEevaluated 108 times by 1 test
Evaluated by:
  • tst_QNetworkReply
0-232
1211#endif-
1212 ) {-
1213 QNetworkReplyHttpImpl *reply = new QNetworkReplyHttpImpl(this, request, op, outgoingData);-
1214#ifndef QT_NO_BEARERMANAGEMENT-
1215 connect(this, SIGNAL(networkSessionConnected()),-
1216 reply, SLOT(_q_networkSessionConnected()));-
1217#endif-
1218 return reply;
executed 887 times by 8 tests: return reply;
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
887
1219 }-
1220#endif // QT_NO_HTTP-
1221-
1222 // first step: create the reply-
1223 QNetworkReplyImpl *reply = new QNetworkReplyImpl(this);-
1224#ifndef QT_NO_BEARERMANAGEMENT-
1225 if (!isLocalFile) {
!isLocalFileDescription
TRUEevaluated 69 times by 1 test
Evaluated by:
  • tst_QNetworkReply
FALSEevaluated 39 times by 1 test
Evaluated by:
  • tst_QNetworkReply
39-69
1226 connect(this, SIGNAL(networkSessionConnected()),-
1227 reply, SLOT(_q_networkSessionConnected()));-
1228 }
executed 69 times by 1 test: end of block
Executed by:
  • tst_QNetworkReply
69
1229#endif-
1230 QNetworkReplyImplPrivate *priv = reply->d_func();-
1231 priv->manager = this;-
1232-
1233 // second step: fetch cached credentials-
1234 // This is not done for the time being, we should use signal emissions to request-
1235 // the credentials from cache.-
1236-
1237 // third step: find a backend-
1238 priv->backend = d->findBackend(op, request);-
1239-
1240 if (priv->backend) {
priv->backendDescription
TRUEevaluated 104 times by 1 test
Evaluated by:
  • tst_QNetworkReply
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tst_QNetworkReply
4-104
1241 priv->backend->setParent(reply);-
1242 priv->backend->reply = priv;-
1243 }
executed 104 times by 1 test: end of block
Executed by:
  • tst_QNetworkReply
104
1244-
1245#ifndef QT_NO_SSL-
1246 reply->setSslConfiguration(request.sslConfiguration());-
1247#endif-
1248-
1249 // fourth step: setup the reply-
1250 priv->setup(op, request, outgoingData);-
1251-
1252 return reply;
executed 108 times by 1 test: return reply;
Executed by:
  • tst_QNetworkReply
108
1253}-
1254-
1255/*!-
1256 \since 5.2-
1257-
1258 Lists all the URL schemes supported by the access manager.-
1259-
1260 \sa supportedSchemesImplementation()-
1261*/-
1262QStringList QNetworkAccessManager::supportedSchemes() const-
1263{-
1264 QStringList schemes;-
1265 QNetworkAccessManager *self = const_cast<QNetworkAccessManager *>(this); // We know we call a const slot-
1266 QMetaObject::invokeMethod(self, "supportedSchemesImplementation", Qt::DirectConnection,-
1267 Q_RETURN_ARG(QStringList, schemes));-
1268 schemes.removeDuplicates();-
1269 return schemes;
never executed: return schemes;
0
1270}-
1271-
1272/*!-
1273 \since 5.2-
1274-
1275 Lists all the URL schemes supported by the access manager.-
1276-
1277 You should not call this function directly; use-
1278 QNetworkAccessManager::supportedSchemes() instead.-
1279-
1280 Reimplement this slot to provide your own supported schemes-
1281 in a QNetworkAccessManager subclass. It is for instance necessary-
1282 when your subclass provides support for new protocols.-
1283-
1284 Because of binary compatibility constraints, the supportedSchemes()-
1285 method (introduced in Qt 5.2) is not virtual. Instead, supportedSchemes()-
1286 will dynamically detect and call this slot.-
1287-
1288 \sa supportedSchemes()-
1289*/-
1290QStringList QNetworkAccessManager::supportedSchemesImplementation() const-
1291{-
1292 Q_D(const QNetworkAccessManager);-
1293-
1294 QStringList schemes = d->backendSupportedSchemes();-
1295 // Those ones don't exist in backends-
1296#ifndef QT_NO_HTTP-
1297 schemes << QStringLiteral("http");
never executed: return qstring_literal_temp;
0
1298#ifndef QT_NO_SSL-
1299 if (QSslSocket::supportsSsl())
QSslSocket::supportsSsl()Description
TRUEnever evaluated
FALSEnever evaluated
0
1300 schemes << QStringLiteral("https");
never executed: schemes << ([]() -> QString { enum { Size = sizeof(u"" "https")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "https" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }());
never executed: return qstring_literal_temp;
0
1301#endif-
1302#endif-
1303 schemes << QStringLiteral("data");
never executed: return qstring_literal_temp;
0
1304 return schemes;
never executed: return schemes;
0
1305}-
1306-
1307/*!-
1308 \since 5.0-
1309-
1310 Flushes the internal cache of authentication data and network connections.-
1311-
1312 This function is useful for doing auto tests.-
1313-
1314*/-
1315void QNetworkAccessManager::clearAccessCache()-
1316{-
1317 QNetworkAccessManagerPrivate::clearCache(this);-
1318}
executed 644 times by 2 tests: end of block
Executed by:
  • tst_QNetworkReply
  • tst_Spdy
644
1319-
1320void QNetworkAccessManagerPrivate::_q_replyFinished()-
1321{-
1322 Q_Q(QNetworkAccessManager);-
1323-
1324 QNetworkReply *reply = qobject_cast<QNetworkReply *>(q->sender());-
1325 if (reply)
replyDescription
TRUEevaluated 931 times by 9 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlStream
  • tst_Spdy
FALSEnever evaluated
0-931
1326 emit q->finished(reply);
executed 931 times by 9 tests: q->finished(reply);
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlStream
  • tst_Spdy
931
1327-
1328#ifndef QT_NO_BEARERMANAGEMENT-
1329 // If there are no active requests, release our reference to the network session.-
1330 // It will not be destroyed immediately, but rather when the connection cache is flushed-
1331 // after 2 minutes.-
1332 activeReplyCount--;-
1333 if (networkSessionStrongRef && activeReplyCount == 0)
networkSessionStrongRefDescription
TRUEevaluated 920 times by 7 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_Spdy
FALSEevaluated 11 times by 3 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkAccessManager
  • tst_QXmlStream
activeReplyCount == 0Description
TRUEevaluated 195 times by 7 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_Spdy
FALSEevaluated 725 times by 3 tests
Evaluated by:
  • tst_QHttpNetworkConnection
  • tst_QNetworkReply
  • tst_Spdy
11-920
1334 networkSessionStrongRef.clear();
executed 195 times by 7 tests: networkSessionStrongRef.clear();
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_Spdy
195
1335#endif-
1336}
executed 931 times by 9 tests: end of block
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlStream
  • tst_Spdy
931
1337-
1338void QNetworkAccessManagerPrivate::_q_replyEncrypted()-
1339{-
1340#ifndef QT_NO_SSL-
1341 Q_Q(QNetworkAccessManager);-
1342 QNetworkReply *reply = qobject_cast<QNetworkReply *>(q->sender());-
1343 if (reply)
replyDescription
TRUEevaluated 75 times by 2 tests
Evaluated by:
  • tst_QNetworkReply
  • tst_Spdy
FALSEnever evaluated
0-75
1344 emit q->encrypted(reply);
executed 75 times by 2 tests: q->encrypted(reply);
Executed by:
  • tst_QNetworkReply
  • tst_Spdy
75
1345#endif-
1346}
executed 75 times by 2 tests: end of block
Executed by:
  • tst_QNetworkReply
  • tst_Spdy
75
1347-
1348void QNetworkAccessManagerPrivate::_q_replySslErrors(const QList<QSslError> &errors)-
1349{-
1350#ifndef QT_NO_SSL-
1351 Q_Q(QNetworkAccessManager);-
1352 QNetworkReply *reply = qobject_cast<QNetworkReply *>(q->sender());-
1353 if (reply)
replyDescription
TRUEevaluated 48 times by 2 tests
Evaluated by:
  • tst_QNetworkReply
  • tst_Spdy
FALSEnever evaluated
0-48
1354 emit q->sslErrors(reply, errors);
executed 48 times by 2 tests: q->sslErrors(reply, errors);
Executed by:
  • tst_QNetworkReply
  • tst_Spdy
48
1355#else-
1356 Q_UNUSED(errors);-
1357#endif-
1358}
executed 48 times by 2 tests: end of block
Executed by:
  • tst_QNetworkReply
  • tst_Spdy
48
1359-
1360void QNetworkAccessManagerPrivate::_q_replyPreSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator)-
1361{-
1362#ifndef QT_NO_SSL-
1363 Q_Q(QNetworkAccessManager);-
1364 QNetworkReply *reply = qobject_cast<QNetworkReply *>(q->sender());-
1365 if (reply)
replyDescription
TRUEnever evaluated
FALSEnever evaluated
0
1366 emit q->preSharedKeyAuthenticationRequired(reply, authenticator);
never executed: q->preSharedKeyAuthenticationRequired(reply, authenticator);
0
1367#else-
1368 Q_UNUSED(authenticator);-
1369#endif-
1370}
never executed: end of block
0
1371-
1372QNetworkReply *QNetworkAccessManagerPrivate::postProcess(QNetworkReply *reply)-
1373{-
1374 Q_Q(QNetworkAccessManager);-
1375 QNetworkReplyPrivate::setManager(reply, q);-
1376 q->connect(reply, SIGNAL(finished()), SLOT(_q_replyFinished()));-
1377#ifndef QT_NO_SSL-
1378 /* In case we're compiled without SSL support, we don't have this signal and we need to-
1379 * avoid getting a connection error. */-
1380 q->connect(reply, SIGNAL(encrypted()), SLOT(_q_replyEncrypted()));-
1381 q->connect(reply, SIGNAL(sslErrors(QList<QSslError>)), SLOT(_q_replySslErrors(QList<QSslError>)));-
1382 q->connect(reply, SIGNAL(preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator*)), SLOT(_q_replyPreSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator*)));-
1383#endif-
1384#ifndef QT_NO_BEARERMANAGEMENT-
1385 activeReplyCount++;-
1386#endif-
1387-
1388 return reply;
executed 1069 times by 10 tests: return reply;
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_QXmlStream
  • tst_Spdy
1069
1389}-
1390-
1391void QNetworkAccessManagerPrivate::createCookieJar() const-
1392{-
1393 if (!cookieJarCreated) {
!cookieJarCreatedDescription
TRUEnever evaluated
FALSEnever evaluated
0
1394 // keep the ugly hack in here-
1395 QNetworkAccessManagerPrivate *that = const_cast<QNetworkAccessManagerPrivate *>(this);-
1396 that->cookieJar = new QNetworkCookieJar(that->q_func());-
1397 that->cookieJarCreated = true;-
1398 }
never executed: end of block
0
1399}
never executed: end of block
0
1400-
1401void QNetworkAccessManagerPrivate::authenticationRequired(QAuthenticator *authenticator,-
1402 QNetworkReply *reply,-
1403 bool synchronous,-
1404 QUrl &url,-
1405 QUrl *urlForLastAuthentication,-
1406 bool allowAuthenticationReuse)-
1407{-
1408 Q_Q(QNetworkAccessManager);-
1409-
1410 // don't try the cache for the same URL twice in a row-
1411 // being called twice for the same URL means the authentication failed-
1412 // also called when last URL is empty, e.g. on first call-
1413 if (allowAuthenticationReuse && (urlForLastAuthentication->isEmpty()
allowAuthenticationReuseDescription
TRUEevaluated 126 times by 1 test
Evaluated by:
  • tst_QNetworkReply
FALSEevaluated 1 time by 1 test
Evaluated by:
  • tst_QNetworkReply
urlForLastAuth...ion->isEmpty()Description
TRUEevaluated 88 times by 1 test
Evaluated by:
  • tst_QNetworkReply
FALSEevaluated 38 times by 1 test
Evaluated by:
  • tst_QNetworkReply
1-126
1414 || url != *urlForLastAuthentication)) {
url != *urlFor...AuthenticationDescription
TRUEnever evaluated
FALSEevaluated 38 times by 1 test
Evaluated by:
  • tst_QNetworkReply
0-38
1415 // if credentials are included in the url, then use them-
1416 if (!url.userName().isEmpty()
!url.userName().isEmpty()Description
TRUEevaluated 12 times by 1 test
Evaluated by:
  • tst_QNetworkReply
FALSEevaluated 76 times by 1 test
Evaluated by:
  • tst_QNetworkReply
12-76
1417 && !url.password().isEmpty()) {
!url.password().isEmpty()Description
TRUEevaluated 12 times by 1 test
Evaluated by:
  • tst_QNetworkReply
FALSEnever evaluated
0-12
1418 authenticator->setUser(url.userName(QUrl::FullyDecoded));-
1419 authenticator->setPassword(url.password(QUrl::FullyDecoded));-
1420 *urlForLastAuthentication = url;-
1421 authenticationManager->cacheCredentials(url, authenticator);-
1422 return;
executed 12 times by 1 test: return;
Executed by:
  • tst_QNetworkReply
12
1423 }-
1424-
1425 QNetworkAuthenticationCredential cred = authenticationManager->fetchCachedCredentials(url, authenticator);-
1426 if (!cred.isNull()) {
!cred.isNull()Description
TRUEevaluated 20 times by 1 test
Evaluated by:
  • tst_QNetworkReply
FALSEevaluated 56 times by 1 test
Evaluated by:
  • tst_QNetworkReply
20-56
1427 authenticator->setUser(cred.user);-
1428 authenticator->setPassword(cred.password);-
1429 *urlForLastAuthentication = url;-
1430 return;
executed 20 times by 1 test: return;
Executed by:
  • tst_QNetworkReply
20
1431 }-
1432 }
executed 56 times by 1 test: end of block
Executed by:
  • tst_QNetworkReply
56
1433-
1434 // if we emit a signal here in synchronous mode, the user might spin-
1435 // an event loop, which might recurse and lead to problems-
1436 if (synchronous)
synchronousDescription
TRUEnever evaluated
FALSEevaluated 95 times by 1 test
Evaluated by:
  • tst_QNetworkReply
0-95
1437 return;
never executed: return;
0
1438-
1439 *urlForLastAuthentication = url;-
1440 emit q->authenticationRequired(reply, authenticator);-
1441 if (allowAuthenticationReuse)
allowAuthenticationReuseDescription
TRUEevaluated 94 times by 1 test
Evaluated by:
  • tst_QNetworkReply
FALSEevaluated 1 time by 1 test
Evaluated by:
  • tst_QNetworkReply
1-94
1442 authenticationManager->cacheCredentials(url, authenticator);
executed 94 times by 1 test: authenticationManager->cacheCredentials(url, authenticator);
Executed by:
  • tst_QNetworkReply
94
1443}
executed 95 times by 1 test: end of block
Executed by:
  • tst_QNetworkReply
95
1444-
1445#ifndef QT_NO_NETWORKPROXY-
1446void QNetworkAccessManagerPrivate::proxyAuthenticationRequired(const QUrl &url,-
1447 const QNetworkProxy &proxy,-
1448 bool synchronous,-
1449 QAuthenticator *authenticator,-
1450 QNetworkProxy *lastProxyAuthentication)-
1451{-
1452 Q_Q(QNetworkAccessManager);-
1453 QAuthenticatorPrivate *priv = QAuthenticatorPrivate::getPrivate(*authenticator);-
1454 if (proxy != *lastProxyAuthentication && (!priv || !priv->hasFailed)) {
proxy != *last...AuthenticationDescription
TRUEevaluated 66 times by 2 tests
Evaluated by:
  • tst_QNetworkReply
  • tst_Spdy
FALSEevaluated 2 times by 1 test
Evaluated by:
  • tst_QNetworkReply
!privDescription
TRUEevaluated 30 times by 2 tests
Evaluated by:
  • tst_QNetworkReply
  • tst_Spdy
FALSEevaluated 36 times by 2 tests
Evaluated by:
  • tst_QNetworkReply
  • tst_Spdy
!priv->hasFailedDescription
TRUEevaluated 34 times by 2 tests
Evaluated by:
  • tst_QNetworkReply
  • tst_Spdy
FALSEevaluated 2 times by 1 test
Evaluated by:
  • tst_QNetworkReply
2-66
1455 QNetworkAuthenticationCredential cred = authenticationManager->fetchCachedProxyCredentials(proxy);-
1456 if (!cred.isNull()) {
!cred.isNull()Description
TRUEevaluated 8 times by 1 test
Evaluated by:
  • tst_QNetworkReply
FALSEevaluated 56 times by 2 tests
Evaluated by:
  • tst_QNetworkReply
  • tst_Spdy
8-56
1457 authenticator->setUser(cred.user);-
1458 authenticator->setPassword(cred.password);-
1459 return;
executed 8 times by 1 test: return;
Executed by:
  • tst_QNetworkReply
8
1460 }-
1461 }
executed 56 times by 2 tests: end of block
Executed by:
  • tst_QNetworkReply
  • tst_Spdy
56
1462-
1463#if defined(Q_OS_OSX)-
1464 //now we try to get the username and password from keychain-
1465 //if not successful signal will be emitted-
1466 QString username;-
1467 QString password;-
1468 if (getProxyAuth(proxy.hostName(), url.scheme(), username, password)) {-
1469 // only cache the system credentials if they are correct (or if they have changed)-
1470 // to not run into an endless loop in case they are wrong-
1471 QNetworkAuthenticationCredential cred = authenticationManager->fetchCachedProxyCredentials(proxy);-
1472 if (!priv->hasFailed || cred.user != username || cred.password != password) {-
1473 authenticator->setUser(username);-
1474 authenticator->setPassword(password);-
1475 authenticationManager->cacheProxyCredentials(proxy, authenticator);-
1476 return;-
1477 }-
1478 }-
1479#else-
1480 Q_UNUSED(url);-
1481#endif-
1482-
1483 // if we emit a signal here in synchronous mode, the user might spin-
1484 // an event loop, which might recurse and lead to problems-
1485 if (synchronous)
synchronousDescription
TRUEnever evaluated
FALSEevaluated 60 times by 2 tests
Evaluated by:
  • tst_QNetworkReply
  • tst_Spdy
0-60
1486 return;
never executed: return;
0
1487-
1488 *lastProxyAuthentication = proxy;-
1489 emit q->proxyAuthenticationRequired(proxy, authenticator);-
1490 authenticationManager->cacheProxyCredentials(proxy, authenticator);-
1491}
executed 60 times by 2 tests: end of block
Executed by:
  • tst_QNetworkReply
  • tst_Spdy
60
1492-
1493QList<QNetworkProxy> QNetworkAccessManagerPrivate::queryProxy(const QNetworkProxyQuery &query)-
1494{-
1495 QList<QNetworkProxy> proxies;-
1496 if (proxyFactory) {
proxyFactoryDescription
TRUEevaluated 20 times by 1 test
Evaluated by:
  • tst_QNetworkReply
FALSEevaluated 986 times by 8 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
20-986
1497 proxies = proxyFactory->queryProxy(query);-
1498 if (proxies.isEmpty()) {
proxies.isEmpty()Description
TRUEnever evaluated
FALSEevaluated 20 times by 1 test
Evaluated by:
  • tst_QNetworkReply
0-20
1499 qWarning("QNetworkAccessManager: factory %p has returned an empty result set",-
1500 proxyFactory);-
1501 proxies << QNetworkProxy::NoProxy;-
1502 }
never executed: end of block
0
1503 } else if (proxy.type() == QNetworkProxy::DefaultProxy) {
executed 20 times by 1 test: end of block
Executed by:
  • tst_QNetworkReply
proxy.type() =...::DefaultProxyDescription
TRUEevaluated 832 times by 8 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
FALSEevaluated 154 times by 2 tests
Evaluated by:
  • tst_QNetworkReply
  • tst_Spdy
20-832
1504 // no proxy set, query the application-
1505 return QNetworkProxyFactory::proxyForQuery(query);
executed 832 times by 8 tests: return QNetworkProxyFactory::proxyForQuery(query);
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
832
1506 } else {-
1507 proxies << proxy;-
1508 }
executed 154 times by 2 tests: end of block
Executed by:
  • tst_QNetworkReply
  • tst_Spdy
154
1509-
1510 return proxies;
executed 174 times by 2 tests: return proxies;
Executed by:
  • tst_QNetworkReply
  • tst_Spdy
174
1511}-
1512#endif-
1513-
1514void QNetworkAccessManagerPrivate::clearCache(QNetworkAccessManager *manager)-
1515{-
1516 manager->d_func()->objectCache.clear();-
1517 manager->d_func()->authenticationManager->clearCache();-
1518-
1519 if (manager->d_func()->httpThread) {
manager->d_func()->httpThreadDescription
TRUEevaluated 394 times by 2 tests
Evaluated by:
  • tst_QNetworkReply
  • tst_Spdy
FALSEevaluated 252 times by 1 test
Evaluated by:
  • tst_QNetworkReply
252-394
1520 manager->d_func()->httpThread->quit();-
1521 manager->d_func()->httpThread->wait(5000);-
1522 if (manager->d_func()->httpThread->isFinished())
manager->d_fun...->isFinished()Description
TRUEevaluated 394 times by 2 tests
Evaluated by:
  • tst_QNetworkReply
  • tst_Spdy
FALSEnever evaluated
0-394
1523 delete manager->d_func()->httpThread;
executed 394 times by 2 tests: delete manager->d_func()->httpThread;
Executed by:
  • tst_QNetworkReply
  • tst_Spdy
394
1524 else-
1525 QObject::connect(manager->d_func()->httpThread, SIGNAL(finished()), manager->d_func()->httpThread, SLOT(deleteLater()));
never executed: QObject::connect(manager->d_func()->httpThread, qFlagLocation("2""finished()" "\0" __FILE__ ":" "1525"), manager->d_func()->httpThread, qFlagLocation("1""deleteLater()" "\0" __FILE__ ":" "1525"));
0
1526 manager->d_func()->httpThread = 0;-
1527 }
executed 394 times by 2 tests: end of block
Executed by:
  • tst_QNetworkReply
  • tst_Spdy
394
1528}
executed 646 times by 2 tests: end of block
Executed by:
  • tst_QNetworkReply
  • tst_Spdy
646
1529-
1530QNetworkAccessManagerPrivate::~QNetworkAccessManagerPrivate()-
1531{-
1532 if (httpThread) {
httpThreadDescription
TRUEevaluated 76 times by 8 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_spdy - unknown status
FALSEevaluated 16 times by 4 tests
Evaluated by:
  • tst_QNetworkAccessManager
  • tst_QNetworkConfigurationManager
  • tst_QNetworkReply
  • tst_QXmlStream
16-76
1533 httpThread->quit();-
1534 httpThread->wait(5000);-
1535 if (httpThread->isFinished())
httpThread->isFinished()Description
TRUEevaluated 76 times by 8 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_spdy - unknown status
FALSEnever evaluated
0-76
1536 delete httpThread;
executed 76 times by 8 tests: delete httpThread;
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_spdy - unknown status
76
1537 else-
1538 QObject::connect(httpThread, SIGNAL(finished()), httpThread, SLOT(deleteLater()));
never executed: QObject::connect(httpThread, qFlagLocation("2""finished()" "\0" __FILE__ ":" "1538"), httpThread, qFlagLocation("1""deleteLater()" "\0" __FILE__ ":" "1538"));
0
1539 httpThread = 0;-
1540 }
executed 76 times by 8 tests: end of block
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_spdy - unknown status
76
1541}
executed 92 times by 11 tests: end of block
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkConfigurationManager
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_QXmlStream
  • tst_spdy - unknown status
92
1542-
1543#ifndef QT_NO_BEARERMANAGEMENT-
1544void QNetworkAccessManagerPrivate::createSession(const QNetworkConfiguration &config)-
1545{-
1546 Q_Q(QNetworkAccessManager);-
1547-
1548 initializeSession = false;-
1549-
1550 //resurrect weak ref if possible-
1551 networkSessionStrongRef = networkSessionWeakRef.toStrongRef();-
1552-
1553 QSharedPointer<QNetworkSession> newSession;-
1554 if (config.isValid())
config.isValid()Description
TRUEevaluated 222 times by 9 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
FALSEnever evaluated
0-222
1555 newSession = QSharedNetworkSessionManager::getSession(config);
executed 222 times by 9 tests: newSession = QSharedNetworkSessionManager::getSession(config);
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
222
1556-
1557 if (networkSessionStrongRef) {
networkSessionStrongRefDescription
TRUEevaluated 123 times by 3 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkReply
  • tst_Spdy
FALSEevaluated 99 times by 9 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
99-123
1558 //do nothing if new and old session are the same-
1559 if (networkSessionStrongRef == newSession)
networkSession... == newSessionDescription
TRUEevaluated 123 times by 3 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkReply
  • tst_Spdy
FALSEnever evaluated
0-123
1560 return;
executed 123 times by 3 tests: return;
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QNetworkReply
  • tst_Spdy
123
1561 //disconnect from old session-
1562 QObject::disconnect(networkSessionStrongRef.data(), SIGNAL(opened()), q, SIGNAL(networkSessionConnected()));-
1563 QObject::disconnect(networkSessionStrongRef.data(), SIGNAL(closed()), q, SLOT(_q_networkSessionClosed()));-
1564 QObject::disconnect(networkSessionStrongRef.data(), SIGNAL(stateChanged(QNetworkSession::State)),-
1565 q, SLOT(_q_networkSessionStateChanged(QNetworkSession::State)));-
1566 QObject::disconnect(networkSessionStrongRef.data(), SIGNAL(error(QNetworkSession::SessionError)),-
1567 q, SLOT(_q_networkSessionFailed(QNetworkSession::SessionError)));-
1568 }
never executed: end of block
0
1569-
1570 //switch to new session (null if config was invalid)-
1571 networkSessionStrongRef = newSession;-
1572 networkSessionWeakRef = networkSessionStrongRef.toWeakRef();-
1573-
1574 if (!networkSessionStrongRef) {
!networkSessionStrongRefDescription
TRUEnever evaluated
FALSEevaluated 99 times by 9 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
0-99
1575-
1576 if (networkAccessible == QNetworkAccessManager::NotAccessible || !online)
networkAccessi...:NotAccessibleDescription
TRUEnever evaluated
FALSEnever evaluated
!onlineDescription
TRUEnever evaluated
FALSEnever evaluated
0
1577 emit q->networkAccessibleChanged(QNetworkAccessManager::NotAccessible);
never executed: q->networkAccessibleChanged(QNetworkAccessManager::NotAccessible);
0
1578 else-
1579 emit q->networkAccessibleChanged(QNetworkAccessManager::UnknownAccessibility);
never executed: q->networkAccessibleChanged(QNetworkAccessManager::UnknownAccessibility);
0
1580-
1581 return;
never executed: return;
0
1582 }-
1583-
1584 //connect to new session-
1585 QObject::connect(networkSessionStrongRef.data(), SIGNAL(opened()), q, SIGNAL(networkSessionConnected()), Qt::QueuedConnection);-
1586 //QueuedConnection is used to avoid deleting the networkSession inside its closed signal-
1587 QObject::connect(networkSessionStrongRef.data(), SIGNAL(closed()), q, SLOT(_q_networkSessionClosed()), Qt::QueuedConnection);-
1588 QObject::connect(networkSessionStrongRef.data(), SIGNAL(stateChanged(QNetworkSession::State)),-
1589 q, SLOT(_q_networkSessionStateChanged(QNetworkSession::State)), Qt::QueuedConnection);-
1590 QObject::connect(networkSessionStrongRef.data(), SIGNAL(error(QNetworkSession::SessionError)),-
1591 q, SLOT(_q_networkSessionFailed(QNetworkSession::SessionError)));-
1592-
1593 _q_networkSessionStateChanged(networkSessionStrongRef->state());-
1594}
executed 99 times by 9 tests: end of block
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
99
1595-
1596void QNetworkAccessManagerPrivate::_q_networkSessionClosed()-
1597{-
1598 Q_Q(QNetworkAccessManager);-
1599 QSharedPointer<QNetworkSession> networkSession(getNetworkSession());-
1600 if (networkSession) {
networkSessionDescription
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tst_QNetworkReply
FALSEnever evaluated
0-4
1601 networkConfiguration = networkSession->configuration();-
1602-
1603 //disconnect from old session-
1604 QObject::disconnect(networkSession.data(), SIGNAL(opened()), q, SIGNAL(networkSessionConnected()));-
1605 QObject::disconnect(networkSession.data(), SIGNAL(closed()), q, SLOT(_q_networkSessionClosed()));-
1606 QObject::disconnect(networkSession.data(), SIGNAL(stateChanged(QNetworkSession::State)),-
1607 q, SLOT(_q_networkSessionStateChanged(QNetworkSession::State)));-
1608 QObject::disconnect(networkSession.data(), SIGNAL(error(QNetworkSession::SessionError)),-
1609 q, SLOT(_q_networkSessionFailed(QNetworkSession::SessionError)));-
1610-
1611 networkSessionStrongRef.clear();-
1612 networkSessionWeakRef.clear();-
1613 }
executed 4 times by 1 test: end of block
Executed by:
  • tst_QNetworkReply
4
1614}
executed 4 times by 1 test: end of block
Executed by:
  • tst_QNetworkReply
4
1615-
1616void QNetworkAccessManagerPrivate::_q_networkSessionStateChanged(QNetworkSession::State state)-
1617{-
1618 Q_Q(QNetworkAccessManager);-
1619 bool reallyOnline = false;-
1620 //Do not emit the networkSessionConnected signal here, except for roaming -> connected-
1621 //transition, otherwise it is emitted twice in a row when opening a connection.-
1622 if (state == QNetworkSession::Connected && lastSessionState != QNetworkSession::Roaming)
state == QNetw...ion::ConnectedDescription
TRUEevaluated 99 times by 9 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
FALSEnever evaluated
lastSessionSta...ssion::RoamingDescription
TRUEevaluated 99 times by 9 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
FALSEnever evaluated
0-99
1623 emit q->networkSessionConnected();
executed 99 times by 9 tests: q->networkSessionConnected();
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
99
1624 lastSessionState = state;-
1625-
1626 if (online && state == QNetworkSession::Disconnected) {
onlineDescription
TRUEevaluated 99 times by 9 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
FALSEnever evaluated
state == QNetw...::DisconnectedDescription
TRUEnever evaluated
FALSEevaluated 99 times by 9 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
0-99
1627 const auto cfgs = networkConfigurationManager.allConfigurations();-
1628 for (const QNetworkConfiguration &cfg : cfgs) {-
1629 if (cfg.state().testFlag(QNetworkConfiguration::Active)) {
cfg.state().te...ation::Active)Description
TRUEnever evaluated
FALSEnever evaluated
0
1630 reallyOnline = true;-
1631 }
never executed: end of block
0
1632 }
never executed: end of block
0
1633 } else if (state == QNetworkSession::Connected || state == QNetworkSession::Roaming) {
never executed: end of block
state == QNetw...ion::ConnectedDescription
TRUEevaluated 99 times by 9 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
FALSEnever evaluated
state == QNetw...ssion::RoamingDescription
TRUEnever evaluated
FALSEnever evaluated
0-99
1634 reallyOnline = true;-
1635 }
executed 99 times by 9 tests: end of block
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
99
1636-
1637 if (!reallyOnline) {
!reallyOnlineDescription
TRUEnever evaluated
FALSEevaluated 99 times by 9 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
0-99
1638 if (state != QNetworkSession::Connected && state != QNetworkSession::Roaming) {
state != QNetw...ion::ConnectedDescription
TRUEnever evaluated
FALSEnever evaluated
state != QNetw...ssion::RoamingDescription
TRUEnever evaluated
FALSEnever evaluated
0
1639 if (networkAccessible != QNetworkAccessManager::NotAccessible) {
networkAccessi...:NotAccessibleDescription
TRUEnever evaluated
FALSEnever evaluated
0
1640 networkAccessible = QNetworkAccessManager::NotAccessible;-
1641 emit q->networkAccessibleChanged(networkAccessible);-
1642 }
never executed: end of block
0
1643 }
never executed: end of block
0
1644 } else {
never executed: end of block
0
1645 if (defaultAccessControl)
defaultAccessControlDescription
TRUEevaluated 99 times by 9 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
FALSEnever evaluated
0-99
1646 if (networkAccessible != QNetworkAccessManager::Accessible) {
networkAccessi...er::AccessibleDescription
TRUEnever evaluated
FALSEevaluated 99 times by 9 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
0-99
1647 networkAccessible = QNetworkAccessManager::Accessible;-
1648 emit q->networkAccessibleChanged(networkAccessible);-
1649 }
never executed: end of block
0
1650 }
executed 99 times by 9 tests: end of block
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
99
1651 online = reallyOnline;-
1652 if (online && (state != QNetworkSession::Connected && state != QNetworkSession::Roaming)) {
onlineDescription
TRUEevaluated 99 times by 9 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
FALSEnever evaluated
state != QNetw...ion::ConnectedDescription
TRUEnever evaluated
FALSEevaluated 99 times by 9 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
state != QNetw...ssion::RoamingDescription
TRUEnever evaluated
FALSEnever evaluated
0-99
1653 _q_networkSessionClosed();-
1654 createSession(q->configuration());-
1655 }
never executed: end of block
0
1656}
executed 99 times by 9 tests: end of block
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QXmlInputSource
  • tst_Spdy
99
1657-
1658void QNetworkAccessManagerPrivate::_q_onlineStateChanged(bool isOnline)-
1659{-
1660 Q_Q(QNetworkAccessManager);-
1661-
1662 // if the user set a config, we only care whether this one is active.-
1663 // Otherwise, this QNAM is online if there is an online config.-
1664 if (customNetworkConfiguration) {
customNetworkConfigurationDescription
TRUEnever evaluated
FALSEnever evaluated
0
1665 online = (networkConfiguration.state() & QNetworkConfiguration::Active);-
1666 } else {
never executed: end of block
0
1667 if (online != isOnline) {
online != isOnlineDescription
TRUEnever evaluated
FALSEnever evaluated
0
1668 _q_networkSessionClosed();-
1669 createSession(q->configuration());-
1670 online = isOnline;-
1671 }
never executed: end of block
0
1672 }
never executed: end of block
0
1673 if (online) {
onlineDescription
TRUEnever evaluated
FALSEnever evaluated
0
1674 if (defaultAccessControl) {
defaultAccessControlDescription
TRUEnever evaluated
FALSEnever evaluated
0
1675 if (networkAccessible != QNetworkAccessManager::Accessible) {
networkAccessi...er::AccessibleDescription
TRUEnever evaluated
FALSEnever evaluated
0
1676 networkAccessible = QNetworkAccessManager::Accessible;-
1677 emit q->networkAccessibleChanged(networkAccessible);-
1678 }
never executed: end of block
0
1679 }
never executed: end of block
0
1680 } else {
never executed: end of block
0
1681 if (networkAccessible != QNetworkAccessManager::NotAccessible) {
networkAccessi...:NotAccessibleDescription
TRUEnever evaluated
FALSEnever evaluated
0
1682 networkAccessible = QNetworkAccessManager::NotAccessible;-
1683 emit q->networkAccessibleChanged(networkAccessible);-
1684 }
never executed: end of block
0
1685 }
never executed: end of block
0
1686}-
1687-
1688void QNetworkAccessManagerPrivate::_q_configurationChanged(const QNetworkConfiguration &configuration)-
1689{-
1690 const QString id = configuration.identifier();-
1691 if (configuration.state().testFlag(QNetworkConfiguration::Active)) {
configuration....ation::Active)Description
TRUEnever evaluated
FALSEnever evaluated
0
1692 if (!onlineConfigurations.contains(id)) {
!onlineConfigu...s.contains(id)Description
TRUEnever evaluated
FALSEnever evaluated
0
1693-
1694 QSharedPointer<QNetworkSession> session(getNetworkSession());-
1695 if (session) {
sessionDescription
TRUEnever evaluated
FALSEnever evaluated
0
1696 if (online && session->configuration().identifier()
onlineDescription
TRUEnever evaluated
FALSEnever evaluated
session->confi...).identifier()Description
TRUEnever evaluated
FALSEnever evaluated
0
1697 != networkConfigurationManager.defaultConfiguration().identifier()) {
session->confi...).identifier()Description
TRUEnever evaluated
FALSEnever evaluated
0
1698-
1699 onlineConfigurations.insert(id);-
1700 //this one disconnected but another one is online,-
1701 // close and create new session-
1702 _q_networkSessionClosed();-
1703 createSession(networkConfigurationManager.defaultConfiguration());-
1704 }
never executed: end of block
0
1705 }
never executed: end of block
0
1706 }
never executed: end of block
0
1707-
1708 } else if (onlineConfigurations.contains(id)) {
never executed: end of block
onlineConfigur...s.contains(id)Description
TRUEnever evaluated
FALSEnever evaluated
0
1709 //this one is disconnecting-
1710 onlineConfigurations.remove(id);-
1711 if (!onlineConfigurations.isEmpty()) {
!onlineConfigu...ions.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
1712 _q_networkSessionClosed();-
1713 createSession(configuration);-
1714 }
never executed: end of block
0
1715 }
never executed: end of block
0
1716}
never executed: end of block
0
1717-
1718-
1719void QNetworkAccessManagerPrivate::_q_networkSessionFailed(QNetworkSession::SessionError)-
1720{-
1721 const auto cfgs = networkConfigurationManager.allConfigurations();-
1722 for (const QNetworkConfiguration &cfg : cfgs) {-
1723 if (cfg.state().testFlag(QNetworkConfiguration::Active)) {
cfg.state().te...ation::Active)Description
TRUEnever evaluated
FALSEnever evaluated
0
1724 online = true;-
1725 _q_networkSessionClosed();-
1726 createSession(networkConfigurationManager.defaultConfiguration());-
1727 return;
never executed: return;
0
1728 }-
1729 }
never executed: end of block
0
1730}
never executed: end of block
0
1731-
1732#endif // QT_NO_BEARERMANAGEMENT-
1733-
1734QNetworkRequest QNetworkAccessManagerPrivate::prepareMultipart(const QNetworkRequest &request, QHttpMultiPart *multiPart)-
1735{-
1736 // copy the request, we probably need to add some headers-
1737 QNetworkRequest newRequest(request);-
1738-
1739 // add Content-Type header if not there already-
1740 if (!request.header(QNetworkRequest::ContentTypeHeader).isValid()) {
!request.heade...der).isValid()Description
TRUEevaluated 22 times by 2 tests
Evaluated by:
  • tst_QNetworkReply
  • tst_Spdy
FALSEevaluated 2 times by 1 test
Evaluated by:
  • tst_QNetworkReply
2-22
1741 QByteArray contentType;-
1742 contentType.reserve(34 + multiPart->d_func()->boundary.count());-
1743 contentType += "multipart/";-
1744 switch (multiPart->d_func()->contentType) {-
1745 case QHttpMultiPart::RelatedType:
executed 2 times by 1 test: case QHttpMultiPart::RelatedType:
Executed by:
  • tst_QNetworkReply
2
1746 contentType += "related";-
1747 break;
executed 2 times by 1 test: break;
Executed by:
  • tst_QNetworkReply
2
1748 case QHttpMultiPart::FormDataType:
executed 13 times by 2 tests: case QHttpMultiPart::FormDataType:
Executed by:
  • tst_QNetworkReply
  • tst_Spdy
13
1749 contentType += "form-data";-
1750 break;
executed 13 times by 2 tests: break;
Executed by:
  • tst_QNetworkReply
  • tst_Spdy
13
1751 case QHttpMultiPart::AlternativeType:
executed 4 times by 1 test: case QHttpMultiPart::AlternativeType:
Executed by:
  • tst_QNetworkReply
4
1752 contentType += "alternative";-
1753 break;
executed 4 times by 1 test: break;
Executed by:
  • tst_QNetworkReply
4
1754 default:
executed 3 times by 1 test: default:
Executed by:
  • tst_QNetworkReply
3
1755 contentType += "mixed";-
1756 break;
executed 3 times by 1 test: break;
Executed by:
  • tst_QNetworkReply
3
1757 }-
1758 // putting the boundary into quotes, recommended in RFC 2046 section 5.1.1-
1759 contentType += "; boundary=\"" + multiPart->d_func()->boundary + '"';-
1760 newRequest.setHeader(QNetworkRequest::ContentTypeHeader, QVariant(contentType));-
1761 }
executed 22 times by 2 tests: end of block
Executed by:
  • tst_QNetworkReply
  • tst_Spdy
22
1762-
1763 // add MIME-Version header if not there already (we must include the header-
1764 // if the message conforms to RFC 2045, see section 4 of that RFC)-
1765 QByteArray mimeHeader("MIME-Version");-
1766 if (!request.hasRawHeader(mimeHeader))
!request.hasRa...er(mimeHeader)Description
TRUEevaluated 24 times by 2 tests
Evaluated by:
  • tst_QNetworkReply
  • tst_Spdy
FALSEnever evaluated
0-24
1767 newRequest.setRawHeader(mimeHeader, QByteArray("1.0"));
executed 24 times by 2 tests: newRequest.setRawHeader(mimeHeader, QByteArray("1.0"));
Executed by:
  • tst_QNetworkReply
  • tst_Spdy
24
1768-
1769 QIODevice *device = multiPart->d_func()->device;-
1770 if (!device->isReadable()) {
!device->isReadable()Description
TRUEevaluated 24 times by 2 tests
Evaluated by:
  • tst_QNetworkReply
  • tst_Spdy
FALSEnever evaluated
0-24
1771 if (!device->isOpen()) {
!device->isOpen()Description
TRUEevaluated 24 times by 2 tests
Evaluated by:
  • tst_QNetworkReply
  • tst_Spdy
FALSEnever evaluated
0-24
1772 if (!device->open(QIODevice::ReadOnly))
!device->open(...ice::ReadOnly)Description
TRUEnever evaluated
FALSEevaluated 24 times by 2 tests
Evaluated by:
  • tst_QNetworkReply
  • tst_Spdy
0-24
1773 qWarning("could not open device for reading");
never executed: QMessageLogger(__FILE__, 1773, __PRETTY_FUNCTION__).warning("could not open device for reading");
0
1774 } else {
executed 24 times by 2 tests: end of block
Executed by:
  • tst_QNetworkReply
  • tst_Spdy
24
1775 qWarning("device is not readable");-
1776 }
never executed: end of block
0
1777 }-
1778-
1779 return newRequest;
executed 24 times by 2 tests: return newRequest;
Executed by:
  • tst_QNetworkReply
  • tst_Spdy
24
1780}-
1781-
1782QT_END_NAMESPACE-
1783-
1784#include "moc_qnetworkaccessmanager.cpp"-
Source codeSwitch to Preprocessed file

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