diff options
author | Alexandru Croitor <alexandru.croitor@qt.io> | 2018-11-29 18:26:50 +0100 |
---|---|---|
committer | Alexandru Croitor <alexandru.croitor@qt.io> | 2018-12-12 13:48:23 +0000 |
commit | e599907de9db0503b02a2d4a9be6d75e9542d6e3 (patch) | |
tree | 8b54015eaa8fe1ff1e66df04c5ebad1b61a6e1f9 /src/webenginewidgets/api/qwebengineprofile.cpp | |
parent | 21112a89e3d742451d6b449fc7075d51266fe709 (diff) |
Document and safeguard usage of custom schemes
The change improves the documentation of QWebEngineUrlSchemeHandler to
notify the requirement of registering a custom scheme before installing
a custom scheme handler.
Also start showing warnings when
QWebEngineProfile::installUrlSchemeHandler() is called before a scheme
is registered. Also show warnings when installing the handler using
QML.
Task-number: QTBUG-72079
Change-Id: If249592ea43fe2f9ad587a6ff4e8c9dedcc5d3d3
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Diffstat (limited to 'src/webenginewidgets/api/qwebengineprofile.cpp')
-rw-r--r-- | src/webenginewidgets/api/qwebengineprofile.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/webenginewidgets/api/qwebengineprofile.cpp b/src/webenginewidgets/api/qwebengineprofile.cpp index 537cf41fd..03ce5e0bc 100644 --- a/src/webenginewidgets/api/qwebengineprofile.cpp +++ b/src/webenginewidgets/api/qwebengineprofile.cpp @@ -52,6 +52,7 @@ #include "visited_links_manager_qt.h" #include "web_engine_settings.h" +#include <QtWebEngineCore/qwebengineurlscheme.h> QT_BEGIN_NAMESPACE @@ -688,7 +689,7 @@ static bool checkInternalScheme(const QByteArray &scheme) Registers a handler \a handler for custom URL scheme \a scheme in the profile. - It is recommended to first register the scheme with \l + It is necessary to first register the scheme with \l QWebEngineUrlScheme::registerScheme at application startup. */ void QWebEngineProfile::installUrlSchemeHandler(const QByteArray &scheme, QWebEngineUrlSchemeHandler *handler) @@ -706,6 +707,11 @@ void QWebEngineProfile::installUrlSchemeHandler(const QByteArray &scheme, QWebEn qWarning("URL scheme handler already installed for the scheme: %s", scheme.constData()); return; } + + if (QWebEngineUrlScheme::schemeByName(canonicalScheme) == QWebEngineUrlScheme()) + qWarning("Please register the custom scheme '%s' via QWebEngineUrlScheme::registerScheme() " + "before installing the custom scheme handler.", scheme.constData()); + d->profileAdapter()->addCustomUrlSchemeHandler(canonicalScheme, handler); connect(handler, SIGNAL(_q_destroyedUrlSchemeHandler(QWebEngineUrlSchemeHandler*)), this, SLOT(destroyedUrlSchemeHandler(QWebEngineUrlSchemeHandler*))); } |