summaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/favicon_manager.cpp16
-rw-r--r--src/core/web_engine_settings.cpp2
-rw-r--r--src/core/web_engine_settings.h4
3 files changed, 19 insertions, 3 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())
diff --git a/src/core/web_engine_settings.cpp b/src/core/web_engine_settings.cpp
index d65066693..54c7f7c4f 100644
--- a/src/core/web_engine_settings.cpp
+++ b/src/core/web_engine_settings.cpp
@@ -236,6 +236,8 @@ void WebEngineSettings::initDefaults(bool offTheRecord)
s_defaultAttributes.insert(ScrollAnimatorEnabled, smoothScrolling);
s_defaultAttributes.insert(WebGLEnabled, webGL);
s_defaultAttributes.insert(Accelerated2dCanvasEnabled, accelerated2dCanvas);
+ s_defaultAttributes.insert(AutoLoadIconsForPage, true);
+ s_defaultAttributes.insert(TouchIconsEnabled, false);
}
if (offTheRecord)
m_attributes.insert(LocalStorageEnabled, false);
diff --git a/src/core/web_engine_settings.h b/src/core/web_engine_settings.h
index c2be4f026..3bc108115 100644
--- a/src/core/web_engine_settings.h
+++ b/src/core/web_engine_settings.h
@@ -79,7 +79,9 @@ public:
ScreenCaptureEnabled,
WebGLEnabled,
WebAudioEnabled,
- Accelerated2dCanvasEnabled
+ Accelerated2dCanvasEnabled,
+ AutoLoadIconsForPage,
+ TouchIconsEnabled
};
// Must match the values from the public API in qwebenginesettings.h.