summaryrefslogtreecommitdiffstats
path: root/src/network/access
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2017-03-14 10:49:20 +0100
committerLiang Qi <liang.qi@qt.io>2017-03-14 10:52:24 +0100
commit0c034a649f61019c16aba479fe79d20dde41f2f2 (patch)
tree54545862591044b65e618989805945bceb0b3ea5 /src/network/access
parent2162f01111d21d0ce66ceb8be290b0a13653e691 (diff)
parentdf40b1115db600e8de1c4774476fa30956a34fd9 (diff)
Merge remote-tracking branch 'origin/5.9' into dev
Conflicts: src/widgets/widgets/qpushbutton.cpp Change-Id: I615de00e6e64540c50f658d4d8ab3e002d701a81
Diffstat (limited to 'src/network/access')
-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);