From f6786881aabdffd77c82bebdd783ed022c89222b Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Tue, 11 Jan 2022 23:23:41 -0500 Subject: [PATCH] LibJS: Implement the ECMA-402 definition of DefaultTimeZone Simply defer to LibTimeZone to retrieve the system's current time zone. Also update some Temporal tests to explicitly set the time zone to UTC. --- Userland/Libraries/LibJS/Runtime/Temporal/TimeZone.cpp | 6 +++--- .../LibJS/Tests/builtins/Temporal/Now/Now.plainDate.js | 2 +- .../LibJS/Tests/builtins/Temporal/Now/Now.plainDateISO.js | 2 +- .../LibJS/Tests/builtins/Temporal/Now/Now.plainDateTime.js | 4 ++-- .../Tests/builtins/Temporal/Now/Now.plainDateTimeISO.js | 4 ++-- .../LibJS/Tests/builtins/Temporal/Now/Now.plainTimeISO.js | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/TimeZone.cpp b/Userland/Libraries/LibJS/Runtime/Temporal/TimeZone.cpp index 13b50f939d..b9dcc7b1e7 100644 --- a/Userland/Libraries/LibJS/Runtime/Temporal/TimeZone.cpp +++ b/Userland/Libraries/LibJS/Runtime/Temporal/TimeZone.cpp @@ -56,11 +56,11 @@ String canonicalize_time_zone_name(String const& time_zone) } // 11.1.3 DefaultTimeZone ( ), https://tc39.es/proposal-temporal/#sec-defaulttimezone -// NOTE: This is the minimum implementation of DefaultTimeZone, supporting only the "UTC" time zone. +// 15.1.3 DefaultTimeZone ( ), https://tc39.es/proposal-temporal/#sup-defaulttimezone String default_time_zone() { - // 1. Return "UTC". - return "UTC"; + // The DefaultTimeZone abstract operation returns a String value representing the valid (11.1.1) and canonicalized (11.1.2) time zone name for the host environment's current time zone. + return ::TimeZone::current_time_zone(); } // 11.6.1 ParseTemporalTimeZone ( string ), https://tc39.es/proposal-temporal/#sec-temporal-parsetemporaltimezone diff --git a/Userland/Libraries/LibJS/Tests/builtins/Temporal/Now/Now.plainDate.js b/Userland/Libraries/LibJS/Tests/builtins/Temporal/Now/Now.plainDate.js index 51092297ff..db7ce944ec 100644 --- a/Userland/Libraries/LibJS/Tests/builtins/Temporal/Now/Now.plainDate.js +++ b/Userland/Libraries/LibJS/Tests/builtins/Temporal/Now/Now.plainDate.js @@ -17,7 +17,7 @@ describe("correct behavior", () => { return 86400000000000; }, }; - const plainDate = Temporal.Now.plainDate(calendar); + const plainDate = Temporal.Now.plainDate(calendar, "UTC"); const plainDateWithOffset = Temporal.Now.plainDate(calendar, timeZone); if (plainDate.dayOfYear === plainDate.daysInYear) { expect(plainDateWithOffset.year).toBe(plainDate.year + 1); diff --git a/Userland/Libraries/LibJS/Tests/builtins/Temporal/Now/Now.plainDateISO.js b/Userland/Libraries/LibJS/Tests/builtins/Temporal/Now/Now.plainDateISO.js index c03eb4eccb..1d44a58719 100644 --- a/Userland/Libraries/LibJS/Tests/builtins/Temporal/Now/Now.plainDateISO.js +++ b/Userland/Libraries/LibJS/Tests/builtins/Temporal/Now/Now.plainDateISO.js @@ -15,7 +15,7 @@ describe("correct behavior", () => { return 86400000000000; }, }; - const plainDate = Temporal.Now.plainDateISO(); + const plainDate = Temporal.Now.plainDateISO("UTC"); const plainDateWithOffset = Temporal.Now.plainDateISO(timeZone); if (plainDate.dayOfYear === plainDate.daysInYear) { expect(plainDateWithOffset.year).toBe(plainDate.year + 1); diff --git a/Userland/Libraries/LibJS/Tests/builtins/Temporal/Now/Now.plainDateTime.js b/Userland/Libraries/LibJS/Tests/builtins/Temporal/Now/Now.plainDateTime.js index 8545e780eb..3fc3791b30 100644 --- a/Userland/Libraries/LibJS/Tests/builtins/Temporal/Now/Now.plainDateTime.js +++ b/Userland/Libraries/LibJS/Tests/builtins/Temporal/Now/Now.plainDateTime.js @@ -37,7 +37,7 @@ describe("correct behavior", () => { }, }; - const plainDateTime = Temporal.Now.plainDateTime(calendar); + const plainDateTime = Temporal.Now.plainDateTime(calendar, "UTC"); const plainDateTimeWithOffset = Temporal.Now.plainDateTime(calendar, timeZone); if (plainDateTime.year !== plainDateTimeWithOffset.year) return; @@ -58,7 +58,7 @@ describe("correct behavior", () => { }, }; - const plainDateTime = Temporal.Now.plainDateTime(calendar); + const plainDateTime = Temporal.Now.plainDateTime(calendar, "UTC"); const plainDateTimeWithOffset = Temporal.Now.plainDateTime(calendar, timeZone); if (plainDateTime.year !== plainDateTimeWithOffset.year) return; diff --git a/Userland/Libraries/LibJS/Tests/builtins/Temporal/Now/Now.plainDateTimeISO.js b/Userland/Libraries/LibJS/Tests/builtins/Temporal/Now/Now.plainDateTimeISO.js index 85853907aa..540bbd3c2c 100644 --- a/Userland/Libraries/LibJS/Tests/builtins/Temporal/Now/Now.plainDateTimeISO.js +++ b/Userland/Libraries/LibJS/Tests/builtins/Temporal/Now/Now.plainDateTimeISO.js @@ -35,7 +35,7 @@ describe("correct behavior", () => { }, }; - const plainDateTime = Temporal.Now.plainDateTimeISO(); + const plainDateTime = Temporal.Now.plainDateTimeISO("UTC"); const plainDateTimeWithOffset = Temporal.Now.plainDateTimeISO(timeZone); if (plainDateTime.year !== plainDateTimeWithOffset.year) return; @@ -55,7 +55,7 @@ describe("correct behavior", () => { }, }; - const plainDateTime = Temporal.Now.plainDateTimeISO(); + const plainDateTime = Temporal.Now.plainDateTimeISO("UTC"); const plainDateTimeWithOffset = Temporal.Now.plainDateTimeISO(timeZone); if (plainDateTime.year !== plainDateTimeWithOffset.year) return; diff --git a/Userland/Libraries/LibJS/Tests/builtins/Temporal/Now/Now.plainTimeISO.js b/Userland/Libraries/LibJS/Tests/builtins/Temporal/Now/Now.plainTimeISO.js index f4635b48e7..0199f65157 100644 --- a/Userland/Libraries/LibJS/Tests/builtins/Temporal/Now/Now.plainTimeISO.js +++ b/Userland/Libraries/LibJS/Tests/builtins/Temporal/Now/Now.plainTimeISO.js @@ -15,7 +15,7 @@ describe("correct behavior", () => { return 86400000000000; }, }; - const plainTime = Temporal.Now.plainTimeISO(); + const plainTime = Temporal.Now.plainTimeISO("UTC"); const plainTimeWithOffset = Temporal.Now.plainTimeISO(timeZone); // FIXME: Compare these in a sensible way });