From 86196dc5886b4023141b2e12d408dc1367ef5fb9 Mon Sep 17 00:00:00 2001 From: "trop[bot]" <37223003+trop[bot]@users.noreply.github.com> Date: Mon, 26 Jan 2026 11:58:09 +0100 Subject: [PATCH] chore: bump chromium to 146.0.7645.0 (41-x-y) (#49497) * chore: bump chromium in DEPS to 146.0.7643.0 Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> * chore: bump chromium in DEPS to 146.0.7645.0 Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> * chore: update patches Co-authored-by: David Sanders * 7402162: Refactor app shims to call ContentMain Refs https://chromium-review.googlesource.com/c/chromium/src/+/7402162 Co-authored-by: David Sanders * 7454282: Add master key management for HTTP Cache Encryption Refs https://chromium-review.googlesource.com/c/chromium/src/+/7454282 Co-authored-by: David Sanders * 7490440: Reland "Delete unused base::Contains()" Refs https://chromium-review.googlesource.com/c/chromium/src/+/7490440 Co-authored-by: David Sanders * chore: update patches Co-authored-by: David Sanders * 7414864: Pass CSSParserLocalContext down to CSSMathExpressionNodeParser Refs https://chromium-review.googlesource.com/c/chromium/src/+/7414864 Co-authored-by: David Sanders * 7460969: Move child_process_id.h to common Refs https://chromium-review.googlesource.com/c/chromium/src/+/7460969 Co-authored-by: David Sanders * 7474608: [api] Remove deprecated v8::PropertyCallbackInfo::This() Refs https://chromium-review.googlesource.com/c/v8/v8/+/7474608 Co-authored-by: David Sanders * 7461067: [Viz] Rename kPreferGpuMemoryBuffer Refs https://chromium-review.googlesource.com/c/chromium/src/+/7461067 Co-authored-by: David Sanders * 7487174: Remove GLHelper Refs https://chromium-review.googlesource.com/c/chromium/src/+/7487174 Co-authored-by: David Sanders * 7457538: Set timeout from multi source page context fetcher Refs https://chromium-review.googlesource.com/c/chromium/src/+/7457538 Co-authored-by: David Sanders --------- Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com> Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: David Sanders --- DEPS | 2 +- patches/chromium/.patches | 1 - .../add_didinstallconditionalfeatures.patch | 8 +- ..._scheduler_throttling_per_renderview.patch | 4 +- patches/chromium/blink_local_frame.patch | 4 +- .../build_add_electron_tracing_category.patch | 4 +- ..._mojom_interfaces_to_depend_on_blink.patch | 4 +- .../chromium/build_disable_thin_lto_mac.patch | 4 +- ..._depend_on_packed_resource_integrity.patch | 12 +- patches/chromium/build_gn.patch | 2 +- patches/chromium/can_create_window.patch | 16 +- ...ameter_in_script_lifecycle_observers.patch | 8 +- ...ther_in_electron_views_and_delegates.patch | 10 +- ...e_browser_v8_snapshot_file_name_fuse.patch | 39 ++--- .../disable_compositor_recycling.patch | 2 +- patches/chromium/disable_hidden.patch | 2 +- ...t_allow_code_cache_in_custom_schemes.patch | 49 +++--- ...moothing_css_rule_and_blink_painting.patch | 28 ++-- ...etdefersloading_on_webdocumentloader.patch | 4 +- ...allback_for_sync_and_async_clipboard.patch | 2 +- ..._file_existence_before_setting_mtime.patch | 4 +- ...ding_non-standard_schemes_in_iframes.patch | 10 +- ...board_hides_on_input_blur_in_webview.patch | 4 +- ...fix_os_crypt_async_cookie_encryption.patch | 22 +-- ...from_localframe_requestexecutescript.patch | 8 +- ...t_menu_item_when_opened_via_keyboard.patch | 6 +- patches/chromium/frame_host_manager.patch | 4 +- .../chromium/gritsettings_resource_ids.patch | 4 +- .../load_v8_snapshot_in_browser_process.patch | 28 ---- ..._avoid_private_macos_api_usage.patch.patch | 22 +-- .../chromium/notification_provenance.patch | 6 +- ...utofill_colors_to_the_color_pipeline.patch | 2 +- ..._electron_permissiontypes_into_blink.patch | 2 +- ...ean_up_stale_macwebcontentsocclusion.patch | 4 +- ...windowtreehostwin_window_enlargement.patch | 4 +- patches/chromium/scroll_bounce_flag.patch | 2 +- .../support_mixed_sandbox_with_zygote.patch | 4 +- patches/chromium/webview_fullscreen.patch | 4 +- ...i_to_allow_electron_to_set_dock_side.patch | 4 +- patches/nan/.patches | 1 + ...al_of_v8_propertycallbackinfo_t_this.patch | 34 ++++ patches/node/.patches | 1 + ...using_v8_propertycallbackinfo_t_this.patch | 157 ++++++++++++++++++ shell/app/electron_main_delegate.cc | 9 + shell/app/electron_main_delegate.h | 1 + shell/browser/api/electron_api_protocol.cc | 4 +- .../browser/api/electron_api_web_contents.cc | 25 ++- shell/browser/badging/badge_manager.h | 2 +- shell/browser/hid/hid_chooser_controller.cc | 9 +- shell/browser/native_window.cc | 3 +- .../osr/osr_render_widget_host_view.cc | 1 - shell/browser/osr/osr_video_consumer.cc | 7 +- .../printing/print_view_manager_electron.cc | 6 +- .../serial/serial_chooser_controller.cc | 4 +- shell/common/api/electron_bindings.cc | 3 +- shell/common/platform_util_linux.cc | 3 +- shell/renderer/electron_renderer_client.cc | 5 +- 57 files changed, 400 insertions(+), 224 deletions(-) delete mode 100644 patches/chromium/load_v8_snapshot_in_browser_process.patch create mode 100644 patches/nan/chore_handle_removal_of_v8_propertycallbackinfo_t_this.patch create mode 100644 patches/node/src_stop_using_v8_propertycallbackinfo_t_this.patch diff --git a/DEPS b/DEPS index 308e7e7133..a8a997b6d3 100644 --- a/DEPS +++ b/DEPS @@ -2,7 +2,7 @@ gclient_gn_args_from = 'src' vars = { 'chromium_version': - '146.0.7635.0', + '146.0.7645.0', 'node_version': 'v24.13.0', 'nan_version': diff --git a/patches/chromium/.patches b/patches/chromium/.patches index c2d6ef21a3..4fcbef6a0d 100644 --- a/patches/chromium/.patches +++ b/patches/chromium/.patches @@ -65,7 +65,6 @@ feat_expose_raw_response_headers_from_urlloader.patch process_singleton.patch add_ui_scopedcliboardwriter_writeunsaferawdata.patch feat_add_data_parameter_to_processsingleton.patch -load_v8_snapshot_in_browser_process.patch fix_adapt_exclusive_access_for_electron_needs.patch fix_aspect_ratio_with_max_size.patch port_autofill_colors_to_the_color_pipeline.patch diff --git a/patches/chromium/add_didinstallconditionalfeatures.patch b/patches/chromium/add_didinstallconditionalfeatures.patch index 0c90a64692..035dad0f77 100644 --- a/patches/chromium/add_didinstallconditionalfeatures.patch +++ b/patches/chromium/add_didinstallconditionalfeatures.patch @@ -23,10 +23,10 @@ index 8077ed85e45e56d6cccb691223216c1f6a94b5ee..dd4cee346f16df703d414bf206bbe6c9 int32_t world_id) {} virtual void DidClearWindowObject() {} diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc -index a53357468a3029b7319fab9d12a9c9a77d9981fb..e0a82ad9bfc78190cc95a0b99c12868226175346 100644 +index ac7f0b0524eec5cb845205001133a67501a094b5..ce9de143978a35d18be5b1baf7498851de1b2d88 100644 --- a/content/renderer/render_frame_impl.cc +++ b/content/renderer/render_frame_impl.cc -@@ -4726,6 +4726,12 @@ void RenderFrameImpl::DidCreateScriptContext(v8::Local context, +@@ -4746,6 +4746,12 @@ void RenderFrameImpl::DidCreateScriptContext(v8::Local context, observer.DidCreateScriptContext(context, world_id); } @@ -40,10 +40,10 @@ index a53357468a3029b7319fab9d12a9c9a77d9981fb..e0a82ad9bfc78190cc95a0b99c128682 int world_id) { for (auto& observer : observers_) diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h -index 9639e42a6ff5269dbef99cc0ee0b64f179e62998..fdbd5e66f73170cdc70009b183cd07f70db7dbd5 100644 +index ab62af31a76560c9747abed1c861352528947f8b..6070e33ee15d43bacbdb6a0ce0eaed89e49244d2 100644 --- a/content/renderer/render_frame_impl.h +++ b/content/renderer/render_frame_impl.h -@@ -606,6 +606,8 @@ class CONTENT_EXPORT RenderFrameImpl +@@ -607,6 +607,8 @@ class CONTENT_EXPORT RenderFrameImpl void DidObserveLayoutShift(double score, bool after_input_or_scroll) override; void DidCreateScriptContext(v8::Local context, int world_id) override; diff --git a/patches/chromium/allow_disabling_blink_scheduler_throttling_per_renderview.patch b/patches/chromium/allow_disabling_blink_scheduler_throttling_per_renderview.patch index 3db4d28b5a..a8e1ddf26a 100644 --- a/patches/chromium/allow_disabling_blink_scheduler_throttling_per_renderview.patch +++ b/patches/chromium/allow_disabling_blink_scheduler_throttling_per_renderview.patch @@ -6,7 +6,7 @@ Subject: allow disabling blink scheduler throttling per RenderView This allows us to disable throttling for hidden windows. diff --git a/content/browser/renderer_host/navigation_controller_impl_unittest.cc b/content/browser/renderer_host/navigation_controller_impl_unittest.cc -index 1390ff8785644a5e2c9d057124bf364972db53cc..8fcb52f033e175703f6695197ae61cd97bc15002 100644 +index 869a8714996a809eda3e95d03cf8d9db5e8d72b0..23ac62c37e4e9f742a8779dcf83f399c459d8f48 100644 --- a/content/browser/renderer_host/navigation_controller_impl_unittest.cc +++ b/content/browser/renderer_host/navigation_controller_impl_unittest.cc @@ -168,6 +168,12 @@ class MockPageBroadcast : public blink::mojom::PageBroadcast { @@ -51,7 +51,7 @@ index c8d6592a2d73bb132c7bdaa6532086da10a4512a..99479aed4911e134914db226094933c3 void SendRendererPreferencesToRenderer( const blink::RendererPreferences& preferences); diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc -index 825eb4279756bc2985d63d75f654b3c881b22a7e..16240a7dc12f43b260ccb80db0dbdacfe844c3ef 100644 +index 722eff1cf2e51fe628b873c67694764c99dae496..b16c96b5682846d897c2f0f4dd3881d386928b68 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura.cc +++ b/content/browser/renderer_host/render_widget_host_view_aura.cc @@ -646,8 +646,8 @@ void RenderWidgetHostViewAura::ShowImpl(PageVisibilityState page_visibility) { diff --git a/patches/chromium/blink_local_frame.patch b/patches/chromium/blink_local_frame.patch index e9d68391ec..48f457ed65 100644 --- a/patches/chromium/blink_local_frame.patch +++ b/patches/chromium/blink_local_frame.patch @@ -49,7 +49,7 @@ index ac5d88520a785e12b66ebd96c92c46319a08311c..5c582e4f249c28a5739da2da4e600ee2 // its owning reference back to our owning LocalFrame. client_->Detached(type); diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc -index e13a70decf608f5a60d100fa108163d377e10c11..d27f583eb43f63da88e2ebfd67f5f0cd660c193c 100644 +index 1634aa9d76d9423cfce2df5b752e402f957e271e..e2b4ad7cfbd5ce4dfa0ae7d4992ac6f0d2b916b7 100644 --- a/third_party/blink/renderer/core/frame/local_frame.cc +++ b/third_party/blink/renderer/core/frame/local_frame.cc @@ -767,10 +767,6 @@ bool LocalFrame::DetachImpl(FrameDetachType type) { @@ -63,7 +63,7 @@ index e13a70decf608f5a60d100fa108163d377e10c11..d27f583eb43f63da88e2ebfd67f5f0cd if (!Client()) return false; -@@ -824,6 +820,11 @@ bool LocalFrame::DetachImpl(FrameDetachType type) { +@@ -827,6 +823,11 @@ bool LocalFrame::DetachImpl(FrameDetachType type) { DCHECK(!view_->IsAttached()); Client()->WillBeDetached(); diff --git a/patches/chromium/build_add_electron_tracing_category.patch b/patches/chromium/build_add_electron_tracing_category.patch index 20e362b24a..1c22d30eb4 100644 --- a/patches/chromium/build_add_electron_tracing_category.patch +++ b/patches/chromium/build_add_electron_tracing_category.patch @@ -8,10 +8,10 @@ categories in use are known / declared. This patch is required for us to introduce a new Electron category for Electron-specific tracing. diff --git a/base/trace_event/builtin_categories.h b/base/trace_event/builtin_categories.h -index 8649b24d17fc9d8acf988f44422134ecc3ed0203..7835ffc1fbcd2b416e199dd73c11e750cd9a0e99 100644 +index 52d4c2888d80f7c80887609a337f402b4d072451..6b2d090bf53c1e2d80761adabb3843339535d564 100644 --- a/base/trace_event/builtin_categories.h +++ b/base/trace_event/builtin_categories.h -@@ -131,6 +131,7 @@ PERFETTO_DEFINE_CATEGORIES_IN_NAMESPACE_WITH_ATTRS( +@@ -133,6 +133,7 @@ PERFETTO_DEFINE_CATEGORIES_IN_NAMESPACE_WITH_ATTRS( perfetto::Category("drm"), perfetto::Category("drmcursor"), perfetto::Category("dwrite"), diff --git a/patches/chromium/build_allow_electron_mojom_interfaces_to_depend_on_blink.patch b/patches/chromium/build_allow_electron_mojom_interfaces_to_depend_on_blink.patch index 96f2706616..747cb64e5c 100644 --- a/patches/chromium/build_allow_electron_mojom_interfaces_to_depend_on_blink.patch +++ b/patches/chromium/build_allow_electron_mojom_interfaces_to_depend_on_blink.patch @@ -10,10 +10,10 @@ Needed for: 2) //electron/shell/common:web_contents_utility diff --git a/content/public/common/BUILD.gn b/content/public/common/BUILD.gn -index b55f12d4f0eb92c515c8fc61e6ec3c15e287edde..027e8f7a943bb6cf13259520cc1992ae5852a72b 100644 +index c4c12588a21bdb5502dd3c3ffec358278b802e34..85628d8898087895120575af6fc9e26e82e10f45 100644 --- a/content/public/common/BUILD.gn +++ b/content/public/common/BUILD.gn -@@ -361,6 +361,8 @@ mojom("interfaces") { +@@ -362,6 +362,8 @@ mojom("interfaces") { "//content/common/*", "//extensions/common:mojom", "//extensions/common:mojom_blink", diff --git a/patches/chromium/build_disable_thin_lto_mac.patch b/patches/chromium/build_disable_thin_lto_mac.patch index 9f48aca84e..59cfed0a17 100644 --- a/patches/chromium/build_disable_thin_lto_mac.patch +++ b/patches/chromium/build_disable_thin_lto_mac.patch @@ -11,10 +11,10 @@ This patch can (and should) be removed when we can prevent those symbols from being stripped in the release build. diff --git a/build/config/compiler/compiler.gni b/build/config/compiler/compiler.gni -index a0b040719c1c08cd2115518d6877ec0f8c12c6d2..4fbec99adf1da7469ad5d58874d3ecb3bbf52d0b 100644 +index 2e5ce812ab5eef379650912c33aa9d4ebeef9dd2..c40b1c180e4a253df074bcedb9d3d6b17c264a78 100644 --- a/build/config/compiler/compiler.gni +++ b/build/config/compiler/compiler.gni -@@ -89,7 +89,7 @@ declare_args() { +@@ -90,7 +90,7 @@ declare_args() { # Chrome's clang. crbug.com/1033839 use_thin_lto = is_cfi || (is_clang && is_official_build && chrome_pgo_phase != 1 && diff --git a/patches/chromium/build_do_not_depend_on_packed_resource_integrity.patch b/patches/chromium/build_do_not_depend_on_packed_resource_integrity.patch index 810a3a5187..4889258d2c 100644 --- a/patches/chromium/build_do_not_depend_on_packed_resource_integrity.patch +++ b/patches/chromium/build_do_not_depend_on_packed_resource_integrity.patch @@ -33,10 +33,10 @@ index f21010994e7e554c63f1bf24d5c09e9904e97bc9..ac151bbddafc76b92af9a7bce56bb405 "//base", "//build:branding_buildflags", diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn -index f9ad070cfe93af795417e03c4e76a5e397995a64..af9875ea3afd99e76a1129a76496ec6aef390b44 100644 +index 324103d42accea76c06490d8f7323a913bdbb81a..587b492f828ccb3179f34102a99326c09dfb3306 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -4782,7 +4782,7 @@ static_library("browser") { +@@ -4780,7 +4780,7 @@ static_library("browser") { ] } @@ -46,10 +46,10 @@ index f9ad070cfe93af795417e03c4e76a5e397995a64..af9875ea3afd99e76a1129a76496ec6a # than here in :chrome_dll. deps += [ "//chrome:packed_resources_integrity_header" ] diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn -index 7a97c42c38a43c828a6337fdfd0d20b588bf7110..fe3e317fd38cbe6bff588ce48e1f6b67d429e896 100644 +index 080d366183b8a43bf4bb9f7784bbdf58d26960d3..6ca2ef279235c88aa9b60db8cb548edd0aea1356 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn -@@ -7641,9 +7641,12 @@ test("unit_tests") { +@@ -7643,9 +7643,12 @@ test("unit_tests") { "//chrome/notification_helper", ] @@ -63,7 +63,7 @@ index 7a97c42c38a43c828a6337fdfd0d20b588bf7110..fe3e317fd38cbe6bff588ce48e1f6b67 "//chrome//services/util_win:unit_tests", "//chrome/app:chrome_dll_resources", "//chrome/app:win_unit_tests", -@@ -8604,6 +8607,10 @@ test("unit_tests") { +@@ -8605,6 +8608,10 @@ test("unit_tests") { "../browser/performance_manager/policies/background_tab_loading_policy_unittest.cc", ] @@ -74,7 +74,7 @@ index 7a97c42c38a43c828a6337fdfd0d20b588bf7110..fe3e317fd38cbe6bff588ce48e1f6b67 sources += [ # The importer code is not used on Android. "../common/importer/firefox_importer_utils_unittest.cc", -@@ -8661,7 +8668,6 @@ test("unit_tests") { +@@ -8662,7 +8669,6 @@ test("unit_tests") { # TODO(crbug.com/417513088): Maybe merge with the non-android `deps` declaration above? deps += [ "../browser/screen_ai:screen_ai_install_state", diff --git a/patches/chromium/build_gn.patch b/patches/chromium/build_gn.patch index bdb4b84a0b..9e3ead05e2 100644 --- a/patches/chromium/build_gn.patch +++ b/patches/chromium/build_gn.patch @@ -7,7 +7,7 @@ These are variables we add to the root BUILDCONFIG so that they're available everywhere, without having to import("//electron/.../flags.gni"). diff --git a/build/config/BUILDCONFIG.gn b/build/config/BUILDCONFIG.gn -index 38719796a381e2dcf22782693f458b6750d2670f..0879a86dbfad7ce3e1333ec2daf5ab98b7cc6470 100644 +index 4174baa9c0e39b517ade66aab07123eaf9b58e47..9601a32e3b763bb6b84727be509f51326fa08233 100644 --- a/build/config/BUILDCONFIG.gn +++ b/build/config/BUILDCONFIG.gn @@ -123,6 +123,9 @@ if (current_os == "") { diff --git a/patches/chromium/can_create_window.patch b/patches/chromium/can_create_window.patch index 074dd306b1..f510b306eb 100644 --- a/patches/chromium/can_create_window.patch +++ b/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 c2b120971d6652c60289f13a1ef7344bc14760f2..e96ede02cb19aab1aa43bbbc9f48e201842312dd 100644 +index 8b5319856ca98a4320a3857c4a200435be2b5453..bb3b1d7cd446d25f1e9d90b92f0fed8c841973c4 100644 --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc -@@ -9924,6 +9924,7 @@ void RenderFrameHostImpl::CreateNewWindow( +@@ -9923,6 +9923,7 @@ void RenderFrameHostImpl::CreateNewWindow( last_committed_origin_, params->window_container_type, params->target_url, params->referrer.To(), params->frame_name, params->disposition, *params->features, @@ -77,7 +77,7 @@ index 4c55f0abf8df5a3408f3f90d444ceff3c23ee1bc..72bdb5b5a4c2c21a7192b34bb293bd23 // Operation result when the renderer asks the browser to create a new window. diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc -index 7f6715e7add2535500ea650bcc39d601ab358093..0f7481ebb83eed5bbe40f7933883f0f57b9f464a 100644 +index 0f20753a92f64611f8c7f902960324faa4570088..b1e25f142beae77768128bb4467a3485c888a7ad 100644 --- a/content/public/browser/content_browser_client.cc +++ b/content/public/browser/content_browser_client.cc @@ -872,6 +872,8 @@ bool ContentBrowserClient::CanCreateWindow( @@ -90,7 +90,7 @@ index 7f6715e7add2535500ea650bcc39d601ab358093..0f7481ebb83eed5bbe40f7933883f0f5 bool opener_suppressed, bool* no_javascript_access) { diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h -index 130dfcfa81f5dff35b2a368cc10d155b2dc0206f..4ad0e28385dd11d2b0987cbd597caf246cbbe9b7 100644 +index 1a080e8613a2aafcb56696ae4b8364c1ba918fec..d97d2e328de91be93ca1fc542ad1d8c8131285d1 100644 --- a/content/public/browser/content_browser_client.h +++ b/content/public/browser/content_browser_client.h @@ -204,6 +204,7 @@ class NetworkService; @@ -101,7 +101,7 @@ index 130dfcfa81f5dff35b2a368cc10d155b2dc0206f..4ad0e28385dd11d2b0987cbd597caf24 } // namespace network namespace sandbox { -@@ -1449,6 +1450,8 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -1456,6 +1457,8 @@ class CONTENT_EXPORT ContentBrowserClient { const std::string& frame_name, WindowOpenDisposition disposition, const blink::mojom::WindowFeatures& features, @@ -170,10 +170,10 @@ index 6a72c7925222ed8a11830b68718d7973629a6d2c..a6f0447b6ede476162f555d951f346b0 // typically happens when popups are created. virtual void WebContentsCreated(WebContents* source_contents, diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc -index 535d58a611724fe5729f09414d0ea870d0ac877d..a53357468a3029b7319fab9d12a9c9a77d9981fb 100644 +index d2b3d5dccde5754972ae44fdf6d1b9cae90aa9fc..ac7f0b0524eec5cb845205001133a67501a094b5 100644 --- a/content/renderer/render_frame_impl.cc +++ b/content/renderer/render_frame_impl.cc -@@ -6790,6 +6790,10 @@ WebView* RenderFrameImpl::CreateNewWindow( +@@ -6810,6 +6810,10 @@ WebView* RenderFrameImpl::CreateNewWindow( request.HasUserGesture(), GetWebFrame()->IsAdFrame(), GetWebFrame()->IsAdScriptInStack()); @@ -232,7 +232,7 @@ index d92bab531c12c62a5321a23f4a0cb89691668127..c354a79c7c8dd047264df35b873e90c1 } // namespace blink diff --git a/third_party/blink/renderer/core/frame/local_dom_window.cc b/third_party/blink/renderer/core/frame/local_dom_window.cc -index 9253fb513782b7a3c785bfd5e50bc4fca382b201..8437ce75ff70a69ca381d422ef4e04d840568b8f 100644 +index fdd1d6e1ee68b824df2de6e0ba97669151cf63d9..da2a47bdb8f78abfe37b845e1c3751806df3acba 100644 --- a/third_party/blink/renderer/core/frame/local_dom_window.cc +++ b/third_party/blink/renderer/core/frame/local_dom_window.cc @@ -2335,6 +2335,8 @@ DOMWindow* LocalDOMWindow::open(v8::Isolate* isolate, diff --git a/patches/chromium/chore_expose_isolate_parameter_in_script_lifecycle_observers.patch b/patches/chromium/chore_expose_isolate_parameter_in_script_lifecycle_observers.patch index a50a1cbb12..12b6ae26a7 100644 --- a/patches/chromium/chore_expose_isolate_parameter_in_script_lifecycle_observers.patch +++ b/patches/chromium/chore_expose_isolate_parameter_in_script_lifecycle_observers.patch @@ -34,10 +34,10 @@ index dd4cee346f16df703d414bf206bbe6c9f4b1f796..5565f5a9259bd7da0722080bf01b3415 virtual void DidClearWindowObject() {} virtual void DidChangeScrollOffset() {} diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc -index e0a82ad9bfc78190cc95a0b99c12868226175346..85f69c6dfc5c6e26a8987103759c3a6411a080a5 100644 +index ce9de143978a35d18be5b1baf7498851de1b2d88..0f15ab9ca7ecce3f2e1800c6c03261bf1a71f867 100644 --- a/content/renderer/render_frame_impl.cc +++ b/content/renderer/render_frame_impl.cc -@@ -4732,10 +4732,11 @@ void RenderFrameImpl::DidInstallConditionalFeatures( +@@ -4752,10 +4752,11 @@ void RenderFrameImpl::DidInstallConditionalFeatures( observer.DidInstallConditionalFeatures(context, world_id); } @@ -52,10 +52,10 @@ index e0a82ad9bfc78190cc95a0b99c12868226175346..85f69c6dfc5c6e26a8987103759c3a64 void RenderFrameImpl::DidChangeScrollOffset() { diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h -index fdbd5e66f73170cdc70009b183cd07f70db7dbd5..c82975148cc5afa3bfa023a43d7b69691cebf36f 100644 +index 6070e33ee15d43bacbdb6a0ce0eaed89e49244d2..30dfb3677875b8a2e2c92babd46e291c9308d992 100644 --- a/content/renderer/render_frame_impl.h +++ b/content/renderer/render_frame_impl.h -@@ -608,7 +608,8 @@ class CONTENT_EXPORT RenderFrameImpl +@@ -609,7 +609,8 @@ class CONTENT_EXPORT RenderFrameImpl int world_id) override; void DidInstallConditionalFeatures(v8::Local context, int world_id) override; diff --git a/patches/chromium/chore_grandfather_in_electron_views_and_delegates.patch b/patches/chromium/chore_grandfather_in_electron_views_and_delegates.patch index e015dcb214..4e2148b039 100644 --- a/patches/chromium/chore_grandfather_in_electron_views_and_delegates.patch +++ b/patches/chromium/chore_grandfather_in_electron_views_and_delegates.patch @@ -10,7 +10,7 @@ Subject: chore: "grandfather in" Electron Views and Delegates 6448510: Lock further access to View::set_owned_by_client(). | https://chromium-review.googlesource.com/c/chromium/src/+/6448510 diff --git a/ui/views/view.h b/ui/views/view.h -index b9f2a484669f128c27d37a31a58accfd88dfe2ae..5e326f20dbb2bb506dc2cbaa03a230d8376fcf3d 100644 +index b7d13fff1f53e2ce3e53d2d5e97a442627962cd8..295249a582c77b70abf78313439b0100fed0c2ce 100644 --- a/ui/views/view.h +++ b/ui/views/view.h @@ -77,6 +77,19 @@ class ArcNotificationContentView; @@ -49,7 +49,7 @@ index b9f2a484669f128c27d37a31a58accfd88dfe2ae..5e326f20dbb2bb506dc2cbaa03a230d8 // These existing cases are "grandfathered in", but there shouldn't be more. // See comments atop class. diff --git a/ui/views/widget/widget_delegate.h b/ui/views/widget/widget_delegate.h -index 0315a1fac360ecea54cf8c5c065e777508193169..49df61c710fad846a29f074a91ceba2d8d239d5a 100644 +index d12858dfb35e009892fc7656dfe0823bff3f3b26..bfbcd7dad7689fb612d328ca6e66eca5e6b48107 100644 --- a/ui/views/widget/widget_delegate.h +++ b/ui/views/widget/widget_delegate.h @@ -168,6 +168,12 @@ namespace crostini { @@ -65,7 +65,7 @@ index 0315a1fac360ecea54cf8c5c065e777508193169..49df61c710fad846a29f074a91ceba2d namespace exo { class ShellSurfaceBase; } -@@ -368,6 +374,7 @@ class VIEWS_EXPORT WidgetDelegate { +@@ -364,6 +370,7 @@ class VIEWS_EXPORT WidgetDelegate { class OwnedByWidgetPassKey { private: @@ -73,7 +73,7 @@ index 0315a1fac360ecea54cf8c5c065e777508193169..49df61c710fad846a29f074a91ceba2d // DO NOT ADD TO THIS LIST! // These existing cases are "grandfathered in", but there shouldn't be more. // See comments atop `SetOwnedByWidget()`. -@@ -461,6 +468,7 @@ class VIEWS_EXPORT WidgetDelegate { +@@ -457,6 +464,7 @@ class VIEWS_EXPORT WidgetDelegate { }; class RegisterDeleteCallbackPassKey { private: @@ -81,7 +81,7 @@ index 0315a1fac360ecea54cf8c5c065e777508193169..49df61c710fad846a29f074a91ceba2d // DO NOT ADD TO THIS LIST! // These existing cases are "grandfathered in", but there shouldn't be more. // See comments atop `RegisterDeleteDelegateCallback()`. -@@ -916,6 +924,7 @@ class VIEWS_EXPORT WidgetDelegateView : public WidgetDelegate, public View { +@@ -912,6 +920,7 @@ class VIEWS_EXPORT WidgetDelegateView : public WidgetDelegate, public View { View* GetContentsView() override; private: diff --git a/patches/chromium/create_browser_v8_snapshot_file_name_fuse.patch b/patches/chromium/create_browser_v8_snapshot_file_name_fuse.patch index 42f49af7ad..8407c9b35e 100644 --- a/patches/chromium/create_browser_v8_snapshot_file_name_fuse.patch +++ b/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 3aeea292145cd5aaa445a29840156a47379d9d2c..ff5aa0c0dc924ca80800f7cd40d7b1565a8bbe8e 100644 +index 304e7a9379b012367dae26b425e5cbb3f56ba99e..736deda278d5cdc5f7a149429fc5b9a51dbb63a2 100644 --- a/content/app/content_main_runner_impl.cc +++ b/content/app/content_main_runner_impl.cc @@ -276,8 +276,13 @@ void AsanProcessInfoCB(const char* reason, @@ -25,32 +25,17 @@ index 3aeea292145cd5aaa445a29840156a47379d9d2c..ff5aa0c0dc924ca80800f7cd40d7b156 #if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) base::FileDescriptorStore& file_descriptor_store = base::FileDescriptorStore::GetInstance(); -@@ -306,11 +311,12 @@ bool ShouldLoadV8Snapshot(const base::CommandLine& command_line, +@@ -945,7 +950,7 @@ int ContentMainRunnerImpl::Initialize(ContentMainParams params) { - #endif // V8_USE_EXTERNAL_STARTUP_DATA - --void LoadV8SnapshotIfNeeded(const base::CommandLine& command_line, -+void LoadV8SnapshotIfNeeded(const raw_ptr delegate, -+ const base::CommandLine& command_line, - const std::string& process_type) { #if defined(V8_USE_EXTERNAL_STARTUP_DATA) - if (ShouldLoadV8Snapshot(command_line, process_type)) + if (delegate_->ShouldLoadV8Snapshot(process_type)) { - LoadV8SnapshotFile(command_line); -+ LoadV8SnapshotFile(delegate, command_line); ++ LoadV8SnapshotFile(delegate_, command_line); + } #endif // V8_USE_EXTERNAL_STARTUP_DATA - } -@@ -958,7 +964,7 @@ int ContentMainRunnerImpl::Initialize(ContentMainParams params) { - return TerminateForFatalInitializationError(); - #endif // BUILDFLAG(IS_ANDROID) && (ICU_UTIL_DATA_IMPL == ICU_UTIL_DATA_FILE) - -- LoadV8SnapshotIfNeeded(command_line, process_type); -+ LoadV8SnapshotIfNeeded(delegate_, command_line, process_type); - - blink::TrialTokenValidator::SetOriginTrialPolicyGetter( - base::BindRepeating([]() -> blink::OriginTrialPolicy* { diff --git a/content/public/app/content_main_delegate.cc b/content/public/app/content_main_delegate.cc -index 3c763519c5fd23967b8f03093e8dce2f7c2b9c49..68e31ed29e25300c5948dd9adb6408cbe68c0672 100644 +index e56a0985068ee0edcd46a474fec1bb4fa4bf69ea..82549a1e029349373b2ddfbe2415e501f8e2892d 100644 --- a/content/public/app/content_main_delegate.cc +++ b/content/public/app/content_main_delegate.cc @@ -5,6 +5,7 @@ @@ -60,8 +45,8 @@ index 3c763519c5fd23967b8f03093e8dce2f7c2b9c49..68e31ed29e25300c5948dd9adb6408cb +#include #include "base/check.h" - #include "base/notreached.h" -@@ -74,6 +75,10 @@ std::optional ContentMainDelegate::PostEarlyInitialization( + #include "base/command_line.h" +@@ -76,6 +77,10 @@ std::optional ContentMainDelegate::PostEarlyInitialization( return std::nullopt; } @@ -73,7 +58,7 @@ index 3c763519c5fd23967b8f03093e8dce2f7c2b9c49..68e31ed29e25300c5948dd9adb6408cb return new ContentClient(); } diff --git a/content/public/app/content_main_delegate.h b/content/public/app/content_main_delegate.h -index 199b5637bc6fe387ed30b03bae39b19ab9300dd9..ecf1440a39bda59b44793a6671715484f1e15967 100644 +index 8c318a31454c57b0e8db3770a36c45be427f053c..6f809c9672448ed9797e3c9da492ad2ccd76df21 100644 --- a/content/public/app/content_main_delegate.h +++ b/content/public/app/content_main_delegate.h @@ -9,6 +9,7 @@ @@ -84,9 +69,9 @@ index 199b5637bc6fe387ed30b03bae39b19ab9300dd9..ecf1440a39bda59b44793a6671715484 #include #include "base/notreached.h" -@@ -185,6 +186,8 @@ class CONTENT_EXPORT ContentMainDelegate { - // This is an experimental feature and its tracking bug is crbug.com/423925400 - virtual bool IsInitFeatureListEarly(); +@@ -193,6 +194,8 @@ class CONTENT_EXPORT ContentMainDelegate { + // process unless it's in single process mode. + virtual bool ShouldLoadV8Snapshot(const std::string& process_type); + virtual std::string_view GetBrowserV8SnapshotFilename(); + diff --git a/patches/chromium/disable_compositor_recycling.patch b/patches/chromium/disable_compositor_recycling.patch index d5fc0ebb8e..ab37f93a4e 100644 --- a/patches/chromium/disable_compositor_recycling.patch +++ b/patches/chromium/disable_compositor_recycling.patch @@ -6,7 +6,7 @@ Subject: fix: disabling compositor recycling Compositor recycling is useful for Chrome because there can be many tabs and spinning up a compositor for each one would be costly. In practice, Chrome uses the parent compositor code path of browser_compositor_view_mac.mm; the NSView of each tab is detached when it's hidden and attached when it's shown. For Electron, there is no parent compositor, so we're forced into the "own compositor" code path, which seems to be non-optimal and pretty ruthless in terms of the release of resources. Electron has no real concept of multiple tabs per window, so it should be okay to disable this ruthless recycling altogether in Electron. diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm -index 492a3692cd2abec2ed3731e848d67094a1e5eedc..942827bd0086381db799754d6c7597491229b506 100644 +index 082c24657917671fbee8f755786285af66640a92..d506230061f3bc969cc3cf9b998ec0321a44a1d2 100644 --- a/content/browser/renderer_host/render_widget_host_view_mac.mm +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm @@ -559,7 +559,11 @@ diff --git a/patches/chromium/disable_hidden.patch b/patches/chromium/disable_hidden.patch index 3dae137327..7a32550153 100644 --- a/patches/chromium/disable_hidden.patch +++ b/patches/chromium/disable_hidden.patch @@ -34,7 +34,7 @@ index 614390e29fa84af4c141102d86f3ebdb7293b813..0bb31ec2e957301e55c81225683ec998 // |routing_id| must not be IPC::mojom::kRoutingIdNone. // If this object outlives |delegate|, DetachDelegate() must be called when diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc -index c6ed3e391e0eeb06091bef7cd43c1ac88b87637c..825eb4279756bc2985d63d75f654b3c881b22a7e 100644 +index 1aeb55dc79528bf36abd25ded50f7365724bf0b2..722eff1cf2e51fe628b873c67694764c99dae496 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura.cc +++ b/content/browser/renderer_host/render_widget_host_view_aura.cc @@ -710,7 +710,7 @@ void RenderWidgetHostViewAura::HideImpl() { diff --git a/patches/chromium/feat_allow_code_cache_in_custom_schemes.patch b/patches/chromium/feat_allow_code_cache_in_custom_schemes.patch index 3ae2198486..650911828f 100644 --- a/patches/chromium/feat_allow_code_cache_in_custom_schemes.patch +++ b/patches/chromium/feat_allow_code_cache_in_custom_schemes.patch @@ -9,17 +9,17 @@ embedders to make custom schemes allow V8 code cache. Chromium CL: https://chromium-review.googlesource.com/c/chromium/src/+/5019665 diff --git a/content/browser/code_cache/generated_code_cache.cc b/content/browser/code_cache/generated_code_cache.cc -index 7a775f9faac4296806ec1ab421da6dc7e9463a7a..0473112d313d552635f1855a2126b15cec4d8db9 100644 +index 7a775f9faac4296806ec1ab421da6dc7e9463a7a..251fdb8fb65e1b68056cb9c97a88a2da5450e380 100644 --- a/content/browser/code_cache/generated_code_cache.cc +++ b/content/browser/code_cache/generated_code_cache.cc -@@ -8,6 +8,7 @@ +@@ -4,6 +4,7 @@ + + #include "content/browser/code_cache/generated_code_cache.h" + ++#include + #include #include - #include "base/compiler_specific.h" -+#include "base/containers/contains.h" - #include "base/feature_list.h" - #include "base/functional/bind.h" - #include "base/functional/callback_helpers.h" @@ -33,6 +34,7 @@ #include "third_party/blink/public/common/loader/code_cache_util.h" #include "third_party/blink/public/common/scheme_registry.h" @@ -45,8 +45,8 @@ index 7a775f9faac4296806ec1ab421da6dc7e9463a7a..0473112d313d552635f1855a2126b15c - resource_url.SchemeIsHTTPOrHTTPS() || - resource_url_is_chrome_or_chrome_untrusted || - blink::CommonSchemeRegistry::IsExtensionScheme(resource_url.GetScheme())); -+ const bool resource_url_embedder = -+ base::Contains(url::GetCodeCacheSchemes(), resource_url.GetScheme()); ++ const bool resource_url_embedder = std::ranges::contains( ++ url::GetCodeCacheSchemes(), resource_url.GetScheme()); + DCHECK(resource_url_http || resource_url_webui || resource_url_embedder); if (!blink::features::IsPersistentCacheForCodeCacheEnabled()) { @@ -84,8 +84,8 @@ index 7a775f9faac4296806ec1ab421da6dc7e9463a7a..0473112d313d552635f1855a2126b15c - blink::CommonSchemeRegistry::IsExtensionScheme( - origin_lock.GetScheme())) && - !url::Origin::Create(origin_lock).opaque())); -+ const bool origin_lock_for_embedder = -+ base::Contains(url::GetCodeCacheSchemes(), origin_lock.GetScheme()); ++ const bool origin_lock_for_embedder = std::ranges::contains( ++ url::GetCodeCacheSchemes(), origin_lock.GetScheme()); + + DCHECK(origin_lock_empty || ((origin_lock_for_http || origin_lock_for_webui || + origin_lock_for_embedder) && @@ -262,17 +262,17 @@ index 68a3095a49caf472c83b93b5cef66e5549a2d7cc..aa371ba5576f9fbaf5558e39704f7eb8 + } // namespace content diff --git a/content/browser/renderer_host/code_cache_host_impl.cc b/content/browser/renderer_host/code_cache_host_impl.cc -index ffc684ad1e2dfbf148bb01b4d185a44619a2dceb..cf1d94f43238fc3166ca0488b72c929be07e3c52 100644 +index ffc684ad1e2dfbf148bb01b4d185a44619a2dceb..39b15dd921539c17e1038fabc64bf20b0974e20a 100644 --- a/content/browser/renderer_host/code_cache_host_impl.cc +++ b/content/browser/renderer_host/code_cache_host_impl.cc -@@ -9,6 +9,7 @@ - #include +@@ -4,6 +4,7 @@ - #include "base/check_is_test.h" -+#include "base/containers/contains.h" - #include "base/functional/bind.h" - #include "base/functional/callback_helpers.h" - #include "base/memory/weak_ptr.h" + #include "content/browser/renderer_host/code_cache_host_impl.h" + ++#include + #include + #include + #include @@ -42,6 +43,7 @@ #include "third_party/perfetto/include/perfetto/tracing/track_event_args.h" #include "url/gurl.h" @@ -281,19 +281,18 @@ index ffc684ad1e2dfbf148bb01b4d185a44619a2dceb..cf1d94f43238fc3166ca0488b72c929b using blink::mojom::CacheStorageError; -@@ -56,6 +58,11 @@ enum class Operation { +@@ -56,6 +58,10 @@ enum class Operation { kWrite, }; +bool ProcessLockURLIsCodeCacheScheme(const ProcessLock& process_lock) { -+ return base::Contains(url::GetCodeCacheSchemes(), -+ process_lock.GetProcessLockURL().scheme()); ++ return std::ranges::contains(url::GetCodeCacheSchemes(), process_lock.GetProcessLockURL().scheme()); +} + bool CheckSecurityForAccessingCodeCacheData(const GURL& resource_url, int render_process_id, Operation operation) { -@@ -67,42 +74,56 @@ bool CheckSecurityForAccessingCodeCacheData(const GURL& resource_url, +@@ -67,42 +73,56 @@ bool CheckSecurityForAccessingCodeCacheData(const GURL& resource_url, ChildProcessSecurityPolicyImpl::GetInstance()->GetProcessLock( render_process_id); @@ -368,12 +367,12 @@ index ffc684ad1e2dfbf148bb01b4d185a44619a2dceb..cf1d94f43238fc3166ca0488b72c929b - return false; - } - return true; -+ if (base::Contains(url::GetCodeCacheSchemes(), resource_url.GetScheme())) { ++ if (std::ranges::contains(url::GetCodeCacheSchemes(), resource_url.GetScheme())) { + return ProcessLockURLIsCodeCacheScheme(process_lock); } if (operation == Operation::kWrite) { -@@ -180,6 +201,7 @@ std::optional GetOriginLock(int render_process_id) { +@@ -180,6 +200,7 @@ std::optional GetOriginLock(int render_process_id) { process_lock.MatchesScheme(url::kHttpsScheme) || process_lock.MatchesScheme(content::kChromeUIScheme) || process_lock.MatchesScheme(content::kChromeUIUntrustedScheme) || diff --git a/patches/chromium/feat_corner_smoothing_css_rule_and_blink_painting.patch b/patches/chromium/feat_corner_smoothing_css_rule_and_blink_painting.patch index f492815be7..4e9f867e38 100644 --- a/patches/chromium/feat_corner_smoothing_css_rule_and_blink_painting.patch +++ b/patches/chromium/feat_corner_smoothing_css_rule_and_blink_painting.patch @@ -20,7 +20,7 @@ making three primary changes to Blink: * Controls whether the CSS rule is available. diff --git a/third_party/blink/public/mojom/use_counter/metrics/css_property_id.mojom b/third_party/blink/public/mojom/use_counter/metrics/css_property_id.mojom -index 82fd11ba5dd4987f50a413b7f0600e71ddc195f9..0b16b81ddeee1e35bb1da1752a9952e8a8650473 100644 +index 2dd22ede8da0ad21251d0df6622a85513651510c..fea4d717fbad2419741d48c5a285909026654b57 100644 --- a/third_party/blink/public/mojom/use_counter/metrics/css_property_id.mojom +++ b/third_party/blink/public/mojom/use_counter/metrics/css_property_id.mojom @@ -50,7 +50,7 @@ enum CSSSampleId { @@ -46,10 +46,10 @@ index e189d584f05f2ce6354c03a9b19f56985df8a15e..41b430e8f2416be098494f5c49fb97ca 'internal-forced-visited-'): internal_visited_order = 0 diff --git a/third_party/blink/renderer/core/css/css_properties.json5 b/third_party/blink/renderer/core/css/css_properties.json5 -index d98fecdf3bfd4085789c6076c61f1e6c15cc00bb..2818fad9bade98d41d0370318aca4785d159b4c8 100644 +index a4959f7b3f428cd3e3d51ed020ec576e3a92d0c1..b2bd0b07803e457c2aaee8c382dc01045315febf 100644 --- a/third_party/blink/renderer/core/css/css_properties.json5 +++ b/third_party/blink/renderer/core/css/css_properties.json5 -@@ -9222,6 +9222,26 @@ +@@ -9223,6 +9223,26 @@ property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"], }, @@ -77,7 +77,7 @@ index d98fecdf3bfd4085789c6076c61f1e6c15cc00bb..2818fad9bade98d41d0370318aca4785 { name: "-internal-visited-color", diff --git a/third_party/blink/renderer/core/css/css_property_equality.cc b/third_party/blink/renderer/core/css/css_property_equality.cc -index 358ab7ffc4af7f55a1ee0e0dba0b68296efe3836..d93152fef81184db7e560154a7f140c3c7bc5e30 100644 +index e723573b371b489d4908c8dc8a3399d96031f983..bb68dde106578c73c514bd2a809fcaca0f92fc34 100644 --- a/third_party/blink/renderer/core/css/css_property_equality.cc +++ b/third_party/blink/renderer/core/css/css_property_equality.cc @@ -402,6 +402,8 @@ bool CSSPropertyEquality::PropertiesEqual(const PropertyHandle& property, @@ -90,17 +90,17 @@ index 358ab7ffc4af7f55a1ee0e0dba0b68296efe3836..d93152fef81184db7e560154a7f140c3 return a.EmptyCells() == b.EmptyCells(); case CSSPropertyID::kFill: diff --git a/third_party/blink/renderer/core/css/properties/longhands/longhands_custom.cc b/third_party/blink/renderer/core/css/properties/longhands/longhands_custom.cc -index 1260580d96c01523382fa079aacdbb9777bf682e..f237c8d831dc88d83c081a70ffdffb007464a5a4 100644 +index 506d6de5d48eadd34df1e9f35398a8756fe0d005..f56613267b5ecf08e5b5535144bc95791e1c6a4c 100644 --- a/third_party/blink/renderer/core/css/properties/longhands/longhands_custom.cc +++ b/third_party/blink/renderer/core/css/properties/longhands/longhands_custom.cc -@@ -12610,5 +12610,36 @@ const CSSValue* InternalEmptyLineHeight::ParseSingleValue( +@@ -12893,5 +12893,36 @@ const CSSValue* InternalEmptyLineHeight::ParseSingleValue( CSSValueID::kNone>(stream); } +const CSSValue* ElectronCornerSmoothing::ParseSingleValue( + CSSParserTokenStream& stream, + const CSSParserContext& context, -+ CSSParserLocalContext&) const { ++ CSSParserLocalContext& local_context) const { + // Try to parse `system-ui` keyword first. + if (auto* ident = + css_parsing_utils::ConsumeIdent(stream)) { @@ -108,7 +108,7 @@ index 1260580d96c01523382fa079aacdbb9777bf682e..f237c8d831dc88d83c081a70ffdffb00 + } + // Try to parse as percent. + return css_parsing_utils::ConsumePercent( -+ stream, context, CSSPrimitiveValue::ValueRange::kNonNegative); ++ stream, context, local_context, CSSPrimitiveValue::ValueRange::kNonNegative); +} + +const CSSValue* ElectronCornerSmoothing::CSSValueFromComputedStyleInternal( @@ -131,10 +131,10 @@ index 1260580d96c01523382fa079aacdbb9777bf682e..f237c8d831dc88d83c081a70ffdffb00 } // namespace css_longhand } // namespace blink diff --git a/third_party/blink/renderer/core/css/resolver/style_builder_converter.cc b/third_party/blink/renderer/core/css/resolver/style_builder_converter.cc -index d1ec024d45aee048a363c1cef2bd42ba44f3fda5..f89f4e6b703a4e817d555519b2682ffc4d4aef53 100644 +index 292812c9e36fed429edf72335069ac3c0bbd780f..13a500d99cec9fb733de41d3071611630c3b09e0 100644 --- a/third_party/blink/renderer/core/css/resolver/style_builder_converter.cc +++ b/third_party/blink/renderer/core/css/resolver/style_builder_converter.cc -@@ -4167,6 +4167,15 @@ PositionTryFallback StyleBuilderConverter::ConvertSinglePositionTryFallback( +@@ -4172,6 +4172,15 @@ PositionTryFallback StyleBuilderConverter::ConvertSinglePositionTryFallback( return PositionTryFallback(scoped_name, tactic_list); } @@ -151,10 +151,10 @@ index d1ec024d45aee048a363c1cef2bd42ba44f3fda5..f89f4e6b703a4e817d555519b2682ffc const CSSValue& value) { const auto& list = To(value); diff --git a/third_party/blink/renderer/core/css/resolver/style_builder_converter.h b/third_party/blink/renderer/core/css/resolver/style_builder_converter.h -index 4a2738ca16223f4b790cac564b733ee732913a96..76c183682ad5b7974644f18afb0e418e2a614082 100644 +index beca76bbbe2d31fde75652a73f5bf2dcfaf17731..bc42166596fdab9f0143b851b27ecfcdf6b716b8 100644 --- a/third_party/blink/renderer/core/css/resolver/style_builder_converter.h +++ b/third_party/blink/renderer/core/css/resolver/style_builder_converter.h -@@ -456,6 +456,7 @@ class StyleBuilderConverter { +@@ -457,6 +457,7 @@ class StyleBuilderConverter { StyleResolverState&, const CSSValue&, bool allow_any_keyword_in_position_area = false); @@ -202,7 +202,7 @@ index 19cda703154dab9397827ab6ea66c2ca446c644d..dd5943c511886f4e39b2e7f10e67e60f return result; } diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn -index 4969253fb0dcbf8347ffe38053631132985852bb..5249663076367413ce600f5a3d4ee998529efe5d 100644 +index e2256766d7a01aee814ba0281b40921b2e261aa9..d55807d00042027fc91faa4479db4043d4ba4add 100644 --- a/third_party/blink/renderer/platform/BUILD.gn +++ b/third_party/blink/renderer/platform/BUILD.gn @@ -1669,6 +1669,8 @@ component("platform") { @@ -313,7 +313,7 @@ index 18f283e625101318ee14b50e6e765dfd1c9a1a44..44a3a55974c9e4b9e715574075f25661 auto DrawAsSinglePath = [&]() { diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -index 9eaaf7a89e3bf9e79c24b6fe8454d23abcc3efe1..9e4f244d9248beac8f93a652982af4e3f0f82a0c 100644 +index 04fcf32ece5fca888f381baf8c818fd4c888391d..17f24e8f71d59a811c69f4692cbe66a9d9974874 100644 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 @@ -214,6 +214,10 @@ diff --git a/patches/chromium/feat_expose_documentloader_setdefersloading_on_webdocumentloader.patch b/patches/chromium/feat_expose_documentloader_setdefersloading_on_webdocumentloader.patch index 26fd68f732..5b10eb0c99 100644 --- a/patches/chromium/feat_expose_documentloader_setdefersloading_on_webdocumentloader.patch +++ b/patches/chromium/feat_expose_documentloader_setdefersloading_on_webdocumentloader.patch @@ -28,10 +28,10 @@ index 33e23680b927d417b0882c7572fe32dc2d2b90c3..9413492f8e0fd6c5371c66329e1ad6d4 // Returns the http referrer of original request which initited this load. diff --git a/third_party/blink/renderer/core/loader/document_loader.h b/third_party/blink/renderer/core/loader/document_loader.h -index d09ec0ea7cfb4f9220ac0923627c024a8a42e3b7..2c7538e85920baef6aa1120b62598bf98717e1a8 100644 +index f7812c9d0ed9f0295b960b2fef8fcc69defc3f68..3f0e349a46b7996858ae2dfd91e888d68f32340a 100644 --- a/third_party/blink/renderer/core/loader/document_loader.h +++ b/third_party/blink/renderer/core/loader/document_loader.h -@@ -321,7 +321,7 @@ class CORE_EXPORT DocumentLoader : public GarbageCollected, +@@ -322,7 +322,7 @@ class CORE_EXPORT DocumentLoader : public GarbageCollected, std::optional task_state_id, bool should_skip_screenshot); diff --git a/patches/chromium/feat_separate_content_settings_callback_for_sync_and_async_clipboard.patch b/patches/chromium/feat_separate_content_settings_callback_for_sync_and_async_clipboard.patch index e476f2cc3f..f7f4b6f6c9 100644 --- a/patches/chromium/feat_separate_content_settings_callback_for_sync_and_async_clipboard.patch +++ b/patches/chromium/feat_separate_content_settings_callback_for_sync_and_async_clipboard.patch @@ -103,7 +103,7 @@ index 638d0ee4fb368d28465322d34dbfca645ecd162d..38c20e7f0c597815ce5ee3333f12183a NUM, MIN_VALUE = MIDI_SYSEX, diff --git a/third_party/blink/public/mojom/permissions/permission.mojom b/third_party/blink/public/mojom/permissions/permission.mojom -index f3e787a35976d86cc4e7307745822634df659941..81c4f0bdc89f972464d13f06c7907e5aabff4043 100644 +index 10ef656b019f46d389de074e5aad292af1728eac..cd200c6aadb304e440df65532a9ef86f0aef4fa7 100644 --- a/third_party/blink/public/mojom/permissions/permission.mojom +++ b/third_party/blink/public/mojom/permissions/permission.mojom @@ -47,7 +47,7 @@ enum PermissionName { diff --git a/patches/chromium/fix_check_for_file_existence_before_setting_mtime.patch b/patches/chromium/fix_check_for_file_existence_before_setting_mtime.patch index 890a28a079..541aeadd6f 100644 --- a/patches/chromium/fix_check_for_file_existence_before_setting_mtime.patch +++ b/patches/chromium/fix_check_for_file_existence_before_setting_mtime.patch @@ -8,10 +8,10 @@ Check for broken links by confirming the file exists before setting its utime. This patch should be upstreamed & removed. diff --git a/tools/clang/scripts/update.py b/tools/clang/scripts/update.py -index 87b78b2502bf4556f24f5e955293ec0704edd2af..ccbc6399b31b8ac6e7355a1d1f1afaacff069e76 100755 +index 91dfea4fa3724a9d8120381503aa9caa9ba36f25..a4136cf157cc2c2df0812f4b7d622d68e0ff386b 100755 --- a/tools/clang/scripts/update.py +++ b/tools/clang/scripts/update.py -@@ -202,10 +202,9 @@ def DownloadAndUnpack(url, output_dir, path_prefixes=None, is_known_zip=False): +@@ -201,10 +201,9 @@ def DownloadAndUnpack(url, output_dir, path_prefixes=None, is_known_zip=False): # The nicest way to do this would be by passing a filter to extractall, # but that functionality is not available in macOS system Python (3.9.6). for m in members: diff --git a/patches/chromium/fix_crash_loading_non-standard_schemes_in_iframes.patch b/patches/chromium/fix_crash_loading_non-standard_schemes_in_iframes.patch index f6d2bb427a..f29f70598b 100644 --- a/patches/chromium/fix_crash_loading_non-standard_schemes_in_iframes.patch +++ b/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 fffe121f9617345c5a63cb3218917af601b6d673..5fcec71e71d866934a776caf6bd52ca466b206f2 100644 +index 24f3887d312dba39306a9e4fbd15d1e03c9eb560..8ca943f732e28ba3c8b4e59f73ea5bb3c29db1e9 100644 --- a/content/browser/renderer_host/navigation_request.cc +++ b/content/browser/renderer_host/navigation_request.cc -@@ -11593,6 +11593,11 @@ url::Origin NavigationRequest::GetOriginForURLLoaderFactoryUnchecked() { +@@ -11623,6 +11623,11 @@ url::Origin NavigationRequest::GetOriginForURLLoaderFactoryUnchecked() { target_rph_id); } @@ -44,10 +44,10 @@ index fffe121f9617345c5a63cb3218917af601b6d673..5fcec71e71d866934a776caf6bd52ca4 // origin of |common_params.url| and/or |common_params.initiator_origin|. url::Origin resolved_origin = url::Origin::Resolve( diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_party/blink/renderer/core/loader/document_loader.cc -index 3b1bebbfd0d12e99002a5534508e3982d28794ad..c4f1018c015cbbf58a65ea7fa6bc3e66205a826f 100644 +index 724a294f596437c5f9fd14f4a5bc2ca8744c20cf..b511c58463cccb3bbaa32ba6ad7b7737a853630a 100644 --- a/third_party/blink/renderer/core/loader/document_loader.cc +++ b/third_party/blink/renderer/core/loader/document_loader.cc -@@ -2332,6 +2332,7 @@ Frame* DocumentLoader::CalculateOwnerFrame() { +@@ -2321,6 +2321,7 @@ Frame* DocumentLoader::CalculateOwnerFrame() { scoped_refptr DocumentLoader::CalculateOrigin( Document* owner_document) { scoped_refptr origin; @@ -55,7 +55,7 @@ index 3b1bebbfd0d12e99002a5534508e3982d28794ad..c4f1018c015cbbf58a65ea7fa6bc3e66 // Whether the origin is newly created within this call, instead of copied // from an existing document's origin or from `origin_to_commit_`. If this is // true, we won't try to compare the nonce of this origin (if it's opaque) to -@@ -2368,6 +2369,9 @@ scoped_refptr DocumentLoader::CalculateOrigin( +@@ -2357,6 +2358,9 @@ scoped_refptr DocumentLoader::CalculateOrigin( // non-renderer only origin bits will be the same, which will be asserted at // the end of this function. origin = origin_to_commit_; diff --git a/patches/chromium/fix_on-screen-keyboard_hides_on_input_blur_in_webview.patch b/patches/chromium/fix_on-screen-keyboard_hides_on_input_blur_in_webview.patch index b0a03bb288..c01146d7b2 100644 --- a/patches/chromium/fix_on-screen-keyboard_hides_on_input_blur_in_webview.patch +++ b/patches/chromium/fix_on-screen-keyboard_hides_on_input_blur_in_webview.patch @@ -9,10 +9,10 @@ focus node change via TextInputManager. chromium-bug: https://crbug.com/1369605 diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc -index 16240a7dc12f43b260ccb80db0dbdacfe844c3ef..1c2b00f29df493b7029802d3ee83f50a8983d25e 100644 +index b16c96b5682846d897c2f0f4dd3881d386928b68..2ae3a467ca4be802cd53b5823f23bf0224c3a761 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura.cc +++ b/content/browser/renderer_host/render_widget_host_view_aura.cc -@@ -3379,6 +3379,12 @@ void RenderWidgetHostViewAura::OnTextSelectionChanged( +@@ -3382,6 +3382,12 @@ void RenderWidgetHostViewAura::OnTextSelectionChanged( } } diff --git a/patches/chromium/fix_os_crypt_async_cookie_encryption.patch b/patches/chromium/fix_os_crypt_async_cookie_encryption.patch index f63837b2bd..f0e1164fd5 100644 --- a/patches/chromium/fix_os_crypt_async_cookie_encryption.patch +++ b/patches/chromium/fix_os_crypt_async_cookie_encryption.patch @@ -17,10 +17,10 @@ Revert "Reland "Port net::CookieCryptoDelegate to os_crypt async"" This reverts commit f01b115c7e21a09cc762f65bf7fd9c6ea9d9d0f8. diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn -index af9875ea3afd99e76a1129a76496ec6aef390b44..296aae791288b9d13689b3979204a1d9d18c88d9 100644 +index 587b492f828ccb3179f34102a99326c09dfb3306..7364814ecb4fd49e44db869b37655d5b4ea09306 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -739,6 +739,8 @@ static_library("browser") { +@@ -737,6 +737,8 @@ static_library("browser") { "net/chrome_report_sender.h", "net/convert_explicitly_allowed_network_ports_pref.cc", "net/convert_explicitly_allowed_network_ports_pref.h", @@ -192,7 +192,7 @@ index b862afe7663111a6cbd342d33723942770bb0490..9dc46cedb109cea63bf71aa43fc7a2b6 #include "services/network/public/mojom/network_context.mojom.h" #include "testing/gtest/include/gtest/gtest.h" diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc -index 2fc099db479ac4bd8bd28292e30c24090d50f498..06f49761d2a4fcc236ecaaf611e69361b664d711 100644 +index 2c6ab9af9f5eebaf68e4b78834b5ce7fdd31d000..04262d11bbf7cbf0d8ece06448df9606922f239b 100644 --- a/chrome/browser/net/system_network_context_manager.cc +++ b/chrome/browser/net/system_network_context_manager.cc @@ -917,13 +917,8 @@ void SystemNetworkContextManager::DisableQuic() { @@ -209,20 +209,20 @@ index 2fc099db479ac4bd8bd28292e30c24090d50f498..06f49761d2a4fcc236ecaaf611e69361 + cookie_encryption_provider_.BindNewRemote(); } - void SystemNetworkContextManager:: + void SystemNetworkContextManager::AddSSLConfigToNetworkContextParams( diff --git a/chrome/browser/net/system_network_context_manager.h b/chrome/browser/net/system_network_context_manager.h -index c8bfb5752a1ffe42c9392522195c4385341376ce..4a2e9db46d3aedc18ff68e61d590bbc5e4c1d2b7 100644 +index 611833bce86135d792670a2cbfbfc661bcedf8dd..6d39b73f77d294ec21aa2d9c328e7f1fa9aad47d 100644 --- a/chrome/browser/net/system_network_context_manager.h +++ b/chrome/browser/net/system_network_context_manager.h -@@ -15,6 +15,7 @@ +@@ -14,6 +14,7 @@ + #include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" - #include "chrome/browser/enterprise/encryption/cache_encryption_provider_impl.h" #include "chrome/browser/net/cert_verifier_service_time_updater.h" +#include "chrome/browser/net/cookie_encryption_provider_impl.h" #include "chrome/browser/net/proxy_config_monitor.h" #include "chrome/browser/net/stub_resolver_config_reader.h" #include "chrome/browser/ssl/ssl_config_service_manager.h" -@@ -24,7 +25,6 @@ +@@ -23,7 +24,6 @@ #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/remote.h" #include "services/cert_verifier/public/mojom/cert_verifier_service_factory.mojom-forward.h" @@ -230,15 +230,15 @@ index c8bfb5752a1ffe42c9392522195c4385341376ce..4a2e9db46d3aedc18ff68e61d590bbc5 #include "services/network/public/mojom/host_resolver.mojom-forward.h" #include "services/network/public/mojom/network_context.mojom.h" #include "services/network/public/mojom/network_service.mojom.h" -@@ -309,7 +309,7 @@ class SystemNetworkContextManager { +@@ -303,7 +303,7 @@ class SystemNetworkContextManager { GssapiLibraryLoadObserver gssapi_library_loader_observer_{this}; #endif // BUILDFLAG(IS_LINUX) - std::unique_ptr cookie_encryption_provider_; + CookieEncryptionProviderImpl cookie_encryption_provider_; - std::unique_ptr - cache_encryption_provider_; + std::unique_ptr cert_verifier_time_updater_; + }; diff --git a/components/cookie_config/BUILD.gn b/components/cookie_config/BUILD.gn index e348b0d1a59470c5cf153ae02e420b9dd6bd1892..a7a51003386fe7b62aaf5b7008c63acefd428942 100644 --- a/components/cookie_config/BUILD.gn diff --git a/patches/chromium/fix_return_v8_value_from_localframe_requestexecutescript.patch b/patches/chromium/fix_return_v8_value_from_localframe_requestexecutescript.patch index 960ecccf94..026017f550 100644 --- a/patches/chromium/fix_return_v8_value_from_localframe_requestexecutescript.patch +++ b/patches/chromium/fix_return_v8_value_from_localframe_requestexecutescript.patch @@ -59,10 +59,10 @@ index cba373664bec3a32abad6fe0396bd67b53b7e67f..a54f1b3351efd2d8f324436f7f35cd43 #endif // THIRD_PARTY_BLINK_PUBLIC_WEB_WEB_SCRIPT_EXECUTION_CALLBACK_H_ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc -index d27f583eb43f63da88e2ebfd67f5f0cd660c193c..2b6cb959591e493b1725df25d6398c838a38eb3b 100644 +index e2b4ad7cfbd5ce4dfa0ae7d4992ac6f0d2b916b7..aa454d1fabb0c1076dfae712c91696c0f2d3c894 100644 --- a/third_party/blink/renderer/core/frame/local_frame.cc +++ b/third_party/blink/renderer/core/frame/local_frame.cc -@@ -3202,6 +3202,7 @@ void LocalFrame::RequestExecuteScript( +@@ -3205,6 +3205,7 @@ void LocalFrame::RequestExecuteScript( mojom::blink::EvaluationTiming evaluation_timing, mojom::blink::LoadEventBlockingOption blocking_option, WebScriptExecutionCallback callback, @@ -70,7 +70,7 @@ index d27f583eb43f63da88e2ebfd67f5f0cd660c193c..2b6cb959591e493b1725df25d6398c83 BackForwardCacheAware back_forward_cache_aware, mojom::blink::WantResultOption want_result_option, mojom::blink::PromiseResultOption promise_behavior) { -@@ -3259,7 +3260,7 @@ void LocalFrame::RequestExecuteScript( +@@ -3262,7 +3263,7 @@ void LocalFrame::RequestExecuteScript( PausableScriptExecutor::CreateAndRun( script_state, std::move(script_sources), execute_script_policy, user_gesture, evaluation_timing, blocking_option, want_result_option, @@ -223,7 +223,7 @@ index d270f1c458a4003fc652eecd3f6ca231038be3d2..6dcbe1bc0e35d4e3d9830549ac1fccea mojom::blink::WantResultOption::kWantResult, wait_for_promise); } diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc -index ed7c68c19364ddc5ea3f9435a122d04ca8d1683a..2516e25e6f9ed222af886e9998e50ae5237dbc57 100644 +index a030f42836966a384ea1a0452bac139cf214d171..bbf8b9a169c292e991f5b862ba1ac3351482ce45 100644 --- a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc +++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc @@ -1128,14 +1128,15 @@ void WebLocalFrameImpl::RequestExecuteScript( diff --git a/patches/chromium/fix_select_the_first_menu_item_when_opened_via_keyboard.patch b/patches/chromium/fix_select_the_first_menu_item_when_opened_via_keyboard.patch index 13f17d0659..97e1c71f79 100644 --- a/patches/chromium/fix_select_the_first_menu_item_when_opened_via_keyboard.patch +++ b/patches/chromium/fix_select_the_first_menu_item_when_opened_via_keyboard.patch @@ -6,10 +6,10 @@ Subject: fix: select the first menu item when opened via keyboard This fixes an accessibility issue where the root view is 'focused' to the screen reader instead of the first menu item as with all other native menus. This patch will be upstreamed. diff --git a/ui/views/controls/menu/menu_controller.cc b/ui/views/controls/menu/menu_controller.cc -index 0ba6f7703ec8a6acb38e6722b8f66de8892d4e45..a7bd3cf249f2bd5d63002ebec84fd2284d8251b3 100644 +index f84caf2bba616b52ae572f0195c02baa2e05d21e..2e2e3df20b1fa8acbf859300f3de3e24b5cf5efd 100644 --- a/ui/views/controls/menu/menu_controller.cc +++ b/ui/views/controls/menu/menu_controller.cc -@@ -717,6 +717,16 @@ void MenuController::Run(Widget* parent, +@@ -724,6 +724,16 @@ void MenuController::Run(Widget* parent, SetSelection(root, SELECTION_OPEN_SUBMENU | SELECTION_UPDATE_IMMEDIATELY); } @@ -26,7 +26,7 @@ index 0ba6f7703ec8a6acb38e6722b8f66de8892d4e45..a7bd3cf249f2bd5d63002ebec84fd228 if (button_controller) { pressed_lock_ = button_controller->TakeLock( false, ui::LocatedEvent::FromIfValid(event)); -@@ -2516,18 +2526,15 @@ void MenuController::OpenMenuImpl(MenuItemView* item, bool show) { +@@ -2523,18 +2533,15 @@ void MenuController::OpenMenuImpl(MenuItemView* item, bool show) { } item->GetSubmenu()->ShowAt(params); diff --git a/patches/chromium/frame_host_manager.patch b/patches/chromium/frame_host_manager.patch index ccc0ed1d6f..2e3138dd52 100644 --- a/patches/chromium/frame_host_manager.patch +++ b/patches/chromium/frame_host_manager.patch @@ -20,10 +20,10 @@ index 581d86c4ec4f437d7195c003d8776795f59cf696..632d2645d4ed3a8e83070f08320b2252 } diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h -index 4ad0e28385dd11d2b0987cbd597caf246cbbe9b7..6cd44536ba5e956b6cb08c9807817c6f01fb0665 100644 +index d97d2e328de91be93ca1fc542ad1d8c8131285d1..185e0c86bc02a80121af3c213aa496ca62565c31 100644 --- a/content/public/browser/content_browser_client.h +++ b/content/public/browser/content_browser_client.h -@@ -342,6 +342,11 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -349,6 +349,11 @@ class CONTENT_EXPORT ContentBrowserClient { virtual ~ContentBrowserClient() = default; diff --git a/patches/chromium/gritsettings_resource_ids.patch b/patches/chromium/gritsettings_resource_ids.patch index d4f76b0de3..a0645326e2 100644 --- a/patches/chromium/gritsettings_resource_ids.patch +++ b/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 a476485cfaaa65b2868ff2b911d1e1dd3456b53c..00cad7a698ca96ffb42d8c6d57adbce5585e7b3e 100644 +index 9c95ec9dc4923c0a4d1b4aef7102821f12124fb8..6a5b88a70392f99b1fdf34a3ea7f222f29f38803 100644 --- a/tools/gritsettings/resource_ids.spec +++ b/tools/gritsettings/resource_ids.spec -@@ -1625,6 +1625,11 @@ +@@ -1629,6 +1629,11 @@ "messages": [10120], }, diff --git a/patches/chromium/load_v8_snapshot_in_browser_process.patch b/patches/chromium/load_v8_snapshot_in_browser_process.patch deleted file mode 100644 index 5f751a4035..0000000000 --- a/patches/chromium/load_v8_snapshot_in_browser_process.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: John Kleinschmidt -Date: Mon, 11 Oct 2021 14:08:06 -0400 -Subject: load v8 snapshot in browser process - -https://chromium-review.googlesource.com/c/chromium/src/+/3183394 -made a change to not load the v8 snapshot in the browser process, -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 ed476de46617f416982a4257fe1750ee301ba4f8..3aeea292145cd5aaa445a29840156a47379d9d2c 100644 ---- a/content/app/content_main_runner_impl.cc -+++ b/content/app/content_main_runner_impl.cc -@@ -297,11 +297,8 @@ void LoadV8SnapshotFile(const base::CommandLine& command_line) { - - bool ShouldLoadV8Snapshot(const base::CommandLine& command_line, - const std::string& process_type) { -- // The gpu does not need v8, and the browser only needs v8 when in single -- // process mode. -- if (process_type == switches::kGpuProcess || -- (process_type.empty() && -- !command_line.HasSwitch(switches::kSingleProcess))) { -+ // The gpu does not need v8 -+ if (process_type == switches::kGpuProcess) { - return false; - } - return true; diff --git a/patches/chromium/mas_avoid_private_macos_api_usage.patch.patch b/patches/chromium/mas_avoid_private_macos_api_usage.patch.patch index de83cec14d..450712f891 100644 --- a/patches/chromium/mas_avoid_private_macos_api_usage.patch.patch +++ b/patches/chromium/mas_avoid_private_macos_api_usage.patch.patch @@ -47,10 +47,10 @@ system font by checking if it's kCTFontPriorityAttribute is set to system priority. diff --git a/base/BUILD.gn b/base/BUILD.gn -index 9b83881f61c52789ff377911f65a5e7440988aea..b09e6f2b64e63a45b28b11d5a83582b6b0184f36 100644 +index d97f936a5c26dcf6b39c8ed50630f183d5083d5d..0719808270ddce00c8dd324eff72675278ae7aa7 100644 --- a/base/BUILD.gn +++ b/base/BUILD.gn -@@ -1083,6 +1083,7 @@ component("base") { +@@ -1082,6 +1082,7 @@ component("base") { "//build:ios_buildflags", "//build/config/compiler:compiler_buildflags", "//third_party/modp_b64", @@ -793,7 +793,7 @@ index 712d59e1f7d9681c122e6d05a8b65bccbfacb492..de24209bbd3cd4a530c6f32990a0f93a return kAttributes; } diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn -index 1c268292e081f54f9c71ad71d8ff1a69c802036b..6702cd695aa1db5f58d6c6f0534f757f470783a4 100644 +index 93ee33b10227da37b9404865df15eae16de2f9a9..5bb4a91572634a5ec296b0ec704b331cec319540 100644 --- a/content/browser/BUILD.gn +++ b/content/browser/BUILD.gn @@ -344,6 +344,7 @@ source_set("browser") { @@ -839,7 +839,7 @@ index 367834e678f44d6e71c4218d293e11c3569daf2b..c97fb8f0411b45c1a01e4fab8dc40cc3 // Used to force the NSApplication's focused accessibility element to be the // content::BrowserAccessibilityCocoa accessibility tree when the NSView for diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm -index 227613945d5d4afa485aabf34f1ecec6aacb04d4..492a3692cd2abec2ed3731e848d67094a1e5eedc 100644 +index d93c66c9997dbaa912195d1d99a021486fd81e14..082c24657917671fbee8f755786285af66640a92 100644 --- a/content/browser/renderer_host/render_widget_host_view_mac.mm +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm @@ -52,6 +52,7 @@ @@ -886,7 +886,7 @@ index 227613945d5d4afa485aabf34f1ecec6aacb04d4..492a3692cd2abec2ed3731e848d67094 } bool RenderWidgetHostViewMac::SyncIsWidgetForMainFrame( -@@ -2233,20 +2240,26 @@ void CombineTextNodesAndMakeCallback(SpeechCallback callback, +@@ -2255,20 +2262,26 @@ void CombineTextNodesAndMakeCallback(SpeechCallback callback, void RenderWidgetHostViewMac::GetRenderWidgetAccessibilityToken( GetRenderWidgetAccessibilityTokenCallback callback) { base::ProcessId pid = getpid(); @@ -914,7 +914,7 @@ index 227613945d5d4afa485aabf34f1ecec6aacb04d4..492a3692cd2abec2ed3731e848d67094 /////////////////////////////////////////////////////////////////////////////// diff --git a/content/common/BUILD.gn b/content/common/BUILD.gn -index 1df402ca32ab9774f9b130e9ab699557eff9aaef..b2af61152fb65b08e28642e3daab18fedff1e191 100644 +index 605f250c1f94e4b12a6790bd9fb4623d1f1a9d45..d5cf3b48e1b35527ec69b49e375710cc5f12cf9d 100644 --- a/content/common/BUILD.gn +++ b/content/common/BUILD.gn @@ -270,6 +270,7 @@ source_set("common") { @@ -926,10 +926,10 @@ index 1df402ca32ab9774f9b130e9ab699557eff9aaef..b2af61152fb65b08e28642e3daab18fe defines = [] diff --git a/content/renderer/BUILD.gn b/content/renderer/BUILD.gn -index ee387002e8dbb54ddeb1f61f1973560cc91bfb42..5a46859e916fd3510b7add5a6af7cea1cf4b4827 100644 +index dc4ac3b6aa8d57ea8dd5357d3865c4d418942f87..5aaa899b8c92b473d3c6cf5d24da34ed74285ec1 100644 --- a/content/renderer/BUILD.gn +++ b/content/renderer/BUILD.gn -@@ -323,6 +323,7 @@ target(link_target_type, "renderer") { +@@ -325,6 +325,7 @@ target(link_target_type, "renderer") { "//ui/strings:auto_image_annotation_strings_grit", "//url", "//v8", @@ -1008,7 +1008,7 @@ index a1068589ad844518038ee7bc15a3de9bc5cba525..1ff781c49f086ec8015c7d3c44567dbe } // namespace content diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn -index 669d96a275ef693a3ce0eab7ddfb564e11daf2ee..3e5b7d6ca446fbfd60afa7fbd6b5284945730df8 100644 +index 9e0752536c531454b08cd0473958dbda4c3338cc..ed15bfd6bbfca8ed420115e42d3b0988aed15d65 100644 --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn @@ -701,6 +701,7 @@ static_library("test_support") { @@ -1607,10 +1607,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 4dabfb153a0ef874b22ac958c39114fc78fbf009..40a0e30239ec74e9dfc5c3b16c81f580097dac38 100644 +index c8135570f00e9bd737bd775478ea5a8642507d7a..44265e4f5a7c3bcafe26e6ee1db83bbd048e6ebf 100644 --- a/third_party/blink/renderer/core/BUILD.gn +++ b/third_party/blink/renderer/core/BUILD.gn -@@ -438,6 +438,7 @@ component("core") { +@@ -439,6 +439,7 @@ component("core") { "//ui/gfx/geometry", "//ui/gfx/geometry:geometry_skia", "//ui/strings", diff --git a/patches/chromium/notification_provenance.patch b/patches/chromium/notification_provenance.patch index 2b779f611d..e408939ded 100644 --- a/patches/chromium/notification_provenance.patch +++ b/patches/chromium/notification_provenance.patch @@ -133,10 +133,10 @@ index 9bf238e64af483294ae3c3f18a4e9aed49a8658d..b9b2a4c8c387b8e8b4eb1f02fc0f891c const GURL& document_url, const WeakDocumentPtr& weak_document_ptr, diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc -index d7071ea7de931a29dc7e30dc7ee3420b47653cb3..fa75aa0c973821442c13931fc797bb55a5e18be3 100644 +index 3ecc3180b816116659a6d76ea21817971c69afe2..713dcec09c194d1f648811a50a28746418bb16a6 100644 --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc -@@ -2361,7 +2361,7 @@ void RenderProcessHostImpl::CreateNotificationService( +@@ -2364,7 +2364,7 @@ void RenderProcessHostImpl::CreateNotificationService( case RenderProcessHost::NotificationServiceCreatorType::kSharedWorker: case RenderProcessHost::NotificationServiceCreatorType::kDedicatedWorker: { storage_partition_impl_->GetPlatformNotificationContext()->CreateService( @@ -145,7 +145,7 @@ index d7071ea7de931a29dc7e30dc7ee3420b47653cb3..fa75aa0c973821442c13931fc797bb55 creator_type, std::move(receiver)); break; } -@@ -2369,7 +2369,7 @@ void RenderProcessHostImpl::CreateNotificationService( +@@ -2372,7 +2372,7 @@ void RenderProcessHostImpl::CreateNotificationService( CHECK(rfh); storage_partition_impl_->GetPlatformNotificationContext()->CreateService( diff --git a/patches/chromium/port_autofill_colors_to_the_color_pipeline.patch b/patches/chromium/port_autofill_colors_to_the_color_pipeline.patch index b5453b6756..3e57dbcc2e 100644 --- a/patches/chromium/port_autofill_colors_to_the_color_pipeline.patch +++ b/patches/chromium/port_autofill_colors_to_the_color_pipeline.patch @@ -61,7 +61,7 @@ index 8817142344cc9abed442f07b5cbe759b82901c06..edf6d4ca1bfce93f8dcbeb2585c9ec07 CompleteDefaultWebNativeRendererColorIdsDefinition( mixer, dark_mode, diff --git a/ui/color/win/native_color_mixers_win.cc b/ui/color/win/native_color_mixers_win.cc -index dadb94f18feccb570680fc74a899a957f8f7ce1b..dac1ab13e5bb91d5a0901b7988d4ee02a725837d 100644 +index 3a9c0fe7771d3c48b428ce15186abc489f87f511..8ed3e1ed471dfeba885c807888e145993fa23a1e 100644 --- a/ui/color/win/native_color_mixers_win.cc +++ b/ui/color/win/native_color_mixers_win.cc @@ -145,6 +145,10 @@ void AddNativeUiColorMixer(ColorProvider* provider, diff --git a/patches/chromium/refactor_patch_electron_permissiontypes_into_blink.patch b/patches/chromium/refactor_patch_electron_permissiontypes_into_blink.patch index 4d1f474ad8..c1f1f8dd2f 100644 --- a/patches/chromium/refactor_patch_electron_permissiontypes_into_blink.patch +++ b/patches/chromium/refactor_patch_electron_permissiontypes_into_blink.patch @@ -182,7 +182,7 @@ index 38c20e7f0c597815ce5ee3333f12183ac1e18c62..7bce804a8ed1c8a2f2ac18524c6317db MIN_VALUE = MIDI_SYSEX, }; diff --git a/third_party/blink/public/mojom/permissions/permission.mojom b/third_party/blink/public/mojom/permissions/permission.mojom -index 81c4f0bdc89f972464d13f06c7907e5aabff4043..cfeb183f2c3bdf75d90f5ad19bc7254edc9d4d31 100644 +index cd200c6aadb304e440df65532a9ef86f0aef4fa7..88448c95da18953402b6de44676edfb19f657c05 100644 --- a/third_party/blink/public/mojom/permissions/permission.mojom +++ b/third_party/blink/public/mojom/permissions/permission.mojom @@ -47,8 +47,16 @@ enum PermissionName { diff --git a/patches/chromium/revert_code_health_clean_up_stale_macwebcontentsocclusion.patch b/patches/chromium/revert_code_health_clean_up_stale_macwebcontentsocclusion.patch index bd56bccfea..07ea6ee90a 100644 --- a/patches/chromium/revert_code_health_clean_up_stale_macwebcontentsocclusion.patch +++ b/patches/chromium/revert_code_health_clean_up_stale_macwebcontentsocclusion.patch @@ -254,7 +254,7 @@ index 8fa50db5b7aee7f8138d2b9be41d15e567059c36..c5bb7897b00ee5a6be6789096f9a55f7 } diff --git a/content/common/features.cc b/content/common/features.cc -index 7f3e8486099e43c7ed3b18cb3c6aa4e64ee676bc..945cd3a48c1df45a7f49424ce31eb61432e674f0 100644 +index ee57a03b5f673534960e7e59cbde29911dcee7c4..b66c1a906c800354c86173ee7a77bafc4ae666f5 100644 --- a/content/common/features.cc +++ b/content/common/features.cc @@ -359,6 +359,14 @@ BASE_FEATURE(kInterestGroupUpdateIfOlderThan, base::FEATURE_ENABLED_BY_DEFAULT); @@ -273,7 +273,7 @@ index 7f3e8486099e43c7ed3b18cb3c6aa4e64ee676bc..945cd3a48c1df45a7f49424ce31eb614 BASE_FEATURE(kKeepChildProcessAfterIPCReset, base::FEATURE_DISABLED_BY_DEFAULT); diff --git a/content/common/features.h b/content/common/features.h -index 61c793e766747b1eac9a87a18fc6bfffb82ff110..12bbe8b94a880ec7060f8f115c92d96167342685 100644 +index 1f0da9ad14a61c055e38f9dac54c8654c67f73e5..d21af11d91149a0cec2cf9400b44a9f670662340 100644 --- a/content/common/features.h +++ b/content/common/features.h @@ -138,6 +138,9 @@ CONTENT_EXPORT BASE_DECLARE_FEATURE(kInterestGroupUpdateIfOlderThan); diff --git a/patches/chromium/revert_views_remove_desktopwindowtreehostwin_window_enlargement.patch b/patches/chromium/revert_views_remove_desktopwindowtreehostwin_window_enlargement.patch index afaabf4010..496d5d73bb 100644 --- a/patches/chromium/revert_views_remove_desktopwindowtreehostwin_window_enlargement.patch +++ b/patches/chromium/revert_views_remove_desktopwindowtreehostwin_window_enlargement.patch @@ -10,10 +10,10 @@ on Windows. We should refactor our code so that this patch isn't necessary. diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json -index 6fd09f45a701c39c102ad71149a5fb9299d49959..237f7f642e9466e02dcc30a50e4f1c28369b0b56 100644 +index 57a355cecfce2db904dde6c9acfff52c8f1b0253..e8e4a07f9db1a5fd95fa647972e328770c7064ee 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json -@@ -25949,6 +25949,21 @@ +@@ -26155,6 +26155,21 @@ ] } ], diff --git a/patches/chromium/scroll_bounce_flag.patch b/patches/chromium/scroll_bounce_flag.patch index 69b72df706..84bccbcbca 100644 --- a/patches/chromium/scroll_bounce_flag.patch +++ b/patches/chromium/scroll_bounce_flag.patch @@ -6,7 +6,7 @@ Subject: scroll_bounce_flag.patch Patch to make scrollBounce option work. diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc -index 16057c4a0ed0f700262c1c5835ca93a1db96bf6f..7d87c92682e4f7b5e5ee5e51850ce57eaf5d0cf2 100644 +index 816c1f06fe475873f10a270a05ea52f12020e971..73bcb6cf18f488f0d5dd8bd526c3df34c78e4abf 100644 --- a/content/renderer/render_thread_impl.cc +++ b/content/renderer/render_thread_impl.cc @@ -1154,11 +1154,11 @@ bool RenderThreadImpl::IsLcdTextEnabled() { diff --git a/patches/chromium/support_mixed_sandbox_with_zygote.patch b/patches/chromium/support_mixed_sandbox_with_zygote.patch index 17aa95b2de..d9d51e5d9d 100644 --- a/patches/chromium/support_mixed_sandbox_with_zygote.patch +++ b/patches/chromium/support_mixed_sandbox_with_zygote.patch @@ -22,10 +22,10 @@ However, the patch would need to be reviewed by the security team, as it does touch a security-sensitive class. diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc -index fa75aa0c973821442c13931fc797bb55a5e18be3..c1a7f41ec3250740a00c050c95b4f5ad5dce774b 100644 +index 713dcec09c194d1f648811a50a28746418bb16a6..7dedc2302f7bac673222fbb5b6c036b29ad54dad 100644 --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc -@@ -1933,6 +1933,10 @@ bool RenderProcessHostImpl::Init() { +@@ -1936,6 +1936,10 @@ bool RenderProcessHostImpl::Init() { std::unique_ptr sandbox_delegate = std::make_unique( *cmd_line, IsPdf(), IsJitDisabled()); diff --git a/patches/chromium/webview_fullscreen.patch b/patches/chromium/webview_fullscreen.patch index fb380d51fd..72694745f5 100644 --- a/patches/chromium/webview_fullscreen.patch +++ b/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 e96ede02cb19aab1aa43bbbc9f48e201842312dd..aff5ae9cdffd5c49038716d708b2344934e7ff17 100644 +index bb3b1d7cd446d25f1e9d90b92f0fed8c841973c4..c6185443d3c8d15eb3a0de98555aeb8b8b39470d 100644 --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc -@@ -9030,6 +9030,17 @@ void RenderFrameHostImpl::EnterFullscreen( +@@ -9029,6 +9029,17 @@ void RenderFrameHostImpl::EnterFullscreen( } } diff --git a/patches/devtools_frontend/chore_expose_ui_to_allow_electron_to_set_dock_side.patch b/patches/devtools_frontend/chore_expose_ui_to_allow_electron_to_set_dock_side.patch index 4c172fcdf7..0bbb102782 100644 --- a/patches/devtools_frontend/chore_expose_ui_to_allow_electron_to_set_dock_side.patch +++ b/patches/devtools_frontend/chore_expose_ui_to_allow_electron_to_set_dock_side.patch @@ -10,10 +10,10 @@ 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 8058b3edc5632c9e38f46bfed05dee2a52eff67b..9a2ef2aba5fcc5f92e54cda577c11f6b6a4da821 100644 +index 39d7757f9199584bae3d04934b8d0108fcd6cd76..034e68cce73b7bd63b10ac00e309dbf61ffce957 100644 --- a/front_end/entrypoints/main/MainImpl.ts +++ b/front_end/entrypoints/main/MainImpl.ts -@@ -773,6 +773,8 @@ export class MainImpl { +@@ -775,6 +775,8 @@ export class MainImpl { globalThis.Main = globalThis.Main || {}; // @ts-expect-error Exported for Tests.js globalThis.Main.Main = MainImpl; diff --git a/patches/nan/.patches b/patches/nan/.patches index b74380bdad..35a8db7b4b 100644 --- a/patches/nan/.patches +++ b/patches/nan/.patches @@ -7,3 +7,4 @@ fix_deprecation_of_v8_context_and_v8_object_api_methods.patch remove_accesscontrol_enum_for_v8_14_4_59.patch chore_add_yarnrc_yml_and_yarn_lock_file_to_use_yarn_v4.patch chore_handle_deprecation_of_v8_returnvalue_void_set_local_s.patch +chore_handle_removal_of_v8_propertycallbackinfo_t_this.patch diff --git a/patches/nan/chore_handle_removal_of_v8_propertycallbackinfo_t_this.patch b/patches/nan/chore_handle_removal_of_v8_propertycallbackinfo_t_this.patch new file mode 100644 index 0000000000..65e38a7095 --- /dev/null +++ b/patches/nan/chore_handle_removal_of_v8_propertycallbackinfo_t_this.patch @@ -0,0 +1,34 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: David Sanders +Date: Wed, 21 Jan 2026 17:32:51 -0800 +Subject: chore: handle removal of v8::PropertyCallbackInfo::This() + +Refs https://chromium-review.googlesource.com/c/v8/v8/+/7474608 +See https://issues.chromium.org/issues/455600234 + +diff --git a/nan_callbacks_12_inl.h b/nan_callbacks_12_inl.h +index 24979fb0d66595f5e80f493c78291d6600bfc34a..5cb6d98406ada00186289cc471726fa2a5ae711d 100644 +--- a/nan_callbacks_12_inl.h ++++ b/nan_callbacks_12_inl.h +@@ -176,7 +176,20 @@ class PropertyCallbackInfo { + + inline v8::Isolate* GetIsolate() const { return info_.GetIsolate(); } + inline v8::Local Data() const { return data_; } +- inline v8::Local This() const { return info_.This(); } ++ inline v8::Local This() const { ++#if defined(V8_MAJOR_VERSION) && \ ++ (V8_MAJOR_VERSION > 14 || \ ++ (V8_MAJOR_VERSION == 14 && \ ++ (defined(V8_MINOR_VERSION) && \ ++ (V8_MINOR_VERSION > 6 || \ ++ (V8_MINOR_VERSION == 6 && defined(V8_BUILD_NUMBER) && \ ++ V8_BUILD_NUMBER >= 40))))) ++ return info_.HolderV2(); ++#else ++ return info_.This(); ++#endif ++ } ++ + inline v8::Local Holder() const { return info_.HolderV2(); } + inline ReturnValue GetReturnValue() const { + return ReturnValue(info_.GetReturnValue()); diff --git a/patches/node/.patches b/patches/node/.patches index 7534de6be3..03db9c8c3d 100644 --- a/patches/node/.patches +++ b/patches/node/.patches @@ -45,3 +45,4 @@ fix_suppress_nodiscard_warning_for_copy_options_operator.patch test_make_buffer_sizes_32bit-aware_in.patch src_refactor_module_wrap_cc_to_update_fixedarray_get_params.patch src_refactor_wasmstreaming_finish_to_accept_a_callback.patch +src_stop_using_v8_propertycallbackinfo_t_this.patch diff --git a/patches/node/src_stop_using_v8_propertycallbackinfo_t_this.patch b/patches/node/src_stop_using_v8_propertycallbackinfo_t_this.patch new file mode 100644 index 0000000000..27b404d54d --- /dev/null +++ b/patches/node/src_stop_using_v8_propertycallbackinfo_t_this.patch @@ -0,0 +1,157 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Igor Sheludko +Date: Sun, 7 Dec 2025 21:25:15 +0100 +Subject: src: stop using `v8::PropertyCallbackInfo::This()` + +Refs: https://github.com/nodejs/node/issues/60616 + +diff --git a/src/module_wrap.cc b/src/module_wrap.cc +index 2c95ac99be70b0750372e9c858753bf519498e3d..5ab30502fd232196739ca2b450e35cc995f02d74 100644 +--- a/src/module_wrap.cc ++++ b/src/module_wrap.cc +@@ -1000,7 +1000,7 @@ void ModuleWrap::HasAsyncGraph(Local property, + Isolate* isolate = args.GetIsolate(); + Environment* env = Environment::GetCurrent(isolate); + ModuleWrap* obj; +- ASSIGN_OR_RETURN_UNWRAP(&obj, args.This()); ++ ASSIGN_OR_RETURN_UNWRAP(&obj, args.HolderV2()); + + Local module = obj->module_.Get(isolate); + if (module->GetStatus() < Module::kInstantiated) { +diff --git a/src/node_contextify.cc b/src/node_contextify.cc +index e66d4fcb0c064f96cdb819c783027d864fe88d12..619980b36db457ef7e476eacd446e3bf2a9a71d2 100644 +--- a/src/node_contextify.cc ++++ b/src/node_contextify.cc +@@ -460,7 +460,7 @@ ContextifyContext* ContextifyContext::Get(const PropertyCallbackInfo& args) { + // args.GetIsolate()->GetCurrentContext() and take the pointer at + // ContextEmbedderIndex::kContextifyContext, as V8 is supposed to + // push the creation context before invoking these callbacks. +- return Get(args.This()); ++ return Get(args.HolderV2()); + } + + ContextifyContext* ContextifyContext::Get(Local object) { +@@ -593,10 +593,21 @@ Intercepted ContextifyContext::PropertySetterCallback( + return Intercepted::kNo; + } + ++ // V8 comment: As long as the context is not detached the contextual accesses ++ // are the same as regular accesses to `context->Global()`s data property. ++ // The only difference is that after detaching `args.Holder()` will ++ // become a new identity and will no longer be equal to `context->Global()`. ++ // TODO(Node.js): revise the code below as the "contextual"-ness of the ++ // store is not actually relevant here. Also, new variable declaration is ++ // reported by V8 via PropertyDefinerCallback. ++ bool is_declared = is_declared_on_global_proxy || is_declared_on_sandbox; ++ ++/* + // true for x = 5 + // false for this.x = 5 + // false for Object.defineProperty(this, 'foo', ...) + // false for vmResult.x = 5 where vmResult = vm.runInContext(); ++ + bool is_contextual_store = ctx->global_proxy() != args.This(); + + // Indicator to not return before setting (undeclared) function declarations +@@ -613,7 +624,7 @@ Intercepted ContextifyContext::PropertySetterCallback( + !is_function) { + return Intercepted::kNo; + } +- ++*/ + if (!is_declared && property->IsSymbol()) { + return Intercepted::kNo; + } +diff --git a/src/node_modules.cc b/src/node_modules.cc +index b5425122b54d91673e184ccfe88dd3a0ca2ff634..d1db60e59ac0f1f3e3bfceecc81c81cd038bac66 100644 +--- a/src/node_modules.cc ++++ b/src/node_modules.cc +@@ -645,7 +645,7 @@ static void PathHelpersLazyGetter(Local name, + // When this getter is invoked in a vm context, the `Realm::GetCurrent(info)` + // returns a nullptr and retrieve the creation context via `this` object and + // get the creation Realm. +- Local receiver_val = info.This(); ++ Local receiver_val = info.HolderV2(); + if (!receiver_val->IsObject()) { + THROW_ERR_INVALID_INVOCATION(isolate); + return; +diff --git a/src/node_util.cc b/src/node_util.cc +index 2e4d98a8a66a18248ed292895671709abca155ad..0306e0b5d85269a7381356b53d34b7cc73f963d4 100644 +--- a/src/node_util.cc ++++ b/src/node_util.cc +@@ -370,7 +370,7 @@ static void DefineLazyPropertiesGetter( + // When this getter is invoked in a vm context, the `Realm::GetCurrent(info)` + // returns a nullptr and retrieve the creation context via `this` object and + // get the creation Realm. +- Local receiver_val = info.This(); ++ Local receiver_val = info.HolderV2(); + if (!receiver_val->IsObject()) { + THROW_ERR_INVALID_INVOCATION(isolate); + return; +diff --git a/src/node_webstorage.cc b/src/node_webstorage.cc +index 5819d9bca845e0eed6d4d93564469d8f3c36200b..f4139f25f22b0744b0819ea4570f23254c80ec13 100644 +--- a/src/node_webstorage.cc ++++ b/src/node_webstorage.cc +@@ -531,7 +531,7 @@ template + static bool ShouldIntercept(Local property, + const PropertyCallbackInfo& info) { + Environment* env = Environment::GetCurrent(info); +- Local proto = info.This()->GetPrototypeV2(); ++ Local proto = info.HolderV2()->GetPrototypeV2(); + + if (proto->IsObject()) { + bool has_prop; +@@ -555,7 +555,7 @@ static Intercepted StorageGetter(Local property, + } + + Storage* storage; +- ASSIGN_OR_RETURN_UNWRAP(&storage, info.This(), Intercepted::kNo); ++ ASSIGN_OR_RETURN_UNWRAP(&storage, info.HolderV2(), Intercepted::kNo); + Local result; + + if (storage->Load(property).ToLocal(&result) && !result->IsNull()) { +@@ -569,7 +569,7 @@ static Intercepted StorageSetter(Local property, + Local value, + const PropertyCallbackInfo& info) { + Storage* storage; +- ASSIGN_OR_RETURN_UNWRAP(&storage, info.This(), Intercepted::kNo); ++ ASSIGN_OR_RETURN_UNWRAP(&storage, info.HolderV2(), Intercepted::kNo); + + if (storage->Store(property, value).IsNothing()) { + info.GetReturnValue().SetFalse(); +@@ -585,7 +585,7 @@ static Intercepted StorageQuery(Local property, + } + + Storage* storage; +- ASSIGN_OR_RETURN_UNWRAP(&storage, info.This(), Intercepted::kNo); ++ ASSIGN_OR_RETURN_UNWRAP(&storage, info.HolderV2(), Intercepted::kNo); + Local result; + if (!storage->Load(property).ToLocal(&result) || result->IsNull()) { + return Intercepted::kNo; +@@ -598,7 +598,7 @@ static Intercepted StorageQuery(Local property, + static Intercepted StorageDeleter(Local property, + const PropertyCallbackInfo& info) { + Storage* storage; +- ASSIGN_OR_RETURN_UNWRAP(&storage, info.This(), Intercepted::kNo); ++ ASSIGN_OR_RETURN_UNWRAP(&storage, info.HolderV2(), Intercepted::kNo); + + info.GetReturnValue().Set(storage->Remove(property).IsJust()); + +@@ -607,7 +607,7 @@ static Intercepted StorageDeleter(Local property, + + static void StorageEnumerator(const PropertyCallbackInfo& info) { + Storage* storage; +- ASSIGN_OR_RETURN_UNWRAP(&storage, info.This()); ++ ASSIGN_OR_RETURN_UNWRAP(&storage, info.HolderV2()); + Local result; + if (!storage->Enumerate().ToLocal(&result)) { + return; +@@ -619,7 +619,7 @@ static Intercepted StorageDefiner(Local property, + const PropertyDescriptor& desc, + const PropertyCallbackInfo& info) { + Storage* storage; +- ASSIGN_OR_RETURN_UNWRAP(&storage, info.This(), Intercepted::kNo); ++ ASSIGN_OR_RETURN_UNWRAP(&storage, info.HolderV2(), Intercepted::kNo); + + if (desc.has_value()) { + return StorageSetter(property, desc.value(), info); diff --git a/shell/app/electron_main_delegate.cc b/shell/app/electron_main_delegate.cc index 2339136712..07d21ab529 100644 --- a/shell/app/electron_main_delegate.cc +++ b/shell/app/electron_main_delegate.cc @@ -502,6 +502,15 @@ bool ElectronMainDelegate::ShouldInitializeMojo(InvokedIn invoked_in) { return ShouldCreateFeatureList(invoked_in); } +bool ElectronMainDelegate::ShouldLoadV8Snapshot( + const std::string& process_type) { + // The gpu does not need v8 + if (process_type == ::switches::kGpuProcess) { + return false; + } + return true; +} + bool ElectronMainDelegate::ShouldLockSchemeRegistry() { return false; } diff --git a/shell/app/electron_main_delegate.h b/shell/app/electron_main_delegate.h index af36512849..20edab7910 100644 --- a/shell/app/electron_main_delegate.h +++ b/shell/app/electron_main_delegate.h @@ -57,6 +57,7 @@ class ElectronMainDelegate : public content::ContentMainDelegate { content::MainFunctionParams main_function_params) override; bool ShouldCreateFeatureList(InvokedIn invoked_in) override; bool ShouldInitializeMojo(InvokedIn invoked_in) override; + bool ShouldLoadV8Snapshot(const std::string& process_type) override; bool ShouldLockSchemeRegistry() override; #if BUILDFLAG(IS_LINUX) void ZygoteForked() override; diff --git a/shell/browser/api/electron_api_protocol.cc b/shell/browser/api/electron_api_protocol.cc index cb7093c43f..ea13c9f33f 100644 --- a/shell/browser/api/electron_api_protocol.cc +++ b/shell/browser/api/electron_api_protocol.cc @@ -4,11 +4,11 @@ #include "shell/browser/api/electron_api_protocol.h" +#include #include #include #include "base/command_line.h" -#include "base/containers/contains.h" #include "base/no_destructor.h" #include "content/common/url_schemes.h" #include "content/public/browser/child_process_security_policy.h" @@ -269,7 +269,7 @@ v8::Local Protocol::IsProtocolHandled(v8::Isolate* const isolate, // So we have to test against a hard-coded builtin schemes // list make it work with old code. We should deprecate // this API with the new |isProtocolRegistered| API. - base::Contains(kBuiltinSchemes, scheme)); + std::ranges::contains(kBuiltinSchemes, scheme)); } void Protocol::HandleOptionalCallback(gin::Arguments* args, Error error) { diff --git a/shell/browser/api/electron_api_web_contents.cc b/shell/browser/api/electron_api_web_contents.cc index 52ffc72ca2..cb1a99b6d5 100644 --- a/shell/browser/api/electron_api_web_contents.cc +++ b/shell/browser/api/electron_api_web_contents.cc @@ -544,6 +544,28 @@ constexpr std::string_view CursorTypeToString( } } +// Refs +// https://source.chromium.org/chromium/chromium/src/+/main:components/page_content_annotations/content/page_context_fetcher.cc;l=206-223;drc=376a51732fd3b17b83451ceb93eea7ad07204798 +std::string_view CopyFromSurfaceErrorToString( + content::CopyFromSurfaceError error) { + switch (error) { + case content::CopyFromSurfaceError::kUnknown: + return "Unknown"; + case content::CopyFromSurfaceError::kNotImplemented: + return "Not implemented"; + case content::CopyFromSurfaceError::kFrameGone: + return "Frame Gone"; + case content::CopyFromSurfaceError::kTimeout: + return "Timeout"; + case content::CopyFromSurfaceError::kEmbeddingTokenChanged: + return "EmbeddingTokenChanged"; + case content::CopyFromSurfaceError::kVizSentEmptyBitmap: + return "VizSentEmptyBitmap"; + case content::CopyFromSurfaceError::kUnknownVizError: + return "UnknownVizError"; + } +} + base::IDMap& GetAllWebContents() { static base::NoDestructor> s_all_web_contents; return *s_all_web_contents; @@ -561,7 +583,8 @@ void OnCapturePageDone(gin_helper::Promise promise, } if (!result.has_value()) { - promise.RejectWithErrorMessage(result.error()); + promise.RejectWithErrorMessage( + CopyFromSurfaceErrorToString(result.error())); capture_handle.RunAndReset(); return; } diff --git a/shell/browser/badging/badge_manager.h b/shell/browser/badging/badge_manager.h index 1a6c85369d..7f898360a5 100644 --- a/shell/browser/badging/badge_manager.h +++ b/shell/browser/badging/badge_manager.h @@ -10,7 +10,7 @@ #include #include "components/keyed_service/core/keyed_service.h" -#include "content/public/browser/child_process_id.h" +#include "content/public/common/child_process_id.h" #include "mojo/public/cpp/bindings/receiver_set.h" #include "third_party/blink/public/mojom/badging/badging.mojom.h" #include "url/gurl.h" diff --git a/shell/browser/hid/hid_chooser_controller.cc b/shell/browser/hid/hid_chooser_controller.cc index 3ca6f805fe..11cbf9a3a8 100644 --- a/shell/browser/hid/hid_chooser_controller.cc +++ b/shell/browser/hid/hid_chooser_controller.cc @@ -8,7 +8,6 @@ #include #include "base/command_line.h" -#include "base/containers/contains.h" #include "base/functional/bind.h" #include "content/public/browser/web_contents.h" #include "gin/data_object_builder.h" @@ -153,7 +152,7 @@ void HidChooserController::OnDeviceAdded( void HidChooserController::OnDeviceRemoved( const device::mojom::HidDeviceInfo& device) { - if (!base::Contains(items_, PhysicalDeviceIdFromDeviceInfo(device))) + if (!std::ranges::contains(items_, PhysicalDeviceIdFromDeviceInfo(device))) return; gin::WeakCell* session = GetSession(); @@ -173,7 +172,7 @@ void HidChooserController::OnDeviceRemoved( void HidChooserController::OnDeviceChanged( const device::mojom::HidDeviceInfo& device) { bool has_chooser_item = - base::Contains(items_, PhysicalDeviceIdFromDeviceInfo(device)); + std::ranges::contains(items_, PhysicalDeviceIdFromDeviceInfo(device)); if (!DisplayDevice(device)) { if (has_chooser_item) OnDeviceRemoved(device); @@ -264,8 +263,8 @@ bool HidChooserController::DisplayDevice( // devices may be displayed if the origin is privileged or the blocklist is // disabled. const bool has_fido_collection = - base::Contains(device.collections, device::mojom::kPageFido, - [](const auto& c) { return c->usage->usage_page; }); + std::ranges::contains(device.collections, device::mojom::kPageFido, + [](const auto& c) { return c->usage->usage_page; }); if (has_fido_collection) { if (base::CommandLine::ForCurrentProcess()->HasSwitch( diff --git a/shell/browser/native_window.cc b/shell/browser/native_window.cc index 5e02ef25c6..1e0310a4da 100644 --- a/shell/browser/native_window.cc +++ b/shell/browser/native_window.cc @@ -8,7 +8,6 @@ #include #include -#include "base/containers/contains.h" #include "base/memory/ptr_util.h" #include "base/strings/utf_string_conversions.h" #include "base/values.h" @@ -692,7 +691,7 @@ int NativeWindow::NonClientHitTest(const gfx::Point& point) { void NativeWindow::AddDraggableRegionProvider( DraggableRegionProvider* provider) { - if (!base::Contains(draggable_region_providers_, provider)) { + if (!std::ranges::contains(draggable_region_providers_, provider)) { draggable_region_providers_.push_back(provider); } } diff --git a/shell/browser/osr/osr_render_widget_host_view.cc b/shell/browser/osr/osr_render_widget_host_view.cc index 9014850ac2..93ea84d005 100644 --- a/shell/browser/osr/osr_render_widget_host_view.cc +++ b/shell/browser/osr/osr_render_widget_host_view.cc @@ -32,7 +32,6 @@ #include "content/public/browser/context_factory.h" #include "content/public/browser/gpu_data_manager.h" #include "content/public/browser/render_process_host.h" -#include "gpu/command_buffer/client/gl_helper.h" #include "shell/browser/osr/osr_host_display_client.h" #include "third_party/blink/public/common/input/web_input_event.h" #include "third_party/skia/include/core/SkCanvas.h" diff --git a/shell/browser/osr/osr_video_consumer.cc b/shell/browser/osr/osr_video_consumer.cc index caedef4d25..bc21c7840d 100644 --- a/shell/browser/osr/osr_video_consumer.cc +++ b/shell/browser/osr/osr_video_consumer.cc @@ -77,9 +77,10 @@ OffScreenVideoConsumer::~OffScreenVideoConsumer() = default; void OffScreenVideoConsumer::SetActive(bool active) { if (active) { video_capturer_->Start( - this, view_->offscreen_use_shared_texture() - ? viz::mojom::BufferFormatPreference::kPreferGpuMemoryBuffer - : viz::mojom::BufferFormatPreference::kDefault); + this, + view_->offscreen_use_shared_texture() + ? viz::mojom::BufferFormatPreference::kPreferMappableSharedImage + : viz::mojom::BufferFormatPreference::kDefault); } else { video_capturer_->Stop(); } diff --git a/shell/browser/printing/print_view_manager_electron.cc b/shell/browser/printing/print_view_manager_electron.cc index bda9d67507..6b0ec41a4b 100644 --- a/shell/browser/printing/print_view_manager_electron.cc +++ b/shell/browser/printing/print_view_manager_electron.cc @@ -4,9 +4,9 @@ #include "shell/browser/printing/print_view_manager_electron.h" +#include #include -#include "base/containers/contains.h" #include "base/functional/bind.h" #include "components/printing/browser/print_to_pdf/pdf_print_utils.h" #include "printing/mojom/print.mojom.h" @@ -98,7 +98,7 @@ void PrintViewManagerElectron::GetDefaultPrintSettings( void PrintViewManagerElectron::ScriptedPrint( printing::mojom::ScriptedPrintParamsPtr params, ScriptedPrintCallback callback) { - if (!base::Contains(pdf_jobs_, params->cookie)) { + if (!std::ranges::contains(pdf_jobs_, params->cookie)) { PrintViewManagerBase::ScriptedPrint(std::move(params), std::move(callback)); return; } @@ -134,7 +134,7 @@ void PrintViewManagerElectron::CheckForCancel(int32_t preview_ui_id, void PrintViewManagerElectron::DidGetPrintedPagesCount(int32_t cookie, uint32_t number_pages) { - if (!base::Contains(pdf_jobs_, cookie)) { + if (!std::ranges::contains(pdf_jobs_, cookie)) { PrintViewManagerBase::DidGetPrintedPagesCount(cookie, number_pages); } } diff --git a/shell/browser/serial/serial_chooser_controller.cc b/shell/browser/serial/serial_chooser_controller.cc index e58604eb31..6043989c14 100644 --- a/shell/browser/serial/serial_chooser_controller.cc +++ b/shell/browser/serial/serial_chooser_controller.cc @@ -8,7 +8,6 @@ #include #include "base/command_line.h" -#include "base/containers/contains.h" #include "base/functional/bind.h" #include "base/strings/string_number_conversions.h" #include "base/strings/stringprintf.h" @@ -106,7 +105,8 @@ bool BluetoothPortIsAllowed( if (*port.bluetooth_service_class_id == device::GetSerialPortProfileUUID()) { return true; } - return base::Contains(allowed_ids, port.bluetooth_service_class_id.value()); + return std::ranges::contains(allowed_ids, + port.bluetooth_service_class_id.value()); } } // namespace diff --git a/shell/common/api/electron_bindings.cc b/shell/common/api/electron_bindings.cc index e2bdd4e1ef..57ca4e289a 100644 --- a/shell/common/api/electron_bindings.cc +++ b/shell/common/api/electron_bindings.cc @@ -9,7 +9,6 @@ #include #include -#include "base/containers/contains.h" #include "base/files/file.h" #include "base/process/process.h" #include "base/process/process_handle.h" @@ -92,7 +91,7 @@ void ElectronBindings::EnvironmentDestroyed(node::Environment* env) { void ElectronBindings::ActivateUVLoop(v8::Isolate* isolate) { node::Environment* env = node::Environment::GetCurrent(isolate); - if (base::Contains(pending_next_ticks_, env)) + if (std::ranges::contains(pending_next_ticks_, env)) return; pending_next_ticks_.push_back(env); diff --git a/shell/common/platform_util_linux.cc b/shell/common/platform_util_linux.cc index 400a69e4a1..267ae6ab03 100644 --- a/shell/common/platform_util_linux.cc +++ b/shell/common/platform_util_linux.cc @@ -14,7 +14,6 @@ #include #include "base/cancelable_callback.h" -#include "base/containers/contains.h" #include "base/environment.h" #include "base/files/file_util.h" #include "base/files/scoped_file.h" @@ -160,7 +159,7 @@ class ShowItemHelper { if (!reader.PopArrayOfStrings(&names)) { LOG(ERROR) << "Failed to read " << kMethodListActivatableNames << " response"; - } else if (base::Contains(names, kFreedesktopFileManagerName)) { + } else if (std::ranges::contains(names, kFreedesktopFileManagerName)) { is_activatable = true; } } diff --git a/shell/renderer/electron_renderer_client.cc b/shell/renderer/electron_renderer_client.cc index 74706ce9f5..bb0be056b4 100644 --- a/shell/renderer/electron_renderer_client.cc +++ b/shell/renderer/electron_renderer_client.cc @@ -8,7 +8,6 @@ #include "base/base_switches.h" #include "base/command_line.h" -#include "base/containers/contains.h" #include "base/debug/stack_trace.h" #include "content/public/renderer/render_frame.h" #include "net/http/http_request_headers.h" @@ -298,8 +297,8 @@ node::Environment* ElectronRendererClient::GetEnvironment( GetContext(render_frame->GetWebFrame(), v8::Isolate::GetCurrent()); node::Environment* env = node::Environment::GetCurrent(context); - return base::Contains(environments_, env, - [](auto const& item) { return item.get(); }) + return std::ranges::contains(environments_, env, + [](auto const& item) { return item.get(); }) ? env : nullptr; }