From 4a81f2cf5e693f5cbd8b3cdadd1e34ecd9efdf3f Mon Sep 17 00:00:00 2001 From: "lauren n. liberda" Date: Mon, 25 Mar 2024 20:04:58 +0100 Subject: [PATCH] core(network-request): recognize zstd compression algorithm (#15883) --- core/lib/network-request.js | 2 +- core/test/lib/network-request-test.js | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/core/lib/network-request.js b/core/lib/network-request.js index da45a527aa85..dd434495c3be 100644 --- a/core/lib/network-request.js +++ b/core/lib/network-request.js @@ -634,7 +634,7 @@ class NetworkRequest { /^content-encoding$/i, /^x-content-encoding-over-network$/i, ]; - const compressionTypes = ['gzip', 'br', 'deflate']; + const compressionTypes = ['gzip', 'br', 'deflate', 'zstd']; return record.responseHeaders.some(header => patterns.some(p => header.name.match(p)) && compressionTypes.includes(header.value) ); diff --git a/core/test/lib/network-request-test.js b/core/test/lib/network-request-test.js index cc25dd691889..2a48e292621f 100644 --- a/core/test/lib/network-request-test.js +++ b/core/test/lib/network-request-test.js @@ -389,4 +389,22 @@ describe('NetworkRequest', () => { })).toBe(false); }); }); + + describe('#isContentEncoded', () => { + const isContentEncoded = NetworkRequest.isContentEncoded; + + it('correctly identifies no compression', () => { + expect(isContentEncoded({responseHeaders: []})).toBe(false); + }); + it('correctly identifies brotli', () => { + expect(isContentEncoded({ + responseHeaders: [{name: 'content-encoding', value: 'br'}], + })).toBe(true); + }); + it('correctly identifies zstd', () => { + expect(isContentEncoded({ + responseHeaders: [{name: 'content-encoding', value: 'zstd'}], + })).toBe(true); + }); + }); });