access/qnetworkreplyfileimpl.cpp

Source codeSwitch to Preprocessed file
LineSource CodeCoverage
1/**************************************************************************** -
2** -
3** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -
4** Contact: http://www.qt-project.org/legal -
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 Digia. For licensing terms and -
14** conditions see http://qt.digia.com/licensing. For further information -
15** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software -
20** Foundation and appearing in the file LICENSE.LGPL included in the -
21** packaging of this file. Please review the following information to -
22** ensure the GNU Lesser General Public License version 2.1 requirements -
23** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -
24** -
25** In addition, as a special exception, Digia gives you certain additional -
26** rights. These rights are described in the Digia Qt LGPL Exception -
27** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -
28** -
29** GNU General Public License Usage -
30** Alternatively, this file may be used under the terms of the GNU -
31** General Public License version 3.0 as published by the Free Software -
32** Foundation and appearing in the file LICENSE.GPL included in the -
33** packaging of this file. Please review the following information to -
34** ensure the GNU General Public License version 3.0 requirements will be -
35** met: http://www.gnu.org/copyleft/gpl.html. -
36** -
37** -
38** $QT_END_LICENSE$ -
39** -
40****************************************************************************/ -
41 -
42#include "qnetworkreplyfileimpl_p.h" -
43 -
44#include "QtCore/qdatetime.h" -
45#include <QtCore/QCoreApplication> -
46#include <QtCore/QFileInfo> -
47#include <QDebug> -
48 -
49QT_BEGIN_NAMESPACE -
50 -
51QNetworkReplyFileImplPrivate::QNetworkReplyFileImplPrivate() -
52 : QNetworkReplyPrivate(), realFileSize(0) -
53{ -
54}
executed: }
Execution Count:29
29
55 -
56QNetworkReplyFileImpl::~QNetworkReplyFileImpl() -
57{ -
58} -
59 -
60QNetworkReplyFileImpl::QNetworkReplyFileImpl(QObject *parent, const QNetworkRequest &req, const QNetworkAccessManager::Operation op) -
61 : QNetworkReply(*new QNetworkReplyFileImplPrivate(), parent) -
62{ -
63 setRequest(req);
executed (the execution status of this line is deduced): setRequest(req);
-
64 setUrl(req.url());
executed (the execution status of this line is deduced): setUrl(req.url());
-
65 setOperation(op);
executed (the execution status of this line is deduced): setOperation(op);
-
66 setFinished(true);
executed (the execution status of this line is deduced): setFinished(true);
-
67 QNetworkReply::open(QIODevice::ReadOnly);
executed (the execution status of this line is deduced): QNetworkReply::open(QIODevice::ReadOnly);
-
68 -
69 QNetworkReplyFileImplPrivate *d = (QNetworkReplyFileImplPrivate*) d_func();
executed (the execution status of this line is deduced): QNetworkReplyFileImplPrivate *d = (QNetworkReplyFileImplPrivate*) d_func();
-
70 -
71 QUrl url = req.url();
executed (the execution status of this line is deduced): QUrl url = req.url();
-
72 if (url.host() == QLatin1String("localhost"))
evaluated: url.host() == QLatin1String("localhost")
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:28
1-28
73 url.setHost(QString());
executed: url.setHost(QString());
Execution Count:1
1
74 -
75#if !defined(Q_OS_WIN) -
76 // do not allow UNC paths on Unix -
77 if (!url.host().isEmpty()) {
evaluated: !url.host().isEmpty()
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:28
1-28
78 // we handle only local files -
79 QString msg = QCoreApplication::translate("QNetworkAccessFileBackend", "Request for opening non-local file %1").arg(url.toString());
executed (the execution status of this line is deduced): QString msg = QCoreApplication::translate("QNetworkAccessFileBackend", "Request for opening non-local file %1").arg(url.toString());
-
80 setError(QNetworkReply::ProtocolInvalidOperationError, msg);
executed (the execution status of this line is deduced): setError(QNetworkReply::ProtocolInvalidOperationError, msg);
-
81 QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection,
executed (the execution status of this line is deduced): QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection,
-
82 Q_ARG(QNetworkReply::NetworkError, QNetworkReply::ProtocolInvalidOperationError));
executed (the execution status of this line is deduced): QArgument<QNetworkReply::NetworkError >("QNetworkReply::NetworkError", QNetworkReply::ProtocolInvalidOperationError));
-
83 QMetaObject::invokeMethod(this, "finished", Qt::QueuedConnection);
executed (the execution status of this line is deduced): QMetaObject::invokeMethod(this, "finished", Qt::QueuedConnection);
-
84 return;
executed: return;
Execution Count:1
1
85 } -
86#endif -
87 if (url.path().isEmpty())
evaluated: url.path().isEmpty()
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:27
1-27
88 url.setPath(QLatin1String("/"));
executed: url.setPath(QLatin1String("/"));
Execution Count:1
1
89 setUrl(url);
executed (the execution status of this line is deduced): setUrl(url);
-
90 -
91 -
92 QString fileName = url.toLocalFile();
executed (the execution status of this line is deduced): QString fileName = url.toLocalFile();
-
93 if (fileName.isEmpty()) {
evaluated: fileName.isEmpty()
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:26
2-26
94 if (url.scheme() == QLatin1String("qrc"))
partially evaluated: url.scheme() == QLatin1String("qrc")
TRUEFALSE
yes
Evaluation Count:2
no
Evaluation Count:0
0-2
95 fileName = QLatin1Char(':') + url.path();
executed: fileName = QLatin1Char(':') + url.path();
Execution Count:2
2
96 else -
97 fileName = url.toString(QUrl::RemoveAuthority | QUrl::RemoveFragment | QUrl::RemoveQuery);
never executed: fileName = url.toString(QUrl::RemoveAuthority | QUrl::RemoveFragment | QUrl::RemoveQuery);
0
98 } -
99 -
100 QFileInfo fi(fileName);
executed (the execution status of this line is deduced): QFileInfo fi(fileName);
-
101 if (fi.isDir()) {
evaluated: fi.isDir()
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:25
3-25
102 QString msg = QCoreApplication::translate("QNetworkAccessFileBackend", "Cannot open %1: Path is a directory").arg(url.toString());
executed (the execution status of this line is deduced): QString msg = QCoreApplication::translate("QNetworkAccessFileBackend", "Cannot open %1: Path is a directory").arg(url.toString());
-
103 setError(QNetworkReply::ContentOperationNotPermittedError, msg);
executed (the execution status of this line is deduced): setError(QNetworkReply::ContentOperationNotPermittedError, msg);
-
104 QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection,
executed (the execution status of this line is deduced): QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection,
-
105 Q_ARG(QNetworkReply::NetworkError, QNetworkReply::ContentOperationNotPermittedError));
executed (the execution status of this line is deduced): QArgument<QNetworkReply::NetworkError >("QNetworkReply::NetworkError", QNetworkReply::ContentOperationNotPermittedError));
-
106 QMetaObject::invokeMethod(this, "finished", Qt::QueuedConnection);
executed (the execution status of this line is deduced): QMetaObject::invokeMethod(this, "finished", Qt::QueuedConnection);
-
107 return;
executed: return;
Execution Count:3
3
108 } -
109 -
110 d->realFile.setFileName(fileName);
executed (the execution status of this line is deduced): d->realFile.setFileName(fileName);
-
111 bool opened = d->realFile.open(QIODevice::ReadOnly | QIODevice::Unbuffered);
executed (the execution status of this line is deduced): bool opened = d->realFile.open(QIODevice::ReadOnly | QIODevice::Unbuffered);
-
112 -
113 // could we open the file? -
114 if (!opened) {
evaluated: !opened
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:22
3-22
115 QString msg = QCoreApplication::translate("QNetworkAccessFileBackend", "Error opening %1: %2")
executed (the execution status of this line is deduced): QString msg = QCoreApplication::translate("QNetworkAccessFileBackend", "Error opening %1: %2")
-
116 .arg(d->realFile.fileName(), d->realFile.errorString());
executed (the execution status of this line is deduced): .arg(d->realFile.fileName(), d->realFile.errorString());
-
117 -
118 if (d->realFile.exists()) {
evaluated: d->realFile.exists()
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:1
1-2
119 setError(QNetworkReply::ContentAccessDenied, msg);
executed (the execution status of this line is deduced): setError(QNetworkReply::ContentAccessDenied, msg);
-
120 QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection,
executed (the execution status of this line is deduced): QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection,
-
121 Q_ARG(QNetworkReply::NetworkError, QNetworkReply::ContentAccessDenied));
executed (the execution status of this line is deduced): QArgument<QNetworkReply::NetworkError >("QNetworkReply::NetworkError", QNetworkReply::ContentAccessDenied));
-
122 } else {
executed: }
Execution Count:2
2
123 setError(QNetworkReply::ContentNotFoundError, msg);
executed (the execution status of this line is deduced): setError(QNetworkReply::ContentNotFoundError, msg);
-
124 QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection,
executed (the execution status of this line is deduced): QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection,
-
125 Q_ARG(QNetworkReply::NetworkError, QNetworkReply::ContentNotFoundError));
executed (the execution status of this line is deduced): QArgument<QNetworkReply::NetworkError >("QNetworkReply::NetworkError", QNetworkReply::ContentNotFoundError));
-
126 }
executed: }
Execution Count:1
1
127 QMetaObject::invokeMethod(this, "finished", Qt::QueuedConnection);
executed (the execution status of this line is deduced): QMetaObject::invokeMethod(this, "finished", Qt::QueuedConnection);
-
128 return;
executed: return;
Execution Count:3
3
129 } -
130 -
131 setHeader(QNetworkRequest::LastModifiedHeader, fi.lastModified());
executed (the execution status of this line is deduced): setHeader(QNetworkRequest::LastModifiedHeader, fi.lastModified());
-
132 d->realFileSize = fi.size();
executed (the execution status of this line is deduced): d->realFileSize = fi.size();
-
133 setHeader(QNetworkRequest::ContentLengthHeader, d->realFileSize);
executed (the execution status of this line is deduced): setHeader(QNetworkRequest::ContentLengthHeader, d->realFileSize);
-
134 -
135 QMetaObject::invokeMethod(this, "metaDataChanged", Qt::QueuedConnection);
executed (the execution status of this line is deduced): QMetaObject::invokeMethod(this, "metaDataChanged", Qt::QueuedConnection);
-
136 QMetaObject::invokeMethod(this, "downloadProgress", Qt::QueuedConnection,
executed (the execution status of this line is deduced): QMetaObject::invokeMethod(this, "downloadProgress", Qt::QueuedConnection,
-
137 Q_ARG(qint64, d->realFileSize), Q_ARG(qint64, d->realFileSize));
executed (the execution status of this line is deduced): QArgument<qint64 >("qint64", d->realFileSize), QArgument<qint64 >("qint64", d->realFileSize));
-
138 QMetaObject::invokeMethod(this, "readyRead", Qt::QueuedConnection);
executed (the execution status of this line is deduced): QMetaObject::invokeMethod(this, "readyRead", Qt::QueuedConnection);
-
139 QMetaObject::invokeMethod(this, "finished", Qt::QueuedConnection);
executed (the execution status of this line is deduced): QMetaObject::invokeMethod(this, "finished", Qt::QueuedConnection);
-
140}
executed: }
Execution Count:22
22
141void QNetworkReplyFileImpl::close() -
142{ -
143 Q_D(QNetworkReplyFileImpl);
never executed (the execution status of this line is deduced): QNetworkReplyFileImplPrivate * const d = d_func();
-
144 QNetworkReply::close();
never executed (the execution status of this line is deduced): QNetworkReply::close();
-
145 d->realFile.close();
never executed (the execution status of this line is deduced): d->realFile.close();
-
146}
never executed: }
0
147 -
148void QNetworkReplyFileImpl::abort() -
149{ -
150 Q_D(QNetworkReplyFileImpl);
executed (the execution status of this line is deduced): QNetworkReplyFileImplPrivate * const d = d_func();
-
151 QNetworkReply::close();
executed (the execution status of this line is deduced): QNetworkReply::close();
-
152 d->realFile.close();
executed (the execution status of this line is deduced): d->realFile.close();
-
153}
executed: }
Execution Count:1
1
154 -
155qint64 QNetworkReplyFileImpl::bytesAvailable() const -
156{ -
157 Q_D(const QNetworkReplyFileImpl);
executed (the execution status of this line is deduced): const QNetworkReplyFileImplPrivate * const d = d_func();
-
158 return QNetworkReply::bytesAvailable() + d->realFile.bytesAvailable();
executed: return QNetworkReply::bytesAvailable() + d->realFile.bytesAvailable();
Execution Count:193
193
159} -
160 -
161bool QNetworkReplyFileImpl::isSequential () const -
162{ -
163 return true;
executed: return true;
Execution Count:182
182
164} -
165 -
166qint64 QNetworkReplyFileImpl::size() const -
167{ -
168 Q_D(const QNetworkReplyFileImpl);
never executed (the execution status of this line is deduced): const QNetworkReplyFileImplPrivate * const d = d_func();
-
169 return d->realFileSize;
never executed: return d->realFileSize;
0
170} -
171 -
172/*! -
173 \internal -
174*/ -
175qint64 QNetworkReplyFileImpl::readData(char *data, qint64 maxlen) -
176{ -
177 Q_D(QNetworkReplyFileImpl);
executed (the execution status of this line is deduced): QNetworkReplyFileImplPrivate * const d = d_func();
-
178 qint64 ret = d->realFile.read(data, maxlen);
executed (the execution status of this line is deduced): qint64 ret = d->realFile.read(data, maxlen);
-
179 if (ret == 0 && bytesAvailable() == 0)
evaluated: ret == 0
TRUEFALSE
yes
Evaluation Count:176
yes
Evaluation Count:168
evaluated: bytesAvailable() == 0
TRUEFALSE
yes
Evaluation Count:31
yes
Evaluation Count:145
31-176
180 return -1;
executed: return -1;
Execution Count:31
31
181 else -
182 return ret;
executed: return ret;
Execution Count:313
313
183} -
184 -
185 -
186QT_END_NAMESPACE -
187 -
188#include "moc_qnetworkreplyfileimpl_p.cpp" -
189 -
190 -
Source codeSwitch to Preprocessed file

Generated by Squish Coco Non-Commercial