Browse Source

chore: bump chromium to 135.0.7035.0 (main) (#45764)

* chore: bump chromium in DEPS to 135.0.7028.0

* chore: bump chromium in DEPS to 135.0.7029.0

* chore: bump chromium in DEPS to 135.0.7031.0

* chore: bump chromium in DEPS to 135.0.7033.0

* Split //component/embedder_support:browser_util into multiple targets

https://chromium-review.googlesource.com/c/chromium/src/+/6246155

* chore: update patches

* build: update filenames.libcxx.gni

* 6275531: Enable Float16Array

https://chromium-review.googlesource.com/c/chromium/src/+/6275531

* chore: bump chromium in DEPS to 135.0.7035.0

* chore: update patches

* Move Service Process Host files to a separate folder

https://chromium-review.googlesource.com/c/chromium/src/+/6089368

* Remove NOTREACHED()s after return statements

https://chromium-review.googlesource.com/c/chromium/src/+/6297811

* Move ServiceProcessTracker and UtilityProcessClient into separate files

https://chromium-review.googlesource.com/c/chromium/src/+/6088677

* chore: update filenames.libcxx.gni

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <[email protected]>
Co-authored-by: Shelley Vohr <[email protected]>
electron-roller[bot] 1 month ago
parent
commit
9303a3fae9
30 changed files with 211 additions and 140 deletions
  1. 1 1
      BUILD.gn
  2. 1 1
      DEPS
  3. 2 0
      filenames.libcxx.gni
  4. 6 6
      patches/chromium/build_do_not_depend_on_packed_resource_integrity.patch
  5. 3 3
      patches/chromium/can_create_window.patch
  6. 1 1
      patches/chromium/chore_partial_revert_of.patch
  7. 5 5
      patches/chromium/chore_provide_iswebcontentscreationoverridden_with_full_params.patch
  8. 4 4
      patches/chromium/create_browser_v8_snapshot_file_name_fuse.patch
  9. 8 8
      patches/chromium/feat_add_data_parameter_to_processsingleton.patch
  10. 24 24
      patches/chromium/feat_configure_launch_options_for_service_process.patch
  11. 70 42
      patches/chromium/feat_enable_passing_exit_code_on_service_process_crash.patch
  12. 1 1
      patches/chromium/feat_separate_content_settings_callback_for_sync_and_async_clipboard.patch
  13. 2 2
      patches/chromium/fix_crash_loading_non-standard_schemes_in_iframes.patch
  14. 2 2
      patches/chromium/fix_on-screen-keyboard_hides_on_input_blur_in_webview.patch
  15. 3 3
      patches/chromium/gin_enable_disable_v8_platform.patch
  16. 2 2
      patches/chromium/gritsettings_resource_ids.patch
  17. 1 1
      patches/chromium/load_v8_snapshot_in_browser_process.patch
  18. 2 2
      patches/chromium/logging_win32_only_create_a_console_if_logging_to_stderr.patch
  19. 10 10
      patches/chromium/mas_avoid_private_macos_api_usage.patch.patch
  20. 1 1
      patches/chromium/partially_revert_is_newly_created_to_allow_for_browser_initiated.patch
  21. 2 2
      patches/chromium/printing.patch
  22. 7 8
      patches/chromium/process_singleton.patch
  23. 3 3
      patches/chromium/refactor_expose_cursor_changes_to_the_webcontentsobserver.patch
  24. 1 1
      patches/chromium/refactor_expose_file_system_access_blocklist.patch
  25. 2 2
      patches/chromium/refactor_unfilter_unresponsive_events.patch
  26. 1 1
      patches/chromium/web_contents.patch
  27. 3 3
      patches/chromium/webview_fullscreen.patch
  28. 1 1
      patches/devtools_frontend/chore_expose_ui_to_allow_electron_to_set_dock_side.patch
  29. 1 0
      patches/node/.patches
  30. 41 0
      patches/node/fix_adjust_wpt_and_webidl_tests_for_enabled_float16array.patch

+ 1 - 1
BUILD.gn

@@ -451,7 +451,7 @@ source_set("electron_lib") {
     "//components/autofill/core/common:features",
     "//components/certificate_transparency",
     "//components/compose:buildflags",
-    "//components/embedder_support:browser_util",
+    "//components/embedder_support:user_agent",
     "//components/input:input",
     "//components/language/core/browser",
     "//components/net_log",

+ 1 - 1
DEPS

@@ -2,7 +2,7 @@ gclient_gn_args_from = 'src'
 
 vars = {
   'chromium_version':
-    '135.0.7027.0',
+    '135.0.7035.0',
   'node_version':
     'v22.14.0',
   'nan_version':

+ 2 - 0
filenames.libcxx.gni

@@ -257,6 +257,7 @@ libcxx_headers = [
   "//third_party/libc++/src/include/__chrono/exception.h",
   "//third_party/libc++/src/include/__chrono/file_clock.h",
   "//third_party/libc++/src/include/__chrono/formatter.h",
+  "//third_party/libc++/src/include/__chrono/gps_clock.h",
   "//third_party/libc++/src/include/__chrono/hh_mm_ss.h",
   "//third_party/libc++/src/include/__chrono/high_resolution_clock.h",
   "//third_party/libc++/src/include/__chrono/leap_second.h",
@@ -1533,6 +1534,7 @@ libcxx_headers = [
   "//third_party/libc++/src/include/__locale_dir/support/bsd_like.h",
   "//third_party/libc++/src/include/__locale_dir/support/freebsd.h",
   "//third_party/libc++/src/include/__locale_dir/support/fuchsia.h",
+  "//third_party/libc++/src/include/__locale_dir/support/linux.h",
   "//third_party/libc++/src/include/__locale_dir/support/no_locale/characters.h",
   "//third_party/libc++/src/include/__locale_dir/support/no_locale/strtonum.h",
   "//third_party/libc++/src/include/__locale_dir/support/windows.h",

+ 6 - 6
patches/chromium/build_do_not_depend_on_packed_resource_integrity.patch

@@ -33,10 +33,10 @@ index bdf6d5865fb0069f4df368613167069d2fb50c86..93a126365406badf911d938dde2dcd8b
          "//base",
          "//build:branding_buildflags",
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
-index 77e4a8ebf25c81b9aa23361935cedee805193c30..069884a988be3ba63486b7248f44cd3ddc16368b 100644
+index 95b6d2a684fd6cb2655f7bc3a985f113bd2b23b5..3afb802aa6563cf625709bd1ab0b0c7f86b08760 100644
 --- a/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
-@@ -4568,7 +4568,7 @@ static_library("browser") {
+@@ -4563,7 +4563,7 @@ static_library("browser") {
            [ "//chrome/browser/ui/webui/signin:profile_impl" ]
      }
  
@@ -46,10 +46,10 @@ index 77e4a8ebf25c81b9aa23361935cedee805193c30..069884a988be3ba63486b7248f44cd3d
        # than here in :chrome_dll.
        deps += [ "//chrome:packed_resources_integrity_header" ]
 diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
-index 490c8fa666f85f0a4c4591059b74da1d6320c60b..e8a34358b9b01f918a475e4b7805a41a5d0c4904 100644
+index 4a1bba04faf432da83a8d563217469a861ce14a2..4ca8d943e89703e9fada09395e033b75d93d839c 100644
 --- a/chrome/test/BUILD.gn
 +++ b/chrome/test/BUILD.gn
-@@ -7027,9 +7027,12 @@ test("unit_tests") {
+@@ -7030,9 +7030,12 @@ test("unit_tests") {
        "//chrome/notification_helper",
      ]
  
@@ -63,7 +63,7 @@ index 490c8fa666f85f0a4c4591059b74da1d6320c60b..e8a34358b9b01f918a475e4b7805a41a
        "//chrome//services/util_win:unit_tests",
        "//chrome/app:chrome_dll_resources",
        "//chrome/app:win_unit_tests",
-@@ -7986,6 +7989,10 @@ test("unit_tests") {
+@@ -7992,6 +7995,10 @@ test("unit_tests") {
        "../browser/performance_manager/policies/background_tab_loading_policy_unittest.cc",
      ]
  
@@ -74,7 +74,7 @@ index 490c8fa666f85f0a4c4591059b74da1d6320c60b..e8a34358b9b01f918a475e4b7805a41a
      sources += [
        # The importer code is not used on Android.
        "../common/importer/firefox_importer_utils_unittest.cc",
-@@ -8041,7 +8048,6 @@ test("unit_tests") {
+@@ -8047,7 +8054,6 @@ test("unit_tests") {
      # Non-android deps for "unit_tests" target.
      deps += [
        "../browser/screen_ai:screen_ai_install_state",

+ 3 - 3
patches/chromium/can_create_window.patch

@@ -9,10 +9,10 @@ potentially prevent a window from being created.
 TODO(loc): this patch is currently broken.
 
 diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
-index 2221ff3eacc547fd3e7411e7107cd31fdf94ecec..e1e674944993234358fd8892dbe0074bc4b67409 100644
+index 4e3b890ac33148b21d73530878e525f156a4f1fb..9f05eec5ca501d941c9f39b830c32db2d2e4db32 100644
 --- a/content/browser/renderer_host/render_frame_host_impl.cc
 +++ b/content/browser/renderer_host/render_frame_host_impl.cc
-@@ -9615,6 +9615,7 @@ void RenderFrameHostImpl::CreateNewWindow(
+@@ -9613,6 +9613,7 @@ void RenderFrameHostImpl::CreateNewWindow(
            last_committed_origin_, params->window_container_type,
            params->target_url, params->referrer.To<Referrer>(),
            params->frame_name, params->disposition, *params->features,
@@ -21,7 +21,7 @@ index 2221ff3eacc547fd3e7411e7107cd31fdf94ecec..e1e674944993234358fd8892dbe0074b
            &no_javascript_access);
  
 diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
-index a5e33433796b6759aae64b7c7ffd086f70e1de6b..7200d6e7959c19cd461d894be3fb4c27caf0fb9c 100644
+index 42d593b47bb720fc9d142876a75a0077dde71ce8..d5011ecc23eeae14f0f901867ee6e736014c5075 100644
 --- a/content/browser/web_contents/web_contents_impl.cc
 +++ b/content/browser/web_contents/web_contents_impl.cc
 @@ -5031,6 +5031,12 @@ FrameTree* WebContentsImpl::CreateNewWindow(

+ 1 - 1
patches/chromium/chore_partial_revert_of.patch

@@ -14,7 +14,7 @@ track down the source of this problem & figure out if we can fix it
 by changing something in Electron.
 
 diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
-index 037e3a33c6238b22c6f82ca3ec17b85f3aba3cd4..b48b1e6e1c94abe5f64a7ac45194016ec27bd3b8 100644
+index 8c805aec2042d7c02ba0a28f544feb6d976a0775..d5e8086df8b15f90acbea43f93706c2b9543a8ef 100644
 --- a/content/browser/web_contents/web_contents_impl.cc
 +++ b/content/browser/web_contents/web_contents_impl.cc
 @@ -4950,7 +4950,7 @@ FrameTree* WebContentsImpl::CreateNewWindow(

+ 5 - 5
patches/chromium/chore_provide_iswebcontentscreationoverridden_with_full_params.patch

@@ -80,10 +80,10 @@ index 4fd8dff1089cd6afa6a66dc185734d7671657281..0a1f4268ea771a3d5d4a2668928c6e5d
        content::WebContents* source,
        const content::OpenURLParams& params,
 diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc
-index 8d56a23f148e394675d620c3283a5cbd20c682bf..dceba5e060a9a9c924145b9686507804e127cddd 100644
+index 25e6f7807ecedd9df5d1ef91733b6bf47e1ab86b..526bf242dba614faca08d6870ada49ac96d6f7f0 100644
 --- a/chrome/browser/ui/browser.cc
 +++ b/chrome/browser/ui/browser.cc
-@@ -2217,12 +2217,11 @@ bool Browser::IsWebContentsCreationOverridden(
+@@ -2221,12 +2221,11 @@ bool Browser::IsWebContentsCreationOverridden(
      content::SiteInstance* source_site_instance,
      content::mojom::WindowContainerType window_container_type,
      const GURL& opener_url,
@@ -99,10 +99,10 @@ index 8d56a23f148e394675d620c3283a5cbd20c682bf..dceba5e060a9a9c924145b9686507804
  
  WebContents* Browser::CreateCustomWebContents(
 diff --git a/chrome/browser/ui/browser.h b/chrome/browser/ui/browser.h
-index dc94ad2f75d40b378e184b861d2837d15044538c..6ad84b0d51c57588c7cce6de9198028e9fd01a78 100644
+index d203f5ae4c5bc7ea2e1cf45271df25223a4f7497..e074ffc6fb9b59b81f55817a80db5df4bc4569b8 100644
 --- a/chrome/browser/ui/browser.h
 +++ b/chrome/browser/ui/browser.h
-@@ -979,8 +979,7 @@ class Browser : public TabStripModelObserver,
+@@ -980,8 +980,7 @@ class Browser : public TabStripModelObserver,
        content::SiteInstance* source_site_instance,
        content::mojom::WindowContainerType window_container_type,
        const GURL& opener_url,
@@ -218,7 +218,7 @@ index c6838c83ef971b88769b1f3fba8095025ae25464..2da6a4e08340e72ba7de5d03444c2f17
    content::WebContents* AddNewContents(
        content::WebContents* source,
 diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
-index 9715736427fda7e0054ca45ba782b2326a8d01fe..5f72ddb8d428d72ea22b0bb37dfe74b3ee056a49 100644
+index 690d589eed3515113ad3c40506872f98c2c44bde..d96da1eb8143a5390bdfbf6fbba82c3f8150b211 100644
 --- a/content/browser/web_contents/web_contents_impl.cc
 +++ b/content/browser/web_contents/web_contents_impl.cc
 @@ -4913,8 +4913,7 @@ FrameTree* WebContentsImpl::CreateNewWindow(

+ 4 - 4
patches/chromium/create_browser_v8_snapshot_file_name_fuse.patch

@@ -7,7 +7,7 @@ By default, chromium sets up one v8 snapshot to be used in all v8 contexts. This
 to have a dedicated browser process v8 snapshot defined by the file `browser_v8_context_snapshot.bin`.
 
 diff --git a/content/app/content_main_runner_impl.cc b/content/app/content_main_runner_impl.cc
-index 68842f303c7ce77fedf8c7c0bc9824b52d0aac16..562b64439db7a27cb0081776e4602e43408b4060 100644
+index 054f38d683280638c7ac618d2ff8f7aef1a0def0..6e9d8d9a043cf8b67e26f70b3a904abcfc3c1a61 100644
 --- a/content/app/content_main_runner_impl.cc
 +++ b/content/app/content_main_runner_impl.cc
 @@ -271,8 +271,13 @@ void AsanProcessInfoCB(const char*, bool*) {
@@ -95,10 +95,10 @@ index 801bfd401ea4a8e72417d88efaa718cc6fb60883..663fec68d0c2855cdf83bb259b85c229
    friend class ContentClientCreator;
    friend class ContentClientInitializer;
 diff --git a/gin/v8_initializer.cc b/gin/v8_initializer.cc
-index 59abc24988ab4d194461a3ca4f4b2bb68395bada..9e0b16dda73900210bfc6305a5d32e51a704513e 100644
+index 7f7ea9ea6dd9b5f3af436570661fa736f912132e..1eed83656482ec330b51899bc8fbf3d5cbcf34fa 100644
 --- a/gin/v8_initializer.cc
 +++ b/gin/v8_initializer.cc
-@@ -663,8 +663,7 @@ void V8Initializer::GetV8ExternalSnapshotData(const char** snapshot_data_out,
+@@ -664,8 +664,7 @@ void V8Initializer::GetV8ExternalSnapshotData(const char** snapshot_data_out,
  
  #if defined(V8_USE_EXTERNAL_STARTUP_DATA)
  
@@ -108,7 +108,7 @@ index 59abc24988ab4d194461a3ca4f4b2bb68395bada..9e0b16dda73900210bfc6305a5d32e51
    if (g_mapped_snapshot) {
      // TODO(crbug.com/40558459): Confirm not loading different type of snapshot
      // files in a process.
-@@ -673,10 +672,17 @@ void V8Initializer::LoadV8Snapshot(V8SnapshotFileType snapshot_file_type) {
+@@ -674,10 +673,17 @@ void V8Initializer::LoadV8Snapshot(V8SnapshotFileType snapshot_file_type) {
  
    base::MemoryMappedFile::Region file_region;
    base::File file =

+ 8 - 8
patches/chromium/feat_add_data_parameter_to_processsingleton.patch

@@ -64,10 +64,10 @@ index 31f5b160e4cd755cfb56a62b04261ee1bee80277..4305ba61d2489c5817785077d1ace876
  #if BUILDFLAG(IS_WIN)
    bool EscapeVirtualization(const base::FilePath& user_data_dir);
 diff --git a/chrome/browser/process_singleton_posix.cc b/chrome/browser/process_singleton_posix.cc
-index 0e036b178d8ea9bbe5564e8bbdb394b8a0d4cb3d..9b0cb6c19b2785a3950ed70a0cd13a9c6e50fb50 100644
+index 08cbe32a258bf478f1da0a07064d3e9ef14c44a5..b9f2a43cb90fac4b031a4b4da38d6435a50990d2 100644
 --- a/chrome/browser/process_singleton_posix.cc
 +++ b/chrome/browser/process_singleton_posix.cc
-@@ -615,6 +615,7 @@ class ProcessSingleton::LinuxWatcher
+@@ -614,6 +614,7 @@ class ProcessSingleton::LinuxWatcher
    // |reader| is for sending back ACK message.
    void HandleMessage(const std::string& current_dir,
                       const std::vector<std::string>& argv,
@@ -75,7 +75,7 @@ index 0e036b178d8ea9bbe5564e8bbdb394b8a0d4cb3d..9b0cb6c19b2785a3950ed70a0cd13a9c
                       SocketReader* reader);
  
    // Called when the ProcessSingleton that owns this class is about to be
-@@ -674,13 +675,17 @@ void ProcessSingleton::LinuxWatcher::StartListening(int socket) {
+@@ -673,13 +674,17 @@ void ProcessSingleton::LinuxWatcher::StartListening(int socket) {
  }
  
  void ProcessSingleton::LinuxWatcher::HandleMessage(
@@ -95,7 +95,7 @@ index 0e036b178d8ea9bbe5564e8bbdb394b8a0d4cb3d..9b0cb6c19b2785a3950ed70a0cd13a9c
      // Send back "ACK" message to prevent the client process from starting up.
      reader->FinishWithACK(kACKToken, std::size(kACKToken) - 1);
    } else {
-@@ -728,7 +733,8 @@ void ProcessSingleton::LinuxWatcher::SocketReader::
+@@ -727,7 +732,8 @@ void ProcessSingleton::LinuxWatcher::SocketReader::
      }
    }
  
@@ -105,7 +105,7 @@ index 0e036b178d8ea9bbe5564e8bbdb394b8a0d4cb3d..9b0cb6c19b2785a3950ed70a0cd13a9c
    const size_t kMinMessageLength = std::size(kStartToken) + 4;
    if (bytes_read_ < kMinMessageLength) {
      buf_[bytes_read_] = 0;
-@@ -758,10 +764,28 @@ void ProcessSingleton::LinuxWatcher::SocketReader::
+@@ -757,10 +763,28 @@ void ProcessSingleton::LinuxWatcher::SocketReader::
    tokens.erase(tokens.begin());
    tokens.erase(tokens.begin());
  
@@ -135,7 +135,7 @@ index 0e036b178d8ea9bbe5564e8bbdb394b8a0d4cb3d..9b0cb6c19b2785a3950ed70a0cd13a9c
    fd_watch_controller_.reset();
  
    // LinuxWatcher::HandleMessage() is in charge of destroying this SocketReader
-@@ -790,8 +814,10 @@ void ProcessSingleton::LinuxWatcher::SocketReader::FinishWithACK(
+@@ -789,8 +813,10 @@ void ProcessSingleton::LinuxWatcher::SocketReader::FinishWithACK(
  //
  ProcessSingleton::ProcessSingleton(
      const base::FilePath& user_data_dir,
@@ -146,7 +146,7 @@ index 0e036b178d8ea9bbe5564e8bbdb394b8a0d4cb3d..9b0cb6c19b2785a3950ed70a0cd13a9c
        current_pid_(base::GetCurrentProcId()) {
    socket_path_ = user_data_dir.Append(chrome::kSingletonSocketFilename);
    lock_path_ = user_data_dir.Append(chrome::kSingletonLockFilename);
-@@ -912,7 +938,8 @@ ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcessWithTimeout(
+@@ -911,7 +937,8 @@ ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcessWithTimeout(
               sizeof(socket_timeout));
  
    // Found another process, prepare our command line
@@ -156,7 +156,7 @@ index 0e036b178d8ea9bbe5564e8bbdb394b8a0d4cb3d..9b0cb6c19b2785a3950ed70a0cd13a9c
    std::string to_send(kStartToken);
    to_send.push_back(kTokenDelimiter);
  
-@@ -922,11 +949,21 @@ ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcessWithTimeout(
+@@ -921,11 +948,21 @@ ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcessWithTimeout(
    to_send.append(current_dir.value());
  
    const std::vector<std::string>& argv = cmd_line.argv();

+ 24 - 24
patches/chromium/feat_configure_launch_options_for_service_process.patch

@@ -164,11 +164,11 @@ index cb0e7d5c5dc0154c6e88ad08ce097afdce4041f9..09b9cff76d9585297fe60f91970c610a
        base::BindOnce(&ChildProcessLauncherHelper::
                           FinishStartSandboxedProcessOnLauncherThread,
                       this));
-diff --git a/content/browser/service_process_host_impl.cc b/content/browser/service_process_host_impl.cc
-index bdd5bec301f5fcff2d3e3d7994ecbc4eae46da36..f6082bada22c5f4e70af60ea6f555b0f363919c5 100644
---- a/content/browser/service_process_host_impl.cc
-+++ b/content/browser/service_process_host_impl.cc
-@@ -205,6 +205,17 @@ void LaunchServiceProcess(mojo::GenericPendingReceiver receiver,
+diff --git a/content/browser/service_host/service_process_host_impl.cc b/content/browser/service_host/service_process_host_impl.cc
+index 96c9563aac5847e742de5d9c9236f78bcb6cfd9c..73c9d585579ad5bdc407687b8becd0b7f2d704af 100644
+--- a/content/browser/service_host/service_process_host_impl.cc
++++ b/content/browser/service_host/service_process_host_impl.cc
+@@ -66,6 +66,17 @@ void LaunchServiceProcess(mojo::GenericPendingReceiver receiver,
        options.allow_gpu_client.value()) {
      host->SetAllowGpuClient();
    }
@@ -186,11 +186,11 @@ index bdd5bec301f5fcff2d3e3d7994ecbc4eae46da36..f6082bada22c5f4e70af60ea6f555b0f
    host->Start();
    host->GetChildProcess()->BindServiceInterface(std::move(receiver));
  }
-diff --git a/content/browser/utility_process_host.cc b/content/browser/utility_process_host.cc
-index b0be2d050c84a2e824f7fe5f458dc60d4a53cc9e..59319bf14d79c27ef48a37e7463dfb868e412e23 100644
---- a/content/browser/utility_process_host.cc
-+++ b/content/browser/utility_process_host.cc
-@@ -188,11 +188,13 @@ const ChildProcessData& UtilityProcessHost::GetData() {
+diff --git a/content/browser/service_host/utility_process_host.cc b/content/browser/service_host/utility_process_host.cc
+index 26966d77a2ca88ce62afa16fd0f33cd5815b8c95..b7dfacb25a09b105e982c013119271b8f137e7b9 100644
+--- a/content/browser/service_host/utility_process_host.cc
++++ b/content/browser/service_host/utility_process_host.cc
+@@ -189,11 +189,13 @@ const ChildProcessData& UtilityProcessHost::GetData() {
    return process_->GetData();
  }
  
@@ -206,7 +206,7 @@ index b0be2d050c84a2e824f7fe5f458dc60d4a53cc9e..59319bf14d79c27ef48a37e7463dfb86
  
  bool UtilityProcessHost::Start() {
    return StartProcess();
-@@ -239,6 +241,30 @@ void UtilityProcessHost::SetZygoteForTesting(ZygoteCommunication* handle) {
+@@ -240,6 +242,30 @@ void UtilityProcessHost::SetZygoteForTesting(ZygoteCommunication* handle) {
  }
  #endif  // BUILDFLAG(USE_ZYGOTE)
  
@@ -237,7 +237,7 @@ index b0be2d050c84a2e824f7fe5f458dc60d4a53cc9e..59319bf14d79c27ef48a37e7463dfb86
  mojom::ChildProcess* UtilityProcessHost::GetChildProcess() {
    return static_cast<ChildProcessHostImpl*>(process_->GetHost())
        ->child_process();
-@@ -449,9 +475,26 @@ bool UtilityProcessHost::StartProcess() {
+@@ -454,9 +480,26 @@ bool UtilityProcessHost::StartProcess() {
      }
  #endif  // BUILDFLAG(ENABLE_GPU_CHANNEL_MEDIA_CAPTURE) && !BUILDFLAG(IS_WIN)
  
@@ -265,10 +265,10 @@ index b0be2d050c84a2e824f7fe5f458dc60d4a53cc9e..59319bf14d79c27ef48a37e7463dfb86
  
  #if BUILDFLAG(IS_WIN)
      if (!preload_libraries_.empty()) {
-diff --git a/content/browser/utility_process_host.h b/content/browser/utility_process_host.h
-index 26de6bd23cb05ed3789727add5e246806aa56a08..66cbabae31236758eef35bab211d4874f8a5c699 100644
---- a/content/browser/utility_process_host.h
-+++ b/content/browser/utility_process_host.h
+diff --git a/content/browser/service_host/utility_process_host.h b/content/browser/service_host/utility_process_host.h
+index 066939fcbb7bc05e27a6bb4ed122750732629454..ab6b64737245a840a3e2b06d2ab501ef4aaed7a2 100644
+--- a/content/browser/service_host/utility_process_host.h
++++ b/content/browser/service_host/utility_process_host.h
 @@ -30,6 +30,10 @@
  #include "content/public/common/zygote/zygote_handle.h"
  #endif  // BUILDFLAG(USE_ZYGOTE)
@@ -346,10 +346,10 @@ index 26de6bd23cb05ed3789727add5e246806aa56a08..66cbabae31236758eef35bab211d4874
    // Indicates whether the process has been successfully launched yet, or if
    // launch failed.
    enum class LaunchState {
-diff --git a/content/browser/utility_sandbox_delegate.cc b/content/browser/utility_sandbox_delegate.cc
-index ab7c6eec5e852b9f6257db60e38c4943ddbda13b..0216c44fe97ee2409c10acb4e585eef5467945e5 100644
---- a/content/browser/utility_sandbox_delegate.cc
-+++ b/content/browser/utility_sandbox_delegate.cc
+diff --git a/content/browser/service_host/utility_sandbox_delegate.cc b/content/browser/service_host/utility_sandbox_delegate.cc
+index 824afc2cfd01a0321d1b01cd370243dafefa1d24..ab77c85595dd5bde9eb9fd21f4914e1f9dfd4433 100644
+--- a/content/browser/service_host/utility_sandbox_delegate.cc
++++ b/content/browser/service_host/utility_sandbox_delegate.cc
 @@ -38,17 +38,19 @@ UtilitySandboxedProcessLauncherDelegate::
      UtilitySandboxedProcessLauncherDelegate(
          sandbox::mojom::Sandbox sandbox_type,
@@ -405,10 +405,10 @@ index ab7c6eec5e852b9f6257db60e38c4943ddbda13b..0216c44fe97ee2409c10acb4e585eef5
  
  #if BUILDFLAG(USE_ZYGOTE)
  ZygoteCommunication* UtilitySandboxedProcessLauncherDelegate::GetZygote() {
-diff --git a/content/browser/utility_sandbox_delegate.h b/content/browser/utility_sandbox_delegate.h
-index f3167c642c1f594c29ef7aa2a92a246f1d045344..f1f1dc8082b6039bf119ce10e7e4ca0e941d4cbd 100644
---- a/content/browser/utility_sandbox_delegate.h
-+++ b/content/browser/utility_sandbox_delegate.h
+diff --git a/content/browser/service_host/utility_sandbox_delegate.h b/content/browser/service_host/utility_sandbox_delegate.h
+index cc122cb093ddd340b4e42436e461b27275f80456..ba113809f986dd125c5cdec99ca745c384c2ba83 100644
+--- a/content/browser/service_host/utility_sandbox_delegate.h
++++ b/content/browser/service_host/utility_sandbox_delegate.h
 @@ -34,7 +34,9 @@ class CONTENT_EXPORT UtilitySandboxedProcessLauncherDelegate
   public:
    UtilitySandboxedProcessLauncherDelegate(sandbox::mojom::Sandbox sandbox_type,

+ 70 - 42
patches/chromium/feat_enable_passing_exit_code_on_service_process_crash.patch

@@ -10,52 +10,80 @@ exit codes in some crashing scenarios. To mitigate this, we can rely on
 ServiceProcessHost::Observer functions, but we need to pass the exit code to
 the observer.
 
-diff --git a/content/browser/service_process_host_impl.cc b/content/browser/service_process_host_impl.cc
-index f6082bada22c5f4e70af60ea6f555b0f363919c5..f691676a629bf82f81117599ae0bd0a4870c9f61 100644
---- a/content/browser/service_process_host_impl.cc
-+++ b/content/browser/service_process_host_impl.cc
-@@ -73,12 +73,15 @@ class ServiceProcessTracker {
-     processes_.erase(iter);
-   }
+diff --git a/content/browser/service_host/service_process_tracker.cc b/content/browser/service_host/service_process_tracker.cc
+index 594629e45acd6cac9deba2d02c682a523c80e2fb..61be7804bbf370df3d2925880804866a631d35fa 100644
+--- a/content/browser/service_host/service_process_tracker.cc
++++ b/content/browser/service_host/service_process_tracker.cc
+@@ -48,12 +48,14 @@ void ServiceProcessTracker::NotifyTerminated(ServiceProcessId id) {
+   processes_.erase(iter);
+ }
  
--  void NotifyCrashed(ServiceProcessId id) {
-+  void NotifyCrashed(ServiceProcessId id, int exit_code) {
-     DCHECK_CURRENTLY_ON(BrowserThread::UI);
-     auto iter = processes_.find(id);
-     CHECK(iter != processes_.end(), base::NotFatalUntil::M130);
--    for (auto& observer : observers_)
--      observer.OnServiceProcessCrashed(iter->second.Duplicate());
-+    for (auto& observer : observers_) {
-+      auto params = iter->second.Duplicate();
-+      params.set_exit_code(exit_code);
-+      observer.OnServiceProcessCrashed(params);
-+    }
-     processes_.erase(iter);
+-void ServiceProcessTracker::NotifyCrashed(ServiceProcessId id) {
++void ServiceProcessTracker::NotifyCrashed(ServiceProcessId id, int exit_code) {
+   DCHECK_CURRENTLY_ON(BrowserThread::UI);
+   auto iter = processes_.find(id);
+   CHECK(iter != processes_.end(), base::NotFatalUntil::M130);
+   for (auto& observer : observers_) {
+-    observer.OnServiceProcessCrashed(iter->second.Duplicate());
++    auto params = iter->second.Duplicate();
++    params.set_exit_code(exit_code);
++    observer.OnServiceProcessCrashed(params);
    }
+   processes_.erase(iter);
+ }
+diff --git a/content/browser/service_host/service_process_tracker.h b/content/browser/service_host/service_process_tracker.h
+index 8e2b330f59c714db9dac3363df566b6e396fa4ec..47b0b3a944dec09a229fe771813118bbe49b8e28 100644
+--- a/content/browser/service_host/service_process_tracker.h
++++ b/content/browser/service_host/service_process_tracker.h
+@@ -34,7 +34,7 @@ class ServiceProcessTracker {
  
-@@ -154,7 +157,7 @@ class UtilityProcessClient : public UtilityProcessHost::Client {
-         process_info_->service_process_id());
-   }
+   void NotifyTerminated(ServiceProcessId id);
+ 
+-  void NotifyCrashed(ServiceProcessId id);
++  void NotifyCrashed(ServiceProcessId id, int exit_code);
  
--  void OnProcessCrashed() override {
-+  void OnProcessCrashed(int exit_code) override {
-     // TODO(crbug.com/40654042): It is unclear how we can observe
-     // |OnProcessCrashed()| without observing |OnProcessLaunched()| first, but
-     // it can happen on Android. Ignore the notification in this case.
-@@ -162,7 +165,7 @@ class UtilityProcessClient : public UtilityProcessHost::Client {
-       return;
+   void AddObserver(ServiceProcessHost::Observer* observer);
  
-     GetServiceProcessTracker().NotifyCrashed(
--        process_info_->service_process_id());
-+        process_info_->service_process_id(), exit_code);
+diff --git a/content/browser/service_host/utility_process_client.cc b/content/browser/service_host/utility_process_client.cc
+index 530d877ab671296ddd6dfd29a528018b3db1ad6f..a64c11f8838b9dc4704a57c96bd9aa8b98bce212 100644
+--- a/content/browser/service_host/utility_process_client.cc
++++ b/content/browser/service_host/utility_process_client.cc
+@@ -40,7 +40,7 @@ void UtilityProcessClient::OnProcessTerminatedNormally() {
+       process_info_->service_process_id());
+ }
+ 
+-void UtilityProcessClient::OnProcessCrashed() {
++void UtilityProcessClient::OnProcessCrashed(int exit_code) {
+   // TODO(crbug.com/40654042): It is unclear how we can observe
+   // |OnProcessCrashed()| without observing |OnProcessLaunched()| first, but
+   // it can happen on Android. Ignore the notification in this case.
+@@ -48,6 +48,7 @@ void UtilityProcessClient::OnProcessCrashed() {
+     return;
    }
  
+-  GetServiceProcessTracker().NotifyCrashed(process_info_->service_process_id());
++  GetServiceProcessTracker().NotifyCrashed(
++      process_info_->service_process_id(), exit_code);
+ }
+ }  // namespace content
+diff --git a/content/browser/service_host/utility_process_client.h b/content/browser/service_host/utility_process_client.h
+index 801db538979ba62facdcf3a472dade56723ca639..7abac9a5b13b393713534ae51664c2e5da3a4c29 100644
+--- a/content/browser/service_host/utility_process_client.h
++++ b/content/browser/service_host/utility_process_client.h
+@@ -36,7 +36,7 @@ class UtilityProcessClient : public UtilityProcessHost::Client {
+ 
+   void OnProcessTerminatedNormally() override;
+ 
+-  void OnProcessCrashed() override;
++  void OnProcessCrashed(int exit_code) override;
+ 
   private:
-diff --git a/content/browser/utility_process_host.cc b/content/browser/utility_process_host.cc
-index 59319bf14d79c27ef48a37e7463dfb868e412e23..ff6f3ea26f0ccb741cd292bc417a47719de86487 100644
---- a/content/browser/utility_process_host.cc
-+++ b/content/browser/utility_process_host.cc
-@@ -532,7 +532,7 @@ void UtilityProcessHost::OnProcessCrashed(int exit_code) {
+   const std::string service_interface_name_;
+diff --git a/content/browser/service_host/utility_process_host.cc b/content/browser/service_host/utility_process_host.cc
+index b7dfacb25a09b105e982c013119271b8f137e7b9..8c351bb09e5110a2c6692acc37e7187c43eec8ff 100644
+--- a/content/browser/service_host/utility_process_host.cc
++++ b/content/browser/service_host/utility_process_host.cc
+@@ -539,7 +539,7 @@ void UtilityProcessHost::OnProcessCrashed(int exit_code) {
    // Take ownership of |client_| so the destructor doesn't notify it of
    // termination.
    auto client = std::move(client_);
@@ -64,10 +92,10 @@ index 59319bf14d79c27ef48a37e7463dfb868e412e23..ff6f3ea26f0ccb741cd292bc417a4771
  }
  
  std::optional<std::string> UtilityProcessHost::GetServiceName() {
-diff --git a/content/browser/utility_process_host.h b/content/browser/utility_process_host.h
-index 66cbabae31236758eef35bab211d4874f8a5c699..88515741fa08176ba9e952759c3a52e1ae2104d1 100644
---- a/content/browser/utility_process_host.h
-+++ b/content/browser/utility_process_host.h
+diff --git a/content/browser/service_host/utility_process_host.h b/content/browser/service_host/utility_process_host.h
+index ab6b64737245a840a3e2b06d2ab501ef4aaed7a2..9cf85b5fc97cf797965642d9bae5b3b0abf56e80 100644
+--- a/content/browser/service_host/utility_process_host.h
++++ b/content/browser/service_host/utility_process_host.h
 @@ -79,7 +79,7 @@ class CONTENT_EXPORT UtilityProcessHost
  
      virtual void OnProcessLaunched(const base::Process& process) {}

+ 1 - 1
patches/chromium/feat_separate_content_settings_callback_for_sync_and_async_clipboard.patch

@@ -20,7 +20,7 @@ This patch will be removed when the deprecated sync api support is
 removed.
 
 diff --git a/components/permissions/permission_util.cc b/components/permissions/permission_util.cc
-index ce926b9da23df5dc9b36a447755c9251dac0c95b..97976ff9ce81bf4939a0f638f19be5691ceeab9d 100644
+index 20056b1464699cc7d45717bfc710366eb48d85f6..b227ed62991cdf285c3b90f19e09e3718e2800ea 100644
 --- a/components/permissions/permission_util.cc
 +++ b/components/permissions/permission_util.cc
 @@ -384,6 +384,7 @@ ContentSettingsType PermissionUtil::PermissionTypeToContentSettingsTypeSafe(

+ 2 - 2
patches/chromium/fix_crash_loading_non-standard_schemes_in_iframes.patch

@@ -28,10 +28,10 @@ The patch should be removed in favor of either:
 Upstream bug https://bugs.chromium.org/p/chromium/issues/detail?id=1081397.
 
 diff --git a/content/browser/renderer_host/navigation_request.cc b/content/browser/renderer_host/navigation_request.cc
-index b98cb8525ca3a17bdabfb22bbf6fc19840cff247..9e7b805177b44a43aef1608f0e158721362dc7ad 100644
+index 8c4070309b4a1072496e3e55f6f530a52a799451..afd62da2e140da715d9be15eb5c93f0339f59145 100644
 --- a/content/browser/renderer_host/navigation_request.cc
 +++ b/content/browser/renderer_host/navigation_request.cc
-@@ -11059,6 +11059,12 @@ NavigationRequest::GetOriginForURLLoaderFactoryUncheckedWithDebugInfo() {
+@@ -11048,6 +11048,12 @@ NavigationRequest::GetOriginForURLLoaderFactoryUncheckedWithDebugInfo() {
          "blob");
    }
  

+ 2 - 2
patches/chromium/fix_on-screen-keyboard_hides_on_input_blur_in_webview.patch

@@ -87,10 +87,10 @@ index 51522e60d6dc14f1113cc438558b6b393c3fe73a..153ed02f493a83ef9ca354cc18736f93
    // The view with active text input state, i.e., a focused <input> element.
    // It will be nullptr if no such view exists. Note that the active view
 diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
-index ab1dc94b4c98913c20a0862dabfa15e3f1879f60..037e3a33c6238b22c6f82ca3ec17b85f3aba3cd4 100644
+index f5013667355aea93bfb5a926375cb674198d7e2c..8c805aec2042d7c02ba0a28f544feb6d976a0775 100644
 --- a/content/browser/web_contents/web_contents_impl.cc
 +++ b/content/browser/web_contents/web_contents_impl.cc
-@@ -9729,7 +9729,7 @@ void WebContentsImpl::OnFocusedElementChangedInFrame(
+@@ -9733,7 +9733,7 @@ void WebContentsImpl::OnFocusedElementChangedInFrame(
                          "WebContentsImpl::OnFocusedElementChangedInFrame",
                          "render_frame_host", frame);
    RenderWidgetHostViewBase* root_view =

+ 3 - 3
patches/chromium/gin_enable_disable_v8_platform.patch

@@ -41,10 +41,10 @@ index ff42cfbb6a228e902317c7e3ab035d8437d5dd62..e27f177ce27e177abf6cee84cd466e7a
    // Returns whether `Initialize` has already been invoked in the process.
    // Initialization is a one-way operation (i.e., this method cannot return
 diff --git a/gin/v8_initializer.cc b/gin/v8_initializer.cc
-index b6799720cad84282c5c4586adaf263689fd30bbb..59abc24988ab4d194461a3ca4f4b2bb68395bada 100644
+index 93b49420765273ac2d49822ee406c3495aff25d4..7f7ea9ea6dd9b5f3af436570661fa736f912132e 100644
 --- a/gin/v8_initializer.cc
 +++ b/gin/v8_initializer.cc
-@@ -547,7 +547,8 @@ void SetFeatureFlags() {
+@@ -548,7 +548,8 @@ void SetFeatureFlags() {
  void V8Initializer::Initialize(IsolateHolder::ScriptMode mode,
                                 const std::string& js_command_line_flags,
                                 bool disallow_v8_feature_flag_overrides,
@@ -54,7 +54,7 @@ index b6799720cad84282c5c4586adaf263689fd30bbb..59abc24988ab4d194461a3ca4f4b2bb6
    static bool v8_is_initialized = false;
    if (v8_is_initialized)
      return;
-@@ -561,7 +562,8 @@ void V8Initializer::Initialize(IsolateHolder::ScriptMode mode,
+@@ -562,7 +563,8 @@ void V8Initializer::Initialize(IsolateHolder::ScriptMode mode,
    }
    SetFlags(mode, js_command_line_flags);
  

+ 2 - 2
patches/chromium/gritsettings_resource_ids.patch

@@ -6,10 +6,10 @@ Subject: gritsettings_resource_ids.patch
 Add electron resources file to the list of resource ids generation.
 
 diff --git a/tools/gritsettings/resource_ids.spec b/tools/gritsettings/resource_ids.spec
-index b162935b2b83c06fd58ad955f0506e11ed6c73f7..dec7cb3653328bc94dafd21efda8e9098e1a2c5a 100644
+index 4d696890b52f95c29c5d0f47ce45ecf277a17e92..20d60e4ccaf97d4ef70dc7fcdaa431a16b4f0801 100644
 --- a/tools/gritsettings/resource_ids.spec
 +++ b/tools/gritsettings/resource_ids.spec
-@@ -1467,6 +1467,11 @@
+@@ -1472,6 +1472,11 @@
    "<(SHARED_INTERMEDIATE_DIR)/third_party/blink/public/strings/permission_element_generated_strings.grd": {
      "META": {"sizes": {"messages": [2000],}},
      "messages": [10080],

+ 1 - 1
patches/chromium/load_v8_snapshot_in_browser_process.patch

@@ -9,7 +9,7 @@ but due to the nature of electron, we need to load the v8 snapshot
 in the browser process.
 
 diff --git a/content/app/content_main_runner_impl.cc b/content/app/content_main_runner_impl.cc
-index cefdfbba24ab6da7d12a94541c03b01a497e4036..68842f303c7ce77fedf8c7c0bc9824b52d0aac16 100644
+index 82e5123e35509d22493809a37e56be5e9bea4264..054f38d683280638c7ac618d2ff8f7aef1a0def0 100644
 --- a/content/app/content_main_runner_impl.cc
 +++ b/content/app/content_main_runner_impl.cc
 @@ -292,11 +292,8 @@ void LoadV8SnapshotFile(const base::CommandLine& command_line) {

+ 2 - 2
patches/chromium/logging_win32_only_create_a_console_if_logging_to_stderr.patch

@@ -9,10 +9,10 @@ be created for each child process, despite logs being redirected to a
 file.
 
 diff --git a/content/app/content_main.cc b/content/app/content_main.cc
-index 54dfbaa6df6939418acea2f539e899425f675f83..0304c4a009e53a2a5c457b432093656db5d8d946 100644
+index 7db566cf1492baabe15b8892692ace5a703a0814..82dea74c154d625978353d28577274d5198801ea 100644
 --- a/content/app/content_main.cc
 +++ b/content/app/content_main.cc
-@@ -324,16 +324,14 @@ NO_STACK_PROTECTOR int RunContentProcess(
+@@ -330,16 +330,14 @@ NO_STACK_PROTECTOR int RunContentProcess(
  
  #if BUILDFLAG(IS_WIN)
      base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();

+ 10 - 10
patches/chromium/mas_avoid_private_macos_api_usage.patch.patch

@@ -35,7 +35,7 @@ system font by checking if it's kCTFontPriorityAttribute is set to
 system priority.
 
 diff --git a/base/BUILD.gn b/base/BUILD.gn
-index bd024dbc6fdbdf7116453f7d36a9f0795713ebb6..fad6b58f6c44c9bafce89a132bf0f86f8fa291a8 100644
+index f16a24f070ff6e004473a794e3189e078126584c..54d6573cd704261e65fd0e4c3673d0e60b492101 100644
 --- a/base/BUILD.gn
 +++ b/base/BUILD.gn
 @@ -1031,6 +1031,7 @@ component("base") {
@@ -449,7 +449,7 @@ index 2b50e3c3750c9ac6dd84a514663062a5d754b43e..49ced9aa87d3bcb00cd3d76ac32d4eec
    bool shouldShowWindowTitle = YES;
    if (_bridge)
 diff --git a/components/remote_cocoa/app_shim/native_widget_ns_window_bridge.mm b/components/remote_cocoa/app_shim/native_widget_ns_window_bridge.mm
-index 36c522793dc37f7c72f7cccde50895927b5560cb..689351b5a6e6e6013b808c1b4924b8848dcc0fa2 100644
+index bcd3ea598687c5a85cddc862cdb16eab2d8dbd5d..2ed210685453409a2aa330bf718694f70a3d862d 100644
 --- a/components/remote_cocoa/app_shim/native_widget_ns_window_bridge.mm
 +++ b/components/remote_cocoa/app_shim/native_widget_ns_window_bridge.mm
 @@ -41,6 +41,7 @@
@@ -460,7 +460,7 @@ index 36c522793dc37f7c72f7cccde50895927b5560cb..689351b5a6e6e6013b808c1b4924b884
  #include "mojo/public/cpp/bindings/self_owned_receiver.h"
  #include "net/cert/x509_util_apple.h"
  #include "ui/accelerated_widget_mac/window_resize_helper_mac.h"
-@@ -665,10 +666,12 @@ NSUInteger CountBridgedWindows(NSArray* child_windows) {
+@@ -676,10 +677,12 @@ NSUInteger CountBridgedWindows(NSArray* child_windows) {
    // this should be treated as an error and caught early.
    CHECK(bridged_view_);
  
@@ -579,7 +579,7 @@ index 08186f30eaa97caf18ac2fe47655526e7733d9df..e4cd1f436ad1734f357429cb3ad6c854
    return kAttributes;
  }
 diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
-index 6da224ff8aef4d9ede9fdfb84086fb798613aedb..634e4e79b090b3c88f4f60f7323a40c001435c32 100644
+index 9a868b490b76e06bea11c8042989ef597448ee5e..5e5f3ba7c011fdb7aa6ac0f752c52ce19fb75675 100644
 --- a/content/browser/BUILD.gn
 +++ b/content/browser/BUILD.gn
 @@ -332,6 +332,7 @@ source_set("browser") {
@@ -792,7 +792,7 @@ index a1068589ad844518038ee7bc15a3de9bc5cba525..1ff781c49f086ec8015c7d3c44567dbe
  
  }  // namespace content
 diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
-index b2bf9da029a9376376e2e7aecafd8b1ce7f169ed..85413670b3caf7f7aff4b6f1bc22b0149ea9b612 100644
+index 0418e7a1e0678b7a943281e7066677a6852960de..972fc355ea251de4758957c6c4b1e980591ec971 100644
 --- a/content/test/BUILD.gn
 +++ b/content/test/BUILD.gn
 @@ -658,6 +658,7 @@ static_library("test_support") {
@@ -1431,10 +1431,10 @@ index eb81a70e4d5d5cd3e6ae9b45f8cd1c795ea76c51..9921ccb10d3455600eddd85f77f10228
  
  }  // namespace sandbox
 diff --git a/third_party/blink/renderer/core/BUILD.gn b/third_party/blink/renderer/core/BUILD.gn
-index 6ac98727ed852dc0a801dfbb997b5c87719cf57c..837b92ae18307772e12869a0a62bfa3067061418 100644
+index cae611cd83ef3a32a0d4f7474f407c6299d2bfa1..69ce20735646f577386f175b0223b43035b4b20a 100644
 --- a/third_party/blink/renderer/core/BUILD.gn
 +++ b/third_party/blink/renderer/core/BUILD.gn
-@@ -409,6 +409,7 @@ component("core") {
+@@ -414,6 +414,7 @@ component("core") {
      "//ui/gfx/geometry",
      "//ui/gfx/geometry:geometry_skia",
      "//ui/strings",
@@ -1898,10 +1898,10 @@ index fe3f85073e31de487a08e57d7f9b07aa4eccf8f3..cf5b07203c8bd559a404600cc98cc8ec
      // enough.
      return PlatformFontMac::SystemFontType::kGeneral;
 diff --git a/ui/views/BUILD.gn b/ui/views/BUILD.gn
-index c19f5affab933815b6848f4a8b17d3ae03cdb8b5..8436286778bf6f267de7c08887e4b44ff01fb434 100644
+index 0f9f25edf65eaee5191ac1f6b70bd43a25091578..e6cce5c607e437c8a9d0fe43eb472a125fdae0eb 100644
 --- a/ui/views/BUILD.gn
 +++ b/ui/views/BUILD.gn
-@@ -718,6 +718,8 @@ component("views") {
+@@ -720,6 +720,8 @@ component("views") {
        "IOSurface.framework",
        "QuartzCore.framework",
      ]
@@ -1910,7 +1910,7 @@ index c19f5affab933815b6848f4a8b17d3ae03cdb8b5..8436286778bf6f267de7c08887e4b44f
    }
  
    if (is_win) {
-@@ -1140,6 +1142,8 @@ source_set("test_support") {
+@@ -1142,6 +1144,8 @@ source_set("test_support") {
      "//ui/base/mojom:ui_base_types",
    ]
  

+ 1 - 1
patches/chromium/partially_revert_is_newly_created_to_allow_for_browser_initiated.patch

@@ -10,7 +10,7 @@ an about:blank check to this area.
 Ref: https://chromium-review.googlesource.com/c/chromium/src/+/5403876
 
 diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
-index e1cb61f400db73463d14e9ee65fed74ebed166a8..ed591b4ec83df0c7e0b590824370d898aacb23d8 100644
+index c89f503a3cf71efb8ed2d68a674c8fd0c6bcd8cb..be1c9ffae46048fef6bfbbac8e23ff5a19955acd 100644
 --- a/content/browser/renderer_host/render_frame_host_impl.cc
 +++ b/content/browser/renderer_host/render_frame_host_impl.cc
 @@ -802,8 +802,8 @@ void VerifyThatBrowserAndRendererCalculatedOriginsToCommitMatch(

+ 2 - 2
patches/chromium/printing.patch

@@ -881,10 +881,10 @@ index 97cb6458bc9eec767db89b56abfc5f4b4136ff7b..d9a0b343158b8464b5c9aa8e0e655c0b
    ScriptingThrottler scripting_throttler_;
  
 diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
-index 634e4e79b090b3c88f4f60f7323a40c001435c32..8b03cf5aadf255ba2d39790382ecea93d180b9f6 100644
+index 5e5f3ba7c011fdb7aa6ac0f752c52ce19fb75675..9dc336b7e6466b7f1084a1d4e9903363716a4432 100644
 --- a/content/browser/BUILD.gn
 +++ b/content/browser/BUILD.gn
-@@ -3099,8 +3099,9 @@ source_set("browser") {
+@@ -3103,8 +3103,9 @@ source_set("browser") {
        "//ppapi/shared_impl",
      ]
  

+ 7 - 8
patches/chromium/process_singleton.patch

@@ -51,7 +51,7 @@ index 23a8257aa2a0a671cf7af35aff9906891091606d..31f5b160e4cd755cfb56a62b04261ee1
    base::win::MessageWindow window_;  // The message-only window.
    bool is_virtualized_;  // Stuck inside Microsoft Softricity VM environment.
 diff --git a/chrome/browser/process_singleton_posix.cc b/chrome/browser/process_singleton_posix.cc
-index b7c45982e2c05874d60b21da96da6551f51155b1..0e036b178d8ea9bbe5564e8bbdb394b8a0d4cb3d 100644
+index e0cfeb40e887545830a3294d865c2df466dda8fe..08cbe32a258bf478f1da0a07064d3e9ef14c44a5 100644
 --- a/chrome/browser/process_singleton_posix.cc
 +++ b/chrome/browser/process_singleton_posix.cc
 @@ -59,6 +59,7 @@
@@ -88,16 +88,15 @@ index b7c45982e2c05874d60b21da96da6551f51155b1..0e036b178d8ea9bbe5564e8bbdb394b8
    // Ensure there is an instance of ResourceBundle that is initialized for
    // localized string resource accesses.
    ui::ScopedStartupResourceBundle ensure_startup_resource_bundle;
-@@ -370,6 +374,8 @@ bool DisplayProfileInUseError(const base::FilePath& lock_path,
- #endif
- 
+@@ -370,6 +374,7 @@ bool DisplayProfileInUseError(const base::FilePath& lock_path,
+ #else
    NOTREACHED();
-+  return false;
+ #endif
 +#endif
  }
  
  bool IsChromeProcess(pid_t pid) {
-@@ -382,6 +388,21 @@ bool IsChromeProcess(pid_t pid) {
+@@ -382,6 +387,21 @@ bool IsChromeProcess(pid_t pid) {
                base::FilePath(chrome::kBrowserProcessExecutableName));
  }
  
@@ -119,7 +118,7 @@ index b7c45982e2c05874d60b21da96da6551f51155b1..0e036b178d8ea9bbe5564e8bbdb394b8
  // A helper class to hold onto a socket.
  class ScopedSocket {
   public:
-@@ -785,6 +806,10 @@ ProcessSingleton::~ProcessSingleton() {
+@@ -785,6 +805,10 @@ ProcessSingleton::~ProcessSingleton() {
    if (watcher_) {
      watcher_->OnEminentProcessSingletonDestruction();
    }
@@ -130,7 +129,7 @@ index b7c45982e2c05874d60b21da96da6551f51155b1..0e036b178d8ea9bbe5564e8bbdb394b8
  }
  
  ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcess() {
-@@ -1055,11 +1080,32 @@ bool ProcessSingleton::Create() {
+@@ -1055,11 +1079,32 @@ bool ProcessSingleton::Create() {
    // Create the socket file somewhere in /tmp which is usually mounted as a
    // normal filesystem. Some network filesystems (notably AFS) are screwy and
    // do not support Unix domain sockets.

+ 3 - 3
patches/chromium/refactor_expose_cursor_changes_to_the_webcontentsobserver.patch

@@ -44,7 +44,7 @@ index 99d7fe568cecce44b68dfb896f4d2560d75b5556..e420ccfd374e1a6be1ab1e1675258441
  
  void RenderWidgetHostImpl::ShowContextMenuAtPoint(
 diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
-index 7200d6e7959c19cd461d894be3fb4c27caf0fb9c..9715736427fda7e0054ca45ba782b2326a8d01fe 100644
+index d5011ecc23eeae14f0f901867ee6e736014c5075..690d589eed3515113ad3c40506872f98c2c44bde 100644
 --- a/content/browser/web_contents/web_contents_impl.cc
 +++ b/content/browser/web_contents/web_contents_impl.cc
 @@ -5780,6 +5780,11 @@ TextInputManager* WebContentsImpl::GetTextInputManager() {
@@ -60,10 +60,10 @@ index 7200d6e7959c19cd461d894be3fb4c27caf0fb9c..9715736427fda7e0054ca45ba782b232
      RenderWidgetHostImpl* render_widget_host) {
    return render_widget_host == GetPrimaryMainFrame()->GetRenderWidgetHost();
 diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h
-index 1e3a3a2330a3d2f8ac318fb3ba293c49376eecf1..f855d0a22e2fb7cbe32133ae94e57e7333512575 100644
+index 6e5edbaa182a709df7ae89e4dc59c30efbb74acb..e611153fdf08cb297114b6385f3249b8c894be3a 100644
 --- a/content/browser/web_contents/web_contents_impl.h
 +++ b/content/browser/web_contents/web_contents_impl.h
-@@ -1169,6 +1169,7 @@ class CONTENT_EXPORT WebContentsImpl
+@@ -1170,6 +1170,7 @@ class CONTENT_EXPORT WebContentsImpl
    void SendScreenRects() override;
    void SendActiveState(bool active) override;
    TextInputManager* GetTextInputManager() override;

+ 1 - 1
patches/chromium/refactor_expose_file_system_access_blocklist.patch

@@ -8,7 +8,7 @@ it in Electron and prevent drift from Chrome's blocklist. We should look for a w
 to upstream this change to Chrome.
 
 diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc b/chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc
-index 29b4d446653e95aedbefbb8f3c026a4bd84823de..8b4effa49e7aa9318e4eae122d3a48d32c93343d 100644
+index 7d5813ad07169f2f779846c4541101eac376aa4c..21e17ef542a89a9829ca4583da760fb6b1c59836 100644
 --- a/chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc
 +++ b/chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc
 @@ -45,7 +45,6 @@

+ 2 - 2
patches/chromium/refactor_unfilter_unresponsive_events.patch

@@ -15,10 +15,10 @@ This CL removes these filters so the unresponsive event can still be
 accessed from our JS event. The filtering is moved into Electron's code.
 
 diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
-index b48b1e6e1c94abe5f64a7ac45194016ec27bd3b8..8dc2907a29b9fbc7c5972d44a48361b25757bf9b 100644
+index d5e8086df8b15f90acbea43f93706c2b9543a8ef..2843c16196d947072a2accbeb781f113eb9e9c1a 100644
 --- a/content/browser/web_contents/web_contents_impl.cc
 +++ b/content/browser/web_contents/web_contents_impl.cc
-@@ -9866,25 +9866,13 @@ void WebContentsImpl::RendererUnresponsive(
+@@ -9870,25 +9870,13 @@ void WebContentsImpl::RendererUnresponsive(
      base::RepeatingClosure hang_monitor_restarter) {
    OPTIONAL_TRACE_EVENT1("content", "WebContentsImpl::RendererUnresponsive",
                          "render_widget_host", render_widget_host);

+ 1 - 1
patches/chromium/web_contents.patch

@@ -9,7 +9,7 @@ is needed for OSR.
 Originally landed in https://github.com/electron/libchromiumcontent/pull/226.
 
 diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
-index 5f72ddb8d428d72ea22b0bb37dfe74b3ee056a49..1f6e09dce73ca286cd95d19c3c5fab338d163e5e 100644
+index d96da1eb8143a5390bdfbf6fbba82c3f8150b211..6177749d337477a300bab93922cf958d3fee54ce 100644
 --- a/content/browser/web_contents/web_contents_impl.cc
 +++ b/content/browser/web_contents/web_contents_impl.cc
 @@ -3852,6 +3852,13 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params,

+ 3 - 3
patches/chromium/webview_fullscreen.patch

@@ -15,10 +15,10 @@ Note that we also need to manually update embedder's
 `api::WebContents::IsFullscreenForTabOrPending` value.
 
 diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
-index e1e674944993234358fd8892dbe0074bc4b67409..e1cb61f400db73463d14e9ee65fed74ebed166a8 100644
+index 9f05eec5ca501d941c9f39b830c32db2d2e4db32..c89f503a3cf71efb8ed2d68a674c8fd0c6bcd8cb 100644
 --- a/content/browser/renderer_host/render_frame_host_impl.cc
 +++ b/content/browser/renderer_host/render_frame_host_impl.cc
-@@ -8724,6 +8724,17 @@ void RenderFrameHostImpl::EnterFullscreen(
+@@ -8722,6 +8722,17 @@ void RenderFrameHostImpl::EnterFullscreen(
      }
    }
  
@@ -37,7 +37,7 @@ index e1e674944993234358fd8892dbe0074bc4b67409..e1cb61f400db73463d14e9ee65fed74e
    if (had_fullscreen_token && !GetView()->HasFocus())
      GetView()->Focus();
 diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
-index 1f6e09dce73ca286cd95d19c3c5fab338d163e5e..ab1dc94b4c98913c20a0862dabfa15e3f1879f60 100644
+index 6177749d337477a300bab93922cf958d3fee54ce..f5013667355aea93bfb5a926375cb674198d7e2c 100644
 --- a/content/browser/web_contents/web_contents_impl.cc
 +++ b/content/browser/web_contents/web_contents_impl.cc
 @@ -4127,21 +4127,25 @@ KeyboardEventProcessingResult WebContentsImpl::PreHandleKeyboardEvent(

+ 1 - 1
patches/devtools_frontend/chore_expose_ui_to_allow_electron_to_set_dock_side.patch

@@ -10,7 +10,7 @@ to handle this without patching, but this is fairly clean for now and no longer
 patching legacy devtools code.
 
 diff --git a/front_end/entrypoints/main/MainImpl.ts b/front_end/entrypoints/main/MainImpl.ts
-index 1122bc10cd630f360debe53244647070c76d29b9..b3c704a2810eee191fbff9acacb56c6d8e39c864 100644
+index ab334c2440a468ab859952c408bdc2aa9387e705..d5627aaf1c53fb3332788b1c097ce47a89ba749d 100644
 --- a/front_end/entrypoints/main/MainImpl.ts
 +++ b/front_end/entrypoints/main/MainImpl.ts
 @@ -788,6 +788,8 @@ export class MainImpl {

+ 1 - 0
patches/node/.patches

@@ -42,3 +42,4 @@ build_remove_explicit_linker_call_to_libm_on_macos.patch
 build_change_crdtp_protocoltypetraits_signatures_to_avoid_conflict.patch
 test_make_eval_snapshot_tests_more_flexible.patch
 build_option_to_use_custom_inspector_protocol_path.patch
+fix_adjust_wpt_and_webidl_tests_for_enabled_float16array.patch

+ 41 - 0
patches/node/fix_adjust_wpt_and_webidl_tests_for_enabled_float16array.patch

@@ -0,0 +1,41 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Shelley Vohr <[email protected]>
+Date: Tue, 25 Feb 2025 11:07:25 +0000
+Subject: fix: adjust WPT and WebIDL tests for enabled Float16Array
+
+Refs https://chromium-review.googlesource.com/c/chromium/src/+/6275531
+
+This commit updates the WPT and WebIDL tests to account for the fact that
+Float16Array is now enabled by default. This can be removed once
+Node.js upgrades to a version of V8 that has Float16Array enabled by
+default.
+
+diff --git a/test/common/globals.js b/test/common/globals.js
+index 2c1dac019ba2aa0a23c2434997e2007dd2eacde8..152d9afa8f8ef6b76fceb0ac4481d1df719b872b 100644
+--- a/test/common/globals.js
++++ b/test/common/globals.js
+@@ -35,6 +35,7 @@ const intrinsics = new Set([
+   'Int16Array',
+   'Uint32Array',
+   'Int32Array',
++  'Float16Array',
+   'Float32Array',
+   'Float64Array',
+   'Uint8ClampedArray',
+diff --git a/test/wpt/status/encoding.json b/test/wpt/status/encoding.json
+index f9378d7195a2a77eb89ae696ab26747fd8bf65b8..c258031e48556480d500a02925a8d9c29dfb2a18 100644
+--- a/test/wpt/status/encoding.json
++++ b/test/wpt/status/encoding.json
+@@ -70,12 +70,6 @@
+     "requires": ["full-icu"]
+   },
+   "encodeInto.any.js": {
+-    "fail": {
+-      "expected": [
+-        "Invalid encodeInto() destination: Float16Array, backed by: ArrayBuffer",
+-        "Invalid encodeInto() destination: Float16Array, backed by: SharedArrayBuffer"
+-      ]
+-    },
+     "requires": ["small-icu"]
+   },
+   "textdecoder-copy.any.js": {