io/qdataurl.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 QtCore 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 "qplatformdefs.h" -
43#include "qurl.h" -
44#include "private/qdataurl_p.h" -
45 -
46QT_BEGIN_NAMESPACE -
47 -
48/*! -
49 \internal -
50 -
51 Decode a data: URL into its mimetype and payload. Returns a null string if -
52 the URL could not be decoded. -
53*/ -
54Q_CORE_EXPORT bool qDecodeDataUrl(const QUrl &uri, QString &mimeType, QByteArray &payload) -
55{ -
56 if (uri.scheme() != QLatin1String("data") || !uri.host().isEmpty())
evaluated: uri.scheme() != QLatin1String("data")
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:32
partially evaluated: !uri.host().isEmpty()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:32
0-32
57 return false;
executed: return false;
Execution Count:1
1
58 -
59 mimeType = QLatin1String("text/plain;charset=US-ASCII");
executed (the execution status of this line is deduced): mimeType = QLatin1String("text/plain;charset=US-ASCII");
-
60 -
61 // the following would have been the correct thing, but -
62 // reality often differs from the specification. People have -
63 // data: URIs with ? and # -
64 //QByteArray data = QByteArray::fromPercentEncoding(uri.path(QUrl::FullyEncoded).toLatin1()); -
65 QByteArray data = QByteArray::fromPercentEncoding(uri.url(QUrl::FullyEncoded | QUrl::RemoveScheme).toLatin1());
executed (the execution status of this line is deduced): QByteArray data = QByteArray::fromPercentEncoding(uri.url(QUrl::FullyEncoded | QUrl::RemoveScheme).toLatin1());
-
66 -
67 // parse it: -
68 int pos = data.indexOf(',');
executed (the execution status of this line is deduced): int pos = data.indexOf(',');
-
69 if (pos != -1) {
evaluated: pos != -1
TRUEFALSE
yes
Evaluation Count:31
yes
Evaluation Count:1
1-31
70 payload = data.mid(pos + 1);
executed (the execution status of this line is deduced): payload = data.mid(pos + 1);
-
71 data.truncate(pos);
executed (the execution status of this line is deduced): data.truncate(pos);
-
72 data = data.trimmed();
executed (the execution status of this line is deduced): data = data.trimmed();
-
73 -
74 // find out if the payload is encoded in Base64 -
75 if (data.endsWith(";base64")) {
evaluated: data.endsWith(";base64")
TRUEFALSE
yes
Evaluation Count:11
yes
Evaluation Count:20
11-20
76 payload = QByteArray::fromBase64(payload);
executed (the execution status of this line is deduced): payload = QByteArray::fromBase64(payload);
-
77 data.chop(7);
executed (the execution status of this line is deduced): data.chop(7);
-
78 }
executed: }
Execution Count:11
11
79 -
80 if (data.toLower().startsWith("charset")) {
evaluated: data.toLower().startsWith("charset")
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:27
4-27
81 int i = 7; // strlen("charset")
executed (the execution status of this line is deduced): int i = 7;
-
82 while (data.at(i) == ' ')
evaluated: data.at(i) == ' '
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:4
1-4
83 ++i;
executed: ++i;
Execution Count:1
1
84 if (data.at(i) == '=')
partially evaluated: data.at(i) == '='
TRUEFALSE
yes
Evaluation Count:4
no
Evaluation Count:0
0-4
85 data.prepend("text/plain;");
executed: data.prepend("text/plain;");
Execution Count:4
4
86 }
executed: }
Execution Count:4
4
87 -
88 if (!data.isEmpty())
evaluated: !data.isEmpty()
TRUEFALSE
yes
Evaluation Count:16
yes
Evaluation Count:15
15-16
89 mimeType = QLatin1String(data.trimmed());
executed: mimeType = QLatin1String(data.trimmed());
Execution Count:16
16
90 -
91 }
executed: }
Execution Count:31
31
92 -
93 return true;
executed: return true;
Execution Count:32
32
94} -
95 -
96QT_END_NAMESPACE -
97 -
Source codeSwitch to Preprocessed file

Generated by Squish Coco Non-Commercial