Coverage Report

Created: 2026-03-12 07:14

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/qtbase/src/network/kernel/qnetworkproxy.h
Line
Count
Source
1
// Copyright (C) 2016 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
// Qt-Security score:significant reason:default
4
5
#ifndef QNETWORKPROXY_H
6
#define QNETWORKPROXY_H
7
8
#include <QtNetwork/qtnetworkglobal.h>
9
#include <QtNetwork/qhostaddress.h>
10
#include <QtNetwork/qnetworkrequest.h>
11
#include <QtCore/qshareddata.h>
12
13
#ifndef QT_NO_NETWORKPROXY
14
15
QT_BEGIN_NAMESPACE
16
17
18
class QUrl;
19
20
class QNetworkProxyQueryPrivate;
21
class Q_NETWORK_EXPORT QNetworkProxyQuery
22
{
23
    Q_GADGET
24
25
public:
26
    enum QueryType {
27
        TcpSocket,
28
        UdpSocket,
29
        SctpSocket,
30
        TcpServer = 100,
31
        UrlRequest,
32
        SctpServer
33
    };
34
0
    Q_ENUM(QueryType)
Unexecuted instantiation: qt_getEnumMetaObject(QNetworkProxyQuery::QueryType)
Unexecuted instantiation: qt_getEnumName(QNetworkProxyQuery::QueryType)
35
0
36
0
    QNetworkProxyQuery();
37
0
    explicit QNetworkProxyQuery(const QUrl &requestUrl, QueryType queryType = UrlRequest);
38
0
    QNetworkProxyQuery(const QString &hostname, int port, const QString &protocolTag = QString(),
39
0
                       QueryType queryType = TcpSocket);
40
0
    explicit QNetworkProxyQuery(quint16 bindPort, const QString &protocolTag = QString(),
41
0
                       QueryType queryType = TcpServer);
42
0
    QNetworkProxyQuery(const QNetworkProxyQuery &other);
43
0
    QNetworkProxyQuery &operator=(QNetworkProxyQuery &&other) noexcept { swap(other); return *this; }
44
    QNetworkProxyQuery &operator=(const QNetworkProxyQuery &other);
45
    ~QNetworkProxyQuery();
46
47
0
    void swap(QNetworkProxyQuery &other) noexcept { d.swap(other.d); }
48
49
    bool operator==(const QNetworkProxyQuery &other) const;
50
    inline bool operator!=(const QNetworkProxyQuery &other) const
51
0
    { return !(*this == other); }
52
53
    QueryType queryType() const;
54
    void setQueryType(QueryType type);
55
56
    int peerPort() const;
57
    void setPeerPort(int port);
58
59
    QString peerHostName() const;
60
    void setPeerHostName(const QString &hostname);
61
62
    int localPort() const;
63
    void setLocalPort(int port);
64
65
    QString protocolTag() const;
66
    void setProtocolTag(const QString &protocolTag);
67
68
    QUrl url() const;
69
    void setUrl(const QUrl &url);
70
71
private:
72
    QSharedDataPointer<QNetworkProxyQueryPrivate> d;
73
};
74
75
0
Q_DECLARE_SHARED(QNetworkProxyQuery)
76
0
77
0
class QNetworkProxyPrivate;
78
0
79
0
class Q_NETWORK_EXPORT QNetworkProxy
80
0
{
81
0
    Q_GADGET
82
0
public:
83
0
    enum ProxyType {
84
0
        DefaultProxy,
85
0
        Socks5Proxy,
86
0
        NoProxy,
87
0
        HttpProxy,
88
0
        HttpCachingProxy,
89
0
        FtpCachingProxy
90
0
    };
91
0
92
0
    enum Capability {
93
0
        TunnelingCapability = 0x0001,
94
0
        ListeningCapability = 0x0002,
95
0
        UdpTunnelingCapability = 0x0004,
96
0
        CachingCapability = 0x0008,
97
0
        HostNameLookupCapability = 0x0010,
98
0
        SctpTunnelingCapability = 0x00020,
99
0
        SctpListeningCapability = 0x00040
100
0
    };
101
0
    Q_DECLARE_FLAGS(Capabilities, Capability)
102
0
103
0
    QNetworkProxy();
104
0
    QNetworkProxy(ProxyType type, const QString &hostName = QString(), quint16 port = 0,
105
0
                  const QString &user = QString(), const QString &password = QString());
106
0
    QNetworkProxy(const QNetworkProxy &other);
107
0
    QNetworkProxy &operator=(QNetworkProxy &&other) noexcept { swap(other); return *this; }
108
    QNetworkProxy &operator=(const QNetworkProxy &other);
109
    ~QNetworkProxy();
110
111
0
    void swap(QNetworkProxy &other) noexcept { d.swap(other.d); }
112
113
    bool operator==(const QNetworkProxy &other) const;
114
    inline bool operator!=(const QNetworkProxy &other) const
115
0
    { return !(*this == other); }
116
117
    void setType(QNetworkProxy::ProxyType type);
118
    QNetworkProxy::ProxyType type() const;
119
120
    void setCapabilities(Capabilities capab);
121
    Capabilities capabilities() const;
122
    bool isCachingProxy() const;
123
    bool isTransparentProxy() const;
124
125
    void setUser(const QString &userName);
126
    QString user() const;
127
128
    void setPassword(const QString &password);
129
    QString password() const;
130
131
    void setHostName(const QString &hostName);
132
    QString hostName() const;
133
134
    void setPort(quint16 port);
135
    quint16 port() const;
136
137
    static void setApplicationProxy(const QNetworkProxy &proxy);
138
    static QNetworkProxy applicationProxy();
139
140
    QHttpHeaders headers() const;
141
    void setHeaders(const QHttpHeaders &newHeaders);
142
    void setHeaders(QHttpHeaders &&newHeaders);
143
144
    // "cooked" headers
145
    QVariant header(QNetworkRequest::KnownHeaders header) const;
146
    void setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value);
147
148
    // raw headers:
149
    bool hasRawHeader(const QByteArray &headerName) const;
150
    QList<QByteArray> rawHeaderList() const;
151
    QByteArray rawHeader(const QByteArray &headerName) const;
152
    void setRawHeader(const QByteArray &headerName, const QByteArray &value);
153
154
private:
155
    QSharedDataPointer<QNetworkProxyPrivate> d;
156
};
157
158
0
Q_DECLARE_SHARED(QNetworkProxy)
159
0
Q_DECLARE_OPERATORS_FOR_FLAGS(QNetworkProxy::Capabilities)
Unexecuted instantiation: operator|(QNetworkProxy::Capability, QNetworkProxy::Capability)
Unexecuted instantiation: operator|(QNetworkProxy::Capability, QFlags<QNetworkProxy::Capability>)
Unexecuted instantiation: operator&(QNetworkProxy::Capability, QNetworkProxy::Capability)
Unexecuted instantiation: operator&(QNetworkProxy::Capability, QFlags<QNetworkProxy::Capability>)
Unexecuted instantiation: operator^(QNetworkProxy::Capability, QNetworkProxy::Capability)
Unexecuted instantiation: operator^(QNetworkProxy::Capability, QFlags<QNetworkProxy::Capability>)
Unexecuted instantiation: operator|(QNetworkProxy::Capability, int)
160
0
161
0
class Q_NETWORK_EXPORT QNetworkProxyFactory
162
0
{
163
0
public:
164
0
    QNetworkProxyFactory();
165
0
    virtual ~QNetworkProxyFactory();
166
0
167
0
    virtual QList<QNetworkProxy> queryProxy(const QNetworkProxyQuery &query = QNetworkProxyQuery()) = 0;
168
0
169
0
    static bool usesSystemConfiguration();
170
0
    static void setUseSystemConfiguration(bool enable);
171
0
    static void setApplicationProxyFactory(QNetworkProxyFactory *factory);
172
0
    static QList<QNetworkProxy> proxyForQuery(const QNetworkProxyQuery &query);
173
0
    static QList<QNetworkProxy> systemProxyForQuery(const QNetworkProxyQuery &query = QNetworkProxyQuery());
174
0
};
175
0
176
0
#ifndef QT_NO_DEBUG_STREAM
177
0
Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QNetworkProxy &proxy);
178
0
Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QNetworkProxyQuery &proxyQuery);
179
0
#endif
180
0
181
0
QT_END_NAMESPACE
182
0
183
QT_DECL_METATYPE_EXTERN(QNetworkProxy, Q_NETWORK_EXPORT)
Unexecuted instantiation: int qRegisterNormalizedMetaType<QNetworkProxy>(QByteArray const&)
Unexecuted instantiation: QMetaTypeId<QNetworkProxy>::qt_metatype_id()
184
185
#endif // QT_NO_NETWORKPROXY
186
187
#endif // QHOSTINFO_H