tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

timezone.js (1286B)


      1 // |jit-test| tz-pacific; skip-if: typeof Intl === 'undefined'
      2 
      3 let tzRE = /\(([^\)]+)\)/;
      4 
      5 const SPOOFED_TZ_NAME = "Atlantic/Reykjavik";
      6 const SPOOFED_TZ_GENERIC = "Greenwich Mean Time";
      7 
      8 // Make sure we aren't already running with spoofed TZ
      9 let original = new Date(0);
     10 assertEq(tzRE.exec(original.toString())[1], "Pacific Standard Time");
     11 
     12 let originalDT = Intl.DateTimeFormat("en-US", {
     13  dateStyle: "full",
     14  timeStyle: "full",
     15 });
     16 assertEq(originalDT.format(original).endsWith("Pacific Standard Time"), true);
     17 assertEq(originalDT.resolvedOptions().timeZone, "America/Los_Angeles");
     18 
     19 let global = newGlobal({timeZone: SPOOFED_TZ_NAME});
     20 
     21 let date = new global.Date();
     22 assertEq(tzRE.exec(date.toString())[1], SPOOFED_TZ_GENERIC);
     23 assertEq(tzRE.exec(date.toTimeString())[1], SPOOFED_TZ_GENERIC);
     24 assertEq(date.getFullYear(), date.getUTCFullYear());
     25 assertEq(date.getMonth(), date.getUTCMonth());
     26 assertEq(date.getDate(), date.getUTCDate());
     27 assertEq(date.getDay(), date.getUTCDay());
     28 assertEq(date.getHours(),date.getUTCHours());
     29 assertEq(date.getTimezoneOffset(), 0);
     30 
     31 let dt = global.Intl.DateTimeFormat("en-US", {
     32  dateStyle: "full",
     33  timeStyle: "full",
     34 });
     35 assertEq(dt.format(date).endsWith(SPOOFED_TZ_GENERIC), true);
     36 assertEq(dt.resolvedOptions().timeZone, SPOOFED_TZ_NAME);