From 117d70f5c719cc6775eb5a653c887e68037b9a93 Mon Sep 17 00:00:00 2001
From: Szabolcs David <davidsz@inf.u-szeged.hu>
Date: Mon, 28 Sep 2015 05:54:37 -0700
Subject: [PATCH] Remove whitespaces from custom HTTP user agents

This prevents adding additional headers to the outgoing
HTTP request through overridden user agent and unskips
userAgentNewlineStripping API test.

Change-Id: If9b3a88b0346058a7dc462471637d9777683fe82
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
---
 src/core/browser_context_adapter.cpp          |  4 +--
 .../qwebenginepage/tst_qwebenginepage.cpp     | 29 ++++++-------------
 2 files changed, 11 insertions(+), 22 deletions(-)

diff --git a/src/core/browser_context_adapter.cpp b/src/core/browser_context_adapter.cpp
index 660c6ffb2..02fa207c9 100644
--- a/src/core/browser_context_adapter.cpp
+++ b/src/core/browser_context_adapter.cpp
@@ -255,12 +255,12 @@ void BrowserContextAdapter::setHttpUserAgent(const QString &userAgent)
 {
     if (m_httpUserAgent == userAgent)
         return;
-    m_httpUserAgent = userAgent;
+    m_httpUserAgent = userAgent.simplified();
 
     std::vector<content::WebContentsImpl *> list = content::WebContentsImpl::GetAllWebContents();
     Q_FOREACH (content::WebContentsImpl *web_contents, list)
         if (web_contents->GetBrowserContext() == m_browserContext.data())
-            web_contents->SetUserAgentOverride(userAgent.toStdString());
+            web_contents->SetUserAgentOverride(m_httpUserAgent.toStdString());
 
     if (m_browserContext->url_request_getter_.get())
         m_browserContext->url_request_getter_->updateUserAgent();
diff --git a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
index 6e3976766..9559f3cf5 100644
--- a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
+++ b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
@@ -40,6 +40,7 @@
 #include <qpa/qplatforminputcontext.h>
 #include <qwebenginehistory.h>
 #include <qwebenginepage.h>
+#include <qwebengineprofile.h>
 #include <qwebenginesettings.h>
 #include <qwebengineview.h>
 #include <qimagewriter.h>
@@ -2810,28 +2811,16 @@ void tst_QWebEnginePage::userAgentApplicationName()
 #endif
 }
 
-class CustomUserAgentWebPage : public QWebEnginePage
-{
-public:
-    static const QLatin1String filteredUserAgent;
-protected:
-    virtual QString userAgentForUrl(const QUrl& url) const
-    {
-        Q_UNUSED(url);
-        return QString("My User Agent\nX-New-Http-Header: Oh Noes!");
-    }
-};
-const QLatin1String CustomUserAgentWebPage::filteredUserAgent("My User AgentX-New-Http-Header: Oh Noes!");
-
 void tst_QWebEnginePage::userAgentNewlineStripping()
 {
-#if !defined(QWEBENGINEPAGE_USERAGENTFORURL)
-    QSKIP("QWEBENGINEPAGE_USERAGENTFORURL");
-#else
-    CustomUserAgentWebPage page;
-    page.setHtml("<html><body></body></html>");
-    QCOMPARE(evaluateJavaScriptSync(&page, "navigator.userAgent").toString(), CustomUserAgentWebPage::filteredUserAgent);
-#endif
+    QWebEngineProfile profile;
+    QWebEnginePage page(&profile);
+
+    profile.setHttpUserAgent(QStringLiteral("My User Agent\nX-New-Http-Header: Oh Noes!"));
+    // The user agent will be updated after a page load.
+    page.load(QUrl("about:blank"));
+
+    QCOMPARE(evaluateJavaScriptSync(&page, "navigator.userAgent").toString(), QStringLiteral("My User Agent X-New-Http-Header: Oh Noes!"));
 }
 
 void tst_QWebEnginePage::crashTests_LazyInitializationOfMainFrame()
-- 
GitLab