git: 5e9767a19c55 - main - devel/electron31: update to 31.6.0

From: Hiroki Tagato <tagattie_at_FreeBSD.org>
Date: Sat, 14 Sep 2024 00:05:31 UTC
The branch main has been updated by tagattie:

URL: https://cgit.FreeBSD.org/ports/commit/?id=5e9767a19c55687245812b417aad534d99094999

commit 5e9767a19c55687245812b417aad534d99094999
Author:     Hiroki Tagato <tagattie@FreeBSD.org>
AuthorDate: 2024-09-14 00:03:02 +0000
Commit:     Hiroki Tagato <tagattie@FreeBSD.org>
CommitDate: 2024-09-14 00:05:22 +0000

    devel/electron31: update to 31.6.0
    
    Changelog:
    - https://github.com/electron/electron/releases/tag/v31.5.0
    - https://github.com/electron/electron/releases/tag/v31.6.0
    
    Reported by:    GitHub (watch releases)
---
 devel/electron31/Makefile                          |  3 +-
 devel/electron31/Makefile.version                  |  2 +-
 devel/electron31/distinfo                          | 14 +++----
 devel/electron31/files/patch-electron_BUILD.gn     | 10 ++---
 ...-electron_shell_app_electron__main__delegate.cc | 11 +++++-
 .../files/patch-electron_shell_app_node__main.cc   |  5 +--
 ...lectron_shell_browser_api_electron__api__app.cc | 39 +++++++++++++++---
 ...hell_browser_api_electron__api__base__window.cc |  4 +-
 ...l_browser_api_electron__api__crash__reporter.cc | 14 +++----
 ...browser_api_electron__api__desktop__capturer.cc |  6 +--
 ...ell_browser_api_electron__api__web__contents.cc |  4 +-
 ...hell_browser_api_electron__api__web__contents.h |  4 +-
 ...shell_browser_electron__browser__main__parts.cc | 16 ++++----
 ...electron_shell_browser_native__window__views.cc | 46 +++++++++++-----------
 ...ctron_shell_browser_printing_printing__utils.cc |  4 +-
 ..._shell_browser_ui_inspectable__web__contents.cc | 11 ++++++
 ...third__party_electron__node_deps_cares_BUILD.gn |  4 +-
 17 files changed, 121 insertions(+), 76 deletions(-)

diff --git a/devel/electron31/Makefile b/devel/electron31/Makefile
index a941fe8447c3..bef35a57c0b7 100644
--- a/devel/electron31/Makefile
+++ b/devel/electron31/Makefile
@@ -1,7 +1,6 @@
 PORTNAME=	electron
 DISTVERSIONPREFIX=	v
 DISTVERSION=	${ELECTRON_VER:S/-beta./.b/}
-PORTREVISION=	2
 PULSEMV=	16
 PULSEV=		${PULSEMV}.1
 CATEGORIES=	devel
@@ -217,7 +216,7 @@ CHROMIUM_VER=			126.0.6478.234
 # See ${WRKSRC}/third_party/node/node_modules.tar.gz.sha1 for CHROMIUM_NODE_MODULES_HASH
 CHROMIUM_NODE_MODULES_HASH=	97a0b3c4c39cf05de1eafb6ffdec0fddd643f0a2
 # See ${WRKSRC}/electron/DEPS for NODE_VER
-NODE_VER=			20.16.0
+NODE_VER=			20.17.0
 # See ${WRKSRC}/electron/DEPS for NAN_VER
 NAN_VER=			e14bdcd1f72d62bca1d541b66da43130384ec213
 # See ${WRKSRC}/electron/DEPS for SQUIRREL_MAC_VER
diff --git a/devel/electron31/Makefile.version b/devel/electron31/Makefile.version
index 4d020001fbfe..1b7443641a2b 100644
--- a/devel/electron31/Makefile.version
+++ b/devel/electron31/Makefile.version
@@ -1,2 +1,2 @@
-ELECTRON_VER=	31.4.0
+ELECTRON_VER=	31.6.0
 ELECTRON_VER_MAJOR=	${ELECTRON_VER:C/\..*//}
diff --git a/devel/electron31/distinfo b/devel/electron31/distinfo
index 24c44fb51eb8..7e7d45ba8fff 100644
--- a/devel/electron31/distinfo
+++ b/devel/electron31/distinfo
@@ -1,4 +1,4 @@
-TIMESTAMP = 1724068640
+TIMESTAMP = 1726142476
 SHA256 (electron/chromium-126.0.6478.234.tar.xz.0) = 5940007a2cc926c0eac498ab5121727f903a60b87c7b5a5216921c4ee1028d07
 SIZE (electron/chromium-126.0.6478.234.tar.xz.0) = 2000000000
 SHA256 (electron/chromium-126.0.6478.234.tar.xz.1) = 977c9af967876a9a362038dea652c4be55a71a9758cb1c538bfc8a5a0ee27962
@@ -7,12 +7,12 @@ SHA256 (electron/97a0b3c4c39cf05de1eafb6ffdec0fddd643f0a2) = dcfaea4d353d1df3d4a
 SIZE (electron/97a0b3c4c39cf05de1eafb6ffdec0fddd643f0a2) = 9761601
 SHA256 (electron/pulseaudio-16.1.tar.gz) = 027266c62f2a84422ac45fa721a649508f0f1628fb1fd9242315ac54ce2d7c92
 SIZE (electron/pulseaudio-16.1.tar.gz) = 2763111
-SHA256 (electron/electron-yarn-cache-31.4.0.tar.xz) = 8b9a13b091dacb8b4f3ea7bb44826d7cf3062bc2700462d20a261da3d61ca189
-SIZE (electron/electron-yarn-cache-31.4.0.tar.xz) = 29172376
-SHA256 (electron/electron-electron-v31.4.0_GH0.tar.gz) = d98dcf735b2c9ad2a83b819ccc51b637b157102b7ff6216bb2e2fac87197a28e
-SIZE (electron/electron-electron-v31.4.0_GH0.tar.gz) = 13823290
-SHA256 (electron/nodejs-node-v20.16.0_GH0.tar.gz) = d78104796225bcc150adf8ce4c486abfb390e1c71d0af7f28343803fe8588491
-SIZE (electron/nodejs-node-v20.16.0_GH0.tar.gz) = 115322530
+SHA256 (electron/electron-yarn-cache-31.6.0.tar.xz) = 8b9a13b091dacb8b4f3ea7bb44826d7cf3062bc2700462d20a261da3d61ca189
+SIZE (electron/electron-yarn-cache-31.6.0.tar.xz) = 29172376
+SHA256 (electron/electron-electron-v31.6.0_GH0.tar.gz) = 904579a00dc16bfe6fe92df532a46945c31074f1ed97f7ca6e930f7f6023ad22
+SIZE (electron/electron-electron-v31.6.0_GH0.tar.gz) = 13824822
+SHA256 (electron/nodejs-node-v20.17.0_GH0.tar.gz) = f0bdfe0e2c12524ebc24811e405926299241c11a829ef72562e14fee52eb385c
+SIZE (electron/nodejs-node-v20.17.0_GH0.tar.gz) = 115353463
 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/electron31/files/patch-electron_BUILD.gn b/devel/electron31/files/patch-electron_BUILD.gn
index c503cc8dd259..46c5497afbf8 100644
--- a/devel/electron31/files/patch-electron_BUILD.gn
+++ b/devel/electron31/files/patch-electron_BUILD.gn
@@ -1,4 +1,4 @@
---- electron/BUILD.gn.orig	2024-06-24 09:53:23 UTC
+--- electron/BUILD.gn.orig	2024-09-11 03:18:31 UTC
 +++ electron/BUILD.gn
 @@ -523,7 +523,7 @@ source_set("electron_lib") {
      defines += [ "GDK_DISABLE_DEPRECATION_WARNINGS" ]
@@ -22,7 +22,7 @@
    if (is_linux) {
      libs = [ "xshmfence" ]
      deps += [
-@@ -1196,7 +1202,7 @@ if (is_mac) {
+@@ -1197,7 +1203,7 @@ if (is_mac) {
        ":electron_lib",
        ":electron_win32_resources",
        ":packed_resources",
@@ -31,7 +31,7 @@
        "//content:sandbox_helper_win",
        "//electron/buildflags",
        "//ui/strings",
-@@ -1222,7 +1228,7 @@ if (is_mac) {
+@@ -1223,7 +1229,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" ]
      }
  
-@@ -1289,7 +1295,7 @@ if (is_mac) {
+@@ -1290,7 +1296,7 @@ if (is_mac) {
          configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
        }
  
@@ -49,7 +49,7 @@
          deps += [ "//sandbox/linux:chrome_sandbox" ]
        }
      }
-@@ -1397,7 +1403,7 @@ dist_zip("electron_dist_zip") {
+@@ -1398,7 +1404,7 @@ dist_zip("electron_dist_zip") {
      ":electron_version_file",
      ":licenses",
    ]
diff --git a/devel/electron31/files/patch-electron_shell_app_electron__main__delegate.cc b/devel/electron31/files/patch-electron_shell_app_electron__main__delegate.cc
index f078734cac0f..49967d25df80 100644
--- a/devel/electron31/files/patch-electron_shell_app_electron__main__delegate.cc
+++ b/devel/electron31/files/patch-electron_shell_app_electron__main__delegate.cc
@@ -1,4 +1,4 @@
---- electron/shell/app/electron_main_delegate.cc.orig	2024-06-24 09:53:23 UTC
+--- electron/shell/app/electron_main_delegate.cc.orig	2024-09-11 03:18:31 UTC
 +++ electron/shell/app/electron_main_delegate.cc
 @@ -59,13 +59,13 @@
  #include "chrome/child/v8_crashpad_support_win.h"
@@ -52,3 +52,12 @@
    crash_keys::SetCrashKeysFromCommandLine(*command_line);
    crash_keys::SetPlatformCrashKey();
  #endif
+@@ -409,7 +409,7 @@ std::optional<int> ElectronMainDelegate::PreBrowserMai
+ #if BUILDFLAG(IS_MAC)
+   RegisterAtomCrApp();
+ #endif
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+   // Set the global activation token sent as an environment variable.
+   auto env = base::Environment::Create();
+   base::nix::ExtractXdgActivationTokenFromEnv(*env);
diff --git a/devel/electron31/files/patch-electron_shell_app_node__main.cc b/devel/electron31/files/patch-electron_shell_app_node__main.cc
index 887eeee21238..a9953764f23d 100644
--- a/devel/electron31/files/patch-electron_shell_app_node__main.cc
+++ b/devel/electron31/files/patch-electron_shell_app_node__main.cc
@@ -1,4 +1,4 @@
---- electron/shell/app/node_main.cc.orig	2024-04-16 14:29:17 UTC
+--- electron/shell/app/node_main.cc.orig	2024-09-11 03:18:31 UTC
 +++ electron/shell/app/node_main.cc
 @@ -48,7 +48,7 @@
  #include "shell/common/mac/codesign_util.h"
@@ -9,7 +9,7 @@
  #include "components/crash/core/app/crashpad.h"  // nogncheck
  #include "shell/app/electron_crash_reporter_client.h"
  #include "shell/common/crash_keys.h"
-@@ -99,7 +99,7 @@ bool UnsetHijackableEnvs(base::Environment* env) {
+@@ -99,14 +99,14 @@ bool UnsetHijackableEnvs(base::Environment* env) {
  }
  #endif
  
@@ -18,7 +18,6 @@
  void SetCrashKeyStub(const std::string& key, const std::string& value) {}
  void ClearCrashKeyStub(const std::string& key) {}
  #endif
-@@ -110,7 +110,7 @@ v8::Local<v8::Value> GetParameters(v8::Isolate* isolat
  
  v8::Local<v8::Value> GetParameters(v8::Isolate* isolate) {
    std::map<std::string, std::string> keys;
diff --git a/devel/electron31/files/patch-electron_shell_browser_api_electron__api__app.cc b/devel/electron31/files/patch-electron_shell_browser_api_electron__api__app.cc
index 6dbc74d6c9f6..45f7731b6967 100644
--- a/devel/electron31/files/patch-electron_shell_browser_api_electron__api__app.cc
+++ b/devel/electron31/files/patch-electron_shell_browser_api_electron__api__app.cc
@@ -1,6 +1,24 @@
---- electron/shell/browser/api/electron_api_app.cc.orig	2024-06-24 09:53:23 UTC
+--- electron/shell/browser/api/electron_api_app.cc.orig	2024-09-11 03:18:31 UTC
 +++ electron/shell/browser/api/electron_api_app.cc
-@@ -591,7 +591,7 @@ void App::OnFinishLaunching(base::Value::Dict launch_i
+@@ -92,7 +92,7 @@
+ #include "shell/browser/ui/cocoa/electron_bundle_mover.h"
+ #endif
+ 
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "base/nix/scoped_xdg_activation_token_injector.h"
+ #include "base/nix/xdg_util.h"
+ #endif
+@@ -416,7 +416,7 @@ bool NotificationCallbackWrapper(
+     base::CommandLine cmd,
+     const base::FilePath& cwd,
+     const std::vector<uint8_t> additional_data) {
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+   // 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.
+@@ -602,7 +602,7 @@ void App::OnFinishLaunching(base::Value::Dict launch_i
  }
  
  void App::OnFinishLaunching(base::Value::Dict launch_info) {
@@ -9,7 +27,7 @@
    // Set the application name for audio streams shown in external
    // applications. Only affects pulseaudio currently.
    media::AudioManager::SetGlobalAppName(Browser::Get()->GetName());
-@@ -916,7 +916,7 @@ void App::SetDesktopName(const std::string& desktop_na
+@@ -927,7 +927,7 @@ void App::SetDesktopName(const std::string& desktop_na
  }
  
  void App::SetDesktopName(const std::string& desktop_name) {
@@ -18,7 +36,16 @@
    auto env = base::Environment::Create();
    env->SetVar("CHROME_DESKTOP", desktop_name);
  #endif
-@@ -1300,7 +1300,7 @@ std::vector<gin_helper::Dictionary> App::GetAppMetrics
+@@ -1032,7 +1032,7 @@ bool App::RequestSingleInstanceLock(gin::Arguments* ar
+       base::BindRepeating(NotificationCallbackWrapper, cb));
+ #endif
+ 
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+   // 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.
+@@ -1320,7 +1320,7 @@ std::vector<gin_helper::Dictionary> App::GetAppMetrics
        pid_dict.Set("name", process_metric.second->name);
      }
  
@@ -27,7 +54,7 @@
      auto memory_info = process_metric.second->GetMemoryInfo();
  
      auto memory_dict = gin_helper::Dictionary::CreateEmpty(isolate);
-@@ -1683,7 +1683,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild
+@@ -1703,7 +1703,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild
        .SetMethod(
            "removeAsDefaultProtocolClient",
            base::BindRepeating(&Browser::RemoveAsDefaultProtocolClient, browser))
@@ -36,7 +63,7 @@
        .SetMethod(
            "getApplicationInfoForProtocol",
            base::BindRepeating(&Browser::GetApplicationInfoForProtocol, browser))
-@@ -1741,7 +1741,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild
+@@ -1761,7 +1761,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild
        .SetMethod("getJumpListSettings", &App::GetJumpListSettings)
        .SetMethod("setJumpList", &App::SetJumpList)
  #endif
diff --git a/devel/electron31/files/patch-electron_shell_browser_api_electron__api__base__window.cc b/devel/electron31/files/patch-electron_shell_browser_api_electron__api__base__window.cc
index fa2d043a22cf..806d6d4025e5 100644
--- a/devel/electron31/files/patch-electron_shell_browser_api_electron__api__base__window.cc
+++ b/devel/electron31/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	2024-08-12 10:09:34 UTC
+--- electron/shell/browser/api/electron_api_base_window.cc.orig	2024-09-11 03:18:31 UTC
 +++ electron/shell/browser/api/electron_api_base_window.cc
 @@ -40,7 +40,7 @@
  #include "shell/browser/ui/views/win_frame_view.h"
@@ -27,7 +27,7 @@
  void BaseWindow::SetTitleBarOverlay(const gin_helper::Dictionary& options,
                                      gin_helper::Arguments* args) {
    // Ensure WCO is already enabled on this window
-@@ -1301,7 +1301,7 @@ void BaseWindow::BuildPrototype(v8::Isolate* isolate,
+@@ -1300,7 +1300,7 @@ void BaseWindow::BuildPrototype(v8::Isolate* isolate,
        .SetMethod("setThumbnailToolTip", &BaseWindow::SetThumbnailToolTip)
        .SetMethod("setAppDetails", &BaseWindow::SetAppDetails)
  #endif
diff --git a/devel/electron31/files/patch-electron_shell_browser_api_electron__api__crash__reporter.cc b/devel/electron31/files/patch-electron_shell_browser_api_electron__api__crash__reporter.cc
index f229a1bde031..d90945f84df3 100644
--- a/devel/electron31/files/patch-electron_shell_browser_api_electron__api__crash__reporter.cc
+++ b/devel/electron31/files/patch-electron_shell_browser_api_electron__api__crash__reporter.cc
@@ -1,4 +1,4 @@
---- electron/shell/browser/api/electron_api_crash_reporter.cc.orig	2023-06-07 10:09:25 UTC
+--- electron/shell/browser/api/electron_api_crash_reporter.cc.orig	2024-09-11 03:18:31 UTC
 +++ electron/shell/browser/api/electron_api_crash_reporter.cc
 @@ -31,7 +31,7 @@
  #include "shell/common/process_util.h"
@@ -9,7 +9,7 @@
  #include "components/crash/core/app/crashpad.h"  // nogncheck
  #include "components/crash/core/browser/crash_upload_list_crashpad.h"  // nogncheck
  #include "components/crash/core/common/crash_key.h"
-@@ -66,7 +66,7 @@ bool g_crash_reporter_initialized = false;
+@@ -66,7 +66,7 @@ namespace electron::api::crash_reporter {
  
  namespace electron::api::crash_reporter {
  
@@ -18,7 +18,7 @@
  namespace {
  
  void NoOp() {}
-@@ -133,7 +133,7 @@ void Start(const std::string& submit_url,
+@@ -137,7 +137,7 @@ void Start(const std::string& submit_url,
             const std::map<std::string, std::string>& extra,
             bool is_node_process) {
    TRACE_EVENT0("electron", "crash_reporter::Start");
@@ -27,7 +27,7 @@
    if (g_crash_reporter_initialized)
      return;
    g_crash_reporter_initialized = true;
-@@ -179,7 +179,7 @@ void Start(const std::string& submit_url,
+@@ -183,7 +183,7 @@ namespace {
  
  namespace {
  
@@ -36,7 +36,7 @@
  void GetUploadedReports(
      v8::Isolate* isolate,
      base::OnceCallback<void(v8::Local<v8::Value>)> callback) {
-@@ -235,13 +235,13 @@ v8::Local<v8::Value> GetUploadedReports(v8::Isolate* i
+@@ -239,13 +239,13 @@ void SetUploadToServer(bool upload) {
  #endif
  
  void SetUploadToServer(bool upload) {
@@ -52,7 +52,7 @@
    return false;
  #else
    return ElectronCrashReporterClient::Get()->GetCollectStatsConsent();
-@@ -250,7 +250,7 @@ bool GetUploadToServer() {
+@@ -254,7 +254,7 @@ v8::Local<v8::Value> GetParameters(v8::Isolate* isolat
  
  v8::Local<v8::Value> GetParameters(v8::Isolate* isolate) {
    std::map<std::string, std::string> keys;
@@ -61,7 +61,7 @@
    electron::crash_keys::GetCrashKeys(&keys);
  #endif
    return gin::ConvertToV8(isolate, keys);
-@@ -262,7 +262,7 @@ void Initialize(v8::Local<v8::Object> exports,
+@@ -266,7 +266,7 @@ void Initialize(v8::Local<v8::Object> exports,
                  void* priv) {
    gin_helper::Dictionary dict(context->GetIsolate(), exports);
    dict.SetMethod("start", &electron::api::crash_reporter::Start);
diff --git a/devel/electron31/files/patch-electron_shell_browser_api_electron__api__desktop__capturer.cc b/devel/electron31/files/patch-electron_shell_browser_api_electron__api__desktop__capturer.cc
index 8ae2b228901e..77c32f5597c8 100644
--- a/devel/electron31/files/patch-electron_shell_browser_api_electron__api__desktop__capturer.cc
+++ b/devel/electron31/files/patch-electron_shell_browser_api_electron__api__desktop__capturer.cc
@@ -1,9 +1,9 @@
---- electron/shell/browser/api/electron_api_desktop_capturer.cc.orig	2024-08-12 10:09:34 UTC
+--- electron/shell/browser/api/electron_api_desktop_capturer.cc.orig	2024-09-11 03:18:31 UTC
 +++ electron/shell/browser/api/electron_api_desktop_capturer.cc
-@@ -45,7 +45,7 @@
- #include "ui/base/cocoa/permissions_utils.h"
+@@ -46,7 +46,7 @@ namespace {
  #endif
  
+ namespace {
 -#if BUILDFLAG(IS_LINUX)
 +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
  // Private function in ui/base/x/x11_display_util.cc
diff --git a/devel/electron31/files/patch-electron_shell_browser_api_electron__api__web__contents.cc b/devel/electron31/files/patch-electron_shell_browser_api_electron__api__web__contents.cc
index 4d57cda7b7af..4f29b01ae033 100644
--- a/devel/electron31/files/patch-electron_shell_browser_api_electron__api__web__contents.cc
+++ b/devel/electron31/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	2024-07-24 17:23:33 UTC
+--- electron/shell/browser/api/electron_api_web_contents.cc.orig	2024-09-11 03:18:31 UTC
 +++ electron/shell/browser/api/electron_api_web_contents.cc
 @@ -153,11 +153,11 @@
  #include "ui/base/cocoa/defaults_utils.h"
@@ -41,7 +41,7 @@
      // A generic |CrashDumpHungChildProcess()| is not implemented for Linux.
      // Instead we send an explicit IPC to crash on the renderer's IO thread.
      rph->ForceCrash();
-@@ -3300,7 +3300,7 @@ void WebContents::Focus() {
+@@ -3296,7 +3296,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.
diff --git a/devel/electron31/files/patch-electron_shell_browser_api_electron__api__web__contents.h b/devel/electron31/files/patch-electron_shell_browser_api_electron__api__web__contents.h
index e168c2a1099c..fe90986cebd0 100644
--- a/devel/electron31/files/patch-electron_shell_browser_api_electron__api__web__contents.h
+++ b/devel/electron31/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	2024-06-24 09:53:23 UTC
+--- electron/shell/browser/api/electron_api_web_contents.h.orig	2024-09-11 03:18:31 UTC
 +++ electron/shell/browser/api/electron_api_web_contents.h
-@@ -762,7 +762,7 @@ class WebContents : public ExclusiveAccessContext,
+@@ -764,7 +764,7 @@ class WebContents : public ExclusiveAccessContext,
  #if defined(TOOLKIT_VIEWS) && !BUILDFLAG(IS_MAC)
    ui::ImageModel GetDevToolsWindowIcon() override;
  #endif
diff --git a/devel/electron31/files/patch-electron_shell_browser_electron__browser__main__parts.cc b/devel/electron31/files/patch-electron_shell_browser_electron__browser__main__parts.cc
index afe7b88d8ce1..8a16f5112ee2 100644
--- a/devel/electron31/files/patch-electron_shell_browser_electron__browser__main__parts.cc
+++ b/devel/electron31/files/patch-electron_shell_browser_electron__browser__main__parts.cc
@@ -1,4 +1,4 @@
---- electron/shell/browser/electron_browser_main_parts.cc.orig	2024-07-24 17:23:33 UTC
+--- electron/shell/browser/electron_browser_main_parts.cc.orig	2024-09-11 03:18:31 UTC
 +++ electron/shell/browser/electron_browser_main_parts.cc
 @@ -78,7 +78,7 @@
  #include "ui/wm/core/wm_state.h"
@@ -18,7 +18,7 @@
  class LinuxUiGetterImpl : public ui::LinuxUiGetter {
   public:
    LinuxUiGetterImpl() = default;
-@@ -214,7 +214,7 @@ int ElectronBrowserMainParts::PreEarlyInitialization()
+@@ -209,7 +209,7 @@ int ElectronBrowserMainParts::PreEarlyInitialization()
  #if BUILDFLAG(IS_POSIX)
    HandleSIGCHLD();
  #endif
@@ -27,7 +27,7 @@
    DetectOzonePlatform();
    ui::OzonePlatform::PreEarlyInitialization();
  #endif
-@@ -304,7 +304,7 @@ int ElectronBrowserMainParts::PreCreateThreads() {
+@@ -299,7 +299,7 @@ int ElectronBrowserMainParts::PreCreateThreads() {
    // happen before the ResourceBundle is loaded
    if (locale.empty())
      l10n_util::OverrideLocaleWithCocoaLocale();
@@ -36,7 +36,7 @@
    // l10n_util::GetApplicationLocaleInternal uses g_get_language_names(),
    // which keys off of getenv("LC_ALL").
    // We must set this env first to make ui::ResourceBundle accept the custom
-@@ -335,7 +335,7 @@ int ElectronBrowserMainParts::PreCreateThreads() {
+@@ -330,7 +330,7 @@ int ElectronBrowserMainParts::PreCreateThreads() {
    ElectronBrowserClient::SetApplicationLocale(app_locale);
    fake_browser_process_->SetApplicationLocale(app_locale);
  
@@ -45,7 +45,7 @@
    // Reset to the original LC_ALL since we should not be changing it.
    if (!locale.empty()) {
      if (lc_all)
-@@ -395,7 +395,7 @@ void ElectronBrowserMainParts::ToolkitInitialized() {
+@@ -390,7 +390,7 @@ void ElectronBrowserMainParts::ToolkitInitialized() {
  }
  
  void ElectronBrowserMainParts::ToolkitInitialized() {
@@ -54,7 +54,7 @@
    auto* linux_ui = ui::GetDefaultLinuxUi();
    CHECK(linux_ui);
    linux_ui_getter_ = std::make_unique<LinuxUiGetterImpl>();
-@@ -501,7 +501,7 @@ void ElectronBrowserMainParts::PostCreateMainMessageLo
+@@ -496,7 +496,7 @@ void ElectronBrowserMainParts::PostCreateMainMessageLo
  }
  
  void ElectronBrowserMainParts::PostCreateMainMessageLoop() {
@@ -63,7 +63,7 @@
    std::string app_name = electron::Browser::Get()->GetName();
  #endif
  #if BUILDFLAG(IS_LINUX)
-@@ -513,7 +513,9 @@ void ElectronBrowserMainParts::PostCreateMainMessageLo
+@@ -508,7 +508,9 @@ void ElectronBrowserMainParts::PostCreateMainMessageLo
  
    if (!bluez::BluezDBusManager::IsInitialized())
      bluez::DBusBluezManagerWrapperLinux::Initialize();
@@ -73,7 +73,7 @@
    // Set up crypt config. This needs to be done before anything starts the
    // network service, as the raw encryption key needs to be shared with the
    // network service for encrypted cookie storage.
-@@ -614,7 +616,7 @@ void ElectronBrowserMainParts::PostMainMessageLoopRun(
+@@ -609,7 +611,7 @@ void ElectronBrowserMainParts::PostMainMessageLoopRun(
    fake_browser_process_->PostMainMessageLoopRun();
    content::DevToolsAgentHost::StopRemoteDebuggingPipeHandler();
  
diff --git a/devel/electron31/files/patch-electron_shell_browser_native__window__views.cc b/devel/electron31/files/patch-electron_shell_browser_native__window__views.cc
index e13b55bfbc57..f734a5dbeef6 100644
--- a/devel/electron31/files/patch-electron_shell_browser_native__window__views.cc
+++ b/devel/electron31/files/patch-electron_shell_browser_native__window__views.cc
@@ -1,6 +1,6 @@
---- electron/shell/browser/native_window_views.cc.orig	2024-07-15 15:22:56 UTC
+--- electron/shell/browser/native_window_views.cc.orig	2024-09-11 03:18:31 UTC
 +++ electron/shell/browser/native_window_views.cc
-@@ -52,7 +52,7 @@
+@@ -53,7 +53,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"
-@@ -297,7 +297,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper:
+@@ -298,7 +298,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";
-@@ -323,7 +323,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper:
+@@ -324,7 +324,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.
    bool use_dark_theme = false;
    if (options.Get(options::kDarkTheme, &use_dark_theme) && use_dark_theme) {
-@@ -425,7 +425,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper:
+@@ -426,7 +426,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);
-@@ -461,7 +461,7 @@ void NativeWindowViews::SetGTKDarkThemeEnabled(bool us
+@@ -462,7 +462,7 @@ void NativeWindowViews::SetGTKDarkThemeEnabled(bool us
  }
  
  void NativeWindowViews::SetGTKDarkThemeEnabled(bool use_dark_theme) {
@@ -45,7 +45,7 @@
    if (IsX11()) {
      const std::string color = use_dark_theme ? "dark" : "light";
      auto* connection = x11::Connection::Get();
-@@ -523,7 +523,7 @@ void NativeWindowViews::Show() {
+@@ -524,7 +524,7 @@ void NativeWindowViews::Show() {
  
    NotifyWindowShow();
  
@@ -54,7 +54,7 @@
    if (global_menu_bar_)
      global_menu_bar_->OnWindowMapped();
  
-@@ -539,7 +539,7 @@ void NativeWindowViews::ShowInactive() {
+@@ -540,7 +540,7 @@ void NativeWindowViews::ShowInactive() {
  
    NotifyWindowShow();
  
@@ -63,7 +63,7 @@
    if (global_menu_bar_)
      global_menu_bar_->OnWindowMapped();
  #endif
-@@ -553,7 +553,7 @@ void NativeWindowViews::Hide() {
+@@ -554,7 +554,7 @@ void NativeWindowViews::Hide() {
  
    NotifyWindowHide();
  
@@ -72,7 +72,7 @@
    if (global_menu_bar_)
      global_menu_bar_->OnWindowUnmapped();
  #endif
-@@ -584,7 +584,7 @@ bool NativeWindowViews::IsEnabled() const {
+@@ -585,7 +585,7 @@ bool NativeWindowViews::IsEnabled() const {
  bool NativeWindowViews::IsEnabled() const {
  #if BUILDFLAG(IS_WIN)
    return ::IsWindowEnabled(GetAcceleratedWidget());
@@ -81,7 +81,7 @@
    if (IsX11())
      return !event_disabler_.get();
    NOTIMPLEMENTED();
-@@ -640,7 +640,7 @@ void NativeWindowViews::SetEnabledInternal(bool enable
+@@ -641,7 +641,7 @@ void NativeWindowViews::SetEnabledInternal(bool enable
  #endif
  }
  
@@ -90,7 +90,7 @@
  void NativeWindowViews::Maximize() {
    if (IsVisible()) {
      widget()->Maximize();
-@@ -780,7 +780,7 @@ void NativeWindowViews::SetBounds(const gfx::Rect& bou
+@@ -781,7 +781,7 @@ void NativeWindowViews::SetBounds(const gfx::Rect& bou
    }
  #endif
  
@@ -99,7 +99,7 @@
    // On Linux and Windows the minimum and maximum size should be updated with
    // window size when window is not resizable.
    if (!resizable_) {
-@@ -1040,7 +1040,7 @@ bool NativeWindowViews::IsClosable() const {
+@@ -1041,7 +1041,7 @@ bool NativeWindowViews::IsClosable() const {
      return false;
    }
    return !(info.fState & MFS_DISABLED);
@@ -108,7 +108,7 @@
    return true;
  #endif
  }
-@@ -1080,7 +1080,7 @@ void NativeWindowViews::Center() {
+@@ -1081,7 +1081,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() {
@@ -117,7 +117,7 @@
    auto display =
        display::Screen::GetScreen()->GetDisplayNearestWindow(GetNativeWindow());
    gfx::Rect window_bounds_in_screen = display.work_area();
-@@ -1303,7 +1303,7 @@ void NativeWindowViews::SetMenu(ElectronMenuModel* men
+@@ -1304,7 +1304,7 @@ void NativeWindowViews::SetMenu(ElectronMenuModel* men
  }
  
  void NativeWindowViews::SetMenu(ElectronMenuModel* menu_model) {
@@ -126,7 +126,7 @@
    // Remove global menu bar.
    if (global_menu_bar_ && menu_model == nullptr) {
      global_menu_bar_.reset();
-@@ -1358,7 +1358,7 @@ void NativeWindowViews::SetParentWindow(NativeWindow* 
+@@ -1359,7 +1359,7 @@ void NativeWindowViews::SetParentWindow(NativeWindow* 
  void NativeWindowViews::SetParentWindow(NativeWindow* parent) {
    NativeWindow::SetParentWindow(parent);
  
@@ -135,7 +135,7 @@
    if (IsX11()) {
      auto* connection = x11::Connection::Get();
      connection->SetProperty(
-@@ -1404,7 +1404,7 @@ void NativeWindowViews::SetProgressBar(double progress
+@@ -1405,7 +1405,7 @@ void NativeWindowViews::SetProgressBar(double progress
                                         NativeWindow::ProgressState state) {
  #if BUILDFLAG(IS_WIN)
    taskbar_host_.SetProgressBar(GetAcceleratedWidget(), progress, state);
@@ -144,7 +144,7 @@
    if (unity::IsRunning()) {
      unity::SetProgressFraction(progress);
    }
-@@ -1475,7 +1475,7 @@ bool NativeWindowViews::IsVisibleOnAllWorkspaces() con
+@@ -1476,7 +1476,7 @@ bool NativeWindowViews::IsVisibleOnAllWorkspaces() con
  }
  
  bool NativeWindowViews::IsVisibleOnAllWorkspaces() const {
@@ -153,7 +153,7 @@
    if (IsX11()) {
      // Use the presence/absence of _NET_WM_STATE_STICKY in _NET_WM_STATE to
      // determine whether the current window is visible on all workspaces.
-@@ -1498,7 +1498,7 @@ content::DesktopMediaID NativeWindowViews::GetDesktopM
+@@ -1499,7 +1499,7 @@ content::DesktopMediaID NativeWindowViews::GetDesktopM
  #if BUILDFLAG(IS_WIN)
    window_handle =
        reinterpret_cast<content::DesktopMediaID::Id>(accelerated_widget);
@@ -162,7 +162,7 @@
    window_handle = static_cast<uint32_t>(accelerated_widget);
  #endif
    aura::WindowTreeHost* const host =
-@@ -1596,7 +1596,7 @@ void NativeWindowViews::SetIcon(HICON window_icon, HIC
+@@ -1597,7 +1597,7 @@ void NativeWindowViews::SetIcon(HICON window_icon, HIC
    SendMessage(hwnd, WM_SETICON, ICON_BIG,
                reinterpret_cast<LPARAM>(app_icon_.get()));
  }
@@ -171,7 +171,7 @@
  void NativeWindowViews::SetIcon(const gfx::ImageSkia& icon) {
    auto* tree_host = views::DesktopWindowTreeHostLinux::GetHostForWidget(
        GetAcceleratedWidget());
-@@ -1674,7 +1674,7 @@ bool NativeWindowViews::CanMinimize() const {
+@@ -1683,7 +1683,7 @@ bool NativeWindowViews::CanMinimize() const {
  bool NativeWindowViews::CanMinimize() const {
  #if BUILDFLAG(IS_WIN)
    return minimizable_;
@@ -180,7 +180,7 @@
    return true;
  #endif
  }
-@@ -1730,7 +1730,7 @@ void NativeWindowViews::HandleKeyboardEvent(
+@@ -1739,7 +1739,7 @@ void NativeWindowViews::HandleKeyboardEvent(
    if (widget_destroyed_)
      return;
  
@@ -189,7 +189,7 @@
    if (event.windows_key_code == ui::VKEY_BROWSER_BACK)
      NotifyWindowExecuteAppCommand(kBrowserBackward);
    else if (event.windows_key_code == ui::VKEY_BROWSER_FORWARD)
-@@ -1749,7 +1749,7 @@ void NativeWindowViews::OnMouseEvent(ui::MouseEvent* e
+@@ -1758,7 +1758,7 @@ void NativeWindowViews::OnMouseEvent(ui::MouseEvent* e
    // Alt+Click should not toggle menu bar.
    root_view_.ResetAltState();
  
diff --git a/devel/electron31/files/patch-electron_shell_browser_printing_printing__utils.cc b/devel/electron31/files/patch-electron_shell_browser_printing_printing__utils.cc
index 887b92fbeaef..91d5e8fe6678 100644
--- a/devel/electron31/files/patch-electron_shell_browser_printing_printing__utils.cc
+++ b/devel/electron31/files/patch-electron_shell_browser_printing_printing__utils.cc
@@ -1,6 +1,6 @@
---- electron/shell/browser/printing/printing_utils.cc.orig	2024-04-19 08:41:45 UTC
+--- electron/shell/browser/printing/printing_utils.cc.orig	2024-09-11 03:18:31 UTC
 +++ electron/shell/browser/printing/printing_utils.cc
-@@ -20,7 +20,7 @@
+@@ -28,7 +28,7 @@
  #include <ApplicationServices/ApplicationServices.h>
  #endif
  
diff --git a/devel/electron31/files/patch-electron_shell_browser_ui_inspectable__web__contents.cc b/devel/electron31/files/patch-electron_shell_browser_ui_inspectable__web__contents.cc
new file mode 100644
index 000000000000..f7085669fdb6
--- /dev/null
+++ b/devel/electron31/files/patch-electron_shell_browser_ui_inspectable__web__contents.cc
@@ -0,0 +1,11 @@
+--- electron/shell/browser/ui/inspectable_web_contents.cc.orig	2024-09-12 12:29:05 UTC
++++ electron/shell/browser/ui/inspectable_web_contents.cc
+@@ -554,7 +554,7 @@ void InspectableWebContents::LoadCompleted() {
+           prefs.FindString("currentDockState");
+       base::RemoveChars(*current_dock_state, "\"", &dock_state_);
+     }
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+     auto* api_web_contents = api::WebContents::From(GetWebContents());
+     if (api_web_contents) {
+       auto* win =
diff --git a/devel/electron31/files/patch-third__party_electron__node_deps_cares_BUILD.gn b/devel/electron31/files/patch-third__party_electron__node_deps_cares_BUILD.gn
index 5bdbfac73b1c..bb1fb556c07f 100644
--- a/devel/electron31/files/patch-third__party_electron__node_deps_cares_BUILD.gn
+++ b/devel/electron31/files/patch-third__party_electron__node_deps_cares_BUILD.gn
@@ -1,6 +1,6 @@
---- third_party/electron_node/deps/cares/BUILD.gn.orig	2024-08-19 07:26:00 UTC
+--- third_party/electron_node/deps/cares/BUILD.gn.orig	2024-09-12 12:23:36 UTC
 +++ third_party/electron_node/deps/cares/BUILD.gn
-@@ -154,9 +154,14 @@ static_library("cares") {
+@@ -156,9 +156,14 @@ static_library("cares") {
      defines += [ "HAVE_CONFIG_H" ]
    }