From 8ddc67c49f33efdef6b1418aa9090a5d784e1ed4 Mon Sep 17 00:00:00 2001
From: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Date: Mon, 24 Aug 2015 11:16:17 +0200
Subject: [PATCH] set Accept-Language in content::RendererPreferences

This amends commit 2a56ec7ce4713711b55bb1dfc86a4320d943f606.

Change-Id: I8103197f08c985557000de36c37ad80e1ceadf24
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
---
 src/core/browser_context_adapter.cpp | 12 ++++++++++++
 src/core/browser_context_adapter.h   |  1 +
 src/core/web_contents_adapter.cpp    |  1 +
 3 files changed, 14 insertions(+)

diff --git a/src/core/browser_context_adapter.cpp b/src/core/browser_context_adapter.cpp
index 14f3b1c6c..75a906b35 100644
--- a/src/core/browser_context_adapter.cpp
+++ b/src/core/browser_context_adapter.cpp
@@ -54,6 +54,8 @@
 #include <QStringBuilder>
 #include <QStandardPaths>
 
+#include <numeric>
+
 namespace {
 inline QString buildLocationFromStandardPath(const QString &standardPath, const QString &name) {
     QString location = standardPath;
@@ -368,6 +370,16 @@ void BrowserContextAdapter::permissionRequestReply(const QUrl &origin, Permissio
     static_cast<PermissionManagerQt*>(browserContext()->GetPermissionManager())->permissionRequestReply(origin, type, reply);
 }
 
+QString BrowserContextAdapter::httpAcceptLanguageWithoutQualities() const
+{
+    const QStringList list = m_httpAcceptLanguage.split(QLatin1Char(','));
+    return std::accumulate(list.constBegin(), list.constEnd(), QString(),
+                    [](const QString &r, const QString &e) {
+        return (r.isEmpty() ? r : r + QString(QLatin1Char(',')))
+                + e.split(QLatin1Char(';')).first();
+    });
+}
+
 QString BrowserContextAdapter::httpAcceptLanguage() const
 {
     return m_httpAcceptLanguage;
diff --git a/src/core/browser_context_adapter.h b/src/core/browser_context_adapter.h
index d58d8a4be..896743f4b 100644
--- a/src/core/browser_context_adapter.h
+++ b/src/core/browser_context_adapter.h
@@ -151,6 +151,7 @@ public:
 
     void permissionRequestReply(const QUrl &origin, PermissionType type, bool reply);
 
+    QString httpAcceptLanguageWithoutQualities() const;
     QString httpAcceptLanguage() const;
     void setHttpAcceptLanguage(const QString &httpAcceptLanguage);
 
diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp
index 999fc881c..ae4eabe74 100644
--- a/src/core/web_contents_adapter.cpp
+++ b/src/core/web_contents_adapter.cpp
@@ -377,6 +377,7 @@ void WebContentsAdapter::initialize(WebContentsAdapterClient *adapterClient)
     const int qtCursorFlashTime = QGuiApplication::styleHints()->cursorFlashTime();
     rendererPrefs->caret_blink_interval = 0.5 * static_cast<double>(qtCursorFlashTime) / 1000;
     rendererPrefs->user_agent_override = d->browserContextAdapter->httpUserAgent().toStdString();
+    rendererPrefs->accept_languages = d->browserContextAdapter->httpAcceptLanguageWithoutQualities().toStdString();
     d->webContents->GetRenderViewHost()->SyncRendererPrefs();
 
     // Create and attach observers to the WebContents.
-- 
GitLab