From ed42577d9ccd8bdfb8e66ef1a8a104b65cb35cdb Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Thu, 13 Jul 2023 13:03:42 +0200 Subject: [PATCH] [Editor] Always use the data url when loading a SVG in order to avoid CSP issue (bug 1843255) --- src/display/editor/tools.js | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/src/display/editor/tools.js b/src/display/editor/tools.js index d7733ffce..58d209d04 100644 --- a/src/display/editor/tools.js +++ b/src/display/editor/tools.js @@ -110,25 +110,20 @@ class ImageManager { // Unfortunately, createImageBitmap doesn't work with SVG images. // (see https://bugzilla.mozilla.org/1841972). const fileReader = new FileReader(); - const dataUrlPromise = new Promise(resolve => { - fileReader.onload = () => { - data.svgUrl = fileReader.result; - resolve(); - }; - }); - fileReader.readAsDataURL(image); - const url = URL.createObjectURL(image); - image = new Image(); - const imagePromise = new Promise(resolve => { - image.onload = () => { - URL.revokeObjectURL(url); - data.bitmap = image; + const imageElement = new Image(); + const imagePromise = new Promise((resolve, reject) => { + imageElement.onload = () => { + data.bitmap = imageElement; data.isSvg = true; resolve(); }; + fileReader.onload = () => { + imageElement.src = data.svgUrl = fileReader.result; + }; + imageElement.onerror = fileReader.onerror = reject; }); - image.src = url; - await Promise.all([imagePromise, dataUrlPromise]); + fileReader.readAsDataURL(image); + await imagePromise; } else { data.bitmap = await createImageBitmap(image); }