From 48d0b09ad932aabc91ef072c862f3489202e40fd Mon Sep 17 00:00:00 2001 From: "electron-roller[bot]" <84116207+electron-roller[bot]@users.noreply.github.com> Date: Thu, 16 Mar 2023 19:03:53 +0900 Subject: [PATCH] chore: bump chromium to 113.0.5653.0 (main) (#37587) * chore: bump chromium in DEPS to 113.0.5653.0 * chore: update patches * [Extensions c2s] Move HasActiveTabAndCanAccess() to //extensions https://chromium-review.googlesource.com/c/chromium/src/+/4305558 * [Privacy Hub] Respecting ChromeOS geoloc setting https://chromium-review.googlesource.com/c/chromium/src/+/4171824 * Add runtime DLLs to win_clang_x64 when needed https://chromium-review.googlesource.com/c/chromium/src/+/4336228 * chore: fix lint --------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: deepak1556 --- DEPS | 2 +- patches/chromium/.patches | 1 + ...build_disable_partition_alloc_on_mac.patch | 4 +-- ..._depend_on_packed_resource_integrity.patch | 14 ++++---- ...ld_config_in_the_required_components.patch | 2 +- patches/chromium/can_create_window.patch | 4 +-- ..._introduce_blocking_api_for_electron.patch | 10 +++--- ...tition_attribute_dcheck_for_webviews.patch | 2 +- ...le_freezing_flags_after_init_in_node.patch | 4 +-- ...ing_of_runtime_dlls_to_win_clang_x64.patch | 35 +++++++++++++++++++ ...ding_non-standard_schemes_in_iframes.patch | 2 +- .../chromium/fix_export_zlib_symbols.patch | 2 +- patches/chromium/frame_host_manager.patch | 4 +-- patches/chromium/resource_file_conflict.patch | 8 ++--- patches/chromium/webview_fullscreen.patch | 2 +- patches/v8/build_gn.patch | 4 +-- ...export_private_v8_symbols_on_windows.patch | 2 +- patches/v8/expose_mksnapshot.patch | 4 +-- shell/browser/browser_process_impl.cc | 10 ++++++ shell/browser/browser_process_impl.h | 4 +++ shell/browser/electron_browser_client.cc | 10 +++--- shell/browser/electron_browser_client.h | 2 ++ shell/browser/electron_browser_main_parts.cc | 7 ---- shell/browser/electron_browser_main_parts.h | 9 ----- .../electron_browser_main_parts_mac.mm | 7 ++-- 25 files changed, 96 insertions(+), 59 deletions(-) create mode 100644 patches/chromium/fix_copying_of_runtime_dlls_to_win_clang_x64.patch diff --git a/DEPS b/DEPS index 201dfb181f01..15858826222c 100644 --- a/DEPS +++ b/DEPS @@ -2,7 +2,7 @@ gclient_gn_args_from = 'src' vars = { 'chromium_version': - '113.0.5651.0', + '113.0.5653.0', 'node_version': 'v18.15.0', 'nan_version': diff --git a/patches/chromium/.patches b/patches/chromium/.patches index 5a1c51d0f93b..5c7fe14f4da8 100644 --- a/patches/chromium/.patches +++ b/patches/chromium/.patches @@ -126,3 +126,4 @@ expose_v8initializer_codegenerationcheckcallbackinmainthread.patch chore_patch_out_profile_methods_in_profile_selections_cc.patch chore_defer_usb_service_getdevices_request_until_usb_service_is.patch revert_roll_clang_rust_llvmorg-16-init-17653-g39da55e8-3.patch +fix_copying_of_runtime_dlls_to_win_clang_x64.patch diff --git a/patches/chromium/build_disable_partition_alloc_on_mac.patch b/patches/chromium/build_disable_partition_alloc_on_mac.patch index 4fe7402d6189..f5d27458110d 100644 --- a/patches/chromium/build_disable_partition_alloc_on_mac.patch +++ b/patches/chromium/build_disable_partition_alloc_on_mac.patch @@ -9,10 +9,10 @@ and can be removed when the crash in fork is resolved. Related issue: https://github.com/electron/electron/issues/32718 diff --git a/build_overrides/partition_alloc.gni b/build_overrides/partition_alloc.gni -index e90ccba879dc5823c15acf35869cd5bd211b717b..a95d2b46b37e007405cd472bd9f882c1d180d809 100644 +index c2f7bd2958ed447f23d9b45bf09c8ed47c88c5e7..681a8d2b829eba05e77d2904e8a27d8d983a4a75 100644 --- a/build_overrides/partition_alloc.gni +++ b/build_overrides/partition_alloc.gni -@@ -46,7 +46,7 @@ _disable_partition_alloc_everywhere = is_component_build || (is_win && is_debug) +@@ -45,7 +45,7 @@ _disable_partition_alloc_everywhere = is_component_build || (is_win && is_debug) if (is_ios) { _is_partition_alloc_everywhere_platform = ios_partition_alloc_enabled } else { 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 b6f369224c72..5fbe3077497f 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 @@ -11,7 +11,7 @@ if we ever align our .pak file generation with Chrome we can remove this patch. diff --git a/chrome/BUILD.gn b/chrome/BUILD.gn -index 9175a59085ffd7a2225e09ad03806782cc54879b..7d0b7950d812775a44509a722460b74d0b17a61c 100644 +index 219f004962f0fbbe1548d8bab19c964bcc554e9b..088b7cd6578593d0ace8683765ce77202cbf1313 100644 --- a/chrome/BUILD.gn +++ b/chrome/BUILD.gn @@ -186,11 +186,16 @@ if (!is_android && !is_mac) { @@ -33,10 +33,10 @@ index 9175a59085ffd7a2225e09ad03806782cc54879b..7d0b7950d812775a44509a722460b74d "//base", "//build:branding_buildflags", diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn -index 123c9b677eb9d00aa96193020528cd5f77b0f88c..1c09eeaeda7c375f4e17e3b4c12639dac3c8e684 100644 +index c88ed72dc5f9c7dca220dd3fa630cd722d7f5f10..51ab002d7bb1c335ae115b9477914f0fd7156c2f 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -4593,7 +4593,7 @@ static_library("browser") { +@@ -4581,7 +4581,7 @@ static_library("browser") { # On Windows, the hashes are embedded in //chrome:chrome_initial rather # than here in :chrome_dll. @@ -46,10 +46,10 @@ index 123c9b677eb9d00aa96193020528cd5f77b0f88c..1c09eeaeda7c375f4e17e3b4c12639da sources += [ "certificate_viewer_stub.cc" ] } diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn -index e3c84cbb1cbe5025457cf7ab1fffddcc1094b505..7466a0139f4bb6ad6f0f60e6cfe3cc88a07e5645 100644 +index de01d238eee9cccf8f5655d0f3f3ab7fcd90ca59..dae4137d8930d0fda68fdc69ae08320de7006e78 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn -@@ -6366,7 +6366,6 @@ test("unit_tests") { +@@ -6364,7 +6364,6 @@ test("unit_tests") { deps += [ "//chrome:other_version", @@ -57,7 +57,7 @@ index e3c84cbb1cbe5025457cf7ab1fffddcc1094b505..7466a0139f4bb6ad6f0f60e6cfe3cc88 "//chrome//services/util_win:unit_tests", "//chrome/app:chrome_dll_resources", "//chrome/app:win_unit_tests", -@@ -6392,6 +6391,10 @@ test("unit_tests") { +@@ -6390,6 +6389,10 @@ test("unit_tests") { "//ui/resources", ] @@ -76,7 +76,7 @@ index e3c84cbb1cbe5025457cf7ab1fffddcc1094b505..7466a0139f4bb6ad6f0f60e6cfe3cc88 "//chrome/browser/apps:icon_standardizer", "//chrome/browser/apps/app_service", "//chrome/browser/apps/app_service:test_support", -@@ -7380,6 +7382,10 @@ test("unit_tests") { +@@ -7381,6 +7383,10 @@ test("unit_tests") { "//ui/webui/resources/js/browser_command:mojo_bindings", ] diff --git a/patches/chromium/build_only_use_the_mas_build_config_in_the_required_components.patch b/patches/chromium/build_only_use_the_mas_build_config_in_the_required_components.patch index 99938a92148a..29297334eab3 100644 --- a/patches/chromium/build_only_use_the_mas_build_config_in_the_required_components.patch +++ b/patches/chromium/build_only_use_the_mas_build_config_in_the_required_components.patch @@ -6,7 +6,7 @@ Subject: build: only use the mas build config in the required components Before landing this patch should be split into the relevant MAS patches, or at least the patch this one partially reverts diff --git a/base/BUILD.gn b/base/BUILD.gn -index ea29e990f0b97f1d4a9a858e68b8dc11cd712afc..f064422ff964301d38dd99678630e2c74e47ebd4 100644 +index 05565026676962f651992c0e09c7575073c412c9..b0c177dfc0c4b64027af1fe08096af2eccc93e31 100644 --- a/base/BUILD.gn +++ b/base/BUILD.gn @@ -1027,6 +1027,7 @@ component("base") { diff --git a/patches/chromium/can_create_window.patch b/patches/chromium/can_create_window.patch index 2e8aa27e5d16..10ce0971d022 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 305cb9fc87c106d34e3eff78a3137229132ffc8c..5a9ac1a3757049be2dc86456ab83831a7894fda8 100644 +index 33119c93000f739be6c3539ce39e8f763f051262..bc41363dcc0809a839ab33bd49b856ca3f7e8fbe 100644 --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc -@@ -7607,6 +7607,7 @@ void RenderFrameHostImpl::CreateNewWindow( +@@ -7615,6 +7615,7 @@ void RenderFrameHostImpl::CreateNewWindow( last_committed_origin_, params->window_container_type, params->target_url, params->referrer.To(), params->frame_name, params->disposition, *params->features, diff --git a/patches/chromium/chore_introduce_blocking_api_for_electron.patch b/patches/chromium/chore_introduce_blocking_api_for_electron.patch index c95eef75b85a..352bf396ed1d 100644 --- a/patches/chromium/chore_introduce_blocking_api_for_electron.patch +++ b/patches/chromium/chore_introduce_blocking_api_for_electron.patch @@ -7,10 +7,10 @@ This patch comes after Chromium removed the ScopedAllowIO API in favor of explicitly adding ScopedAllowBlocking calls as friends. diff --git a/base/threading/thread_restrictions.h b/base/threading/thread_restrictions.h -index a79fd26d368810091b0537af90b972a61b464d1a..768c69572eb40dee103311ec6d6a0e535472d57c 100644 +index 8b6b194a86ce78a3935c74c20a8305345b58bb8e..3f0391f2a1e3467735ab33f63a30eeddedfdb0e4 100644 --- a/base/threading/thread_restrictions.h +++ b/base/threading/thread_restrictions.h -@@ -129,6 +129,7 @@ class FirefoxProfileLock; +@@ -133,6 +133,7 @@ class FirefoxProfileLock; class KeyStorageLinux; class NativeBackendKWallet; class NativeDesktopMediaList; @@ -18,7 +18,7 @@ index a79fd26d368810091b0537af90b972a61b464d1a..768c69572eb40dee103311ec6d6a0e53 class Profile; class ProfileImpl; class StartupTabProviderImpl; -@@ -265,6 +266,9 @@ class BackendImpl; +@@ -269,6 +270,9 @@ class BackendImpl; class InFlightIO; bool CleanupDirectorySync(const base::FilePath&); } // namespace disk_cache @@ -28,7 +28,7 @@ index a79fd26d368810091b0537af90b972a61b464d1a..768c69572eb40dee103311ec6d6a0e53 namespace enterprise_connectors { class LinuxKeyRotationCommand; } // namespace enterprise_connectors -@@ -551,6 +555,7 @@ class BASE_EXPORT [[nodiscard]] ScopedAllowBlocking { +@@ -573,6 +577,7 @@ class BASE_EXPORT [[maybe_unused, nodiscard]] ScopedAllowBlocking { friend class ::DesktopNotificationBalloon; friend class ::FirefoxProfileLock; friend class ::GaiaConfig; @@ -36,7 +36,7 @@ index a79fd26d368810091b0537af90b972a61b464d1a..768c69572eb40dee103311ec6d6a0e53 friend class ::ProfileImpl; friend class ::ScopedAllowBlockingForProfile; friend class ::StartupTabProviderImpl; -@@ -588,6 +593,7 @@ class BASE_EXPORT [[nodiscard]] ScopedAllowBlocking { +@@ -610,6 +615,7 @@ class BASE_EXPORT [[maybe_unused, nodiscard]] ScopedAllowBlocking { friend class crosapi::LacrosThreadTypeDelegate; friend class crypto::ScopedAllowBlockingForNSS; // http://crbug.com/59847 friend class drive::FakeDriveService; diff --git a/patches/chromium/chore_patch_out_partition_attribute_dcheck_for_webviews.patch b/patches/chromium/chore_patch_out_partition_attribute_dcheck_for_webviews.patch index a772a593711a..9034ec4418f6 100644 --- a/patches/chromium/chore_patch_out_partition_attribute_dcheck_for_webviews.patch +++ b/patches/chromium/chore_patch_out_partition_attribute_dcheck_for_webviews.patch @@ -14,7 +14,7 @@ This change patches it out to prevent the DCHECK. It can be removed once/if we see a better solution to the problem. diff --git a/content/browser/site_instance_impl.cc b/content/browser/site_instance_impl.cc -index 4aa0eba7afffce096148e69006f58d4fcf65144d..e613a4919c08494852e59e7e524f01782f7bee26 100644 +index eb4b4859c2d15f243e73eab9cad50cb74078229c..e75b612f65eef5c32ad9567e088484b57bb4b2a6 100644 --- a/content/browser/site_instance_impl.cc +++ b/content/browser/site_instance_impl.cc @@ -215,7 +215,7 @@ scoped_refptr SiteInstanceImpl::CreateForGuest( diff --git a/patches/chromium/disable_freezing_flags_after_init_in_node.patch b/patches/chromium/disable_freezing_flags_after_init_in_node.patch index 2687f2a71f3b..24cef37e8ed7 100644 --- a/patches/chromium/disable_freezing_flags_after_init_in_node.patch +++ b/patches/chromium/disable_freezing_flags_after_init_in_node.patch @@ -15,10 +15,10 @@ at some point be an API to "unfreeze" the flags, or we may be able to refactor node initialization to not update flags after V8 initialization. diff --git a/content/renderer/render_process_impl.cc b/content/renderer/render_process_impl.cc -index 6f5ed2f88ae7f725ae1862a3078540d54b9abd43..75093bc0c6b70002acd954b11952eac8a981e714 100644 +index 94016c74d962d7e5459ff5457f276e6742146280..0ca99a62d1289f9eff38291bd7af23cefd9cf77d 100644 --- a/content/renderer/render_process_impl.cc +++ b/content/renderer/render_process_impl.cc -@@ -227,6 +227,9 @@ RenderProcessImpl::RenderProcessImpl() +@@ -231,6 +231,9 @@ RenderProcessImpl::RenderProcessImpl() v8::V8::SetFlagsFromString(kSABPerContextFlag, sizeof(kSABPerContextFlag)); } diff --git a/patches/chromium/fix_copying_of_runtime_dlls_to_win_clang_x64.patch b/patches/chromium/fix_copying_of_runtime_dlls_to_win_clang_x64.patch new file mode 100644 index 000000000000..3ed9fdc2cf71 --- /dev/null +++ b/patches/chromium/fix_copying_of_runtime_dlls_to_win_clang_x64.patch @@ -0,0 +1,35 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Bruce Dawson +Date: Wed, 15 Mar 2023 20:44:27 +0000 +Subject: Fix copying of runtime DLLs to win_clang_x64 + +Change crrev.com/c/4336228 copied the x64 runtime DLLs to win_clang_x64 +during arm64 builds, but for some of those DLLs (including +msvcp140d.dll) it copied the ARM64 version instead of the x64 version. +This prevents debug builds from building, but wasn't noticed until a +clean build was done. + +This change fixes the runtime_dir so that the correct files are copied, +and this change was tested with a full build of a debug component +arm64 Windows build. + +Bug: 1424422 +Change-Id: I43106597059dc243af383dbdb0c3b23703034765 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4336046 +Reviewed-by: Dirk Pranke +Auto-Submit: Bruce Dawson +Commit-Queue: Dirk Pranke +Cr-Commit-Position: refs/heads/main@{#1117727} + +diff --git a/build/vs_toolchain.py b/build/vs_toolchain.py +index eceea83f021573e6ba677904da3bb269a2279740..a9cd6f03d9214ad5077b10d4d76b878255266bdc 100755 +--- a/build/vs_toolchain.py ++++ b/build/vs_toolchain.py +@@ -401,6 +401,7 @@ def CopyDlls(target_dir, configuration, target_cpu): + if target_cpu == 'arm64': + target_dir = os.path.join(target_dir, 'win_clang_x64') + target_cpu = 'x64' ++ runtime_dir = x64_runtime + os.makedirs(target_dir, exist_ok=True) + _CopyRuntime(target_dir, runtime_dir, target_cpu, debug=False) + if configuration == 'Debug': 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 61d00de3fc26..c70ba6224d3e 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 @@ -17,7 +17,7 @@ policy->CanCommitOriginAndUrl. Upstreamed at https://chromium-review.googlesource.com/c/chromium/src/+/3856266. diff --git a/content/browser/renderer_host/navigation_request.cc b/content/browser/renderer_host/navigation_request.cc -index c9d08d6ae25d1bb1c6a9512961d1671a150f267f..2d725df67c159ae1f8ff6ed7c384c457a552e0d3 100644 +index ee847c685b75d48f942a78759ac3f8dd068ca104..0e1e0180739aef844581f3cfabe4c57db98cd4e4 100644 --- a/content/browser/renderer_host/navigation_request.cc +++ b/content/browser/renderer_host/navigation_request.cc @@ -7134,10 +7134,11 @@ NavigationRequest::GetOriginForURLLoaderFactoryAfterResponseWithDebugInfo() { diff --git a/patches/chromium/fix_export_zlib_symbols.patch b/patches/chromium/fix_export_zlib_symbols.patch index 9d2bdf66380b..9771b1a88a21 100644 --- a/patches/chromium/fix_export_zlib_symbols.patch +++ b/patches/chromium/fix_export_zlib_symbols.patch @@ -6,7 +6,7 @@ Subject: fix: export zlib symbols This patch sets ZLIB_DLL so that we properly export zlib symbols. diff --git a/third_party/zlib/BUILD.gn b/third_party/zlib/BUILD.gn -index d20c468260c86bd031f06ddc7b419f186adc2fca..2c1479ba23fca6d3a6d5f39f02c94b37b6b1477e 100644 +index 5c215860aec16c1fdd15094b3af81b0eab94ea80..29883a2487b2e1bdc4742175dfec364a02ba233c 100644 --- a/third_party/zlib/BUILD.gn +++ b/third_party/zlib/BUILD.gn @@ -326,6 +326,10 @@ component("zlib") { diff --git a/patches/chromium/frame_host_manager.patch b/patches/chromium/frame_host_manager.patch index 0d54831f83c6..0a4652498d4c 100644 --- a/patches/chromium/frame_host_manager.patch +++ b/patches/chromium/frame_host_manager.patch @@ -6,10 +6,10 @@ Subject: frame_host_manager.patch Allows embedder to intercept site instances created by chromium. diff --git a/content/browser/renderer_host/render_frame_host_manager.cc b/content/browser/renderer_host/render_frame_host_manager.cc -index 727d0d410cf945ba665c7445f1928750268460b0..eecf0f8c7047904702980ccc5f20854662ba1ef2 100644 +index 9ffeee895d26666a3bf47f374f7b77818316d446..48f1431287e151106cca4c2a20b1d22105a28837 100644 --- a/content/browser/renderer_host/render_frame_host_manager.cc +++ b/content/browser/renderer_host/render_frame_host_manager.cc -@@ -3725,6 +3725,9 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest( +@@ -3734,6 +3734,9 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest( request->ResetStateForSiteInstanceChange(); } diff --git a/patches/chromium/resource_file_conflict.patch b/patches/chromium/resource_file_conflict.patch index 352990a876d6..20d9b7f58bd0 100644 --- a/patches/chromium/resource_file_conflict.patch +++ b/patches/chromium/resource_file_conflict.patch @@ -52,7 +52,7 @@ Some alternatives to this patch: None of these options seems like a substantial maintainability win over this patch to me (@nornagon). diff --git a/chrome/BUILD.gn b/chrome/BUILD.gn -index 931710cb0d5c9db6a85ffc580c3ef52d339c3413..9175a59085ffd7a2225e09ad03806782cc54879b 100644 +index 949a855674a83db20c43982fb53f31df3bcfcd52..219f004962f0fbbe1548d8bab19c964bcc554e9b 100644 --- a/chrome/BUILD.gn +++ b/chrome/BUILD.gn @@ -1553,7 +1553,7 @@ if (is_chrome_branded && !is_android) { @@ -74,6 +74,6 @@ index 931710cb0d5c9db6a85ffc580c3ef52d339c3413..9175a59085ffd7a2225e09ad03806782 + } +} + - repack("browser_tests_pak") { - testonly = true - sources = [ "$root_gen_dir/chrome/webui_test_resources.pak" ] + if (!is_android) { + repack("browser_tests_pak") { + testonly = true diff --git a/patches/chromium/webview_fullscreen.patch b/patches/chromium/webview_fullscreen.patch index 7ac31f4c41fe..b9d8a8ec6f82 100644 --- a/patches/chromium/webview_fullscreen.patch +++ b/patches/chromium/webview_fullscreen.patch @@ -14,7 +14,7 @@ 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 5a9ac1a3757049be2dc86456ab83831a7894fda8..77d9a692286b742acfd9e3b57a3ed263de0e00b9 100644 +index bc41363dcc0809a839ab33bd49b856ca3f7e8fbe..60e3cfee399582b722b7702f9ba519641cd2dfcc 100644 --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc @@ -6854,6 +6854,17 @@ void RenderFrameHostImpl::EnterFullscreen( diff --git a/patches/v8/build_gn.patch b/patches/v8/build_gn.patch index e460bf31fc55..17c845b259d5 100644 --- a/patches/v8/build_gn.patch +++ b/patches/v8/build_gn.patch @@ -9,7 +9,7 @@ necessary for native modules to load. Also, some fixes relating to mksnapshot on ARM. diff --git a/BUILD.gn b/BUILD.gn -index c07a00d0bb1ca09aa20afdb46d5cfdfb04926fb6..fa95b49a5c0698f56f947db5bc28ba537a661261 100644 +index 9be8aa4162819f3ef71c4ee6d761a889e727e51c..f75829682551c174fdd9f7147cabf2b046f2d74f 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -685,7 +685,7 @@ config("internal_config") { @@ -21,7 +21,7 @@ index c07a00d0bb1ca09aa20afdb46d5cfdfb04926fb6..fa95b49a5c0698f56f947db5bc28ba53 defines += [ "BUILDING_V8_SHARED" ] } -@@ -6335,7 +6335,7 @@ if (current_toolchain == v8_generator_toolchain) { +@@ -6359,7 +6359,7 @@ if (current_toolchain == v8_generator_toolchain) { "src/interpreter/bytecodes.h", ] diff --git a/patches/v8/do_not_export_private_v8_symbols_on_windows.patch b/patches/v8/do_not_export_private_v8_symbols_on_windows.patch index 77a397003a79..866764a3a46b 100644 --- a/patches/v8/do_not_export_private_v8_symbols_on_windows.patch +++ b/patches/v8/do_not_export_private_v8_symbols_on_windows.patch @@ -12,7 +12,7 @@ This patch can be safely removed if, when it is removed, `node.lib` does not contain any standard C++ library exports (e.g. `std::ostringstream`). diff --git a/BUILD.gn b/BUILD.gn -index 7502b01dfe856d1ba7f2672e7a57a26ac5ee3d69..890185dfd1f104cef3a51df56e64ef5729b63a5d 100644 +index 31a32019635652010c84b5204e06107c4c014b94..79b459e4058ce1068bc2e580c9df993563c6a627 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -685,6 +685,10 @@ config("internal_config") { diff --git a/patches/v8/expose_mksnapshot.patch b/patches/v8/expose_mksnapshot.patch index cb54d73d15ca..f0fc50d0dd7f 100644 --- a/patches/v8/expose_mksnapshot.patch +++ b/patches/v8/expose_mksnapshot.patch @@ -6,10 +6,10 @@ Subject: expose_mksnapshot.patch Needed in order to target mksnapshot for mksnapshot zip. diff --git a/BUILD.gn b/BUILD.gn -index fa95b49a5c0698f56f947db5bc28ba537a661261..7502b01dfe856d1ba7f2672e7a57a26ac5ee3d69 100644 +index f75829682551c174fdd9f7147cabf2b046f2d74f..31a32019635652010c84b5204e06107c4c014b94 100644 --- a/BUILD.gn +++ b/BUILD.gn -@@ -6347,7 +6347,6 @@ if (current_toolchain == v8_generator_toolchain) { +@@ -6371,7 +6371,6 @@ if (current_toolchain == v8_generator_toolchain) { if (current_toolchain == v8_snapshot_toolchain) { v8_executable("mksnapshot") { diff --git a/shell/browser/browser_process_impl.cc b/shell/browser/browser_process_impl.cc index a086da6356d9..0aafc6455fce 100644 --- a/shell/browser/browser_process_impl.cc +++ b/shell/browser/browser_process_impl.cc @@ -31,6 +31,7 @@ #include "net/proxy_resolution/proxy_config.h" #include "net/proxy_resolution/proxy_config_service.h" #include "net/proxy_resolution/proxy_config_with_annotation.h" +#include "services/device/public/cpp/geolocation/geolocation_manager.h" #include "services/network/public/cpp/network_switches.h" #include "shell/common/electron_paths.h" #include "shell/common/thread_restrictions.h" @@ -318,3 +319,12 @@ printing::PrintJobManager* BrowserProcessImpl::print_job_manager() { StartupData* BrowserProcessImpl::startup_data() { return nullptr; } + +device::GeolocationManager* BrowserProcessImpl::geolocation_manager() { + return geolocation_manager_.get(); +} + +void BrowserProcessImpl::SetGeolocationManager( + std::unique_ptr geolocation_manager) { + geolocation_manager_ = std::move(geolocation_manager); +} diff --git a/shell/browser/browser_process_impl.h b/shell/browser/browser_process_impl.h index 588cda23c667..b0c1d5539b1a 100644 --- a/shell/browser/browser_process_impl.h +++ b/shell/browser/browser_process_impl.h @@ -105,12 +105,16 @@ class BrowserProcessImpl : public BrowserProcess { const std::string& GetApplicationLocale() override; printing::PrintJobManager* print_job_manager() override; StartupData* startup_data() override; + device::GeolocationManager* geolocation_manager() override; + void SetGeolocationManager( + std::unique_ptr geolocation_manager) override; private: #if BUILDFLAG(ENABLE_PRINTING) std::unique_ptr print_job_manager_; #endif std::unique_ptr local_state_; + std::unique_ptr geolocation_manager_; std::string locale_; std::string system_locale_; }; diff --git a/shell/browser/electron_browser_client.cc b/shell/browser/electron_browser_client.cc index a11289255f83..7126ad27d089 100644 --- a/shell/browser/electron_browser_client.cc +++ b/shell/browser/electron_browser_client.cc @@ -249,7 +249,7 @@ enum class RenderProcessHostPrivilege { bool AllowFileAccess(const std::string& extension_id, content::BrowserContext* context) { return base::CommandLine::ForCurrentProcess()->HasSwitch( - ::switches::kDisableExtensionsFileAccessCheck) || + extensions::switches::kDisableExtensionsFileAccessCheck) || extensions::ExtensionPrefs::Get(context)->AllowFileAccess( extension_id); } @@ -1715,13 +1715,11 @@ void ElectronBrowserClient::RegisterBrowserInterfaceBindersForServiceWorker( base::BindRepeating(&BindBadgeServiceForServiceWorker)); } -device::GeolocationManager* ElectronBrowserClient::GetGeolocationManager() { #if BUILDFLAG(IS_MAC) - return browser_main_parts_->GetGeolocationManager(); -#else - return nullptr; -#endif +device::GeolocationManager* ElectronBrowserClient::GetGeolocationManager() { + return g_browser_process->geolocation_manager(); } +#endif content::HidDelegate* ElectronBrowserClient::GetHidDelegate() { if (!hid_delegate_) diff --git a/shell/browser/electron_browser_client.h b/shell/browser/electron_browser_client.h index ebdf2719a8e4..bfdba08c4bc7 100644 --- a/shell/browser/electron_browser_client.h +++ b/shell/browser/electron_browser_client.h @@ -107,7 +107,9 @@ class ElectronBrowserClient : public content::ContentBrowserClient, content::WebAuthenticationDelegate* GetWebAuthenticationDelegate() override; +#if BUILDFLAG(IS_MAC) device::GeolocationManager* GetGeolocationManager() override; +#endif content::PlatformNotificationService* GetPlatformNotificationService(); diff --git a/shell/browser/electron_browser_main_parts.cc b/shell/browser/electron_browser_main_parts.cc index 9d7ffe7fc949..c794cbe9d661 100644 --- a/shell/browser/electron_browser_main_parts.cc +++ b/shell/browser/electron_browser_main_parts.cc @@ -99,7 +99,6 @@ #if BUILDFLAG(IS_MAC) #include "components/os_crypt/keychain_password_mac.h" -#include "services/device/public/cpp/geolocation/geolocation_manager.h" #include "shell/browser/ui/cocoa/views_delegate_mac.h" #else #include "shell/browser/ui/views/electron_views_delegate.h" @@ -674,12 +673,6 @@ ElectronBrowserMainParts::GetGeolocationControl() { return geolocation_control_.get(); } -#if BUILDFLAG(IS_MAC) -device::GeolocationManager* ElectronBrowserMainParts::GetGeolocationManager() { - return geolocation_manager_.get(); -} -#endif - IconManager* ElectronBrowserMainParts::GetIconManager() { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); if (!icon_manager_.get()) diff --git a/shell/browser/electron_browser_main_parts.h b/shell/browser/electron_browser_main_parts.h index d9227160ada5..917da8626004 100644 --- a/shell/browser/electron_browser_main_parts.h +++ b/shell/browser/electron_browser_main_parts.h @@ -37,10 +37,6 @@ class Screen; } #endif -namespace device { -class GeolocationManager; -} - namespace ui { class LinuxUiGetter; } @@ -91,10 +87,6 @@ class ElectronBrowserMainParts : public content::BrowserMainParts { // used to enable the location services once per client. device::mojom::GeolocationControl* GetGeolocationControl(); -#if BUILDFLAG(IS_MAC) - device::GeolocationManager* GetGeolocationManager(); -#endif - // Returns handle to the class responsible for extracting file icons. IconManager* GetIconManager(); @@ -181,7 +173,6 @@ class ElectronBrowserMainParts : public content::BrowserMainParts { mojo::Remote geolocation_control_; #if BUILDFLAG(IS_MAC) - std::unique_ptr geolocation_manager_; std::unique_ptr screen_; #endif diff --git a/shell/browser/electron_browser_main_parts_mac.mm b/shell/browser/electron_browser_main_parts_mac.mm index 0b808e4cec54..d33c5bdf400d 100644 --- a/shell/browser/electron_browser_main_parts_mac.mm +++ b/shell/browser/electron_browser_main_parts_mac.mm @@ -10,6 +10,7 @@ #include "base/mac/foundation_util.h" #include "base/path_service.h" #include "services/device/public/cpp/geolocation/system_geolocation_source_mac.h" +#include "shell/browser/browser_process_impl.h" #import "shell/browser/mac/electron_application.h" #include "shell/browser/mac/electron_application_delegate.h" #include "shell/common/electron_paths.h" @@ -31,8 +32,10 @@ void ElectronBrowserMainParts::PreCreateMainMessageLoop() { setObject:@"NO" forKey:@"NSTreatUnknownArgumentsAsOpen"]; - geolocation_manager_ = - device::SystemGeolocationSourceMac::CreateGeolocationManagerOnMac(); + if (!g_browser_process->geolocation_manager()) { + g_browser_process->SetGeolocationManager( + device::SystemGeolocationSourceMac::CreateGeolocationManagerOnMac()); + } } void ElectronBrowserMainParts::FreeAppDelegate() {