aboutsummaryrefslogtreecommitdiff
path: root/devel/electron37
diff options
context:
space:
mode:
Diffstat (limited to 'devel/electron37')
-rw-r--r--devel/electron37/Makefile46
-rw-r--r--devel/electron37/Makefile.version2
-rw-r--r--devel/electron37/distinfo22
-rw-r--r--devel/electron37/files/package.json2
-rw-r--r--devel/electron37/files/patch-build_rust_allocator_lib.rs21
-rw-r--r--devel/electron37/files/patch-electron_BUILD.gn28
-rw-r--r--devel/electron37/files/patch-electron_script_spec-runner.js8
-rw-r--r--devel/electron37/files/patch-electron_shell_app_electron__main__delegate.cc14
-rw-r--r--devel/electron37/files/patch-electron_shell_browser_api_electron__api__app.cc16
-rw-r--r--devel/electron37/files/patch-electron_shell_browser_api_electron__api__base__window.cc6
-rw-r--r--devel/electron37/files/patch-electron_shell_browser_api_electron__api__base__window.h6
-rw-r--r--devel/electron37/files/patch-electron_shell_browser_api_electron__api__web__contents.cc8
-rw-r--r--devel/electron37/files/patch-electron_shell_browser_api_electron__api__web__contents.h4
-rw-r--r--devel/electron37/files/patch-electron_shell_browser_browser.h6
-rw-r--r--devel/electron37/files/patch-electron_shell_browser_native__window__views.cc42
-rw-r--r--devel/electron37/files/patch-electron_shell_browser_native__window__views.h6
-rw-r--r--devel/electron37/files/patch-electron_shell_common_api_electron__bindings.cc4
-rw-r--r--devel/electron37/files/patch-electron_shell_common_node__bindings.cc4
-rw-r--r--devel/electron37/files/patch-electron_shell_services_node_node__service.cc6
-rw-r--r--devel/electron37/files/patch-electron_spec_api-app-spec.ts43
-rw-r--r--devel/electron37/files/patch-electron_spec_api-browser-window-spec.ts26
-rw-r--r--devel/electron37/files/patch-electron_spec_api-tray-spec.ts18
-rw-r--r--devel/electron37/files/patch-electron_spec_api-utility-process-spec.ts6
-rw-r--r--devel/electron37/files/patch-electron_spec_api-web-contents-spec.ts4
-rw-r--r--devel/electron37/files/patch-electron_spec_chromium-spec.ts6
-rw-r--r--devel/electron37/files/patch-net_dns_BUILD.gn16
-rw-r--r--devel/electron37/files/yarn.lock19
27 files changed, 228 insertions, 161 deletions
diff --git a/devel/electron37/Makefile b/devel/electron37/Makefile
index 28de212fe821..546825e4cc48 100644
--- a/devel/electron37/Makefile
+++ b/devel/electron37/Makefile
@@ -4,13 +4,16 @@ DISTVERSION= ${ELECTRON_VER}
PULSEMV= 16
PULSEV= ${PULSEMV}.1
CATEGORIES= devel
-MASTER_SITES= https://commondatastorage.googleapis.com/chromium-browser-official/:chromium \
+MASTER_SITES= https://github.com/tagattie/FreeBSD-Electron/releases/download/v37.5.0/:chromium \
https://freedesktop.org/software/pulseaudio/releases/:pulseaudio
PKGNAMESUFFIX= ${ELECTRON_VER_MAJOR}
-DISTFILES= chromium-${CHROMIUM_VER}${EXTRACT_SUFX}:chromium \
+DISTFILES= chromium-${CHROMIUM_VER}${EXTRACT_SUFX}.0:chromium \
+ chromium-${CHROMIUM_VER}${EXTRACT_SUFX}.1:chromium \
+ chromium-${CHROMIUM_VER}${EXTRACT_SUFX}.2:chromium \
pulseaudio-${PULSEV}.tar.gz:pulseaudio \
electron-yarn-cache-${ELECTRON_VER}${EXTRACT_SUFX}:prefetch
DIST_SUBDIR= ${PORTNAME}
+EXTRACT_ONLY= ${DISTFILES:C/:[^:]+$//:C/chromium-${CHROMIUM_VER}${EXTRACT_SUFX}\.[0-9]//}
MAINTAINER= tagattie@FreeBSD.org
COMMENT= Build cross-platform desktop apps with JavaScript, HTML, and CSS
@@ -20,6 +23,7 @@ LICENSE= BSD3CLAUSE LGPL21 MPL11 MIT
LICENSE_COMB= multi
LICENSE_FILE= ${WRKSRC}/electron/LICENSE
+BROKEN_i386= fetch fails: node process stalls during fetch phase and eats up all CPUs
ONLY_FOR_ARCHS= aarch64 amd64 i386
FETCH_DEPENDS= yarn${NODEJS_SUFFIX}>0:www/yarn${NODEJS_SUFFIX}
@@ -212,7 +216,7 @@ PIPEWIRE_VARS_OFF= GN_ARGS+=rtc_use_pipewire=false \
GN_ARGS+=rtc_link_pipewire=false
PULSEAUDIO_VARS= GN_ARGS+=use_pulseaudio=true \
- PINCLUDES="-I${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/pulseaudio-${PULSEV}/src -DPA_MAJOR=${PULSEMV}"
+ PINCLUDES="-I${WRKSRC:H}/pulseaudio-${PULSEV}/src -DPA_MAJOR=${PULSEMV}"
PULSEAUDIO_VARS_OFF= GN_ARGS+=use_pulseaudio=false
SNDIO_LIB_DEPENDS= libsndio.so:audio/sndio
@@ -220,9 +224,9 @@ SNDIO_VARS= GN_ARGS+=use_sndio=true
SNDIO_VARS_OFF= GN_ARGS+=use_sndio=false
# See ${WRKSRC}/electron/DEPS for CHROMIUM_VER
-CHROMIUM_VER= 138.0.7204.185
+CHROMIUM_VER= 138.0.7204.251
# See ${WRKSRC}/electron/DEPS for NODE_VER
-NODE_VER= 22.17.1
+NODE_VER= 22.19.0
# See ${WRKSRC}/electron/DEPS for NAN_VER
NAN_VER= e14bdcd1f72d62bca1d541b66da43130384ec213
# See ${WRKSRC}/electron/DEPS for SQUIRREL_MAC_VER
@@ -320,25 +324,33 @@ pre-fetch:
${RM} -r ${WRKDIR}; \
fi
+pre-extract:
+# Chromium source tarball is splitted into multiple fragments. Concatenate them
+# into a single one and manually extract it into WRKDIR.
+ @${CAT} ${DISTDIR}/${DIST_SUBDIR}/chromium-${CHROMIUM_VER}${EXTRACT_SUFX}.? > \
+ ${WRKSRC:H}/chromium-${CHROMIUM_VER}${EXTRACT_SUFX}
+ @cd ${WRKSRC:H} && \
+ ${EXTRACT_CMD} ${EXTRACT_BEFORE_ARGS} \
+ chromium-${CHROMIUM_VER}${EXTRACT_SUFX} ${EXTRACT_AFTER_ARGS}
+
post-extract:
# Move extracted sources to appropriate locations
- ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/chromium-${CHROMIUM_VER} ${WRKSRC}
- ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${PORTNAME}-${ELECTRON_VER} ${WRKSRC}/electron
- ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_nan}-${NAN_VER} \
- ${WRKSRC}/third_party/nan
- ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_node}-${NODE_VER} \
+ ${MV} ${WRKSRC:H}/chromium-${CHROMIUM_VER} ${WRKSRC}
+ ${MV} ${WRKSRC:H}/${PORTNAME}-${ELECTRON_VER} ${WRKSRC}/electron
+ ${MV} ${WRKSRC:H}/${GH_PROJECT_nan}-${NAN_VER} ${WRKSRC}/third_party/nan
+ ${MV} ${WRKSRC:H}/${GH_PROJECT_node}-${NODE_VER} \
${WRKSRC}/third_party/electron_node
- ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_squirrel_mac}-${SQUIRREL_MAC_VER} \
+ ${MV} ${WRKSRC:H}/${GH_PROJECT_squirrel_mac}-${SQUIRREL_MAC_VER} \
${WRKSRC}/third_party/squirrel.mac
- ${MKDIR} ${WRKSRC}/third_party/squirrel.mac/vendor
- ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_reactiveobjc}-${REACTIVEOBJC_VER} \
+ @${MKDIR} ${WRKSRC}/third_party/squirrel.mac/vendor
+ ${MV} ${WRKSRC:H}/${GH_PROJECT_reactiveobjc}-${REACTIVEOBJC_VER} \
${WRKSRC}/third_party/squirrel.mac/vendor/ReactiveObjC
- ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_mantle}-${MANTLE_VER} \
+ ${MV} ${WRKSRC:H}/${GH_PROJECT_mantle}-${MANTLE_VER} \
${WRKSRC}/third_party/squirrel.mac/vendor/Mantle
- ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_reclient_configs}-${ENGFLOW_RECLIENT_CONFIGS_VER} \
+ ${MV} ${WRKSRC:H}/${GH_PROJECT_reclient_configs}-${ENGFLOW_RECLIENT_CONFIGS_VER} \
${WRKSRC}/third_party/engflow-reclient-configs
# Install node modules for electron
- ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/yarn-offline-cache ${WRKDIR}
+ ${MV} ${WRKSRC:H}/yarn-offline-cache ${WRKDIR}
${ECHO_CMD} 'yarn-offline-mirror "../../../yarn-offline-cache"' >> ${WRKSRC}/electron/.yarnrc
${MV} ${WRKSRC}/electron/package.json ${WRKSRC}/electron/package.json.bak
${CP} ${FILESDIR}/package.json ${WRKSRC}/electron
@@ -368,7 +380,7 @@ pre-configure:
.for _e in config.h config.asm config_components.h libavcodec libavformat libavutil
-${CP} -pR ${FFMPEG_BDIR}/${_e} ${FFMPEG_CDIR}
.endfor
- touch ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/pulseaudio-${PULSEV}/src/pulse/version.h
+ touch ${WRKSRC:H}/pulseaudio-${PULSEV}/src/pulse/version.h
@${REINPLACE_CMD} -e 's|$${LOCALBASE}|${LOCALBASE}|;s|$${MODCLANG_VERSION}|${LLVM_DEFAULT}|' \
${WRKSRC}/build/rust/rust_bindgen.gni \
${WRKSRC}/build/rust/rust_bindgen_generator.gni
diff --git a/devel/electron37/Makefile.version b/devel/electron37/Makefile.version
index 63bad097aa86..a5fc7db763a9 100644
--- a/devel/electron37/Makefile.version
+++ b/devel/electron37/Makefile.version
@@ -1,2 +1,2 @@
-ELECTRON_VER= 37.2.6
+ELECTRON_VER= 37.6.1
ELECTRON_VER_MAJOR= ${ELECTRON_VER:C/\..*//}
diff --git a/devel/electron37/distinfo b/devel/electron37/distinfo
index c1986ed2ee06..c470c7767abb 100644
--- a/devel/electron37/distinfo
+++ b/devel/electron37/distinfo
@@ -1,14 +1,18 @@
-TIMESTAMP = 1754602115
-SHA256 (electron/chromium-138.0.7204.185.tar.xz) = b788c781706cfe099413eb52a19718deb6a077e725af7474d064bde3fb13413b
-SIZE (electron/chromium-138.0.7204.185.tar.xz) = 7274579784
+TIMESTAMP = 1760042725
+SHA256 (electron/chromium-138.0.7204.251.tar.xz.0) = 23057c15fd77b6653b01a34e08782f05cc80ecddddaf6f0b87390beb32810151
+SIZE (electron/chromium-138.0.7204.251.tar.xz.0) = 2000000000
+SHA256 (electron/chromium-138.0.7204.251.tar.xz.1) = 784a8bcb5eff8c204557c5cb7c4a223efd3c472303dd79a8b7be97e3d5d0982a
+SIZE (electron/chromium-138.0.7204.251.tar.xz.1) = 2000000000
+SHA256 (electron/chromium-138.0.7204.251.tar.xz.2) = 3d7af9e06a90102b41de19d46359f1ae1aceba1a47e46abe1d21f184afc86932
+SIZE (electron/chromium-138.0.7204.251.tar.xz.2) = 273864084
SHA256 (electron/pulseaudio-16.1.tar.gz) = 027266c62f2a84422ac45fa721a649508f0f1628fb1fd9242315ac54ce2d7c92
SIZE (electron/pulseaudio-16.1.tar.gz) = 2763111
-SHA256 (electron/electron-yarn-cache-37.2.6.tar.xz) = 156bcfdc1d2066a4e3639d76851884f446942aa05a371cbf4b6f43381fed497b
-SIZE (electron/electron-yarn-cache-37.2.6.tar.xz) = 30485132
-SHA256 (electron/electron-electron-v37.2.6_GH0.tar.gz) = 00af33600a5ba24f3b3d737e878f6c7b4c41bd68d4dca51a8deb8ebab2de8a5c
-SIZE (electron/electron-electron-v37.2.6_GH0.tar.gz) = 15830486
-SHA256 (electron/nodejs-node-v22.17.1_GH0.tar.gz) = 7a1dbcd53b7152df5592624698f987fd626d9240c33d59dfef13812e4c168eb2
-SIZE (electron/nodejs-node-v22.17.1_GH0.tar.gz) = 123061071
+SHA256 (electron/electron-yarn-cache-37.6.1.tar.xz) = 34a44bb3ceaa38384ab57905ac82eb29f3cb66db5f731479d67b306211916e3d
+SIZE (electron/electron-yarn-cache-37.6.1.tar.xz) = 30531168
+SHA256 (electron/electron-electron-v37.6.1_GH0.tar.gz) = a98a0bdb4d1b303ac2923420fd7b0dbcf9c0f4158317b7bc9a931cc1a7514f57
+SIZE (electron/electron-electron-v37.6.1_GH0.tar.gz) = 15843969
+SHA256 (electron/nodejs-node-v22.19.0_GH0.tar.gz) = 8f28e6635c2fe9d1ea29347606df81128c52bc3a2b820aca5851bd6b89c96aa4
+SIZE (electron/nodejs-node-v22.19.0_GH0.tar.gz) = 123089614
SHA256 (electron/nodejs-nan-e14bdcd1f72d62bca1d541b66da43130384ec213_GH0.tar.gz) = 02edf8d5b3fef9af94d8a1355da60564a57e7f2c99cb422bce042400607ed2eb
SIZE (electron/nodejs-nan-e14bdcd1f72d62bca1d541b66da43130384ec213_GH0.tar.gz) = 180646
SHA256 (electron/Squirrel-Squirrel.Mac-0e5d146ba13101a1302d59ea6e6e0b3cace4ae38_GH0.tar.gz) = f4ebb40a8d85dbb7ef02aa0571b2f8e22182c6d73b6992484a53c90047779d01
diff --git a/devel/electron37/files/package.json b/devel/electron37/files/package.json
index 4a3a1d78f04b..9f65235eaa4b 100644
--- a/devel/electron37/files/package.json
+++ b/devel/electron37/files/package.json
@@ -18,9 +18,9 @@
"@types/semver": "^7.5.8",
"@types/stream-json": "^1.7.7",
"@types/temp": "^0.9.4",
- "@types/webpack-env": "^1.18.5",
"@typescript-eslint/eslint-plugin": "^8.7.0",
"@typescript-eslint/parser": "^8.7.0",
+ "@xmldom/xmldom": "^0.8.11",
"buffer": "^6.0.3",
"chalk": "^4.1.0",
"check-for-leaks": "^1.2.1",
diff --git a/devel/electron37/files/patch-build_rust_allocator_lib.rs b/devel/electron37/files/patch-build_rust_allocator_lib.rs
new file mode 100644
index 000000000000..cbffdab47210
--- /dev/null
+++ b/devel/electron37/files/patch-build_rust_allocator_lib.rs
@@ -0,0 +1,21 @@
+--- build/rust/allocator/lib.rs.orig 2025-08-11 20:33:34 UTC
++++ build/rust/allocator/lib.rs
+@@ -90,7 +90,18 @@ mod both_allocators {
+ #[linkage = "weak"]
+ static __rust_no_alloc_shim_is_unstable: u8 = 0;
+
++ #[rustc_std_internal_symbol]
++ #[linkage = "weak"]
++ fn __rust_no_alloc_shim_is_unstable_v2() {}
++
++ #[rustc_std_internal_symbol]
++ #[linkage = "weak"]
++ fn __rust_alloc_error_handler_should_panic_v2() -> u8 {
++ 0
++ }
++
+ // Mangle the symbol name as rustc expects.
++ // TODO(crbug.com/440481922): Remove this after rolling past https://github.com/rust-lang/rust/pull/143387
+ #[rustc_std_internal_symbol]
+ #[allow(non_upper_case_globals)]
+ #[linkage = "weak"]
diff --git a/devel/electron37/files/patch-electron_BUILD.gn b/devel/electron37/files/patch-electron_BUILD.gn
index 32319d474890..886038b14c3b 100644
--- a/devel/electron37/files/patch-electron_BUILD.gn
+++ b/devel/electron37/files/patch-electron_BUILD.gn
@@ -1,6 +1,6 @@
---- electron/BUILD.gn.orig 2025-05-22 22:48:48 UTC
+--- electron/BUILD.gn.orig 2025-09-08 10:04:35 UTC
+++ electron/BUILD.gn
-@@ -543,7 +543,7 @@ source_set("electron_lib") {
+@@ -548,7 +548,7 @@ source_set("electron_lib") {
defines += [ "GDK_DISABLE_DEPRECATION_WARNINGS" ]
}
@@ -9,7 +9,7 @@
deps += [
"//components/crash/core/app",
"//components/crash/core/browser",
-@@ -636,6 +636,12 @@ source_set("electron_lib") {
+@@ -641,6 +641,12 @@ source_set("electron_lib") {
cflags_objcc = [ "-fobjc-weak" ]
}
}
@@ -22,7 +22,7 @@
if (is_linux) {
libs = [ "xshmfence" ]
deps += [
-@@ -1206,7 +1212,7 @@ if (is_mac) {
+@@ -1219,7 +1225,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",
-@@ -1233,7 +1239,7 @@ if (is_mac) {
+@@ -1246,7 +1252,7 @@ if (is_mac) {
public_deps = [ "//tools/v8_context_snapshot:v8_context_snapshot" ]
}
@@ -40,7 +40,7 @@
data_deps += [ "//components/crash/core/app:chrome_crashpad_handler" ]
}
-@@ -1300,7 +1306,7 @@ if (is_mac) {
+@@ -1313,7 +1319,7 @@ if (is_mac) {
configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
}
@@ -49,12 +49,14 @@
deps += [ "//sandbox/linux:chrome_sandbox" ]
}
}
-@@ -1408,7 +1414,7 @@ dist_zip("electron_dist_zip") {
- ":electron_version_file",
- ":licenses",
- ]
-- if (is_linux) {
-+ if (is_linux && !is_bsd) {
- data_deps += [ "//sandbox/linux:chrome_sandbox" ]
+@@ -1434,7 +1440,9 @@ dist_zip("electron_dist_zip") {
+ ]
+ }
+
+- data_deps += [ "//sandbox/linux:chrome_sandbox" ]
++ if (!is_bsd) {
++ data_deps += [ "//sandbox/linux:chrome_sandbox" ]
++ }
}
deps = data_deps
+ outputs = [ "$root_build_dir/dist.zip" ]
diff --git a/devel/electron37/files/patch-electron_script_spec-runner.js b/devel/electron37/files/patch-electron_script_spec-runner.js
index 48b303bb179e..8901659df179 100644
--- a/devel/electron37/files/patch-electron_script_spec-runner.js
+++ b/devel/electron37/files/patch-electron_script_spec-runner.js
@@ -1,9 +1,9 @@
---- electron/script/spec-runner.js.orig 2025-03-10 00:01:50 UTC
+--- electron/script/spec-runner.js.orig 2025-09-27 17:30:52 UTC
+++ electron/script/spec-runner.js
-@@ -200,7 +200,7 @@ async function runTestUsingElectron (specDir, testName
- exe = path.resolve(BASE, utils.getElectronExec());
+@@ -359,7 +359,7 @@ async function runTestUsingElectron (specDir, testName
+ argsToPass = argsToPass.filter(arg => (arg.toString().indexOf('--files') === -1 && arg.toString().indexOf('spec/') === -1));
}
- const runnerArgs = [`electron/${specDir}`, ...unknownArgs.slice(2)];
+ const runnerArgs = [`electron/${specDir}`, ...argsToPass, ...additionalArgs];
- if (process.platform === 'linux') {
+ if (process.platform === 'linux' || process.platform === 'freebsd') {
runnerArgs.unshift(path.resolve(__dirname, 'dbus_mock.py'), exe);
diff --git a/devel/electron37/files/patch-electron_shell_app_electron__main__delegate.cc b/devel/electron37/files/patch-electron_shell_app_electron__main__delegate.cc
index 171564c219b8..4a361e9da833 100644
--- a/devel/electron37/files/patch-electron_shell_app_electron__main__delegate.cc
+++ b/devel/electron37/files/patch-electron_shell_app_electron__main__delegate.cc
@@ -1,6 +1,6 @@
---- electron/shell/app/electron_main_delegate.cc.orig 2025-07-02 10:12:01 UTC
+--- electron/shell/app/electron_main_delegate.cc.orig 2025-08-18 21:37:38 UTC
+++ electron/shell/app/electron_main_delegate.cc
-@@ -60,13 +60,13 @@
+@@ -66,13 +66,13 @@
#include "chrome/child/v8_crashpad_support_win.h"
#endif
@@ -16,7 +16,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"
-@@ -158,7 +158,7 @@ bool ElectronPathProvider(int key, base::FilePath* res
+@@ -164,7 +164,7 @@ bool ElectronPathProvider(int key, base::FilePath* res
create_dir = true;
break;
}
@@ -25,7 +25,7 @@
case DIR_APP_DATA: {
auto env = base::Environment::Create();
cur = base::nix::GetXDGDirectory(
-@@ -284,7 +284,7 @@ std::optional<int> ElectronMainDelegate::BasicStartupC
+@@ -306,7 +306,7 @@ std::optional<int> ElectronMainDelegate::BasicStartupC
base::win::PinUser32();
#endif
@@ -34,7 +34,7 @@
// Check for --no-sandbox parameter when running as root.
if (getuid() == 0 && IsSandboxEnabled(command_line))
LOG(FATAL) << "Running as root without --"
-@@ -334,7 +334,7 @@ void ElectronMainDelegate::PreSandboxStartup() {
+@@ -356,7 +356,7 @@ void ElectronMainDelegate::PreSandboxStartup() {
/* is_preinit = */ IsBrowserProcess() || IsZygoteProcess());
#endif
@@ -43,7 +43,7 @@
crash_reporter::InitializeCrashKeys();
#endif
-@@ -369,7 +369,7 @@ void ElectronMainDelegate::PreSandboxStartup() {
+@@ -391,7 +391,7 @@ void ElectronMainDelegate::PreSandboxStartup() {
}
#endif
@@ -52,7 +52,7 @@
crash_keys::SetCrashKeysFromCommandLine(*command_line);
crash_keys::SetPlatformCrashKey();
#endif
-@@ -404,7 +404,7 @@ std::optional<int> ElectronMainDelegate::PreBrowserMai
+@@ -426,7 +426,7 @@ std::optional<int> ElectronMainDelegate::PreBrowserMai
#if BUILDFLAG(IS_MAC)
RegisterAtomCrApp();
#endif
diff --git a/devel/electron37/files/patch-electron_shell_browser_api_electron__api__app.cc b/devel/electron37/files/patch-electron_shell_browser_api_electron__api__app.cc
index 6cd6bc221472..4f6486828120 100644
--- a/devel/electron37/files/patch-electron_shell_browser_api_electron__api__app.cc
+++ b/devel/electron37/files/patch-electron_shell_browser_api_electron__api__app.cc
@@ -1,4 +1,4 @@
---- electron/shell/browser/api/electron_api_app.cc.orig 2025-07-02 10:12:01 UTC
+--- electron/shell/browser/api/electron_api_app.cc.orig 2025-08-13 14:21:20 UTC
+++ electron/shell/browser/api/electron_api_app.cc
@@ -96,7 +96,7 @@
#include "shell/common/process_util.h"
@@ -9,7 +9,7 @@
#include "base/nix/scoped_xdg_activation_token_injector.h"
#include "base/nix/xdg_util.h"
#endif
-@@ -420,7 +420,7 @@ bool NotificationCallbackWrapper(
+@@ -423,7 +423,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.
-@@ -607,7 +607,7 @@ void App::OnFinishLaunching(base::Value::Dict launch_i
+@@ -610,7 +610,7 @@ void App::OnFinishLaunching(base::Value::Dict launch_i
}
void App::OnFinishLaunching(base::Value::Dict 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());
-@@ -950,7 +950,7 @@ void App::SetDesktopName(const std::string& desktop_na
+@@ -953,7 +953,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
-@@ -1054,7 +1054,7 @@ bool App::RequestSingleInstanceLock(gin::Arguments* ar
+@@ -1057,7 +1057,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.
-@@ -1350,7 +1350,7 @@ std::vector<gin_helper::Dictionary> App::GetAppMetrics
+@@ -1354,7 +1354,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);
-@@ -1732,7 +1732,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild
+@@ -1738,7 +1738,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild
.SetMethod(
"removeAsDefaultProtocolClient",
base::BindRepeating(&Browser::RemoveAsDefaultProtocolClient, browser))
@@ -63,7 +63,7 @@
.SetMethod(
"getApplicationInfoForProtocol",
base::BindRepeating(&Browser::GetApplicationInfoForProtocol, browser))
-@@ -1790,7 +1790,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild
+@@ -1796,7 +1796,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild
.SetMethod("getJumpListSettings", &App::GetJumpListSettings)
.SetMethod("setJumpList", &App::SetJumpList)
#endif
diff --git a/devel/electron37/files/patch-electron_shell_browser_api_electron__api__base__window.cc b/devel/electron37/files/patch-electron_shell_browser_api_electron__api__base__window.cc
index bb00052d766a..907f75cb7d15 100644
--- a/devel/electron37/files/patch-electron_shell_browser_api_electron__api__base__window.cc
+++ b/devel/electron37/files/patch-electron_shell_browser_api_electron__api__base__window.cc
@@ -1,4 +1,4 @@
---- electron/shell/browser/api/electron_api_base_window.cc.orig 2025-05-22 22:48:48 UTC
+--- electron/shell/browser/api/electron_api_base_window.cc.orig 2025-08-13 14:21:20 UTC
+++ electron/shell/browser/api/electron_api_base_window.cc
@@ -42,7 +42,7 @@
#include "shell/browser/ui/views/win_frame_view.h"
@@ -18,7 +18,7 @@
static_cast<NativeWindowViews*>(window_.get())
->SetIcon(native_image->image().AsImageSkia());
#endif
-@@ -1091,7 +1091,7 @@ bool BaseWindow::IsSnapped() const {
+@@ -1118,7 +1118,7 @@ v8::Local<v8::Value> BaseWindow::GetAccentColor() cons
}
#endif
@@ -27,7 +27,7 @@
void BaseWindow::SetTitleBarOverlay(const gin_helper::Dictionary& options,
gin_helper::Arguments* args) {
// Ensure WCO is already enabled on this window
-@@ -1342,7 +1342,7 @@ void BaseWindow::BuildPrototype(v8::Isolate* isolate,
+@@ -1371,7 +1371,7 @@ void BaseWindow::BuildPrototype(v8::Isolate* isolate,
.SetMethod("setThumbnailToolTip", &BaseWindow::SetThumbnailToolTip)
.SetMethod("setAppDetails", &BaseWindow::SetAppDetails)
#endif
diff --git a/devel/electron37/files/patch-electron_shell_browser_api_electron__api__base__window.h b/devel/electron37/files/patch-electron_shell_browser_api_electron__api__base__window.h
index 20efa3ef927e..1e4f49baaff2 100644
--- a/devel/electron37/files/patch-electron_shell_browser_api_electron__api__base__window.h
+++ b/devel/electron37/files/patch-electron_shell_browser_api_electron__api__base__window.h
@@ -1,7 +1,7 @@
---- electron/shell/browser/api/electron_api_base_window.h.orig 2025-05-07 07:36:13 UTC
+--- electron/shell/browser/api/electron_api_base_window.h.orig 2025-08-13 14:21:20 UTC
+++ electron/shell/browser/api/electron_api_base_window.h
-@@ -257,7 +257,7 @@ class BaseWindow : public gin_helper::TrackableObject<
- bool IsSnapped() const;
+@@ -259,7 +259,7 @@ class BaseWindow : public gin_helper::TrackableObject<
+ v8::Local<v8::Value> GetAccentColor() const;
#endif
-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
diff --git a/devel/electron37/files/patch-electron_shell_browser_api_electron__api__web__contents.cc b/devel/electron37/files/patch-electron_shell_browser_api_electron__api__web__contents.cc
index 5ab6f85cd1cf..060da520901c 100644
--- a/devel/electron37/files/patch-electron_shell_browser_api_electron__api__web__contents.cc
+++ b/devel/electron37/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 2025-08-06 01:20:29 UTC
+--- electron/shell/browser/api/electron_api_web_contents.cc.orig 2025-08-18 21:37:38 UTC
+++ electron/shell/browser/api/electron_api_web_contents.cc
@@ -160,11 +160,11 @@
#include "ui/base/cocoa/defaults_utils.h"
@@ -41,7 +41,7 @@
// Update font settings.
static const gfx::FontRenderParams params(
gfx::GetFontRenderParams(gfx::FontRenderParamsQuery(), nullptr));
-@@ -2681,13 +2681,13 @@ void WebContents::ForcefullyCrashRenderer() {
+@@ -2710,13 +2710,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);
-@@ -3370,7 +3370,7 @@ void WebContents::Focus() {
+@@ -3399,7 +3399,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
-@@ -4239,7 +4239,7 @@ ui::ImageModel WebContents::GetDevToolsWindowIcon() {
+@@ -4268,7 +4268,7 @@ ui::ImageModel WebContents::GetDevToolsWindowIcon() {
}
#endif
diff --git a/devel/electron37/files/patch-electron_shell_browser_api_electron__api__web__contents.h b/devel/electron37/files/patch-electron_shell_browser_api_electron__api__web__contents.h
index 067cdf21a89b..de1cc8f43ef2 100644
--- a/devel/electron37/files/patch-electron_shell_browser_api_electron__api__web__contents.h
+++ b/devel/electron37/files/patch-electron_shell_browser_api_electron__api__web__contents.h
@@ -1,6 +1,6 @@
---- electron/shell/browser/api/electron_api_web_contents.h.orig 2025-06-16 21:48:02 UTC
+--- electron/shell/browser/api/electron_api_web_contents.h.orig 2025-08-18 21:37:38 UTC
+++ electron/shell/browser/api/electron_api_web_contents.h
-@@ -741,7 +741,7 @@ class WebContents final : public ExclusiveAccessContex
+@@ -743,7 +743,7 @@ class WebContents final : public ExclusiveAccessContex
#if defined(TOOLKIT_VIEWS) && !BUILDFLAG(IS_MAC)
ui::ImageModel GetDevToolsWindowIcon() override;
#endif
diff --git a/devel/electron37/files/patch-electron_shell_browser_browser.h b/devel/electron37/files/patch-electron_shell_browser_browser.h
index 8abb0580770a..9d81a52e3348 100644
--- a/devel/electron37/files/patch-electron_shell_browser_browser.h
+++ b/devel/electron37/files/patch-electron_shell_browser_browser.h
@@ -1,6 +1,6 @@
---- electron/shell/browser/browser.h.orig 2024-10-22 02:29:46 UTC
+--- electron/shell/browser/browser.h.orig 2025-08-13 14:21:20 UTC
+++ electron/shell/browser/browser.h
-@@ -144,7 +144,7 @@ class Browser : private WindowListObserver {
+@@ -147,7 +147,7 @@ class Browser : private WindowListObserver {
std::u16string GetApplicationNameForProtocol(const GURL& url);
@@ -9,7 +9,7 @@
// get the name, icon and path for an application
v8::Local<v8::Promise> GetApplicationInfoForProtocol(v8::Isolate* isolate,
const GURL& url);
-@@ -272,10 +272,10 @@ class Browser : private WindowListObserver {
+@@ -275,10 +275,10 @@ class Browser : private WindowListObserver {
PCWSTR GetAppUserModelID();
#endif // BUILDFLAG(IS_WIN)
diff --git a/devel/electron37/files/patch-electron_shell_browser_native__window__views.cc b/devel/electron37/files/patch-electron_shell_browser_native__window__views.cc
index c241b765d7e0..a692323fc532 100644
--- a/devel/electron37/files/patch-electron_shell_browser_native__window__views.cc
+++ b/devel/electron37/files/patch-electron_shell_browser_native__window__views.cc
@@ -1,6 +1,6 @@
---- electron/shell/browser/native_window_views.cc.orig 2025-08-06 01:20:29 UTC
+--- electron/shell/browser/native_window_views.cc.orig 2025-08-13 14:21:20 UTC
+++ electron/shell/browser/native_window_views.cc
-@@ -51,7 +51,7 @@
+@@ -52,7 +52,7 @@
#include "ui/wm/core/shadow_types.h"
#include "ui/wm/core/window_util.h"
@@ -9,7 +9,7 @@
#include "base/strings/string_util.h"
#include "shell/browser/browser.h"
#include "shell/browser/linux/unity_service.h"
-@@ -285,7 +285,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper:
+@@ -286,7 +286,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper:
params.parent = parent->GetNativeWindow();
params.native_widget = new ElectronDesktopNativeWidgetAura(this);
@@ -18,7 +18,7 @@
std::string name = Browser::Get()->GetName();
// Set WM_WINDOW_ROLE.
params.wm_role_name = "browser-window";
-@@ -310,7 +310,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper:
+@@ -311,7 +311,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper:
std::string window_type;
options.Get(options::kType, &window_type);
@@ -27,7 +27,7 @@
// Set _GTK_THEME_VARIANT to dark if we have "dark-theme" option set.
if (options.ValueOrDefault(options::kDarkTheme, false))
SetGTKDarkThemeEnabled(true);
-@@ -433,7 +433,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper:
+@@ -432,7 +432,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper:
if (window)
window->AddPreTargetHandler(this);
@@ -36,7 +36,7 @@
// On linux after the widget is initialized we might have to force set the
// bounds if the bounds are smaller than the current display
SetBounds(gfx::Rect(GetPosition(), bounds.size()), false);
-@@ -454,7 +454,7 @@ void NativeWindowViews::SetGTKDarkThemeEnabled(bool us
+@@ -453,7 +453,7 @@ void NativeWindowViews::SetGTKDarkThemeEnabled(bool us
}
void NativeWindowViews::SetGTKDarkThemeEnabled(bool use_dark_theme) {
@@ -45,7 +45,7 @@
if (x11_util::IsX11()) {
const std::string color = use_dark_theme ? "dark" : "light";
auto* connection = x11::Connection::Get();
-@@ -515,7 +515,7 @@ void NativeWindowViews::Show() {
+@@ -514,7 +514,7 @@ void NativeWindowViews::Show() {
NotifyWindowShow();
@@ -54,7 +54,7 @@
if (global_menu_bar_)
global_menu_bar_->OnWindowMapped();
-@@ -531,7 +531,7 @@ void NativeWindowViews::ShowInactive() {
+@@ -530,7 +530,7 @@ void NativeWindowViews::ShowInactive() {
NotifyWindowShow();
@@ -63,7 +63,7 @@
if (global_menu_bar_)
global_menu_bar_->OnWindowMapped();
-@@ -550,7 +550,7 @@ void NativeWindowViews::Hide() {
+@@ -549,7 +549,7 @@ void NativeWindowViews::Hide() {
NotifyWindowHide();
@@ -72,7 +72,7 @@
if (global_menu_bar_)
global_menu_bar_->OnWindowUnmapped();
#endif
-@@ -581,7 +581,7 @@ bool NativeWindowViews::IsEnabled() const {
+@@ -580,7 +580,7 @@ bool NativeWindowViews::IsEnabled() const {
bool NativeWindowViews::IsEnabled() const {
#if BUILDFLAG(IS_WIN)
return ::IsWindowEnabled(GetAcceleratedWidget());
@@ -81,7 +81,7 @@
if (x11_util::IsX11())
return !event_disabler_.get();
NOTIMPLEMENTED();
-@@ -815,7 +815,7 @@ void NativeWindowViews::SetBounds(const gfx::Rect& bou
+@@ -814,7 +814,7 @@ void NativeWindowViews::SetBounds(const gfx::Rect& bou
}
#endif
@@ -90,7 +90,7 @@
// On Linux and Windows the minimum and maximum size should be updated with
// window size when window is not resizable.
if (!resizable_) {
-@@ -1072,7 +1072,7 @@ bool NativeWindowViews::IsClosable() const {
+@@ -1071,7 +1071,7 @@ bool NativeWindowViews::IsClosable() const {
return false;
}
return !(info.fState & MFS_DISABLED);
@@ -99,7 +99,7 @@
return true;
#endif
}
-@@ -1112,7 +1112,7 @@ void NativeWindowViews::Center() {
+@@ -1111,7 +1111,7 @@ void NativeWindowViews::Center() {
// for now to avoid breaking API contract, but should consider the long
// term plan for this aligning with upstream.
void NativeWindowViews::Center() {
@@ -108,7 +108,7 @@
auto display =
display::Screen::GetScreen()->GetDisplayNearestWindow(GetNativeWindow());
gfx::Rect window_bounds_in_screen = display.work_area();
-@@ -1332,7 +1332,7 @@ void NativeWindowViews::SetMenu(ElectronMenuModel* men
+@@ -1336,7 +1336,7 @@ void NativeWindowViews::SetMenu(ElectronMenuModel* men
}
void NativeWindowViews::SetMenu(ElectronMenuModel* menu_model) {
@@ -117,7 +117,7 @@
// Remove global menu bar.
if (global_menu_bar_ && menu_model == nullptr) {
global_menu_bar_.reset();
-@@ -1388,7 +1388,7 @@ void NativeWindowViews::SetParentWindow(NativeWindow*
+@@ -1392,7 +1392,7 @@ void NativeWindowViews::SetParentWindow(NativeWindow*
void NativeWindowViews::SetParentWindow(NativeWindow* parent) {
NativeWindow::SetParentWindow(parent);
@@ -126,7 +126,7 @@
if (x11_util::IsX11()) {
auto* connection = x11::Connection::Get();
connection->SetProperty(
-@@ -1434,7 +1434,7 @@ void NativeWindowViews::SetProgressBar(double progress
+@@ -1438,7 +1438,7 @@ void NativeWindowViews::SetProgressBar(double progress
NativeWindow::ProgressState state) {
#if BUILDFLAG(IS_WIN)
taskbar_host_.SetProgressBar(GetAcceleratedWidget(), progress, state);
@@ -135,7 +135,7 @@
if (unity::IsRunning()) {
unity::SetProgressFraction(progress);
}
-@@ -1560,7 +1560,7 @@ content::DesktopMediaID NativeWindowViews::GetDesktopM
+@@ -1564,7 +1564,7 @@ content::DesktopMediaID NativeWindowViews::GetDesktopM
#if BUILDFLAG(IS_WIN)
window_handle =
reinterpret_cast<content::DesktopMediaID::Id>(accelerated_widget);
@@ -144,7 +144,7 @@
window_handle = static_cast<uint32_t>(accelerated_widget);
#endif
aura::WindowTreeHost* const host =
-@@ -1658,7 +1658,7 @@ void NativeWindowViews::SetIcon(HICON window_icon, HIC
+@@ -1662,7 +1662,7 @@ void NativeWindowViews::SetIcon(HICON window_icon, HIC
SendMessage(hwnd, WM_SETICON, ICON_BIG,
reinterpret_cast<LPARAM>(app_icon_.get()));
}
@@ -153,7 +153,7 @@
void NativeWindowViews::SetIcon(const gfx::ImageSkia& icon) {
auto* tree_host = views::DesktopWindowTreeHostLinux::GetHostForWidget(
GetAcceleratedWidget());
-@@ -1773,7 +1773,7 @@ bool NativeWindowViews::CanMinimize() const {
+@@ -1783,7 +1783,7 @@ bool NativeWindowViews::CanMinimize() const {
bool NativeWindowViews::CanMinimize() const {
#if BUILDFLAG(IS_WIN)
return minimizable_;
@@ -162,7 +162,7 @@
return true;
#endif
}
-@@ -1829,7 +1829,7 @@ void NativeWindowViews::HandleKeyboardEvent(
+@@ -1839,7 +1839,7 @@ void NativeWindowViews::HandleKeyboardEvent(
if (widget_destroyed_)
return;
@@ -171,7 +171,7 @@
if (event.windows_key_code == ui::VKEY_BROWSER_BACK)
NotifyWindowExecuteAppCommand(kBrowserBackward);
else if (event.windows_key_code == ui::VKEY_BROWSER_FORWARD)
-@@ -1848,7 +1848,7 @@ void NativeWindowViews::OnMouseEvent(ui::MouseEvent* e
+@@ -1858,7 +1858,7 @@ void NativeWindowViews::OnMouseEvent(ui::MouseEvent* e
// Alt+Click should not toggle menu bar.
root_view_.ResetAltState();
diff --git a/devel/electron37/files/patch-electron_shell_browser_native__window__views.h b/devel/electron37/files/patch-electron_shell_browser_native__window__views.h
index 47d4fb90893b..5f2e253fd5e4 100644
--- a/devel/electron37/files/patch-electron_shell_browser_native__window__views.h
+++ b/devel/electron37/files/patch-electron_shell_browser_native__window__views.h
@@ -1,4 +1,4 @@
---- electron/shell/browser/native_window_views.h.orig 2025-08-06 01:20:29 UTC
+--- electron/shell/browser/native_window_views.h.orig 2025-08-13 14:21:20 UTC
+++ electron/shell/browser/native_window_views.h
@@ -26,7 +26,7 @@ namespace electron {
@@ -9,7 +9,7 @@
class GlobalMenuBarX11;
#endif
-@@ -164,7 +164,7 @@ class NativeWindowViews : public NativeWindow,
+@@ -165,7 +165,7 @@ class NativeWindowViews : public NativeWindow,
LPARAM l_param,
LRESULT* result);
void SetIcon(HICON small_icon, HICON app_icon);
@@ -18,7 +18,7 @@
void SetIcon(const gfx::ImageSkia& icon);
#endif
-@@ -250,7 +250,7 @@ class NativeWindowViews : public NativeWindow,
+@@ -254,7 +254,7 @@ class NativeWindowViews : public NativeWindow,
// events from resizing the window.
extensions::SizeConstraints old_size_constraints_;
diff --git a/devel/electron37/files/patch-electron_shell_common_api_electron__bindings.cc b/devel/electron37/files/patch-electron_shell_common_api_electron__bindings.cc
index 8261398f36d6..dc703ba6c1bd 100644
--- a/devel/electron37/files/patch-electron_shell_common_api_electron__bindings.cc
+++ b/devel/electron37/files/patch-electron_shell_common_api_electron__bindings.cc
@@ -1,6 +1,6 @@
---- electron/shell/common/api/electron_bindings.cc.orig 2025-07-02 10:12:01 UTC
+--- electron/shell/common/api/electron_bindings.cc.orig 2025-09-08 10:04:35 UTC
+++ electron/shell/common/api/electron_bindings.cc
-@@ -253,7 +253,7 @@ void ElectronBindings::DidReceiveMemoryDump(
+@@ -256,7 +256,7 @@ void ElectronBindings::DidReceiveMemoryDump(
if (target_pid == dump.pid()) {
auto dict = gin_helper::Dictionary::CreateEmpty(isolate);
const auto& osdump = dump.os_dump();
diff --git a/devel/electron37/files/patch-electron_shell_common_node__bindings.cc b/devel/electron37/files/patch-electron_shell_common_node__bindings.cc
index 93f950fd62a6..753e0a45b250 100644
--- a/devel/electron37/files/patch-electron_shell_common_node__bindings.cc
+++ b/devel/electron37/files/patch-electron_shell_common_node__bindings.cc
@@ -1,4 +1,4 @@
---- electron/shell/common/node_bindings.cc.orig 2025-07-02 10:12:01 UTC
+--- electron/shell/common/node_bindings.cc.orig 2025-08-13 14:21:20 UTC
+++ electron/shell/common/node_bindings.cc
@@ -47,7 +47,7 @@
#include "third_party/electron_node/src/debug_utils.h"
@@ -27,7 +27,7 @@
electron::crash_keys::SetCrashKey("electron.v8-oom.is_heap_oom",
std::to_string(details.is_heap_oom));
if (location) {
-@@ -581,7 +581,7 @@ void NodeBindings::Initialize(v8::Local<v8::Context> c
+@@ -580,7 +580,7 @@ void NodeBindings::Initialize(v8::Local<v8::Context> c
TRACE_EVENT0("electron", "NodeBindings::Initialize");
// Open node's error reporting system for browser process.
diff --git a/devel/electron37/files/patch-electron_shell_services_node_node__service.cc b/devel/electron37/files/patch-electron_shell_services_node_node__service.cc
index a69bf043abda..c12b95169c24 100644
--- a/devel/electron37/files/patch-electron_shell_services_node_node__service.cc
+++ b/devel/electron37/files/patch-electron_shell_services_node_node__service.cc
@@ -1,6 +1,6 @@
---- electron/shell/services/node/node_service.cc.orig 2025-07-02 10:12:01 UTC
+--- electron/shell/services/node/node_service.cc.orig 2025-08-25 07:57:03 UTC
+++ electron/shell/services/node/node_service.cc
-@@ -23,7 +23,7 @@
+@@ -24,7 +24,7 @@
#include "shell/common/node_includes.h"
#include "shell/services/node/parent_port.h"
@@ -9,7 +9,7 @@
#include "shell/common/crash_keys.h"
#endif
-@@ -40,7 +40,7 @@ void V8FatalErrorCallback(const char* location, const
+@@ -41,7 +41,7 @@ void V8FatalErrorCallback(const char* location, const
g_client_remote->OnV8FatalError(location, outstream.str());
}
diff --git a/devel/electron37/files/patch-electron_spec_api-app-spec.ts b/devel/electron37/files/patch-electron_spec_api-app-spec.ts
index af8cd3c05eb1..ebcc2de849bd 100644
--- a/devel/electron37/files/patch-electron_spec_api-app-spec.ts
+++ b/devel/electron37/files/patch-electron_spec_api-app-spec.ts
@@ -1,6 +1,6 @@
---- electron/spec/api-app-spec.ts.orig 2025-05-27 16:50:03 UTC
+--- electron/spec/api-app-spec.ts.orig 2025-08-13 14:21:20 UTC
+++ electron/spec/api-app-spec.ts
-@@ -126,11 +126,11 @@ describe('app module', () => {
+@@ -129,11 +129,11 @@ describe('app module', () => {
});
describe('app.getPreferredSystemLanguages()', () => {
@@ -14,7 +14,7 @@
const languages = app.getPreferredSystemLanguages();
if (languages.length) {
expect(languages).to.not.include('C');
-@@ -193,7 +193,7 @@ describe('app module', () => {
+@@ -196,7 +196,7 @@ describe('app module', () => {
expect(code).to.equal(123, 'exit code should be 123, if you see this please tag @MarshallOfSound');
});
@@ -23,7 +23,16 @@
const electronPath = process.execPath;
const appPath = path.join(fixturesPath, 'api', 'singleton');
appProcess = cp.spawn(electronPath, [appPath]);
-@@ -447,7 +447,7 @@ describe('app module', () => {
+@@ -360,7 +360,7 @@ describe('app module', () => {
+ });
+
+ // GitHub Actions macOS-13 runners used for x64 seem to have a problem with this test.
+- ifdescribe(process.platform !== 'linux' && !isMacOSx64)('app.{add|get|clear}RecentDocument(s)', () => {
++ ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd' && !isMacOSx64)('app.{add|get|clear}RecentDocument(s)', () => {
+ const tempFiles = [
+ path.join(fixturesPath, 'foo.txt'),
+ path.join(fixturesPath, 'bar.txt'),
+@@ -488,7 +488,7 @@ describe('app module', () => {
// let w = null
// before(function () {
@@ -32,16 +41,16 @@
// this.skip()
// }
// })
-@@ -554,7 +554,7 @@ describe('app module', () => {
+@@ -595,7 +595,7 @@ describe('app module', () => {
describe('app.badgeCount', () => {
const platformIsNotSupported =
- (process.platform === 'win32') ||
-- (process.platform === 'linux' && !app.isUnityRunning());
-+ ((process.platform === 'linux' || process.platform === 'freebsd') && !app.isUnityRunning());
+ (process.platform === 'win32') ||
+- (process.platform === 'linux' && !app.isUnityRunning());
++ (process.platform === 'linux' && !app.isUnityRunning()) || (process.platform === 'freebsd');
const expectedBadgeCount = 42;
-@@ -598,7 +598,7 @@ describe('app module', () => {
+@@ -639,7 +639,7 @@ describe('app module', () => {
});
});
@@ -50,7 +59,7 @@
const isMac = process.platform === 'darwin';
const isWin = process.platform === 'win32';
-@@ -978,7 +978,7 @@ describe('app module', () => {
+@@ -1019,7 +1019,7 @@ describe('app module', () => {
});
});
@@ -59,7 +68,7 @@
it('is mutable', () => {
const values = [false, true, false];
const setters: Array<(arg: boolean) => void> = [
-@@ -1178,7 +1178,7 @@ describe('app module', () => {
+@@ -1233,7 +1233,7 @@ describe('app module', () => {
});
});
@@ -68,7 +77,7 @@
let w: BrowserWindow;
before(function () {
-@@ -1313,7 +1313,7 @@ describe('app module', () => {
+@@ -1368,7 +1368,7 @@ describe('app module', () => {
describe('getApplicationNameForProtocol()', () => {
// TODO: Linux CI doesn't have registered http & https handlers
@@ -77,7 +86,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.
-@@ -1331,7 +1331,7 @@ describe('app module', () => {
+@@ -1386,7 +1386,7 @@ describe('app module', () => {
});
});
@@ -86,7 +95,7 @@
it('returns promise rejection for a bogus protocol', async function () {
await expect(
app.getApplicationInfoForProtocol('bogus-protocol://')
-@@ -1381,7 +1381,7 @@ describe('app module', () => {
+@@ -1436,7 +1436,7 @@ describe('app module', () => {
});
// FIXME Get these specs running on Linux CI
@@ -95,7 +104,7 @@
const iconPath = path.join(__dirname, 'fixtures/assets/icon.ico');
const sizes = {
small: 16,
-@@ -1463,7 +1463,7 @@ describe('app module', () => {
+@@ -1518,7 +1518,7 @@ describe('app module', () => {
expect(entry.memory).to.have.property('privateBytes').that.is.greaterThan(0);
}
@@ -104,7 +113,7 @@
expect(entry.sandboxed).to.be.a('boolean');
}
-@@ -1537,7 +1537,7 @@ describe('app module', () => {
+@@ -1592,7 +1592,7 @@ describe('app module', () => {
it('succeeds with complete GPUInfo', async () => {
const completeInfo = await getGPUInfo('complete');
@@ -113,7 +122,7 @@
// For linux and macOS complete info is same as basic info
await verifyBasicGPUInfo(completeInfo);
const basicInfo = await getGPUInfo('basic');
-@@ -1561,7 +1561,7 @@ describe('app module', () => {
+@@ -1616,7 +1616,7 @@ describe('app module', () => {
});
});
diff --git a/devel/electron37/files/patch-electron_spec_api-browser-window-spec.ts b/devel/electron37/files/patch-electron_spec_api-browser-window-spec.ts
index a2aaae07511d..7d0ad25633d7 100644
--- a/devel/electron37/files/patch-electron_spec_api-browser-window-spec.ts
+++ b/devel/electron37/files/patch-electron_spec_api-browser-window-spec.ts
@@ -1,4 +1,4 @@
---- electron/spec/api-browser-window-spec.ts.orig 2025-07-22 07:51:00 UTC
+--- electron/spec/api-browser-window-spec.ts.orig 2025-08-13 14:21:20 UTC
+++ electron/spec/api-browser-window-spec.ts
@@ -68,7 +68,7 @@ describe('BrowserWindow module', () => {
}).not.to.throw();
@@ -72,7 +72,7 @@
it('checks normal bounds when minimized', async () => {
const bounds = w.getBounds();
const minimize = once(w, 'minimize');
-@@ -2983,7 +2983,7 @@ describe('BrowserWindow module', () => {
+@@ -3069,7 +3069,7 @@ describe('BrowserWindow module', () => {
describe('BrowserWindow.setOpacity(opacity)', () => {
afterEach(closeAllWindows);
@@ -81,7 +81,7 @@
it('make window with initial opacity', () => {
const w = new BrowserWindow({ show: false, opacity: 0.5 });
expect(w.getOpacity()).to.equal(0.5);
-@@ -3009,7 +3009,7 @@ describe('BrowserWindow module', () => {
+@@ -3095,7 +3095,7 @@ describe('BrowserWindow module', () => {
});
});
@@ -90,7 +90,7 @@
it('sets 1 regardless of parameter', () => {
const w = new BrowserWindow({ show: false });
w.setOpacity(0);
-@@ -3220,7 +3220,7 @@ describe('BrowserWindow module', () => {
+@@ -3306,7 +3306,7 @@ describe('BrowserWindow module', () => {
expect(overlayRectPreMax.height).to.equal(size);
// 'maximize' event is not emitted on Linux in CI.
@@ -99,7 +99,7 @@
const maximize = once(w, 'maximize');
w.show();
w.maximize();
-@@ -3286,7 +3286,7 @@ describe('BrowserWindow module', () => {
+@@ -3372,7 +3372,7 @@ describe('BrowserWindow module', () => {
expect(preMaxHeight).to.equal(size);
// 'maximize' event is not emitted on Linux in CI.
@@ -108,7 +108,7 @@
const maximize = once(w, 'maximize');
w.show();
w.maximize();
-@@ -3951,7 +3951,7 @@ describe('BrowserWindow module', () => {
+@@ -4037,7 +4037,7 @@ describe('BrowserWindow module', () => {
expect(test.nodeTimers).to.equal(true);
expect(test.nodeUrl).to.equal(true);
@@ -117,7 +117,7 @@
expect(test.creationTime).to.be.null('creation time');
expect(test.systemMemoryInfo).to.be.null('system memory info');
} else {
-@@ -4456,7 +4456,7 @@ describe('BrowserWindow module', () => {
+@@ -4542,7 +4542,7 @@ describe('BrowserWindow module', () => {
});
});
@@ -126,7 +126,7 @@
afterEach(closeAllWindows);
it('emits an event when window is maximized', async () => {
const w = new BrowserWindow({ show: false });
-@@ -4727,7 +4727,7 @@ describe('BrowserWindow module', () => {
+@@ -4813,7 +4813,7 @@ describe('BrowserWindow module', () => {
// TODO(zcbenz):
// This test does not run on Linux CI. See:
// https://github.com/electron/electron/issues/28699
@@ -135,7 +135,7 @@
const w = new BrowserWindow({});
const maximize = once(w, 'maximize');
w.maximize();
-@@ -4744,7 +4744,7 @@ describe('BrowserWindow module', () => {
+@@ -4830,7 +4830,7 @@ describe('BrowserWindow module', () => {
});
// TODO(dsanders11): Enable once maximize event works on Linux again on CI
@@ -144,7 +144,7 @@
afterEach(closeAllWindows);
it('should show the window if it is not currently shown', async () => {
const w = new BrowserWindow({ show: false });
-@@ -4781,7 +4781,7 @@ describe('BrowserWindow module', () => {
+@@ -4867,7 +4867,7 @@ describe('BrowserWindow module', () => {
// TODO(dsanders11): Enable once minimize event works on Linux again.
// See https://github.com/electron/electron/issues/28699
@@ -153,7 +153,7 @@
const w = new BrowserWindow();
const minimize = once(w, 'minimize');
w.minimize();
-@@ -5267,7 +5267,7 @@ describe('BrowserWindow module', () => {
+@@ -5353,7 +5353,7 @@ describe('BrowserWindow module', () => {
});
// On Linux there is no "resizable" property of a window.
@@ -162,7 +162,7 @@
const w = new BrowserWindow({ show: false });
expect(w.resizable).to.be.true('resizable');
-@@ -5477,7 +5477,7 @@ describe('BrowserWindow module', () => {
+@@ -5563,7 +5563,7 @@ describe('BrowserWindow module', () => {
});
});
@@ -171,7 +171,7 @@
// Not implemented on Linux.
afterEach(closeAllWindows);
-@@ -6678,7 +6678,7 @@ describe('BrowserWindow module', () => {
+@@ -6764,7 +6764,7 @@ describe('BrowserWindow module', () => {
describe('"transparent" option', () => {
afterEach(closeAllWindows);
diff --git a/devel/electron37/files/patch-electron_spec_api-tray-spec.ts b/devel/electron37/files/patch-electron_spec_api-tray-spec.ts
index cb822fdca402..a2cc8bcf183b 100644
--- a/devel/electron37/files/patch-electron_spec_api-tray-spec.ts
+++ b/devel/electron37/files/patch-electron_spec_api-tray-spec.ts
@@ -1,5 +1,21 @@
---- electron/spec/api-tray-spec.ts.orig 2024-10-09 13:53:06 UTC
+--- electron/spec/api-tray-spec.ts.orig 2025-08-25 07:57:03 UTC
+++ electron/spec/api-tray-spec.ts
+@@ -30,13 +30,13 @@ describe('tray module', () => {
+ }).to.throw(/Failed to load image from path (.+)/);
+ });
+
+- ifit(process.platform !== 'linux')('throws a descriptive error if an invalid guid is given', () => {
++ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('throws a descriptive error if an invalid guid is given', () => {
+ expect(() => {
+ tray = new Tray(nativeImage.createEmpty(), 'I am not a guid');
+ }).to.throw('Invalid GUID format');
+ });
+
+- ifit(process.platform !== 'linux')('accepts a valid guid', () => {
++ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('accepts a valid guid', () => {
+ expect(() => {
+ tray = new Tray(nativeImage.createEmpty(), '0019A433-3526-48BA-A66C-676742C0FEFB');
+ }).to.not.throw();
@@ -131,7 +131,7 @@ describe('tray module', () => {
describe('tray.getBounds()', () => {
afterEach(() => { tray.destroy(); });
diff --git a/devel/electron37/files/patch-electron_spec_api-utility-process-spec.ts b/devel/electron37/files/patch-electron_spec_api-utility-process-spec.ts
index eab6d0294f3a..ef027ac5f72f 100644
--- a/devel/electron37/files/patch-electron_spec_api-utility-process-spec.ts
+++ b/devel/electron37/files/patch-electron_spec_api-utility-process-spec.ts
@@ -1,6 +1,6 @@
---- electron/spec/api-utility-process-spec.ts.orig 2025-07-02 10:12:01 UTC
+--- electron/spec/api-utility-process-spec.ts.orig 2025-08-13 14:21:20 UTC
+++ electron/spec/api-utility-process-spec.ts
-@@ -487,7 +487,7 @@ describe('utilityProcess module', () => {
+@@ -522,7 +522,7 @@ describe('utilityProcess module', () => {
expect(output).to.include(result);
});
@@ -9,7 +9,7 @@
const message = 'Message from utility process';
const child = utilityProcess.fork(path.join(fixturesPath, 'expose-main-process-module.js'));
await once(child, 'spawn');
-@@ -524,7 +524,7 @@ describe('utilityProcess module', () => {
+@@ -559,7 +559,7 @@ describe('utilityProcess module', () => {
await closeWindow(w);
});
diff --git a/devel/electron37/files/patch-electron_spec_api-web-contents-spec.ts b/devel/electron37/files/patch-electron_spec_api-web-contents-spec.ts
index 91ee421c5a05..001598b72527 100644
--- a/devel/electron37/files/patch-electron_spec_api-web-contents-spec.ts
+++ b/devel/electron37/files/patch-electron_spec_api-web-contents-spec.ts
@@ -1,6 +1,6 @@
---- electron/spec/api-web-contents-spec.ts.orig 2025-06-16 21:48:02 UTC
+--- electron/spec/api-web-contents-spec.ts.orig 2025-08-13 14:21:20 UTC
+++ electron/spec/api-web-contents-spec.ts
-@@ -2754,7 +2754,7 @@ describe('webContents module', () => {
+@@ -2797,7 +2797,7 @@ describe('webContents module', () => {
});
// TODO(codebytere): OOPIF printing is disabled on Linux at the moment due to crashes.
diff --git a/devel/electron37/files/patch-electron_spec_chromium-spec.ts b/devel/electron37/files/patch-electron_spec_chromium-spec.ts
index 8ae72b65b937..2d4b6ea82803 100644
--- a/devel/electron37/files/patch-electron_spec_chromium-spec.ts
+++ b/devel/electron37/files/patch-electron_spec_chromium-spec.ts
@@ -1,4 +1,4 @@
---- electron/spec/chromium-spec.ts.orig 2025-07-16 19:03:26 UTC
+--- electron/spec/chromium-spec.ts.orig 2025-09-27 17:30:52 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', () => {
-@@ -2958,12 +2958,12 @@ describe('font fallback', () => {
+@@ -3213,12 +3213,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>
-@@ -3515,7 +3515,7 @@ describe('paste execCommand', () => {
+@@ -3771,7 +3771,7 @@ describe('paste execCommand', () => {
});
});
diff --git a/devel/electron37/files/patch-net_dns_BUILD.gn b/devel/electron37/files/patch-net_dns_BUILD.gn
index d51291a1422a..2d636dae106c 100644
--- a/devel/electron37/files/patch-net_dns_BUILD.gn
+++ b/devel/electron37/files/patch-net_dns_BUILD.gn
@@ -1,4 +1,4 @@
---- net/dns/BUILD.gn.orig 2025-04-06 11:53:44 UTC
+--- net/dns/BUILD.gn.orig 2025-09-14 14:20:07 UTC
+++ net/dns/BUILD.gn
@@ -140,7 +140,7 @@ source_set("dns") {
"dns_config_service_android.cc",
@@ -9,7 +9,17 @@
sources += [
"dns_config_service_linux.cc",
"dns_config_service_linux.h",
-@@ -181,6 +181,7 @@ source_set("dns") {
+@@ -174,6 +174,9 @@ source_set("dns") {
+ }
+
+ deps = [ "//net:net_deps" ]
++ if (is_bsd) {
++ deps += [ "//services/screen_ai/buildflags" ]
++ }
+
+ public_deps = [
+ ":dns_client",
+@@ -181,6 +184,7 @@ source_set("dns") {
":host_resolver_manager",
":mdns_client",
"//net:net_public_deps",
@@ -17,7 +27,7 @@
]
allow_circular_includes_from = [
-@@ -452,9 +453,9 @@ source_set("tests") {
+@@ -452,9 +456,9 @@ source_set("tests") {
if (is_android) {
sources += [ "dns_config_service_android_unittest.cc" ]
diff --git a/devel/electron37/files/yarn.lock b/devel/electron37/files/yarn.lock
index 05eef81f0ca3..11e117a506a8 100644
--- a/devel/electron37/files/yarn.lock
+++ b/devel/electron37/files/yarn.lock
@@ -1058,11 +1058,6 @@
resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.2.tgz#6dd61e43ef60b34086287f83683a5c1b2dc53d20"
integrity sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==
-"@types/webpack-env@^1.18.5":
- version "1.18.5"
- resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.18.5.tgz#eccda0b04fe024bed505881e2e532f9c119169bf"
- integrity sha512-wz7kjjRRj8/Lty4B+Kr0LN6Ypc/3SymeCCGSbaXp2leH0ZVg/PriNiOwNj4bD4uphI7A8NXS4b6Gl373sfO5mA==
-
"@types/yauzl@^2.9.1":
version "2.10.0"
resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599"
@@ -1297,6 +1292,11 @@
resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e"
integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==
+"@xmldom/xmldom@^0.8.11":
+ version "0.8.11"
+ resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.11.tgz#b79de2d67389734c57c52595f7a7305e30c2d608"
+ integrity sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==
+
"@xtuc/ieee754@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
@@ -7285,14 +7285,7 @@ stringify-object@^3.3.0:
is-obj "^1.0.1"
is-regexp "^1.0.0"
-"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
- integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
- dependencies:
- ansi-regex "^5.0.1"
-
-strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==