MailJDTourDownloadDocsQualityTestsCoverage

Which source lines and branches the tests execute. Lines 91.5 %, branches 75.0 % (minimum 85 % and 72 %). main @ 399ffe3d · 21 October 2026 · pipeline 7238.

GCC Code Coverage Report


Directory: src/
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 88.9% 24 / 0 / 27
Functions: 66.7% 6 / 0 / 9
Branches: 78.8% 41 / 0 / 52

quick/QuickNetworkDenial.cpp
Line Branch Exec Source
1 #include "QuickNetworkDenial.h"
2 #include "util/SecurityLog.h"
3
4 #include <QNetworkAccessManager>
5 #include <QNetworkReply>
6 #include <QTimer>
7
8 namespace {
9 class DeniedReply : public QNetworkReply {
10 public:
11 6 DeniedReply(const QNetworkRequest &request, QNetworkAccessManager::Operation operation,
12 6 QObject *parent) : QNetworkReply(parent) {
13
1/1
✓ Branch 3 → 4 taken 6 times.
6 setRequest(request);
14
2/2
✓ Branch 4 → 5 taken 6 times.
✓ Branch 5 → 6 taken 6 times.
6 setUrl(request.url());
15
1/1
✓ Branch 7 → 8 taken 6 times.
6 setOperation(operation);
16
1/1
✓ Branch 9 → 10 taken 6 times.
6 open(QIODevice::ReadOnly | QIODevice::Unbuffered);
17
1/1
✓ Branch 13 → 14 taken 6 times.
12 setError(ContentAccessDenied, QStringLiteral("QML network access denied"));
18
1/1
✓ Branch 16 → 17 taken 6 times.
6 setFinished(true);
19
1/1
✓ Branch 17 → 18 taken 6 times.
12 QTimer::singleShot(0, this, [this] { emit errorOccurred(error()); emit finished(); });
20 6 }
21 ✗ void abort() override {}
22 ✗ qint64 bytesAvailable() const override { return 0; }
23 protected:
24 ✗ qint64 readData(char *, qint64) override { return -1; }
25 };
26
27 class DenialManager : public QNetworkAccessManager {
28 public:
29 7 explicit DenialManager(QObject *parent) : QNetworkAccessManager(parent) {}
30 protected:
31 8 QNetworkReply *createRequest(Operation operation, const QNetworkRequest &request,
32 QIODevice *outgoing) override {
33
3/3
✓ Branch 2 → 3 taken 8 times.
✓ Branch 3 → 4 taken 8 times.
✓ Branch 4 → 5 taken 8 times.
8 const QString scheme = request.url().scheme().toLower();
34
5/6
✓ Branch 9 → 10 taken 8 times.
✗ Branch 9 → 13 not taken.
✓ Branch 12 → 13 taken 2 times.
✓ Branch 12 → 14 taken 6 times.
✓ Branch 15 → 16 taken 2 times.
✓ Branch 15 → 18 taken 6 times.
8 if (scheme == QLatin1String("qrc") || scheme == QLatin1String("data"))
35
1/1
✓ Branch 16 → 17 taken 2 times.
2 return QNetworkAccessManager::createRequest(operation, request, outgoing);
36
5/5
✓ Branch 18 → 19 taken 6 times.
✓ Branch 22 → 23 taken 6 times.
✓ Branch 23 → 24 taken 6 times.
✓ Branch 27 → 20 taken 6 times.
✓ Branch 27 → 28 taken 6 times.
12 qCWarning(lcSecurity) << "QML request denied";
37
10/10
✓ Branch 28 → 29 taken 6 times.
✓ Branch 32 → 33 taken 6 times.
✓ Branch 33 → 34 taken 6 times.
✓ Branch 34 → 35 taken 6 times.
✓ Branch 35 → 36 taken 6 times.
✓ Branch 36 → 37 taken 6 times.
✓ Branch 38 → 39 taken 6 times.
✓ Branch 39 → 40 taken 6 times.
✓ Branch 45 → 30 taken 6 times.
✓ Branch 45 → 46 taken 6 times.
12 qCDebug(lcSecurity) << "Denied scheme" << scheme << "host" << request.url().host();
38
3/6
✓ Branch 46 → 47 taken 6 times.
✓ Branch 47 → 48 taken 6 times.
✗ Branch 49 → 50 not taken.
✓ Branch 49 → 51 taken 6 times.
✗ Branch 78 → 79 not taken.
✗ Branch 78 → 80 not taken.
6 return new DeniedReply(request, operation, this);
39 8 }
40 };
41 } // namespace
42
43 7 QNetworkAccessManager *QuickNetworkDenial::create(QObject *parent) {
44
2/5
✓ Branch 3 → 4 taken 7 times.
✗ Branch 5 → 6 not taken.
✓ Branch 5 → 7 taken 7 times.
✗ Branch 9 → 10 not taken.
✗ Branch 9 → 11 not taken.
14 return new DenialManager(parent);
45 }
46
47 870 void QuickNetworkDenial::install(QQmlEngine *engine) {
48
4/8
✓ Branch 3 → 4 taken 870 times.
✓ Branch 4 → 5 taken 870 times.
✗ Branch 4 → 6 not taken.
✓ Branch 7 → 8 taken 870 times.
✗ Branch 8 → 9 not taken.
✓ Branch 8 → 10 taken 870 times.
✗ Branch 11 → 12 not taken.
✗ Branch 11 → 13 not taken.
870 engine->setNetworkAccessManagerFactory(new QuickNetworkDenial(engine));
49 870 }
50