diff options
author | Arvid Nilsson <anilsson@blackberry.com> | 2013-10-03 12:33:54 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-10-03 14:52:36 +0200 |
commit | ef6cb53a1d49de616067126c8f49d2406c9a7f43 (patch) | |
tree | b515263fb14a8ddaa8e54a4652446dd47a9ba071 /lib/web_contents_delegate_qt.cpp | |
parent | 8c1de0f07a4b83ad50278231a8866143cf01333c (diff) |
Quick: Add Favicon API
Adds a favicon API modelled after the WebKit2 QQuickWebView API, but
using an http(s) URL instead of a custom protocol, because there's no
icondatabase yet.
The icon URL lingers even when a new load is committed, until the load
finishes. It might be more prudent to clear the icon when committing a
new load, but I opted to let the app take care of that detail if
desired. Many browsers show a spinner instead of the favicon while
loading, for example.
There's no widget API implementation for favicons yet, because that API
only makes sense if we have a full-fledged icon database (case in
point: QWebEngineSettings::iconForUrl()).
Change-Id: I1e7b85104c80de2ae46a5fe9a273104d43a5c71f
Reviewed-by: Andras Becsi <andras.becsi@digia.com>
Diffstat (limited to 'lib/web_contents_delegate_qt.cpp')
-rw-r--r-- | lib/web_contents_delegate_qt.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/web_contents_delegate_qt.cpp b/lib/web_contents_delegate_qt.cpp index e64649aea..12a00481c 100644 --- a/lib/web_contents_delegate_qt.cpp +++ b/lib/web_contents_delegate_qt.cpp @@ -48,6 +48,7 @@ #include "content/public/browser/render_view_host.h" #include "content/public/browser/web_contents.h" #include "content/public/browser/invalidate_type.h" +#include "content/public/common/favicon_url.h" WebContentsDelegateQt::WebContentsDelegateQt(content::WebContents *webContents, WebContentsAdapterClient *adapterClient) : m_viewClient(adapterClient) @@ -96,3 +97,14 @@ void WebContentsDelegateQt::DidFinishLoad(int64 frame_id, const GURL &validated_ if (is_main_frame) m_viewClient->loadFinished(true); } + +void WebContentsDelegateQt::DidUpdateFaviconURL(int32 page_id, const std::vector<content::FaviconURL>& candidates) +{ + Q_UNUSED(page_id) + Q_FOREACH (content::FaviconURL candidate, candidates) { + if (candidate.icon_type == content::FaviconURL::FAVICON && !candidate.icon_url.is_empty()) { + m_viewClient->iconChanged(toQt(candidate.icon_url)); + break; + } + } +} |