Skip to content

Commit

Permalink
Add timezone spoofing #5
Browse files Browse the repository at this point in the history
Adds "timezone" property to set a custom tz identifier (ex: "America/Chicago").
Also changes Date() properties to return the local time.
  • Loading branch information
daijro committed Sep 23, 2024
1 parent bf20ab8 commit 8385561
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 1 deletion.
49 changes: 49 additions & 0 deletions patches/timezone-spoofing.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
diff --git a/intl/components/moz.build b/intl/components/moz.build
index b0af60b999..28c221136e 100644
--- a/intl/components/moz.build
+++ b/intl/components/moz.build
@@ -89,3 +89,6 @@ if CONFIG["MOZ_ICU4X"]:
DEFINES["MOZ_HAS_MOZGLUE"] = True

Library("intlcomponents")
+
+# DOM Mask
+LOCAL_INCLUDES += ["/camoucfg"]
\ No newline at end of file
diff --git a/intl/components/src/TimeZone.cpp b/intl/components/src/TimeZone.cpp
index 5b09dfdcc5..98a78b33cc 100644
--- a/intl/components/src/TimeZone.cpp
+++ b/intl/components/src/TimeZone.cpp
@@ -8,7 +8,8 @@

#include <algorithm>
#include <string_view>
-
+#include "unicode/unistr.h"
+#include "MaskConfig.hpp"
#include "unicode/uenum.h"
#if MOZ_INTL_USE_ICU_CPP_TIMEZONE
# include "unicode/basictz.h"
@@ -22,7 +23,21 @@ Result<UniquePtr<TimeZone>, ICUError> TimeZone::TryCreate(
Maybe<Span<const char16_t>> aTimeZoneOverride) {
const UChar* zoneID = nullptr;
int32_t zoneIDLen = 0;
- if (aTimeZoneOverride) {
+
+ if (auto value = MaskConfig::GetString("timezone")) {
+ std::string camouTimeZone = value.value();
+
+ // Because we don't have access to NS_ConvertUTF8toUTF16 here,
+ // convert UTF-8 to UTF-16 using ICU's UnicodeString
+ icu::UnicodeString uniStr = icu::UnicodeString::fromUTF8(camouTimeZone);
+
+ if (uniStr.isBogus()) {
+ return Err(ICUError::InternalError);
+ }
+
+ zoneIDLen = uniStr.length();
+ zoneID = uniStr.getBuffer();
+ } else if (aTimeZoneOverride) {
zoneIDLen = static_cast<int32_t>(aTimeZoneOverride->Length());
zoneID = aTimeZoneOverride->Elements();
}
3 changes: 2 additions & 1 deletion settings/properties.json
Original file line number Diff line number Diff line change
Expand Up @@ -57,5 +57,6 @@
{ "property": "fonts", "type": "array" },
{ "property": "geolocation:latitude", "type": "double" },
{ "property": "geolocation:longitude", "type": "double" },
{ "property": "geolocation:accuracy", "type": "double" }
{ "property": "geolocation:accuracy", "type": "double" },
{ "property": "timezone", "type": "str" }
]

0 comments on commit 8385561

Please sign in to comment.