Skip site navigation (1)Skip section navigation (2)
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>