From 000f31fb643bb8fb0b89b1ab26a895223c318996 Mon Sep 17 00:00:00 2001 From: Benjamin Terrier Date: Sat, 30 Jul 2022 20:24:34 +0000 Subject: Add qWebEngineGetDomainAndRegistry() [ChangeLog][WebEngineCore] Add qWebEngineGetDomainAndRegistry() Fixes: QTBUG-105294 Change-Id: Ica40453f807b00c8548f974a495ddf84bbe8e194 Reviewed-by: Peter Varga --- src/core/api/qtwebenginecoreglobal.cpp | 12 ++++++++++++ src/core/api/qtwebenginecoreglobal.h | 3 +++ src/core/doc/src/qtwebengine-global.qdoc | 11 +++++++++++ 3 files changed, 26 insertions(+) (limited to 'src') diff --git a/src/core/api/qtwebenginecoreglobal.cpp b/src/core/api/qtwebenginecoreglobal.cpp index d8d3d3b26..9082052f2 100644 --- a/src/core/api/qtwebenginecoreglobal.cpp +++ b/src/core/api/qtwebenginecoreglobal.cpp @@ -17,6 +17,8 @@ #include #include "web_engine_context.h" +#include "net/base/registry_controlled_domains/registry_controlled_domain.h" + #if QT_CONFIG(opengl) QT_BEGIN_NAMESPACE Q_GUI_EXPORT void qt_gl_set_global_share_context(QOpenGLContext *context); @@ -218,4 +220,14 @@ static void initialize() #endif // QT_CONFIG(opengl) } +QT_BEGIN_NAMESPACE + +QString qWebEngineGetDomainAndRegistry(const QUrl &url) { + const QString host = url.host(); + const std::string domain = net::registry_controlled_domains::GetDomainAndRegistry(host.toStdString(), net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES); + return QString::fromStdString(domain); +} + +QT_END_NAMESPACE + Q_CONSTRUCTOR_FUNCTION(initialize) diff --git a/src/core/api/qtwebenginecoreglobal.h b/src/core/api/qtwebenginecoreglobal.h index 3583e0848..166a82b78 100644 --- a/src/core/api/qtwebenginecoreglobal.h +++ b/src/core/api/qtwebenginecoreglobal.h @@ -5,6 +5,7 @@ #define QTWEBENGINECOREGLOBAL_H #include +#include #include QT_BEGIN_NAMESPACE @@ -22,6 +23,8 @@ Q_WEBENGINECORE_EXPORT Q_DECL_CONST_FUNCTION const char *qWebEngineProcessName() Q_WEBENGINECORE_EXPORT Q_DECL_CONST_FUNCTION const char *qWebEngineChromiumVersion() noexcept; Q_WEBENGINECORE_EXPORT Q_DECL_CONST_FUNCTION const char *qWebEngineChromiumSecurityPatchVersion() noexcept; +Q_WEBENGINECORE_EXPORT QString qWebEngineGetDomainAndRegistry(const QUrl &url); + QT_END_NAMESPACE #endif // QTWEBENGINECOREGLOBAL_H diff --git a/src/core/doc/src/qtwebengine-global.qdoc b/src/core/doc/src/qtwebengine-global.qdoc index 57df8b3ac..d4bbef01a 100644 --- a/src/core/doc/src/qtwebengine-global.qdoc +++ b/src/core/doc/src/qtwebengine-global.qdoc @@ -40,3 +40,14 @@ Returns the version number of last Chromium version security patches have been merged from. */ + +/*! + \fn QString qWebEngineGetDomainAndRegistry(const QUrl &url) + \relates + \since 6.6 + + Returns the domain of the host i.e. the effective top-level domain (eTLD) + plus the first domain below. + + If the host is not a domain an empty string is returned. +*/ -- cgit v1.2.1