diff options
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/favicon_manager.cpp | 16 | ||||
-rw-r--r-- | src/core/web_engine_settings.cpp | 2 | ||||
-rw-r--r-- | src/core/web_engine_settings.h | 4 |
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. |