From 29d448087052413bd746a5f130e323c33c04241a Mon Sep 17 00:00:00 2001 From: Justin Halsall Date: Fri, 15 Dec 2023 15:38:01 +0100 Subject: [PATCH] Drop support for caching xlink:href attributes xlink:href is deprecated Most modern browsers rewrite `xlink:href` to `href` which is currently supported Tested in Firefox, Safari & Chrome --- packages/rrweb-snapshot/src/utils.ts | 6 +++--- packages/rrweb/src/replay/asset-manager/index.ts | 1 - packages/rrweb/test/record/asset.test.ts | 9 +++------ 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/packages/rrweb-snapshot/src/utils.ts b/packages/rrweb-snapshot/src/utils.ts index b468a9f05f..7a647cfb3d 100644 --- a/packages/rrweb-snapshot/src/utils.ts +++ b/packages/rrweb-snapshot/src/utils.ts @@ -366,9 +366,9 @@ export const CACHEABLE_ELEMENT_ATTRIBUTE_COMBINATIONS = new Map([ ['TH', new Set(['background'])], ['TBODY', new Set(['background'])], ['THEAD', new Set(['background'])], - ['image', new Set(['href', 'xlink:href'])], - ['feImage', new Set(['href', 'xlink:href'])], - ['cursor', new Set(['href', 'xlink:href'])], + ['image', new Set(['href'])], + ['feImage', new Set(['href'])], + ['cursor', new Set(['href'])], ]); export function isAttributeCacheable(n: Element, attribute: string): boolean { diff --git a/packages/rrweb/src/replay/asset-manager/index.ts b/packages/rrweb/src/replay/asset-manager/index.ts index d59a09d0e9..55753d4cb2 100644 --- a/packages/rrweb/src/replay/asset-manager/index.ts +++ b/packages/rrweb/src/replay/asset-manager/index.ts @@ -224,7 +224,6 @@ export default class AssetManager implements RebuildAssetManagerInterface { if (!attributeUnchanged) return; // attribute was changed since we started loading the asset - // TODO: use setAttributeNS for svg, see rrdom's diff for example node.setAttribute(attribute, status.url); }), ); diff --git a/packages/rrweb/test/record/asset.test.ts b/packages/rrweb/test/record/asset.test.ts index 8f87d11265..f6c41d75ca 100644 --- a/packages/rrweb/test/record/asset.test.ts +++ b/packages/rrweb/test/record/asset.test.ts @@ -603,13 +603,13 @@ describe('asset caching', function (this: ISuite) { - + - + - + @@ -645,9 +645,6 @@ describe('asset caching', function (this: ISuite) { '{SERVER_URL}/html/assets/robot.png?svg', '{SERVER_URL}/html/assets/robot.png?svg2', '{SERVER_URL}/html/assets/robot.png?svg3', - '{SERVER_URL}/html/assets/robot.png?svg4', - '{SERVER_URL}/html/assets/robot.png?svg5', - '{SERVER_URL}/html/assets/robot.png?svg6', '{SERVER_URL}/html/assets/robot.png?table', '{SERVER_URL}/html/assets/robot.png?td', ].forEach((u) => {