Merge remote-tracking branch 'origin/master' into custom

This commit is contained in:
roytam1 2020-12-21 15:13:46 +08:00
commit e075f1b671
21 changed files with 507 additions and 108 deletions

View file

@ -13,6 +13,7 @@ Components.utils.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
var params;
var cookieBundle;
var gDateService = null;
var showDetails = "";
var hideDetails = "";
@ -38,6 +39,14 @@ function onload()
document.getElementById("cancel").setAttribute("icon", "cancel");
document.getElementById("disclosureButton").setAttribute("icon", "properties");
// Initialize the date formatter
if (!gDateService) {
const nsScriptableDateFormat_CONTRACTID = "@mozilla.org/intl/scriptabledateformat;1";
const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat;
gDateService = Components.classes[nsScriptableDateFormat_CONTRACTID]
.getService(nsIScriptableDateFormat);
}
cookieBundle = document.getElementById("cookieBundle");
// cache strings
@ -174,12 +183,21 @@ function cookieDeny()
function GetExpiresString(secondsUntilExpires) {
if (secondsUntilExpires) {
var date = new Date(1000*secondsUntilExpires);
const locale = Components.classes["@mozilla.org/chrome/chrome-registry;1"]
.getService(Components.interfaces.nsIXULChromeRegistry)
.getSelectedLocale("global", true);
const dtOptions = { year: 'numeric', month: 'long', day: 'numeric',
hour: 'numeric', minute: 'numeric', second: 'numeric' };
return date.toLocaleString(locale, dtOptions);
// if a server manages to set a really long-lived cookie, the dateservice
// can't cope with it properly, so we'll return a descriptive string instead.
var expiry = "";
try {
expiry = gDateService.FormatDateTime("", gDateService.dateFormatLong,
gDateService.timeFormatSeconds,
date.getFullYear(), date.getMonth()+1,
date.getDate(), date.getHours(),
date.getMinutes(), date.getSeconds());
} catch (ex) {
// Expiry duration was out of range for the date formatter, meaning a silly long time.
expiry = cookieBundle.getString("expireInAVeryLongTime");
}
return expiry;
}
return cookieBundle.getString("expireAtEndOfSession");
}

View file

@ -717,6 +717,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) {