diff options
author | Jüri Valdmann <juri.valdmann@qt.io> | 2018-07-24 17:21:34 +0200 |
---|---|---|
committer | Jüri Valdmann <juri.valdmann@qt.io> | 2018-07-25 07:40:31 +0000 |
commit | d603b705539e1ec0d93761707d7df6d07bced98a (patch) | |
tree | 96b757e5f1714dd64177fe76d0089c7f4fb24c14 | |
parent | 4097c53421c6aed90c5e78f974c1d2ab4fdf339f (diff) |
Use net::TransportSecurityPersister to persist HSTS state
Task-number: QTBUG-69605
Change-Id: I863db484ff2bcf558585f75c73963097fb43148a
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
-rw-r--r-- | src/core/net/url_request_context_getter_qt.cpp | 18 | ||||
-rw-r--r-- | src/core/net/url_request_context_getter_qt.h | 3 |
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; }; |