diff options
author | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2015-10-12 17:38:32 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2015-10-16 14:22:34 +0000 |
commit | d9d1cc3ec8931cecc0b0dcb5d5d184cdb53ff434 (patch) | |
tree | 5733a96d78502f4f2f3b3326403e717636b04f34 /src/core/browser_context_adapter.cpp | |
parent | fbfd6b7617a88bf9668f88be5db220d3a3f92071 (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/core/browser_context_adapter.cpp')
-rw-r--r-- | src/core/browser_context_adapter.cpp | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/src/core/browser_context_adapter.cpp b/src/core/browser_context_adapter.cpp index 345741847..fc5dc8c21 100644 --- a/src/core/browser_context_adapter.cpp +++ b/src/core/browser_context_adapter.cpp @@ -365,9 +365,35 @@ void BrowserContextAdapter::updateCustomUrlSchemeHandlers() m_browserContext->url_request_getter_->updateStorageSettings(); } -void BrowserContextAdapter::removeCustomUrlSchemeHandler(QWebEngineUrlSchemeHandler *handler) +bool BrowserContextAdapter::removeCustomUrlSchemeHandler(QWebEngineUrlSchemeHandler *handler) +{ + bool removedOneOrMore = false; + auto it = m_customUrlSchemeHandlers.begin(); + auto end = m_customUrlSchemeHandlers.end(); + for (; it != end; ++it) { + if (it.value() == handler) { + it = m_customUrlSchemeHandlers.erase(it); + removedOneOrMore = true; + continue; + } + } + if (removedOneOrMore) + updateCustomUrlSchemeHandlers(); + return removedOneOrMore; +} + +QWebEngineUrlSchemeHandler *BrowserContextAdapter::takeCustomUrlSchemeHandler(const QByteArray &scheme) +{ + QWebEngineUrlSchemeHandler *handler = m_customUrlSchemeHandlers.take(scheme); + if (handler) + updateCustomUrlSchemeHandlers(); + return handler; +} + +void BrowserContextAdapter::addCustomUrlSchemeHandler(const QByteArray &scheme, QWebEngineUrlSchemeHandler *handler) { - m_customUrlSchemeHandlers.remove(handler->scheme()); + m_customUrlSchemeHandlers.insert(scheme, handler); + updateCustomUrlSchemeHandlers(); } UserScriptControllerHost *BrowserContextAdapter::userScriptController() |