From 20646fa1f9b4016129573e01c252ea8b8c28de00 Mon Sep 17 00:00:00 2001 From: Devin Binnie <52460000+devinbinnie@users.noreply.github.com> Date: Fri, 8 May 2026 08:55:36 -0400 Subject: [PATCH] [MM-68690] Null check on missing headers when loading resources (#3812) (cherry picked from commit 9538d4d18863a9aae47181911c7c2f5b1f372a5b) --- src/main/downloadsManager.test.js | 14 ++++++++++++++ src/main/downloadsManager.ts | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/downloadsManager.test.js b/src/main/downloadsManager.test.js index 4cb5730748c..3d3b80400ac 100644 --- a/src/main/downloadsManager.test.js +++ b/src/main/downloadsManager.test.js @@ -180,6 +180,20 @@ describe('main/downloadsManager', () => { expect(dl.fileSizes.get('file.txt')).toBe('4242'); }); + it('MM-68690 - should not throw when content-disposition header is missing', () => { + const dl = new DownloadsManager({}); + const details = { + responseHeaders: { + 'content-encoding': ['gzip'], + 'x-uncompressed-content-length': ['4242'], + }, + }; + const cb = jest.fn(); + expect(() => dl.webRequestOnHeadersReceivedHandler(details, cb)).not.toThrow(); + expect(cb).toHaveBeenCalledWith({}); + expect(dl.fileSizes.size).toBe(0); + }); + it('should clear the downloads list', () => { const dl = new DownloadsManager(JSON.stringify(downloadsJson)); dl.clearDownloadsDropDown(); diff --git a/src/main/downloadsManager.ts b/src/main/downloadsManager.ts index abdb14f983b..6a1b2a65c92 100644 --- a/src/main/downloadsManager.ts +++ b/src/main/downloadsManager.ts @@ -150,7 +150,7 @@ export class DownloadsManager extends JsonFileManager { webRequestOnHeadersReceivedHandler = (details: Electron.OnHeadersReceivedListenerDetails, cb: (headersReceivedResponse: Electron.HeadersReceivedResponse) => void) => { const headers = details.responseHeaders ?? {}; - if (headers?.['content-encoding']?.includes('gzip') && headers?.['x-uncompressed-content-length'] && headers?.['content-disposition'].join(';')?.includes('filename=')) { + if (headers?.['content-encoding']?.includes('gzip') && headers?.['x-uncompressed-content-length'] && headers?.['content-disposition']?.join?.(';')?.includes('filename=')) { const filename = readFilenameFromContentDispositionHeader(headers['content-disposition']); const fileSize = headers['x-uncompressed-content-length']?.[0] || '0'; if (filename && (!this.fileSizes.has(filename) || this.fileSizes.get(filename)?.toString() !== fileSize)) {