Bug 543535 - Remove ISO8601DateUtils.jsm. r=mak
authorDão Gottwald <dao@mozilla.com>
Wed, 04 Oct 2017 12:34:11 +0200
changeset 427090 24427f9a00caf9b480f0c62fef3c7fcfe9f8fa92
parent 427089 904d12098f33904e642bab4089c17700cd116e8c
child 427091 9afb9d8c2842b75a9bc98ffb07c5475dcdddeb3d
push id97
push userfmarier@mozilla.com
push dateSat, 14 Oct 2017 01:12:59 +0000
reviewersmak
bugs543535
milestone58.0a1
Bug 543535 - Remove ISO8601DateUtils.jsm. r=mak MozReview-Commit-ID: 6k7sS6TUCYL
browser/base/content/test/static/browser_all_files_referenced.js
js/xpconnect/loader/ISO8601DateUtils.jsm
js/xpconnect/loader/moz.build
js/xpconnect/tests/unit/test_isModuleLoaded.js
--- a/browser/base/content/test/static/browser_all_files_referenced.js
+++ b/browser/base/content/test/static/browser_all_files_referenced.js
@@ -158,18 +158,16 @@ var whitelist = [
   {file: "chrome://mozapps/skin/plugins/pluginBlocked.png"},
   // Bug 1348558
   {file: "chrome://mozapps/skin/update/downloadButtons.png",
    platforms: ["linux"]},
   // Bug 1348559
   {file: "chrome://pippki/content/resetpassword.xul"},
   // Bug 1351078
   {file: "resource://gre/modules/Battery.jsm"},
-  // Bug 1351079
-  {file: "resource://gre/modules/ISO8601DateUtils.jsm"},
   // Bug 1337345
   {file: "resource://gre/modules/Manifest.jsm"},
   // Bug 1351097
   {file: "resource://gre/modules/accessibility/AccessFu.jsm"},
 ];
 
 whitelist = new Set(whitelist.filter(item =>
   ("isFromDevTools" in item) == isDevtools &&
deleted file mode 100644
--- a/js/xpconnect/loader/ISO8601DateUtils.jsm
+++ /dev/null
@@ -1,144 +0,0 @@
-/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-const HOURS_TO_MINUTES = 60;
-const MINUTES_TO_SECONDS = 60;
-const SECONDS_TO_MILLISECONDS = 1000;
-const MINUTES_TO_MILLISECONDS = MINUTES_TO_SECONDS * SECONDS_TO_MILLISECONDS;
-const HOURS_TO_MILLISECONDS = HOURS_TO_MINUTES * MINUTES_TO_MILLISECONDS;
-
-this.EXPORTED_SYMBOLS = ["ISO8601DateUtils"];
-
-debug("*** loading ISO8601DateUtils\n");
-
-this.ISO8601DateUtils = {
-
-  /**
-  * XXX Thunderbird's W3C-DTF function
-  *
-  * Converts a W3C-DTF (subset of ISO 8601) date string to a Javascript
-  * date object. W3C-DTF is described in this note:
-  * http://www.w3.org/TR/NOTE-datetime IETF is obtained via the Date
-  * object's toUTCString() method.  The object's toString() method is
-  * insufficient because it spells out timezones on Win32
-  * (f.e. "Pacific Standard Time" instead of "PST"), which Mail doesn't
-  * grok.  For info, see
-  * http://lxr.mozilla.org/mozilla/source/js/src/jsdate.c#1526.
-  */
-  parse: function ISO8601_parse(aDateString) {
-    var dateString = aDateString;
-    if (!dateString.match('-')) {
-      // Workaround for server sending
-      // dates such as: 20030530T11:18:50-08:00
-      // instead of: 2003-05-30T11:18:50-08:00
-      var year = dateString.slice(0, 4);
-      var month = dateString.slice(4, 6);
-      var rest = dateString.slice(6, dateString.length);
-      dateString = year + "-" + month + "-" + rest;
-    }
-
-    var parts = dateString.match(/(\d{4})(-(\d{2,3}))?(-(\d{2}))?(T(\d{2}):(\d{2})(:(\d{2})(\.(\d+))?)?(Z|([+-])(\d{2}):(\d{2}))?)?/);
-
-    // Here's an example of a W3C-DTF date string and what .match returns for it.
-    //
-    // date: 2003-05-30T11:18:50.345-08:00
-    // date.match returns array values:
-    //
-    //   0: 2003-05-30T11:18:50-08:00,
-    //   1: 2003,
-    //   2: -05,
-    //   3: 05,
-    //   4: -30,
-    //   5: 30,
-    //   6: T11:18:50-08:00,
-    //   7: 11,
-    //   8: 18,
-    //   9: :50,
-    //   10: 50,
-    //   11: .345,
-    //   12: 345,
-    //   13: -08:00,
-    //   14: -,
-    //   15: 08,
-    //   16: 00
-
-    // Create a Date object from the date parts.  Note that the Date
-    // object apparently can't deal with empty string parameters in lieu
-    // of numbers, so optional values (like hours, minutes, seconds, and
-    // milliseconds) must be forced to be numbers.
-    var date = new Date(parts[1], parts[3] - 1, parts[5], parts[7] || 0,
-      parts[8] || 0, parts[10] || 0, parts[12] || 0);
-
-    // We now have a value that the Date object thinks is in the local
-    // timezone but which actually represents the date/time in the
-    // remote timezone (f.e. the value was "10:00 EST", and we have
-    // converted it to "10:00 PST" instead of "07:00 PST").  We need to
-    // correct that.  To do so, we're going to add the offset between
-    // the remote timezone and UTC (to convert the value to UTC), then
-    // add the offset between UTC and the local timezone //(to convert
-    // the value to the local timezone).
-
-    // Ironically, W3C-DTF gives us the offset between UTC and the
-    // remote timezone rather than the other way around, while the
-    // getTimezoneOffset() method of a Date object gives us the offset
-    // between the local timezone and UTC rather than the other way
-    // around.  Both of these are the additive inverse (i.e. -x for x)
-    // of what we want, so we have to invert them to use them by
-    // multipying by -1 (f.e. if "the offset between UTC and the remote
-    // timezone" is -5 hours, then "the offset between the remote
-    // timezone and UTC" is -5*-1 = 5 hours).
-
-    // Note that if the timezone portion of the date/time string is
-    // absent (which violates W3C-DTF, although ISO 8601 allows it), we
-    // assume the value to be in UTC.
-
-    // The offset between the remote timezone and UTC in milliseconds.
-    var remoteToUTCOffset = 0;
-    if (parts[13] && parts[13] != "Z") {
-      var direction = (parts[14] == "+" ? 1 : -1);
-      if (parts[15])
-        remoteToUTCOffset += direction * parts[15] * HOURS_TO_MILLISECONDS;
-      if (parts[16])
-        remoteToUTCOffset += direction * parts[16] * MINUTES_TO_MILLISECONDS;
-    }
-    remoteToUTCOffset = remoteToUTCOffset * -1; // invert it
-
-    // The offset between UTC and the local timezone in milliseconds.
-    var UTCToLocalOffset = date.getTimezoneOffset() * MINUTES_TO_MILLISECONDS;
-    UTCToLocalOffset = UTCToLocalOffset * -1; // invert it
-    date.setTime(date.getTime() + remoteToUTCOffset + UTCToLocalOffset);
-
-    return date;
-  },
-
-  create: function ISO8601_create(aDate) {
-    function zeropad (s, l) {
-      s = s.toString(); // force it to a string
-      while (s.length < l) {
-        s = '0' + s;
-      }
-      return s;
-    }
-
-    var myDate;
-    // if d is a number, turn it into a date
-    if (typeof aDate == 'number') {
-      myDate = new Date()
-      myDate.setTime(aDate);
-    } else {
-      myDate = aDate;
-    }
-
-    // YYYY-MM-DDThh:mm:ssZ
-    var result = zeropad(myDate.getUTCFullYear (), 4) +
-                 zeropad(myDate.getUTCMonth () + 1, 2) +
-                 zeropad(myDate.getUTCDate (), 2) + 'T' +
-                 zeropad(myDate.getUTCHours (), 2) + ':' +
-                 zeropad(myDate.getUTCMinutes (), 2) + ':' +
-                 zeropad(myDate.getUTCSeconds (), 2) + 'Z';
-
-    return result;
-  }
-}
--- a/js/xpconnect/loader/moz.build
+++ b/js/xpconnect/loader/moz.build
@@ -34,17 +34,16 @@ EXPORTS.mozilla.dom += [
 ]
 
 EXPORTS.mozilla.loader += [
     'AutoMemMap.h',
     'ScriptCacheActors.h',
 ]
 
 EXTRA_JS_MODULES += [
-    'ISO8601DateUtils.jsm',
     'XPCOMUtils.jsm',
 ]
 
 FINAL_LIBRARY = 'xul'
 
 LOCAL_INCLUDES += [
     '../src',
     '../wrappers',
--- a/js/xpconnect/tests/unit/test_isModuleLoaded.js
+++ b/js/xpconnect/tests/unit/test_isModuleLoaded.js
@@ -1,24 +1,24 @@
 const Cu = Components.utils;
 
 function run_test() {
   // Existing module.
-  do_check_true(!Cu.isModuleLoaded("resource://gre/modules/ISO8601DateUtils.jsm"),
+  do_check_true(!Cu.isModuleLoaded("resource://gre/modules/NetUtil.jsm"),
                 "isModuleLoaded returned correct value for non-loaded module");
-  Cu.import("resource://gre/modules/ISO8601DateUtils.jsm");
-  do_check_true(Cu.isModuleLoaded("resource://gre/modules/ISO8601DateUtils.jsm"),
+  Cu.import("resource://gre/modules/NetUtil.jsm");
+  do_check_true(Cu.isModuleLoaded("resource://gre/modules/NetUtil.jsm"),
                 "isModuleLoaded returned true after loading that module");
-  Cu.unload("resource://gre/modules/ISO8601DateUtils.jsm");
-  do_check_true(!Cu.isModuleLoaded("resource://gre/modules/ISO8601DateUtils.jsm"),
+  Cu.unload("resource://gre/modules/NetUtil.jsm");
+  do_check_true(!Cu.isModuleLoaded("resource://gre/modules/NetUtil.jsm"),
                 "isModuleLoaded returned false after unloading that module");
 
   // Non-existing module
-  do_check_true(!Cu.isModuleLoaded("resource://gre/modules/ISO8601DateUtils1.jsm"),
+  do_check_true(!Cu.isModuleLoaded("resource://gre/modules/non-existing-module.jsm"),
                 "isModuleLoaded returned correct value for non-loaded module");
   try {
-    Cu.import("resource://gre/modules/ISO8601DateUtils1.jsm");
+    Cu.import("resource://gre/modules/non-existing-module.jsm");
     do_check_true(false,
                   "Should have thrown while trying to load a non existing file");
   } catch (ex) {}
-  do_check_true(!Cu.isModuleLoaded("resource://gre/modules/ISO8601DateUtils1.jsm"),
+  do_check_true(!Cu.isModuleLoaded("resource://gre/modules/non-existing-module.jsm"),
                 "isModuleLoaded returned correct value for non-loaded module");
 }