diff --git a/www-client/iceweasel/iceweasel-138.0.3.recipe b/www-client/iceweasel/iceweasel-139.0.1.recipe similarity index 95% rename from www-client/iceweasel/iceweasel-138.0.3.recipe rename to www-client/iceweasel/iceweasel-139.0.1.recipe index 0fbee8013..6d76ea9b2 100644 --- a/www-client/iceweasel/iceweasel-138.0.3.recipe +++ b/www-client/iceweasel/iceweasel-139.0.1.recipe @@ -7,7 +7,7 @@ COPYRIGHT="1995-2025 Mozilla Developers and Contributors" LICENSE="MPL v2.0" REVISION="1" SOURCE_URI="https://ftp.mozilla.org/pub/firefox/releases/$portVersion/source/firefox-$portVersion.source.tar.xz" -CHECKSUM_SHA256="a27f3ab41d635b2a1d8418289d1dedcd6cb532148c7d63d3f8b97c66445513e4" +CHECKSUM_SHA256="5b716ee9e6339a0de8e42f81c1d7dadca5c03e91ee9b2fa8e78357a631b499b0" SOURCE_DIR="firefox-$portVersion" PATCHES=" iceweasel-$portVersion.patchset @@ -51,8 +51,6 @@ REQUIRES=" BUILD_REQUIRES=" haiku_devel - setuptools_python310 - setuptools_rust_python310 devel:libdbus_1 devel:libdbus_glib_1 devel:libevent @@ -67,7 +65,7 @@ BUILD_REQUIRES=" devel:libzstd " BUILD_PREREQUIRES=" - llvm18 + llvm20 nodejs20 rust_bin cmd:autoconf_2.13 @@ -77,7 +75,7 @@ BUILD_PREREQUIRES=" cmd:gcc cmd:git cmd:gn - cmd:lld >= 18 + cmd:lld >= 20 cmd:m4 cmd:make cmd:nasm diff --git a/www-client/iceweasel/patches/iceweasel-138.0.3.patchset b/www-client/iceweasel/patches/iceweasel-139.0.1.patchset similarity index 95% rename from www-client/iceweasel/patches/iceweasel-138.0.3.patchset rename to www-client/iceweasel/patches/iceweasel-139.0.1.patchset index 9d80aa880..64344fd2f 100644 --- a/www-client/iceweasel/patches/iceweasel-138.0.3.patchset +++ b/www-client/iceweasel/patches/iceweasel-139.0.1.patchset @@ -1,6 +1,6 @@ -From eaec14d7b33f86ed450f90397eac5be5d89b8432 Mon Sep 17 00:00:00 2001 +From dfeb3b2d62c0822c7a3c407e364c4bd34c753abb Mon Sep 17 00:00:00 2001 From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Wed, 7 May 2025 10:18:43 +1000 +Date: Sun, 1 Jun 2025 00:33:54 +1000 Subject: Add Haiku build support Based on patches sourced from https://github.com/kenz-gelsoft/gecko-dev/ @@ -14,10 +14,10 @@ Based on patches sourced from https://github.com/kenz-gelsoft/gecko-dev/ - Implement remote server diff --git a/Cargo.lock b/Cargo.lock -index 38508ff..4c0ff17 100644 +index b2d1ec6..798cffd 100644 --- a/Cargo.lock +++ b/Cargo.lock -@@ -3657,7 +3657,6 @@ dependencies = [ +@@ -3743,7 +3743,6 @@ dependencies = [ name = "lmdb-rkv-sys" version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -26,7 +26,7 @@ index 38508ff..4c0ff17 100644 "cc", "libc", diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js -index 89b8b83..3a4a918 100644 +index beced80..80002cd 100644 --- a/browser/app/profile/firefox.js +++ b/browser/app/profile/firefox.js @@ -15,7 +15,9 @@ @@ -40,7 +40,7 @@ index 89b8b83..3a4a918 100644 #endif #endif -@@ -272,7 +274,7 @@ pref("browser.fixup.domainsuffixwhitelist.local", true); +@@ -268,7 +270,7 @@ pref("browser.fixup.domainsuffixwhitelist.local", true); // search string, that may contain a valid host, to a search engine. pref("browser.fixup.dns_first_for_single_words", false); @@ -49,7 +49,7 @@ index 89b8b83..3a4a918 100644 pref("general.autoScroll", false); #else pref("general.autoScroll", true); -@@ -1084,7 +1086,7 @@ pref("security.allow_parent_unrestricted_js_loads", false); +@@ -1082,7 +1084,7 @@ pref("security.allow_parent_unrestricted_js_loads", false); pref("browser.tabs.min_inactive_duration_before_unload", 600000); // Does middleclick paste of clipboard to new tab button @@ -59,7 +59,7 @@ index 89b8b83..3a4a918 100644 #else pref("browser.tabs.searchclipboardfor.middleclick", false); diff --git a/browser/base/content/browser-sets.inc b/browser/base/content/browser-sets.inc -index 269b025..11fb0a4 100644 +index 2f46cce..40092ff 100644 --- a/browser/base/content/browser-sets.inc +++ b/browser/base/content/browser-sets.inc @@ -6,6 +6,12 @@ @@ -75,7 +75,7 @@ index 269b025..11fb0a4 100644 #endif #endif -@@ -201,7 +207,7 @@ +@@ -200,7 +206,7 @@ @@ -84,7 +84,7 @@ index 269b025..11fb0a4 100644 #else -@@ -346,10 +352,14 @@ +@@ -345,10 +351,14 @@ #ifdef XP_GNOME @@ -113,7 +113,7 @@ index fbbe9d0..d0772b8 100644 stdout, returncode = _run_process(args) diff --git a/build/gecko_templates.mozbuild b/build/gecko_templates.mozbuild -index 11b51ae..7c04ddf 100644 +index af2fc4f..e61403a 100644 --- a/build/gecko_templates.mozbuild +++ b/build/gecko_templates.mozbuild @@ -44,7 +44,8 @@ def GeckoBinary(linkage="dependent", mozglue=None): @@ -127,7 +127,7 @@ index 11b51ae..7c04ddf 100644 LIBRARY_DEFINES["MOZ_HAS_MOZGLUE"] = True if not CONFIG["MOZ_GLUE_IN_PROGRAM"]: diff --git a/build/gn_processor.py b/build/gn_processor.py -index c3b9e85..9af7945 100644 +index 44c48eb..6bf9116 100644 --- a/build/gn_processor.py +++ b/build/gn_processor.py @@ -184,6 +184,7 @@ def filter_gn_config(path, gn_result, sandbox_vars, input_vars, gn_target): @@ -138,7 +138,7 @@ index c3b9e85..9af7945 100644 "android": "Android", "linux": "Linux", "mac": "Darwin", -@@ -779,7 +780,7 @@ def main(): +@@ -809,7 +810,7 @@ def main(): vars_set = [] for is_debug in (True, False): @@ -147,7 +147,7 @@ index c3b9e85..9af7945 100644 target_cpus = ["x64"] if target_os in ("android", "linux", "mac", "win", "openbsd"): target_cpus.append("arm64") -@@ -796,7 +797,7 @@ def main(): +@@ -826,7 +827,7 @@ def main(): "host_cpu": "x64", "is_debug": is_debug, "target_cpu": target_cpu, @@ -156,7 +156,7 @@ index c3b9e85..9af7945 100644 } if target_os == "linux": for use_x11 in (True, False): -@@ -805,6 +806,10 @@ def main(): +@@ -835,6 +836,10 @@ def main(): else: if target_os == "openbsd": vars["use_x11"] = True @@ -168,7 +168,7 @@ index c3b9e85..9af7945 100644 preprocessor = load_preprocessor(config.get("preprocessing_script", None)) diff --git a/build/moz.configure/bindgen.configure b/build/moz.configure/bindgen.configure -index 2738f77..806ce8d 100644 +index af5a0cd..1d6be80 100644 --- a/build/moz.configure/bindgen.configure +++ b/build/moz.configure/bindgen.configure @@ -203,7 +203,7 @@ def bindgen_libclang_path(libclang_path, clang, library_name_info, host): @@ -181,7 +181,7 @@ index 2738f77..806ce8d 100644 if host.os == "OpenBSD": diff --git a/build/moz.configure/flags.configure b/build/moz.configure/flags.configure -index 99260f7..21792f6 100644 +index f0f4d7a..297718d 100644 --- a/build/moz.configure/flags.configure +++ b/build/moz.configure/flags.configure @@ -520,7 +520,7 @@ set_config("EXPAND_LIBS_LIST_STYLE", expand_libs_list_style) @@ -194,10 +194,10 @@ index 99260f7..21792f6 100644 diff --git a/build/moz.configure/init.configure b/build/moz.configure/init.configure -index 9bf4bb2..4c911a3 100644 +index 0cc8d70..bd8899d 100644 --- a/build/moz.configure/init.configure +++ b/build/moz.configure/init.configure -@@ -513,6 +513,8 @@ def split_triplet(triplet, allow_wasi=False): +@@ -500,6 +500,8 @@ def split_triplet(triplet, allow_wasi=False): canonical_os = canonical_kernel = "DragonFly" elif os.startswith("freebsd"): canonical_os = canonical_kernel = "FreeBSD" @@ -206,7 +206,7 @@ index 9bf4bb2..4c911a3 100644 elif os.startswith("netbsd"): canonical_os = canonical_kernel = "NetBSD" elif os.startswith("openbsd"): -@@ -941,6 +943,15 @@ def target_is_freebsd(target): +@@ -928,6 +930,15 @@ def target_is_freebsd(target): set_define("XP_FREEBSD", target_is_freebsd) @@ -223,10 +223,10 @@ index 9bf4bb2..4c911a3 100644 def target_is_solaris(target): if target.kernel == "SunOS": diff --git a/build/moz.configure/toolchain.configure b/build/moz.configure/toolchain.configure -index 8fa9277..c6eb2ec 100644 +index 3100bc0..4f775c3 100644 --- a/build/moz.configure/toolchain.configure +++ b/build/moz.configure/toolchain.configure -@@ -2943,7 +2943,7 @@ def security_hardening_cflags( +@@ -2951,7 +2951,7 @@ def security_hardening_cflags( if ( c_compiler.type == "clang" and c_compiler.version >= "11.0.1" @@ -236,7 +236,7 @@ index 8fa9277..c6eb2ec 100644 ): flags.append("-fstack-clash-protection") diff --git a/config/makefiles/rust.mk b/config/makefiles/rust.mk -index 29f5a8a..5551187 100644 +index 49fbe0d..1d0531d 100644 --- a/config/makefiles/rust.mk +++ b/config/makefiles/rust.mk @@ -134,6 +134,10 @@ ifdef DEVELOPER_OPTIONS @@ -562,7 +562,7 @@ index 1c04ba7..c6257e0 100644 if (range.length()) { // Allocation was successful diff --git a/gfx/skia/skia/include/private/base/SkTArray.h b/gfx/skia/skia/include/private/base/SkTArray.h -index 879bebe..eee6750 100644 +index a0ec09e..59d98a3 100644 --- a/gfx/skia/skia/include/private/base/SkTArray.h +++ b/gfx/skia/skia/include/private/base/SkTArray.h @@ -562,7 +562,7 @@ private: @@ -671,7 +671,7 @@ index c622c58..d6cb21b 100644 static const char kFDDir[] = "/proc/self/fd"; #elif defined(XP_DARWIN) diff --git a/ipc/chromium/src/chrome/common/ipc_channel_posix.cc b/ipc/chromium/src/chrome/common/ipc_channel_posix.cc -index 9b4a9d8..5b8f34f 100644 +index 085e570..c7bae19 100644 --- a/ipc/chromium/src/chrome/common/ipc_channel_posix.cc +++ b/ipc/chromium/src/chrome/common/ipc_channel_posix.cc @@ -288,6 +288,18 @@ bool Channel::ChannelImpl::ProcessIncomingMessages() { @@ -716,8 +716,21 @@ index 1ff12f6..b49b16a 100644 // Linux, {Free,Net,Open}BSD, and Solaris; but not macOS, yet. # define HAVE_PIPE2 1 #endif +diff --git a/ipc/glue/GeckoChildProcessHost.cpp b/ipc/glue/GeckoChildProcessHost.cpp +index 7e41545..14c520c 100644 +--- a/ipc/glue/GeckoChildProcessHost.cpp ++++ b/ipc/glue/GeckoChildProcessHost.cpp +@@ -1121,7 +1121,7 @@ Result BaseProcessLauncher::DoSetup() { + #if defined(MOZ_WIDGET_COCOA) || defined(XP_WIN) + geckoargs::sCrashReporter.Put(CrashReporter::GetChildNotificationPipe(), + mChildArgs); +-#elif defined(XP_UNIX) && !defined(XP_IOS) ++#elif defined(XP_UNIX) && !defined(XP_IOS) && !defined(XP_HAIKU) + UniqueFileHandle childCrashFd = CrashReporter::GetChildNotificationPipe(); + if (!childCrashFd) { + return Err(LaunchError("DuplicateFileHandle failed")); diff --git a/js/src/moz.build b/js/src/moz.build -index 8ce0179..2e86330 100644 +index b6a3ccf..b196a9a 100644 --- a/js/src/moz.build +++ b/js/src/moz.build @@ -507,6 +507,11 @@ elif CONFIG["OS_ARCH"] == "WASI": @@ -1827,7 +1840,7 @@ index fd6c684..92f7eb2 100644 # We allow warnings for third-party code that can be updated from upstream. diff --git a/mfbt/Assertions.h b/mfbt/Assertions.h -index a21ee9d..68d78f3 100644 +index 82a2ee5..ade709b 100644 --- a/mfbt/Assertions.h +++ b/mfbt/Assertions.h @@ -231,7 +231,7 @@ MOZ_NoReturn(int aLine) { @@ -1840,10 +1853,10 @@ index a21ee9d..68d78f3 100644 # define MOZ_REALLY_CRASH(line) __builtin_trap() diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml -index a8ba391..7e1cc81 100644 +index 308f3d4..89dd6bc 100644 --- a/modules/libpref/init/StaticPrefList.yaml +++ b/modules/libpref/init/StaticPrefList.yaml -@@ -11167,6 +11167,8 @@ +@@ -11192,6 +11192,8 @@ value: true #elif defined(XP_SOLARIS) value: true @@ -1852,7 +1865,7 @@ index a8ba391..7e1cc81 100644 #else value: false #endif -@@ -11211,6 +11213,8 @@ +@@ -11236,6 +11238,8 @@ value: true #elif defined(XP_SOLARIS) value: true @@ -1861,7 +1874,7 @@ index a8ba391..7e1cc81 100644 #else value: false #endif -@@ -11244,6 +11248,8 @@ +@@ -11269,6 +11273,8 @@ value: true #elif defined(XP_SOLARIS) value: true @@ -1870,7 +1883,7 @@ index a8ba391..7e1cc81 100644 #else value: false #endif -@@ -11263,6 +11269,8 @@ +@@ -11288,6 +11294,8 @@ value: true #elif defined(XP_SOLARIS) value: true @@ -1879,7 +1892,7 @@ index a8ba391..7e1cc81 100644 #else value: false #endif -@@ -11282,6 +11290,8 @@ +@@ -11307,6 +11315,8 @@ value: true #elif defined(XP_SOLARIS) value: true @@ -1888,7 +1901,7 @@ index a8ba391..7e1cc81 100644 #else value: false #endif -@@ -11301,6 +11311,8 @@ +@@ -11326,6 +11336,8 @@ value: true #elif defined(XP_SOLARIS) value: true @@ -1897,7 +1910,7 @@ index a8ba391..7e1cc81 100644 #else value: false #endif -@@ -11332,6 +11344,8 @@ +@@ -11354,6 +11366,8 @@ value: true #elif defined(XP_SOLARIS) value: true @@ -1906,7 +1919,7 @@ index a8ba391..7e1cc81 100644 #else value: false #endif -@@ -12323,6 +12337,8 @@ +@@ -12345,6 +12359,8 @@ type: bool #if defined(MOZ_WIDGET_ANDROID) value: true @@ -1916,10 +1929,10 @@ index a8ba391..7e1cc81 100644 value: false #endif diff --git a/moz.configure b/moz.configure -index 5e9cc42..c5a79e2 100755 +index 8a11d55..4db32ce 100755 --- a/moz.configure +++ b/moz.configure -@@ -865,6 +865,8 @@ def strip_flags(flags, profiling, target): +@@ -862,6 +862,8 @@ def strip_flags(flags, profiling, target): # On Darwin, it tries to strip things it can't, so we need to limit its scope. elif target.kernel == "Darwin": return ["-x", "-S"] @@ -2208,10 +2221,10 @@ index f9fa0f6..7bb78a9 100644 long pageSize = sysconf(_SC_PAGESIZE); long pageCount = sysconf(_SC_PHYS_PAGES); diff --git a/python/mach/mach/site.py b/python/mach/mach/site.py -index 8f49a78..c69c15b 100644 +index bbcbc44..f6107aa 100644 --- a/python/mach/mach/site.py +++ b/python/mach/mach/site.py -@@ -1472,6 +1472,14 @@ def _create_venv_with_pthfile( +@@ -1466,6 +1466,14 @@ def _create_venv_with_pthfile( _ensure_python_exe(Path(target_venv.python_path).parent) @@ -2227,10 +2240,10 @@ index 8f49a78..c69c15b 100644 pthfile_contents = "\n".join(pthfile_lines) with open(os.path.join(platlib_site_packages_dir, PTH_FILENAME), "w") as f: diff --git a/python/mozboot/mozboot/base.py b/python/mozboot/mozboot/base.py -index 81f9b52..24b2c4f 100644 +index f40c9ec..09eec7d 100644 --- a/python/mozboot/mozboot/base.py +++ b/python/mozboot/mozboot/base.py -@@ -573,6 +573,8 @@ class BaseBootstrapper(object): +@@ -573,6 +573,8 @@ class BaseBootstrapper: if modern: print("Your version of Rust (%s) is new enough." % version) @@ -2240,7 +2253,7 @@ index 81f9b52..24b2c4f 100644 elif version: print("Your version of Rust (%s) is too old." % version) diff --git a/python/mozboot/mozboot/bootstrap.py b/python/mozboot/mozboot/bootstrap.py -index 08377a7..15525ad 100644 +index 86ae1e0..bb353af 100644 --- a/python/mozboot/mozboot/bootstrap.py +++ b/python/mozboot/mozboot/bootstrap.py @@ -35,6 +35,7 @@ from mozboot.centosfedora import CentOSFedoraBootstrapper @@ -2251,7 +2264,7 @@ index 08377a7..15525ad 100644 from mozboot.mozconfig import MozconfigBuilder from mozboot.mozillabuild import MozillaBuildBootstrapper from mozboot.openbsd import OpenBSDBootstrapper -@@ -331,6 +332,10 @@ class Bootstrapper(object): +@@ -331,6 +332,10 @@ class Bootstrapper: args["version"] = platform.release() args["flavor"] = platform.system() @@ -2355,27 +2368,11 @@ index 25f43bb..967aee7 100644 "kFreeBSD": "__FreeBSD_kernel__", "Linux": "__linux__", "NetBSD": "__NetBSD__", -diff --git a/python/sites/mach.txt b/python/sites/mach.txt -index 6e3db1c..b282ffa 100644 ---- a/python/sites/mach.txt -+++ b/python/sites/mach.txt -@@ -104,9 +104,9 @@ vendored:third_party/python/wheel - vendored:third_party/python/zipp - # glean-sdk may not be installable if a wheel isn't available - # and it has to be built from source. --pypi-optional:glean-sdk==63.1.0:telemetry will not be collected -+#pypi-optional:glean-sdk==63.1.0:telemetry will not be collected - # Mach gracefully handles the case where `psutil` is unavailable. - # We aren't (yet) able to pin packages in automation, so we have to - # support down to the oldest locally-installed version (5.4.2). --pypi-optional:psutil>=5.4.2,<=5.9.4:telemetry will be missing some data -+#pypi-optional:psutil>=5.4.2,<=5.9.4:telemetry will be missing some data - pypi-optional:zstandard>=0.11.1,<=0.23.0:zstd archives will not be possible to extract diff --git a/security/certverifier/ExtendedValidation.cpp b/security/certverifier/ExtendedValidation.cpp -index 63f3018..f717d4c 100644 +index ca05c3b..c9bf842 100644 --- a/security/certverifier/ExtendedValidation.cpp +++ b/security/certverifier/ExtendedValidation.cpp -@@ -1392,7 +1392,9 @@ nsresult LoadExtendedValidationInfo() { +@@ -1306,7 +1306,9 @@ nsresult LoadExtendedValidationInfo() { // The entries for the debug EV roots are at indices 0 through // NUM_TEST_EV_ROOTS - 1. Since they're not built-in, they probably // haven't been loaded yet. @@ -2386,10 +2383,10 @@ index 63f3018..f717d4c 100644 unsigned char certFingerprint[SHA256_LENGTH]; srv = PK11_HashBuf(SEC_OID_SHA256, certFingerprint, cert->derCert.data, diff --git a/supply-chain/audits.toml b/supply-chain/audits.toml -index 5f1c993..be358d4 100644 +index c295360..89efcad 100644 --- a/supply-chain/audits.toml +++ b/supply-chain/audits.toml -@@ -2502,6 +2502,12 @@ criteria = "safe-to-deploy" +@@ -2546,6 +2546,12 @@ criteria = "safe-to-deploy" delta = "6.0.1 -> 6.0.2" notes = "I'm the author of the changes in this version of the crate." @@ -2402,7 +2399,7 @@ index 5f1c993..be358d4 100644 [[audits.goblin]] who = "Jan-Erik Rediger " criteria = "safe-to-deploy" -@@ -3178,6 +3184,12 @@ criteria = "safe-to-deploy" +@@ -3227,6 +3233,12 @@ criteria = "safe-to-deploy" version = "0.14.0" notes = "Victor and Myk developed this crate at Mozilla." @@ -2416,7 +2413,7 @@ index 5f1c993..be358d4 100644 who = "Mike Hommey " criteria = "safe-to-deploy" diff --git a/supply-chain/config.toml b/supply-chain/config.toml -index d507a95..5e54223 100644 +index cb611b3..bc8788f 100644 --- a/supply-chain/config.toml +++ b/supply-chain/config.toml @@ -76,6 +76,10 @@ notes = "Used for testing." @@ -2442,10 +2439,10 @@ index d507a95..5e54223 100644 audit-as-crates-io = false notes = "This was originally servo code which Bobby Holley put on crates.io some years ago and that was moved in-tree as first-party code later on." diff --git a/testing/mozbase/mozinfo/mozinfo/mozinfo.py b/testing/mozbase/mozinfo/mozinfo/mozinfo.py -index 1943a2c..296fb25 100755 +index ee7f8a6..972b0f3 100755 --- a/testing/mozbase/mozinfo/mozinfo/mozinfo.py +++ b/testing/mozbase/mozinfo/mozinfo/mozinfo.py -@@ -103,7 +103,7 @@ elif system == "Linux": +@@ -104,7 +104,7 @@ elif system == "Linux": info["os"] = "linux" info["linux_distro"] = distribution @@ -2579,10 +2576,10 @@ index 9f3dac4..e5ef5a8 100644 *handle = dlopen(lib_name, flags); if (!*handle) { diff --git a/third_party/libwebrtc/BUILD.gn b/third_party/libwebrtc/BUILD.gn -index 2ee5384..3a0fc9d 100644 +index f0f6d6a..bece87e 100644 --- a/third_party/libwebrtc/BUILD.gn +++ b/third_party/libwebrtc/BUILD.gn -@@ -210,7 +210,7 @@ config("common_inherited_config") { +@@ -211,7 +211,7 @@ config("common_inherited_config") { target_gen_dir, ] } @@ -2591,7 +2588,7 @@ index 2ee5384..3a0fc9d 100644 defines += [ "WEBRTC_POSIX" ] } if (is_ios) { -@@ -219,7 +219,7 @@ config("common_inherited_config") { +@@ -220,7 +220,7 @@ config("common_inherited_config") { "WEBRTC_IOS", ] } @@ -2600,7 +2597,7 @@ index 2ee5384..3a0fc9d 100644 defines += [ "WEBRTC_LINUX" ] } if (is_bsd) { -@@ -231,6 +231,9 @@ config("common_inherited_config") { +@@ -232,6 +232,9 @@ config("common_inherited_config") { if (is_fuchsia) { defines += [ "WEBRTC_FUCHSIA" ] } @@ -2611,7 +2608,7 @@ index 2ee5384..3a0fc9d 100644 defines += [ "WEBRTC_WIN" ] } diff --git a/third_party/libwebrtc/modules/desktop_capture/BUILD.gn b/third_party/libwebrtc/modules/desktop_capture/BUILD.gn -index 2245146..02d76c6 100644 +index 5b66f2c..57d0d45 100644 --- a/third_party/libwebrtc/modules/desktop_capture/BUILD.gn +++ b/third_party/libwebrtc/modules/desktop_capture/BUILD.gn @@ -354,6 +354,19 @@ rtc_library("desktop_capture") { @@ -3010,7 +3007,7 @@ index 0000000..a89b4a1 + +} // namespace webrtc diff --git a/third_party/libwebrtc/modules/video_capture/BUILD.gn b/third_party/libwebrtc/modules/video_capture/BUILD.gn -index 42a5011..0e44e00 100644 +index 294ef9f..02a5355 100644 --- a/third_party/libwebrtc/modules/video_capture/BUILD.gn +++ b/third_party/libwebrtc/modules/video_capture/BUILD.gn @@ -137,6 +137,20 @@ if (!build_with_chromium || is_linux || is_chromeos) { @@ -3587,7 +3584,7 @@ index 0d12966..1fef378 100644 #else return videocapturemodule::VideoCaptureImpl::CreateDeviceInfo(options); diff --git a/third_party/libwebrtc/rtc_base/BUILD.gn b/third_party/libwebrtc/rtc_base/BUILD.gn -index 87c62f0..abcafc9 100644 +index d849418..8b9b761 100644 --- a/third_party/libwebrtc/rtc_base/BUILD.gn +++ b/third_party/libwebrtc/rtc_base/BUILD.gn @@ -1146,6 +1146,10 @@ rtc_library("ifaddrs_converter") { @@ -3602,7 +3599,7 @@ index 87c62f0..abcafc9 100644 rtc_library("rolling_accumulator") { diff --git a/third_party/libwebrtc/rtc_base/logging.cc b/third_party/libwebrtc/rtc_base/logging.cc -index d9c7829..8a8165d 100644 +index 91bc47c..255dd1c 100644 --- a/third_party/libwebrtc/rtc_base/logging.cc +++ b/third_party/libwebrtc/rtc_base/logging.cc @@ -116,7 +116,11 @@ std::string LogLineRef::DefaultLogLine() const { @@ -3773,7 +3770,7 @@ index 62e1694..70186bb 100644 if (is_win) { diff --git a/third_party/libwebrtc/webrtc.gni b/third_party/libwebrtc/webrtc.gni -index 4b41090..1fbeb1b 100644 +index 17306b7..bf3b62e 100644 --- a/third_party/libwebrtc/webrtc.gni +++ b/third_party/libwebrtc/webrtc.gni @@ -145,7 +145,7 @@ declare_args() { @@ -3785,7 +3782,7 @@ index 4b41090..1fbeb1b 100644 # Set this to use PipeWire on the Wayland display server. # By default it's only enabled on desktop Linux (excludes ChromeOS) and -@@ -350,7 +350,7 @@ rtc_opus_dir = "//third_party/opus" +@@ -356,7 +356,7 @@ rtc_opus_dir = "//third_party/opus" # Desktop capturer is supported only on Windows, OSX and Linux. rtc_desktop_capture_supported = @@ -4028,6 +4025,113 @@ index 42d9e34..240bd41 100644 /** * Align a value up to an alignment value * +diff --git a/third_party/rust/iana-time-zone-haiku/.cargo-checksum.json b/third_party/rust/iana-time-zone-haiku/.cargo-checksum.json +index 11e259e..6eae10c 100644 +--- a/third_party/rust/iana-time-zone-haiku/.cargo-checksum.json ++++ b/third_party/rust/iana-time-zone-haiku/.cargo-checksum.json +@@ -1 +1 @@ +-{"files":{"Cargo.toml":"8f06eca1c0e108d0422687eeb87030520ae7bd956efc92352599cc9cf079d9a3","LICENSE-APACHE":"696759d65dfe558ff7d9f031c76db19ec5c0767470fb67c4e8d990820d1e99c9","LICENSE-MIT":"da28ccc6b158fc2d8cccc74e99794b1cff1d29bd7bbeb019442fcf0c04c6cad9","README.md":"5b1ad9309b716374cc1bdcd025f525fac31b2f413e6c4d311e207fa6b1f96a83","build.rs":"10304831100a60c1c2b990762dcfeb47dae8342cf9b54595bec94884e7de5784","src/implementation.cc":"66d2ecfe58ec543e27a6fb3a96526a07cd1ac43a2370344f856529e5a112ce0f","src/lib.rs":"e58db019554bd372f0a187f8f51f96624cdf21bcef507de2093e1d49ca0787cd"},"package":"f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"} +\ No newline at end of file ++{"files":{"Cargo.toml":"8f06eca1c0e108d0422687eeb87030520ae7bd956efc92352599cc9cf079d9a3","LICENSE-APACHE":"696759d65dfe558ff7d9f031c76db19ec5c0767470fb67c4e8d990820d1e99c9","LICENSE-MIT":"da28ccc6b158fc2d8cccc74e99794b1cff1d29bd7bbeb019442fcf0c04c6cad9","README.md":"5b1ad9309b716374cc1bdcd025f525fac31b2f413e6c4d311e207fa6b1f96a83","build.rs":"10304831100a60c1c2b990762dcfeb47dae8342cf9b54595bec94884e7de5784","src/implementation.cc":"2f0381747eba552ef428de04fcdfa55993daff9abe94b016db074032cd5ad460","src/lib.rs":"e58db019554bd372f0a187f8f51f96624cdf21bcef507de2093e1d49ca0787cd"},"package":"f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"} +diff --git a/third_party/rust/iana-time-zone-haiku/src/implementation.cc b/third_party/rust/iana-time-zone-haiku/src/implementation.cc +index d1c92cd..e08b159 100644 +--- a/third_party/rust/iana-time-zone-haiku/src/implementation.cc ++++ b/third_party/rust/iana-time-zone-haiku/src/implementation.cc +@@ -4,56 +4,54 @@ + + #include + ++#pragma GCC visibility push(default) + #include + #include + #include + #include ++#pragma GCC visibility pop + + extern "C" { + + size_t iana_time_zone_haiku_get_tz(char *buf, size_t buf_size) { +- try { +- static_assert(sizeof(char) == sizeof(uint8_t), "Illegal char size"); +- +- if (buf_size == 0) { +- return 0; +- } +- +- // `BLocaleRoster::Default()` returns a reference to a statically allocated object. +- // https://github.com/haiku/haiku/blob/8f16317/src/kits/locale/LocaleRoster.cpp#L143-L147 +- BLocaleRoster *locale_roster(BLocaleRoster::Default()); +- if (!locale_roster) { +- return 0; +- } +- +- BTimeZone tz(NULL, NULL); +- if (locale_roster->GetDefaultTimeZone(&tz) != B_OK) { +- return 0; +- } +- +- BString bname(tz.ID()); +- int32_t ilength(bname.Length()); +- if (ilength <= 0) { +- return 0; +- } +- +- size_t length(ilength); +- if (length > buf_size) { +- return 0; +- } +- +- // BString::String() returns a borrowed string. +- // https://www.haiku-os.org/docs/api/classBString.html#ae4fe78b06c8e3310093b80305e14ba87 +- const char *sname(bname.String()); +- if (!sname) { +- return 0; +- } +- +- std::memcpy(buf, sname, length); +- return length; +- } catch (...) { ++ static_assert(sizeof(char) == sizeof(uint8_t), "Illegal char size"); ++ ++ if (buf_size == 0) { + return 0; + } ++ ++ // `BLocaleRoster::Default()` returns a reference to a statically allocated object. ++ // https://github.com/haiku/haiku/blob/8f16317/src/kits/locale/LocaleRoster.cpp#L143-L147 ++ BLocaleRoster *locale_roster(BLocaleRoster::Default()); ++ if (!locale_roster) { ++ return 0; ++ } ++ ++ BTimeZone tz(NULL, NULL); ++ if (locale_roster->GetDefaultTimeZone(&tz) != B_OK) { ++ return 0; ++ } ++ ++ BString bname(tz.ID()); ++ int32_t ilength(bname.Length()); ++ if (ilength <= 0) { ++ return 0; ++ } ++ ++ size_t length(ilength); ++ if (length > buf_size) { ++ return 0; ++ } ++ ++ // BString::String() returns a borrowed string. ++ // https://www.haiku-os.org/docs/api/classBString.html#ae4fe78b06c8e3310093b80305e14ba87 ++ const char *sname(bname.String()); ++ if (!sname) { ++ return 0; ++ } ++ ++ std::memcpy(buf, sname, length); ++ return length; + } + } // extern "C" + diff --git a/third_party/rust/lmdb-rkv-sys/.cargo-checksum.json b/third_party/rust/lmdb-rkv-sys/.cargo-checksum.json index 6ae8903..ae32d1c 100644 --- a/third_party/rust/lmdb-rkv-sys/.cargo-checksum.json @@ -4200,16 +4304,8 @@ index 14fcc2a..104cef6 100644 pub fn interface_and_mtu_impl(remote: IpAddr) -> Result<(String, usize)> { return Err(default_err()); } -diff --git a/third_party/rust/quinn-udp/.cargo-checksum.json b/third_party/rust/quinn-udp/.cargo-checksum.json -index 21b2522..dd523c6 100644 ---- a/third_party/rust/quinn-udp/.cargo-checksum.json -+++ b/third_party/rust/quinn-udp/.cargo-checksum.json -@@ -1 +1 @@ --{"files":{"Cargo.lock":"9fc873d0855dcb2bd5547c54d24631c95aebf9418432d6703d34c7dc7f20c54b","Cargo.toml":"f8746c995acf25451d3760b5ca5936f39cc19e99e7afebcf3d42688ca5b5627a","LICENSE-APACHE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","LICENSE-MIT":"4b2d0aca6789fa39e03d6738e869ea0988cceba210ca34ebb59c15c463e93a04","benches/throughput.rs":"095137508f85b68174978ff968cade74587751484402ca09269ffc2631d97f34","build.rs":"1d7ecadda4a26fb0eba598789eef9b99a1b4febba9bcb61a34f0c92b1d1bbaeb","src/cmsg/mod.rs":"63d6ea7126341fededdaef14260a7eed715ad3f507d4da586dbab814f581a54d","src/cmsg/unix.rs":"b13d36e757eef3038303e9429573ca29c31aff406592514c304bba73e1bff22f","src/cmsg/windows.rs":"6fb936ec4a283efc5796872e777441e3039c40589073865644a8ef7936af4f4b","src/fallback.rs":"6378c177db7ba0eb88115b63f1ec9e17b05f53b1daae2c1e215520f103145585","src/lib.rs":"ff2012fc0733e0cf98970a50c2ed988e9f2564a3de1baf6f0f532d36fd1ad8bb","src/unix.rs":"6583182c85cdaf7e1232332d161e4e537a3ea66b33604634daeba87df337dd9d","src/windows.rs":"a41c5b9d45938b4cfc0f8e386ec32bb4843ddc801185f25cb0abae8c82b7155f","tests/tests.rs":"babb0fc08884958203b2a0546647e44a67f6b457fe2784935e32d73becb20f4c"},"package":"e46f3055866785f6b92bc6164b76be02ca8f2eb4b002c0354b28cf4c119e5944"} -\ No newline at end of file -+{"files":{"Cargo.lock":"9fc873d0855dcb2bd5547c54d24631c95aebf9418432d6703d34c7dc7f20c54b","Cargo.toml":"f8746c995acf25451d3760b5ca5936f39cc19e99e7afebcf3d42688ca5b5627a","LICENSE-APACHE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","LICENSE-MIT":"4b2d0aca6789fa39e03d6738e869ea0988cceba210ca34ebb59c15c463e93a04","benches/throughput.rs":"095137508f85b68174978ff968cade74587751484402ca09269ffc2631d97f34","build.rs":"1d7ecadda4a26fb0eba598789eef9b99a1b4febba9bcb61a34f0c92b1d1bbaeb","src/cmsg/mod.rs":"63d6ea7126341fededdaef14260a7eed715ad3f507d4da586dbab814f581a54d","src/cmsg/unix.rs":"b13d36e757eef3038303e9429573ca29c31aff406592514c304bba73e1bff22f","src/cmsg/windows.rs":"6fb936ec4a283efc5796872e777441e3039c40589073865644a8ef7936af4f4b","src/fallback.rs":"6378c177db7ba0eb88115b63f1ec9e17b05f53b1daae2c1e215520f103145585","src/lib.rs":"ff2012fc0733e0cf98970a50c2ed988e9f2564a3de1baf6f0f532d36fd1ad8bb","src/unix.rs":"8d7ca923a3f523239f8912d171718cc17b4ffd27b99208104b3795765c488f58","src/windows.rs":"a41c5b9d45938b4cfc0f8e386ec32bb4843ddc801185f25cb0abae8c82b7155f","tests/tests.rs":"babb0fc08884958203b2a0546647e44a67f6b457fe2784935e32d73becb20f4c"},"package":"e46f3055866785f6b92bc6164b76be02ca8f2eb4b002c0354b28cf4c119e5944"} diff --git a/third_party/rust/quinn-udp/src/unix.rs b/third_party/rust/quinn-udp/src/unix.rs -index c39941d..36e4dde 100644 +index c892796..8c3bc81 100644 --- a/third_party/rust/quinn-udp/src/unix.rs +++ b/third_party/rust/quinn-udp/src/unix.rs @@ -53,9 +53,9 @@ extern "C" { @@ -4258,7 +4354,7 @@ index c39941d..36e4dde 100644 // Linux's IP_PMTUDISC_PROBE allows us to operate under interface MTU rather than the // kernel's path MTU guess, but actually disabling fragmentation requires this too. See // __ip6_append_data in ip6_output.c. -@@ -452,7 +441,7 @@ fn send(state: &UdpSocketState, io: SockRef<'_>, transmit: &Transmit<'_>) -> io: +@@ -461,7 +450,7 @@ fn send(state: &UdpSocketState, io: SockRef<'_>, transmit: &Transmit<'_>) -> io: } } @@ -4267,7 +4363,7 @@ index c39941d..36e4dde 100644 fn recv(io: SockRef<'_>, bufs: &mut [IoSliceMut<'_>], meta: &mut [RecvMeta]) -> io::Result { let mut names = [MaybeUninit::::uninit(); BATCH_SIZE]; let mut ctrls = [cmsg::Aligned(MaybeUninit::<[u8; CMSG_LEN]>::uninit()); BATCH_SIZE]; -@@ -519,7 +508,7 @@ fn recv(io: SockRef<'_>, bufs: &mut [IoSliceMut<'_>], meta: &mut [RecvMeta]) -> +@@ -538,7 +527,7 @@ fn recv(io: SockRef<'_>, bufs: &mut [IoSliceMut<'_>], meta: &mut [RecvMeta]) -> Ok(msg_count as usize) } @@ -4276,7 +4372,7 @@ index c39941d..36e4dde 100644 fn recv(io: SockRef<'_>, bufs: &mut [IoSliceMut<'_>], meta: &mut [RecvMeta]) -> io::Result { let mut name = MaybeUninit::::uninit(); let mut ctrl = cmsg::Aligned(MaybeUninit::<[u8; CMSG_LEN]>::uninit()); -@@ -585,8 +574,6 @@ fn prepare_msg( +@@ -608,8 +597,6 @@ fn prepare_msg( encoder.push(libc::IPPROTO_IP, libc::IP_TOS, ecn as IpTosTy); } } @@ -4284,8 +4380,8 @@ index c39941d..36e4dde 100644 - encoder.push(libc::IPPROTO_IPV6, libc::IPV6_TCLASS, ecn); } - // Only set the segment size if it is different from the size of the contents. -@@ -598,42 +585,6 @@ fn prepare_msg( + // Only set the segment size if it is less than the size of the contents. +@@ -623,42 +610,6 @@ fn prepare_msg( gso::set_segment_size(&mut encoder, segment_size as u16); } @@ -4328,7 +4424,7 @@ index c39941d..36e4dde 100644 encoder.finish(); } -@@ -689,22 +640,10 @@ fn decode_recv( +@@ -714,22 +665,10 @@ fn decode_recv( ecn_bits = cmsg::decode::(cmsg); }, // FreeBSD uses IP_RECVTOS here, and we can be liberal because cmsgs are opt-in. @@ -4352,7 +4448,7 @@ index c39941d..36e4dde 100644 #[cfg(any(target_os = "linux", target_os = "android"))] (libc::IPPROTO_IP, libc::IP_PKTINFO) => { let pktinfo = unsafe { cmsg::decode::(cmsg) }; -@@ -717,10 +656,6 @@ fn decode_recv( +@@ -742,10 +681,6 @@ fn decode_recv( let in_addr = unsafe { cmsg::decode::(cmsg) }; dst_ip = Some(IpAddr::V4(Ipv4Addr::from(in_addr.s_addr.to_ne_bytes()))); } @@ -4795,10 +4891,10 @@ index 46860f6..b010d4d 100644 # else mRemoteServer = MakeUnique(); diff --git a/toolkit/library/moz.build b/toolkit/library/moz.build -index 66fe86e..ee7fb31 100644 +index 161ad33..4c778d8 100644 --- a/toolkit/library/moz.build +++ b/toolkit/library/moz.build -@@ -345,6 +345,10 @@ if CONFIG["OS_ARCH"] == "Darwin": +@@ -347,6 +347,10 @@ if CONFIG["OS_ARCH"] == "Darwin": "-weak_framework MediaPlayer", ] @@ -4901,10 +4997,10 @@ index 360a7db..69b089f 100644 return elemString; diff --git a/toolkit/moz.configure b/toolkit/moz.configure -index 09b3065..d317d21 100644 +index 8ea6046..d3f5fd2 100644 --- a/toolkit/moz.configure +++ b/toolkit/moz.configure -@@ -299,6 +299,8 @@ def audio_backends_default(target): +@@ -296,6 +296,8 @@ def audio_backends_default(target): return ("sndio",) elif target.kernel == "Darwin": return ("audiounit",) @@ -4913,7 +5009,7 @@ index 09b3065..d317d21 100644 elif target.os == "NetBSD": return ("sunaudio",) elif target.os == "SunOS": -@@ -316,6 +318,7 @@ option( +@@ -313,6 +315,7 @@ option( "aaudio", "alsa", "audiounit", @@ -4921,7 +5017,7 @@ index 09b3065..d317d21 100644 "jack", "opensl", "oss", -@@ -354,6 +357,11 @@ def imply_audiounit(values, target): +@@ -351,6 +354,11 @@ def imply_audiounit(values, target): return any("audiounit" in value for value in values) or None @@ -4933,7 +5029,7 @@ index 09b3065..d317d21 100644 @depends("--enable-audio-backends") def imply_jack(values): return any("jack" in value for value in values) or None -@@ -417,6 +425,8 @@ imply_option( +@@ -414,6 +422,8 @@ imply_option( set_config("MOZ_AUDIOUNIT_RUST", imply_audiounit, when="--enable-audio-backends") @@ -4942,7 +5038,7 @@ index 09b3065..d317d21 100644 imply_option( "--enable-jack", imply_jack, reason="--enable-audio-backends", when=use_pkg_config ) -@@ -3061,6 +3071,7 @@ def forkserver_default(target, build_project): +@@ -3102,6 +3112,7 @@ def forkserver_default(target, build_project): (target.os == "GNU" and target.kernel == "Linux") or target.os == "FreeBSD" or target.os == "OpenBSD" @@ -4950,7 +5046,7 @@ index 09b3065..d317d21 100644 ) -@@ -3720,7 +3731,7 @@ with only_when(compile_environment): +@@ -3830,7 +3841,7 @@ with only_when(compile_environment): @depends(target) def default_user_appdir(target): @@ -5471,7 +5567,7 @@ index 0000000..d9ac4f3 + +#endif diff --git a/toolkit/themes/shared/popup.css b/toolkit/themes/shared/popup.css -index 5701d30..c1172a1 100644 +index efc623e..66ed526 100644 --- a/toolkit/themes/shared/popup.css +++ b/toolkit/themes/shared/popup.css @@ -43,6 +43,12 @@ panel { @@ -5500,10 +5596,10 @@ index 304c39a..c69f810 100644 if CONFIG["ENABLE_WEBDRIVER"]: diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp -index 3581105..aceace6 100644 +index 484a048..1d55a57 100644 --- a/toolkit/xre/nsAppRunner.cpp +++ b/toolkit/xre/nsAppRunner.cpp -@@ -345,14 +345,16 @@ MOZ_CONSTINIT nsString gProcessStartupShortcut; +@@ -346,14 +346,16 @@ MOZ_CONSTINIT nsString gProcessStartupShortcut; # ifdef MOZ_WAYLAND # include # include "mozilla/widget/nsWaylandDisplay.h" @@ -5522,7 +5618,7 @@ index 3581105..aceace6 100644 MOZ_RUNINIT std::unique_ptr gWaylandProxy; #endif -@@ -432,6 +434,9 @@ static void UnexpectedExit() { +@@ -433,6 +435,9 @@ static void UnexpectedExit() { #if defined(MOZ_WAYLAND) bool IsWaylandEnabled() { @@ -5532,7 +5628,7 @@ index 3581105..aceace6 100644 static bool isWaylandEnabled = []() { const char* waylandDisplay = PR_GetEnv("WAYLAND_DISPLAY"); if (!waylandDisplay) { -@@ -462,6 +467,7 @@ bool IsWaylandEnabled() { +@@ -463,6 +468,7 @@ bool IsWaylandEnabled() { return !gtk_check_version(3, 24, 30); }(); return isWaylandEnabled; @@ -5540,7 +5636,7 @@ index 3581105..aceace6 100644 } #else bool IsWaylandEnabled() { return false; } -@@ -3812,7 +3818,7 @@ class XREMain { +@@ -3819,7 +3825,7 @@ class XREMain { #endif }; @@ -5549,7 +5645,7 @@ index 3581105..aceace6 100644 static SmprintfPointer FormatUid(uid_t aId) { if (const auto pw = getpwuid(aId)) { return mozilla::Smprintf("%s", pw->pw_name); -@@ -3861,7 +3867,7 @@ static bool CheckForUserMismatch() { +@@ -3868,7 +3874,7 @@ static bool CheckForUserMismatch() { } return false; } @@ -5558,7 +5654,7 @@ index 3581105..aceace6 100644 static bool CheckForUserMismatch() { return false; } #endif -@@ -4858,7 +4864,7 @@ int XREMain::XRE_mainStartup(bool* aExitFlag) { +@@ -4849,7 +4855,7 @@ int XREMain::XRE_mainStartup(bool* aExitFlag) { // display_name is owned by gdk. display_name = gdk_get_display_arg_name(); bool waylandEnabled = IsWaylandEnabled(); @@ -5567,7 +5663,7 @@ index 3581105..aceace6 100644 if (!display_name) { auto* proxyEnv = getenv("MOZ_DISABLE_WAYLAND_PROXY"); bool disableWaylandProxy = proxyEnv && *proxyEnv; -@@ -4913,7 +4919,7 @@ int XREMain::XRE_mainStartup(bool* aExitFlag) { +@@ -4904,7 +4910,7 @@ int XREMain::XRE_mainStartup(bool* aExitFlag) { } else { gdk_display_manager_open_display(gdk_display_manager_get(), nullptr); } @@ -5576,7 +5672,7 @@ index 3581105..aceace6 100644 // We want to use proxy for main connection only so // restore original Wayland display for next potential Wayland connections // from gfx probe code and so on. -@@ -6199,7 +6205,9 @@ int XREMain::XRE_main(int argc, char* argv[], const BootstrapConfig& aConfig) { +@@ -6186,7 +6192,9 @@ int XREMain::XRE_main(int argc, char* argv[], const BootstrapConfig& aConfig) { if (!gfxPlatform::IsHeadless()) { # ifdef MOZ_WAYLAND WaylandDisplayRelease(); @@ -5586,6 +5682,25 @@ index 3581105..aceace6 100644 # endif } #endif +diff --git a/toolkit/xre/nsEmbedFunctions.cpp b/toolkit/xre/nsEmbedFunctions.cpp +index 9217d2b..cb984de 100644 +--- a/toolkit/xre/nsEmbedFunctions.cpp ++++ b/toolkit/xre/nsEmbedFunctions.cpp +@@ -357,12 +357,12 @@ nsresult XRE_InitChildProcess(int aArgc, char* aArgv[], + crashHelperPid = geckoargs::sCrashHelperPid.Get(aArgc, aArgv); + MOZ_ASSERT(crashHelperPid.isSome()); + #endif // defined(XP_LINUX) && !defined(MOZ_WIDGET_ANDROID) +- ++#ifndef XP_HAIKU + exceptionHandlerIsSet = CrashReporter::SetRemoteExceptionHandler( + std::move(*crashReporterArg), crashHelperPid); + MOZ_ASSERT(exceptionHandlerIsSet, + "Should have been able to set remote exception handler"); +- ++#endif + if (!exceptionHandlerIsSet) { + // Bug 684322 will add better visibility into this condition + NS_WARNING("Could not setup crash reporting\n"); diff --git a/toolkit/xre/nsSigHandlers.cpp b/toolkit/xre/nsSigHandlers.cpp index 146a586..10b7fb6 100644 --- a/toolkit/xre/nsSigHandlers.cpp @@ -5611,7 +5726,7 @@ index 146a586..10b7fb6 100644 "(%s) %s Proxy: %s", mozilla::widget::GetDesktopEnvironmentIdentifier().get(), diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp -index 3b4612e..118fa5e 100644 +index 9c94cb8..ee3e523 100644 --- a/toolkit/xre/nsXREDirProvider.cpp +++ b/toolkit/xre/nsXREDirProvider.cpp @@ -80,6 +80,10 @@ @@ -5686,10 +5801,10 @@ index 4c53061..76d3561 100644 # else diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build -index c61079e..63017a7 100644 +index 71879f1..0b63df5 100644 --- a/widget/gtk/moz.build +++ b/widget/gtk/moz.build -@@ -28,7 +28,9 @@ if CONFIG["COMPILE_ENVIRONMENT"]: +@@ -27,7 +27,9 @@ if CONFIG["COMPILE_ENVIRONMENT"]: DIRS += ["mozgtk"] if CONFIG["MOZ_WAYLAND"]: @@ -5756,10 +5871,10 @@ index 052971c..664d95d 100644 nsWaylandDisplay::nsWaylandDisplay(wl_display* aDisplay) diff --git a/xpcom/base/nsSystemInfo.cpp b/xpcom/base/nsSystemInfo.cpp -index 2aa1dd1..bf224f0 100644 +index 6c2a1af..77e75dd 100644 --- a/xpcom/base/nsSystemInfo.cpp +++ b/xpcom/base/nsSystemInfo.cpp -@@ -82,6 +82,10 @@ +@@ -83,6 +83,10 @@ # include "mozilla/SandboxInfo.h" #endif @@ -5770,7 +5885,7 @@ index 2aa1dd1..bf224f0 100644 // Slot for NS_InitXPCOM to pass information to nsSystemInfo::Init. // Only set to nonzero (potentially) if XP_UNIX. On such systems, the // system call to discover the appropriate value is not thread-safe, -@@ -1410,7 +1414,15 @@ nsresult nsSystemInfo::Init() { +@@ -1455,7 +1459,15 @@ nsresult nsSystemInfo::Init() { SetInt32Property(u"pagesize"_ns, PR_GetPageSize()); SetInt32Property(u"pageshift"_ns, PR_GetPageShift()); SetInt32Property(u"memmapalign"_ns, PR_GetMemMapAlignment()); @@ -5855,3 +5970,138 @@ index dbd9993..1431340 100644 -- 2.48.1 + +From 80b3432f922d218af6fe97b5e11dd1c7f278367d Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Sun, 6 Apr 2025 10:13:00 +1000 +Subject: Add simple launcher app + + +diff --git a/tools/haiku-launcher/launcher.cpp b/tools/haiku-launcher/launcher.cpp +new file mode 100644 +index 0000000..86a9f22 +--- /dev/null ++++ b/tools/haiku-launcher/launcher.cpp +@@ -0,0 +1,111 @@ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++class BrowserLauncherApp : public BApplication { ++ public: ++ BrowserLauncherApp(const char *signature, int argc, char **argv); ++ ~BrowserLauncherApp() {}; ++ ++ virtual void RefsReceived(BMessage *pmsg); ++ virtual void ArgvRecieved(int32 argc, char**argv); ++ virtual void ReadyToRun(); ++ BString GetBinPath(void); ++ ++ private: ++ BString fCommandLine; ++}; ++ ++BrowserLauncherApp::BrowserLauncherApp(const char *signature, int argc, char **argv) ++ : BApplication(signature) ++{ ++ ArgvRecieved(argc, argv); ++} ++ ++BString ++BrowserLauncherApp::GetBinPath(void) ++{ ++ BPath binPath; ++ ++ image_info info; ++ int32 cookie = 0; ++ ++ while (get_next_image_info(B_CURRENT_TEAM, &cookie, &info) == B_OK) { ++ if (info.type == B_APP_IMAGE) { ++ binPath.SetTo(info.name); ++ binPath.GetParent(&binPath); ++ break; ++ } ++ } ++ ++ binPath.Append("Iceweasel"); ++ ++ return binPath.Path(); ++} ++ ++void ++BrowserLauncherApp::RefsReceived(BMessage *pmsg) ++{ ++ fCommandLine = GetBinPath(); ++ ++ entry_ref ref; ++ for (int32 i = 0; pmsg->FindRef("refs", i, &ref) == B_OK; i++) { ++ BPath file = BPath(&ref); ++ fCommandLine += " \""; ++ fCommandLine += file.Path(); ++ fCommandLine += "\""; ++ } ++ ++ BString url; ++ for (int32 i = 0; pmsg->FindString("url", i, &url) == B_OK; i++) { ++ fCommandLine += " \""; ++ fCommandLine += url; ++ fCommandLine += "\""; ++ } ++ ++ fCommandLine += " &"; ++} ++ ++void ++BrowserLauncherApp::ArgvRecieved(int32 argc, char**argv) ++{ ++ BMessage message(B_REFS_RECEIVED); ++ for (int i = 1; i < argc; i++) { ++ const char* url = argv[i]; ++ BEntry entry(argv[i], true); ++ BPath path; ++ if (entry.Exists() && entry.GetPath(&path) == B_OK) ++ url = path.Path(); ++ message.AddString("url", url); ++ } ++ RefsReceived(&message); ++} ++ ++void ++BrowserLauncherApp::ReadyToRun() ++{ ++ if (!fCommandLine.IsEmpty()) ++ system(fCommandLine.String()); ++ ++ Quit(); ++} ++ ++int main(int argc, char **argv) ++{ ++ BrowserLauncherApp application("application/x-vnd.iceweasel-launcher", argc, argv); ++ application.Run(); ++ return 0; ++} ++ ++ +diff --git a/third_party/rust/quinn-udp/.cargo-checksum.json b/third_party/rust/quinn-udp/.cargo-checksum.json +index 2ada89f..33a4a07 100644 +--- a/third_party/rust/quinn-udp/.cargo-checksum.json ++++ b/third_party/rust/quinn-udp/.cargo-checksum.json +@@ -1 +1 @@ +-{"files":{"Cargo.lock":"b6db9f61ff4fdb22fb4a928df627f66d2a12b699476b244ea5260e010d8c2ae1","Cargo.toml":"397318dc0e80f559c5f570a71e5497fd2a5ab1b4daab1f365d094f1612198968","LICENSE-APACHE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","LICENSE-MIT":"4b2d0aca6789fa39e03d6738e869ea0988cceba210ca34ebb59c15c463e93a04","benches/throughput.rs":"86cb85d2ae07169da8c279861c53b7a055168aaaa91155576c633b8724748db6","build.rs":"1d7ecadda4a26fb0eba598789eef9b99a1b4febba9bcb61a34f0c92b1d1bbaeb","src/cmsg/mod.rs":"ccf970026c8578b1c4661fbe106093dfb62b084a231ecbb4c62eaa10df5822fe","src/cmsg/unix.rs":"7917bce2f3c8e844eca2e4cfea82669b2a31cf311321dc42532626db4ee42de8","src/cmsg/windows.rs":"6fb936ec4a283efc5796872e777441e3039c40589073865644a8ef7936af4f4b","src/fallback.rs":"1e59ea16c6e1487bbb6aa759e349000431474aa245960512cb3b5117a1ed9e21","src/lib.rs":"77d48436bbfcccaea8dc3f061acc874ef5089148bf1700fc7a61b1b3d1b575e1","src/unix.rs":"ae3cc0de15c0ec03b4aaa108a69406ee62d3b57abf5226ccd8f8e66b85c95d2d","src/windows.rs":"43da25457cb17c61369c3ba2c1d98f0ff758c5ea3207ae22969cca1f620b54af","tests/tests.rs":"bd4ee24b0e1ccab9beb444541b472bc1e815e2aba19d75572a379b6e1533449c"},"package":"ee4e529991f949c5e25755532370b8af5d114acae52326361d68d47af64aa842"} +\ No newline at end of file ++{"files":{"Cargo.lock":"b6db9f61ff4fdb22fb4a928df627f66d2a12b699476b244ea5260e010d8c2ae1","Cargo.toml":"397318dc0e80f559c5f570a71e5497fd2a5ab1b4daab1f365d094f1612198968","LICENSE-APACHE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","LICENSE-MIT":"4b2d0aca6789fa39e03d6738e869ea0988cceba210ca34ebb59c15c463e93a04","benches/throughput.rs":"86cb85d2ae07169da8c279861c53b7a055168aaaa91155576c633b8724748db6","build.rs":"1d7ecadda4a26fb0eba598789eef9b99a1b4febba9bcb61a34f0c92b1d1bbaeb","src/cmsg/mod.rs":"ccf970026c8578b1c4661fbe106093dfb62b084a231ecbb4c62eaa10df5822fe","src/cmsg/unix.rs":"7917bce2f3c8e844eca2e4cfea82669b2a31cf311321dc42532626db4ee42de8","src/cmsg/windows.rs":"6fb936ec4a283efc5796872e777441e3039c40589073865644a8ef7936af4f4b","src/fallback.rs":"1e59ea16c6e1487bbb6aa759e349000431474aa245960512cb3b5117a1ed9e21","src/lib.rs":"77d48436bbfcccaea8dc3f061acc874ef5089148bf1700fc7a61b1b3d1b575e1","src/unix.rs":"6023c09ad7052ca141f5dc6eb797bed1928b5d083c05e35cb4911780f5ac2329","src/windows.rs":"43da25457cb17c61369c3ba2c1d98f0ff758c5ea3207ae22969cca1f620b54af","tests/tests.rs":"bd4ee24b0e1ccab9beb444541b472bc1e815e2aba19d75572a379b6e1533449c"},"package":"ee4e529991f949c5e25755532370b8af5d114acae52326361d68d47af64aa842"} +-- +2.48.1 + diff --git a/www-client/iceweasel/patches/iceweasel_launcher-138.0.3.patchset b/www-client/iceweasel/patches/iceweasel_launcher-139.0.1.patchset similarity index 100% rename from www-client/iceweasel/patches/iceweasel_launcher-138.0.3.patchset rename to www-client/iceweasel/patches/iceweasel_launcher-139.0.1.patchset