diff options
author | Szabolcs David <davidsz@inf.u-szeged.hu> | 2022-10-10 17:25:43 +0200 |
---|---|---|
committer | Szabolcs David <davidsz@inf.u-szeged.hu> | 2022-10-11 22:32:06 +0200 |
commit | 03c3b33f5d4e8a40175ab1febbb6051f0878db84 (patch) | |
tree | 11a0f3f825ee146478b5cf6de2e9eb733a398c21 /src | |
parent | 39ebe4abccdc4e059a0e310a331f3fc392c84009 (diff) | |
download | qtwebengine-03c3b33f5d4e8a40175ab1febbb6051f0878db84.tar.gz |
Support navigator.userAgentData
Use embedder_support component to generate user agent metadata and
support this API. ContentBrowserClientQt::GetUserAgentMetadata() has
been implemented only for safe-keeping, because we always override
that value in RendererPreferences.
Task-number: QTBUG-107260
Task-number: QTBUG-107451
Change-Id: Ibbcd8d9c1e9c2c0ebacf97f4b9d4ed1aa55dc881
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src')
m--------- | src/3rdparty | 0 | ||||
-rw-r--r-- | src/core/configure/BUILD.root.gn.in | 3 | ||||
-rw-r--r-- | src/core/content_browser_client_qt.cpp | 7 | ||||
-rw-r--r-- | src/core/content_browser_client_qt.h | 2 | ||||
-rw-r--r-- | src/core/web_contents_adapter.cpp | 3 |
5 files changed, 15 insertions, 0 deletions
diff --git a/src/3rdparty b/src/3rdparty -Subproject 1dc53de694e05a192d4757835f66e0797b7d29b +Subproject 546d8e05343fd49f01bdfcb5bf4de5ec3df2819 diff --git a/src/core/configure/BUILD.root.gn.in b/src/core/configure/BUILD.root.gn.in index ffe684b09..a4f78f3af 100644 --- a/src/core/configure/BUILD.root.gn.in +++ b/src/core/configure/BUILD.root.gn.in @@ -229,6 +229,7 @@ source_set("qtwebengine_sources") { "//chrome/common:version_header", "//chromeos/components/chromebox_for_meetings/buildflags", "//components/custom_handlers", + "//components/embedder_support:embedder_support", "//components/nacl/common:buildflags", "//components/performance_manager", "//components/plugins/renderer/", @@ -312,6 +313,8 @@ source_set("qtwebengine_sources") { "//chrome/common/url_constants.h", "//chrome/common/webui_url_constants.cc", "//chrome/common/webui_url_constants.h", + "//components/embedder_support/user_agent_utils.cc", + "//components/embedder_support/user_agent_utils.h", ] if (enable_extensions) { deps += [ diff --git a/src/core/content_browser_client_qt.cpp b/src/core/content_browser_client_qt.cpp index b6e6748c8..ad16119a9 100644 --- a/src/core/content_browser_client_qt.cpp +++ b/src/core/content_browser_client_qt.cpp @@ -8,6 +8,7 @@ #include "chrome/browser/tab_contents/form_interaction_tab_helper.h" #include "components/autofill/content/browser/content_autofill_driver_factory.h" #include "components/custom_handlers/protocol_handler_registry.h" +#include "components/embedder_support/user_agent_utils.h" #include "components/error_page/common/error.h" #include "components/error_page/common/localized_error.h" #include "components/navigation_interception/intercept_navigation_throttle.h" @@ -982,6 +983,12 @@ std::string ContentBrowserClientQt::getUserAgent() return content::BuildUserAgentFromProduct("QtWebEngine/" QTWEBENGINECORE_VERSION_STR " Chrome/" CHROMIUM_VERSION); } +blink::UserAgentMetadata ContentBrowserClientQt::getUserAgentMetadata() +{ + static blink::UserAgentMetadata userAgentMetadata(embedder_support::GetUserAgentMetadata()); + return userAgentMetadata; +} + std::string ContentBrowserClientQt::GetProduct() { QString productName(qApp->applicationName() % '/' % qApp->applicationVersion()); diff --git a/src/core/content_browser_client_qt.h b/src/core/content_browser_client_qt.h index 4ee5c0228..c16acc304 100644 --- a/src/core/content_browser_client_qt.h +++ b/src/core/content_browser_client_qt.h @@ -235,8 +235,10 @@ public: content::WebContentsViewDelegate* GetWebContentsViewDelegate(content::WebContents* web_contents) override; static std::string getUserAgent(); + static blink::UserAgentMetadata getUserAgentMetadata(); std::string GetUserAgent() override { return getUserAgent(); } + blink::UserAgentMetadata GetUserAgentMetadata() override { return getUserAgentMetadata(); } std::string GetProduct() override; private: diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp index 7dc96967f..9c0f85a2a 100644 --- a/src/core/web_contents_adapter.cpp +++ b/src/core/web_contents_adapter.cpp @@ -8,6 +8,7 @@ #include "web_contents_adapter.h" #include "autofill_client_qt.h" +#include "content_browser_client_qt.h" #include "devtools_frontend_qt.h" #include "download_manager_delegate_qt.h" #include "favicon_driver_qt.h" @@ -34,6 +35,7 @@ #include "chrome/browser/tab_contents/form_interaction_tab_helper.h" #include "components/autofill/core/browser/autofill_manager.h" #include "components/autofill/content/browser/content_autofill_driver_factory.h" +#include "components/embedder_support/user_agent_utils.h" #include "components/favicon/core/favicon_service.h" #include "content/browser/renderer_host/render_view_host_impl.h" #include "content/browser/renderer_host/text_input_manager.h" @@ -522,6 +524,7 @@ void WebContentsAdapter::initializeRenderPrefs() rendererPrefs->caret_blink_interval = base::Milliseconds(0.5 * static_cast<double>(qtCursorFlashTime)); rendererPrefs->user_agent_override = blink::UserAgentOverride::UserAgentOnly(m_profileAdapter->httpUserAgent().toStdString()); + rendererPrefs->user_agent_override.ua_metadata_override = ContentBrowserClientQt::getUserAgentMetadata(); rendererPrefs->accept_languages = m_profileAdapter->httpAcceptLanguageWithoutQualities().toStdString(); #if QT_CONFIG(webengine_webrtc) base::CommandLine* commandLine = base::CommandLine::ForCurrentProcess(); |