summaryrefslogtreecommitdiffstats
path: root/src/core/favicon_manager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/favicon_manager.cpp')
-rw-r--r--src/core/favicon_manager.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/core/favicon_manager.cpp b/src/core/favicon_manager.cpp
index 8469f054e..16a087efc 100644
--- a/src/core/favicon_manager.cpp
+++ b/src/core/favicon_manager.cpp
@@ -42,6 +42,7 @@
#include "type_conversion.h"
#include "web_contents_adapter_client.h"
+#include "web_engine_settings.h"
#include "base/bind.h"
#include "content/public/browser/favicon_status.h"
@@ -176,12 +177,15 @@ void FaviconManagerPrivate::propagateIcon() const
{
Q_Q(const FaviconManager);
+ WebEngineSettings *settings = m_viewClient->webEngineSettings();
+ bool touchIconsEnabled = settings->testAttribute(WebEngineSettings::TouchIconsEnabled);
+
QUrl iconUrl;
const QList<FaviconInfo> &faviconInfoList = q->getFaviconInfoList(true /* candidates only */);
unsigned bestArea = 0;
for (auto it = faviconInfoList.cbegin(), end = faviconInfoList.cend(); it != end; ++it) {
- if (it->type != FaviconInfo::Favicon)
+ if (!touchIconsEnabled && it->type != FaviconInfo::Favicon)
continue;
if (it->isValid() && bestArea < area(it->size)) {
@@ -244,9 +248,17 @@ void FaviconManager::update(const QList<FaviconInfo> &candidates)
Q_D(FaviconManager);
updateCandidates(candidates);
+ WebEngineSettings *settings = d->m_viewClient->webEngineSettings();
+ if (!settings->testAttribute(WebEngineSettings::AutoLoadIconsForPage)) {
+ d->m_viewClient->iconChanged(QUrl());
+ return;
+ }
+
+ bool touchIconsEnabled = settings->testAttribute(WebEngineSettings::TouchIconsEnabled);
+
const QList<FaviconInfo> &faviconInfoList = getFaviconInfoList(true /* candidates only */);
for (auto it = faviconInfoList.cbegin(), end = faviconInfoList.cend(); it != end; ++it) {
- if (it->type != FaviconInfo::Favicon)
+ if (!touchIconsEnabled && it->type != FaviconInfo::Favicon)
continue;
if (it->isValid())