diff --git a/.github/workflows/pipeline-segment-electron-build.yml b/.github/workflows/pipeline-segment-electron-build.yml index 8d47e550be02e4..96ddf6104521c4 100644 --- a/.github/workflows/pipeline-segment-electron-build.yml +++ b/.github/workflows/pipeline-segment-electron-build.yml @@ -187,8 +187,8 @@ jobs: HELPER=$(node -p "require('./src/utils/reclient.js').helperPath({})") $HELPER login echo 'RBE_service='`node -e "console.log(require('./src/utils/reclient.js').serviceAddress)"` >> $GITHUB_ENV - echo 'RBE_experimental_credentials_helper='`node -e "console.log(require('./src/utils/reclient.js').helperPath({}))"` >> $GITHUB_ENV - echo 'RBE_experimental_credentials_helper_args=print' >> $GITHUB_ENV + echo 'RBE_credentials_helper='`node -e "console.log(require('./src/utils/reclient.js').helperPath({}))"` >> $GITHUB_ENV + echo 'RBE_credentials_helper_args=print' >> $GITHUB_ENV - name: Free up space (macOS) if: ${{ inputs.target-platform == 'macos' }} uses: ./src/electron/.github/actions/free-space-macos diff --git a/DEPS b/DEPS index ca3a02c0d529a7..331c4fd2f259f4 100644 --- a/DEPS +++ b/DEPS @@ -2,7 +2,7 @@ gclient_gn_args_from = 'src' vars = { 'chromium_version': - '131.0.6762.0', + '131.0.6776.0', 'node_version': 'v20.18.0', 'nan_version': diff --git a/appveyor-woa.yml b/appveyor-woa.yml index 567a0c171e8b07..bc91f308152744 100644 --- a/appveyor-woa.yml +++ b/appveyor-woa.yml @@ -121,9 +121,9 @@ for: - ps: >- $env:RBE_service = node -e "console.log(require('./src/utils/reclient.js').serviceAddress)" - ps: >- - $env:RBE_experimental_credentials_helper = $env:RECLIENT_HELPER + $env:RBE_credentials_helper = $env:RECLIENT_HELPER - ps: >- - $env:RBE_experimental_credentials_helper_args = "print" + $env:RBE_credentials_helper_args = "print" - ps: >- if ($env:ELECTRON_RBE_JWT -eq '') { $env:RBE_fail_early_min_action_count = "0" diff --git a/appveyor.yml b/appveyor.yml index d658570873635a..dea198f2589020 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -116,9 +116,9 @@ for: - ps: >- $env:RBE_service = node -e "console.log(require('./src/utils/reclient.js').serviceAddress)" - ps: >- - $env:RBE_experimental_credentials_helper = $env:RECLIENT_HELPER + $env:RBE_credentials_helper = $env:RECLIENT_HELPER - ps: >- - $env:RBE_experimental_credentials_helper_args = "print" + $env:RBE_credentials_helper_args = "print" - ps: >- if ($env:ELECTRON_RBE_JWT -eq '') { $env:RBE_fail_early_min_action_count = "0" diff --git a/chromium_src/BUILD.gn b/chromium_src/BUILD.gn index ed9d29cc87f2d3..6bd1168269fdaf 100644 --- a/chromium_src/BUILD.gn +++ b/chromium_src/BUILD.gn @@ -30,6 +30,8 @@ static_library("chrome") { "//chrome/browser/devtools/devtools_file_system_indexer.cc", "//chrome/browser/devtools/devtools_file_system_indexer.h", "//chrome/browser/devtools/devtools_settings.h", + "//chrome/browser/devtools/features.cc", + "//chrome/browser/devtools/features.h", "//chrome/browser/devtools/visual_logging.cc", "//chrome/browser/devtools/visual_logging.h", "//chrome/browser/extensions/global_shortcut_listener.cc", @@ -195,6 +197,7 @@ static_library("chrome") { "//chrome/app/vector_icons", "//chrome/browser:resource_prefetch_predictor_proto", "//chrome/browser/resource_coordinator:mojo_bindings", + "//chrome/browser/task_manager/common:impl", "//chrome/browser/ui/webui/tab_search:mojo_bindings", "//chrome/browser/web_applications/mojom:mojom_web_apps_enum", "//components/enterprise/buildflags", diff --git a/default_app/main.ts b/default_app/main.ts index 4c3f35719c1178..38fb3b665d0ece 100644 --- a/default_app/main.ts +++ b/default_app/main.ts @@ -93,9 +93,7 @@ async function loadApplicationPackage (packagePath: string) { try { process.emitWarning = () => {}; packageJson = (await import(url.pathToFileURL(packageJsonPath).toString(), { - assert: { - type: 'json' - } + with: { type: 'json' } })).default; } catch (e) { showErrorMessage(`Unable to parse ${packageJsonPath}\n\n${(e as Error).message}`); diff --git a/filenames.libcxx.gni b/filenames.libcxx.gni index 80a9e7f0d2dbc8..d680308876597a 100644 --- a/filenames.libcxx.gni +++ b/filenames.libcxx.gni @@ -749,6 +749,7 @@ libcxx_headers = [ "//third_party/libc++/src/include/__type_traits/common_type.h", "//third_party/libc++/src/include/__type_traits/conditional.h", "//third_party/libc++/src/include/__type_traits/conjunction.h", + "//third_party/libc++/src/include/__type_traits/container_traits.h", "//third_party/libc++/src/include/__type_traits/copy_cv.h", "//third_party/libc++/src/include/__type_traits/copy_cvref.h", "//third_party/libc++/src/include/__type_traits/datasizeof.h", @@ -789,6 +790,7 @@ libcxx_headers = [ "//third_party/libc++/src/include/__type_traits/is_floating_point.h", "//third_party/libc++/src/include/__type_traits/is_function.h", "//third_party/libc++/src/include/__type_traits/is_fundamental.h", + "//third_party/libc++/src/include/__type_traits/is_implicit_lifetime.h", "//third_party/libc++/src/include/__type_traits/is_implicitly_default_constructible.h", "//third_party/libc++/src/include/__type_traits/is_integral.h", "//third_party/libc++/src/include/__type_traits/is_literal_type.h", diff --git a/patches/boringssl/revert_track_ssl_error_zero_return_explicitly.patch b/patches/boringssl/revert_track_ssl_error_zero_return_explicitly.patch index 2fee8097f6a92b..123be0e4de6bf0 100644 --- a/patches/boringssl/revert_track_ssl_error_zero_return_explicitly.patch +++ b/patches/boringssl/revert_track_ssl_error_zero_return_explicitly.patch @@ -20,10 +20,10 @@ index 7de8923518dbfb69fef62d7781f906b30cf62155..7a4310d6d8e85f07f0ae6c97726d909c case ssl_open_record_error: diff --git a/ssl/ssl_lib.cc b/ssl/ssl_lib.cc -index 1458b456e5251b058e28c7f935f929af7addbee4..994e1c330255ffcc5212dd69fb77d3044068717c 100644 +index c84c50710475f5e0ac8633bb97abafdca7fb324f..724d854540ced9b57a7fc804f61fff89f6f9fadf 100644 --- a/ssl/ssl_lib.cc +++ b/ssl/ssl_lib.cc -@@ -1343,7 +1343,7 @@ int SSL_get_error(const SSL *ssl, int ret_code) { +@@ -1335,7 +1335,7 @@ int SSL_get_error(const SSL *ssl, int ret_code) { } if (ret_code == 0) { @@ -32,7 +32,7 @@ index 1458b456e5251b058e28c7f935f929af7addbee4..994e1c330255ffcc5212dd69fb77d304 return SSL_ERROR_ZERO_RETURN; } // An EOF was observed which violates the protocol, and the underlying -@@ -2725,13 +2725,7 @@ void *SSL_CTX_get_ex_data(const SSL_CTX *ctx, int idx) { +@@ -2707,13 +2707,7 @@ void *SSL_CTX_get_ex_data(const SSL_CTX *ctx, int idx) { return CRYPTO_get_ex_data(&ctx->ex_data, idx); } diff --git a/patches/chromium/add_didinstallconditionalfeatures.patch b/patches/chromium/add_didinstallconditionalfeatures.patch index 0a77f92cf4404e..db666ed6f9f6c0 100644 --- a/patches/chromium/add_didinstallconditionalfeatures.patch +++ b/patches/chromium/add_didinstallconditionalfeatures.patch @@ -123,10 +123,10 @@ index b9aff56f283b10e899c2291f90615cbd3795454c..59f040cead445b02442404c787c1015c int32_t world_id) override; diff --git a/third_party/blink/renderer/core/loader/empty_clients.h b/third_party/blink/renderer/core/loader/empty_clients.h -index 821447d9510b7bffce71bb9cb797c95e526fe890..b1f4f8abdd2b4d1a669274f55588d6d936f0c691 100644 +index 3756c89c0ae70a802506aeac66ea26093831d88f..0d65071421e21edd77de0d2463061e6a05049121 100644 --- a/third_party/blink/renderer/core/loader/empty_clients.h +++ b/third_party/blink/renderer/core/loader/empty_clients.h -@@ -416,6 +416,8 @@ class CORE_EXPORT EmptyLocalFrameClient : public LocalFrameClient { +@@ -415,6 +415,8 @@ class CORE_EXPORT EmptyLocalFrameClient : public LocalFrameClient { void DidCreateScriptContext(v8::Local, int32_t world_id) override {} diff --git a/patches/chromium/build_add_electron_tracing_category.patch b/patches/chromium/build_add_electron_tracing_category.patch index f251b6c257c732..bf3113345efe22 100644 --- a/patches/chromium/build_add_electron_tracing_category.patch +++ b/patches/chromium/build_add_electron_tracing_category.patch @@ -8,7 +8,7 @@ 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 6d5a8547adb3eafa8c6ead798e21f18c217da256..f3508a818e2b8ecc0bd910d4be54b311e33b1837 100644 +index 5ba3046b83e881574470dc551745b855c785e05c..8d417c70a6e1b959353563d25ec6ff532ae34573 100644 --- a/base/trace_event/builtin_categories.h +++ b/base/trace_event/builtin_categories.h @@ -88,6 +88,7 @@ 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 123a3b60fefcc7..6d2f0b99703585 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 b1c18a03ccd05609cd65de028b9861c6c9a71568..f507a8cd4b35f577c5b06712145beaa067a1bb79 100644 +index f40c70d840845fdb6171ab6ba4cdcf92dbfd9965..7d762b40f44d8dc3cd1cb63c56a188f9bdced1fe 100644 --- a/chrome/BUILD.gn +++ b/chrome/BUILD.gn @@ -200,11 +200,16 @@ if (!is_android && !is_mac) { @@ -33,10 +33,10 @@ index b1c18a03ccd05609cd65de028b9861c6c9a71568..f507a8cd4b35f577c5b06712145beaa0 "//base", "//build:branding_buildflags", diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn -index 696bb78b317178168d78b9619651cafd1bddd5ac..21262f51f5ebe12b396a453b30f067de00b0f376 100644 +index 46219ca4fbc09900414526a1e3b8980be79cd29c..bc4a61474cfd88f95485dcd80185b3be3db2b855 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -4534,7 +4534,7 @@ static_library("browser") { +@@ -4532,7 +4532,7 @@ static_library("browser") { ] } @@ -46,10 +46,10 @@ index 696bb78b317178168d78b9619651cafd1bddd5ac..21262f51f5ebe12b396a453b30f067de # than here in :chrome_dll. deps += [ "//chrome:packed_resources_integrity_header" ] diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn -index 68129387f96ac7c54b1c762dbb2cc001e929b3f5..da12c25bfd3377862c27c74a343ba2a0d4ff1411 100644 +index 04996332eac1c4a30db285ff875ebbec982b9055..353a5c6e4d9a7bdee57a3f2f6d0c563a34a66fa1 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn -@@ -6714,9 +6714,12 @@ test("unit_tests") { +@@ -6723,9 +6723,12 @@ test("unit_tests") { "//chrome/notification_helper", ] @@ -63,7 +63,7 @@ index 68129387f96ac7c54b1c762dbb2cc001e929b3f5..da12c25bfd3377862c27c74a343ba2a0 "//chrome//services/util_win:unit_tests", "//chrome/app:chrome_dll_resources", "//chrome/app:win_unit_tests", -@@ -7671,6 +7674,10 @@ test("unit_tests") { +@@ -7682,6 +7685,10 @@ test("unit_tests") { "../browser/performance_manager/policies/background_tab_loading_policy_unittest.cc", ] @@ -74,7 +74,7 @@ index 68129387f96ac7c54b1c762dbb2cc001e929b3f5..da12c25bfd3377862c27c74a343ba2a0 sources += [ # The importer code is not used on Android. "../common/importer/firefox_importer_utils_unittest.cc", -@@ -7723,7 +7730,6 @@ test("unit_tests") { +@@ -7734,7 +7741,6 @@ test("unit_tests") { # Non-android deps for "unit_tests" target. deps += [ "../browser/screen_ai:screen_ai_install_state", diff --git a/patches/chromium/build_make_libcxx_abi_unstable_false_for_electron.patch b/patches/chromium/build_make_libcxx_abi_unstable_false_for_electron.patch index 0a9500966e35bb..4d01f42c21cea3 100644 --- a/patches/chromium/build_make_libcxx_abi_unstable_false_for_electron.patch +++ b/patches/chromium/build_make_libcxx_abi_unstable_false_for_electron.patch @@ -6,7 +6,7 @@ Subject: build: make libcxx_abi_unstable false for electron https://nornagon.medium.com/a-libc-odyssey-973e51649063 diff --git a/buildtools/third_party/libc++/__config_site b/buildtools/third_party/libc++/__config_site -index 39cc404dda7ba408438deeaa5b65a01cdd696dcb..355a774a08fb6eb6fa435c4704e8ff9cb5a9f5bd 100644 +index 260a4a9772a625ff02d66faffdd6937215402261..6e485725c967ca27d8ffe6b52c47dddd0d82bd7e 100644 --- a/buildtools/third_party/libc++/__config_site +++ b/buildtools/third_party/libc++/__config_site @@ -18,7 +18,9 @@ diff --git a/patches/chromium/can_create_window.patch b/patches/chromium/can_create_window.patch index 413b037b2c7d39..7cfab2cb69bcde 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 ea7a56f9ebab820bc50167d1f6848078d59f4737..e0708cae6968c14f912bac9c8c7ff90344454237 100644 +index 98c865765c57d3387c9193df0fab73bae678983a..f737902ba9a5ff5b98940eca4a8e7c057c64b3bd 100644 --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc -@@ -9104,6 +9104,7 @@ void RenderFrameHostImpl::CreateNewWindow( +@@ -9115,6 +9115,7 @@ void RenderFrameHostImpl::CreateNewWindow( last_committed_origin_, params->window_container_type, params->target_url, params->referrer.To(), params->frame_name, params->disposition, *params->features, @@ -21,10 +21,10 @@ index ea7a56f9ebab820bc50167d1f6848078d59f4737..e0708cae6968c14f912bac9c8c7ff903 &no_javascript_access); diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc -index 62854bb03a4e72b716a823ee7fafbb011a86ebb0..06ca908e1668050bb87609406fa4dc9eff9b6adf 100644 +index f25b2cc6c138a4e201b6ec9f74f9cb5734195f24..c67be0c23f8b8d6f49ee82e1617c0f3cfee5c9ab 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc -@@ -4772,6 +4772,12 @@ FrameTree* WebContentsImpl::CreateNewWindow( +@@ -4781,6 +4781,12 @@ FrameTree* WebContentsImpl::CreateNewWindow( SetPartitionedPopinOpenerOnNewWindowIfNeeded(new_contents_impl, params, opener); @@ -37,7 +37,7 @@ index 62854bb03a4e72b716a823ee7fafbb011a86ebb0..06ca908e1668050bb87609406fa4dc9e // If the new frame has a name, make sure any SiteInstances that can find // this named frame have proxies for it. Must be called after // SetSessionStorageNamespace, since this calls CreateRenderView, which uses -@@ -4813,12 +4819,6 @@ FrameTree* WebContentsImpl::CreateNewWindow( +@@ -4822,12 +4828,6 @@ FrameTree* WebContentsImpl::CreateNewWindow( AddWebContentsDestructionObserver(new_contents_impl); } @@ -66,10 +66,10 @@ index 61ee456a1bfb842aefd8b644ff0ae630a698ef7c..cbf4276337139a81d46fb263bce8f5ee // 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 e73432790e5bbd03dc3eb2a2d8c89d77d21430cc..5f60458d39e3554832b63c201e79633cf0219951 100644 +index 21967547790cacc162d9b125e60ca24919b6b485..af7126cec088e5ece113dfbea19674421182abaa 100644 --- a/content/public/browser/content_browser_client.cc +++ b/content/public/browser/content_browser_client.cc -@@ -760,6 +760,8 @@ bool ContentBrowserClient::CanCreateWindow( +@@ -765,6 +765,8 @@ bool ContentBrowserClient::CanCreateWindow( const std::string& frame_name, WindowOpenDisposition disposition, const blink::mojom::WindowFeatures& features, @@ -79,7 +79,7 @@ index e73432790e5bbd03dc3eb2a2d8c89d77d21430cc..5f60458d39e3554832b63c201e79633c 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 7326a96f8b615e7dd7f5077faab98a6a198209bd..ff16736f47ad642211ee21b44479c5e449acf33f 100644 +index 0f6781dc459e1072e1f538b2c60c21699b175852..ad94803577af27c84e247ace2137995a9ca886e0 100644 --- a/content/public/browser/content_browser_client.h +++ b/content/public/browser/content_browser_client.h @@ -196,6 +196,7 @@ class NetworkService; @@ -90,7 +90,7 @@ index 7326a96f8b615e7dd7f5077faab98a6a198209bd..ff16736f47ad642211ee21b44479c5e4 } // namespace network namespace sandbox { -@@ -1322,6 +1323,8 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -1325,6 +1326,8 @@ class CONTENT_EXPORT ContentBrowserClient { const std::string& frame_name, WindowOpenDisposition disposition, const blink::mojom::WindowFeatures& features, @@ -100,7 +100,7 @@ index 7326a96f8b615e7dd7f5077faab98a6a198209bd..ff16736f47ad642211ee21b44479c5e4 bool opener_suppressed, bool* no_javascript_access); diff --git a/content/public/browser/web_contents_delegate.cc b/content/public/browser/web_contents_delegate.cc -index 9d14f11ef397a525633292dbedfed40f38a9ec8f..49bc6ce731ea06cae8281107dbaa527060ffd4ce 100644 +index 784103345ed40cce8823048bcd6a48c722866f15..94202a07c8774a9ad62938506b22ea3f72916372 100644 --- a/content/public/browser/web_contents_delegate.cc +++ b/content/public/browser/web_contents_delegate.cc @@ -31,6 +31,17 @@ namespace content { @@ -122,7 +122,7 @@ index 9d14f11ef397a525633292dbedfed40f38a9ec8f..49bc6ce731ea06cae8281107dbaa5270 WebContents* source, const OpenURLParams& params, diff --git a/content/public/browser/web_contents_delegate.h b/content/public/browser/web_contents_delegate.h -index 294dc13ec8f27875c28b459b56b166f2c8f4a2ff..1a58077807de673e1937f3323c8dc37b4c69468e 100644 +index 19dff7ea3f62e5095ee03335978dac5d58cc1465..cbec82fe1fbc43c188ac9c0cf318ee49aa83c503 100644 --- a/content/public/browser/web_contents_delegate.h +++ b/content/public/browser/web_contents_delegate.h @@ -17,6 +17,7 @@ @@ -163,7 +163,7 @@ index 1fd3487243760d5a64bcd27f7022d8d0326bab65..21ecced6578552e30c1a01841053f679 // moved on send. bool is_background_tab = diff --git a/content/web_test/browser/web_test_content_browser_client.cc b/content/web_test/browser/web_test_content_browser_client.cc -index 9e564b2be92aefc2b58617de92dd8d519c3c784f..bf096ab972cc945d19473cc1e55f6f7fc9618778 100644 +index b181f3d7429cdccfede3803b0659fc877d68e884..874753add7c176871fee299d32199ebfd9526c68 100644 --- a/content/web_test/browser/web_test_content_browser_client.cc +++ b/content/web_test/browser/web_test_content_browser_client.cc @@ -520,6 +520,8 @@ bool WebTestContentBrowserClient::CanCreateWindow( @@ -176,7 +176,7 @@ index 9e564b2be92aefc2b58617de92dd8d519c3c784f..bf096ab972cc945d19473cc1e55f6f7f bool opener_suppressed, bool* no_javascript_access) { diff --git a/content/web_test/browser/web_test_content_browser_client.h b/content/web_test/browser/web_test_content_browser_client.h -index 4145d0d32ca1d1f02620a66f2437eaa58954b4d7..3cb5faab3f2e60d919dd7dd76fd320b8c63de84f 100644 +index 126fe65469971b91e763a5e7640649dff1a096c4..398feea2aec7ece17d62259320db9035edabeccd 100644 --- a/content/web_test/browser/web_test_content_browser_client.h +++ b/content/web_test/browser/web_test_content_browser_client.h @@ -92,6 +92,8 @@ class WebTestContentBrowserClient : public ShellContentBrowserClient { diff --git a/patches/chromium/chore_introduce_blocking_api_for_electron.patch b/patches/chromium/chore_introduce_blocking_api_for_electron.patch index d5cf942f22cc1a..c57637384c42a1 100644 --- a/patches/chromium/chore_introduce_blocking_api_for_electron.patch +++ b/patches/chromium/chore_introduce_blocking_api_for_electron.patch @@ -7,7 +7,7 @@ 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 965206e18e7a536947354c734ef17196c3e736ff..8a8a687d33f725aacf736a20ffc600cdf3fb05e4 100644 +index 149838be725f2e09274421d087ce4494ecf4bc1d..17bdae284536b0445bf539651bd6e152a0cb5c6b 100644 --- a/base/threading/thread_restrictions.h +++ b/base/threading/thread_restrictions.h @@ -132,6 +132,7 @@ class KeyStorageLinux; @@ -28,7 +28,7 @@ index 965206e18e7a536947354c734ef17196c3e736ff..8a8a687d33f725aacf736a20ffc600cd namespace enterprise_connectors { class LinuxKeyRotationCommand; } // namespace enterprise_connectors -@@ -580,6 +584,7 @@ class BASE_EXPORT ScopedAllowBlocking { +@@ -583,6 +587,7 @@ class BASE_EXPORT ScopedAllowBlocking { friend class ::DesktopNotificationBalloon; friend class ::FirefoxProfileLock; friend class ::GaiaConfig; @@ -36,7 +36,7 @@ index 965206e18e7a536947354c734ef17196c3e736ff..8a8a687d33f725aacf736a20ffc600cd friend class ::ProfileImpl; friend class ::ScopedAllowBlockingForProfile; friend class ::StartupTabProviderImpl; -@@ -620,6 +625,7 @@ class BASE_EXPORT ScopedAllowBlocking { +@@ -623,6 +628,7 @@ class BASE_EXPORT ScopedAllowBlocking { friend class crosapi::LacrosThreadTypeDelegate; friend class crypto::ScopedAllowBlockingForNSS; // http://crbug.com/59847 friend class drive::FakeDriveService; diff --git a/patches/chromium/chore_partial_revert_of.patch b/patches/chromium/chore_partial_revert_of.patch index 3c1074d1fe35c2..24d1cbec58a511 100644 --- a/patches/chromium/chore_partial_revert_of.patch +++ b/patches/chromium/chore_partial_revert_of.patch @@ -14,10 +14,10 @@ track down the source of this problem & figure out if we can fix it by changing something in Electron. diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc -index 2841e3c1b0cb1bb538c91e18d83ac81ff230d130..14119e672dda39a5ac49f6ef561036a624559f68 100644 +index c1e2bf39aa70776b7e3b26ac78c82995cd376c58..c26d53d7555cbdaae5c167aabf49135afb667259 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc -@@ -4698,9 +4698,6 @@ FrameTree* WebContentsImpl::CreateNewWindow( +@@ -4707,9 +4707,6 @@ FrameTree* WebContentsImpl::CreateNewWindow( bool renderer_started_hidden = params.disposition == WindowOpenDisposition::NEW_BACKGROUND_TAB; diff --git a/patches/chromium/chore_provide_iswebcontentscreationoverridden_with_full_params.patch b/patches/chromium/chore_provide_iswebcontentscreationoverridden_with_full_params.patch index cacf8fb64211f5..204d02f1d563c9 100644 --- a/patches/chromium/chore_provide_iswebcontentscreationoverridden_with_full_params.patch +++ b/patches/chromium/chore_provide_iswebcontentscreationoverridden_with_full_params.patch @@ -80,10 +80,10 @@ index b078a4a06c7b3f767e2e01f0bef2ba440f729620..0459568581a3073333ae6afabd3680f2 content::WebContents* source, const content::OpenURLParams& params, diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc -index fb49096b1bd6b54ceaa500db44c38aa47f98cf6c..5b0e28841235ebff05b3c97548f821986baa96ab 100644 +index e87612be406274364fd125e7e89e803aa21702d8..0964949aaaec52cbc4db124e345db458df57c040 100644 --- a/chrome/browser/ui/browser.cc +++ b/chrome/browser/ui/browser.cc -@@ -2096,12 +2096,11 @@ bool Browser::IsWebContentsCreationOverridden( +@@ -2110,12 +2110,11 @@ bool Browser::IsWebContentsCreationOverridden( content::SiteInstance* source_site_instance, content::mojom::WindowContainerType window_container_type, const GURL& opener_url, @@ -99,10 +99,10 @@ index fb49096b1bd6b54ceaa500db44c38aa47f98cf6c..5b0e28841235ebff05b3c97548f82198 WebContents* Browser::CreateCustomWebContents( diff --git a/chrome/browser/ui/browser.h b/chrome/browser/ui/browser.h -index 2f17fc1f34808af63448b95bdde72569bf65e364..2a20ad8c9acf60a31382698aa30281addaaf99ed 100644 +index 86ea151056ca1e565f2c636aeb23fdff269e8e9a..244cabf50f63d061cba99cfefc2cf992e365b433 100644 --- a/chrome/browser/ui/browser.h +++ b/chrome/browser/ui/browser.h -@@ -969,8 +969,7 @@ class Browser : public TabStripModelObserver, +@@ -970,8 +970,7 @@ class Browser : public TabStripModelObserver, content::SiteInstance* source_site_instance, content::mojom::WindowContainerType window_container_type, const GURL& opener_url, @@ -155,7 +155,7 @@ index 520674b0a5061057fa4b769ba5db93da81531d3f..b364e20f7bba27f3f167aa201e26c916 } content::WebContents* CreateCustomWebContents( diff --git a/components/embedder_support/android/delegate/web_contents_delegate_android.cc b/components/embedder_support/android/delegate/web_contents_delegate_android.cc -index e0f1e382cac773b9ad10bac1166eeea29aa57ffc..d54b9d27802a0f2f6fe269a0c8184b846b01df0d 100644 +index bcc4841d7f953805f615b3fe5dd252216aa5e482..76a88284aa409b1458ce5f723a1445bd4b184573 100644 --- a/components/embedder_support/android/delegate/web_contents_delegate_android.cc +++ b/components/embedder_support/android/delegate/web_contents_delegate_android.cc @@ -183,14 +183,13 @@ bool WebContentsDelegateAndroid::IsWebContentsCreationOverridden( @@ -176,7 +176,7 @@ index e0f1e382cac773b9ad10bac1166eeea29aa57ffc..d54b9d27802a0f2f6fe269a0c8184b84 java_gurl); } diff --git a/components/embedder_support/android/delegate/web_contents_delegate_android.h b/components/embedder_support/android/delegate/web_contents_delegate_android.h -index 704317b01ca869211b3da5e148b7445a39c10384..06f81b78911d8f3176bf0bede20bd287a8bed7a4 100644 +index 6c89a03712b9449e1a7b0e38ed9d019b30029c15..50b324ef3f1163e462ad145e58b42bf3fd053a0a 100644 --- a/components/embedder_support/android/delegate/web_contents_delegate_android.h +++ b/components/embedder_support/android/delegate/web_contents_delegate_android.h @@ -82,8 +82,7 @@ class WebContentsDelegateAndroid : public content::WebContentsDelegate { @@ -190,7 +190,7 @@ index 704317b01ca869211b3da5e148b7445a39c10384..06f81b78911d8f3176bf0bede20bd287 void SetContentsBounds(content::WebContents* source, const gfx::Rect& bounds) override; diff --git a/components/offline_pages/content/background_loader/background_loader_contents.cc b/components/offline_pages/content/background_loader/background_loader_contents.cc -index 9a9189517762d3fe1273dd49a9fbf66be7bce61b..b5015fa8de8dd3cbf8e366326575c7e8268e384c 100644 +index 072e7d0dde701a8f2d1de2704c8a056363324390..9e5ace2b1f32d5e5c542439f5365f9d9458cbf37 100644 --- a/components/offline_pages/content/background_loader/background_loader_contents.cc +++ b/components/offline_pages/content/background_loader/background_loader_contents.cc @@ -85,8 +85,7 @@ bool BackgroundLoaderContents::IsWebContentsCreationOverridden( @@ -218,10 +218,10 @@ index c6838c83ef971b88769b1f3fba8095025ae25464..2da6a4e08340e72ba7de5d03444c2f17 content::WebContents* AddNewContents( content::WebContents* source, diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc -index 71f54a7331e1a297fac194da26337a20fbe69301..ab2d3da2c61d42976b5d6f2460ddf4bea53c9af4 100644 +index 76d396192337ad3b3046c6eb80c14a7d4a54ac8c..cc2e4302ad121d658bb43af1014b6af42a62d47a 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc -@@ -4667,8 +4667,7 @@ FrameTree* WebContentsImpl::CreateNewWindow( +@@ -4676,8 +4676,7 @@ FrameTree* WebContentsImpl::CreateNewWindow( if (delegate_ && delegate_->IsWebContentsCreationOverridden( source_site_instance, params.window_container_type, @@ -232,7 +232,7 @@ index 71f54a7331e1a297fac194da26337a20fbe69301..ab2d3da2c61d42976b5d6f2460ddf4be static_cast(delegate_->CreateCustomWebContents( opener, source_site_instance, is_new_browsing_instance, diff --git a/content/public/browser/web_contents_delegate.cc b/content/public/browser/web_contents_delegate.cc -index 49bc6ce731ea06cae8281107dbaa527060ffd4ce..b061435dd97fd80e748591390a6d0631eab78c42 100644 +index 94202a07c8774a9ad62938506b22ea3f72916372..3069d732ed336fdaf8fed231bdd0407d0a1b2f75 100644 --- a/content/public/browser/web_contents_delegate.cc +++ b/content/public/browser/web_contents_delegate.cc @@ -152,8 +152,7 @@ bool WebContentsDelegate::IsWebContentsCreationOverridden( @@ -246,7 +246,7 @@ index 49bc6ce731ea06cae8281107dbaa527060ffd4ce..b061435dd97fd80e748591390a6d0631 } diff --git a/content/public/browser/web_contents_delegate.h b/content/public/browser/web_contents_delegate.h -index 1a58077807de673e1937f3323c8dc37b4c69468e..87f97ef6c2456e7dcc4a46b820ecba58dcf19388 100644 +index cbec82fe1fbc43c188ac9c0cf318ee49aa83c503..9daed06017f4a586e34f1e47dc85b9e6e5136097 100644 --- a/content/public/browser/web_contents_delegate.h +++ b/content/public/browser/web_contents_delegate.h @@ -345,8 +345,7 @@ class CONTENT_EXPORT WebContentsDelegate { diff --git a/patches/chromium/chore_remove_reference_to_chrome_browser_themes.patch b/patches/chromium/chore_remove_reference_to_chrome_browser_themes.patch index 93800703aa4291..a4972189d37861 100644 --- a/patches/chromium/chore_remove_reference_to_chrome_browser_themes.patch +++ b/patches/chromium/chore_remove_reference_to_chrome_browser_themes.patch @@ -11,10 +11,10 @@ not need this dependency. refs https://chromium-review.googlesource.com/c/chromium/src/+/5573603 diff --git a/chrome/browser/ui/color/BUILD.gn b/chrome/browser/ui/color/BUILD.gn -index aa06f30703313055734cbd8e73be651a493aeae1..0cdeec06800d043ac2da933420f22d6d750691d3 100644 +index 02d3457d65c4edf2cdbb3c37d90813b496f7945b..ce9e3a87ad650ad99808dea6e292f340fb58aa36 100644 --- a/chrome/browser/ui/color/BUILD.gn +++ b/chrome/browser/ui/color/BUILD.gn -@@ -86,9 +86,6 @@ source_set("mixers") { +@@ -87,9 +87,6 @@ source_set("mixers") { ] } diff --git a/patches/chromium/custom_protocols_plzserviceworker.patch b/patches/chromium/custom_protocols_plzserviceworker.patch index 0847e89834064c..2b6d6912a5e313 100644 --- a/patches/chromium/custom_protocols_plzserviceworker.patch +++ b/patches/chromium/custom_protocols_plzserviceworker.patch @@ -8,10 +8,10 @@ Allow registering custom protocols to handle service worker main script fetching Refs https://bugs.chromium.org/p/chromium/issues/detail?id=996511 diff --git a/content/browser/service_worker/service_worker_context_wrapper.cc b/content/browser/service_worker/service_worker_context_wrapper.cc -index 5b9d98641157e6e624fd08dd1ebafe06636856bc..cca0b314bf6555aaede788b275e44ee78b41cca6 100644 +index 8127b7951b2070d49ee99cd93199454355ab925d..2056a3408e6449920d77a9c1659d2732e736e429 100644 --- a/content/browser/service_worker/service_worker_context_wrapper.cc +++ b/content/browser/service_worker/service_worker_context_wrapper.cc -@@ -1976,6 +1976,26 @@ ServiceWorkerContextWrapper::GetLoaderFactoryForBrowserInitiatedRequest( +@@ -1959,6 +1959,26 @@ ServiceWorkerContextWrapper::GetLoaderFactoryForBrowserInitiatedRequest( loader_factory_bundle_info = context()->loader_factory_bundle_for_update_check()->Clone(); @@ -38,7 +38,7 @@ index 5b9d98641157e6e624fd08dd1ebafe06636856bc..cca0b314bf6555aaede788b275e44ee7 if (auto* config = content::WebUIConfigMap::GetInstance().GetConfig( browser_context(), scope)) { // If this is a Service Worker for a WebUI, the WebUI's URLDataSource -@@ -1995,9 +2015,7 @@ ServiceWorkerContextWrapper::GetLoaderFactoryForBrowserInitiatedRequest( +@@ -1978,9 +1998,7 @@ ServiceWorkerContextWrapper::GetLoaderFactoryForBrowserInitiatedRequest( features::kEnableServiceWorkersForChromeScheme) && scope.scheme_piece() == kChromeUIScheme) { config->RegisterURLDataSource(browser_context()); @@ -49,7 +49,7 @@ index 5b9d98641157e6e624fd08dd1ebafe06636856bc..cca0b314bf6555aaede788b275e44ee7 .emplace(kChromeUIScheme, CreateWebUIServiceWorkerLoaderFactory( browser_context(), kChromeUIScheme, base::flat_set())); -@@ -2005,9 +2023,7 @@ ServiceWorkerContextWrapper::GetLoaderFactoryForBrowserInitiatedRequest( +@@ -1988,9 +2006,7 @@ ServiceWorkerContextWrapper::GetLoaderFactoryForBrowserInitiatedRequest( features::kEnableServiceWorkersForChromeUntrusted) && scope.scheme_piece() == kChromeUIUntrustedScheme) { config->RegisterURLDataSource(browser_context()); 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 4eb56fe352535b..03894dce0a9d2b 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 862b92324440bc77ce19b95bc16d4d3e4a24fe0f..bcff571010a7399dbfd74d484edd7db437b3e747 100644 +index dea5f16df0264348d6762aa41605e7f3c22e3f84..a311ddb37031c5cba1859bb31683531de0fcd4af 100644 --- a/content/renderer/render_process_impl.cc +++ b/content/renderer/render_process_impl.cc -@@ -209,6 +209,9 @@ RenderProcessImpl::RenderProcessImpl() +@@ -200,6 +200,9 @@ RenderProcessImpl::RenderProcessImpl() v8::V8::SetFlagsFromString(kSABPerContextFlag, sizeof(kSABPerContextFlag)); } diff --git a/patches/chromium/disable_hidden.patch b/patches/chromium/disable_hidden.patch index a34c24823cc863..e10ae2b9c85ee7 100644 --- a/patches/chromium/disable_hidden.patch +++ b/patches/chromium/disable_hidden.patch @@ -6,7 +6,7 @@ Subject: disable_hidden.patch Electron uses this to disable background throttling for hidden windows. diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc -index e309e8b96cd6605fc812fda2ca3c7ece07824e0c..c74c3d2bad9eaea9fe7cab4069222afc4bb77162 100644 +index 5a521aa5a61172954ad09a49c44a22633b1471ac..ce714ed077d9e5a22b5de926408fbe6d35cc04d6 100644 --- a/content/browser/renderer_host/render_widget_host_impl.cc +++ b/content/browser/renderer_host/render_widget_host_impl.cc @@ -789,6 +789,10 @@ void RenderWidgetHostImpl::WasHidden() { @@ -17,14 +17,14 @@ index e309e8b96cd6605fc812fda2ca3c7ece07824e0c..c74c3d2bad9eaea9fe7cab4069222afc + return; + } + - RejectPointerLockOrUnlockIfNecessary( - blink::mojom::PointerLockResult::kWrongDocument); - + // Cancel pending pointer lock requests, unless there's an open user prompt. + // Prompts should remain open and functional across tab switches. + if (!delegate_->IsWaitingForPointerLockPrompt(this)) { diff --git a/content/browser/renderer_host/render_widget_host_impl.h b/content/browser/renderer_host/render_widget_host_impl.h -index 4ce389437e583f3b0beaac78b4935808ee54c98e..e39e793bc2673d438cdf01aa909d72732aa32ae2 100644 +index b8dadc4cca4621e991cdc874e0663cedd3f48d74..34ceb4c605a767e1eaf5434a68132f98b0a4056c 100644 --- a/content/browser/renderer_host/render_widget_host_impl.h +++ b/content/browser/renderer_host/render_widget_host_impl.h -@@ -1017,6 +1017,9 @@ class CONTENT_EXPORT RenderWidgetHostImpl +@@ -1018,6 +1018,9 @@ class CONTENT_EXPORT RenderWidgetHostImpl // Requests a commit and forced redraw in the renderer compositor. void ForceRedrawForTesting(); diff --git a/patches/chromium/expose_setuseragent_on_networkcontext.patch b/patches/chromium/expose_setuseragent_on_networkcontext.patch index ff1ad0f3250bb7..df1dbc9f6988d8 100644 --- a/patches/chromium/expose_setuseragent_on_networkcontext.patch +++ b/patches/chromium/expose_setuseragent_on_networkcontext.patch @@ -63,10 +63,10 @@ index a898e09ac0c989952fe2032ca4ea6ddfdacc59e6..46f3936d93277293f2b876759cb1e3a2 void SetEnableReferrers(bool enable_referrers) override; #if BUILDFLAG(IS_CT_SUPPORTED) diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom -index 0e6697aca687d8d8103f3cc2cdff03be383ba6c3..f8ce2402321d465ca1303d303e30ee68033a2333 100644 +index 362d2c79a4f8bda162f87841ba0629e88347bf14..1d26180ac8bd6bfff98d4dddabd44f50911073e1 100644 --- a/services/network/public/mojom/network_context.mojom +++ b/services/network/public/mojom/network_context.mojom -@@ -1290,6 +1290,9 @@ interface NetworkContext { +@@ -1287,6 +1287,9 @@ interface NetworkContext { SetNetworkConditions(mojo_base.mojom.UnguessableToken throttling_profile_id, NetworkConditions? conditions); diff --git a/patches/chromium/feat_add_data_parameter_to_processsingleton.patch b/patches/chromium/feat_add_data_parameter_to_processsingleton.patch index 0b0f5bd2340c8c..38da8c0b4896a2 100644 --- a/patches/chromium/feat_add_data_parameter_to_processsingleton.patch +++ b/patches/chromium/feat_add_data_parameter_to_processsingleton.patch @@ -63,7 +63,7 @@ index 31f5b160e4cd755cfb56a62b04261ee1bee80277..8dbc5ac458481d2f805f90101069f02a #if BUILDFLAG(IS_WIN) bool EscapeVirtualization(const base::FilePath& user_data_dir); diff --git a/chrome/browser/process_singleton_posix.cc b/chrome/browser/process_singleton_posix.cc -index f8cf2fb4ab66dae92b80c17cdda8b984fe4807c7..1a5d5323c0b37171b61f1fb2445dc18e1738f4ba 100644 +index 72cdfe2c4a0258dbd575f536ca42fa1d53f44988..092f60adb1080bea16ac24c53d57539d1c308b3a 100644 --- a/chrome/browser/process_singleton_posix.cc +++ b/chrome/browser/process_singleton_posix.cc @@ -615,6 +615,7 @@ class ProcessSingleton::LinuxWatcher @@ -178,7 +178,7 @@ index f8cf2fb4ab66dae92b80c17cdda8b984fe4807c7..1a5d5323c0b37171b61f1fb2445dc18e if (!WriteToSocket(socket.fd(), to_send.data(), to_send.length())) { // Try to kill the other process, because it might have been dead. diff --git a/chrome/browser/process_singleton_win.cc b/chrome/browser/process_singleton_win.cc -index a0ef81d42bd9a58786b00a1601625e6822bc26f6..27da17eed8fcd69b32dd1f409f6a2efd46a40d88 100644 +index 27216805188c77aa45b478e66b04a2d45f92fba6..9646e314af0de3d4a7ccf1c54a339b703be125c2 100644 --- a/chrome/browser/process_singleton_win.cc +++ b/chrome/browser/process_singleton_win.cc @@ -81,10 +81,12 @@ BOOL CALLBACK BrowserWindowEnumeration(HWND window, LPARAM param) { diff --git a/patches/chromium/feat_allow_usage_of_sccontentsharingpicker_on_supported_platforms.patch b/patches/chromium/feat_allow_usage_of_sccontentsharingpicker_on_supported_platforms.patch index a995a73da9b292..704eb545d4ae98 100644 --- a/patches/chromium/feat_allow_usage_of_sccontentsharingpicker_on_supported_platforms.patch +++ b/patches/chromium/feat_allow_usage_of_sccontentsharingpicker_on_supported_platforms.patch @@ -363,7 +363,7 @@ index 415156d403a59bf426cf4561a9d58ecdb27524b4..78aa7b2359c684d5305bf6352751dfbb #if defined(USE_AURA) || BUILDFLAG(IS_MAC) // Assigns integer identifier to the |window| and returns its DesktopMediaID. diff --git a/media/capture/video_capture_types.h b/media/capture/video_capture_types.h -index f2b75f5b2f547ad135c1288bf3639b26dedc8053..ef18724d9f2ea68a47b66fc3981f58a73ac1b51d 100644 +index 53e8077c9c0b635df0abdeca43fa9a6373c68252..2805e36cc42190d8197d83f5df235094570e3d5d 100644 --- a/media/capture/video_capture_types.h +++ b/media/capture/video_capture_types.h @@ -355,6 +355,8 @@ struct CAPTURE_EXPORT VideoCaptureParams { diff --git a/patches/chromium/feat_configure_launch_options_for_service_process.patch b/patches/chromium/feat_configure_launch_options_for_service_process.patch index 3e5145abf10d00..74dcc379bae75e 100644 --- a/patches/chromium/feat_configure_launch_options_for_service_process.patch +++ b/patches/chromium/feat_configure_launch_options_for_service_process.patch @@ -85,7 +85,7 @@ index 31a2a14a95540477297943df9b09b1e4659a884d..c02a81b1bd14a300dbbb47ad7aac2d2d DCHECK(GetZygoteForLaunch()); // Environment variables could be supported in the future, but are not diff --git a/content/browser/child_process_launcher_helper_mac.cc b/content/browser/child_process_launcher_helper_mac.cc -index f1a415f7bd56ece5ab07d2408dbfddf658b45ff3..49bf8f75583cc7b2de415f4ebb42757366a7b51d 100644 +index bbea8fff37040029996d1e91e592f6cb5bf8fbc2..13bbd8486279bf575010ab5ad62ba24a0d4cb24f 100644 --- a/content/browser/child_process_launcher_helper_mac.cc +++ b/content/browser/child_process_launcher_helper_mac.cc @@ -110,7 +110,8 @@ bool ChildProcessLauncherHelper::BeforeLaunchOnLauncherThread( @@ -111,7 +111,7 @@ index f1a415f7bd56ece5ab07d2408dbfddf658b45ff3..49bf8f75583cc7b2de415f4ebb427573 } diff --git a/content/browser/child_process_launcher_helper_win.cc b/content/browser/child_process_launcher_helper_win.cc -index 2a01487c8ff837357f6d62dba80115b0ec64c343..74343f6a3bfb1eab2aaf1c0b5fba6ceaf9399ef6 100644 +index cb0e7d5c5dc0154c6e88ad08ce097afdce4041f9..09b9cff76d9585297fe60f91970c610ac445f06a 100644 --- a/content/browser/child_process_launcher_helper_win.cc +++ b/content/browser/child_process_launcher_helper_win.cc @@ -24,6 +24,8 @@ @@ -155,15 +155,15 @@ index 2a01487c8ff837357f6d62dba80115b0ec64c343..74343f6a3bfb1eab2aaf1c0b5fba6cea return true; } -@@ -159,7 +186,7 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThread( - ChildProcessLauncherHelper::Process process; - *launch_result = - StartSandboxedProcess(delegate_.get(), *command_line(), -- options->handles_to_inherit, &process.process); -+ options, &process.process); - return process; - } - +@@ -158,7 +185,7 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThread( + } + *is_synchronous_launch = false; + *launch_result = StartSandboxedProcess( +- delegate_.get(), *command_line(), options->handles_to_inherit, ++ delegate_.get(), *command_line(), options, + base::BindOnce(&ChildProcessLauncherHelper:: + FinishStartSandboxedProcessOnLauncherThread, + this)); diff --git a/content/browser/service_process_host_impl.cc b/content/browser/service_process_host_impl.cc index bdd5bec301f5fcff2d3e3d7994ecbc4eae46da36..f6082bada22c5f4e70af60ea6f555b0f363919c5 100644 --- a/content/browser/service_process_host_impl.cc @@ -187,10 +187,10 @@ index bdd5bec301f5fcff2d3e3d7994ecbc4eae46da36..f6082bada22c5f4e70af60ea6f555b0f host->GetChildProcess()->BindServiceInterface(std::move(receiver)); } diff --git a/content/browser/utility_process_host.cc b/content/browser/utility_process_host.cc -index 23370e926c9fb9c24bb151d6d4dbca7d5936ebae..b617e0fd3aecb3f9cd1c4cfa9aadf68e658a2dbc 100644 +index 2fc9fabe67dc4d8c209247e46b57d27ec1a0fb90..ce73ed7f7070ee276511da674599364a468a2c8f 100644 --- a/content/browser/utility_process_host.cc +++ b/content/browser/utility_process_host.cc -@@ -179,11 +179,13 @@ const ChildProcessData& UtilityProcessHost::GetData() { +@@ -181,11 +181,13 @@ const ChildProcessData& UtilityProcessHost::GetData() { return process_->GetData(); } @@ -206,7 +206,7 @@ index 23370e926c9fb9c24bb151d6d4dbca7d5936ebae..b617e0fd3aecb3f9cd1c4cfa9aadf68e bool UtilityProcessHost::Start() { return StartProcess(); -@@ -230,6 +232,30 @@ void UtilityProcessHost::SetZygoteForTesting(ZygoteCommunication* handle) { +@@ -233,6 +235,30 @@ void UtilityProcessHost::SetZygoteForTesting(ZygoteCommunication* handle) { } #endif // BUILDFLAG(USE_ZYGOTE) @@ -237,9 +237,9 @@ index 23370e926c9fb9c24bb151d6d4dbca7d5936ebae..b617e0fd3aecb3f9cd1c4cfa9aadf68e mojom::ChildProcess* UtilityProcessHost::GetChildProcess() { return static_cast(process_->GetHost()) ->child_process(); -@@ -436,9 +462,26 @@ bool UtilityProcessHost::StartProcess() { - } - #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) +@@ -440,9 +466,26 @@ bool UtilityProcessHost::StartProcess() { + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || + // BUILDFLAG(IS_MAC) +#if BUILDFLAG(IS_WIN) + file_data_->stdout_handle = std::move(stdout_handle_); @@ -266,7 +266,7 @@ index 23370e926c9fb9c24bb151d6d4dbca7d5936ebae..b617e0fd3aecb3f9cd1c4cfa9aadf68e #if BUILDFLAG(IS_WIN) if (!preload_libraries_.empty()) { diff --git a/content/browser/utility_process_host.h b/content/browser/utility_process_host.h -index 9791ae2f761043b9eecd9064a6fd39a6e2339af4..c1809298c830b814f886859c2626d6bce7b9ac8c 100644 +index faa41e5f2571f7a8aa4eef927eca003801d787f6..16d5efc5f9191020aa2180d665cf520748a62a8f 100644 --- a/content/browser/utility_process_host.h +++ b/content/browser/utility_process_host.h @@ -29,6 +29,10 @@ @@ -280,7 +280,7 @@ index 9791ae2f761043b9eecd9064a6fd39a6e2339af4..c1809298c830b814f886859c2626d6bc namespace base { class Thread; } // namespace base -@@ -98,9 +102,13 @@ class CONTENT_EXPORT UtilityProcessHost +@@ -99,9 +103,13 @@ class CONTENT_EXPORT UtilityProcessHost // Returns information about the utility child process. const ChildProcessData& GetData(); @@ -296,7 +296,7 @@ index 9791ae2f761043b9eecd9064a6fd39a6e2339af4..c1809298c830b814f886859c2626d6bc // Starts the utility process. bool Start(); -@@ -138,6 +146,21 @@ class CONTENT_EXPORT UtilityProcessHost +@@ -139,6 +147,21 @@ class CONTENT_EXPORT UtilityProcessHost void SetZygoteForTesting(ZygoteCommunication* handle); #endif // BUILDFLAG(USE_ZYGOTE) @@ -318,7 +318,7 @@ index 9791ae2f761043b9eecd9064a6fd39a6e2339af4..c1809298c830b814f886859c2626d6bc // Returns a control interface for the running child process. mojom::ChildProcess* GetChildProcess(); -@@ -191,6 +214,27 @@ class CONTENT_EXPORT UtilityProcessHost +@@ -192,6 +215,27 @@ class CONTENT_EXPORT UtilityProcessHost std::optional> zygote_for_testing_; #endif // BUILDFLAG(USE_ZYGOTE) @@ -465,7 +465,7 @@ index 27cef06ded34680c6bfa3e954924de645a1b8217..7c114956a77da7b60526dd93593d8462 } // namespace content diff --git a/content/common/sandbox_init_win.cc b/content/common/sandbox_init_win.cc -index b96d6a879e8b6664559bac69f726321fdb02b40f..bfeec6ddb98d4127c1dcfe5999894f1cdebdc087 100644 +index 38733269e53b9874305942809373004f305ffdec..9f4f5f7dd7f2704e363f43c31ac930aeaabc2b45 100644 --- a/content/common/sandbox_init_win.cc +++ b/content/common/sandbox_init_win.cc @@ -23,7 +23,7 @@ namespace content { @@ -474,20 +474,20 @@ index b96d6a879e8b6664559bac69f726321fdb02b40f..bfeec6ddb98d4127c1dcfe5999894f1c const base::CommandLine& target_command_line, - const base::HandlesToInheritVector& handles_to_inherit, + const base::LaunchOptions* options, - base::Process* process) { + sandbox::StartSandboxedProcessCallback result_callback) { std::string type_str = target_command_line.GetSwitchValueASCII(switches::kProcessType); @@ -45,7 +45,7 @@ sandbox::ResultCode StartSandboxedProcess( } return sandbox::policy::SandboxWin::StartSandboxedProcess( -- full_command_line, handles_to_inherit, delegate, process); -+ full_command_line, options, delegate, process); +- full_command_line, handles_to_inherit, delegate, ++ full_command_line, options, delegate, + std::move(result_callback)); } - } // namespace content diff --git a/content/public/browser/service_process_host.cc b/content/public/browser/service_process_host.cc -index 8defae52a201a97c402e304216ce772a717a9f7e..4aee78366398c018e315ef15e631d0792ee79c47 100644 +index 518d1413705f94bc03eadc4331a6b0f13825265f..3fa4c69377e253e0ed8262b7e77f8fb5c154d274 100644 --- a/content/public/browser/service_process_host.cc +++ b/content/public/browser/service_process_host.cc @@ -52,12 +52,53 @@ ServiceProcessHost::Options::WithExtraCommandLineSwitches( @@ -628,7 +628,7 @@ index 0062d2cb6634b8b29977a0312516b1b13936b40a..611a52e908f4cb70fbe5628e220a082e // An interface which can be implemented and registered/unregistered with diff --git a/content/public/common/sandbox_init_win.h b/content/public/common/sandbox_init_win.h -index 9bb4b30ba0f5d37ec2b28f0848d94f34c24f9423..b614fef01ee5cdf81b7112be721b851c454756a2 100644 +index 5c24090e3311a89dc2a9162045feaacda574bb99..b772a2a054e9d19025ebd2909acf1b920d389a95 100644 --- a/content/public/common/sandbox_init_win.h +++ b/content/public/common/sandbox_init_win.h @@ -29,7 +29,7 @@ class SandboxedProcessLauncherDelegate; @@ -637,7 +637,7 @@ index 9bb4b30ba0f5d37ec2b28f0848d94f34c24f9423..b614fef01ee5cdf81b7112be721b851c const base::CommandLine& target_command_line, - const base::HandlesToInheritVector& handles_to_inherit, + const base::LaunchOptions* options, - base::Process* process); + sandbox::StartSandboxedProcessCallback result_callback); } // namespace content diff --git a/content/public/common/sandboxed_process_launcher_delegate.cc b/content/public/common/sandboxed_process_launcher_delegate.cc @@ -705,10 +705,10 @@ index 4b2ea0e2680c552b853fcbe4f5e4765a908f8915..6e8af760d986911ed6030b24244e9b21 #if BUILDFLAG(IS_MAC) // Whether or not to disclaim TCC responsibility for the process, defaults to diff --git a/sandbox/policy/win/sandbox_win.cc b/sandbox/policy/win/sandbox_win.cc -index 00525a5e5146f3789f5ed4bfe4a1cf36b174a00f..55d3c96e00b76e50d5fe8a1695829d3c9db11fbf 100644 +index b550651a8a98132104d38df083717e1cb58567e4..52b9eddefcc6a2240babcac824058cd853d3058f 100644 --- a/sandbox/policy/win/sandbox_win.cc +++ b/sandbox/policy/win/sandbox_win.cc -@@ -672,11 +672,9 @@ base::win::ScopedHandle CreateUnsandboxedJob() { +@@ -619,11 +619,9 @@ base::win::ScopedHandle CreateUnsandboxedJob() { // command line flag. ResultCode LaunchWithoutSandbox( const base::CommandLine& cmd_line, @@ -721,7 +721,7 @@ index 00525a5e5146f3789f5ed4bfe4a1cf36b174a00f..55d3c96e00b76e50d5fe8a1695829d3c // Network process runs in a job even when unsandboxed. This is to ensure it // does not outlive the browser, which could happen if there is a lot of I/O // on process shutdown, in which case TerminateProcess can fail. See -@@ -906,7 +904,7 @@ bool SandboxWin::InitTargetServices(TargetServices* target_services) { +@@ -920,7 +918,7 @@ bool SandboxWin::InitTargetServices(TargetServices* target_services) { // static ResultCode SandboxWin::GeneratePolicyForSandboxedProcess( const base::CommandLine& cmd_line, @@ -730,7 +730,7 @@ index 00525a5e5146f3789f5ed4bfe4a1cf36b174a00f..55d3c96e00b76e50d5fe8a1695829d3c SandboxDelegate* delegate, TargetPolicy* policy) { const base::CommandLine& launcher_process_command_line = -@@ -920,7 +918,7 @@ ResultCode SandboxWin::GeneratePolicyForSandboxedProcess( +@@ -934,7 +932,7 @@ ResultCode SandboxWin::GeneratePolicyForSandboxedProcess( } // Add any handles to be inherited to the policy. @@ -739,7 +739,7 @@ index 00525a5e5146f3789f5ed4bfe4a1cf36b174a00f..55d3c96e00b76e50d5fe8a1695829d3c policy->AddHandleToShare(handle); if (!policy->GetConfig()->IsConfigured()) { -@@ -935,6 +933,13 @@ ResultCode SandboxWin::GeneratePolicyForSandboxedProcess( +@@ -949,6 +947,13 @@ ResultCode SandboxWin::GeneratePolicyForSandboxedProcess( // have no effect. These calls can fail with SBOX_ERROR_BAD_PARAMS. policy->SetStdoutHandle(GetStdHandle(STD_OUTPUT_HANDLE)); policy->SetStderrHandle(GetStdHandle(STD_ERROR_HANDLE)); @@ -753,47 +753,47 @@ index 00525a5e5146f3789f5ed4bfe4a1cf36b174a00f..55d3c96e00b76e50d5fe8a1695829d3c #endif if (!delegate->PreSpawnTarget(policy)) -@@ -946,7 +951,7 @@ ResultCode SandboxWin::GeneratePolicyForSandboxedProcess( +@@ -960,7 +965,7 @@ ResultCode SandboxWin::GeneratePolicyForSandboxedProcess( // static ResultCode SandboxWin::StartSandboxedProcess( const base::CommandLine& cmd_line, - const base::HandlesToInheritVector& handles_to_inherit, + const base::LaunchOptions* options, SandboxDelegate* delegate, - base::Process* process) { + StartSandboxedProcessCallback result_callback) { SandboxLaunchTimer timer; -@@ -954,7 +959,7 @@ ResultCode SandboxWin::StartSandboxedProcess( - // Avoid making a policy if we won't use it. - if (IsUnsandboxedProcess(delegate->GetSandboxType(), cmd_line, +@@ -970,7 +975,7 @@ ResultCode SandboxWin::StartSandboxedProcess( *base::CommandLine::ForCurrentProcess())) { -- return LaunchWithoutSandbox(cmd_line, handles_to_inherit, delegate, -+ return LaunchWithoutSandbox(cmd_line, *options, delegate, - process); - } - -@@ -962,7 +967,7 @@ ResultCode SandboxWin::StartSandboxedProcess( + base::Process process; + ResultCode result = +- LaunchWithoutSandbox(cmd_line, handles_to_inherit, delegate, &process); ++ LaunchWithoutSandbox(cmd_line, *options, delegate, &process); + DWORD last_error = GetLastError(); + std::move(result_callback).Run(std::move(process), last_error, result); + return SBOX_ALL_OK; +@@ -980,7 +985,7 @@ ResultCode SandboxWin::StartSandboxedProcess( timer.OnPolicyCreated(); ResultCode result = GeneratePolicyForSandboxedProcess( - cmd_line, handles_to_inherit, delegate, policy.get()); + cmd_line, options, delegate, policy.get()); - if (SBOX_ALL_OK != result) - return result; - timer.OnPolicyGenerated(); + if (SBOX_ALL_OK != result) { + DWORD last_error = GetLastError(); + std::move(result_callback).Run(base::Process(), last_error, result); diff --git a/sandbox/policy/win/sandbox_win.h b/sandbox/policy/win/sandbox_win.h -index 271e80f52b15484ecc8b31b12b012eac39b3d333..cd3d803f52972c4ae8af6a0411b5be0e0a5bc782 100644 +index ede8bb552b2602fb06a6317399eb910e24a54216..c86744af9de2c366951d659851aaa9cac74b96de 100644 --- a/sandbox/policy/win/sandbox_win.h +++ b/sandbox/policy/win/sandbox_win.h -@@ -52,7 +52,7 @@ class SANDBOX_POLICY_EXPORT SandboxWin { - // Otherwise, returns one of sandbox::ResultCode for any other error. +@@ -92,7 +92,7 @@ class SANDBOX_POLICY_EXPORT SandboxWin { + // any other error. static ResultCode StartSandboxedProcess( const base::CommandLine& cmd_line, - const base::HandlesToInheritVector& handles_to_inherit, + const base::LaunchOptions* options, SandboxDelegate* delegate, - base::Process* process); + StartSandboxedProcessCallback result_callback); -@@ -65,7 +65,7 @@ class SANDBOX_POLICY_EXPORT SandboxWin { +@@ -105,7 +105,7 @@ class SANDBOX_POLICY_EXPORT SandboxWin { // of sandbox::ResultCode for any other error while constructing the policy. static ResultCode GeneratePolicyForSandboxedProcess( const base::CommandLine& cmd_line, diff --git a/patches/chromium/feat_enable_offscreen_rendering_with_viz_compositor.patch b/patches/chromium/feat_enable_offscreen_rendering_with_viz_compositor.patch index 11cf45e78f4cda..c1d12091360e6a 100644 --- a/patches/chromium/feat_enable_offscreen_rendering_with_viz_compositor.patch +++ b/patches/chromium/feat_enable_offscreen_rendering_with_viz_compositor.patch @@ -103,7 +103,7 @@ index c72cff69afab53000392220abc7decde1236e178..a94783f6dee223294d1ac0d332067b49 "display_embedder/software_output_surface.h", "display_embedder/vsync_parameter_listener.cc", diff --git a/components/viz/service/display_embedder/output_surface_provider.h b/components/viz/service/display_embedder/output_surface_provider.h -index 524df4c2a1382e6d009ab1165305a79894dca15e..a21da0785be3884e5e299643d306d25e6e97c841 100644 +index 7fbb05e606fc26364c674c6330b8a5eb9c016fb3..a190a42c2127011ab54aae937a3cab36880ce229 100644 --- a/components/viz/service/display_embedder/output_surface_provider.h +++ b/components/viz/service/display_embedder/output_surface_provider.h @@ -42,7 +42,8 @@ class OutputSurfaceProvider { @@ -204,7 +204,7 @@ index e4b46a79560e7698a6400b2ab8a57f38205a8718..3cb2518c6644cf0618f625d981befd46 const raw_ptr gpu_service_impl_; diff --git a/components/viz/service/display_embedder/software_output_device_mac.cc b/components/viz/service/display_embedder/software_output_device_mac.cc -index 7d58c00ddee8b8e14f89b9ba0f82f734294a4828..b9f7c11f28a7fd61cac594cac862d6524b83296d 100644 +index 446229f7dea794a0148543d112c63b8c38183262..15d097a5761a07cfbc763d6fc739ca35cf3c8660 100644 --- a/components/viz/service/display_embedder/software_output_device_mac.cc +++ b/components/viz/service/display_embedder/software_output_device_mac.cc @@ -111,6 +111,8 @@ void SoftwareOutputDeviceMac::UpdateAndCopyBufferDamage( @@ -521,7 +521,7 @@ index 796ae2688436eb07f19909641d1620dd02f10cdb..c9e0eee0b329caf46669b419b1cd10cf waiting_on_draw_ack_ = true; diff --git a/components/viz/service/frame_sinks/root_compositor_frame_sink_impl.cc b/components/viz/service/frame_sinks/root_compositor_frame_sink_impl.cc -index 463a0f71f75884b78ff33fc459891fbf31a44422..96a74c4b8be58fa7cc5b5066e22c836423ac2a41 100644 +index 5243e23874994b543f14dd26fc1b45dafea97c67..20ce7d15f56f54afc6c24e2df8e9808243ea49ca 100644 --- a/components/viz/service/frame_sinks/root_compositor_frame_sink_impl.cc +++ b/components/viz/service/frame_sinks/root_compositor_frame_sink_impl.cc @@ -102,7 +102,8 @@ RootCompositorFrameSinkImpl::Create( diff --git a/patches/chromium/feat_enable_passing_exit_code_on_service_process_crash.patch b/patches/chromium/feat_enable_passing_exit_code_on_service_process_crash.patch index 205ec666eb4831..afdde36e35b793 100644 --- a/patches/chromium/feat_enable_passing_exit_code_on_service_process_crash.patch +++ b/patches/chromium/feat_enable_passing_exit_code_on_service_process_crash.patch @@ -76,10 +76,10 @@ index f6082bada22c5f4e70af60ea6f555b0f363919c5..228f947edbe04bce242df62080052d9c void ServiceProcessHost::RemoveObserver(Observer* observer) { GetServiceProcessTracker().RemoveObserver(observer); diff --git a/content/browser/utility_process_host.cc b/content/browser/utility_process_host.cc -index b617e0fd3aecb3f9cd1c4cfa9aadf68e658a2dbc..c1d6999e53b222ae08ddb5f403de780d01b0ba71 100644 +index ce73ed7f7070ee276511da674599364a468a2c8f..3af02ceeddc8eb5c585fb04baa4bb20574a2df1b 100644 --- a/content/browser/utility_process_host.cc +++ b/content/browser/utility_process_host.cc -@@ -519,7 +519,7 @@ void UtilityProcessHost::OnProcessCrashed(int exit_code) { +@@ -523,7 +523,7 @@ void UtilityProcessHost::OnProcessCrashed(int exit_code) { // Take ownership of |client_| so the destructor doesn't notify it of // termination. auto client = std::move(client_); @@ -89,10 +89,10 @@ index b617e0fd3aecb3f9cd1c4cfa9aadf68e658a2dbc..c1d6999e53b222ae08ddb5f403de780d std::optional UtilityProcessHost::GetServiceName() { diff --git a/content/browser/utility_process_host.h b/content/browser/utility_process_host.h -index c1809298c830b814f886859c2626d6bce7b9ac8c..8d202e7e47c08c33394eb49e87b48225f72af445 100644 +index 16d5efc5f9191020aa2180d665cf520748a62a8f..54eab3d0f1625f9cbdd38eb89d11732fa0bfdaf9 100644 --- a/content/browser/utility_process_host.h +++ b/content/browser/utility_process_host.h -@@ -78,7 +78,7 @@ class CONTENT_EXPORT UtilityProcessHost +@@ -79,7 +79,7 @@ class CONTENT_EXPORT UtilityProcessHost virtual void OnProcessLaunched(const base::Process& process) {} virtual void OnProcessTerminatedNormally() {} diff --git a/patches/chromium/feat_expose_raw_response_headers_from_urlloader.patch b/patches/chromium/feat_expose_raw_response_headers_from_urlloader.patch index c82c777c4dcbf2..0f34e6c21ca7c8 100644 --- a/patches/chromium/feat_expose_raw_response_headers_from_urlloader.patch +++ b/patches/chromium/feat_expose_raw_response_headers_from_urlloader.patch @@ -112,10 +112,10 @@ index 3450c15835d8b792f37764f6edc4a4560be435ef..b1034aa141d6121f8e1524fb34a28a04 string mime_type; diff --git a/services/network/url_loader.cc b/services/network/url_loader.cc -index 490ccc66460c62eeb16c2b979e01efd54c4e3eb4..d68c15a828a1c16ad3644d7c4c036bf0e544d1b4 100644 +index 07142dacbb70d8610604d80328a1176efc1cf2c0..aa1bd9c89083c20a7455a97dd5b2d6e5ce1dc123 100644 --- a/services/network/url_loader.cc +++ b/services/network/url_loader.cc -@@ -578,6 +578,9 @@ URLLoader::URLLoader( +@@ -598,6 +598,9 @@ URLLoader::URLLoader( mojo::SimpleWatcher::ArmingPolicy::MANUAL, base::SequencedTaskRunner::GetCurrentDefault()), per_factory_orb_state_(context.GetMutableOrbState()), @@ -125,7 +125,7 @@ index 490ccc66460c62eeb16c2b979e01efd54c4e3eb4..d68c15a828a1c16ad3644d7c4c036bf0 devtools_request_id_(request.devtools_request_id), request_mode_(request.mode), request_credentials_mode_(request.credentials_mode), -@@ -839,7 +842,7 @@ void URLLoader::ConfigureRequest( +@@ -869,7 +872,7 @@ void URLLoader::ConfigureRequest( &URLLoader::IsSharedDictionaryReadAllowed, base::Unretained(this))); } @@ -134,7 +134,7 @@ index 490ccc66460c62eeb16c2b979e01efd54c4e3eb4..d68c15a828a1c16ad3644d7c4c036bf0 url_request_->SetResponseHeadersCallback(base::BindRepeating( &URLLoader::SetRawResponseHeaders, base::Unretained(this))); } -@@ -1802,6 +1805,19 @@ void URLLoader::OnResponseStarted(net::URLRequest* url_request, int net_error) { +@@ -1838,6 +1841,19 @@ void URLLoader::OnResponseStarted(net::URLRequest* url_request, int net_error) { } response_ = BuildResponseHead(); @@ -155,10 +155,10 @@ index 490ccc66460c62eeb16c2b979e01efd54c4e3eb4..d68c15a828a1c16ad3644d7c4c036bf0 // Parse and remove the Trust Tokens response headers, if any are expected, diff --git a/services/network/url_loader.h b/services/network/url_loader.h -index c2a638fb6cf1360d8dcbed058ce295a2ef91000d..f80f2848281fd88f08d23a9b4377a29e2d1ba76e 100644 +index e29f1180083d13cb4642457cfd756d93a79c5f01..eb238a5d31c5df1b073d08b8b01f7df0e6119b8e 100644 --- a/services/network/url_loader.h +++ b/services/network/url_loader.h -@@ -704,6 +704,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) URLLoader +@@ -706,6 +706,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) URLLoader std::unique_ptr resource_scheduler_request_handle_; 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 055cf697a21696..000a008e7f0380 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 @@ -23,10 +23,10 @@ Upstream bug https://bugs.chromium.org/p/chromium/issues/detail?id=1081397. 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 1162861b389f4c580dd058525e30b2f7cab76177..7f851ed44373445722df544f759537604664543e 100644 +index 53bba48293111e74daba50dde617fb78f1bcc7ee..67083fb13db2020f432ec488a784bcfb9570d737 100644 --- a/content/browser/renderer_host/navigation_request.cc +++ b/content/browser/renderer_host/navigation_request.cc -@@ -10785,6 +10785,12 @@ NavigationRequest::GetOriginForURLLoaderFactoryUncheckedWithDebugInfo() { +@@ -10788,6 +10788,12 @@ NavigationRequest::GetOriginForURLLoaderFactoryUncheckedWithDebugInfo() { "blob"); } @@ -40,7 +40,7 @@ index 1162861b389f4c580dd058525e30b2f7cab76177..7f851ed44373445722df544f75953760 // 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 7de11767815fb58e060ae935ef59e2433dfd4d1f..024ee08507a2392f4482c1c1b3c1048ba3a48acb 100644 +index 547a483db71e2980cc040fe853775fbc07723979..85c6d240a68e52b9d59fae7bbe36603e627b2893 100644 --- a/third_party/blink/renderer/core/loader/document_loader.cc +++ b/third_party/blink/renderer/core/loader/document_loader.cc @@ -2264,6 +2264,10 @@ Frame* DocumentLoader::CalculateOwnerFrame() { diff --git a/patches/chromium/fix_font_face_resolution_when_renderer_is_blocked.patch b/patches/chromium/fix_font_face_resolution_when_renderer_is_blocked.patch index 7aaf27e0a28f00..676e9fc9e3588e 100644 --- a/patches/chromium/fix_font_face_resolution_when_renderer_is_blocked.patch +++ b/patches/chromium/fix_font_face_resolution_when_renderer_is_blocked.patch @@ -11,7 +11,7 @@ while the renderer is blocked. This Cl takes an approach similar to that taken i MediaQueryList in order to enable the promise to be resolved. diff --git a/third_party/blink/renderer/core/css/font_face_set_document.cc b/third_party/blink/renderer/core/css/font_face_set_document.cc -index 01b075079fd7a75fb8cb5d876f6db927678c60db..436d04c3c739a7273c44130f6ed86486568f413c 100644 +index 921e3339e967b759e3074278e920616bc85b40b3..c0ffacc4082367e0296359fa5e0aedae53217506 100644 --- a/third_party/blink/renderer/core/css/font_face_set_document.cc +++ b/third_party/blink/renderer/core/css/font_face_set_document.cc @@ -27,6 +27,7 @@ @@ -22,7 +22,7 @@ index 01b075079fd7a75fb8cb5d876f6db927678c60db..436d04c3c739a7273c44130f6ed86486 #include "third_party/blink/renderer/bindings/core/v8/dictionary.h" #include "third_party/blink/renderer/core/css/css_font_face.h" #include "third_party/blink/renderer/core/css/css_font_selector.h" -@@ -150,21 +151,27 @@ FontFaceSetDocument::CSSConnectedFontFaceList() const { +@@ -144,21 +145,27 @@ FontFaceSetDocument::CSSConnectedFontFaceList() const { } void FontFaceSetDocument::FireDoneEventIfPossible() { 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 d3ae86c49f56a7..44e687334b7de5 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 @@ -87,10 +87,10 @@ index 0c7d5b2c1d3e97420913bd643bb2a524a76fc286..653793fa480f035ce11e079b370bf5ed // The view with active text input state, i.e., a focused element. // It will be nullptr if no such view exists. Note that the active view diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc -index d09320ddcb75d93de990f0ec3963edb6b6b793fe..2841e3c1b0cb1bb538c91e18d83ac81ff230d130 100644 +index 5ee493c16d2ff59438c2e233f7e30d796711ee06..c1e2bf39aa70776b7e3b26ac78c82995cd376c58 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc -@@ -9226,7 +9226,7 @@ void WebContentsImpl::OnFocusedElementChangedInFrame( +@@ -9235,7 +9235,7 @@ void WebContentsImpl::OnFocusedElementChangedInFrame( "WebContentsImpl::OnFocusedElementChangedInFrame", "render_frame_host", frame); RenderWidgetHostViewBase* root_view = diff --git a/patches/chromium/fix_restore_original_resize_performance_on_macos.patch b/patches/chromium/fix_restore_original_resize_performance_on_macos.patch index b413fa8470b916..b8a79b36681499 100644 --- a/patches/chromium/fix_restore_original_resize_performance_on_macos.patch +++ b/patches/chromium/fix_restore_original_resize_performance_on_macos.patch @@ -11,10 +11,10 @@ This patch should be upstreamed as a conditional revert of the logic in desktop vs mobile runtimes. i.e. restore the old logic only on desktop platforms diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc -index c0c9880221704bba85a85e841f7c2ed0ffe482d9..f9cc663212ae493c4cd1861cf57decec5d723152 100644 +index 3815310c78446a3cebc61680a01a374d0295e7a3..912669bdf7886b69f8386dd10ad1c1aaba2f5f27 100644 --- a/content/browser/renderer_host/render_widget_host_impl.cc +++ b/content/browser/renderer_host/render_widget_host_impl.cc -@@ -2044,9 +2044,8 @@ RenderWidgetHostImpl::GetWidgetInputHandler() { +@@ -2048,9 +2048,8 @@ RenderWidgetHostImpl::GetWidgetInputHandler() { void RenderWidgetHostImpl::NotifyScreenInfoChanged() { // The resize message (which may not happen immediately) will carry with it // the screen info as well as the new size (if the screen has changed scale 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 06b349933a549d..212dccbc0d74db 100644 --- a/patches/chromium/fix_return_v8_value_from_localframe_requestexecutescript.patch +++ b/patches/chromium/fix_return_v8_value_from_localframe_requestexecutescript.patch @@ -204,7 +204,7 @@ index fa65331f40b90d812b71a489fd560e9359152d2b..390714d631dc88ef92d59ef9618a5706 const mojom::blink::UserActivationOption user_activation_option_; const mojom::blink::LoadEventBlockingOption blocking_option_; diff --git a/third_party/blink/renderer/core/frame/web_frame_test.cc b/third_party/blink/renderer/core/frame/web_frame_test.cc -index 1672a1a8821c3621642ee8265fa54c2f47229113..699d3e30d9ca78dc56d6639511138e0420f89e1b 100644 +index 9c95dcc932a7744ea43f84fcf558efc14a3096d9..8dddf3b038a99fb52746985526d328707a94b58d 100644 --- a/third_party/blink/renderer/core/frame/web_frame_test.cc +++ b/third_party/blink/renderer/core/frame/web_frame_test.cc @@ -291,6 +291,7 @@ void ExecuteScriptsInMainWorld( diff --git a/patches/chromium/frame_host_manager.patch b/patches/chromium/frame_host_manager.patch index db1d8b6d440d4f..ad8de4c0920874 100644 --- a/patches/chromium/frame_host_manager.patch +++ b/patches/chromium/frame_host_manager.patch @@ -20,7 +20,7 @@ index 5b38f2caad8e093e44e3231f3a13c3976b15da10..b1c61e7f860decb254c837fb6a05573f } diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h -index ff16736f47ad642211ee21b44479c5e449acf33f..e721bde4eba6cc28bcff0f7df1b6d55aea18eb5d 100644 +index ad94803577af27c84e247ace2137995a9ca886e0..10c384267137a983eef90c3de9086f5139a17cc7 100644 --- a/content/public/browser/content_browser_client.h +++ b/content/public/browser/content_browser_client.h @@ -337,6 +337,11 @@ class CONTENT_EXPORT ContentBrowserClient { diff --git a/patches/chromium/gritsettings_resource_ids.patch b/patches/chromium/gritsettings_resource_ids.patch index b24af5fc6098ba..e27c0ad71fd9b7 100644 --- a/patches/chromium/gritsettings_resource_ids.patch +++ b/patches/chromium/gritsettings_resource_ids.patch @@ -6,11 +6,11 @@ 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 6cdb46db1feaead6031a2ca51d46168649e98499..ba3c9dcc304cc000cf08d695ba6d750f6aa1ad59 100644 +index b131fe5e2ee2adc4ba2e04932ff351510e5adf88..6a42ae3402dda916a45505a9b44905add5193db3 100644 --- a/tools/gritsettings/resource_ids.spec +++ b/tools/gritsettings/resource_ids.spec -@@ -1355,6 +1355,11 @@ - "includes": [8460], +@@ -1370,6 +1370,11 @@ + "includes": [10060], }, + "electron/electron_resources.grd": { 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 ce829a5fe709cc..9dc647c8d3bf49 100644 --- a/patches/chromium/mas_avoid_private_macos_api_usage.patch.patch +++ b/patches/chromium/mas_avoid_private_macos_api_usage.patch.patch @@ -35,10 +35,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 aa1654d428420e99bdce3abf3140f764d73e7c48..3d989d0d38ec85b44f89a525cda922e636aa3ce9 100644 +index 3d2dab5457c7e5f2de0dee28ec533b36fc767a40..e5eb12a276d346beb70d6115ccc6de838e5d8803 100644 --- a/base/BUILD.gn +++ b/base/BUILD.gn -@@ -1036,6 +1036,7 @@ component("base") { +@@ -1037,6 +1037,7 @@ component("base") { "//build:ios_buildflags", "//build/config/compiler:compiler_buildflags", "//third_party/modp_b64", @@ -81,7 +81,7 @@ index 4bf9a3c27e05c6635b2beb8e880b5b43dbed61b5..f328fbb49c45991f44a9c75325491d08 } // namespace base diff --git a/base/process/launch_mac.cc b/base/process/launch_mac.cc -index 569c1c83d82517d9cb65282f766368ce3d9d0572..8114bf8e9a9d002824b3804bff599591eacaba37 100644 +index f8ab18cc6b0e5e3d63c1a548aa1d031703c3e96c..c9eb1f688a0ff8f99c8d869cf2cf14206347b359 100644 --- a/base/process/launch_mac.cc +++ b/base/process/launch_mac.cc @@ -21,13 +21,19 @@ @@ -558,7 +558,7 @@ index 13c3fe06c417a2565e6af4552930a56c44a01fb3..ef67191f5d010451cde2b084d6165c7d return kAttributes; } diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn -index 70e143feb497711d12857333d48ce2ac4325bcd9..3ec50c52f1d824c544c77515213f7a50c9870a11 100644 +index 2d5c5f20907719f50663911e21f8eedf016f251f..e025a098d1e77c682b3e12fb8f1a7f300fdb119e 100644 --- a/content/browser/BUILD.gn +++ b/content/browser/BUILD.gn @@ -320,6 +320,7 @@ source_set("browser") { @@ -771,7 +771,7 @@ index a1068589ad844518038ee7bc15a3de9bc5cba525..1ff781c49f086ec8015c7d3c44567dbe } // namespace content diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn -index 3788cc19ac4abf84ad856a15b94f88fb4fdec00d..26a601565370e0ae4479eea7207e58dedef38e14 100644 +index b16333d20e5e48b79a6a494581f74d0791ffefa4..4cc8f764c551f1ee11828f31dae143c0fdefeb30 100644 --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn @@ -638,6 +638,7 @@ static_library("test_support") { @@ -790,7 +790,7 @@ index 3788cc19ac4abf84ad856a15b94f88fb4fdec00d..26a601565370e0ae4479eea7207e58de } mojom("content_test_mojo_bindings") { -@@ -1931,6 +1933,7 @@ test("content_browsertests") { +@@ -1930,6 +1932,7 @@ test("content_browsertests") { "//ui/shell_dialogs", "//ui/snapshot", "//ui/webui:test_support", @@ -798,7 +798,7 @@ index 3788cc19ac4abf84ad856a15b94f88fb4fdec00d..26a601565370e0ae4479eea7207e58de ] if (!(is_chromeos_ash && target_cpu == "arm64" && current_cpu == "arm")) { -@@ -3206,6 +3209,7 @@ test("content_unittests") { +@@ -3207,6 +3210,7 @@ test("content_unittests") { "//ui/latency:test_support", "//ui/shell_dialogs:shell_dialogs", "//ui/webui:test_support", @@ -1002,7 +1002,7 @@ index 70d5665ad7b9ef62370497636af919ede2508ad4..f4dc3e2b8053cdb3e8c439ab1a1d6369 } diff --git a/sandbox/mac/BUILD.gn b/sandbox/mac/BUILD.gn -index 299a028f23314f479d2da8f914a5bdf34698d854..67a56a3b4c8fc524f1ec8cfec856f24d30402134 100644 +index 4e53d573ff67615bc7dcee7db6f855c67094f414..8b061d66b1a854b51a5a38b6a71eadab6a7dbbec 100644 --- a/sandbox/mac/BUILD.gn +++ b/sandbox/mac/BUILD.gn @@ -39,6 +39,7 @@ component("seatbelt") { @@ -1371,7 +1371,7 @@ index eb81a70e4d5d5cd3e6ae9b45f8cd1c795ea76c51..9921ccb10d3455600eddd85f77f10228 } // namespace sandbox diff --git a/third_party/blink/renderer/core/BUILD.gn b/third_party/blink/renderer/core/BUILD.gn -index 2233bfae37c1339eee79fd3b5636e2e71d3ed2c7..ca2cb6a50970db35c2ac0694d3e165462b3ca6d9 100644 +index 3bc370e0beafd792ba4737013b3e7d59da8cf306..aa391a0b23372c944ab11a6496771ecbbe6b5e1a 100644 --- a/third_party/blink/renderer/core/BUILD.gn +++ b/third_party/blink/renderer/core/BUILD.gn @@ -403,6 +403,7 @@ component("core") { @@ -1612,10 +1612,10 @@ index c8171f0527fe5194f0ea73b57c4444d4c630fbc4..c2ac4da580e3e7f749a0a4de1e859af6 // Accessible object if (AXElementWrapper::IsValidElement(value)) { diff --git a/ui/base/BUILD.gn b/ui/base/BUILD.gn -index f2b93abee260e1cc17c425c6c44e377d11ee1967..c09de27ee1e6d28c0dbbc0d777129e180c92128f 100644 +index 8ce9bc840e32fde0f058733376e74e1238a69a7f..cdf34bc28085df368e14fe11df28df019370a69d 100644 --- a/ui/base/BUILD.gn +++ b/ui/base/BUILD.gn -@@ -381,6 +381,13 @@ component("base") { +@@ -386,6 +386,13 @@ component("base") { sources += [ "resource/resource_bundle_lacros.cc" ] } @@ -1629,7 +1629,7 @@ index f2b93abee260e1cc17c425c6c44e377d11ee1967..c09de27ee1e6d28c0dbbc0d777129e18 if (is_ios) { sources += [ "device_form_factor_ios.mm", -@@ -532,6 +539,12 @@ component("base") { +@@ -537,6 +544,12 @@ component("base") { "//url", ] @@ -1752,7 +1752,7 @@ index 84afacf999c4905fdbaba332e19058a6471c3436..bbab402c8c11e62dad7fa946d9550efa deps += [ "//build:ios_buildflags" ] } diff --git a/ui/display/mac/screen_mac.mm b/ui/display/mac/screen_mac.mm -index 35b71abc95f83bb01dba3f69e2d69a026840b7a2..6a2ff6768f16e503657cdb7ff6be7587c45842ec 100644 +index c4ab83ca4f48e5357fe9bcf024b3f95612223cdf..d97c9731884769079e53fa334f44319e339b4fc2 100644 --- a/ui/display/mac/screen_mac.mm +++ b/ui/display/mac/screen_mac.mm @@ -30,6 +30,7 @@ @@ -1782,7 +1782,7 @@ index 35b71abc95f83bb01dba3f69e2d69a026840b7a2..6a2ff6768f16e503657cdb7ff6be7587 // Query the display's refresh rate. if (@available(macos 12.0, *)) { diff --git a/ui/gfx/BUILD.gn b/ui/gfx/BUILD.gn -index c95b3ce1e1e7b87aab25cf596eb34eea6590db68..0336b2332d8274bd5fe71e4506d3de7b15830576 100644 +index 762ffff0e4a7ffc40e85dc82f5f0f243a447a85d..db4fbc65fded3beb58e6c336e1d4c4d33d3b2c25 100644 --- a/ui/gfx/BUILD.gn +++ b/ui/gfx/BUILD.gn @@ -335,6 +335,12 @@ component("gfx") { diff --git a/patches/chromium/network_service_allow_remote_certificate_verification_logic.patch b/patches/chromium/network_service_allow_remote_certificate_verification_logic.patch index 5fb7873ab609fc..9c02e99e131280 100644 --- a/patches/chromium/network_service_allow_remote_certificate_verification_logic.patch +++ b/patches/chromium/network_service_allow_remote_certificate_verification_logic.patch @@ -177,7 +177,7 @@ index 256de870d2c6defd3f0b389ee5f596c01051533f..a898e09ac0c989952fe2032ca4ea6ddf std::unique_ptr internal_host_resolver_; std::set, base::UniquePtrComparator> diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom -index 2cea6e6435b25f472252d56f5cbe1eddc1eccec1..0e6697aca687d8d8103f3cc2cdff03be383ba6c3 100644 +index 83bce4a3bf9dc2574bc0f9ab8921f3dfe632ec27..362d2c79a4f8bda162f87841ba0629e88347bf14 100644 --- a/services/network/public/mojom/network_context.mojom +++ b/services/network/public/mojom/network_context.mojom @@ -298,6 +298,16 @@ struct SocketBrokerRemotes { @@ -197,7 +197,7 @@ index 2cea6e6435b25f472252d56f5cbe1eddc1eccec1..0e6697aca687d8d8103f3cc2cdff03be // Parameters for constructing a network context. struct NetworkContextParams { -@@ -979,6 +989,9 @@ interface NetworkContext { +@@ -976,6 +986,9 @@ interface NetworkContext { // Sets a client for this network context. SetClient(pending_remote client); diff --git a/patches/chromium/notification_provenance.patch b/patches/chromium/notification_provenance.patch index c36bc7cb4a1abc..480e4c68abc70e 100644 --- a/patches/chromium/notification_provenance.patch +++ b/patches/chromium/notification_provenance.patch @@ -133,10 +133,10 @@ index 05d3a12dd84c7005d46cc73b312f97ef418d96f5..4765de982802541b3efc7211d106acc7 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 8f202aac088f2850a57d303e265b1f7a7f40b4f2..418268589bc912bb19c61f0914985a448a8907e8 100644 +index 22667bee38eb6f71c28132eaf4002f2b46ca3b39..aa6d50c94b28e3a3191acc9a12617205a1c797a9 100644 --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc -@@ -2108,7 +2108,7 @@ void RenderProcessHostImpl::CreateNotificationService( +@@ -2110,7 +2110,7 @@ void RenderProcessHostImpl::CreateNotificationService( case RenderProcessHost::NotificationServiceCreatorType::kSharedWorker: case RenderProcessHost::NotificationServiceCreatorType::kDedicatedWorker: { storage_partition_impl_->GetPlatformNotificationContext()->CreateService( @@ -145,7 +145,7 @@ index 8f202aac088f2850a57d303e265b1f7a7f40b4f2..418268589bc912bb19c61f0914985a44 creator_type, std::move(receiver)); break; } -@@ -2116,7 +2116,7 @@ void RenderProcessHostImpl::CreateNotificationService( +@@ -2118,7 +2118,7 @@ void RenderProcessHostImpl::CreateNotificationService( CHECK(rfh); storage_partition_impl_->GetPlatformNotificationContext()->CreateService( diff --git a/patches/chromium/partially_revert_is_newly_created_to_allow_for_browser_initiated.patch b/patches/chromium/partially_revert_is_newly_created_to_allow_for_browser_initiated.patch index d1da0a6f51c966..618e30b23d43e9 100644 --- a/patches/chromium/partially_revert_is_newly_created_to_allow_for_browser_initiated.patch +++ b/patches/chromium/partially_revert_is_newly_created_to_allow_for_browser_initiated.patch @@ -10,7 +10,7 @@ an about:blank check to this area. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/5403876 diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc -index f4bee04daf1ac7c6af12e7cadc7f45d42312a712..49e80ca315d23c0886a11786b36b0acb1d109b3a 100644 +index 8abcf9d0bf63496692408464ca5e5a3ede9dac4b..a21bc7a8dfa8edaad2a32f274e2dbfbcd7ac525c 100644 --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc @@ -783,8 +783,8 @@ void VerifyThatBrowserAndRendererCalculatedOriginsToCommitMatch( diff --git a/patches/chromium/printing.patch b/patches/chromium/printing.patch index cbf5a1171043c4..08e3768ca82e25 100644 --- a/patches/chromium/printing.patch +++ b/patches/chromium/printing.patch @@ -860,10 +860,10 @@ index 9c91fdf50b38ad437279eaada4359a7a95911d07..8eed4887949d0c30f067d86aaa971ee5 ScriptingThrottler scripting_throttler_; diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn -index 3ec50c52f1d824c544c77515213f7a50c9870a11..14b84d7fa67796afb390eccd227ba4311f536ffa 100644 +index e025a098d1e77c682b3e12fb8f1a7f300fdb119e..4f66fb182b99be75f8147c2ecc450833f8efdcd0 100644 --- a/content/browser/BUILD.gn +++ b/content/browser/BUILD.gn -@@ -3001,8 +3001,9 @@ source_set("browser") { +@@ -3003,8 +3003,9 @@ source_set("browser") { "//ppapi/shared_impl", ] diff --git a/patches/chromium/process_singleton.patch b/patches/chromium/process_singleton.patch index 0034bebda6ee18..e446abb82f8b08 100644 --- a/patches/chromium/process_singleton.patch +++ b/patches/chromium/process_singleton.patch @@ -51,7 +51,7 @@ index 23a8257aa2a0a671cf7af35aff9906891091606d..31f5b160e4cd755cfb56a62b04261ee1 base::win::MessageWindow window_; // The message-only window. bool is_virtualized_; // Stuck inside Microsoft Softricity VM environment. diff --git a/chrome/browser/process_singleton_posix.cc b/chrome/browser/process_singleton_posix.cc -index 14b9c99e81e0999d1a2e25557e6a731ec88f6a22..f8cf2fb4ab66dae92b80c17cdda8b984fe4807c7 100644 +index 80b0c47637a6726e1e43113d84187910911271b4..72cdfe2c4a0258dbd575f536ca42fa1d53f44988 100644 --- a/chrome/browser/process_singleton_posix.cc +++ b/chrome/browser/process_singleton_posix.cc @@ -59,6 +59,7 @@ @@ -129,7 +129,7 @@ index 14b9c99e81e0999d1a2e25557e6a731ec88f6a22..f8cf2fb4ab66dae92b80c17cdda8b984 } ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcess() { -@@ -1053,11 +1077,32 @@ bool ProcessSingleton::Create() { +@@ -1058,11 +1082,32 @@ bool ProcessSingleton::Create() { // Create the socket file somewhere in /tmp which is usually mounted as a // normal filesystem. Some network filesystems (notably AFS) are screwy and // do not support Unix domain sockets. @@ -165,7 +165,7 @@ index 14b9c99e81e0999d1a2e25557e6a731ec88f6a22..f8cf2fb4ab66dae92b80c17cdda8b984 int dir_mode = 0; CHECK(base::GetPosixFilePermissions(socket_dir_.GetPath(), &dir_mode) && diff --git a/chrome/browser/process_singleton_win.cc b/chrome/browser/process_singleton_win.cc -index b6dba0d8f1de90c88ac4457351f068f6a111e435..a0ef81d42bd9a58786b00a1601625e6822bc26f6 100644 +index 3138eaa2c1e8ed806d81445149d4f88f54d19254..27216805188c77aa45b478e66b04a2d45f92fba6 100644 --- a/chrome/browser/process_singleton_win.cc +++ b/chrome/browser/process_singleton_win.cc @@ -29,7 +29,9 @@ @@ -211,7 +211,7 @@ index b6dba0d8f1de90c88ac4457351f068f6a111e435..a0ef81d42bd9a58786b00a1601625e68 is_virtualized_(false), lock_file_(INVALID_HANDLE_VALUE), user_data_dir_(user_data_dir), -@@ -378,7 +389,7 @@ ProcessSingleton::NotifyOtherProcessOrCreate() { +@@ -381,7 +392,7 @@ ProcessSingleton::NotifyOtherProcessOrCreate() { bool ProcessSingleton::Create() { TRACE_EVENT0("startup", "ProcessSingleton::Create"); @@ -220,7 +220,7 @@ index b6dba0d8f1de90c88ac4457351f068f6a111e435..a0ef81d42bd9a58786b00a1601625e68 remote_window_ = chrome::FindRunningChromeWindow(user_data_dir_); if (!remote_window_ && !EscapeVirtualization(user_data_dir_)) { -@@ -387,7 +398,7 @@ bool ProcessSingleton::Create() { +@@ -390,7 +401,7 @@ bool ProcessSingleton::Create() { // access. As documented, it's clearer to NOT request ownership on creation // since it isn't guaranteed we will get it. It is better to create it // without ownership and explicitly get the ownership afterward. @@ -229,7 +229,7 @@ index b6dba0d8f1de90c88ac4457351f068f6a111e435..a0ef81d42bd9a58786b00a1601625e68 if (!only_me.IsValid()) { DPLOG(FATAL) << "CreateMutex failed"; return false; -@@ -426,6 +437,17 @@ bool ProcessSingleton::Create() { +@@ -429,6 +440,17 @@ bool ProcessSingleton::Create() { window_.CreateNamed(base::BindRepeating(&ProcessLaunchNotification, notification_callback_), user_data_dir_.value()); diff --git a/patches/chromium/refactor_expose_cursor_changes_to_the_webcontentsobserver.patch b/patches/chromium/refactor_expose_cursor_changes_to_the_webcontentsobserver.patch index 6dc3a6769cabbd..7387eb6fbcff8d 100644 --- a/patches/chromium/refactor_expose_cursor_changes_to_the_webcontentsobserver.patch +++ b/patches/chromium/refactor_expose_cursor_changes_to_the_webcontentsobserver.patch @@ -8,7 +8,7 @@ Chrome moved the SetCursor IPC message to mojo, which we use to tell OSR about ` Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2172779 diff --git a/content/browser/renderer_host/render_widget_host_delegate.h b/content/browser/renderer_host/render_widget_host_delegate.h -index 76acfee7bee2bc9ab25fc692a0f2485091a39da5..48cba2fbd4e86956197d7b114dcefc4bc0cd454c 100644 +index dea7ba2237cea261fe0b526753e1a9c4e355e484..9e3bf5eca5e9ad99112069a28b7fb8c1dd41aed1 100644 --- a/content/browser/renderer_host/render_widget_host_delegate.h +++ b/content/browser/renderer_host/render_widget_host_delegate.h @@ -27,6 +27,7 @@ @@ -19,7 +19,7 @@ index 76acfee7bee2bc9ab25fc692a0f2485091a39da5..48cba2fbd4e86956197d7b114dcefc4b #include "ui/gfx/native_widget_types.h" namespace blink { -@@ -288,6 +289,9 @@ class CONTENT_EXPORT RenderWidgetHostDelegate { +@@ -293,6 +294,9 @@ class CONTENT_EXPORT RenderWidgetHostDelegate { // Returns the associated RenderViewHostDelegateView*, if possible. virtual RenderViewHostDelegateView* GetDelegateView(); @@ -30,10 +30,10 @@ index 76acfee7bee2bc9ab25fc692a0f2485091a39da5..48cba2fbd4e86956197d7b114dcefc4b // RenderWidgetHost on the primary main frame, and false otherwise. virtual bool IsWidgetForPrimaryMainFrame(RenderWidgetHostImpl*); diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc -index c74c3d2bad9eaea9fe7cab4069222afc4bb77162..c0c9880221704bba85a85e841f7c2ed0ffe482d9 100644 +index ce714ed077d9e5a22b5de926408fbe6d35cc04d6..3815310c78446a3cebc61680a01a374d0295e7a3 100644 --- a/content/browser/renderer_host/render_widget_host_impl.cc +++ b/content/browser/renderer_host/render_widget_host_impl.cc -@@ -1978,6 +1978,9 @@ void RenderWidgetHostImpl::SetCursor(const ui::Cursor& cursor) { +@@ -1982,6 +1982,9 @@ void RenderWidgetHostImpl::SetCursor(const ui::Cursor& cursor) { if (view_) { view_->UpdateCursor(cursor); } @@ -44,10 +44,10 @@ index c74c3d2bad9eaea9fe7cab4069222afc4bb77162..c0c9880221704bba85a85e841f7c2ed0 void RenderWidgetHostImpl::ShowContextMenuAtPoint( diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc -index 06ca908e1668050bb87609406fa4dc9eff9b6adf..71f54a7331e1a297fac194da26337a20fbe69301 100644 +index c67be0c23f8b8d6f49ee82e1617c0f3cfee5c9ab..76d396192337ad3b3046c6eb80c14a7d4a54ac8c 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc -@@ -5484,6 +5484,11 @@ TextInputManager* WebContentsImpl::GetTextInputManager() { +@@ -5493,6 +5493,11 @@ TextInputManager* WebContentsImpl::GetTextInputManager() { return text_input_manager_.get(); } @@ -60,10 +60,10 @@ index 06ca908e1668050bb87609406fa4dc9eff9b6adf..71f54a7331e1a297fac194da26337a20 RenderWidgetHostImpl* render_widget_host) { return render_widget_host == GetPrimaryMainFrame()->GetRenderWidgetHost(); diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h -index 451f8d21ce2046382969dd0df588e831f277abf4..9a55acf3cc4da09ad7ba8944a32315d11624590f 100644 +index b17c393dd5d622130fa0bea0e74ebfc3a68b4cb3..be8fa9d6b4b72bab11b68a10fc55225cdf4f52aa 100644 --- a/content/browser/web_contents/web_contents_impl.h +++ b/content/browser/web_contents/web_contents_impl.h -@@ -1120,6 +1120,7 @@ class CONTENT_EXPORT WebContentsImpl +@@ -1122,6 +1122,7 @@ class CONTENT_EXPORT WebContentsImpl void SendScreenRects() override; void SendActiveState(bool active) override; TextInputManager* GetTextInputManager() override; diff --git a/patches/chromium/refactor_expose_file_system_access_blocklist.patch b/patches/chromium/refactor_expose_file_system_access_blocklist.patch index 5010c8ed252db4..bb6b107a161407 100644 --- a/patches/chromium/refactor_expose_file_system_access_blocklist.patch +++ b/patches/chromium/refactor_expose_file_system_access_blocklist.patch @@ -8,10 +8,10 @@ it in Electron and prevent drift from Chrome's blocklist. We should look for a w to upstream this change to Chrome. diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc b/chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc -index 50b148bc25badf4d11c084dd279a7794514e0cbb..1cf7708f4ba89778de35f6953ff03df78fc0d4a7 100644 +index c9db1ca9b650effbdf3374038fea663574b414ad..9e6843c6477b9d1034951c51d64ca1b9bfb7bb17 100644 --- a/chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc +++ b/chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc -@@ -43,7 +43,6 @@ +@@ -45,7 +45,6 @@ #include "chrome/browser/ui/file_system_access/file_system_access_dangerous_file_dialog.h" #include "chrome/browser/ui/file_system_access/file_system_access_dialogs.h" #include "chrome/browser/ui/file_system_access/file_system_access_restricted_directory_dialog.h" @@ -19,7 +19,7 @@ index 50b148bc25badf4d11c084dd279a7794514e0cbb..1cf7708f4ba89778de35f6953ff03df7 #include "chrome/grit/generated_resources.h" #include "components/content_settings/core/browser/host_content_settings_map.h" #include "components/content_settings/core/common/content_settings.h" -@@ -235,122 +234,10 @@ bool MaybeIsLocalUNCPath(const base::FilePath& path) { +@@ -239,126 +238,10 @@ bool MaybeIsLocalUNCPath(const base::FilePath& path) { } #endif @@ -97,6 +97,10 @@ index 50b148bc25badf4d11c084dd279a7794514e0cbb..1cf7708f4ba89778de35f6953ff03df7 -#if BUILDFLAG(IS_MAC) - // Similar Mac specific blocks. - {base::DIR_APP_DATA, nullptr, kBlockAllChildren}, +- // Block access to the user's Applications directory. +- {base::DIR_HOME, FILE_PATH_LITERAL("Applications"), kBlockAllChildren}, +- // Block access to the root Applications directory. +- {kNoBasePathKey, FILE_PATH_LITERAL("/Applications"), kBlockAllChildren}, - {base::DIR_HOME, FILE_PATH_LITERAL("Library"), kBlockAllChildren}, - // Allow access to other cloud files, such as Google Drive. - {base::DIR_HOME, FILE_PATH_LITERAL("Library/CloudStorage"), @@ -147,10 +151,10 @@ index 50b148bc25badf4d11c084dd279a7794514e0cbb..1cf7708f4ba89778de35f6953ff03df7 // Describes a rule for blocking a directory, which can be constructed // dynamically (based on state) or statically (from kBlockedPaths). diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permission_context.h b/chrome/browser/file_system_access/chrome_file_system_access_permission_context.h -index eaff88d9e4d14040a597b2739574231b6d2d8232..ec614eb4ad6984ebfa3e8360331db2ee8d11050d 100644 +index 67c777c9576587500f37d066689ec072ff483c8f..6390432e93d2517cf94902bd2cf66ad5ac7379f6 100644 --- a/chrome/browser/file_system_access/chrome_file_system_access_permission_context.h +++ b/chrome/browser/file_system_access/chrome_file_system_access_permission_context.h -@@ -17,12 +17,13 @@ +@@ -17,7 +17,7 @@ #include "base/time/default_clock.h" #include "chrome/browser/file_system_access/file_system_access_features.h" #include "chrome/browser/file_system_access/file_system_access_permission_request_manager.h" @@ -159,13 +163,7 @@ index eaff88d9e4d14040a597b2739574231b6d2d8232..ec614eb4ad6984ebfa3e8360331db2ee #include "components/permissions/features.h" #include "components/permissions/object_permission_context_base.h" #include "content/public/browser/file_system_access_permission_context.h" - #include "third_party/blink/public/mojom/file_system_access/file_system_access_manager.mojom-forward.h" - -+ - #if !BUILDFLAG(IS_ANDROID) - #include "chrome/browser/permissions/one_time_permissions_tracker.h" - #include "chrome/browser/permissions/one_time_permissions_tracker_observer.h" -@@ -30,7 +31,7 @@ +@@ -30,7 +30,7 @@ #include "chrome/browser/web_applications/web_app_install_manager_observer.h" #endif @@ -174,13 +172,13 @@ index eaff88d9e4d14040a597b2739574231b6d2d8232..ec614eb4ad6984ebfa3e8360331db2ee #include "components/enterprise/common/files_scan_data.h" #endif -@@ -338,6 +339,123 @@ class ChromeFileSystemAccessPermissionContext +@@ -333,6 +333,127 @@ class ChromeFileSystemAccessPermissionContext // KeyedService: void Shutdown() override; + // Sentinel used to indicate that no PathService key is specified for a path in + // the struct below. -+ static constexpr int kNoBasePathKey = -1; ++ static constexpr const int kNoBasePathKey = -1; + + enum BlockType { + kBlockAllChildren, @@ -252,24 +250,28 @@ index eaff88d9e4d14040a597b2739574231b6d2d8232..ec614eb4ad6984ebfa3e8360331db2ee + #if BUILDFLAG(IS_MAC) + // Similar Mac specific blocks. + {base::DIR_APP_DATA, nullptr, kBlockAllChildren}, ++ // Block access to the user's Applications directory. ++ {base::DIR_HOME, FILE_PATH_LITERAL("Applications"), kBlockAllChildren}, ++ // Block access to the root Applications directory. ++ {kNoBasePathKey, FILE_PATH_LITERAL("/Applications"), kBlockAllChildren}, + {base::DIR_HOME, FILE_PATH_LITERAL("Library"), kBlockAllChildren}, + // Allow access to other cloud files, such as Google Drive. + {base::DIR_HOME, FILE_PATH_LITERAL("Library/CloudStorage"), -+ kDontBlockChildren}, ++ kDontBlockChildren}, + // Allow the site to interact with data from its corresponding natively + // installed (sandboxed) application. It would be nice to limit a site to + // access only _its_ corresponding natively installed application, + // but unfortunately there's no straightforward way to do that. See + // https://crbug.com/984641#c22. + {base::DIR_HOME, FILE_PATH_LITERAL("Library/Containers"), -+ kDontBlockChildren}, ++ kDontBlockChildren}, + // Allow access to iCloud files... + {base::DIR_HOME, FILE_PATH_LITERAL("Library/Mobile Documents"), -+ kDontBlockChildren}, ++ kDontBlockChildren}, + // ... which may also appear at this directory. + {base::DIR_HOME, -+ FILE_PATH_LITERAL("Library/Mobile Documents/com~apple~CloudDocs"), -+ kDontBlockChildren}, ++ FILE_PATH_LITERAL("Library/Mobile Documents/com~apple~CloudDocs"), ++ kDontBlockChildren}, + #endif + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) + // On Linux also block access to devices via /dev. @@ -298,12 +300,12 @@ index eaff88d9e4d14040a597b2739574231b6d2d8232..ec614eb4ad6984ebfa3e8360331db2ee protected: SEQUENCE_CHECKER(sequence_checker_); -@@ -357,7 +475,7 @@ class ChromeFileSystemAccessPermissionContext +@@ -352,7 +473,7 @@ class ChromeFileSystemAccessPermissionContext void PermissionGrantDestroyed(PermissionGrantImpl* grant); -#if BUILDFLAG(ENTERPRISE_CLOUD_CONTENT_ANALYSIS) +#if 0 void OnContentAnalysisComplete( - std::vector entries, + std::vector entries, EntriesAllowedByEnterprisePolicyCallback callback, diff --git a/patches/chromium/resource_file_conflict.patch b/patches/chromium/resource_file_conflict.patch index b9b6e586a55424..810545228d21b5 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 80026f59664bc242e7f59d1066dd58fb8297eae4..b1c18a03ccd05609cd65de028b9861c6c9a71568 100644 +index e2d2446670d358346b5c7399596625087627d5e4..f40c70d840845fdb6171ab6ba4cdcf92dbfd9965 100644 --- a/chrome/BUILD.gn +++ b/chrome/BUILD.gn @@ -1560,7 +1560,7 @@ if (is_chrome_branded && !is_android) { diff --git a/patches/chromium/scroll_bounce_flag.patch b/patches/chromium/scroll_bounce_flag.patch index 41347162429bc4..ebf9cb9cbadfff 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 1a13fc3eb336211cb6fac83c3b3475aaaf1f72fb..b883b8c508168f5a9d1d847d45627a6d889cfe1f 100644 +index b60da2ae38f80f41a938629ba3d1de19a5afde4f..b92ad04c7cd91546a669eaf8e5f627536eda496f 100644 --- a/content/renderer/render_thread_impl.cc +++ b/content/renderer/render_thread_impl.cc @@ -1276,7 +1276,7 @@ bool RenderThreadImpl::IsLcdTextEnabled() { diff --git a/patches/chromium/support_mixed_sandbox_with_zygote.patch b/patches/chromium/support_mixed_sandbox_with_zygote.patch index c2b202d6bf4544..c4724df0ce1a89 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 418268589bc912bb19c61f0914985a448a8907e8..6bc6858fffaf0ad2024ee60cf508dfbbe2085cef 100644 +index aa6d50c94b28e3a3191acc9a12617205a1c797a9..513eaeb291806f7a3bb6230cb63f17780c103cdc 100644 --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc -@@ -1753,6 +1753,10 @@ bool RenderProcessHostImpl::Init() { +@@ -1755,6 +1755,10 @@ bool RenderProcessHostImpl::Init() { std::unique_ptr sandbox_delegate = std::make_unique( *cmd_line, IsPdf(), IsJitDisabled()); diff --git a/patches/chromium/web_contents.patch b/patches/chromium/web_contents.patch index 2ab782baea396d..ee28bdc91eee00 100644 --- a/patches/chromium/web_contents.patch +++ b/patches/chromium/web_contents.patch @@ -9,10 +9,10 @@ is needed for OSR. Originally landed in https://github.com/electron/libchromiumcontent/pull/226. diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc -index ab2d3da2c61d42976b5d6f2460ddf4bea53c9af4..1ee18d8631e435c5941612ebc3ce71a1b98d71e4 100644 +index cc2e4302ad121d658bb43af1014b6af42a62d47a..2585728e652de91cbc9839cb1500e04f87635866 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc -@@ -3650,6 +3650,13 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, +@@ -3651,6 +3651,13 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, params.main_frame_name, GetOpener(), primary_main_frame_policy, base::UnguessableToken::Create()); @@ -26,7 +26,7 @@ index ab2d3da2c61d42976b5d6f2460ddf4bea53c9af4..1ee18d8631e435c5941612ebc3ce71a1 std::unique_ptr delegate = GetContentClient()->browser()->GetWebContentsViewDelegate(this); -@@ -3660,6 +3667,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, +@@ -3661,6 +3668,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, view_ = CreateWebContentsView(this, std::move(delegate), &render_view_host_delegate_view_); } diff --git a/patches/chromium/webview_fullscreen.patch b/patches/chromium/webview_fullscreen.patch index f1ac6e349c0260..402b77ebea9022 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 e0708cae6968c14f912bac9c8c7ff90344454237..f4bee04daf1ac7c6af12e7cadc7f45d42312a712 100644 +index f737902ba9a5ff5b98940eca4a8e7c057c64b3bd..8abcf9d0bf63496692408464ca5e5a3ede9dac4b 100644 --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc -@@ -8219,6 +8219,17 @@ void RenderFrameHostImpl::EnterFullscreen( +@@ -8230,6 +8230,17 @@ void RenderFrameHostImpl::EnterFullscreen( } } @@ -37,10 +37,10 @@ index e0708cae6968c14f912bac9c8c7ff90344454237..f4bee04daf1ac7c6af12e7cadc7f45d4 if (had_fullscreen_token && !GetView()->HasFocus()) GetView()->Focus(); diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc -index 1ee18d8631e435c5941612ebc3ce71a1b98d71e4..d09320ddcb75d93de990f0ec3963edb6b6b793fe 100644 +index 2585728e652de91cbc9839cb1500e04f87635866..5ee493c16d2ff59438c2e233f7e30d796711ee06 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc -@@ -3906,21 +3906,25 @@ KeyboardEventProcessingResult WebContentsImpl::PreHandleKeyboardEvent( +@@ -3907,21 +3907,25 @@ KeyboardEventProcessingResult WebContentsImpl::PreHandleKeyboardEvent( const input::NativeWebKeyboardEvent& event) { OPTIONAL_TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("content.verbose"), "WebContentsImpl::PreHandleKeyboardEvent"); @@ -78,7 +78,7 @@ index 1ee18d8631e435c5941612ebc3ce71a1b98d71e4..d09320ddcb75d93de990f0ec3963edb6 } bool WebContentsImpl::HandleMouseEvent(const blink::WebMouseEvent& event) { -@@ -4079,7 +4083,7 @@ void WebContentsImpl::EnterFullscreenMode( +@@ -4080,7 +4084,7 @@ void WebContentsImpl::EnterFullscreenMode( OPTIONAL_TRACE_EVENT0("content", "WebContentsImpl::EnterFullscreenMode"); DCHECK(CanEnterFullscreenMode(requesting_frame)); DCHECK(requesting_frame->IsActive()); 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 8c3fa4296f2d5b..b7fd012a534ede 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 29e096c4d3c495f62422c5ae7f40a4aa46f27ff7..902179094cce6a4d296f5e026281626697970d76 100644 +index 978092dea5d6c1a62807f2454c359ff9780d4d92..53d57818eb7dc41d02a3d004716ed114ac3bc526 100644 --- a/front_end/entrypoints/main/MainImpl.ts +++ b/front_end/entrypoints/main/MainImpl.ts -@@ -762,6 +762,8 @@ export class MainImpl { +@@ -767,6 +767,8 @@ export class MainImpl { globalThis.Main = globalThis.Main || {}; // @ts-ignore Exported for Tests.js globalThis.Main.Main = MainImpl; diff --git a/patches/node/.patches b/patches/node/.patches index 28a98a016f7f7d..abdfda54fa2c38 100644 --- a/patches/node/.patches +++ b/patches/node/.patches @@ -54,3 +54,4 @@ build_compile_with_c_20_support.patch add_v8_taskpirority_to_foreground_task_runner_signature.patch cli_remove_deprecated_v8_flag.patch build_restore_clang_as_default_compiler_on_macos.patch +esm_drop_support_for_import_assertions.patch diff --git a/patches/node/build_add_gn_build_files.patch b/patches/node/build_add_gn_build_files.patch index acb84c4f2c163a..6197fab91190d0 100644 --- a/patches/node/build_add_gn_build_files.patch +++ b/patches/node/build_add_gn_build_files.patch @@ -2386,10 +2386,10 @@ index 0000000000000000000000000000000000000000..37c16859003e61636fe2f1a4040b1e90 + f.write('\n') diff --git a/tools/generate_original_fs.py b/tools/generate_original_fs.py new file mode 100644 -index 0000000000000000000000000000000000000000..9be3ac447f9a4dde23fefc26e0b922b4ba88f083 +index 0000000000000000000000000000000000000000..5259e6a7a1fd6b21df69dc461dee67d95800c2c8 --- /dev/null +++ b/tools/generate_original_fs.py -@@ -0,0 +1,19 @@ +@@ -0,0 +1,18 @@ +import os +import sys + @@ -2408,7 +2408,6 @@ index 0000000000000000000000000000000000000000..9be3ac447f9a4dde23fefc26e0b922b4 + with open(os.path.join(out_dir, original_fs_file), 'w') as transformed_f: + transformed_contents = contents.replace('internal/fs/', 'internal/original-fs/').replace('require(\'fs', 'require(\'original-fs') + transformed_f.write(transformed_contents) -+ diff --git a/tools/install.py b/tools/install.py index b132c7bf26c02886a7ab341a1973bf449744ba0f..757e3e60a7be01fac55c5fbb010dbbae00b1bfca 100755 --- a/tools/install.py diff --git a/patches/node/esm_drop_support_for_import_assertions.patch b/patches/node/esm_drop_support_for_import_assertions.patch new file mode 100644 index 00000000000000..ff45e7c9903bb5 --- /dev/null +++ b/patches/node/esm_drop_support_for_import_assertions.patch @@ -0,0 +1,53 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= +Date: Fri, 19 Apr 2024 02:01:24 +0200 +Subject: esm: drop support for import assertions + +This patch removes support for the `assert` keyword +for import attributes. It was an old variant of the +proposal that was only shipped in V8 and no other +engine, and that has then been replaced by the `with` +keyword. + +Chrome is planning to remove support for `assert` +in version 126, which will be released in June. + +Node.js already supports the `with` keyword for +import attributes, and this patch does not change that. + +PR-URL: https://github.com/nodejs/node/pull/52104 +Reviewed-By: Matteo Collina +Reviewed-By: Joyee Cheung +Reviewed-By: Yagiz Nizipli +Reviewed-By: Ethan Arrowood +Reviewed-By: Geoffrey Booth +(cherry picked from commit 25c79f333104d1feb0d84794d5bcdb4227177c9b) + +esm: remove --no-import-harmony-assertions + +It is off by default now. + +PR-URL: https://github.com/nodejs/node/pull/54890 +Reviewed-By: Luigi Pinca +Reviewed-By: Yagiz Nizipli +Reviewed-By: Antoine du Hamel +Reviewed-By: James M Snell +(cherry picked from commit 8fd90938f923ef2a04bb3ebb08b89568fe6fd4ee) + +diff --git a/src/node.cc b/src/node.cc +index 9f6f8e53abd7e447d88c187c447431a0d96cd150..4415f18ecbd84c1f41e0febbf2446fb636242d58 100644 +--- a/src/node.cc ++++ b/src/node.cc +@@ -778,12 +778,6 @@ static ExitCode ProcessGlobalArgsInternal(std::vector* args, + return ExitCode::kInvalidCommandLineArgument2; + } + +- // TODO(aduh95): remove this when the harmony-import-assertions flag +- // is removed in V8. +- if (std::find(v8_args.begin(), v8_args.end(), +- "--no-harmony-import-assertions") == v8_args.end()) { +- v8_args.emplace_back("--harmony-import-assertions"); +- } + // TODO(aduh95): remove this when the harmony-import-attributes flag + // is removed in V8. + if (std::find(v8_args.begin(), diff --git a/patches/v8/deps_add_v8_object_setinternalfieldfornodecore.patch b/patches/v8/deps_add_v8_object_setinternalfieldfornodecore.patch index c06d7cfce454bf..dad74986422e8b 100644 --- a/patches/v8/deps_add_v8_object_setinternalfieldfornodecore.patch +++ b/patches/v8/deps_add_v8_object_setinternalfieldfornodecore.patch @@ -11,7 +11,7 @@ This is a non-ABI breaking solution added by Node.js in v20.x for: which are necessary for backporting the vm-related memory fixes in https://github.com/nodejs/node/pull/48510. diff --git a/include/v8-object.h b/include/v8-object.h -index 71a6c2c9c149116caa410d25aef4087774b81b44..ad8416ea2500f10aad31f25da96b235f4e9c118f 100644 +index 3e57ae8efe33f326ef0e5d609c311d4be5b8afd6..dc521d39c2280dfc3217e97c1e413b2be9b4f7ff 100644 --- a/include/v8-object.h +++ b/include/v8-object.h @@ -22,6 +22,8 @@ class Function; @@ -46,10 +46,10 @@ index 71a6c2c9c149116caa410d25aef4087774b81b44..ad8416ea2500f10aad31f25da96b235f V8_INLINE static void* GetAlignedPointerFromInternalField( const BasicTracedReference& object, int index) { diff --git a/src/api/api.cc b/src/api/api.cc -index 4adaabebe6bd804db0910cea6ff090ef86cb74fc..27e307c774c09ca1c8f2c72d5b3629dd336760a2 100644 +index 29dd26037bc9ce4c21f421cba32bc3077bb064d2..674b5c7efb35be2ee0935cae89eac70cc835d448 100644 --- a/src/api/api.cc +++ b/src/api/api.cc -@@ -6398,14 +6398,33 @@ Local v8::Object::SlowGetInternalField(int index) { +@@ -6406,14 +6406,33 @@ Local v8::Object::SlowGetInternalField(int index) { i::Cast(*obj)->GetEmbedderField(index), isolate)); } diff --git a/shell/browser/file_system_access/file_system_access_permission_context.cc b/shell/browser/file_system_access/file_system_access_permission_context.cc index 45945f5b4ec3ae..8f3502963bf026 100644 --- a/shell/browser/file_system_access/file_system_access_permission_context.cc +++ b/shell/browser/file_system_access/file_system_access_permission_context.cc @@ -92,6 +92,7 @@ const char kDefaultLastPickedDirectoryKey[] = "default-id"; const char kCustomLastPickedDirectoryKey[] = "custom-id"; const char kPathKey[] = "path"; const char kPathTypeKey[] = "path-type"; +const char kDisplayNameKey[] = "display-name"; const char kTimestampKey[] = "timestamp"; constexpr base::TimeDelta kPermissionRevocationTimeout = base::Seconds(5); @@ -210,6 +211,10 @@ std::string GenerateLastPickedDirectoryKey(const std::string& id) { : base::StrCat({kCustomLastPickedDirectoryKey, "-", id}); } +std::string StringOrEmpty(const std::string* s) { + return s ? *s : std::string(); +} + } // namespace namespace electron { @@ -219,7 +224,7 @@ class FileSystemAccessPermissionContext::PermissionGrantImpl public: PermissionGrantImpl(base::WeakPtr context, const url::Origin& origin, - const base::FilePath& path, + const content::PathInfo& path_info, HandleType handle_type, GrantType type, UserAction user_action) @@ -227,7 +232,7 @@ class FileSystemAccessPermissionContext::PermissionGrantImpl origin_{origin}, handle_type_{handle_type}, type_{type}, - path_{path} {} + path_info_{path_info} {} // FileSystemAccessPermissionGrant: PermissionStatus GetStatus() override { @@ -237,7 +242,12 @@ class FileSystemAccessPermissionContext::PermissionGrantImpl base::FilePath GetPath() override { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - return path_; + return path_info_.path; + } + + std::string GetDisplayName() override { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + return path_info_.display_name; } void RequestPermission( @@ -311,7 +321,7 @@ class FileSystemAccessPermissionContext::PermissionGrantImpl electron::WebContentsPermissionHelper::PermissionType::FILE_SYSTEM); base::Value::Dict details; - details.Set("filePath", base::FilePathToValue(path_)); + details.Set("filePath", base::FilePathToValue(path_info_.path)); details.Set("isDirectory", handle_type_ == HandleType::kDirectory); details.Set("fileAccessType", type_ == GrantType::kWrite ? "writable" : "readable"); @@ -350,12 +360,13 @@ class FileSystemAccessPermissionContext::PermissionGrantImpl static void UpdateGrantPath( std::map& grants, - const base::FilePath& old_path, - const base::FilePath& new_path) { + const content::PathInfo& old_path, + const content::PathInfo& new_path) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - auto entry_it = std::ranges::find_if( - grants, - [&old_path](const auto& entry) { return entry.first == old_path; }); + auto entry_it = + std::ranges::find_if(grants, [&old_path](const auto& entry) { + return entry.first == old_path.path; + }); if (entry_it == grants.end()) { // There must be an entry for an ancestor of this entry. Nothing to do @@ -370,7 +381,7 @@ class FileSystemAccessPermissionContext::PermissionGrantImpl // Update the permission grant's key in the map of active permissions. grants.erase(entry_it); - grants.emplace(new_path, grant_impl); + grants.emplace(new_path.path, grant_impl); } protected: @@ -396,13 +407,13 @@ class FileSystemAccessPermissionContext::PermissionGrantImpl } } - void SetPath(const base::FilePath& new_path) { + void SetPath(const content::PathInfo& new_path) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - if (path_ == new_path) + if (path_info_ == new_path) return; - path_ = new_path; + path_info_ = new_path; NotifyPermissionStatusChanged(); } @@ -412,7 +423,7 @@ class FileSystemAccessPermissionContext::PermissionGrantImpl const url::Origin origin_; const HandleType handle_type_; const GrantType type_; - base::FilePath path_; + content::PathInfo path_info_; // This member should only be updated via SetStatus(). PermissionStatus status_ = PermissionStatus::ASK; @@ -440,14 +451,14 @@ FileSystemAccessPermissionContext::~FileSystemAccessPermissionContext() = scoped_refptr FileSystemAccessPermissionContext::GetReadPermissionGrant( const url::Origin& origin, - const base::FilePath& path, + const content::PathInfo& path_info, HandleType handle_type, UserAction user_action) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); // operator[] might insert a new OriginState in |active_permissions_map_|, // but that is exactly what we want. auto& origin_state = active_permissions_map_[origin]; - auto*& existing_grant = origin_state.read_grants[path]; + auto*& existing_grant = origin_state.read_grants[path_info.path]; scoped_refptr new_grant; if (existing_grant && existing_grant->handle_type() != handle_type) { @@ -460,15 +471,15 @@ FileSystemAccessPermissionContext::GetReadPermissionGrant( if (!existing_grant) { new_grant = base::MakeRefCounted( - weak_factory_.GetWeakPtr(), origin, path, handle_type, GrantType::kRead, - user_action); + weak_factory_.GetWeakPtr(), origin, path_info, handle_type, + GrantType::kRead, user_action); existing_grant = new_grant.get(); } // If a parent directory is already readable this new grant should also be // readable. if (new_grant && - AncestorHasActivePermission(origin, path, GrantType::kRead)) { + AncestorHasActivePermission(origin, path_info.path, GrantType::kRead)) { existing_grant->SetStatus(PermissionStatus::GRANTED); } else { switch (user_action) { @@ -495,14 +506,14 @@ FileSystemAccessPermissionContext::GetReadPermissionGrant( scoped_refptr FileSystemAccessPermissionContext::GetWritePermissionGrant( const url::Origin& origin, - const base::FilePath& path, + const content::PathInfo& path_info, HandleType handle_type, UserAction user_action) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); // operator[] might insert a new OriginState in |active_permissions_map_|, // but that is exactly what we want. auto& origin_state = active_permissions_map_[origin]; - auto*& existing_grant = origin_state.write_grants[path]; + auto*& existing_grant = origin_state.write_grants[path_info.path]; scoped_refptr new_grant; if (existing_grant && existing_grant->handle_type() != handle_type) { @@ -515,7 +526,7 @@ FileSystemAccessPermissionContext::GetWritePermissionGrant( if (!existing_grant) { new_grant = base::MakeRefCounted( - weak_factory_.GetWeakPtr(), origin, path, handle_type, + weak_factory_.GetWeakPtr(), origin, path_info, handle_type, GrantType::kWrite, user_action); existing_grant = new_grant.get(); } @@ -523,7 +534,7 @@ FileSystemAccessPermissionContext::GetWritePermissionGrant( // If a parent directory is already writable this new grant should also be // writable. if (new_grant && - AncestorHasActivePermission(origin, path, GrantType::kWrite)) { + AncestorHasActivePermission(origin, path_info.path, GrantType::kWrite)) { existing_grant->SetStatus(PermissionStatus::GRANTED); } else { switch (user_action) { @@ -563,8 +574,7 @@ bool FileSystemAccessPermissionContext::CanObtainWritePermission( void FileSystemAccessPermissionContext::ConfirmSensitiveEntryAccess( const url::Origin& origin, - PathType path_type, - const base::FilePath& path, + const content::PathInfo& path_info, HandleType handle_type, UserAction user_action, content::GlobalRenderFrameHostId frame_id, @@ -574,14 +584,13 @@ void FileSystemAccessPermissionContext::ConfirmSensitiveEntryAccess( auto after_blocklist_check_callback = base::BindOnce( &FileSystemAccessPermissionContext::DidCheckPathAgainstBlocklist, - GetWeakPtr(), origin, path, handle_type, user_action, frame_id); - CheckPathAgainstBlocklist(path_type, path, handle_type, + GetWeakPtr(), origin, path_info, handle_type, user_action, frame_id); + CheckPathAgainstBlocklist(path_info, handle_type, std::move(after_blocklist_check_callback)); } void FileSystemAccessPermissionContext::CheckPathAgainstBlocklist( - PathType path_type, - const base::FilePath& path, + const content::PathInfo& path_info, HandleType handle_type, base::OnceCallback callback) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); @@ -590,7 +599,7 @@ void FileSystemAccessPermissionContext::CheckPathAgainstBlocklist( // blocked directories based on that, but that doesn't work well. Instead we // should have a separate Chrome OS only code path to block for example the // root of certain external file systems. - if (path_type == PathType::kExternal) { + if (path_info.type == content::PathType::kExternal) { std::move(callback).Run(/*should_block=*/false); return; } @@ -601,7 +610,8 @@ void FileSystemAccessPermissionContext::CheckPathAgainstBlocklist( base::ThreadPool::PostTaskAndReplyWithResult( FROM_HERE, {base::MayBlock(), base::TaskPriority::USER_VISIBLE}, - base::BindOnce(&ShouldBlockAccessToPath, path, handle_type, extra_rules), + base::BindOnce(&ShouldBlockAccessToPath, path_info.path, handle_type, + extra_rules), std::move(callback)); } @@ -628,7 +638,7 @@ void FileSystemAccessPermissionContext::OnRestrictedPathResult( void FileSystemAccessPermissionContext::DidCheckPathAgainstBlocklist( const url::Origin& origin, - const base::FilePath& path, + const content::PathInfo& path_info, HandleType handle_type, UserAction user_action, content::GlobalRenderFrameHostId frame_id, @@ -650,7 +660,7 @@ void FileSystemAccessPermissionContext::DidCheckPathAgainstBlocklist( gin::DataObjectBuilder(isolate) .Set("origin", origin.GetURL().spec()) .Set("isDirectory", handle_type == HandleType::kDirectory) - .Set("path", path) + .Set("path", path_info.path) .Build(); session->Emit( "file-system-access-restricted", details, @@ -699,14 +709,14 @@ void FileSystemAccessPermissionContext::MaybeEvictEntries( void FileSystemAccessPermissionContext::SetLastPickedDirectory( const url::Origin& origin, const std::string& id, - const base::FilePath& path, - const PathType type) { + const content::PathInfo& path_info) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); // Create an entry into the nested dictionary. base::Value::Dict entry; - entry.Set(kPathKey, base::FilePathToValue(path)); - entry.Set(kPathTypeKey, static_cast(type)); + entry.Set(kPathKey, base::FilePathToValue(path_info.path)); + entry.Set(kPathTypeKey, static_cast(path_info.type)); + entry.Set(kDisplayNameKey, path_info.display_name); entry.Set(kTimestampKey, base::TimeToValue(clock_->Now())); auto it = id_pathinfo_map_.find(origin); @@ -722,15 +732,14 @@ void FileSystemAccessPermissionContext::SetLastPickedDirectory( } } -FileSystemAccessPermissionContext::PathInfo -FileSystemAccessPermissionContext::GetLastPickedDirectory( +content::PathInfo FileSystemAccessPermissionContext::GetLastPickedDirectory( const url::Origin& origin, const std::string& id) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); auto it = id_pathinfo_map_.find(origin); - PathInfo path_info; + content::PathInfo path_info; if (it == id_pathinfo_map_.end()) { return path_info; } @@ -740,13 +749,14 @@ FileSystemAccessPermissionContext::GetLastPickedDirectory( return path_info; } - auto type_int = - entry->FindInt(kPathTypeKey).value_or(static_cast(PathType::kLocal)); - path_info.type = type_int == static_cast(PathType::kExternal) - ? PathType::kExternal - : PathType::kLocal; + auto type_int = entry->FindInt(kPathTypeKey) + .value_or(static_cast(content::PathType::kLocal)); + path_info.type = type_int == static_cast(content::PathType::kExternal) + ? content::PathType::kExternal + : content::PathType::kLocal; path_info.path = base::ValueToFilePath(entry->Find(kPathKey)).value_or(base::FilePath()); + path_info.display_name = StringOrEmpty(entry->FindString(kDisplayNameKey)); return path_info; } @@ -812,8 +822,8 @@ std::u16string FileSystemAccessPermissionContext::GetPickerTitle( void FileSystemAccessPermissionContext::NotifyEntryMoved( const url::Origin& origin, - const base::FilePath& old_path, - const base::FilePath& new_path) { + const content::PathInfo& old_path, + const content::PathInfo& new_path) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (old_path == new_path) { @@ -834,7 +844,7 @@ void FileSystemAccessPermissionContext::OnFileCreatedFromShowSaveFilePicker( const storage::FileSystemURL& url) {} void FileSystemAccessPermissionContext::CheckPathsAgainstEnterprisePolicy( - std::vector entries, + std::vector entries, content::GlobalRenderFrameHostId frame_id, EntriesAllowedByEnterprisePolicyCallback callback) { std::move(callback).Run(std::move(entries)); diff --git a/shell/browser/file_system_access/file_system_access_permission_context.h b/shell/browser/file_system_access/file_system_access_permission_context.h index c9a63d14a41a45..f12a8747c8e8e5 100644 --- a/shell/browser/file_system_access/file_system_access_permission_context.h +++ b/shell/browser/file_system_access/file_system_access_permission_context.h @@ -53,20 +53,19 @@ class FileSystemAccessPermissionContext // content::FileSystemAccessPermissionContext: scoped_refptr GetReadPermissionGrant(const url::Origin& origin, - const base::FilePath& path, + const content::PathInfo& path, HandleType handle_type, UserAction user_action) override; scoped_refptr GetWritePermissionGrant(const url::Origin& origin, - const base::FilePath& path, + const content::PathInfo& path, HandleType handle_type, UserAction user_action) override; void ConfirmSensitiveEntryAccess( const url::Origin& origin, - PathType path_type, - const base::FilePath& path, + const content::PathInfo& path, HandleType handle_type, UserAction user_action, content::GlobalRenderFrameHostId frame_id, @@ -85,11 +84,10 @@ class FileSystemAccessPermissionContext void SetLastPickedDirectory(const url::Origin& origin, const std::string& id, - const base::FilePath& path, - const PathType type) override; + const content::PathInfo& path) override; - PathInfo GetLastPickedDirectory(const url::Origin& origin, - const std::string& id) override; + content::PathInfo GetLastPickedDirectory(const url::Origin& origin, + const std::string& id) override; base::FilePath GetWellKnownDirectoryPath( blink::mojom::WellKnownDirectory directory, @@ -99,15 +97,15 @@ class FileSystemAccessPermissionContext const blink::mojom::FilePickerOptionsPtr& options) override; void NotifyEntryMoved(const url::Origin& origin, - const base::FilePath& old_path, - const base::FilePath& new_path) override; + const content::PathInfo& old_path, + const content::PathInfo& new_path) override; void OnFileCreatedFromShowSaveFilePicker( const GURL& file_picker_binding_context, const storage::FileSystemURL& url) override; void CheckPathsAgainstEnterprisePolicy( - std::vector entries, + std::vector entries, content::GlobalRenderFrameHostId frame_id, EntriesAllowedByEnterprisePolicyCallback callback) override; @@ -135,12 +133,11 @@ class FileSystemAccessPermissionContext void PermissionGrantDestroyed(PermissionGrantImpl* grant); - void CheckPathAgainstBlocklist(PathType path_type, - const base::FilePath& path, + void CheckPathAgainstBlocklist(const content::PathInfo& path, HandleType handle_type, base::OnceCallback callback); void DidCheckPathAgainstBlocklist(const url::Origin& origin, - const base::FilePath& path, + const content::PathInfo& path, HandleType handle_type, UserAction user_action, content::GlobalRenderFrameHostId frame_id, diff --git a/shell/browser/notifications/win/notification_presenter_win.cc b/shell/browser/notifications/win/notification_presenter_win.cc index a332517e815e2c..073bd19e67d0bb 100644 --- a/shell/browser/notifications/win/notification_presenter_win.cc +++ b/shell/browser/notifications/win/notification_presenter_win.cc @@ -32,11 +32,12 @@ bool IsDebuggingNotifications() { } bool SaveIconToPath(const SkBitmap& bitmap, const base::FilePath& path) { - std::vector png_data; - if (!gfx::PNGCodec::EncodeBGRASkBitmap(bitmap, false, &png_data)) + std::optional> png_data = + gfx::PNGCodec::EncodeBGRASkBitmap(bitmap, false); + if (!png_data.has_value()) return false; - return base::WriteFile(path, png_data); + return base::WriteFile(path, png_data.value()); } } // namespace diff --git a/shell/common/api/electron_api_clipboard.cc b/shell/common/api/electron_api_clipboard.cc index 32be2805969ad8..72d816bea855a7 100644 --- a/shell/common/api/electron_api_clipboard.cc +++ b/shell/common/api/electron_api_clipboard.cc @@ -244,8 +244,7 @@ gfx::Image Clipboard::ReadImage(gin_helper::Arguments* args) { base::BindOnce( [](std::optional* image, base::RepeatingClosure cb, const std::vector& result) { - SkBitmap bitmap; - gfx::PNGCodec::Decode(result.data(), result.size(), &bitmap); + SkBitmap bitmap = gfx::PNGCodec::Decode(result); image->emplace(gfx::Image::CreateFrom1xBitmap(bitmap)); std::move(cb).Run(); }, diff --git a/shell/common/api/electron_api_native_image.cc b/shell/common/api/electron_api_native_image.cc index dc02006b195aec..ce3fa8a93e10ef 100644 --- a/shell/common/api/electron_api_native_image.cc +++ b/shell/common/api/electron_api_native_image.cc @@ -238,10 +238,12 @@ v8::Local NativeImage::ToPNG(gin::Arguments* args) { const SkBitmap bitmap = image_.AsImageSkia().GetRepresentation(scale_factor).GetBitmap(); - std::vector encoded; - gfx::PNGCodec::EncodeBGRASkBitmap(bitmap, false, &encoded); - const char* data = reinterpret_cast(encoded.data()); - size_t size = encoded.size(); + std::optional> encoded = + gfx::PNGCodec::EncodeBGRASkBitmap(bitmap, false); + if (!encoded.has_value()) + return node::Buffer::New(args->isolate(), 0).ToLocalChecked(); + const char* data = reinterpret_cast(encoded->data()); + size_t size = encoded->size(); return node::Buffer::Copy(args->isolate(), data, size).ToLocalChecked(); } @@ -265,13 +267,13 @@ v8::Local NativeImage::ToBitmap(gin::Arguments* args) { } v8::Local NativeImage::ToJPEG(v8::Isolate* isolate, int quality) { - std::vector output; - gfx::JPEG1xEncodedDataFromImage(image_, quality, &output); - if (output.empty()) + std::optional> encoded_image = + gfx::JPEG1xEncodedDataFromImage(image_, quality); + if (!encoded_image.has_value()) return node::Buffer::New(isolate, 0).ToLocalChecked(); - return node::Buffer::Copy(isolate, - reinterpret_cast(&output.front()), - output.size()) + return node::Buffer::Copy( + isolate, reinterpret_cast(&encoded_image->front()), + encoded_image->size()) .ToLocalChecked(); } diff --git a/shell/common/gin_converters/content_converter.cc b/shell/common/gin_converters/content_converter.cc index 3dc67893685839..8629ce98c23e43 100644 --- a/shell/common/gin_converters/content_converter.cc +++ b/shell/common/gin_converters/content_converter.cc @@ -21,28 +21,31 @@ #include "shell/common/gin_helper/dictionary.h" #include "third_party/blink/public/common/context_menu_data/untrustworthy_context_menu_params.h" #include "third_party/blink/public/mojom/permissions/permission_status.mojom.h" +#include "ui/base/mojom/menu_source_type.mojom.h" #include "ui/events/keycodes/dom/keycode_converter.h" #include "ui/events/keycodes/keyboard_code_conversion.h" namespace gin { static constexpr auto MenuSourceTypes = - base::MakeFixedFlatMap({ - {"adjustSelection", ui::MENU_SOURCE_ADJUST_SELECTION}, - {"adjustSelectionReset", ui::MENU_SOURCE_ADJUST_SELECTION_RESET}, - {"keyboard", ui::MENU_SOURCE_KEYBOARD}, - {"longPress", ui::MENU_SOURCE_LONG_PRESS}, - {"longTap", ui::MENU_SOURCE_LONG_TAP}, - {"mouse", ui::MENU_SOURCE_MOUSE}, - {"none", ui::MENU_SOURCE_NONE}, - {"stylus", ui::MENU_SOURCE_STYLUS}, - {"touch", ui::MENU_SOURCE_TOUCH}, - {"touchHandle", ui::MENU_SOURCE_TOUCH_HANDLE}, - {"touchMenu", ui::MENU_SOURCE_TOUCH_EDIT_MENU}, + base::MakeFixedFlatMap({ + {"adjustSelection", ui::mojom::MenuSourceType::kAdjustSelection}, + {"adjustSelectionReset", + ui::mojom::MenuSourceType::kAdjustSelectionReset}, + {"keyboard", ui::mojom::MenuSourceType::kKeyboard}, + {"longPress", ui::mojom::MenuSourceType::kLongPress}, + {"longTap", ui::mojom::MenuSourceType::kLongTap}, + {"mouse", ui::mojom::MenuSourceType::kMouse}, + {"none", ui::mojom::MenuSourceType::kNone}, + {"stylus", ui::mojom::MenuSourceType::kStylus}, + {"touch", ui::mojom::MenuSourceType::kTouch}, + {"touchHandle", ui::mojom::MenuSourceType::kTouchHandle}, + {"touchMenu", ui::mojom::MenuSourceType::kTouchEditMenu}, }); // let us know when upstream changes & we need to update MenuSourceTypes -static_assert(std::size(MenuSourceTypes) == ui::MENU_SOURCE_TYPE_LAST + 1U); +static_assert(std::size(MenuSourceTypes) == + static_cast(ui::mojom::MenuSourceType::kMaxValue) + 1); // static v8::Local Converter::ToV8( diff --git a/shell/common/skia_util.cc b/shell/common/skia_util.cc index b80b1c53f8ba33..9e37c54053430c 100644 --- a/shell/common/skia_util.cc +++ b/shell/common/skia_util.cc @@ -58,8 +58,8 @@ float GetScaleFactorFromPath(const base::FilePath& path) { bool AddImageSkiaRepFromPNG(gfx::ImageSkia* image, const base::span data, double scale_factor) { - SkBitmap bitmap; - if (!gfx::PNGCodec::Decode(data.data(), data.size(), &bitmap)) + SkBitmap bitmap = gfx::PNGCodec::Decode(data); + if (bitmap.isNull()) return false; image->AddRepresentation(gfx::ImageSkiaRep(bitmap, scale_factor)); @@ -69,8 +69,8 @@ bool AddImageSkiaRepFromPNG(gfx::ImageSkia* image, bool AddImageSkiaRepFromJPEG(gfx::ImageSkia* image, const base::span data, double scale_factor) { - auto bitmap = gfx::JPEGCodec::Decode(data.data(), data.size()); - if (!bitmap) + auto bitmap = gfx::JPEGCodec::Decode(data); + if (bitmap.isNull()) return false; // `JPEGCodec::Decode()` doesn't tell `SkBitmap` instance it creates @@ -80,9 +80,9 @@ bool AddImageSkiaRepFromJPEG(gfx::ImageSkia* image, // TODO(alexeykuzmin): This workaround should be removed // when the `JPEGCodec::Decode()` code is fixed. // See https://github.com/electron/electron/issues/11294. - bitmap->setAlphaType(SkAlphaType::kOpaque_SkAlphaType); + bitmap.setAlphaType(SkAlphaType::kOpaque_SkAlphaType); - image->AddRepresentation(gfx::ImageSkiaRep(*bitmap, scale_factor)); + image->AddRepresentation(gfx::ImageSkiaRep(bitmap, scale_factor)); return true; }