summaryrefslogtreecommitdiffstats
path: root/src/webenginewidgets
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2015-10-12 17:38:32 +0200
committerAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2015-10-16 14:22:34 +0000
commitd9d1cc3ec8931cecc0b0dcb5d5d184cdb53ff434 (patch)
tree5733a96d78502f4f2f3b3326403e717636b04f34 /src/webenginewidgets
parentfbfd6b7617a88bf9668f88be5db220d3a3f92071 (diff)
Decouple scheme and url scheme handler
Remove the scheme from the url scheme handler constructor, this way the same handler can handle multiple schemes, the API look more natural and we can get rid of the private class. Change-Id: I33906b8a5ea51641e28a53f93f4feb1472c24baf Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Diffstat (limited to 'src/webenginewidgets')
-rw-r--r--src/webenginewidgets/api/qwebengineprofile.cpp39
-rw-r--r--src/webenginewidgets/api/qwebengineprofile.h5
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();