Prevent suppressing executable warnings using the "don't ask me this again" checkbox.

A hidden preference matching the behavior of "browser.download.manager.alertOnEXEOpen" is kept, but is renamed in order to recover cases where the checkbox was used accidentally.
While there, simplify the `confirmLaunchExecutable` function by converting from promises to async function.
Since Basilisk moved this prompting to toolkit, we also clean up some unused duplicate strings from application/basilisk while we're there.

This resolves #581
This commit is contained in:
wolfbeast 2018-07-02 19:05:56 +02:00 • committed by Roy Tam
commit ad2c18b0f2
6 changed files with 25 additions and 53 deletions

View file

@ -77,7 +77,7 @@ const nsIDM = Ci.nsIDownloadManager;
const kDownloadsStringBundleUrl =
"chrome://browser/locale/downloads/downloads.properties";
const kPrefBdmAlertOnExeOpen = "browser.download.manager.alertOnEXEOpen";
const kPrefConfirmOpenExe = "browser.download.confirmOpenExecutable";
const kDownloadsStringsRequiringFormatting = {
sizeWithUnits: true,
@ -530,8 +530,10 @@ this.DownloadsCommon = {
if (aFile.isExecutable() && !isWindowsExe) {
let showAlert = true;
try {
showAlert = Services.prefs.getBoolPref(kPrefBdmAlertOnExeOpen);
} catch (ex) { }
showAlert = Services.prefs.getBoolPref(kPrefConfirmOpenExe);
} catch (ex) {
// If the preference does not exist, continue with the prompt.
}
if (showAlert) {
let name = aFile.leafName;
@ -539,18 +541,11 @@ this.DownloadsCommon = {
DownloadsCommon.strings.fileExecutableSecurityWarning(name, name);
let title =
DownloadsCommon.strings.fileExecutableSecurityWarningTitle;
let dontAsk =
DownloadsCommon.strings.fileExecutableSecurityWarningDontAsk;
let checkbox = { value: false };
let open = Services.prompt.confirmCheck(aOwnerWindow, title, message,
dontAsk, checkbox);
let open = Services.prompt.confirm(aOwnerWindow, title, message);
if (!open) {
return;
}
Services.prefs.setBoolPref(kPrefBdmAlertOnExeOpen,
!checkbox.value);
}
}