From 9e2ee1e66a8c13001d43ef7030564997286da6e2 Mon Sep 17 00:00:00 2001 From: mkljczk Date: Wed, 5 Mar 2025 16:07:07 +0100 Subject: [PATCH] Check for canvas extract permission when initializing favicon service Signed-off-by: mkljczk --- .../check-canvas-extract-permission.fix | 1 + .../favicon_service/favicon_service.js | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 changelog.d/check-canvas-extract-permission.fix diff --git a/changelog.d/check-canvas-extract-permission.fix b/changelog.d/check-canvas-extract-permission.fix new file mode 100644 index 000000000..9d4cfe36d --- /dev/null +++ b/changelog.d/check-canvas-extract-permission.fix @@ -0,0 +1 @@ +Check for canvas extract permission when initializing favicon service diff --git a/src/services/favicon_service/favicon_service.js b/src/services/favicon_service/favicon_service.js index df603bb46..9cbe65449 100644 --- a/src/services/favicon_service/favicon_service.js +++ b/src/services/favicon_service/favicon_service.js @@ -1,3 +1,19 @@ +const checkCanvasExtractPermission = () => { + const canvas = document.createElement('canvas'); + canvas.width = 1; + canvas.height = 1; + + const ctx = canvas.getContext('2d'); + if (!ctx) return false; + + ctx.fillStyle = '#0f161e'; + ctx.fillRect(0, 0, 1, 1); + + const { data } = ctx.getImageData(0, 0, 1, 1); + + return data.join(',') === '15,22,30,255'; +}; + const createFaviconService = () => { const favicons = [] const faviconWidth = 128 @@ -5,6 +21,8 @@ const createFaviconService = () => { const badgeRadius = 32 const initFaviconService = () => { + if (!checkCanvasExtractPermission()) return; + const nodes = document.querySelectorAll('link[rel="icon"]') nodes.forEach(favicon => { if (favicon) {