summaryrefslogtreecommitdiffstats
path: root/src/network
diff options
context:
space:
mode:
authorTimur Pocheptsov <timur.pocheptsov@qt.io>2017-02-27 10:06:12 +0100
committerTimur Pocheptsov <timur.pocheptsov@qt.io>2017-03-08 09:42:01 +0000
commit075e669cbe3cbbefe66d954e571db227e60eeda7 (patch)
treeb89f98417f81096e54aa6369306c0e4cce0b8b57 /src/network
parent8afc6146be513e7adee6e4ade342e28951bfefc6 (diff)
QHstsPolicy: Replace bool with QFlags
As pointed out in the previous code-review: Replace a bool ctor parameter with QFlags<enum> to conform to Qt API Design Principles (Boolean Parameter Trap). Since the bool with its many unwanted implicit conversions is gone from the ctor parameter list now, drop the explicit keyword again. It was requested because of the boolean parameter in the first place. Change-Id: Ibaf287a6a3e38c22f033fd5d9e024c54f30a1fd4 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Diffstat (limited to 'src/network')
-rw-r--r--src/network/access/qhsts.cpp6
-rw-r--r--src/network/access/qhstspolicy.cpp14
-rw-r--r--src/network/access/qhstspolicy.h11
3 files changed, 25 insertions, 6 deletions
diff --git a/src/network/access/qhsts.cpp b/src/network/access/qhsts.cpp
index 3581fbc796..ca9f3b977b 100644
--- a/src/network/access/qhsts.cpp
+++ b/src/network/access/qhsts.cpp
@@ -110,7 +110,11 @@ void QHstsCache::updateKnownHost(const QString &host, const QDateTime &expires,
// IDNA 2003 (RFC3490) for us, as required by HSTS (RFC6797, section 10).
const HostName hostName(host);
const auto pos = knownHosts.find(hostName);
- const QHstsPolicy newPolicy(expires, includeSubDomains, hostName.name);
+ QHstsPolicy::PolicyFlags flags;
+ if (includeSubDomains)
+ flags = QHstsPolicy::IncludeSubDomains;
+
+ const QHstsPolicy newPolicy(expires, flags, hostName.name);
if (pos == knownHosts.end()) {
// A new, previously unknown host.
if (newPolicy.isExpired()) {
diff --git a/src/network/access/qhstspolicy.cpp b/src/network/access/qhstspolicy.cpp
index 634bf4784b..0ea9f3f046 100644
--- a/src/network/access/qhstspolicy.cpp
+++ b/src/network/access/qhstspolicy.cpp
@@ -63,6 +63,14 @@ QT_BEGIN_NAMESPACE
\sa QNetworkAccessManager::setStrictTransportSecurityEnabled()
*/
+/*
+ \enum QHstsPolicy::PolicyFlag
+
+ Specifies attributes that a policy can have.
+
+ \value IncludeSubDomains HSTS policy also applies to subdomains.
+*/
+
class QHstsPolicyPrivate : public QSharedData
{
public:
@@ -101,13 +109,13 @@ QHstsPolicy::QHstsPolicy() : d(new QHstsPolicyPrivate)
\sa QUrl::setHost(), QUrl::ParsingMode
*/
-QHstsPolicy::QHstsPolicy(const QDateTime &expiry, bool includeSubDomains, const QString &host,
- QUrl::ParsingMode mode)
+QHstsPolicy::QHstsPolicy(const QDateTime &expiry, PolicyFlags flags,
+ const QString &host, QUrl::ParsingMode mode)
: d(new QHstsPolicyPrivate)
{
d->url.setHost(host, mode);
d->expiry = expiry;
- d->includeSubDomains = includeSubDomains;
+ d->includeSubDomains = flags.testFlag(IncludeSubDomains);
}
/*!
diff --git a/src/network/access/qhstspolicy.h b/src/network/access/qhstspolicy.h
index 45fa40dfe8..176a8fa635 100644
--- a/src/network/access/qhstspolicy.h
+++ b/src/network/access/qhstspolicy.h
@@ -43,6 +43,7 @@
#include <QtNetwork/qtnetworkglobal.h>
#include <QtCore/qshareddata.h>
+#include <QtCore/qflags.h>
#include <QtCore/qurl.h>
QT_BEGIN_NAMESPACE
@@ -53,10 +54,15 @@ class QString;
class Q_NETWORK_EXPORT QHstsPolicy
{
public:
+ enum PolicyFlag
+ {
+ IncludeSubDomains = 1
+ };
+ Q_DECLARE_FLAGS(PolicyFlags, PolicyFlag)
QHstsPolicy();
- explicit QHstsPolicy(const QDateTime &expiry, bool includeSubDomains, const QString &host,
- QUrl::ParsingMode mode = QUrl::DecodedMode);
+ QHstsPolicy(const QDateTime &expiry, PolicyFlags flags, const QString &host,
+ QUrl::ParsingMode mode = QUrl::DecodedMode);
QHstsPolicy(const QHstsPolicy &rhs);
QHstsPolicy &operator=(const QHstsPolicy &rhs);
QHstsPolicy &operator=(QHstsPolicy &&other) Q_DECL_NOTHROW { swap(other); return *this; }
@@ -81,6 +87,7 @@ private:
};
Q_DECLARE_SHARED(QHstsPolicy)
+Q_DECLARE_OPERATORS_FOR_FLAGS(QHstsPolicy::PolicyFlags)
Q_NETWORK_EXPORT bool operator==(const QHstsPolicy &lhs, const QHstsPolicy &rhs);