qmimedatabase.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/corelib/mimetypes/qmimedatabase.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7-
8-
9-
10-
11-
12namespace { namespace Q_QGS_staticQMimeDatabase { typedef QMimeDatabasePrivate Type; QBasicAtomicInt guard = { QtGlobalStatic::Uninitialized }; __attribute__((visibility("hidden"))) inline Type *innerFunction() { struct HolderBase { ~HolderBase() noexcept { if (guard.load() == QtGlobalStatic::Initialized
guard.load() =...c::InitializedDescription
TRUEevaluated 4 times by 4 tests
Evaluated by:
  • tst_qdebug - unknown status
  • tst_qmimedatabase-cache - unknown status
  • tst_qmimedatabase-xml - unknown status
  • tst_qmimetype - unknown status
FALSEnever evaluated
) guard.store(QtGlobalStatic::Destroyed);
executed 4 times by 4 tests: guard.store(QtGlobalStatic::Destroyed);
Executed by:
  • tst_qdebug - unknown status
  • tst_qmimedatabase-cache - unknown status
  • tst_qmimedatabase-xml - unknown status
  • tst_qmimetype - unknown status
}
executed 4 times by 4 tests: end of block
Executed by:
  • tst_qdebug - unknown status
  • tst_qmimedatabase-cache - unknown status
  • tst_qmimedatabase-xml - unknown status
  • tst_qmimetype - unknown status
}; static struct Holder : public HolderBase { Type value; Holder() noexcept(noexcept(Type ())) : value () { guard.store(QtGlobalStatic::Initialized); } } holder; return
executed 351 times by 3 tests: return &holder.value;
Executed by:
  • tst_QDebug
  • tst_QMimeDatabase
  • tst_qmimetype
&holder.value;
executed 351 times by 3 tests: return &holder.value;
Executed by:
  • tst_QDebug
  • tst_QMimeDatabase
  • tst_qmimetype
} } } static QGlobalStatic<QMimeDatabasePrivate, Q_QGS_staticQMimeDatabase::innerFunction, Q_QGS_staticQMimeDatabase::guard> staticQMimeDatabase;
0-351
13-
14QMimeDatabasePrivate *QMimeDatabasePrivate::instance()-
15{-
16 return
executed 206 times by 2 tests: return staticQMimeDatabase();
Executed by:
  • tst_QMimeDatabase
  • tst_qmimetype
staticQMimeDatabase();
executed 206 times by 2 tests: return staticQMimeDatabase();
Executed by:
  • tst_QMimeDatabase
  • tst_qmimetype
206
17}-
18-
19QMimeDatabasePrivate::QMimeDatabasePrivate()-
20 : m_provider(0), m_defaultMimeType(QLatin1String("application/octet-stream"))-
21{-
22}
executed 4 times by 3 tests: end of block
Executed by:
  • tst_QDebug
  • tst_QMimeDatabase
  • tst_qmimetype
4
23-
24QMimeDatabasePrivate::~QMimeDatabasePrivate()-
25{-
26 delete m_provider;-
27 m_provider = 0;-
28}
executed 4 times by 4 tests: end of block
Executed by:
  • tst_qdebug - unknown status
  • tst_qmimedatabase-cache - unknown status
  • tst_qmimedatabase-xml - unknown status
  • tst_qmimetype - unknown status
4
29-
30QMimeProviderBase *QMimeDatabasePrivate::provider()-
31{-
32 if (!m_provider
!m_providerDescription
TRUEevaluated 4 times by 3 tests
Evaluated by:
  • tst_QDebug
  • tst_QMimeDatabase
  • tst_qmimetype
FALSEevaluated 9124 times by 3 tests
Evaluated by:
  • tst_QDebug
  • tst_QMimeDatabase
  • tst_qmimetype
) {
4-9124
33 QMimeProviderBase *binaryProvider = new QMimeBinaryProvider(this);-
34 if (binaryProvider->isValid()
binaryProvider->isValid()Description
TRUEevaluated 2 times by 2 tests
Evaluated by:
  • tst_QDebug
  • tst_QMimeDatabase
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • tst_QMimeDatabase
  • tst_qmimetype
) {
2
35 m_provider = binaryProvider;-
36 }
executed 2 times by 2 tests: end of block
Executed by:
  • tst_QDebug
  • tst_QMimeDatabase
else {
2
37 delete binaryProvider;-
38 m_provider = new QMimeXMLProvider(this);-
39 }
executed 2 times by 2 tests: end of block
Executed by:
  • tst_QMimeDatabase
  • tst_qmimetype
2
40 }-
41 return
executed 9128 times by 3 tests: return m_provider;
Executed by:
  • tst_QDebug
  • tst_QMimeDatabase
  • tst_qmimetype
m_provider;
executed 9128 times by 3 tests: return m_provider;
Executed by:
  • tst_QDebug
  • tst_QMimeDatabase
  • tst_qmimetype
9128
42}-
43-
44void QMimeDatabasePrivate::setProvider(QMimeProviderBase *theProvider)-
45{-
46 delete m_provider;-
47 m_provider = theProvider;-
48}
never executed: end of block
0
49-
50-
51-
52-
53-
54QMimeType QMimeDatabasePrivate::mimeTypeForName(const QString &nameOrAlias)-
55{-
56 return
executed 4303 times by 2 tests: return provider()->mimeTypeForName(provider()->resolveAlias(nameOrAlias));
Executed by:
  • tst_QDebug
  • tst_QMimeDatabase
provider()->mimeTypeForName(provider()->resolveAlias(nameOrAlias));
executed 4303 times by 2 tests: return provider()->mimeTypeForName(provider()->resolveAlias(nameOrAlias));
Executed by:
  • tst_QDebug
  • tst_QMimeDatabase
4303
57}-
58-
59QStringList QMimeDatabasePrivate::mimeTypeForFileName(const QString &fileName, QString *foundSuffix)-
60{-
61 if (fileName.endsWith(QLatin1Char('/'))
fileName.endsW...tin1Char('/'))Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 192 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
)
4-192
62 return
executed 4 times by 1 test: return QStringList() << QLatin1String("inode/directory");
Executed by:
  • tst_QMimeDatabase
QStringList() << QLatin1String("inode/directory");
executed 4 times by 1 test: return QStringList() << QLatin1String("inode/directory");
Executed by:
  • tst_QMimeDatabase
4
63-
64 const QStringList matchingMimeTypes = provider()->findByFileName(QFileInfo(fileName).fileName(), foundSuffix);-
65 return
executed 192 times by 1 test: return matchingMimeTypes;
Executed by:
  • tst_QMimeDatabase
matchingMimeTypes;
executed 192 times by 1 test: return matchingMimeTypes;
Executed by:
  • tst_QMimeDatabase
192
66}-
67-
68static inline bool isTextFile(const QByteArray &data)-
69{-
70-
71 static const char bigEndianBOM[] = "\xFE\xFF";-
72 static const char littleEndianBOM[] = "\xFF\xFE";-
73 if (data.startsWith(bigEndianBOM)
data.startsWith(bigEndianBOM)Description
TRUEnever evaluated
FALSEevaluated 18 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
|| data.startsWith(littleEndianBOM)
data.startsWit...ttleEndianBOM)Description
TRUEnever evaluated
FALSEevaluated 18 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
)
0-18
74 return
never executed: return true;
true;
never executed: return true;
0
75-
76-
77 const char *p = data.constData();-
78 const char *e = p + qMin(32, data.size());-
79 for ( ; p < e
p < eDescription
TRUEevaluated 138 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 12 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
; ++p) {
12-138
80 if ((
(unsigned char)(*p) < 32Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 132 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
unsigned char)(*p) < 32
(unsigned char)(*p) < 32Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 132 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
&& *
*p != 9Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEnever evaluated
p != 9
*p != 9Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEnever evaluated
&& *
*p !=10Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEnever evaluated
p !=10
*p !=10Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEnever evaluated
&& *
*p != 13Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEnever evaluated
p != 13
*p != 13Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEnever evaluated
)
0-132
81 return
executed 6 times by 1 test: return false;
Executed by:
  • tst_QMimeDatabase
false;
executed 6 times by 1 test: return false;
Executed by:
  • tst_QMimeDatabase
6
82 }
executed 132 times by 1 test: end of block
Executed by:
  • tst_QMimeDatabase
132
83-
84 return
executed 12 times by 1 test: return true;
Executed by:
  • tst_QMimeDatabase
true;
executed 12 times by 1 test: return true;
Executed by:
  • tst_QMimeDatabase
12
85}-
86-
87QMimeType QMimeDatabasePrivate::findByData(const QByteArray &data, int *accuracyPtr)-
88{-
89 if (data.isEmpty()
data.isEmpty()Description
TRUEnever evaluated
FALSEevaluated 64 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
) {
0-64
90 *accuracyPtr = 100;-
91 return
never executed: return mimeTypeForName(QLatin1String("application/x-zerosize"));
mimeTypeForName(QLatin1String("application/x-zerosize"));
never executed: return mimeTypeForName(QLatin1String("application/x-zerosize"));
0
92 }-
93-
94 *accuracyPtr = 0;-
95 QMimeType candidate = provider()->findByMagic(data, accuracyPtr);-
96-
97 if (candidate.isValid()
candidate.isValid()Description
TRUEevaluated 46 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 18 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
)
18-46
98 return
executed 46 times by 1 test: return candidate;
Executed by:
  • tst_QMimeDatabase
candidate;
executed 46 times by 1 test: return candidate;
Executed by:
  • tst_QMimeDatabase
46
99-
100 if (isTextFile(data)
isTextFile(data)Description
TRUEevaluated 12 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 6 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
) {
6-12
101 *accuracyPtr = 5;-
102 return
executed 12 times by 1 test: return mimeTypeForName(QLatin1String("text/plain"));
Executed by:
  • tst_QMimeDatabase
mimeTypeForName(QLatin1String("text/plain"));
executed 12 times by 1 test: return mimeTypeForName(QLatin1String("text/plain"));
Executed by:
  • tst_QMimeDatabase
12
103 }-
104-
105 return
executed 6 times by 1 test: return mimeTypeForName(defaultMimeType());
Executed by:
  • tst_QMimeDatabase
mimeTypeForName(defaultMimeType());
executed 6 times by 1 test: return mimeTypeForName(defaultMimeType());
Executed by:
  • tst_QMimeDatabase
6
106}-
107-
108QMimeType QMimeDatabasePrivate::mimeTypeForFileNameAndData(const QString &fileName, QIODevice *device, int *accuracyPtr)-
109{-
110-
111-
112-
113-
114-
115 *accuracyPtr = 0;-
116-
117-
118 QStringList candidatesByName = mimeTypeForFileName(fileName);-
119 if (candidatesByName.count() == 1
candidatesByName.count() == 1Description
TRUEevaluated 26 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 32 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
) {
26-32
120 *accuracyPtr = 100;-
121 const QMimeType mime = mimeTypeForName(candidatesByName.at(0));-
122 if (mime.isValid()
mime.isValid()Description
TRUEevaluated 26 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEnever evaluated
)
0-26
123 return
executed 26 times by 1 test: return mime;
Executed by:
  • tst_QMimeDatabase
mime;
executed 26 times by 1 test: return mime;
Executed by:
  • tst_QMimeDatabase
26
124 candidatesByName.clear();-
125 }
never executed: end of block
0
126-
127-
128-
129 if (device->isOpen()
device->isOpen()Description
TRUEevaluated 26 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 6 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
) {
6-26
130-
131-
132-
133 const QByteArray data = device->peek(16384);-
134-
135 int magicAccuracy = 0;-
136 QMimeType candidateByData(findByData(data, &magicAccuracy));-
137-
138-
139 if (candidateByData.isValid()
candidateByData.isValid()Description
TRUEevaluated 26 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEnever evaluated
&& magicAccuracy > 0
magicAccuracy > 0Description
TRUEevaluated 26 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEnever evaluated
) {
0-26
140-
141-
142 const QString sniffedMime = candidateByData.name();-
143 for (QForeachContainer<typename QtPrivate::remove_reference<decltype(candidatesByName)>::type> _container_((candidatesByName)); _container_.control && _container_.i != _container_.e; ++_container_.i, _container_.control ^= 1) for (const QString &m = *_container_.i; _container_.control; _container_.control = 0) {-
144 if (inherits(m, sniffedMime)
inherits(m, sniffedMime)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
145-
146 *accuracyPtr = 100;-
147 return
never executed: return mimeTypeForName(m);
mimeTypeForName(m);
never executed: return mimeTypeForName(m);
0
148 }-
149 }
never executed: end of block
0
150 *accuracyPtr = magicAccuracy;-
151 return
executed 26 times by 1 test: return candidateByData;
Executed by:
  • tst_QMimeDatabase
candidateByData;
executed 26 times by 1 test: return candidateByData;
Executed by:
  • tst_QMimeDatabase
26
152 }-
153 }
never executed: end of block
0
154-
155 if (candidatesByName.count() > 1
candidatesByName.count() > 1Description
TRUEnever evaluated
FALSEevaluated 6 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
) {
0-6
156 *accuracyPtr = 20;-
157 candidatesByName.sort();-
158 const QMimeType mime = mimeTypeForName(candidatesByName.at(0));-
159 if (mime.isValid()
mime.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
160 return
never executed: return mime;
mime;
never executed: return mime;
0
161 }
never executed: end of block
0
162-
163 return
executed 6 times by 1 test: return mimeTypeForName(defaultMimeType());
Executed by:
  • tst_QMimeDatabase
mimeTypeForName(defaultMimeType());
executed 6 times by 1 test: return mimeTypeForName(defaultMimeType());
Executed by:
  • tst_QMimeDatabase
6
164}-
165-
166QList<QMimeType> QMimeDatabasePrivate::allMimeTypes()-
167{-
168 return
executed 10 times by 1 test: return provider()->allMimeTypes();
Executed by:
  • tst_QMimeDatabase
provider()->allMimeTypes();
executed 10 times by 1 test: return provider()->allMimeTypes();
Executed by:
  • tst_QMimeDatabase
10
169}-
170-
171bool QMimeDatabasePrivate::inherits(const QString &mime, const QString &parent)-
172{-
173 const QString resolvedParent = provider()->resolveAlias(parent);-
174-
175 QStack<QString> toCheck;-
176 toCheck.push(mime);-
177 while (!toCheck.isEmpty()
!toCheck.isEmpty()Description
TRUEevaluated 116 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
) {
4-116
178 const QString current = toCheck.pop();-
179 if (current == resolvedParent
current == resolvedParentDescription
TRUEevaluated 48 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 68 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
)
48-68
180 return
executed 48 times by 1 test: return true;
Executed by:
  • tst_QMimeDatabase
true;
executed 48 times by 1 test: return true;
Executed by:
  • tst_QMimeDatabase
48
181 for (QForeachContainer<typename QtPrivate::remove_reference<decltype(provider()->parents(current))>::type> _container_((provider()->parents(current))); _container_.control && _container_.i != _container_.e; ++_container_.i, _container_.control ^= 1) for (const QString &par = *_container_.i; _container_.control; _container_.control = 0)-
182 toCheck.push(par);
executed 68 times by 1 test: toCheck.push(par);
Executed by:
  • tst_QMimeDatabase
68
183 }
executed 68 times by 1 test: end of block
Executed by:
  • tst_QMimeDatabase
68
184 return
executed 4 times by 1 test: return false;
Executed by:
  • tst_QMimeDatabase
false;
executed 4 times by 1 test: return false;
Executed by:
  • tst_QMimeDatabase
4
185}-
186QMimeDatabase::QMimeDatabase() :-
187 d(staticQMimeDatabase())-
188{-
189}
executed 145 times by 2 tests: end of block
Executed by:
  • tst_QDebug
  • tst_QMimeDatabase
145
190-
191-
192-
193-
194-
195QMimeDatabase::~QMimeDatabase()-
196{-
197 d = 0;-
198}
executed 145 times by 2 tests: end of block
Executed by:
  • tst_QDebug
  • tst_QMimeDatabase
145
199-
200-
201-
202-
203-
204QMimeType QMimeDatabase::mimeTypeForName(const QString &nameOrAlias) const-
205{-
206 QMutexLocker locker(&d->mutex);-
207-
208 return
executed 4121 times by 2 tests: return d->mimeTypeForName(nameOrAlias);
Executed by:
  • tst_QDebug
  • tst_QMimeDatabase
d->mimeTypeForName(nameOrAlias);
executed 4121 times by 2 tests: return d->mimeTypeForName(nameOrAlias);
Executed by:
  • tst_QDebug
  • tst_QMimeDatabase
4121
209}-
210QMimeType QMimeDatabase::mimeTypeForFile(const QFileInfo &fileInfo, MatchMode mode) const-
211{-
212 QMutexLocker locker(&d->mutex);-
213-
214 if (fileInfo.isDir()
fileInfo.isDir()Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 36 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
)
4-36
215 return
executed 4 times by 1 test: return d->mimeTypeForName(QLatin1String("inode/directory"));
Executed by:
  • tst_QMimeDatabase
d->mimeTypeForName(QLatin1String("inode/directory"));
executed 4 times by 1 test: return d->mimeTypeForName(QLatin1String("inode/directory"));
Executed by:
  • tst_QMimeDatabase
4
216-
217 QFile file(fileInfo.absoluteFilePath());-
218-
219-
220-
221-
222 const QByteArray nativeFilePath = QFile::encodeName(file.fileName());-
223 struct stat64 statBuffer;-
224 if (::
::stat64(nativ...atBuffer) == 0Description
TRUEevaluated 24 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 12 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
stat64(nativeFilePath.constData(), &statBuffer) == 0
::stat64(nativ...atBuffer) == 0Description
TRUEevaluated 24 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 12 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
) {
12-24
225 if (((((
((((statBuffer... == (0020000))Description
TRUEnever evaluated
FALSEevaluated 24 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
statBuffer.st_mode)) & 0170000) == (0020000))
((((statBuffer... == (0020000))Description
TRUEnever evaluated
FALSEevaluated 24 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
)
0-24
226 return
never executed: return d->mimeTypeForName(QLatin1String("inode/chardevice"));
d->mimeTypeForName(QLatin1String("inode/chardevice"));
never executed: return d->mimeTypeForName(QLatin1String("inode/chardevice"));
0
227 if (((((
((((statBuffer... == (0060000))Description
TRUEnever evaluated
FALSEevaluated 24 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
statBuffer.st_mode)) & 0170000) == (0060000))
((((statBuffer... == (0060000))Description
TRUEnever evaluated
FALSEevaluated 24 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
)
0-24
228 return
never executed: return d->mimeTypeForName(QLatin1String("inode/blockdevice"));
d->mimeTypeForName(QLatin1String("inode/blockdevice"));
never executed: return d->mimeTypeForName(QLatin1String("inode/blockdevice"));
0
229 if (((((
((((statBuffer... == (0010000))Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 20 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
statBuffer.st_mode)) & 0170000) == (0010000))
((((statBuffer... == (0010000))Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 20 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
)
4-20
230 return
executed 4 times by 1 test: return d->mimeTypeForName(QLatin1String("inode/fifo"));
Executed by:
  • tst_QMimeDatabase
d->mimeTypeForName(QLatin1String("inode/fifo"));
executed 4 times by 1 test: return d->mimeTypeForName(QLatin1String("inode/fifo"));
Executed by:
  • tst_QMimeDatabase
4
231 if (((((
((((statBuffer... == (0140000))Description
TRUEnever evaluated
FALSEevaluated 20 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
statBuffer.st_mode)) & 0170000) == (0140000))
((((statBuffer... == (0140000))Description
TRUEnever evaluated
FALSEevaluated 20 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
)
0-20
232 return
never executed: return d->mimeTypeForName(QLatin1String("inode/socket"));
d->mimeTypeForName(QLatin1String("inode/socket"));
never executed: return d->mimeTypeForName(QLatin1String("inode/socket"));
0
233 }
executed 20 times by 1 test: end of block
Executed by:
  • tst_QMimeDatabase
20
234-
235-
236 int priority = 0;-
237 switch (mode) {-
238 case
executed 28 times by 1 test: case MatchDefault:
Executed by:
  • tst_QMimeDatabase
MatchDefault:
executed 28 times by 1 test: case MatchDefault:
Executed by:
  • tst_QMimeDatabase
28
239 file.open(QIODevice::ReadOnly);-
240 return
executed 28 times by 1 test: return d->mimeTypeForFileNameAndData(fileInfo.absoluteFilePath(), &file, &priority);
Executed by:
  • tst_QMimeDatabase
d->mimeTypeForFileNameAndData(fileInfo.absoluteFilePath(), &file, &priority);
executed 28 times by 1 test: return d->mimeTypeForFileNameAndData(fileInfo.absoluteFilePath(), &file, &priority);
Executed by:
  • tst_QMimeDatabase
28
241 case
never executed: case MatchExtension:
MatchExtension:
never executed: case MatchExtension:
0
242 locker.unlock();-
243 return
never executed: return mimeTypeForFile(fileInfo.absoluteFilePath(), mode);
mimeTypeForFile(fileInfo.absoluteFilePath(), mode);
never executed: return mimeTypeForFile(fileInfo.absoluteFilePath(), mode);
0
244 case
executed 4 times by 1 test: case MatchContent:
Executed by:
  • tst_QMimeDatabase
MatchContent:
executed 4 times by 1 test: case MatchContent:
Executed by:
  • tst_QMimeDatabase
4
245 if (file.open(QIODevice::ReadOnly)
file.open(QIODevice::ReadOnly)Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEnever evaluated
) {
0-4
246 locker.unlock();-
247 return
executed 4 times by 1 test: return mimeTypeForData(&file);
Executed by:
  • tst_QMimeDatabase
mimeTypeForData(&file);
executed 4 times by 1 test: return mimeTypeForData(&file);
Executed by:
  • tst_QMimeDatabase
4
248 } else {-
249 return
never executed: return d->mimeTypeForName(d->defaultMimeType());
d->mimeTypeForName(d->defaultMimeType());
never executed: return d->mimeTypeForName(d->defaultMimeType());
0
250 }-
251 default
never executed: default:
:
never executed: default:
0
252 ((!(false)) ? qt_assert("false",__FILE__,388) : qt_noop());-
253 }
never executed: end of block
0
254 return
never executed: return d->mimeTypeForName(d->defaultMimeType());
d->mimeTypeForName(d->defaultMimeType());
never executed: return d->mimeTypeForName(d->defaultMimeType());
0
255}-
256-
257-
258-
259-
260-
261-
262QMimeType QMimeDatabase::mimeTypeForFile(const QString &fileName, MatchMode mode) const-
263{-
264 if (mode == MatchExtension
mode == MatchExtensionDescription
TRUEevaluated 68 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 40 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
) {
40-68
265 QMutexLocker locker(&d->mutex);-
266 QStringList matches = d->mimeTypeForFileName(fileName);-
267 const int matchCount = matches.count();-
268 if (matchCount == 0
matchCount == 0Description
TRUEevaluated 16 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 52 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
) {
16-52
269 return
executed 16 times by 1 test: return d->mimeTypeForName(d->defaultMimeType());
Executed by:
  • tst_QMimeDatabase
d->mimeTypeForName(d->defaultMimeType());
executed 16 times by 1 test: return d->mimeTypeForName(d->defaultMimeType());
Executed by:
  • tst_QMimeDatabase
16
270 } else if (matchCount == 1
matchCount == 1Description
TRUEevaluated 52 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEnever evaluated
) {
0-52
271 return
executed 52 times by 1 test: return d->mimeTypeForName(matches.first());
Executed by:
  • tst_QMimeDatabase
d->mimeTypeForName(matches.first());
executed 52 times by 1 test: return d->mimeTypeForName(matches.first());
Executed by:
  • tst_QMimeDatabase
52
272 } else {-
273-
274 matches.sort();-
275 return
never executed: return d->mimeTypeForName(matches.first());
d->mimeTypeForName(matches.first());
never executed: return d->mimeTypeForName(matches.first());
0
276 }-
277 } else {-
278-
279 QFileInfo fileInfo(fileName);-
280 return
executed 40 times by 1 test: return mimeTypeForFile(fileInfo, mode);
Executed by:
  • tst_QMimeDatabase
mimeTypeForFile(fileInfo, mode);
executed 40 times by 1 test: return mimeTypeForFile(fileInfo, mode);
Executed by:
  • tst_QMimeDatabase
40
281 }-
282}-
283QList<QMimeType> QMimeDatabase::mimeTypesForFileName(const QString &fileName) const-
284{-
285 QMutexLocker locker(&d->mutex);-
286-
287 QStringList matches = d->mimeTypeForFileName(fileName);-
288 QList<QMimeType> mimes;-
289 matches.sort();-
290 mimes.reserve(matches.count());-
291 for (QForeachContainer<typename QtPrivate::remove_reference<decltype(matches)>::type> _container_((matches)); _container_.control && _container_.i != _container_.e; ++_container_.i, _container_.control ^= 1) for (const QString &mime = *_container_.i; _container_.control; _container_.control = 0)-
292 mimes.append(d->mimeTypeForName(mime));
executed 52 times by 1 test: mimes.append(d->mimeTypeForName(mime));
Executed by:
  • tst_QMimeDatabase
52
293 return
executed 54 times by 1 test: return mimes;
Executed by:
  • tst_QMimeDatabase
mimes;
executed 54 times by 1 test: return mimes;
Executed by:
  • tst_QMimeDatabase
54
294}-
295-
296-
297-
298-
299-
300-
301QString QMimeDatabase::suffixForFileName(const QString &fileName) const-
302{-
303 QMutexLocker locker(&d->mutex);-
304 QString foundSuffix;-
305 d->mimeTypeForFileName(fileName, &foundSuffix);-
306 return
executed 16 times by 1 test: return foundSuffix;
Executed by:
  • tst_QMimeDatabase
foundSuffix;
executed 16 times by 1 test: return foundSuffix;
Executed by:
  • tst_QMimeDatabase
16
307}-
308QMimeType QMimeDatabase::mimeTypeForData(const QByteArray &data) const-
309{-
310 QMutexLocker locker(&d->mutex);-
311-
312 int accuracy = 0;-
313 return
executed 10 times by 1 test: return d->findByData(data, &accuracy);
Executed by:
  • tst_QMimeDatabase
d->findByData(data, &accuracy);
executed 10 times by 1 test: return d->findByData(data, &accuracy);
Executed by:
  • tst_QMimeDatabase
10
314}-
315QMimeType QMimeDatabase::mimeTypeForData(QIODevice *device) const-
316{-
317 QMutexLocker locker(&d->mutex);-
318-
319 int accuracy = 0;-
320 const bool openedByUs = !device->isOpen()
!device->isOpen()Description
TRUEevaluated 18 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 14 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
&& device->open(QIODevice::ReadOnly)
device->open(Q...ice::ReadOnly)Description
TRUEevaluated 14 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
;
4-18
321 if (device->isOpen()
device->isOpen()Description
TRUEevaluated 28 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
) {
4-28
322-
323-
324 const QByteArray data = device->peek(16384);-
325 const QMimeType result = d->findByData(data, &accuracy);-
326 if (openedByUs
openedByUsDescription
TRUEevaluated 14 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 14 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
)
14
327 device->close();
executed 14 times by 1 test: device->close();
Executed by:
  • tst_QMimeDatabase
14
328 return
executed 28 times by 1 test: return result;
Executed by:
  • tst_QMimeDatabase
result;
executed 28 times by 1 test: return result;
Executed by:
  • tst_QMimeDatabase
28
329 }-
330 return
executed 4 times by 1 test: return d->mimeTypeForName(d->defaultMimeType());
Executed by:
  • tst_QMimeDatabase
d->mimeTypeForName(d->defaultMimeType());
executed 4 times by 1 test: return d->mimeTypeForName(d->defaultMimeType());
Executed by:
  • tst_QMimeDatabase
4
331}-
332QMimeType QMimeDatabase::mimeTypeForUrl(const QUrl &url) const-
333{-
334 if (url.isLocalFile()
url.isLocalFile()Description
TRUEnever evaluated
FALSEevaluated 10 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
)
0-10
335 return
never executed: return mimeTypeForFile(url.toLocalFile());
mimeTypeForFile(url.toLocalFile());
never executed: return mimeTypeForFile(url.toLocalFile());
0
336-
337 const QString scheme = url.scheme();-
338 if (scheme.startsWith(QLatin1String("http"))
scheme.startsW...tring("http"))Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 8 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
|| scheme == QLatin1String("mailto")
scheme == QLat...ring("mailto")Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 4 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
)
2-8
339 return
executed 6 times by 1 test: return mimeTypeForName(d->defaultMimeType());
Executed by:
  • tst_QMimeDatabase
mimeTypeForName(d->defaultMimeType());
executed 6 times by 1 test: return mimeTypeForName(d->defaultMimeType());
Executed by:
  • tst_QMimeDatabase
6
340-
341 return
executed 4 times by 1 test: return mimeTypeForFile(url.path());
Executed by:
  • tst_QMimeDatabase
mimeTypeForFile(url.path());
executed 4 times by 1 test: return mimeTypeForFile(url.path());
Executed by:
  • tst_QMimeDatabase
4
342}-
343QMimeType QMimeDatabase::mimeTypeForFileNameAndData(const QString &fileName, QIODevice *device) const-
344{-
345 int accuracy = 0;-
346 const bool openedByUs = !device->isOpen()
!device->isOpen()Description
TRUEevaluated 10 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 10 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
&& device->open(QIODevice::ReadOnly)
device->open(Q...ice::ReadOnly)Description
TRUEevaluated 10 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEnever evaluated
;
0-10
347 const QMimeType result = d->mimeTypeForFileNameAndData(fileName, device, &accuracy);-
348 if (openedByUs
openedByUsDescription
TRUEevaluated 10 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 10 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
)
10
349 device->close();
executed 10 times by 1 test: device->close();
Executed by:
  • tst_QMimeDatabase
10
350 return
executed 20 times by 1 test: return result;
Executed by:
  • tst_QMimeDatabase
result;
executed 20 times by 1 test: return result;
Executed by:
  • tst_QMimeDatabase
20
351}-
352QMimeType QMimeDatabase::mimeTypeForFileNameAndData(const QString &fileName, const QByteArray &data) const-
353{-
354 QBuffer buffer(const_cast<QByteArray *>(&data));-
355 buffer.open(QIODevice::ReadOnly);-
356 int accuracy = 0;-
357 return
executed 10 times by 1 test: return d->mimeTypeForFileNameAndData(fileName, &buffer, &accuracy);
Executed by:
  • tst_QMimeDatabase
d->mimeTypeForFileNameAndData(fileName, &buffer, &accuracy);
executed 10 times by 1 test: return d->mimeTypeForFileNameAndData(fileName, &buffer, &accuracy);
Executed by:
  • tst_QMimeDatabase
10
358}-
359QList<QMimeType> QMimeDatabase::allMimeTypes() const-
360{-
361 QMutexLocker locker(&d->mutex);-
362-
363 return
executed 10 times by 1 test: return d->allMimeTypes();
Executed by:
  • tst_QMimeDatabase
d->allMimeTypes();
executed 10 times by 1 test: return d->allMimeTypes();
Executed by:
  • tst_QMimeDatabase
10
364}-
365-
Switch to Source codePreprocessed file

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