diff options
author | Moonchild <moonchild@palemoon.org> | 2020-12-04 16:37:02 +0000 |
---|---|---|
committer | Moonchild <moonchild@palemoon.org> | 2020-12-04 16:37:02 +0000 |
commit | 16a1ff22a39550b11fb8d13e8d40aba0d973535b (patch) | |
tree | 9534e4e21f347e08845b00c8ccec58208abbe659 /toolkit/components | |
parent | fd576c4270d288a3b2aa3e091b92fb3b0ae9ed66 (diff) | |
download | uxp-16a1ff22a39550b11fb8d13e8d40aba0d973535b.tar.gz |
Issue #1694 - Part 1: Use scriptabledateformat for the Cookie Accept dialog.
Diffstat (limited to 'toolkit/components')
-rw-r--r-- | toolkit/components/cookie/content/cookieAcceptDialog.js | 30 |
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"); } |