* fix: migrate Services import to lazy loading pattern and disable dark theme to prevent XPIProvider crash
- Changed Services from ChromeUtils.defineLazyGetter to ChromeUtils.defineESModuleGetters with lazy object
- Updated all Services references to lazy.Services throughout Juggler.js
- Added re-copying of additions and settings after git reset in patch.py
- Removed juggler components.conf copy logic from patch.py (now handled by copy-additions.sh)
- Disabled dark theme preference in camoufox.cfg to
* fix: revert Services import to direct ESM import and re-enable dark theme preference
- Changed Services from lazy loading pattern back to direct ChromeUtils.importESModule()
- Removed lazy object wrapper and ChromeUtils.defineESModuleGetters usage
- Updated all lazy.Services references to Services throughout Juggler.js
- Re-enabled dark theme preference in camoufox.cfg (extensions.activeThemeID)
- Removed XPIProvider crash prevention comment as issue is resolved
* fix: remove redundant Services import as it's available globally in XPCOM component context
- Removed ChromeUtils.importESModule imports for XPCOMUtils, ComponentUtils, and Services
- Added comment explaining Services is available as a global in XPCOM component context
- Services.scriptloader.loadSubScript call continues to work with global Services reference
* fix: correct JugglerFrameChild.sys.mjs path by removing duplicate content directory
- Changed esModuleURI from 'chrome://juggler/content/content/JugglerFrameChild.sys.mjs' to 'chrome://juggler/content/JugglerFrameChild.sys.mjs'
- Removes erroneous duplicate 'content' directory in the child actor module path
* fix: add ESM module entries and correct JugglerFrameChild.jsm path in jar.mn
- Added JugglerFrameParent.sys.mjs entry to juggler.jar manifest
- Added JugglerFrameChild.sys.mjs entry to juggler.jar manifest
- Fixed JugglerFrameChild.jsm path from 'content/content/JugglerFrameChild.jsm' to 'content/JugglerFrameChild.jsm' removing duplicate content directory
* fix: remove redundant Services lazy getter as it's available globally in content process context
- Removed ChromeUtils.defineLazyGetter for Services in main.js
- Added comment explaining Services is available as a global
- Services reference continues to work with global availability in content process
---------
Co-authored-by: Nirupam Bhowmick <48842933+heydryft@users.noreply.github.com>
- Replaced macos-sandbox-init-fix patch with macos-sandbox-crash-fix patch
- Changed MOZ_CRASH to NS_WARNING when GetRepoDir() or GetObjDir() fail in CacheSandboxParams()
- Made testingReadPath3 and testingReadPath4 optional - only set if directory paths are successfully retrieved
- Addresses root cause: cross-compiled builds may not populate development-specific plist keys
- Updated README
- Added null safety check in ContentParent::AppendSandboxParams() before accessing sMacSandboxParams
- Initializes sMacSandboxParams if unexpectedly null during content process launch
- Added NS_WARNING to log when fallback initialization is triggered
- Prevents KERN_INVALID_ADDRESS segfault at 0x0000000000000000 on macOS
- Created macos-sandbox-init-fix.README.md documenting the fix purpose, problem, solution
- Created JugglerFrameParent.sys.mjs with ESM exports replacing .jsm version
- Created JugglerFrameChild.sys.mjs with ESM exports replacing .jsm version
- Updated Juggler.js to reference .sys.mjs files instead of .jsm files for both parent and child actors
- Changed ChromeUtils.import() to ChromeUtils.importESModule() in both actor files
- Replaced EXPORTED_SYMBOLS with export keyword for JugglerFrameParent and Juggler
- Deleted TASK.md containing patch update task list and progress tracking
- File documented migration from Firefox 135.0.1 to 147.0b3
- Tracked 45 total patches with 25 broken and 20 working patches
- Included upstream sync details for LibreWolf and Playwright patches
- Contained execution plan and time estimates for patch updates
- Removed LibreWolf patch header comments including author, description, last updated date, and license information
- Removed explanatory comments about --with-app-name=librewolf issue
- Updated diff context lines to match Firefox 146 codebase (line numbers changed from @@ -31,7 +31,7 @@ to @@ -23,7 +23,7 @@)
- Added conditional copy for Assets.car file in macOS build process using test comman
- Converted ChannelEventSink from JSM to ESM (.sys.mjs)
- Changed ChromeUtils.import() to ChromeUtils.importESModule() across all modules
- Updated .jsm file extensions to .sys.mjs for system module imports
- Replaced EXPORTED_SYMBOLS with export keyword in Helper.js, NetworkObserver.js, SimpleChannel.js, TargetRegistry.js, and JugglerFrameParent.jsm
- Updated EventEmitter import from resource://gre/modules/EventEmitter.jsm to .
- Changed ChromeUtils.import() to ChromeUtils.importESModule() for all module imports
- Updated .jsm file extensions to .sys.mjs for system modules
- Changed moduleURI to esModuleURI in JugglerFrame actor configuration
- Replaced EXPORTED_SYMBOLS with export keyword for Juggler and JugglerFactory
- Updated components.conf to use "esModule" instead of "jsm"
- Added SimpleChannel.js preload using Services.scriptloader.loadSubScript
-
- Changed Juggler component registration from "type": "nsICommandLineHandler" to "constructor": "JugglerFactory"
- Required for updated component registration system in Firefox 146
- Removed Document* GetDocument() const override declaration from WorkerPrivate class
- Removed blank line following the declaration
- Required for font fingerprinting protection to work with updated WorkerPrivate interface in Firefox 146
- Added mozilla/dom/BrowsingContext.h include
- Added mozilla/dom/Document.h include
- Added nsDocShell.h include
- Added nsPIDOMWindow.h include
- Required for font fingerprinting protection functionality in Firefox 146
- Added pure virtual GetDocument() method to FontVisibilityProvider base class
- Implemented GetDocument() in OffscreenCanvas returning owner window's document
- Implemented GetDocument() in nsPresContext returning Document()
- Changed WorkerPrivate::GetDocument() to override keyword
- Added GetDocument() to FONT_VISIBILITY_PROVIDER_OVERRIDES macro
- Required for font fingerprinting protection to
- Updated unused result variable handling from Unused << rv to (void)rv
- Consistent with Firefox 146 codebase style for suppressing unused variable warnings
- Changed mButtons and mClickCount to use Construct() wrapper for optional field initialization
- Removed mozilla/Unused.h include from nsExternalHelperAppService.cpp
- Changed Unused << rv to (void)rv for unused variable suppression
- Required for compatibility with updated SynthesizeMouseEventData structure in Firefox 146
- Implemented SendJugglerMouseEvent using SynthesizeMouseEvent API instead of removed SendMouseEventCommon
- Added widget and presShell retrieval with null checks
- Populated SynthesizeMouseEventData and SynthesizeMouseEventOptions structures
- Added minimal Location class stub in third_party/libwebrtc/api/location.h
- Removed verbose comments from Location stub implementation
- Added isPWDragEventMessage boolean flag declaration in nsContentUtils.cpp
- Added handling for custom Playwright drag event messages (pwdragstart, pwdragover, pwdrop)
- Updated SendJugglerMouseEvent to return NS_ERROR_NOT_IMPLEMENTED with TODO comment
- Removed SendMouseEventCommon call that is not available in Firefox 146
- Added jugglerEventId parameter to mouseOrPointerEvent initialization
- Added mozilla/Unused.h include alongside mozilla/ErrorNames.h
- Required for Unused<> template usage in download handling code
- Added blank line after includes for consistent formatting
- Added rtc namespace alias pointing to webrtc namespace in ScreencastEncoder.cpp
- Added gfxPlatform.h include to nsScreencastService.cpp
- Required for compatibility with WebRTC API changes and platform graphics functionality
- Added mozilla/BasePrincipal.h include alongside existing mozilla/OriginAttributes.h
- Required for BasePrincipal::Cast() usage in font fingerprinting protection code
- Resolves missing symbol errors when accessing principal casting functionality
- Updated line numbers in config.patch for browser/installer/package-manifest.in (260→250, 228→235)
- Updated line numbers in fingerprint-injection.patch across multiple files
- Changed nsScreen::GetAvailRect() to use GetTopWindowInnerRectForRFP() instead of GetWindowInnerRect()
- Updated line numbers in rust-gentoo-musl.patch (404→412)
- Adjusted context lines to match Firefox 146 codebase structure
- Added --binary flag to preserve line endings (CRLF vs LF)
- Removed -F3 (fuzz factor) flag
- Helps with cross-platform patching where line endings may differ
- Changed --fuzz=3 to -F3 for consistent short option format
- Added -l flag to ignore whitespace differences when applying patches
- Maintains --forward flag to skip already applied patches
- Added rtc namespace alias pointing to webrtc namespace
- Required for compatibility with code using rtc:: prefix for WebRTC types
- Placed after includes and before class declarations
- Added api/scoped_refptr.h include for scoped_refptr template
- Added rtc_base/ref_counted_object.h include for ref counting support
- Required by WebRTC API changes in Firefox 146
- Created third_party/libwebrtc/api/location.h stub header
- Added minimal Location class implementation with Current() static method
- Required by api/task_queue/task_queue_base.h for task posting debugging
- Header was missing in Firefox 146's WebRTC implementation
- Removed conditional logic for per-realm timezone overrides in getDateTimeInfo()
- Added comment explaining that per-realm timezones are disabled in favor of global timezone overrides via JS::SetTimeZoneOverride()
- Simplified getDateTimeInfo() to always return nullptr since DateTimeInfo was refactored to use std::string instead of RefPtr<TimeZoneString>
- Changed timeZoneOverride_ from RefPtr<JS::TimeZoneString> to std::string
- Updated all timeZoneOverride_ checks from pointer comparisons to empty() calls
- Replaced timeZoneOverride_->chars() with timeZoneOverride_.c_str() for string access
- Removed updateTimeZoneOverride() method and replaced with internalSetTimeZoneOverride()
- Removed DateTimeInfo constructor that took RefPtr<JS::TimeZone
- Removed duplicate timeZoneOverride_ member variable declaration from DateTimeInfo class
- Firefox 146 already has this member variable defined, causing redefinition errors
- Kept the original timeZoneOverride_ declaration that was already present in the base code
- Updated line numbers and context in intl/components/moz.build
- Changed TimeZone::TryCreate parameter from char16_t to char in TimeZone.cpp
- Added explicit reinterpret_cast for zoneID assignment to match new char-based API