diff --git a/src/core/browser_context_adapter.cpp b/src/core/browser_context_adapter.cpp index 14f3b1c6cbbcb31700e267a68eaa3d1610abd071..75a906b35a07682b91608729d66ba901ef9c8c8f 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 d58d8a4befe5debddb0044b828a801991a754432..896743f4bd8f6c25043c1c35c16ea2d7983aa022 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 999fc881c437d0764439a80c02e3afc9c40b1a50..ae4eabe74e778541da507939cec8c495d8bd008c 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.