Merge pull request #16686 from calixteman/bug1843255

[Editor] Always use the data url when loading a SVG in order to avoid CSP issue (bug 1843255)
This commit is contained in:
calixteman 2023-07-13 15:12:49 +02:00 committed by GitHub
commit 36fc34ebe8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -110,25 +110,20 @@ class ImageManager {
// Unfortunately, createImageBitmap doesn't work with SVG images. // Unfortunately, createImageBitmap doesn't work with SVG images.
// (see https://bugzilla.mozilla.org/1841972). // (see https://bugzilla.mozilla.org/1841972).
const fileReader = new FileReader(); const fileReader = new FileReader();
const dataUrlPromise = new Promise(resolve => { const imageElement = new Image();
fileReader.onload = () => { const imagePromise = new Promise((resolve, reject) => {
data.svgUrl = fileReader.result; imageElement.onload = () => {
resolve(); data.bitmap = imageElement;
};
});
fileReader.readAsDataURL(image);
const url = URL.createObjectURL(image);
image = new Image();
const imagePromise = new Promise(resolve => {
image.onload = () => {
URL.revokeObjectURL(url);
data.bitmap = image;
data.isSvg = true; data.isSvg = true;
resolve(); resolve();
}; };
fileReader.onload = () => {
imageElement.src = data.svgUrl = fileReader.result;
};
imageElement.onerror = fileReader.onerror = reject;
}); });
image.src = url; fileReader.readAsDataURL(image);
await Promise.all([imagePromise, dataUrlPromise]); await imagePromise;
} else { } else {
data.bitmap = await createImageBitmap(image); data.bitmap = await createImageBitmap(image);
} }