diff options
author | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2015-08-11 13:56:18 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2015-08-27 22:03:00 +0000 |
commit | 0a21df6d8ef2f7efb397fe109b1ff2a391db1735 (patch) | |
tree | ed18afa2d430aeff76ed1bc84379da64ebdb7859 /src/webenginewidgets/api/qwebengineprofile.cpp | |
parent | 281f8c2e4a5787aadf4c978139358141f626b8a4 (diff) |
Move custom URL scheme handlers to core
Makes the custom URL scheme handler API public, and moves it to core
so that it may be shared with the QQuickWebEngine API.
Change-Id: I745cb088df6f4cd11b1ac7c8c3c76f112032cb38
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Diffstat (limited to 'src/webenginewidgets/api/qwebengineprofile.cpp')
-rw-r--r-- | src/webenginewidgets/api/qwebengineprofile.cpp | 68 |
1 files changed, 51 insertions, 17 deletions
diff --git a/src/webenginewidgets/api/qwebengineprofile.cpp b/src/webenginewidgets/api/qwebengineprofile.cpp index db8c0dc89..a38a78cf7 100644 --- a/src/webenginewidgets/api/qwebengineprofile.cpp +++ b/src/webenginewidgets/api/qwebengineprofile.cpp @@ -42,7 +42,7 @@ #include "qwebenginepage.h" #include "qwebengineprofile_p.h" #include "qwebenginesettings.h" -#include "qwebengineurlschemehandler_p_p.h" +#include "qwebengineurlschemehandler_p.h" #include "qwebenginescriptcollection_p.h" #include "browser_context_adapter.h" @@ -536,10 +536,16 @@ QWebEngineSettings *QWebEngineProfile::settings() const return d->settings(); } -QWebEngineUrlSchemeHandler *QWebEngineProfilePrivate::urlSchemeHandler(const QByteArray &protocol) +/*! + \since 5.6 + + Returns the custom URL scheme handler register for the URL scheme \a scheme. +*/ +const QWebEngineUrlSchemeHandler *QWebEngineProfile::urlSchemeHandler(const QByteArray &scheme) const { - if (m_urlSchemeHandlers.contains(protocol)) - return m_urlSchemeHandlers.value(protocol); + const Q_D(QWebEngineProfile); + if (d->m_urlSchemeHandlers.contains(scheme)) + return d->m_urlSchemeHandlers.value(scheme); return 0; } @@ -553,8 +559,14 @@ static bool checkInternalScheme(const QByteArray &scheme) return internalSchemes.contains(scheme); } -void QWebEngineProfilePrivate::installUrlSchemeHandler(QWebEngineUrlSchemeHandler *handler) +/*! + \since 5.6 + + Installs the custom URL scheme handler \a handler in the profile. +*/ +void QWebEngineProfile::installUrlSchemeHandler(QWebEngineUrlSchemeHandler *handler) { + Q_D(QWebEngineProfile); Q_ASSERT(handler); QByteArray scheme = handler->scheme(); if (checkInternalScheme(scheme)) { @@ -562,29 +574,51 @@ void QWebEngineProfilePrivate::installUrlSchemeHandler(QWebEngineUrlSchemeHandle return; } - if (m_urlSchemeHandlers.contains(scheme)) { + if (d->m_urlSchemeHandlers.contains(scheme)) { qWarning() << "URL scheme handler already installed for the scheme: " << scheme; return; } - m_urlSchemeHandlers.insert(scheme, handler); - browserContext()->customUrlSchemeHandlers().append(handler->d_func()); - browserContext()->updateCustomUrlSchemeHandlers(); + d->m_urlSchemeHandlers.insert(scheme, handler); + d->browserContext()->customUrlSchemeHandlers().append(handler->d_func()); + d->browserContext()->updateCustomUrlSchemeHandlers(); + connect(handler, SIGNAL(destroyed(QObject*)), this, SLOT(destroyedUrlSchemeHandler(QObject*))); } -void QWebEngineProfilePrivate::removeUrlSchemeHandler(QWebEngineUrlSchemeHandler *handler) +/*! + \since 5.6 + + Removes the custom URL scheme handler \a handler from the profile +*/ +void QWebEngineProfile::removeUrlSchemeHandler(QWebEngineUrlSchemeHandler *handler) { - int count = m_urlSchemeHandlers.remove(handler->scheme()); + Q_D(QWebEngineProfile); + Q_ASSERT(handler); + if (!handler) + return; + int count = d->m_urlSchemeHandlers.remove(handler->scheme()); if (!count) return; - browserContext()->customUrlSchemeHandlers().removeOne(handler->d_func()); - browserContext()->updateCustomUrlSchemeHandlers(); + disconnect(handler, SIGNAL(destroyed(QObject*)), this, SLOT(destroyedUrlSchemeHandler(QObject*))); + d->browserContext()->removeCustomUrlSchemeHandler(handler->d_func()); + d->browserContext()->updateCustomUrlSchemeHandlers(); +} + +/*! + \since 5.6 + + Removes all custom URL scheme handlers installed in the profile. +*/ +void QWebEngineProfile::clearUrlSchemeHandlers() +{ + Q_D(QWebEngineProfile); + d->m_urlSchemeHandlers.clear(); + d->browserContext()->customUrlSchemeHandlers().clear(); + d->browserContext()->updateCustomUrlSchemeHandlers(); } -void QWebEngineProfilePrivate::clearUrlSchemeHandlers() +void QWebEngineProfile::destroyedUrlSchemeHandler(QObject *obj) { - m_urlSchemeHandlers.clear(); - browserContext()->customUrlSchemeHandlers().clear(); - browserContext()->updateCustomUrlSchemeHandlers(); + removeUrlSchemeHandler(qobject_cast<QWebEngineUrlSchemeHandler*>(obj)); } QT_END_NAMESPACE |