Issue #1694 - Part 1: Use scriptabledateformat for the Cookie Accept dialog.

This commit is contained in:
Moonchild 2020-12-04 16:37:02 +00:00 committed by roytam1
commit b6354a7a37
2 changed files with 26 additions and 6 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

@ -7,6 +7,8 @@ domainColon=Domain:
forSecureOnly=Encrypted connections only
forAnyConnection=Any type of connection
expireAtEndOfSession=At end of session
# LOCALIZATION NOTE (expireInAVeryLongTime) This string is used if a cookie won't expire for a literal life age and then some.
expireInAVeryLongTime=Not in your lifetime
showDetails=Show Details
hideDetails=Hide Details