Date: Thu, 07 May 2026 02:16:58 +0000 From: Hiroki Tagato <tagattie@FreeBSD.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org Subject: git: 233ffb539c83 - main - devel/electron41: Update to 41.5.0 Message-ID: <69fbf61a.1a2f5.52b2a1eb@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch main has been updated by tagattie: URL: https://cgit.FreeBSD.org/ports/commit/?id=233ffb539c83a266163ee8c0b86331c9e186c8f8 commit 233ffb539c83a266163ee8c0b86331c9e186c8f8 Author: Hiroki Tagato <tagattie@FreeBSD.org> AuthorDate: 2026-05-07 02:14:38 +0000 Commit: Hiroki Tagato <tagattie@FreeBSD.org> CommitDate: 2026-05-07 02:16:50 +0000 devel/electron41: Update to 41.5.0 Changelog: - https://github.com/electron/electron/releases/tag/v41.4.0 - https://github.com/electron/electron/releases/tag/v41.5.0 Reported by: GitHub (watch releases) --- devel/electron41/Makefile | 5 +- devel/electron41/Makefile.version | 2 +- devel/electron41/distinfo | 22 +++--- .../electron41/files/packagejsons/.yarn/README.md | 82 ++++++++++++++++++++++ .../electron41/files/packagejsons/npm/package.json | 10 +++ devel/electron41/files/packagejsons/package.json | 4 +- ...r_ui_startup_startup__browser__creator__impl.cc | 18 ++--- devel/electron41/files/patch-electron_BUILD.gn | 14 ++-- ...-electron_shell_app_electron__main__delegate.cc | 16 ++--- ...lectron_shell_browser_api_electron__api__app.cc | 18 ++--- ...ell_browser_api_electron__api__web__contents.cc | 12 ++-- .../files/patch-electron_spec_api-app-spec.ts | 41 ++++++----- .../patch-electron_spec_api-browser-window-spec.ts | 6 +- ...patch-electron_spec_api-content-tracing-spec.ts | 8 +-- .../files/patch-electron_spec_api-protocol-spec.ts | 4 +- .../patch-electron_spec_api-web-contents-spec.ts | 6 +- .../files/patch-electron_spec_chromium-spec.ts | 6 +- 17 files changed, 187 insertions(+), 87 deletions(-) diff --git a/devel/electron41/Makefile b/devel/electron41/Makefile index cf79331828e3..e764238f88bb 100644 --- a/devel/electron41/Makefile +++ b/devel/electron41/Makefile @@ -1,11 +1,10 @@ PORTNAME= electron DISTVERSIONPREFIX= v DISTVERSION= ${ELECTRON_VER} -PORTREVISION= 1 PULSEMV= 16 PULSEV= ${PULSEMV}.1 CATEGORIES= devel -MASTER_SITES= https://github.com/tagattie/FreeBSD-Electron/releases/download/v41.2.1/:chromium \ +MASTER_SITES= https://github.com/tagattie/FreeBSD-Electron/releases/download/v41.5.0/:chromium \ https://freedesktop.org/software/pulseaudio/releases/:pulseaudio PKGNAMESUFFIX= ${ELECTRON_VER_MAJOR} DISTFILES= chromium-${CHROMIUM_VER}${EXTRACT_SUFX}.0:chromium \ @@ -225,7 +224,7 @@ SNDIO_VARS= GN_ARGS+=use_sndio=true SNDIO_VARS_OFF= GN_ARGS+=use_sndio=false # See ${WRKSRC}/electron/DEPS for CHROMIUM_VER -CHROMIUM_VER= 146.0.7680.188 +CHROMIUM_VER= 146.0.7680.216 # See ${WRKSRC}/electron/DEPS for NODE_VER NODE_VER= 24.15.0 # See ${WRKSRC}/electron/DEPS for NAN_VER diff --git a/devel/electron41/Makefile.version b/devel/electron41/Makefile.version index ff484b296d44..6e31e50df998 100644 --- a/devel/electron41/Makefile.version +++ b/devel/electron41/Makefile.version @@ -1,2 +1,2 @@ -ELECTRON_VER= 41.3.0 +ELECTRON_VER= 41.5.0 ELECTRON_VER_MAJOR= ${ELECTRON_VER:C/\..*//} diff --git a/devel/electron41/distinfo b/devel/electron41/distinfo index 5032f131615b..104486f6a382 100644 --- a/devel/electron41/distinfo +++ b/devel/electron41/distinfo @@ -1,10 +1,10 @@ -TIMESTAMP = 1777152067 -SHA256 (electron/chromium-146.0.7680.188.tar.xz.0) = fe0dd625b47d1a0594b20d8c748da45c023da315b4a8f2fc3944b96149330cc6 -SIZE (electron/chromium-146.0.7680.188.tar.xz.0) = 2000000000 -SHA256 (electron/chromium-146.0.7680.188.tar.xz.1) = 3a0320e66c708c527dbc39a9e21051d6146e039a50b57209ec069e808369e6ce -SIZE (electron/chromium-146.0.7680.188.tar.xz.1) = 2000000000 -SHA256 (electron/chromium-146.0.7680.188.tar.xz.2) = 08c4ae08a2605728ed16524bcd0c930434c09f1aee9342344a2e632d25ade73a -SIZE (electron/chromium-146.0.7680.188.tar.xz.2) = 740905224 +TIMESTAMP = 1777991003 +SHA256 (electron/chromium-146.0.7680.216.tar.xz.0) = 975c7b752e7b89c72b6e85f458db893c84bf3de42b7eb954bea2b6fda8e9786b +SIZE (electron/chromium-146.0.7680.216.tar.xz.0) = 2000000000 +SHA256 (electron/chromium-146.0.7680.216.tar.xz.1) = 35b9287cf3cdefcf443f5b6e96198a82de7d89b8f33b6784f74ab85957f56f01 +SIZE (electron/chromium-146.0.7680.216.tar.xz.1) = 2000000000 +SHA256 (electron/chromium-146.0.7680.216.tar.xz.2) = 4f11b63dd52e789323c182d35d59cd5af32901d63f709204134938fd68fef0c8 +SIZE (electron/chromium-146.0.7680.216.tar.xz.2) = 741064124 SHA256 (electron/pulseaudio-16.1.tar.gz) = 027266c62f2a84422ac45fa721a649508f0f1628fb1fd9242315ac54ce2d7c92 SIZE (electron/pulseaudio-16.1.tar.gz) = 2763111 SHA256 (electron/rust/crates/Inflector-0.11.4.crate) = fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3 @@ -341,10 +341,10 @@ SHA256 (electron/rust/crates/zerocopy-derive-0.7.35.crate) = fa4f8080344d4671fb4 SIZE (electron/rust/crates/zerocopy-derive-0.7.35.crate) = 37829 SHA256 (electron/yarn-4.12.0.tgz) = bd58d06826ce9542c4cd904fe10bab7bc718ea2cc39a45d9fbd15f2edb45761c SIZE (electron/yarn-4.12.0.tgz) = 1056794 -SHA256 (electron/electron41-41.3.0-node-modules.tar.xz) = 9ded0bbcd3c5db0b211a670695a5cd39b06240eb3cde395fcc8990702f45da14 -SIZE (electron/electron41-41.3.0-node-modules.tar.xz) = 63583255 -SHA256 (electron/electron-electron-v41.3.0_GH0.tar.gz) = d5394172ad19b0d251ad7e370295a305c64b2974187d2acfccbcb4ffe4cb9e14 -SIZE (electron/electron-electron-v41.3.0_GH0.tar.gz) = 17096687 +SHA256 (electron/electron41-41.5.0-node-modules.tar.xz) = 9ded0bbcd3c5db0b211a670695a5cd39b06240eb3cde395fcc8990702f45da14 +SIZE (electron/electron41-41.5.0-node-modules.tar.xz) = 63583255 +SHA256 (electron/electron-electron-v41.5.0_GH0.tar.gz) = a5ba9121a71731c26c70e784c3efd31c3ba578f34f0f110374c2d5dd81e26414 +SIZE (electron/electron-electron-v41.5.0_GH0.tar.gz) = 18801379 SHA256 (electron/nodejs-node-v24.15.0_GH0.tar.gz) = 5cfb169b21878f50876e0c6a77db1a5e40d733960232682bebb5e267246a2e80 SIZE (electron/nodejs-node-v24.15.0_GH0.tar.gz) = 126716937 SHA256 (electron/nodejs-nan-675cefebca42410733da8a454c8d9391fcebfbc2_GH0.tar.gz) = 3983c68f19ed75dd37dc228eab385093ae2533132730f253f0c3d19ff10788e3 diff --git a/devel/electron41/files/packagejsons/.yarn/README.md b/devel/electron41/files/packagejsons/.yarn/README.md new file mode 100644 index 000000000000..5e13264d4254 --- /dev/null +++ b/devel/electron41/files/packagejsons/.yarn/README.md @@ -0,0 +1,82 @@ +# Vendored Yarn release + +This directory holds the Yarn release used by this repo (`yarnPath` in +`.yarnrc.yml`). The release file is checked in so every contributor and CI job +runs the exact same Yarn, and so we can carry small local patches when needed. + +`releases/yarn-4.12.0.cjs` currently carries one such patch, described below. +If you bump the Yarn version, read the **Upgrading Yarn** section first. + +## Patch: use `JsZipImpl` for the node-modules link step + +### What changed + +Two call sites in `releases/yarn-4.12.0.cjs` are modified so the +`node-modules` linker (and the `pnpm`-loose linker) construct their read-only +`ZipOpenFS` with `customZipImplementation: ST` — Yarn's pure-JS `JsZipImpl` — +instead of falling through to the default WASM-backed `LibZipImpl`: + +```text +new $f({maxOpenFiles:80,readOnlyArchives:!0}) + → new $f({maxOpenFiles:80,readOnlyArchives:!0,customZipImplementation:ST}) +``` + +A comment block at the top of the `.cjs` file marks the file as patched and +points back here. + +### Why + +On the `linux-arm` CI test shards we run a 32-bit `arm32v7` container. During +`yarn install`'s **Link step**, Yarn opens up to 80 cache zips concurrently. +With `LibZipImpl`, each open zip is `readFileSync`'d into a Node `Buffer` +**and copied again into the WASM linear memory**, and every file read does a +WASM `_malloc(size)` for the entry. The WASM heap has to grow as a single +contiguous region of the 32-bit address space; once enough zips are resident, +the `_malloc` for a large entry — most often `typescript/lib/typescript.js` +(~9 MB inside a ~22 MB zip) — fails. + +Yarn's cross-FS `copyFilePromise` swallows the underlying error and re-throws +a generic one, so CI shows: + +```text +YN0001: While persisting .../typescript-patch-...zip/node_modules/typescript/ + EINVAL: invalid argument, copyfile '/node_modules/typescript/lib/typescript.js' -> '...' +``` + +The unmasked form (occasionally seen on `pdfjs-dist`) is the WASM-heap failure +string `Couldn't allocate enough memory`. This started failing ~1-in-3 +`linux-arm / test` shards at **Install Dependencies** on 2026-04-13, after +[#50692](https://github.com/electron/electron/pull/50692) grew the cache enough +to push the 32-bit process over the edge nondeterministically — e.g. +[run 24739817558](https://github.com/electron/electron/actions/runs/24739817558/job/72380803746). + +`JsZipImpl` avoids the problem entirely: it opens the zip by file descriptor, +reads only the central directory into memory, and `readSync`s individual +entries into ordinary Node `Buffer`s — **no WASM heap involved**. It is +read-only and path-based, which is exactly how the linker uses these archives. + +There is no `.yarnrc.yml` setting or environment variable to select the zip +implementation (verified against the bundle), so editing the vendored release +is the only way to switch it short of re-implementing the linker in a plugin. + +Upstream references: +[yarnpkg/berry#3972](https://github.com/yarnpkg/berry/issues/3972), +[yarnpkg/berry#6722](https://github.com/yarnpkg/berry/issues/6722), +[yarnpkg/berry#6550](https://github.com/yarnpkg/berry/issues/6550). + +### Upgrading Yarn + +When bumping `releases/yarn-*.cjs`: + +1. Check whether upstream now defaults `readOnlyArchives` opens to `JsZipImpl`, + or exposes a config knob for the zip implementation. If so, drop this patch. +2. Otherwise, re-apply: search the new bundle for + `maxOpenFiles:80,readOnlyArchives:!0` (the surrounding minified identifiers + will differ) and add `,customZipImplementation:<JsZipImpl symbol>` — that + symbol is whatever the new bundle exports as `JsZipImpl` from + `@yarnpkg/libzip`. +3. Re-add the header comment pointing back to this README. +4. Verify with + `rm -rf node_modules spec/node_modules && node script/yarn.js install --immutable --mode=skip-build` + and confirm `node_modules/typescript/lib/typescript.js` is byte-identical to + an unpatched install. diff --git a/devel/electron41/files/packagejsons/npm/package.json b/devel/electron41/files/packagejsons/npm/package.json index 5f029ee4c7c0..6d453ce21d9a 100644 --- a/devel/electron41/files/packagejsons/npm/package.json +++ b/devel/electron41/files/packagejsons/npm/package.json @@ -7,6 +7,16 @@ "scripts": { "postinstall": "node install.js" }, + "files": [ + "LICENSE", + "README.md", + "abi_version", + "checksums.json", + "cli.js", + "electron.d.ts", + "index.js", + "install.js" + ], "dependencies": { "@electron/get": "^2.0.0", "@types/node": "^24.9.0", diff --git a/devel/electron41/files/packagejsons/package.json b/devel/electron41/files/packagejsons/package.json index a738e80d12d2..8cd3ee8ce35d 100644 --- a/devel/electron41/files/packagejsons/package.json +++ b/devel/electron41/files/packagejsons/package.json @@ -86,7 +86,7 @@ "gn-typescript-definitions": "npm run create-typescript-definitions && node script/cp.mjs electron.d.ts", "pre-flight": "pre-flight", "gn-check": "node ./script/gn-check.js", - "gn-format": "python3 script/run-gn-format.py", + "gn-format": "node ./script/lint.js --gn --fix", "precommit": "lint-staged", "preinstall": "node -e 'process.exit(0)'", "pretest": "npm run create-typescript-definitions", @@ -120,7 +120,7 @@ ], "*.{gn,gni}": [ "npm run gn-check", - "npm run gn-format" + "node ./script/lint.js --gn --fix --only --" ], "*.py": [ "node script/lint.js --py --fix --only --" diff --git a/devel/electron41/files/patch-chrome_browser_ui_startup_startup__browser__creator__impl.cc b/devel/electron41/files/patch-chrome_browser_ui_startup_startup__browser__creator__impl.cc index 11e47c0cfa06..15415265063e 100644 --- a/devel/electron41/files/patch-chrome_browser_ui_startup_startup__browser__creator__impl.cc +++ b/devel/electron41/files/patch-chrome_browser_ui_startup_startup__browser__creator__impl.cc @@ -1,4 +1,4 @@ ---- chrome/browser/ui/startup/startup_browser_creator_impl.cc.orig 2026-03-13 16:54:03 UTC +--- chrome/browser/ui/startup/startup_browser_creator_impl.cc.orig 2026-04-27 19:50:04 UTC +++ chrome/browser/ui/startup/startup_browser_creator_impl.cc @@ -69,7 +69,7 @@ #include "content/public/browser/storage_partition.h" @@ -9,8 +9,8 @@ #include "ui/display/screen.h" #endif -@@ -87,7 +87,7 @@ - #include "components/app_restore/full_restore_utils.h" +@@ -91,7 +91,7 @@ + #include "chrome/browser/ui/browser_window/public/profile_browser_collection.h" #endif -#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) @@ -18,16 +18,16 @@ #include "chrome/browser/search_integrity/search_integrity.h" #include "chrome/browser/search_integrity/search_integrity_factory.h" #include "chrome/browser/ui/webui/whats_new/whats_new_fetcher.h" -@@ -132,7 +132,7 @@ Browser* GetExistingBrowserForOpenBehavior( - chrome::startup::IsProcessStartup process_startup) { - Browser* workspace_browser = chrome::FindLastActiveWithProfile(profile); +@@ -160,7 +160,7 @@ Browser* GetExistingBrowserForOpenBehavior( + BrowserCollection::Order::kActivation); + #endif -#if BUILDFLAG(IS_LINUX) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) const bool match_original_profiles = process_startup == chrome::startup::IsProcessStartup::kYes; display::Screen* const screen = display::Screen::Get(); -@@ -280,7 +280,7 @@ Browser* StartupBrowserCreatorImpl::OpenTabsInBrowser( +@@ -308,7 +308,7 @@ Browser* StartupBrowserCreatorImpl::OpenTabsInBrowser( // at the state of the MessageLoop. Browser::CreateParams params = Browser::CreateParams(profile_, false); params.creation_source = Browser::CreationSource::kStartupCreator; @@ -36,7 +36,7 @@ params.startup_id = command_line_->GetSwitchValueASCII("desktop-startup-id"); #endif -@@ -310,7 +310,7 @@ Browser* StartupBrowserCreatorImpl::OpenTabsInBrowser( +@@ -338,7 +338,7 @@ Browser* StartupBrowserCreatorImpl::OpenTabsInBrowser( continue; } @@ -45,7 +45,7 @@ // Start the What's New fetch but don't add the tab at this point. The tab // will open as the foreground tab only if the remote content can be // retrieved successfully. This prevents needing to automatically close the -@@ -517,7 +517,7 @@ void StartupBrowserCreatorImpl::DetermineURLsAndLaunch +@@ -545,7 +545,7 @@ void StartupBrowserCreatorImpl::DetermineURLsAndLaunch : CHROME_VERSION_STRING; MaybeShowNonMilestoneUpdateToast(browser, current_version_string); } diff --git a/devel/electron41/files/patch-electron_BUILD.gn b/devel/electron41/files/patch-electron_BUILD.gn index fb03db150a5d..613929f3915b 100644 --- a/devel/electron41/files/patch-electron_BUILD.gn +++ b/devel/electron41/files/patch-electron_BUILD.gn @@ -1,6 +1,6 @@ ---- electron/BUILD.gn.orig 2026-04-22 19:52:17 UTC +--- electron/BUILD.gn.orig 2026-05-01 21:06:40 UTC +++ electron/BUILD.gn -@@ -557,7 +557,7 @@ source_set("electron_lib") { +@@ -560,7 +560,7 @@ source_set("electron_lib") { defines += [ "GDK_DISABLE_DEPRECATION_WARNINGS" ] } @@ -9,7 +9,7 @@ deps += [ "//components/crash/core/app", "//components/crash/core/browser", -@@ -656,6 +656,12 @@ source_set("electron_lib") { +@@ -659,6 +659,12 @@ source_set("electron_lib") { cflags_objcc = [ "-fobjc-weak" ] } } @@ -22,7 +22,7 @@ if (is_linux) { libs = [ "xshmfence" ] deps += [ -@@ -1241,7 +1247,7 @@ if (is_mac) { +@@ -1244,7 +1250,7 @@ if (is_mac) { ":electron_lib", ":electron_win32_resources", ":packed_resources", @@ -31,7 +31,7 @@ "//content:sandbox_helper_win", "//electron/buildflags", "//third_party/electron_node:libnode", -@@ -1268,7 +1274,7 @@ if (is_mac) { +@@ -1271,7 +1277,7 @@ if (is_mac) { public_deps = [ "//tools/v8_context_snapshot" ] } @@ -40,7 +40,7 @@ data_deps += [ "//components/crash/core/app:chrome_crashpad_handler" ] } -@@ -1335,7 +1341,7 @@ if (is_mac) { +@@ -1338,7 +1344,7 @@ if (is_mac) { configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ] } @@ -49,7 +49,7 @@ deps += [ "//sandbox/linux:chrome_sandbox" ] } } -@@ -1456,7 +1462,9 @@ dist_zip("electron_dist_zip") { +@@ -1459,7 +1465,9 @@ dist_zip("electron_dist_zip") { ] } diff --git a/devel/electron41/files/patch-electron_shell_app_electron__main__delegate.cc b/devel/electron41/files/patch-electron_shell_app_electron__main__delegate.cc index 39787492ee85..231133e195b6 100644 --- a/devel/electron41/files/patch-electron_shell_app_electron__main__delegate.cc +++ b/devel/electron41/files/patch-electron_shell_app_electron__main__delegate.cc @@ -1,6 +1,6 @@ ---- electron/shell/app/electron_main_delegate.cc.orig 2026-03-17 08:46:52 UTC +--- electron/shell/app/electron_main_delegate.cc.orig 2026-05-01 21:06:40 UTC +++ electron/shell/app/electron_main_delegate.cc -@@ -64,7 +64,7 @@ +@@ -67,7 +67,7 @@ #include "chrome/child/v8_crashpad_support_win.h" #endif @@ -9,7 +9,7 @@ #include "base/nix/xdg_util.h" #include "base/posix/global_descriptors.h" #include "content/public/common/content_descriptors.h" -@@ -72,7 +72,7 @@ +@@ -75,7 +75,7 @@ #include "v8/include/v8.h" #endif @@ -18,7 +18,7 @@ #include "components/crash/core/app/crash_switches.h" // nogncheck #include "components/crash/core/app/crashpad.h" // nogncheck #include "components/crash/core/common/crash_key.h" -@@ -212,7 +212,7 @@ std::optional<int> ElectronMainDelegate::BasicStartupC +@@ -215,7 +215,7 @@ std::optional<int> ElectronMainDelegate::BasicStartupC base::win::PinUser32(); #endif @@ -27,7 +27,7 @@ // Check for --no-sandbox parameter when running as root. if (getuid() == 0 && IsSandboxEnabled(command_line)) LOG(FATAL) << "Running as root without --" -@@ -242,7 +242,7 @@ void ElectronMainDelegate::PreSandboxStartup() { +@@ -245,7 +245,7 @@ void ElectronMainDelegate::PreSandboxStartup() { auto* command_line = base::CommandLine::ForCurrentProcess(); std::string process_type = GetProcessType(); @@ -36,7 +36,7 @@ // Register the pseudonymization salt descriptor in GlobalDescriptors. // (see https://crbug.com/40850085) Only affects processes launched // without the zygote (i.e. utility processes) -@@ -276,7 +276,7 @@ void ElectronMainDelegate::PreSandboxStartup() { +@@ -279,7 +279,7 @@ void ElectronMainDelegate::PreSandboxStartup() { /* is_preinit = */ IsBrowserProcess() || IsZygoteProcess()); #endif @@ -45,7 +45,7 @@ crash_reporter::InitializeCrashKeys(); #endif -@@ -311,7 +311,7 @@ void ElectronMainDelegate::PreSandboxStartup() { +@@ -314,7 +314,7 @@ void ElectronMainDelegate::PreSandboxStartup() { } #endif @@ -54,7 +54,7 @@ crash_keys::SetCrashKeysFromCommandLine(*command_line); crash_keys::SetPlatformCrashKey(); #endif -@@ -351,7 +351,7 @@ std::optional<int> ElectronMainDelegate::PreBrowserMai +@@ -354,7 +354,7 @@ std::optional<int> ElectronMainDelegate::PreBrowserMai #if BUILDFLAG(IS_MAC) RegisterAtomCrApp(); #endif diff --git a/devel/electron41/files/patch-electron_shell_browser_api_electron__api__app.cc b/devel/electron41/files/patch-electron_shell_browser_api_electron__api__app.cc index 7e6775952bde..2824506f09a8 100644 --- a/devel/electron41/files/patch-electron_shell_browser_api_electron__api__app.cc +++ b/devel/electron41/files/patch-electron_shell_browser_api_electron__api__app.cc @@ -1,6 +1,6 @@ ---- electron/shell/browser/api/electron_api_app.cc.orig 2026-04-15 14:10:25 UTC +--- electron/shell/browser/api/electron_api_app.cc.orig 2026-05-01 21:06:40 UTC +++ electron/shell/browser/api/electron_api_app.cc -@@ -101,7 +101,7 @@ +@@ -102,7 +102,7 @@ #include "shell/common/process_util.h" #endif @@ -9,7 +9,7 @@ #include "base/nix/scoped_xdg_activation_token_injector.h" #include "base/nix/xdg_util.h" #endif -@@ -429,7 +429,7 @@ bool NotificationCallbackWrapper( +@@ -430,7 +430,7 @@ bool NotificationCallbackWrapper( base::CommandLine cmd, const base::FilePath& cwd, const std::vector<uint8_t> additional_data) { @@ -18,7 +18,7 @@ // Set the global activation token sent as a command line switch by another // electron app instance. This also removes the switch after use to prevent // any side effects of leaving it in the command line after this point. -@@ -614,7 +614,7 @@ void App::OnFinishLaunching(base::DictValue launch_inf +@@ -615,7 +615,7 @@ void App::OnFinishLaunching(base::DictValue launch_inf } void App::OnFinishLaunching(base::DictValue launch_info) { @@ -27,7 +27,7 @@ // Set the application name for audio streams shown in external // applications. Only affects pulseaudio currently. media::AudioManager::SetGlobalAppName(Browser::Get()->GetName()); -@@ -963,7 +963,7 @@ void App::SetDesktopName(const std::string& desktop_na +@@ -964,7 +964,7 @@ void App::SetDesktopName(const std::string& desktop_na } void App::SetDesktopName(const std::string& desktop_name) { @@ -36,7 +36,7 @@ auto env = base::Environment::Create(); env->SetVar("CHROME_DESKTOP", desktop_name); #endif -@@ -1065,7 +1065,7 @@ bool App::RequestSingleInstanceLock(gin::Arguments* ar +@@ -1066,7 +1066,7 @@ bool App::RequestSingleInstanceLock(gin::Arguments* ar base::BindRepeating(NotificationCallbackWrapper, cb)); #endif @@ -45,7 +45,7 @@ // Read the xdg-activation token and set it in the command line for the // duration of the notification in order to ensure this is propagated to an // already running electron app instance if it exists. -@@ -1452,7 +1452,7 @@ std::vector<gin_helper::Dictionary> App::GetAppMetrics +@@ -1453,7 +1453,7 @@ std::vector<gin_helper::Dictionary> App::GetAppMetrics pid_dict.Set("name", process_metric.second->name); } @@ -54,7 +54,7 @@ auto memory_info = process_metric.second->GetMemoryInfo(); auto memory_dict = gin_helper::Dictionary::CreateEmpty(isolate); -@@ -1854,7 +1854,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild +@@ -1878,7 +1878,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild .SetMethod( "removeAsDefaultProtocolClient", base::BindRepeating(&Browser::RemoveAsDefaultProtocolClient, browser)) @@ -63,7 +63,7 @@ .SetMethod( "getApplicationInfoForProtocol", base::BindRepeating(&Browser::GetApplicationInfoForProtocol, browser)) -@@ -1912,7 +1912,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild +@@ -1937,7 +1937,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild .SetMethod("getJumpListSettings", &App::GetJumpListSettings) .SetMethod("setJumpList", &App::SetJumpList) #endif diff --git a/devel/electron41/files/patch-electron_shell_browser_api_electron__api__web__contents.cc b/devel/electron41/files/patch-electron_shell_browser_api_electron__api__web__contents.cc index 3175eb536f03..d176181fd37e 100644 --- a/devel/electron41/files/patch-electron_shell_browser_api_electron__api__web__contents.cc +++ b/devel/electron41/files/patch-electron_shell_browser_api_electron__api__web__contents.cc @@ -1,4 +1,4 @@ ---- electron/shell/browser/api/electron_api_web_contents.cc.orig 2026-04-22 19:52:17 UTC +--- electron/shell/browser/api/electron_api_web_contents.cc.orig 2026-05-01 21:06:40 UTC +++ electron/shell/browser/api/electron_api_web_contents.cc @@ -164,11 +164,11 @@ #include "ui/base/cocoa/defaults_utils.h" @@ -23,7 +23,7 @@ #include "chrome/browser/hang_monitor/hang_crash_dump.h" // nogncheck #endif -@@ -635,7 +635,7 @@ std::optional<base::TimeDelta> GetCursorBlinkInterval( +@@ -637,7 +637,7 @@ std::optional<base::TimeDelta> GetCursorBlinkInterval( ui::TextInsertionCaretBlinkPeriodFromDefaults()); if (system_value) return *system_value; @@ -32,7 +32,7 @@ if (auto* native_theme = ui::NativeTheme::GetInstanceForNativeUi()) return native_theme->caret_blink_interval(); #elif BUILDFLAG(IS_WIN) -@@ -1005,7 +1005,7 @@ void WebContents::InitWithSessionAndOptions( +@@ -1010,7 +1010,7 @@ void WebContents::InitWithSessionAndOptions( accept_languages.pop_back(); prefs->accept_languages = accept_languages; @@ -41,7 +41,7 @@ // Update font settings. static const gfx::FontRenderParams params( gfx::GetFontRenderParams(gfx::FontRenderParamsQuery(), nullptr)); -@@ -2837,13 +2837,13 @@ void WebContents::ForcefullyCrashRenderer() { +@@ -2843,13 +2843,13 @@ void WebContents::ForcefullyCrashRenderer() { content::RenderProcessHost* rph = rwh->GetProcess(); if (rph) { @@ -57,7 +57,7 @@ CrashDumpHungChildProcess(rph->GetProcess().Handle()); #endif rph->Shutdown(content::RESULT_CODE_HUNG); -@@ -3547,7 +3547,7 @@ void WebContents::Focus() { +@@ -3559,7 +3559,7 @@ void WebContents::Focus() { void WebContents::Focus() { // Focusing on WebContents does not automatically focus the window on macOS // and Linux, do it manually to match the behavior on Windows. @@ -66,7 +66,7 @@ if (owner_window()) owner_window()->Focus(true); #endif -@@ -4444,7 +4444,7 @@ ui::ImageModel WebContents::GetDevToolsWindowIcon() { +@@ -4456,7 +4456,7 @@ ui::ImageModel WebContents::GetDevToolsWindowIcon() { } #endif diff --git a/devel/electron41/files/patch-electron_spec_api-app-spec.ts b/devel/electron41/files/patch-electron_spec_api-app-spec.ts index fda51944dc43..e8565ebbc623 100644 --- a/devel/electron41/files/patch-electron_spec_api-app-spec.ts +++ b/devel/electron41/files/patch-electron_spec_api-app-spec.ts @@ -1,6 +1,6 @@ ---- electron/spec/api-app-spec.ts.orig 2026-04-22 19:52:17 UTC +--- electron/spec/api-app-spec.ts.orig 2026-05-01 21:06:40 UTC +++ electron/spec/api-app-spec.ts -@@ -129,11 +129,11 @@ describe('app module', () => { +@@ -145,11 +145,11 @@ describe('app module', () => { }); describe('app.getPreferredSystemLanguages()', () => { @@ -14,7 +14,7 @@ const languages = app.getPreferredSystemLanguages(); if (languages.length) { expect(languages).to.not.include('C'); -@@ -210,7 +210,7 @@ describe('app module', () => { +@@ -226,7 +226,7 @@ describe('app module', () => { expect(code).to.equal(123, 'exit code should be 123, if you see this please tag @MarshallOfSound'); }); @@ -23,7 +23,7 @@ const electronPath = process.execPath; const appPath = path.join(fixturesPath, 'api', 'singleton'); appProcess = cp.spawn(electronPath, [appPath]); -@@ -374,7 +374,7 @@ describe('app module', () => { +@@ -390,7 +390,7 @@ describe('app module', () => { }); // GitHub Actions macOS-13 runners used for x64 seem to have a problem with this test. @@ -32,7 +32,7 @@ const tempFiles = [ path.join(fixturesPath, 'foo.txt'), path.join(fixturesPath, 'bar.txt'), -@@ -502,7 +502,7 @@ describe('app module', () => { +@@ -518,7 +518,7 @@ describe('app module', () => { // let w = null // before(function () { @@ -41,7 +41,7 @@ // this.skip() // } // }) -@@ -609,7 +609,7 @@ describe('app module', () => { +@@ -625,7 +625,7 @@ describe('app module', () => { describe('app.badgeCount', () => { const platformIsNotSupported = (process.platform === 'win32') || @@ -50,7 +50,7 @@ const expectedBadgeCount = 42; -@@ -653,7 +653,7 @@ describe('app module', () => { +@@ -669,7 +669,7 @@ describe('app module', () => { }); }); @@ -59,7 +59,7 @@ const isMac = process.platform === 'darwin'; const isWin = process.platform === 'win32'; -@@ -1033,7 +1033,7 @@ describe('app module', () => { +@@ -1049,7 +1049,7 @@ describe('app module', () => { }); }); @@ -68,7 +68,7 @@ it('is mutable', () => { const values = [false, true, false]; const setters: Array<(arg: boolean) => void> = [ -@@ -1302,7 +1302,7 @@ describe('app module', () => { +@@ -1318,7 +1318,7 @@ describe('app module', () => { }); }); @@ -77,7 +77,16 @@ let w: BrowserWindow; before(function () { -@@ -1437,7 +1437,7 @@ describe('app module', () => { +@@ -1451,7 +1451,7 @@ describe('app module', () => { + }); + }); + +- ifdescribe(process.platform === 'linux')('default protocol client APIs with mocked XDG settings', () => { ++ ifdescribe(process.platform === 'linux' || process.platform === 'freebsd')('default protocol client APIs with mocked XDG settings', () => { + const protocol = 'electron-test-linux'; + const desktopFileId = 'electron-test.desktop'; + const protocolMimeType = `x-scheme-handler/${protocol}`; +@@ -1541,7 +1541,7 @@ describe('app module', () => { describe('getApplicationNameForProtocol()', () => { // TODO: Linux CI doesn't have registered http & https handlers @@ -86,7 +95,7 @@ // We can't expect particular app names here, but these protocols should // at least have _something_ registered. Except on our Linux CI // environment apparently. -@@ -1454,7 +1454,7 @@ describe('app module', () => { +@@ -1558,7 +1558,7 @@ describe('app module', () => { expect(app.getApplicationNameForProtocol('bogus-protocol://')).to.equal(''); }); @@ -95,7 +104,7 @@ const fixtureApp = path.join(fixturesPath, 'api', 'protocol-name'); const desktopFileId = 'mock-browser.desktop'; const mockScheme = 'mockproto'; -@@ -1581,7 +1581,7 @@ describe('app module', () => { +@@ -1685,7 +1685,7 @@ describe('app module', () => { }); }); @@ -104,7 +113,7 @@ it('returns promise rejection for a bogus protocol', async function () { await expect( app.getApplicationInfoForProtocol('bogus-protocol://') -@@ -1654,7 +1654,7 @@ describe('app module', () => { +@@ -1758,7 +1758,7 @@ describe('app module', () => { }); // FIXME Get these specs running on Linux CI @@ -113,7 +122,7 @@ const iconPath = path.join(__dirname, 'fixtures/assets/icon.ico'); const sizes = { small: 16, -@@ -1736,7 +1736,7 @@ describe('app module', () => { +@@ -1840,7 +1840,7 @@ describe('app module', () => { expect(entry.memory).to.have.property('privateBytes').that.is.greaterThan(0); } @@ -122,7 +131,7 @@ expect(entry.sandboxed).to.be.a('boolean'); } -@@ -1810,7 +1810,7 @@ describe('app module', () => { +@@ -1914,7 +1914,7 @@ describe('app module', () => { it('succeeds with complete GPUInfo', async () => { const completeInfo = await getGPUInfo('complete'); @@ -131,7 +140,7 @@ // For linux and macOS complete info is same as basic info await verifyBasicGPUInfo(completeInfo); const basicInfo = await getGPUInfo('basic'); -@@ -1834,7 +1834,7 @@ describe('app module', () => { +@@ -1938,7 +1938,7 @@ describe('app module', () => { }); }); diff --git a/devel/electron41/files/patch-electron_spec_api-browser-window-spec.ts b/devel/electron41/files/patch-electron_spec_api-browser-window-spec.ts index 741b3c8d0c9d..41a223e548da 100644 --- a/devel/electron41/files/patch-electron_spec_api-browser-window-spec.ts +++ b/devel/electron41/files/patch-electron_spec_api-browser-window-spec.ts @@ -1,4 +1,4 @@ ---- electron/spec/api-browser-window-spec.ts.orig 2026-04-22 19:52:17 UTC +--- electron/spec/api-browser-window-spec.ts.orig 2026-05-01 21:06:40 UTC +++ electron/spec/api-browser-window-spec.ts @@ -69,7 +69,7 @@ describe('BrowserWindow module', () => { }).not.to.throw(); @@ -171,7 +171,7 @@ const w = new BrowserWindow({ show: false }); expect(w.resizable).to.be.true('resizable'); -@@ -5778,7 +5778,7 @@ describe('BrowserWindow module', () => { +@@ -5792,7 +5792,7 @@ describe('BrowserWindow module', () => { }); }); @@ -180,7 +180,7 @@ // Not implemented on Linux. afterEach(closeAllWindows); -@@ -7028,7 +7028,7 @@ describe('BrowserWindow module', () => { +@@ -7119,7 +7119,7 @@ describe('BrowserWindow module', () => { describe('"transparent" option', () => { afterEach(closeAllWindows); diff --git a/devel/electron41/files/patch-electron_spec_api-content-tracing-spec.ts b/devel/electron41/files/patch-electron_spec_api-content-tracing-spec.ts index c54661107ec1..6e58be6dc3e1 100644 --- a/devel/electron41/files/patch-electron_spec_api-content-tracing-spec.ts +++ b/devel/electron41/files/patch-electron_spec_api-content-tracing-spec.ts @@ -1,7 +1,7 @@ ---- electron/spec/api-content-tracing-spec.ts.orig 2025-04-04 05:26:44 UTC +--- electron/spec/api-content-tracing-spec.ts.orig 2026-05-01 21:06:40 UTC +++ electron/spec/api-content-tracing-spec.ts -@@ -9,7 +9,7 @@ import { ifdescribe } from './lib/spec-helpers'; - import { ifdescribe } from './lib/spec-helpers'; +@@ -13,7 +13,7 @@ const fixturesPath = path.resolve(__dirname, 'fixtures + const fixturesPath = path.resolve(__dirname, 'fixtures'); // FIXME: The tests are skipped on linux arm/arm64 -ifdescribe(!(['arm', 'arm64'].includes(process.arch)) || (process.platform !== 'linux'))('contentTracing', () => { @@ -9,7 +9,7 @@ const record = async (options: TraceConfig | TraceCategoriesAndOptions, outputFilePath: string | undefined, recordTimeInMilliseconds = 1e1) => { await app.whenReady(); -@@ -91,7 +91,7 @@ ifdescribe(!(['arm', 'arm64'].includes(process.arch)) +@@ -95,7 +95,7 @@ ifdescribe(!(['arm', 'arm64'].includes(process.arch)) }); }); diff --git a/devel/electron41/files/patch-electron_spec_api-protocol-spec.ts b/devel/electron41/files/patch-electron_spec_api-protocol-spec.ts index 33a10d3bc206..93cd18e2e3a8 100644 --- a/devel/electron41/files/patch-electron_spec_api-protocol-spec.ts +++ b/devel/electron41/files/patch-electron_spec_api-protocol-spec.ts @@ -1,6 +1,6 @@ ---- electron/spec/api-protocol-spec.ts.orig 2026-04-07 01:35:50 UTC +--- electron/spec/api-protocol-spec.ts.orig 2026-05-01 21:06:40 UTC +++ electron/spec/api-protocol-spec.ts -@@ -1757,7 +1757,7 @@ describe('protocol module', () => { +@@ -1899,7 +1899,7 @@ describe('protocol module', () => { // TODO(nornagon): this test doesn't pass on Linux currently, investigate. // test is also flaky on CI on macOS so it is currently disabled there as well. diff --git a/devel/electron41/files/patch-electron_spec_api-web-contents-spec.ts b/devel/electron41/files/patch-electron_spec_api-web-contents-spec.ts index 0d9bad806388..15a6746be600 100644 --- a/devel/electron41/files/patch-electron_spec_api-web-contents-spec.ts +++ b/devel/electron41/files/patch-electron_spec_api-web-contents-spec.ts @@ -1,6 +1,6 @@ ---- electron/spec/api-web-contents-spec.ts.orig 2026-04-22 19:52:17 UTC +--- electron/spec/api-web-contents-spec.ts.orig 2026-05-01 21:06:40 UTC +++ electron/spec/api-web-contents-spec.ts -@@ -1266,7 +1266,7 @@ describe('webContents module', () => { +@@ -1267,7 +1267,7 @@ describe('webContents module', () => { // back to OpenFolder() which does a blocking DirectoryExists() on the UI // thread (pre-existing behavior). Workspace-gating is covered by the test // above. @@ -9,7 +9,7 @@ const w = new BrowserWindow({ show: false }); await openDevTools(w); -@@ -3023,7 +3023,7 @@ describe('webContents module', () => { +@@ -3024,7 +3024,7 @@ describe('webContents module', () => { }); // TODO(codebytere): OOPIF printing is disabled on Linux at the moment due to crashes. diff --git a/devel/electron41/files/patch-electron_spec_chromium-spec.ts b/devel/electron41/files/patch-electron_spec_chromium-spec.ts index d7a6bc3a262e..36e22541c6ec 100644 --- a/devel/electron41/files/patch-electron_spec_chromium-spec.ts +++ b/devel/electron41/files/patch-electron_spec_chromium-spec.ts @@ -1,4 +1,4 @@ ---- electron/spec/chromium-spec.ts.orig 2026-04-22 19:52:17 UTC +--- electron/spec/chromium-spec.ts.orig 2026-05-01 21:06:40 UTC +++ electron/spec/chromium-spec.ts @@ -475,13 +475,13 @@ describe('command line switches', () => { it('should not set an invalid locale', async () => testLocale('asdfkl', `${currentLocale}|${currentSystemLocale}|${currentPreferredLanguages}`)); @@ -18,7 +18,7 @@ }); describe('--remote-debugging-pipe switch', () => { -@@ -3502,12 +3502,12 @@ describe('font fallback', () => { +@@ -3574,12 +3574,12 @@ describe('font fallback', () => { expect(fonts[0].familyName).to.equal('Arial'); } else if (process.platform === 'darwin') { expect(fonts[0].familyName).to.equal('Helvetica'); @@ -33,7 +33,7 @@ const html = ` <html lang="ja-JP"> <head> -@@ -4060,7 +4060,7 @@ describe('paste execCommand', () => { +@@ -4132,7 +4132,7 @@ describe('paste execCommand', () => { }); });home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69fbf61a.1a2f5.52b2a1eb>
