summaryrefslogtreecommitdiffstats
path: root/src/core/browser_context_adapter.cpp
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2016-04-21 14:35:28 +0200
committerAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2016-04-21 15:26:12 +0000
commitad82daf8f597855aefbaa190ab89abb148362c7f (patch)
treeb75476ab40f6132f4df39628d4e73cd7d51ee72b /src/core/browser_context_adapter.cpp
parenta1eda6b9aa885619a357f5532e584092b8e5bf91 (diff)
Do not access browser-context to read user-agent or accept language
Switches HttpUserAgentSettingsQt to reading local string that lives on the IO thread, instead of accessing a pointer that may be deleted. Also adds a test and fixes updating accept-language of already initialized WebContents. Change-Id: Iff4e3bd1ac40482a92bed50c3f703ed8b974b0ad Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com> Reviewed-by: Michal Klocek <michal.klocek@theqtcompany.com>
Diffstat (limited to 'src/core/browser_context_adapter.cpp')
-rw-r--r--src/core/browser_context_adapter.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/core/browser_context_adapter.cpp b/src/core/browser_context_adapter.cpp
index 9af8d3ef5..c7118b4f7 100644
--- a/src/core/browser_context_adapter.cpp
+++ b/src/core/browser_context_adapter.cpp
@@ -440,7 +440,21 @@ QString BrowserContextAdapter::httpAcceptLanguage() const
void BrowserContextAdapter::setHttpAcceptLanguage(const QString &httpAcceptLanguage)
{
+ if (m_httpAcceptLanguage == httpAcceptLanguage)
+ return;
m_httpAcceptLanguage = httpAcceptLanguage;
+
+ std::vector<content::WebContentsImpl *> list = content::WebContentsImpl::GetAllWebContents();
+ Q_FOREACH (content::WebContentsImpl *web_contents, list) {
+ if (web_contents->GetBrowserContext() == m_browserContext.data()) {
+ content::RendererPreferences* rendererPrefs = web_contents->GetMutableRendererPrefs();
+ rendererPrefs->accept_languages = httpAcceptLanguageWithoutQualities().toStdString();
+ web_contents->GetRenderViewHost()->SyncRendererPrefs();
+ }
+ }
+
+ if (m_browserContext->url_request_getter_.get())
+ m_browserContext->url_request_getter_->updateUserAgent();
}
} // namespace QtWebEngineCore