summaryrefslogtreecommitdiff
path: root/toolkit/components
diff options
context:
space:
mode:
authorMoonchild <moonchild@palemoon.org>2020-12-04 16:37:02 +0000
committerMoonchild <moonchild@palemoon.org>2020-12-04 16:37:02 +0000
commitfabbae0f71ecf993055f77250173a4f97cc7a90b (patch)
tree9534e4e21f347e08845b00c8ccec58208abbe659 /toolkit/components
parentce5ecb8dce7db288d3388e58119dd3695e55ef9d (diff)
downloaduxp-fabbae0f71ecf993055f77250173a4f97cc7a90b.tar.gz
Issue mcp-graveyard/UXP#1694 - Part 1: Use scriptabledateformat for the Cookie Accept dialog.
Diffstat (limited to 'toolkit/components')
-rw-r--r--toolkit/components/cookie/content/cookieAcceptDialog.js30
1 files changed, 24 insertions, 6 deletions
diff --git a/toolkit/components/cookie/content/cookieAcceptDialog.js b/toolkit/components/cookie/content/cookieAcceptDialog.js
index 4b322e95d9..5f5760305a 100644
--- a/toolkit/components/cookie/content/cookieAcceptDialog.js
+++ b/toolkit/components/cookie/content/cookieAcceptDialog.js
@@ -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");
}