From 5d7b5758730d5cdf6f19446e1e9be60f7aaf68a2 Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto Date: Thu, 7 Mar 2024 11:28:07 +0100 Subject: [PATCH 1/5] fix: createImageBitmap throws DOMException if source is 0 --- .../rrweb/src/record/observers/canvas/canvas-manager.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/rrweb/src/record/observers/canvas/canvas-manager.ts b/packages/rrweb/src/record/observers/canvas/canvas-manager.ts index a8e06e468b..d46cf89a6a 100644 --- a/packages/rrweb/src/record/observers/canvas/canvas-manager.ts +++ b/packages/rrweb/src/record/observers/canvas/canvas-manager.ts @@ -207,6 +207,12 @@ export class CanvasManager { context.clear(context.COLOR_BUFFER_BIT); } } + + // The browser throws if the canvas is 0 in size + // Uncaught (in promise) DOMException: Failed to execute 'createImageBitmap' on 'Window': The source image width is 0. + // Assuming the same happens with height + if (canvas.width === 0 || canvas.height === 0) return; + const bitmap = await createImageBitmap(canvas); worker.postMessage( { From d860a4b5338385254d316ad5d82ac10f681de40d Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto Date: Fri, 15 Mar 2024 14:55:14 +0100 Subject: [PATCH 2/5] code review --- .../src/record/observers/canvas/canvas-manager.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/rrweb/src/record/observers/canvas/canvas-manager.ts b/packages/rrweb/src/record/observers/canvas/canvas-manager.ts index d46cf89a6a..d4c1f06a42 100644 --- a/packages/rrweb/src/record/observers/canvas/canvas-manager.ts +++ b/packages/rrweb/src/record/observers/canvas/canvas-manager.ts @@ -184,6 +184,12 @@ export class CanvasManager { .forEach(async (canvas: HTMLCanvasElement) => { const id = this.mirror.getId(canvas); if (snapshotInProgressMap.get(id)) return; + + // The browser throws if the canvas is 0 in size + // Uncaught (in promise) DOMException: Failed to execute 'createImageBitmap' on 'Window': The source image width is 0. + // Assuming the same happens with height + if (canvas.width === 0 || canvas.height === 0) return; + snapshotInProgressMap.set(id, true); if (['webgl', 'webgl2'].includes((canvas as ICanvas).__context)) { // if the canvas hasn't been modified recently, @@ -208,11 +214,6 @@ export class CanvasManager { } } - // The browser throws if the canvas is 0 in size - // Uncaught (in promise) DOMException: Failed to execute 'createImageBitmap' on 'Window': The source image width is 0. - // Assuming the same happens with height - if (canvas.width === 0 || canvas.height === 0) return; - const bitmap = await createImageBitmap(canvas); worker.postMessage( { From 10334d837b8fc99b8241f5ac63ce0ff7bc63bc74 Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto Date: Fri, 15 Mar 2024 14:55:38 +0100 Subject: [PATCH 3/5] fix --- packages/rrweb/src/record/observers/canvas/canvas-manager.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/rrweb/src/record/observers/canvas/canvas-manager.ts b/packages/rrweb/src/record/observers/canvas/canvas-manager.ts index d4c1f06a42..f825877f69 100644 --- a/packages/rrweb/src/record/observers/canvas/canvas-manager.ts +++ b/packages/rrweb/src/record/observers/canvas/canvas-manager.ts @@ -213,7 +213,6 @@ export class CanvasManager { context.clear(context.COLOR_BUFFER_BIT); } } - const bitmap = await createImageBitmap(canvas); worker.postMessage( { From ece94c9c9fd8a7f5c4b72b234a94fdfaaac1c774 Mon Sep 17 00:00:00 2001 From: Justin Halsall Date: Fri, 5 Apr 2024 12:25:59 +0200 Subject: [PATCH 4/5] Create breezy-cats-heal.md --- .changeset/breezy-cats-heal.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/breezy-cats-heal.md diff --git a/.changeset/breezy-cats-heal.md b/.changeset/breezy-cats-heal.md new file mode 100644 index 0000000000..e190c40354 --- /dev/null +++ b/.changeset/breezy-cats-heal.md @@ -0,0 +1,5 @@ +--- +"rrweb": patch +--- + +fix: createImageBitmap throws DOMException if source is 0 width or height From d4bbe49a58d3c47ab7f938151921affd45a8cb10 Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto Date: Fri, 5 Apr 2024 13:12:41 +0200 Subject: [PATCH 5/5] fix format --- .changeset/breezy-cats-heal.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/breezy-cats-heal.md b/.changeset/breezy-cats-heal.md index e190c40354..6e1bc2fa46 100644 --- a/.changeset/breezy-cats-heal.md +++ b/.changeset/breezy-cats-heal.md @@ -1,5 +1,5 @@ --- -"rrweb": patch +'rrweb': patch --- fix: createImageBitmap throws DOMException if source is 0 width or height