summaryrefslogtreecommitdiffstats
path: root/src/webenginewidgets/api/qwebengineprofile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/webenginewidgets/api/qwebengineprofile.cpp')
-rw-r--r--src/webenginewidgets/api/qwebengineprofile.cpp39
1 files changed, 26 insertions, 13 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();