diff options
author | Peter Varga <pvarga@inf.u-szeged.hu> | 2016-03-22 09:56:00 +0100 |
---|---|---|
committer | Peter Varga <pvarga@inf.u-szeged.hu> | 2016-04-20 08:22:15 +0000 |
commit | ddc4c40e2dcba81d36c9a4c445f1540b90403997 (patch) | |
tree | 1b2ae4c8d5df228ba71a4e404fef4fe6907e4bbe /src/webengine/api/qquickwebengineview.cpp | |
parent | e46e76a8ffbfa87f488cd16f8720db1a5f3eed83 (diff) |
Add QQuickWebEngineFaviconProvider
The new QQuickImageProvider subclass is used to access downloaded icons
from the FaviconManager via the Quick API.
Change-Id: I6a52d3c737b2260cf480167764a931915cd99cab
Task-number: QTBUG-51179
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Diffstat (limited to 'src/webengine/api/qquickwebengineview.cpp')
-rw-r--r-- | src/webengine/api/qquickwebengineview.cpp | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index 9296cc4dd..122ae2350 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -47,6 +47,7 @@ #include "javascript_dialog_controller.h" #include "qquickwebenginehistory_p.h" #include "qquickwebenginecertificateerror_p.h" +#include "qquickwebenginefaviconprovider_p_p.h" #include "qquickwebengineloadrequest_p.h" #include "qquickwebenginenavigationrequest_p.h" #include "qquickwebenginenewviewrequest_p.h" @@ -112,6 +113,7 @@ QQuickWebEngineViewPrivate::QQuickWebEngineViewPrivate() , m_testSupport(0) #endif , contextMenuExtraItems(0) + , faviconProvider(0) , loadProgress(0) , m_fullscreenMode(false) , isLoading(false) @@ -389,9 +391,19 @@ void QQuickWebEngineViewPrivate::urlChanged(const QUrl &url) void QQuickWebEngineViewPrivate::iconChanged(const QUrl &url) { Q_Q(QQuickWebEngineView); - if (iconUrl == url) + + if (iconUrl == QQuickWebEngineFaviconProvider::faviconProviderUrl(url)) return; - iconUrl = url; + + if (!faviconProvider) { + QQmlEngine *engine = qmlEngine(q); + Q_ASSERT(engine); + faviconProvider = static_cast<QQuickWebEngineFaviconProvider *>( + engine->imageProvider(QQuickWebEngineFaviconProvider::identifier())); + Q_ASSERT(faviconProvider); + } + + iconUrl = faviconProvider->attach(q, url); Q_EMIT q->iconChanged(); } @@ -788,6 +800,9 @@ QQuickWebEngineView::QQuickWebEngineView(QQuickItem *parent) QQuickWebEngineView::~QQuickWebEngineView() { + Q_D(QQuickWebEngineView); + if (d->faviconProvider) + d->faviconProvider->detach(this); } void QQuickWebEngineViewPrivate::ensureContentsAdapter() |