diff options
Diffstat (limited to 'src/webenginewidgets')
-rw-r--r-- | src/webenginewidgets/api/qwebengineprofile.cpp | 39 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebengineprofile.h | 5 |
2 files changed, 29 insertions, 15 deletions
diff --git a/src/webenginewidgets/api/qwebengineprofile.cpp b/src/webenginewidgets/api/qwebengineprofile.cpp index b98aa3a61..0d9e400ed 100644 --- a/src/webenginewidgets/api/qwebengineprofile.cpp +++ b/src/webenginewidgets/api/qwebengineprofile.cpp @@ -562,43 +562,56 @@ static bool checkInternalScheme(const QByteArray &scheme) /*! \since 5.6 - Installs the custom URL scheme handler \a handler in the profile. + Registers a handler \a handler for custom URL scheme \a scheme in the profile. */ -void QWebEngineProfile::installUrlSchemeHandler(QWebEngineUrlSchemeHandler *handler) +void QWebEngineProfile::installUrlSchemeHandler(const QByteArray &scheme, QWebEngineUrlSchemeHandler *handler) { Q_D(QWebEngineProfile); Q_ASSERT(handler); - QByteArray scheme = handler->scheme(); if (checkInternalScheme(scheme)) { - qWarning("Can not install a URL scheme handler overriding internal scheme: %s", scheme.constData()); + qWarning("Cannot install a URL scheme handler overriding internal scheme: %s", scheme.constData()); return; } if (d->browserContext()->customUrlSchemeHandlers().contains(scheme)) { - qWarning("URL scheme handler already installed for the scheme: %s", scheme.constData()); + if (d->browserContext()->customUrlSchemeHandlers().value(scheme) != handler) + qWarning("URL scheme handler already installed for the scheme: %s", scheme.constData()); return; } - d->browserContext()->customUrlSchemeHandlers().insert(scheme, handler); - d->browserContext()->updateCustomUrlSchemeHandlers(); + d->browserContext()->addCustomUrlSchemeHandler(scheme, handler); connect(handler, SIGNAL(destroyed(QWebEngineUrlSchemeHandler*)), this, SLOT(destroyedUrlSchemeHandler(QWebEngineUrlSchemeHandler*))); } /*! \since 5.6 - Removes the custom URL scheme handler \a handler from the profile + Removes the custom URL scheme handler \a handler from the profile. + + \sa removeUrlScheme() */ void QWebEngineProfile::removeUrlSchemeHandler(QWebEngineUrlSchemeHandler *handler) { Q_D(QWebEngineProfile); Q_ASSERT(handler); - if (!handler) + if (!d->browserContext()->removeCustomUrlSchemeHandler(handler)) return; - int count = d->browserContext()->customUrlSchemeHandlers().remove(handler->scheme()); - if (!count) + disconnect(handler, SIGNAL(destroyed(QWebEngineUrlSchemeHandler*)), this, SLOT(destroyedUrlSchemeHandler(QWebEngineUrlSchemeHandler*))); +} + +/*! + \since 5.6 + + Removes the custom URL scheme \a scheme from the profile. + + \sa removeUrlSchemeHandler() +*/ +void QWebEngineProfile::removeUrlScheme(const QByteArray &scheme) +{ + Q_D(QWebEngineProfile); + QWebEngineUrlSchemeHandler *handler = d->browserContext()->takeCustomUrlSchemeHandler(scheme); + if (!handler) return; disconnect(handler, SIGNAL(destroyed(QWebEngineUrlSchemeHandler*)), this, SLOT(destroyedUrlSchemeHandler(QWebEngineUrlSchemeHandler*))); - d->browserContext()->updateCustomUrlSchemeHandlers(); } /*! @@ -606,7 +619,7 @@ void QWebEngineProfile::removeUrlSchemeHandler(QWebEngineUrlSchemeHandler *handl Removes all custom URL scheme handlers installed in the profile. */ -void QWebEngineProfile::clearUrlSchemeHandlers() +void QWebEngineProfile::removeAllUrlSchemeHandlers() { Q_D(QWebEngineProfile); d->browserContext()->customUrlSchemeHandlers().clear(); diff --git a/src/webenginewidgets/api/qwebengineprofile.h b/src/webenginewidgets/api/qwebengineprofile.h index 82946a223..4bed186fb 100644 --- a/src/webenginewidgets/api/qwebengineprofile.h +++ b/src/webenginewidgets/api/qwebengineprofile.h @@ -111,9 +111,10 @@ public: QWebEngineScriptCollection *scripts() const; const QWebEngineUrlSchemeHandler *urlSchemeHandler(const QByteArray &) const; - void installUrlSchemeHandler(QWebEngineUrlSchemeHandler *); + void installUrlSchemeHandler(const QByteArray &scheme, QWebEngineUrlSchemeHandler *); + void removeUrlScheme(const QByteArray &scheme); void removeUrlSchemeHandler(QWebEngineUrlSchemeHandler *); - void clearUrlSchemeHandlers(); + void removeAllUrlSchemeHandlers(); static QWebEngineProfile *defaultProfile(); |