From 7823ac1d4c35ec8055115cc7540b8e3befbf34c3 Mon Sep 17 00:00:00 2001 From: Fedor Date: Wed, 23 Dec 2020 03:02:51 +0200 Subject: [PATCH] [toolkit] Handle corner case confusion of downloaded files without extension. --- .../jsdownloads/src/DownloadIntegration.jsm | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/toolkit/components/jsdownloads/src/DownloadIntegration.jsm b/toolkit/components/jsdownloads/src/DownloadIntegration.jsm index 61ef02d26..21c9e8ac6 100644 --- a/toolkit/components/jsdownloads/src/DownloadIntegration.jsm +++ b/toolkit/components/jsdownloads/src/DownloadIntegration.jsm @@ -741,6 +741,22 @@ this.DownloadIntegration = { return; } +#ifdef XP_WIN + // When a file has no extension, and there's an executable file with the + // same name in the same folder, the Windows shell can get confused. + // For this reason, we show the file in the containing folder instead of + // trying to open it. + // We also don't trust mimeinfo; it could be a type we can forward to a + // system handler, but it could also be an executable type, and we + // don't have an exhaustive list with all of them. + if (!fileExtension) { + // We can't check for the existence of a same-name file with every + // possible executable extension, so this is a catch-all. + this.showContainingDirectory(aDownload.target.path); + return; + } +#endif + // No custom application chosen, let's launch the file with the default // handler. First, let's try to launch it through the MIME service. if (mimeInfo) {