diff options
author | Joerg Bornemann <joerg.bornemann@theqtcompany.com> | 2016-01-19 16:31:49 +0100 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@theqtcompany.com> | 2016-01-19 16:29:24 +0000 |
commit | 07b431f20f2d6827f944087775f3dd1bd3f69aea (patch) | |
tree | c595b4aa16d2d8079bc8fae72260021f723049c2 /src | |
parent | bbf1d3d981da0a12a0ad610b17e365ccddf58c6c (diff) |
Avoid full storage update on installing URL scheme handlers
When installing/removing URL scheme handlers, do not update the full
URLRequestContextStorage. Only update the job factory.
This avoids calling the - potentially expensive - generateStorage()
method superfluously often.
Change-Id: I99c4ec479fcfdee4e97d86b858ea42f3cdccfec4
Task-number: QTBUG-50160
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/core/browser_context_adapter.cpp | 2 | ||||
-rw-r--r-- | src/core/url_request_context_getter_qt.cpp | 10 | ||||
-rw-r--r-- | src/core/url_request_context_getter_qt.h | 1 |
3 files changed, 10 insertions, 3 deletions
diff --git a/src/core/browser_context_adapter.cpp b/src/core/browser_context_adapter.cpp index 4aa34e5d6..52674e8bd 100644 --- a/src/core/browser_context_adapter.cpp +++ b/src/core/browser_context_adapter.cpp @@ -354,7 +354,7 @@ QHash<QByteArray, QWebEngineUrlSchemeHandler *> &BrowserContextAdapter::customUr void BrowserContextAdapter::updateCustomUrlSchemeHandlers() { if (m_browserContext->url_request_getter_.get()) - m_browserContext->url_request_getter_->updateStorageSettings(); + m_browserContext->url_request_getter_->updateJobFactory(); } bool BrowserContextAdapter::removeCustomUrlSchemeHandler(QWebEngineUrlSchemeHandler *handler) diff --git a/src/core/url_request_context_getter_qt.cpp b/src/core/url_request_context_getter_qt.cpp index 26e2633d8..618354d1c 100644 --- a/src/core/url_request_context_getter_qt.cpp +++ b/src/core/url_request_context_getter_qt.cpp @@ -294,6 +294,13 @@ void URLRequestContextGetterQt::updateHttpCache() } } +void URLRequestContextGetterQt::updateJobFactory() +{ + Q_ASSERT(m_jobFactory); + + content::BrowserThread::PostTask(content::BrowserThread::IO, FROM_HERE, base::Bind(&URLRequestContextGetterQt::generateJobFactory, this)); +} + static bool doNetworkSessionParamsMatch(const net::HttpNetworkSession::Params &first, const net::HttpNetworkSession::Params &second) { if (first.transport_security_state != second.transport_security_state) @@ -389,8 +396,8 @@ void URLRequestContextGetterQt::generateHttpCache() void URLRequestContextGetterQt::generateJobFactory() { Q_ASSERT(m_urlRequestContext); - Q_ASSERT(!m_jobFactory); + m_jobFactory.reset(); scoped_ptr<net::URLRequestJobFactoryImpl> jobFactory(new net::URLRequestJobFactoryImpl()); { @@ -398,7 +405,6 @@ void URLRequestContextGetterQt::generateJobFactory() content::ProtocolHandlerMap::iterator it = m_protocolHandlers.find(url::kBlobScheme); Q_ASSERT(it != m_protocolHandlers.end()); jobFactory->SetProtocolHandler(it->first, it->second.release()); - m_protocolHandlers.clear(); } jobFactory->SetProtocolHandler(url::kDataScheme, new net::DataProtocolHandler()); diff --git a/src/core/url_request_context_getter_qt.h b/src/core/url_request_context_getter_qt.h index f61e4f09b..8740c65a2 100644 --- a/src/core/url_request_context_getter_qt.h +++ b/src/core/url_request_context_getter_qt.h @@ -77,6 +77,7 @@ public: void updateUserAgent(); void updateCookieStore(); void updateHttpCache(); + void updateJobFactory(); private: virtual ~URLRequestContextGetterQt(); |