access/qhttpnetworkheader.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 "qhttpnetworkheader_p.h" -
43 -
44#ifndef QT_NO_HTTP -
45 -
46QT_BEGIN_NAMESPACE -
47 -
48QHttpNetworkHeaderPrivate::QHttpNetworkHeaderPrivate(const QUrl &newUrl) -
49 :url(newUrl) -
50{ -
51}
executed: }
Execution Count:6558
6558
52 -
53QHttpNetworkHeaderPrivate::QHttpNetworkHeaderPrivate(const QHttpNetworkHeaderPrivate &other) -
54 :QSharedData(other) -
55{ -
56 url = other.url;
executed (the execution status of this line is deduced): url = other.url;
-
57 fields = other.fields;
executed (the execution status of this line is deduced): fields = other.fields;
-
58}
executed: }
Execution Count:867
867
59 -
60qint64 QHttpNetworkHeaderPrivate::contentLength() const -
61{ -
62 bool ok = false;
executed (the execution status of this line is deduced): bool ok = false;
-
63 // We are not using the headerField() method here because servers might send us multiple content-length -
64 // headers which is crap (see QTBUG-15311). Therefore just take the first content-length header field. -
65 QByteArray value;
executed (the execution status of this line is deduced): QByteArray value;
-
66 QList<QPair<QByteArray, QByteArray> >::ConstIterator it = fields.constBegin(),
executed (the execution status of this line is deduced): QList<QPair<QByteArray, QByteArray> >::ConstIterator it = fields.constBegin(),
-
67 end = fields.constEnd();
executed (the execution status of this line is deduced): end = fields.constEnd();
-
68 for ( ; it != end; ++it)
evaluated: it != end
TRUEFALSE
yes
Evaluation Count:13891
yes
Evaluation Count:607
607-13891
69 if (qstricmp("content-length", it->first) == 0) {
evaluated: qstricmp("content-length", it->first) == 0
TRUEFALSE
yes
Evaluation Count:2881
yes
Evaluation Count:11010
2881-11010
70 value = it->second;
executed (the execution status of this line is deduced): value = it->second;
-
71 break;
executed: break;
Execution Count:2881
2881
72 } -
73 -
74 qint64 length = value.toULongLong(&ok);
executed (the execution status of this line is deduced): qint64 length = value.toULongLong(&ok);
-
75 if (ok)
evaluated: ok
TRUEFALSE
yes
Evaluation Count:2881
yes
Evaluation Count:607
607-2881
76 return length;
executed: return length;
Execution Count:2881
2881
77 return -1; // the header field is not set
executed: return -1;
Execution Count:607
607
78} -
79 -
80void QHttpNetworkHeaderPrivate::setContentLength(qint64 length) -
81{ -
82 setHeaderField("Content-Length", QByteArray::number(length));
executed (the execution status of this line is deduced): setHeaderField("Content-Length", QByteArray::number(length));
-
83}
executed: }
Execution Count:178
178
84 -
85QByteArray QHttpNetworkHeaderPrivate::headerField(const QByteArray &name, const QByteArray &defaultValue) const -
86{ -
87 QList<QByteArray> allValues = headerFieldValues(name);
executed (the execution status of this line is deduced): QList<QByteArray> allValues = headerFieldValues(name);
-
88 if (allValues.isEmpty())
evaluated: allValues.isEmpty()
TRUEFALSE
yes
Evaluation Count:6786
yes
Evaluation Count:1768
1768-6786
89 return defaultValue;
executed: return defaultValue;
Execution Count:6786
6786
90 -
91 QByteArray result;
executed (the execution status of this line is deduced): QByteArray result;
-
92 bool first = true;
executed (the execution status of this line is deduced): bool first = true;
-
93 foreach (const QByteArray &value, allValues) {
executed (the execution status of this line is deduced): for (QForeachContainer<__typeof__(allValues)> _container_(allValues); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (const QByteArray &value = *_container_.i;; __extension__ ({--_container_.brk; break;})) {
-
94 if (!first)
partially evaluated: !first
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:1768
0-1768
95 result += ", ";
never executed: result += ", ";
0
96 first = false;
executed (the execution status of this line is deduced): first = false;
-
97 result += value;
executed (the execution status of this line is deduced): result += value;
-
98 }
executed: }
Execution Count:1768
1768
99 return result;
executed: return result;
Execution Count:1768
1768
100} -
101 -
102QList<QByteArray> QHttpNetworkHeaderPrivate::headerFieldValues(const QByteArray &name) const -
103{ -
104 QList<QByteArray> result;
executed (the execution status of this line is deduced): QList<QByteArray> result;
-
105 QList<QPair<QByteArray, QByteArray> >::ConstIterator it = fields.constBegin(),
executed (the execution status of this line is deduced): QList<QPair<QByteArray, QByteArray> >::ConstIterator it = fields.constBegin(),
-
106 end = fields.constEnd();
executed (the execution status of this line is deduced): end = fields.constEnd();
-
107 for ( ; it != end; ++it)
evaluated: it != end
TRUEFALSE
yes
Evaluation Count:46061
yes
Evaluation Count:8889
8889-46061
108 if (qstricmp(name.constData(), it->first) == 0)
evaluated: qstricmp(name.constData(), it->first) == 0
TRUEFALSE
yes
Evaluation Count:2102
yes
Evaluation Count:43959
2102-43959
109 result += it->second;
executed: result += it->second;
Execution Count:2102
2102
110 -
111 return result;
executed: return result;
Execution Count:8889
8889
112} -
113 -
114void QHttpNetworkHeaderPrivate::setHeaderField(const QByteArray &name, const QByteArray &data) -
115{ -
116 QList<QPair<QByteArray, QByteArray> >::Iterator it = fields.begin();
executed (the execution status of this line is deduced): QList<QPair<QByteArray, QByteArray> >::Iterator it = fields.begin();
-
117 while (it != fields.end()) {
evaluated: it != fields.end()
TRUEFALSE
yes
Evaluation Count:10393
yes
Evaluation Count:4144
4144-10393
118 if (qstricmp(name.constData(), it->first) == 0)
evaluated: qstricmp(name.constData(), it->first) == 0
TRUEFALSE
yes
Evaluation Count:155
yes
Evaluation Count:10238
155-10238
119 it = fields.erase(it);
executed: it = fields.erase(it);
Execution Count:155
155
120 else -
121 ++it;
executed: ++it;
Execution Count:10238
10238
122 } -
123 fields.append(qMakePair(name, data));
executed (the execution status of this line is deduced): fields.append(qMakePair(name, data));
-
124}
executed: }
Execution Count:4144
4144
125 -
126bool QHttpNetworkHeaderPrivate::operator==(const QHttpNetworkHeaderPrivate &other) const -
127{ -
128 return (url == other.url);
never executed: return (url == other.url);
0
129} -
130 -
131 -
132QT_END_NAMESPACE -
133 -
134#endif -
135 -
Source codeSwitch to Preprocessed file

Generated by Squish Coco Non-Commercial