diff options
author | Timur Pocheptsov <timur.pocheptsov@qt.io> | 2017-02-27 10:06:12 +0100 |
---|---|---|
committer | Timur Pocheptsov <timur.pocheptsov@qt.io> | 2017-03-08 09:42:01 +0000 |
commit | 075e669cbe3cbbefe66d954e571db227e60eeda7 (patch) | |
tree | b89f98417f81096e54aa6369306c0e4cce0b8b57 /src/network/access | |
parent | 8afc6146be513e7adee6e4ade342e28951bfefc6 (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/access')
-rw-r--r-- | src/network/access/qhsts.cpp | 6 | ||||
-rw-r--r-- | src/network/access/qhstspolicy.cpp | 14 | ||||
-rw-r--r-- | src/network/access/qhstspolicy.h | 11 |
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); |