summaryrefslogtreecommitdiffstats
path: root/src/core/net
diff options
context:
space:
mode:
authorJüri Valdmann <juri.valdmann@qt.io>2018-07-24 17:21:34 +0200
committerJüri Valdmann <juri.valdmann@qt.io>2018-07-25 07:40:31 +0000
commitd603b705539e1ec0d93761707d7df6d07bced98a (patch)
tree96b757e5f1714dd64177fe76d0089c7f4fb24c14 /src/core/net
parent4097c53421c6aed90c5e78f974c1d2ab4fdf339f (diff)
Use net::TransportSecurityPersister to persist HSTS state
Task-number: QTBUG-69605 Change-Id: I863db484ff2bcf558585f75c73963097fb43148a Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/core/net')
-rw-r--r--src/core/net/url_request_context_getter_qt.cpp18
-rw-r--r--src/core/net/url_request_context_getter_qt.h3
2 files changed, 20 insertions, 1 deletions
diff --git a/src/core/net/url_request_context_getter_qt.cpp b/src/core/net/url_request_context_getter_qt.cpp
index 904130611..1bb7b080f 100644
--- a/src/core/net/url_request_context_getter_qt.cpp
+++ b/src/core/net/url_request_context_getter_qt.cpp
@@ -64,6 +64,7 @@
#include "net/http/http_auth_scheme.h"
#include "net/http/http_cache.h"
#include "net/http/http_server_properties_impl.h"
+#include "net/http/transport_security_persister.h"
#include "net/proxy/proxy_script_fetcher_impl.h"
#include "net/proxy/proxy_service.h"
#include "net/ssl/channel_id_service.h"
@@ -142,6 +143,7 @@ void URLRequestContextGetterQt::setFullConfiguration(QSharedPointer<BrowserConte
m_httpCachePath = browserContext->httpCachePath();
m_httpCacheMaxSize = browserContext->httpCacheMaxSize();
m_customUrlSchemes = browserContext->customUrlSchemes();
+ m_dataPath = browserContext->dataPath();
}
net::URLRequestContext *URLRequestContextGetterQt::GetURLRequestContext()
@@ -235,6 +237,7 @@ void URLRequestContextGetterQt::generateStorage()
// we need to get rid of dangling pointer due to coming storage deletion
m_urlRequestContext->set_http_transaction_factory(0);
m_httpNetworkSession.reset();
+ m_transportSecurityPersister.reset();
}
@@ -266,7 +269,20 @@ void URLRequestContextGetterQt::generateStorage()
m_networkDelegate.get()));
m_storage->set_ssl_config_service(new net::SSLConfigServiceDefaults);
- m_storage->set_transport_security_state(std::unique_ptr<net::TransportSecurityState>(new net::TransportSecurityState()));
+ m_storage->set_transport_security_state(std::make_unique<net::TransportSecurityState>());
+
+ if (!m_dataPath.isEmpty()) {
+ scoped_refptr<base::SequencedTaskRunner> background_task_runner(
+ base::CreateSequencedTaskRunnerWithTraits(
+ {base::MayBlock(),
+ base::TaskPriority::BACKGROUND,
+ base::TaskShutdownBehavior::BLOCK_SHUTDOWN}));
+ m_transportSecurityPersister =
+ std::make_unique<net::TransportSecurityPersister>(
+ m_urlRequestContext->transport_security_state(),
+ toFilePath(m_dataPath),
+ background_task_runner);
+ }
if (!m_httpAuthPreferences) {
std::vector<std::string> auth_types(std::begin(kDefaultAuthSchemes), std::end(kDefaultAuthSchemes));
diff --git a/src/core/net/url_request_context_getter_qt.h b/src/core/net/url_request_context_getter_qt.h
index 0eb4a2fe4..717827543 100644
--- a/src/core/net/url_request_context_getter_qt.h
+++ b/src/core/net/url_request_context_getter_qt.h
@@ -63,6 +63,7 @@ namespace net {
class HttpAuthPreferences;
class MappedHostResolver;
class ProxyConfigService;
+class TransportSecurityPersister;
}
namespace QtWebEngineCore {
@@ -126,6 +127,7 @@ private:
std::unique_ptr<net::HttpNetworkSession> m_httpNetworkSession;
std::unique_ptr<net::HttpAuthPreferences> m_httpAuthPreferences;
proxy_resolver::mojom::ProxyResolverFactoryPtr m_proxyResolverFactory;
+ std::unique_ptr<net::TransportSecurityPersister> m_transportSecurityPersister;
QList<QByteArray> m_installedCustomSchemes;
QWebEngineUrlRequestInterceptor* m_requestInterceptor;
@@ -141,6 +143,7 @@ private:
QString m_httpCachePath;
int m_httpCacheMaxSize;
QList<QByteArray> m_customUrlSchemes;
+ QString m_dataPath;
friend class NetworkDelegateQt;
};