qdataurl.cpp

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

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