git: 9d7e29a85716 - main - devel/electron30: update to 30.2.0

From: Hiroki Tagato <tagattie_at_FreeBSD.org>
Date: Tue, 16 Jul 2024 09:19:42 UTC
The branch main has been updated by tagattie:

URL: https://cgit.FreeBSD.org/ports/commit/?id=9d7e29a85716a5e392e4642b8ee387fdf9e2945f

commit 9d7e29a85716a5e392e4642b8ee387fdf9e2945f
Author:     Hiroki Tagato <tagattie@FreeBSD.org>
AuthorDate: 2024-07-16 09:15:17 +0000
Commit:     Hiroki Tagato <tagattie@FreeBSD.org>
CommitDate: 2024-07-16 09:19:33 +0000

    devel/electron30: update to 30.2.0
    
    Changelog: https://github.com/electron/electron/releases/tag/v30.2.0
    
    Reported by:    GitHub (watch releases)
    MFH:            2024Q3
    Security:       6410f91d-1214-4f92-b7e0-852e39e265f9
---
 devel/electron30/Makefile                          |  2 +-
 devel/electron30/Makefile.version                  |  2 +-
 devel/electron30/distinfo                          | 14 +++----
 devel/electron30/files/package.json                |  4 --
 .../electron30/files/patch-electron_filenames.gni  |  4 +-
 .../files/patch-electron_script_lib_utils.js       |  4 +-
 ...lectron_shell_browser_api_electron__api__app.cc | 10 ++---
 ...hell_browser_api_electron__api__base__window.cc | 31 ++++++++++++++-
 ...shell_browser_api_electron__api__base__window.h | 11 ++++++
 .../patch-electron_shell_browser_native__window.cc |  4 +-
 ...electron_shell_browser_native__window__views.cc | 46 +++++++++++-----------
 ...-electron_shell_browser_native__window__views.h |  4 +-
 .../patch-electron_shell_common_node__bindings.cc  |  6 +--
 .../files/patch-electron_spec_api-app-spec.ts      |  6 +--
 .../patch-electron_spec_api-browser-window-spec.ts | 36 ++++++++++++-----
 ...patch-electron_spec_api-utility-process-spec.ts | 13 +++++-
 .../files/patch-electron_spec_chromium-spec.ts     |  6 +--
 devel/electron30/files/yarn.lock                   | 38 +-----------------
 18 files changed, 133 insertions(+), 108 deletions(-)

diff --git a/devel/electron30/Makefile b/devel/electron30/Makefile
index 4783af68861c..b5229bbc859f 100644
--- a/devel/electron30/Makefile
+++ b/devel/electron30/Makefile
@@ -226,7 +226,7 @@ CHROMIUM_NODE_MODULES_HASH=	97a0b3c4c39cf05de1eafb6ffdec0fddd643f0a2
 # See ${WRKSRC}/third_party/test_fonts/test_fonts.tar.gz.sha1 for CHROMIUM_TEST_FONTS_HASH
 CHROMIUM_TEST_FONTS_HASH=	336e775eec536b2d785cc80eff6ac39051931286
 # See ${WRKSRC}/electron/DEPS for NODE_VER
-NODE_VER=			20.14.0
+NODE_VER=			20.15.0
 # See ${WRKSRC}/electron/DEPS for NAN_VER
 NAN_VER=			e14bdcd1f72d62bca1d541b66da43130384ec213
 # See ${WRKSRC}/electron/DEPS for SQUIRREL_MAC_VER
diff --git a/devel/electron30/Makefile.version b/devel/electron30/Makefile.version
index 9826f7b9496c..f926410a0aa8 100644
--- a/devel/electron30/Makefile.version
+++ b/devel/electron30/Makefile.version
@@ -1,2 +1,2 @@
-ELECTRON_VER=	30.1.2
+ELECTRON_VER=	30.2.0
 ELECTRON_VER_MAJOR=	${ELECTRON_VER:C/\..*//}
diff --git a/devel/electron30/distinfo b/devel/electron30/distinfo
index adca7b880442..c4a634c5e36b 100644
--- a/devel/electron30/distinfo
+++ b/devel/electron30/distinfo
@@ -1,16 +1,16 @@
-TIMESTAMP = 1719227841
+TIMESTAMP = 1721043029
 SHA256 (electron/chromium-124.0.6367.243.tar.xz) = 53ed2f29769fe105ae884e37fd9fd9d9756931cf1d6d16c6a252f5982b8496cb
 SIZE (electron/chromium-124.0.6367.243.tar.xz) = 1633060772
 SHA256 (electron/97a0b3c4c39cf05de1eafb6ffdec0fddd643f0a2) = dcfaea4d353d1df3d4ac2d245ea7e32ad177d4bea1351f363714c9c22ca5c4f8
 SIZE (electron/97a0b3c4c39cf05de1eafb6ffdec0fddd643f0a2) = 9761601
 SHA256 (electron/336e775eec536b2d785cc80eff6ac39051931286) = a2ca2962daf482a8f943163541e1c73ba4b2694fabcd2510981f2db4eda493c8
 SIZE (electron/336e775eec536b2d785cc80eff6ac39051931286) = 32624734
-SHA256 (electron/electron-yarn-cache-30.1.2.tar.xz) = 7bf31c8b9c55ee317c217cd6605eb85ed015cef96246188be0ab3b2681200368
-SIZE (electron/electron-yarn-cache-30.1.2.tar.xz) = 29229388
-SHA256 (electron/electron-electron-v30.1.2_GH0.tar.gz) = bb072f7e438da61f9844246fa7d7afce0e9c1121732cce915c2f1c632e33efbd
-SIZE (electron/electron-electron-v30.1.2_GH0.tar.gz) = 13351488
-SHA256 (electron/nodejs-node-v20.14.0_GH0.tar.gz) = 69c7e7cdd95580e74d7f8dbe8a408652db09a9099c4f97c196d056279e7f523c
-SIZE (electron/nodejs-node-v20.14.0_GH0.tar.gz) = 115425089
+SHA256 (electron/electron-yarn-cache-30.2.0.tar.xz) = f1850543ce13619fe291e15e25418779cee8ed154d2424c5dbb49faa2e4c60f3
+SIZE (electron/electron-yarn-cache-30.2.0.tar.xz) = 29179584
+SHA256 (electron/electron-electron-v30.2.0_GH0.tar.gz) = 6af984fbf42f5ac64ba298f780448ea8e87672ed7e804cd241298524d451e728
+SIZE (electron/electron-electron-v30.2.0_GH0.tar.gz) = 13401245
+SHA256 (electron/nodejs-node-v20.15.0_GH0.tar.gz) = 355d48c780d49c8bd5063016bc56c642db2840f6392d037cf74fd864c53f6922
+SIZE (electron/nodejs-node-v20.15.0_GH0.tar.gz) = 115459744
 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/electron30/files/package.json b/devel/electron30/files/package.json
index b9adc74eba9b..ec822ae259a8 100644
--- a/devel/electron30/files/package.json
+++ b/devel/electron30/files/package.json
@@ -19,8 +19,6 @@
     "@types/chai-as-promised": "^7.1.3",
     "@types/dirty-chai": "^2.0.2",
     "@types/express": "^4.17.13",
-    "@types/fs-extra": "^9.0.1",
-    "@types/klaw": "^3.0.1",
     "@types/minimist": "^1.2.0",
     "@types/mocha": "^7.0.2",
     "@types/node": "^20.9.0",
@@ -51,10 +49,8 @@
     "events": "^3.2.0",
     "express": "^4.16.4",
     "folder-hash": "^2.1.1",
-    "fs-extra": "^9.0.1",
     "got": "^11.8.5",
     "husky": "^8.0.1",
-    "klaw": "^3.0.0",
     "lint": "^1.1.2",
     "lint-staged": "^10.2.11",
     "minimist": "^1.2.6",
diff --git a/devel/electron30/files/patch-electron_filenames.gni b/devel/electron30/files/patch-electron_filenames.gni
index 79c6a7808296..3d5220acd8cd 100644
--- a/devel/electron30/files/patch-electron_filenames.gni
+++ b/devel/electron30/files/patch-electron_filenames.gni
@@ -1,6 +1,6 @@
---- electron/filenames.gni.orig	2024-04-16 14:29:17 UTC
+--- electron/filenames.gni.orig	2024-07-09 23:10:34 UTC
 +++ electron/filenames.gni
-@@ -239,8 +239,8 @@ filenames = {
+@@ -243,8 +243,8 @@ filenames = {
      "shell/app/command_line_args.h",
      "shell/app/electron_content_client.cc",
      "shell/app/electron_content_client.h",
diff --git a/devel/electron30/files/patch-electron_script_lib_utils.js b/devel/electron30/files/patch-electron_script_lib_utils.js
index 0536bc294b99..175066b6f01e 100644
--- a/devel/electron30/files/patch-electron_script_lib_utils.js
+++ b/devel/electron30/files/patch-electron_script_lib_utils.js
@@ -1,6 +1,6 @@
---- electron/script/lib/utils.js.orig	2023-10-20 08:29:17 UTC
+--- electron/script/lib/utils.js.orig	2024-07-09 23:10:34 UTC
 +++ electron/script/lib/utils.js
-@@ -19,7 +19,7 @@ function getElectronExec () {
+@@ -18,7 +18,7 @@ function getElectronExec () {
        return `out/${OUT_DIR}/Electron.app/Contents/MacOS/Electron`;
      case 'win32':
        return `out/${OUT_DIR}/electron.exe`;
diff --git a/devel/electron30/files/patch-electron_shell_browser_api_electron__api__app.cc b/devel/electron30/files/patch-electron_shell_browser_api_electron__api__app.cc
index e6f616f9c2cb..c71bf9923371 100644
--- a/devel/electron30/files/patch-electron_shell_browser_api_electron__api__app.cc
+++ b/devel/electron30/files/patch-electron_shell_browser_api_electron__api__app.cc
@@ -1,4 +1,4 @@
---- electron/shell/browser/api/electron_api_app.cc.orig	2024-04-16 14:29:17 UTC
+--- electron/shell/browser/api/electron_api_app.cc.orig	2024-07-09 23:10:34 UTC
 +++ electron/shell/browser/api/electron_api_app.cc
 @@ -592,7 +592,7 @@ void App::OnFinishLaunching(base::Value::Dict launch_i
  }
@@ -9,7 +9,7 @@
    // Set the application name for audio streams shown in external
    // applications. Only affects pulseaudio currently.
    media::AudioManager::SetGlobalAppName(Browser::Get()->GetName());
-@@ -923,7 +923,7 @@ void App::SetDesktopName(const std::string& desktop_na
+@@ -917,7 +917,7 @@ void App::SetDesktopName(const std::string& desktop_na
  }
  
  void App::SetDesktopName(const std::string& desktop_name) {
@@ -18,7 +18,7 @@
    auto env = base::Environment::Create();
    env->SetVar("CHROME_DESKTOP", desktop_name);
  #endif
-@@ -1306,7 +1306,7 @@ std::vector<gin_helper::Dictionary> App::GetAppMetrics
+@@ -1300,7 +1300,7 @@ std::vector<gin_helper::Dictionary> App::GetAppMetrics
        pid_dict.Set("name", process_metric.second->name);
      }
  
@@ -27,7 +27,7 @@
      auto memory_info = process_metric.second->GetMemoryInfo();
  
      auto memory_dict = gin_helper::Dictionary::CreateEmpty(isolate);
-@@ -1689,7 +1689,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild
+@@ -1683,7 +1683,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild
        .SetMethod(
            "removeAsDefaultProtocolClient",
            base::BindRepeating(&Browser::RemoveAsDefaultProtocolClient, browser))
@@ -36,7 +36,7 @@
        .SetMethod(
            "getApplicationInfoForProtocol",
            base::BindRepeating(&Browser::GetApplicationInfoForProtocol, browser))
-@@ -1747,7 +1747,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild
+@@ -1741,7 +1741,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild
        .SetMethod("getJumpListSettings", &App::GetJumpListSettings)
        .SetMethod("setJumpList", &App::SetJumpList)
  #endif
diff --git a/devel/electron30/files/patch-electron_shell_browser_api_electron__api__base__window.cc b/devel/electron30/files/patch-electron_shell_browser_api_electron__api__base__window.cc
index 9c11cf35f16c..73bba1caeaa2 100644
--- a/devel/electron30/files/patch-electron_shell_browser_api_electron__api__base__window.cc
+++ b/devel/electron30/files/patch-electron_shell_browser_api_electron__api__base__window.cc
@@ -1,6 +1,15 @@
---- electron/shell/browser/api/electron_api_base_window.cc.orig	2024-05-15 08:18:48 UTC
+--- electron/shell/browser/api/electron_api_base_window.cc.orig	2024-07-09 23:10:34 UTC
 +++ electron/shell/browser/api/electron_api_base_window.cc
-@@ -991,7 +991,7 @@ void BaseWindow::SetIconImpl(v8::Isolate* isolate,
+@@ -40,7 +40,7 @@
+ #include "shell/browser/ui/views/win_frame_view.h"
+ #include "shell/browser/ui/win/taskbar_host.h"
+ #include "ui/base/win/shell.h"
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "shell/browser/ui/views/opaque_frame_view.h"
+ #endif
+ 
+@@ -993,7 +993,7 @@ void BaseWindow::SetIconImpl(v8::Isolate* isolate,
    static_cast<NativeWindowViews*>(window_.get())
        ->SetIcon(native_image->GetHICON(GetSystemMetrics(SM_CXSMICON)),
                  native_image->GetHICON(GetSystemMetrics(SM_CXICON)));
@@ -9,3 +18,21 @@
    static_cast<NativeWindowViews*>(window_.get())
        ->SetIcon(native_image->image().AsImageSkia());
  #endif
+@@ -1050,7 +1050,7 @@ void BaseWindow::SetAppDetails(const gin_helper::Dicti
+ }
+ #endif
+ 
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ 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,
+       .SetMethod("setThumbnailToolTip", &BaseWindow::SetThumbnailToolTip)
+       .SetMethod("setAppDetails", &BaseWindow::SetAppDetails)
+ #endif
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+       .SetMethod("setTitleBarOverlay", &BaseWindow::SetTitleBarOverlay)
+ #endif
+       .SetProperty("id", &BaseWindow::GetID);
diff --git a/devel/electron30/files/patch-electron_shell_browser_api_electron__api__base__window.h b/devel/electron30/files/patch-electron_shell_browser_api_electron__api__base__window.h
new file mode 100644
index 000000000000..859ee1fde27b
--- /dev/null
+++ b/devel/electron30/files/patch-electron_shell_browser_api_electron__api__base__window.h
@@ -0,0 +1,11 @@
+--- electron/shell/browser/api/electron_api_base_window.h.orig	2024-07-15 11:51:18 UTC
++++ electron/shell/browser/api/electron_api_base_window.h
+@@ -243,7 +243,7 @@ class BaseWindow : public gin_helper::TrackableObject<
+   void SetAppDetails(const gin_helper::Dictionary& options);
+ #endif
+ 
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+   void SetTitleBarOverlay(const gin_helper::Dictionary& options,
+                           gin_helper::Arguments* args);
+ #endif
diff --git a/devel/electron30/files/patch-electron_shell_browser_native__window.cc b/devel/electron30/files/patch-electron_shell_browser_native__window.cc
index 4324299fc797..e94e41fd9250 100644
--- a/devel/electron30/files/patch-electron_shell_browser_native__window.cc
+++ b/devel/electron30/files/patch-electron_shell_browser_native__window.cc
@@ -1,6 +1,6 @@
---- electron/shell/browser/native_window.cc.orig	2024-04-16 14:29:17 UTC
+--- electron/shell/browser/native_window.cc.orig	2024-07-09 23:10:34 UTC
 +++ electron/shell/browser/native_window.cc
-@@ -207,7 +207,7 @@ void NativeWindow::InitFromOptions(const gin_helper::D
+@@ -203,7 +203,7 @@ void NativeWindow::InitFromOptions(const gin_helper::D
    } else {
      SetSizeConstraints(size_constraints);
    }
diff --git a/devel/electron30/files/patch-electron_shell_browser_native__window__views.cc b/devel/electron30/files/patch-electron_shell_browser_native__window__views.cc
index ef4f84ecc642..c1ba006b2fff 100644
--- a/devel/electron30/files/patch-electron_shell_browser_native__window__views.cc
+++ b/devel/electron30/files/patch-electron_shell_browser_native__window__views.cc
@@ -1,6 +1,6 @@
---- electron/shell/browser/native_window_views.cc.orig	2024-05-15 08:18:48 UTC
+--- electron/shell/browser/native_window_views.cc.orig	2024-07-09 23:10:34 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"
-@@ -293,7 +293,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper:
+@@ -297,7 +297,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";
-@@ -319,7 +319,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper:
+@@ -323,7 +323,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) {
-@@ -421,7 +421,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper:
+@@ -425,7 +425,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);
-@@ -457,7 +457,7 @@ void NativeWindowViews::SetGTKDarkThemeEnabled(bool us
+@@ -461,7 +461,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();
-@@ -519,7 +519,7 @@ void NativeWindowViews::Show() {
+@@ -523,7 +523,7 @@ void NativeWindowViews::Show() {
  
    NotifyWindowShow();
  
@@ -54,7 +54,7 @@
    if (global_menu_bar_)
      global_menu_bar_->OnWindowMapped();
  
-@@ -535,7 +535,7 @@ void NativeWindowViews::ShowInactive() {
+@@ -539,7 +539,7 @@ void NativeWindowViews::ShowInactive() {
  
    NotifyWindowShow();
  
@@ -63,7 +63,7 @@
    if (global_menu_bar_)
      global_menu_bar_->OnWindowMapped();
  #endif
-@@ -549,7 +549,7 @@ void NativeWindowViews::Hide() {
+@@ -553,7 +553,7 @@ void NativeWindowViews::Hide() {
  
    NotifyWindowHide();
  
@@ -72,7 +72,7 @@
    if (global_menu_bar_)
      global_menu_bar_->OnWindowUnmapped();
  #endif
-@@ -580,7 +580,7 @@ bool NativeWindowViews::IsEnabled() const {
+@@ -584,7 +584,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();
-@@ -636,7 +636,7 @@ void NativeWindowViews::SetEnabledInternal(bool enable
+@@ -640,7 +640,7 @@ void NativeWindowViews::SetEnabledInternal(bool enable
  #endif
  }
  
@@ -90,7 +90,7 @@
  void NativeWindowViews::Maximize() {
    if (IsVisible()) {
      widget()->Maximize();
-@@ -776,7 +776,7 @@ void NativeWindowViews::SetBounds(const gfx::Rect& bou
+@@ -780,7 +780,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_) {
-@@ -1036,7 +1036,7 @@ bool NativeWindowViews::IsClosable() const {
+@@ -1040,7 +1040,7 @@ bool NativeWindowViews::IsClosable() const {
      return false;
    }
    return !(info.fState & MFS_DISABLED);
@@ -108,7 +108,7 @@
    return true;
  #endif
  }
-@@ -1076,7 +1076,7 @@ void NativeWindowViews::Center() {
+@@ -1080,7 +1080,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();
-@@ -1299,7 +1299,7 @@ void NativeWindowViews::SetMenu(ElectronMenuModel* men
+@@ -1303,7 +1303,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();
-@@ -1354,7 +1354,7 @@ void NativeWindowViews::SetParentWindow(NativeWindow* 
+@@ -1358,7 +1358,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(
-@@ -1400,7 +1400,7 @@ void NativeWindowViews::SetProgressBar(double progress
+@@ -1404,7 +1404,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);
    }
-@@ -1471,7 +1471,7 @@ bool NativeWindowViews::IsVisibleOnAllWorkspaces() con
+@@ -1475,7 +1475,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.
-@@ -1494,7 +1494,7 @@ content::DesktopMediaID NativeWindowViews::GetDesktopM
+@@ -1498,7 +1498,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 =
-@@ -1592,7 +1592,7 @@ void NativeWindowViews::SetIcon(HICON window_icon, HIC
+@@ -1596,7 +1596,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());
-@@ -1670,7 +1670,7 @@ bool NativeWindowViews::CanMinimize() const {
+@@ -1674,7 +1674,7 @@ bool NativeWindowViews::CanMinimize() const {
  bool NativeWindowViews::CanMinimize() const {
  #if BUILDFLAG(IS_WIN)
    return minimizable_;
@@ -180,7 +180,7 @@
    return true;
  #endif
  }
-@@ -1722,7 +1722,7 @@ void NativeWindowViews::HandleKeyboardEvent(
+@@ -1730,7 +1730,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)
-@@ -1741,7 +1741,7 @@ void NativeWindowViews::OnMouseEvent(ui::MouseEvent* e
+@@ -1749,7 +1749,7 @@ void NativeWindowViews::OnMouseEvent(ui::MouseEvent* e
    // Alt+Click should not toggle menu bar.
    root_view_.ResetAltState();
  
diff --git a/devel/electron30/files/patch-electron_shell_browser_native__window__views.h b/devel/electron30/files/patch-electron_shell_browser_native__window__views.h
index 041e06287e15..fc99fc024450 100644
--- a/devel/electron30/files/patch-electron_shell_browser_native__window__views.h
+++ b/devel/electron30/files/patch-electron_shell_browser_native__window__views.h
@@ -1,4 +1,4 @@
---- electron/shell/browser/native_window_views.h.orig	2024-04-16 14:29:17 UTC
+--- electron/shell/browser/native_window_views.h.orig	2024-07-09 23:10:34 UTC
 +++ electron/shell/browser/native_window_views.h
 @@ -25,7 +25,7 @@ namespace electron {
  
@@ -18,7 +18,7 @@
    void SetIcon(const gfx::ImageSkia& icon);
  #endif
  
-@@ -255,7 +255,7 @@ class NativeWindowViews : public NativeWindow,
+@@ -248,7 +248,7 @@ class NativeWindowViews : public NativeWindow,
    // events from resizing the window.
    extensions::SizeConstraints old_size_constraints_;
  
diff --git a/devel/electron30/files/patch-electron_shell_common_node__bindings.cc b/devel/electron30/files/patch-electron_shell_common_node__bindings.cc
index 04967ce86cc8..00cae7cdfcc2 100644
--- a/devel/electron30/files/patch-electron_shell_common_node__bindings.cc
+++ b/devel/electron30/files/patch-electron_shell_common_node__bindings.cc
@@ -1,4 +1,4 @@
---- electron/shell/common/node_bindings.cc.orig	2024-04-16 14:29:17 UTC
+--- electron/shell/common/node_bindings.cc.orig	2024-07-09 23:10:34 UTC
 +++ electron/shell/common/node_bindings.cc
 @@ -43,7 +43,7 @@
  #include "third_party/electron_node/src/debug_utils.h"
@@ -9,7 +9,7 @@
  #include "shell/common/crash_keys.h"
  #endif
  
-@@ -156,7 +156,7 @@ void V8FatalErrorCallback(const char* location, const 
+@@ -157,7 +157,7 @@ void V8FatalErrorCallback(const char* location, const 
  void V8FatalErrorCallback(const char* location, const char* message) {
    LOG(ERROR) << "Fatal error in V8: " << location << " " << message;
  
@@ -18,7 +18,7 @@
    electron::crash_keys::SetCrashKey("electron.v8-fatal.message", message);
    electron::crash_keys::SetCrashKey("electron.v8-fatal.location", location);
  #endif
-@@ -516,7 +516,7 @@ void NodeBindings::Initialize(v8::Local<v8::Context> c
+@@ -517,7 +517,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/electron30/files/patch-electron_spec_api-app-spec.ts b/devel/electron30/files/patch-electron_spec_api-app-spec.ts
index 82bd89a96c4b..3b711305d2e5 100644
--- a/devel/electron30/files/patch-electron_spec_api-app-spec.ts
+++ b/devel/electron30/files/patch-electron_spec_api-app-spec.ts
@@ -1,4 +1,4 @@
---- electron/spec/api-app-spec.ts.orig	2024-04-16 14:29:17 UTC
+--- electron/spec/api-app-spec.ts.orig	2024-07-09 23:10:34 UTC
 +++ electron/spec/api-app-spec.ts
 @@ -123,11 +123,11 @@ describe('app module', () => {
    });
@@ -45,8 +45,8 @@
      });
    });
  
--  ifdescribe(process.platform !== 'linux' && !process.mas)('app.get/setLoginItemSettings API', function () {
-+  ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd' && !process.mas)('app.get/setLoginItemSettings API', function () {
+-  ifdescribe(process.platform !== 'linux' && !process.mas && (process.platform !== 'darwin' || process.arch === 'arm64'))('app.get/setLoginItemSettings API', function () {
++  ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd' && !process.mas && (process.platform !== 'darwin' || process.arch === 'arm64'))('app.get/setLoginItemSettings API', function () {
      const isMac = process.platform === 'darwin';
      const isWin = process.platform === 'win32';
  
diff --git a/devel/electron30/files/patch-electron_spec_api-browser-window-spec.ts b/devel/electron30/files/patch-electron_spec_api-browser-window-spec.ts
index acb9007878b2..6ca6421fdef6 100644
--- a/devel/electron30/files/patch-electron_spec_api-browser-window-spec.ts
+++ b/devel/electron30/files/patch-electron_spec_api-browser-window-spec.ts
@@ -1,4 +1,4 @@
---- electron/spec/api-browser-window-spec.ts.orig	2024-05-15 08:18:48 UTC
+--- electron/spec/api-browser-window-spec.ts.orig	2024-07-09 23:10:34 UTC
 +++ electron/spec/api-browser-window-spec.ts
 @@ -65,7 +65,7 @@ describe('BrowserWindow module', () => {
        }).not.to.throw();
@@ -81,7 +81,25 @@
        it('sets 1 regardless of parameter', () => {
          const w = new BrowserWindow({ show: false });
          w.setOpacity(0);
-@@ -3827,7 +3827,7 @@ describe('BrowserWindow module', () => {
+@@ -3109,7 +3109,7 @@ describe('BrowserWindow module', () => {
+       expect(overlayRectPreMax.height).to.equal(size);
+ 
+       // 'maximize' event is not emitted on Linux in CI.
+-      if (process.platform !== 'linux' && !w.isMaximized()) {
++      if ((process.platform !== 'linux' && process.platform !== 'freebsd') && !w.isMaximized()) {
+         const maximize = once(w, 'maximize');
+         w.show();
+         w.maximize();
+@@ -3175,7 +3175,7 @@ describe('BrowserWindow module', () => {
+         expect(preMaxHeight).to.equal(size);
+ 
+         // 'maximize' event is not emitted on Linux in CI.
+-        if (process.platform !== 'linux' && !w.isMaximized()) {
++        if ((process.platform !== 'linux' && process.platform !== 'freebsd') && !w.isMaximized()) {
+           const maximize = once(w, 'maximize');
+           w.show();
+           w.maximize();
+@@ -3840,7 +3840,7 @@ describe('BrowserWindow module', () => {
          expect(test.nodeTimers).to.equal(true);
          expect(test.nodeUrl).to.equal(true);
  
@@ -90,7 +108,7 @@
            expect(test.creationTime).to.be.null('creation time');
            expect(test.systemMemoryInfo).to.be.null('system memory info');
          } else {
-@@ -4332,7 +4332,7 @@ describe('BrowserWindow module', () => {
+@@ -4345,7 +4345,7 @@ describe('BrowserWindow module', () => {
      });
    });
  
@@ -99,7 +117,7 @@
      afterEach(closeAllWindows);
      it('emits an event when window is maximized', async () => {
        const w = new BrowserWindow({ show: false });
-@@ -4603,7 +4603,7 @@ describe('BrowserWindow module', () => {
+@@ -4616,7 +4616,7 @@ describe('BrowserWindow module', () => {
      // TODO(zcbenz):
      // This test does not run on Linux CI. See:
      // https://github.com/electron/electron/issues/28699
@@ -108,7 +126,7 @@
        const w = new BrowserWindow({});
        const maximize = once(w, 'maximize');
        w.maximize();
-@@ -4620,7 +4620,7 @@ describe('BrowserWindow module', () => {
+@@ -4633,7 +4633,7 @@ describe('BrowserWindow module', () => {
    });
  
    // TODO(dsanders11): Enable once maximize event works on Linux again on CI
@@ -117,7 +135,7 @@
      afterEach(closeAllWindows);
      it('should show the window if it is not currently shown', async () => {
        const w = new BrowserWindow({ show: false });
-@@ -4657,7 +4657,7 @@ describe('BrowserWindow module', () => {
+@@ -4670,7 +4670,7 @@ describe('BrowserWindow module', () => {
  
      // TODO(dsanders11): Enable once minimize event works on Linux again.
      //                   See https://github.com/electron/electron/issues/28699
@@ -126,7 +144,7 @@
        const w = new BrowserWindow();
        const minimize = once(w, 'minimize');
        w.minimize();
-@@ -5131,7 +5131,7 @@ describe('BrowserWindow module', () => {
+@@ -5144,7 +5144,7 @@ describe('BrowserWindow module', () => {
        });
  
        // On Linux there is no "resizable" property of a window.
@@ -135,7 +153,7 @@
          const w = new BrowserWindow({ show: false });
          expect(w.resizable).to.be.true('resizable');
  
-@@ -5270,7 +5270,7 @@ describe('BrowserWindow module', () => {
+@@ -5283,7 +5283,7 @@ describe('BrowserWindow module', () => {
      });
    });
  
@@ -144,7 +162,7 @@
      // Not implemented on Linux.
      afterEach(closeAllWindows);
  
-@@ -6435,7 +6435,7 @@ describe('BrowserWindow module', () => {
+@@ -6448,7 +6448,7 @@ describe('BrowserWindow module', () => {
    describe('"transparent" option', () => {
      afterEach(closeAllWindows);
  
diff --git a/devel/electron30/files/patch-electron_spec_api-utility-process-spec.ts b/devel/electron30/files/patch-electron_spec_api-utility-process-spec.ts
index 721e60ea6c8d..b2df1938e4af 100644
--- a/devel/electron30/files/patch-electron_spec_api-utility-process-spec.ts
+++ b/devel/electron30/files/patch-electron_spec_api-utility-process-spec.ts
@@ -1,6 +1,15 @@
---- electron/spec/api-utility-process-spec.ts.orig	2024-06-19 14:24:29 UTC
+--- electron/spec/api-utility-process-spec.ts.orig	2024-07-09 23:10:34 UTC
 +++ electron/spec/api-utility-process-spec.ts
-@@ -411,7 +411,7 @@ describe('utilityProcess module', () => {
+@@ -405,7 +405,7 @@ describe('utilityProcess module', () => {
+       expect(output).to.include(result);
+     });
+ 
+-    ifit(process.platform !== 'linux')('can access exposed main process modules from the utility process', async () => {
++    ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('can access exposed main process modules from the utility process', async () => {
+       const message = 'Message from utility process';
+       const child = utilityProcess.fork(path.join(fixturesPath, 'expose-main-process-module.js'));
+       await once(child, 'spawn');
+@@ -442,7 +442,7 @@ describe('utilityProcess module', () => {
        await closeWindow(w);
      });
  
diff --git a/devel/electron30/files/patch-electron_spec_chromium-spec.ts b/devel/electron30/files/patch-electron_spec_chromium-spec.ts
index 8090980727b2..c54a9c472114 100644
--- a/devel/electron30/files/patch-electron_spec_chromium-spec.ts
+++ b/devel/electron30/files/patch-electron_spec_chromium-spec.ts
@@ -1,4 +1,4 @@
---- electron/spec/chromium-spec.ts.orig	2024-04-16 14:29:17 UTC
+--- electron/spec/chromium-spec.ts.orig	2024-07-09 23:10:34 UTC
 +++ electron/spec/chromium-spec.ts
 @@ -471,13 +471,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', () => {
-@@ -2924,12 +2924,12 @@ describe('font fallback', () => {
+@@ -2981,12 +2981,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>
-@@ -3323,7 +3323,7 @@ describe('navigator.clipboard.write', () => {
+@@ -3380,7 +3380,7 @@ describe('navigator.clipboard.write', () => {
    });
  });
  
diff --git a/devel/electron30/files/yarn.lock b/devel/electron30/files/yarn.lock
index 2556f713b6d8..5f5e8f404261 100644
--- a/devel/electron30/files/yarn.lock
+++ b/devel/electron30/files/yarn.lock
@@ -789,13 +789,6 @@
     "@types/qs" "*"
     "@types/serve-static" "*"
 
-"@types/fs-extra@^9.0.1":
-  version "9.0.1"
-  resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.1.tgz#91c8fc4c51f6d5dbe44c2ca9ab09310bd00c7918"
-  integrity sha512-B42Sxuaz09MhC3DDeW5kubRcQ5by4iuVQ0cRRWM2lggLzAa/KVom0Aft/208NgMvNQQZ86s5rVcqDdn/SH0/mg==
-  dependencies:
-    "@types/node" "*"
-
 "@types/glob@^7.1.1":
   version "7.1.1"
   resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575"
@@ -859,13 +852,6 @@
   dependencies:
     "@types/node" "*"
 
-"@types/klaw@^3.0.1":
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/@types/klaw/-/klaw-3.0.1.tgz#29f90021c0234976aa4eb97efced9cb6db9fa8b3"
-  integrity sha512-acnF3n9mYOr1aFJKFyvfNX0am9EtPUsYPq22QUCGdJE+MVt6UyAN1jwo+PmOPqXD4K7ZS9MtxDEp/un0lxFccA==
-  dependencies:
-    "@types/node" "*"
-
 "@types/linkify-it@*":
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-2.1.0.tgz#ea3dd64c4805597311790b61e872cbd1ed2cd806"
@@ -1554,11 +1540,6 @@ asynckit@^0.4.0:
   resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
   integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
 
-at-least-node@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
-  integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
-
 available-typed-arrays@^1.0.5:
   version "1.0.5"
   resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7"
@@ -3064,16 +3045,6 @@ fs-extra@^8.1.0:
     jsonfile "^4.0.0"
     universalify "^0.1.0"
 
-fs-extra@^9.0.1:
-  version "9.0.1"
-  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc"
-  integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==
-  dependencies:
-    at-least-node "^1.0.0"
-    graceful-fs "^4.2.0"
-    jsonfile "^6.0.1"
-    universalify "^1.0.0"
-
 fs-minipass@^2.0.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
@@ -3288,7 +3259,7 @@ got@^11.8.5:
     p-cancelable "^2.0.0"
     responselike "^2.0.0"
 
-graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9:
+graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9:
   version "4.2.10"
   resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
   integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
@@ -3937,13 +3908,6 @@ kind-of@^6.0.2:
   resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
   integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
 
-klaw@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/klaw/-/klaw-3.0.0.tgz#b11bec9cf2492f06756d6e809ab73a2910259146"
-  integrity sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==
-  dependencies:
-    graceful-fs "^4.1.9"
-
 kleur@^4.0.3:
   version "4.1.5"
   resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780"