From 5d79af42e1e442ef67b3f1c87ae75d60a22ef9fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCri=20Valdmann?= Date: Thu, 7 Jun 2018 16:37:02 +0200 Subject: Add QWebEngineUrlScheme class Public API for the new url/url_util_qt extension to Chromium, which allows to integrate custom schemes into Chromium's url parsing library and security model. Previously custom schemes would be treated as 'unknown' schemes and rely on fallback behavior in Chromium. [ChangeLog][Custom Schemes] Added the QWebEngineUrlScheme class for configuring how custom schemes are parsed and which security restrictions should apply. Task-number: QTBUG-62536 Change-Id: I7d8b9da3ad742f568b82ccc6a2456ad35e84069b Reviewed-by: Michal Klocek --- src/webenginewidgets/api/qwebengineprofile.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src/webenginewidgets/api/qwebengineprofile.cpp') diff --git a/src/webenginewidgets/api/qwebengineprofile.cpp b/src/webenginewidgets/api/qwebengineprofile.cpp index 4523a425a..6969000a8 100644 --- a/src/webenginewidgets/api/qwebengineprofile.cpp +++ b/src/webenginewidgets/api/qwebengineprofile.cpp @@ -680,22 +680,26 @@ static bool checkInternalScheme(const QByteArray &scheme) \since 5.6 Registers a handler \a handler for custom URL scheme \a scheme in the profile. + + It is recommended to first register the scheme with \l + QWebEngineUrlScheme::addScheme at application startup. */ void QWebEngineProfile::installUrlSchemeHandler(const QByteArray &scheme, QWebEngineUrlSchemeHandler *handler) { Q_D(QWebEngineProfile); Q_ASSERT(handler); - if (checkInternalScheme(scheme)) { + QByteArray canonicalScheme = scheme.toLower(); + if (checkInternalScheme(canonicalScheme)) { qWarning("Cannot install a URL scheme handler overriding internal scheme: %s", scheme.constData()); return; } - if (d->profileAdapter()->customUrlSchemeHandlers().contains(scheme)) { - if (d->profileAdapter()->customUrlSchemeHandlers().value(scheme) != handler) + if (d->profileAdapter()->customUrlSchemeHandlers().contains(canonicalScheme)) { + if (d->profileAdapter()->customUrlSchemeHandlers().value(canonicalScheme) != handler) qWarning("URL scheme handler already installed for the scheme: %s", scheme.constData()); return; } - d->profileAdapter()->addCustomUrlSchemeHandler(scheme, handler); + d->profileAdapter()->addCustomUrlSchemeHandler(canonicalScheme, handler); connect(handler, SIGNAL(_q_destroyedUrlSchemeHandler(QWebEngineUrlSchemeHandler*)), this, SLOT(destroyedUrlSchemeHandler(QWebEngineUrlSchemeHandler*))); } -- cgit v1.2.3