From db0830e0f8d4aaffde0944aaee0983ec34f35c1a Mon Sep 17 00:00:00 2001 From: "electron-roller[bot]" <84116207+electron-roller[bot]@users.noreply.github.com> Date: Tue, 12 Jul 2022 08:22:53 -0400 Subject: [PATCH] chore: bump chromium to 104.0.5112.39 (20-x-y) (#34425) * chore: bump chromium in DEPS to 104.0.5098.0 * chore: bump chromium in DEPS to 104.0.5100.0 * chore: bump chromium in DEPS to 104.0.5102.0 * chore: bump chromium in DEPS to 104.0.5103.0 * chore: bump chromium in DEPS to 104.0.5104.0 * chore: bump chromium in DEPS to 104.0.5106.0 * chore: bump chromium in DEPS to 104.0.5108.0 * chore: bump chromium in DEPS to 104.0.5110.0 * chore: bump chromium in DEPS to 104.0.5112.0 * chore: bump chromium in DEPS to 104.0.5112.4 * 3651284: Use the entry settings object for window.open navigation https://chromium-review.googlesource.com/c/chromium/src/+/3651284 (cherry picked from commit 6ff37a08f7736772ce1ef80842329b67810ec224) * 3644598: Make RenderFrameHost used for notification permission decision https://chromium-review.googlesource.com/c/chromium/src/+/3644598 (cherry picked from commit 46df809556c17f6d8da9cb4542f68feb553fa0d0) * 3642842: Window Placement: Prototype Fullscreen Capability Delegation - Part 2 https://chromium-review.googlesource.com/c/chromium/src/+/3642842 (cherry picked from commit 2fe1bc32220404512c40efb94f4f1892d4d394bd) * 3652785: [sandbox] Enable sandboxed pointers on sanitizer builds https://chromium-review.googlesource.com/c/v8/v8/+/3652785 (cherry picked from commit ca8a3852f408fd4ad71450947817958bdbb8a7fc) * 3611967: webhid: Migrate HidDelegate to use BrowserContext and Origin https://chromium-review.googlesource.com/c/chromium/src/+/3611967 (cherry picked from commit 18aac8e93e03c35e1bbce77c8d7e21b10edf593c) * 3665762: Remove RenderFrameHost::IsRenderFrameCreated from //content/. https://chromium-review.googlesource.com/c/chromium/src/+/3665762 (cherry picked from commit 070ea1700b714ea7adb32f006e2482f5763ebc94) * 3659375: Fold x509_util_ios and most of x509_util_mac into x509_util_apple https://chromium-review.googlesource.com/c/chromium/src/+/3659375 (cherry picked from commit 479647e0ac214f3f191ad8f8e5e4a5564cea049c) * 3656234: [CodeHealth] Remove uses of base::ListValue::Append() (Final, take 2) https://chromium-review.googlesource.com/c/chromium/src/+/3656234 (cherry picked from commit e15d6110edeed5c1fc4e131c8f2b9a900a44a325) * chore: update patch indices (cherry picked from commit 8d666da975b47ed33ddcfe27770e107432aafc4a) * chore: fix lint (cherry picked from commit f9a9aca4568922f79a6d06f2fcc5bbf18c9b1f25) * 3644598: Make RenderFrameHost used for notification permission decision https://chromium-review.googlesource.com/c/chromium/src/+/3644598 (cherry picked from commit 014c4b9212a2b13fcb31064abe286f4978abb49d) * webhid: Migrate HidDelegate to use BrowserContext and Origin This is a temporary fix for https://chromium-review.googlesource.com/c/chromium/src/+/3611967 to get the build compiling, but we need to either patch around https://chromium-review.googlesource.com/c/chromium/src/+/3611967 or move our device permissioning to BrowserContext (cherry picked from commit 322e9686dac39d33bf10e873865f4566c4fd07f9) * chore: fix lint (cherry picked from commit 12b886cc6281e7c3e0347d02e6d40309881c86e4) * build: run electron/script/gen-libc++-filenames.js fixes gn check (cherry picked from commit 93cebfecb23967d43ebe4847a9c8edd592887ff0) * chore: disable flaking tests (cherry picked from commit fd0bc08f441d8ea98168a4df00ec01aa785768a3) * 3652749: Delete GLRenderer and related classes https://chromium-review.googlesource.com/c/chromium/src/+/3652749 (cherry picked from commit 43024a74c29b01e594067c8dbf171fd2d2acb82c) * 3682394: Change pipes surrounding code references in comments to backticks https://chromium-review.googlesource.com/c/chromium/src/+/3682394 (cherry picked from commit 41026ae4d02e7551c47d98c5948b8fc7229db72f) * chore: fixup patch indices (cherry picked from commit fccfc1bb29bb99d1333ab2fe892a34c4ac2b69be) * 3671199: Remove ContentMainDelegate::PostFieldTrialInitialization https://chromium-review.googlesource.com/c/chromium/src/+/3671199 (cherry picked from commit 6392cfb59532e5b07666cea89e6fb9ea9290536a) * 3607963: hid: Do not exclude HID device with no collections https://chromium-review.googlesource.com/c/chromium/src/+/3607963 (cherry picked from commit 2d8197579227264de13fa4a1f31f97333b40e73f) * refactor: use ElectronBrowserContext instead of WebContents to persist devices due to changes like https://chromium-review.googlesource.com/c/chromium/src/+/3611967, we can no longer use WebContents to store device permissions so this commit moves device permission storage to live in memory in ElectronBrowserContext instead. (cherry picked from commit 2f95568bfd640f6ddf90929d49200694095e6666) * 3557253: Deprecate some signature checks https://chromium-review.googlesource.com/c/v8/v8/+/3557253 (cherry picked from commit da4f0dbd1b22d551bfe86d04543eb09dde47dc88) * 3680781: Add policy for Renderer App Container. https://chromium-review.googlesource.com/c/chromium/src/+/3680781 (cherry picked from commit cb901ce48959c384e2c1a90230c253ee62bf6d5b) * chore: update patch indices (cherry picked from commit 40c6295a5b70b1dd293efcd1acfe5372142e8b15) * 3675465: Update NetLog network service API to use mojom::DictionaryValue. https://chromium-review.googlesource.com/c/chromium/src/+/3675465 (cherry picked from commit 55a58418e66e3c20e94b49ee2cf82d3476405b66) * fix: add patch for DCHECK in fullscreen test (cherry picked from commit c65280306d18fe34cee04aa4effbb3a27740e503) * build: fix nan build (cherry picked from commit c06ea18698e8cb2f40f0eaa6cd923426e6895845) * build: make the nan spec runner work on macOS (cherry picked from commit a22950b126a04022bf842f58747cc17d88de88e0) * chore: update patches (cherry picked from commit 7375148f93cd8d21a273ff34c4b6e08e7b86c053) * chore: update patches * 3693745: Delete base::LowerCaseEqualsASCII() Ref: https://chromium-review.googlesource.com/c/chromium/src/+/3693745 (cherry picked from commit ed192f5c9b67cb37bac01126d3c449d0c7bb28b3) * 3653285: Remove OS X 10.11 and macOS 10.12 code from chrome/ https://chromium-review.googlesource.com/c/chromium/src/+/3653285 * 3687395: Remove DictionaryValue::HasKey(). Ref: https://chromium-review.googlesource.com/c/chromium/src/+/3687395 (cherry picked from commit 2a6804db60aa200790b226ce7d74aec10b5ce56b) * 3691014: Prevent unsafe narrowing: ui/accessibility, part 2 Ref: https://chromium-review.googlesource.com/c/chromium/src/+/3691014 (cherry picked from commit fca99a5cf992dfe0aec7ff832ee7775c7ddf1322) * 3560567: [MSC] Porting GenerateStreams clients to handle stream vectors. https://chromium-review.googlesource.com/c/chromium/src/+/3560567 * 3684873: [Bluetooth][Win/Linux] Add bluetooth pair confirmation prompt https://chromium-review.googlesource.com/c/chromium/src/+/3684873 * chore: missing includes in desktop_notification_controller (cherry picked from commit 574fb7933df0a2edbf779888ed917da9e73c56da) * 3685951: Reland "Make sure screen object is created once in tests." https://chromium-review.googlesource.com/c/chromium/src/+/3685951 * fixup: Reland "Make sure screen object is created once in tests." * chore: bump chromium in DEPS to 104.0.5110.0 * chore: update patches * Revert "3560567: [MSC] Porting GenerateStreams clients to handle stream vectors." This reverts commit c9c1c534056404be22a2d81ae6df4d184654fa35. * Revert "3691014: Prevent unsafe narrowing: ui/accessibility, part 2" This reverts commit 08f7a35765fde0467ef44d773e943cf5998619ae. * 3687671: [v8] Freeze flags after initialization https://chromium-review.googlesource.com/c/chromium/src/+/3687671 * fixup: 3687671: [v8] Freeze flags after initialization * chore: bump chromium in DEPS to 104.0.5112.14 * chore: update patches * 3691014: Prevent unsafe narrowing: ui/accessibility, part 2 Ref: https://chromium-review.googlesource.com/c/chromium/src/+/3691014 (cherry picked from commit fca99a5cf992dfe0aec7ff832ee7775c7ddf1322) (cherry picked from commit 08f7a35765fde0467ef44d773e943cf5998619ae) * 3560567: [MSC] Porting GenerateStreams clients to handle stream vectors. https://chromium-review.googlesource.com/c/chromium/src/+/3560567 (cherry picked from commit c9c1c534056404be22a2d81ae6df4d184654fa35) * 3669226: Remove printing PostTask usage of IO thread https://chromium-review.googlesource.com/c/chromium/src/+/3669226 * chore: document breaking change (cherry picked from commit d0991597c2c375cf38047bd3917e45c4dddd0112) * chore: update patches * chore: remove deprecated AccessorSignatures https://github.com/nodejs/nan/pull/941 * Revert "fixup: 3687671: [v8] Freeze flags after initialization" This reverts commit a473727f39267327c7a77ec5056edd36b7c5b403. * Revert "3687671: [v8] Freeze flags after initialization" This reverts commit 7a8404be3c9d48a2e7ce877d749362f4754a9f17. * 3687671: [v8] Freeze flags after initialization https://chromium-review.googlesource.com/c/chromium/src/+/3687671 (cherry picked from commit f4c53302ea0974b6eb1e5dc6c18b0fdfe4a3e3cd) * 52026: Do not allow md4 or md5 based signatures in X.509 certificates. https://boringssl-review.googlesource.com/c/boringssl/+/52026 * chore: bump chromium in DEPS to 104.0.5112.20 * chore: update patches patches/chromium/chore_expose_v8_initialization_isolate_callbacks.patch is no longer needed because it was upstreamed via: 2527943: Allow static access to WasmCodeGeneration callback https://chromium-review.googlesource.com/c/chromium/src/+/2527943 * 3560567: [MSC] Porting GenerateStreams clients to handle stream vectors. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/3560567 (cherry picked from commit 797c3a1656bdbd9bb5cdd33ce4d18e13378616e9) * fixup! 3560567: [MSC] Porting GenerateStreams clients to handle stream vectors. (cherry picked from commit 9741ab73cf30f20ae04f26ae268e931f316586fd) * fixup! 3560567: [MSC] Porting GenerateStreams clients to handle stream vectors. (cherry picked from commit 558ed59d86ce5b2af83d5762b2abf8dfc9d8dc35) * chore: bump chromium in DEPS to 104.0.5112.29 * chore: update patches * chore: bump chromium in DEPS to 104.0.5112.39 * chore: update patches * chore: update patches * Trigger Build * 3695382: [ext-code-space] Fix CodeRange allocation logic https://chromium-review.googlesource.com/c/v8/v8/+/3695382 fixes https://bugs.chromium.org/p/v8/issues/detail?id=12942 * 3695382: [ext-code-space] Fix CodeRange allocation logic https://chromium-review.googlesource.com/c/v8/v8/+/3695382 * chore: update patches Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: Shelley Vohr Co-authored-by: John Kleinschmidt Co-authored-by: Charles Kerr Co-authored-by: Samuel Attard Co-authored-by: Keeley Hammond Co-authored-by: VerteDinde Co-authored-by: Jeremy Rose Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com> --- DEPS | 2 +- docs/api/session.md | 7 +- docs/breaking-changes.md | 7 + filenames.libcxx.gni | 364 +++++++++++++++++- patches/boringssl/expose_aes-cfb.patch | 4 +- patches/chromium/.patches | 3 +- ...client_precreatemessageloop_callback.patch | 10 +- .../add_didinstallconditionalfeatures.patch | 20 +- ..._scheduler_throttling_per_renderview.patch | 6 +- ...leges_in_unsandboxed_child_processes.patch | 2 +- patches/chromium/blink_local_frame.patch | 4 +- ..._node_processes_as_browser_processes.patch | 2 +- ..._depend_on_packed_resource_integrity.patch | 16 +- patches/chromium/build_gn.patch | 4 +- .../build_libc_as_static_library.patch | 2 +- ...bcxx_abi_unstable_false_for_electron.patch | 4 +- patches/chromium/can_create_window.patch | 39 +- ..._v8_initialization_isolate_callbacks.patch | 41 -- ...screationoverridden_with_full_params.patch | 50 +-- ...allow_disabling_compression_on_linux.patch | 2 +- .../crash_allow_setting_more_options.patch | 2 +- .../custom_protocols_plzserviceworker.patch | 6 +- patches/chromium/desktop_media_list.patch | 8 +- patches/chromium/disable-redraw-lock.patch | 10 +- .../disable_color_correct_rendering.patch | 170 +------- .../disable_compositor_recycling.patch | 4 +- ...le_freezing_flags_after_init_in_node.patch | 30 ++ patches/chromium/disable_hidden.patch | 2 +- patches/chromium/disable_unload_metrics.patch | 6 +- ...ythreadcreated_if_pcscan_is_disabled.patch | 2 +- ...ll_getwebframe_-_view_when_get_blink.patch | 4 +- .../chromium/enable_reset_aspect_ratio.patch | 6 +- ...locator_for_usage_outside_of_the_gin.patch | 2 +- ...xpose_setuseragent_on_networkcontext.patch | 14 +- .../extend_apply_webpreferences.patch | 4 +- ..._registry_to_multibuffer_data_source.patch | 4 +- ...screen_rendering_with_viz_compositor.patch | 55 ++- ..._raw_response_headers_from_urlloader.patch | 14 +- ...uest_webcontents_to_enter_fullscreen.patch | 20 + .../fix_aspect_ratio_with_max_size.patch | 4 +- ...x_crash_when_saving_edited_pdf_files.patch | 6 +- .../chromium/fix_export_zlib_symbols.patch | 4 +- ...ntcapturercount_in_web_contents_impl.patch | 8 +- ...out_profile_refs_in_accessibility_ui.patch | 2 +- patches/chromium/frame_host_manager.patch | 8 +- .../gin_enable_disable_v8_platform.patch | 2 +- .../chromium/gritsettings_resource_ids.patch | 2 +- patches/chromium/gtk_visibility.patch | 2 +- ...sync_with_host_os_mac_on_linux_in_ci.patch | 2 +- ...tform_electron_can_call_x11_property.patch | 2 +- .../load_v8_snapshot_in_browser_process.patch | 4 +- .../mas-cgdisplayusesforcetogray.patch | 4 +- .../mas_disable_custom_window_frame.patch | 14 +- .../mas_disable_remote_accessibility.patch | 14 +- .../chromium/mas_disable_remote_layer.patch | 24 +- patches/chromium/mas_no_private_api.patch | 4 +- ...emote_certificate_verification_logic.patch | 20 +- .../chromium/notification_provenance.patch | 64 +-- ...utofill_colors_to_the_color_pipeline.patch | 2 +- ..._doubleforkandexec_with_forkandspawn.patch | 10 +- patches/chromium/printing.patch | 72 ++-- ...r_changes_to_the_webcontentsobserver.patch | 8 +- .../render_widget_host_view_base.patch | 10 +- patches/chromium/resource_file_conflict.patch | 6 +- patches/chromium/scroll_bounce_flag.patch | 4 +- .../support_mixed_sandbox_with_zygote.patch | 16 +- patches/chromium/web_contents.patch | 8 +- patches/chromium/webview_fullscreen.patch | 10 +- .../worker_context_will_destroy.patch | 16 +- ...feat_add_hook_to_notify_script_ready.patch | 16 +- patches/nan/.patches | 1 + ...remove_deprecated_accessorsignatures.patch | 45 +++ patches/node/.patches | 1 + ...mespace_as_cr_to_align_with_chromium.patch | 21 + .../fix_crypto_tests_to_run_with_bssl.patch | 28 ++ patches/v8/.patches | 1 + ...w_disabling_of_v8_sandboxed_pointers.patch | 25 +- patches/v8/build_gn.patch | 8 +- patches/v8/dcheck.patch | 8 +- ...export_private_v8_symbols_on_windows.patch | 4 +- ...ort_symbols_needed_for_windows_build.patch | 4 +- patches/v8/expose_mksnapshot.patch | 4 +- ...space_fix_coderange_allocation_logic.patch | 105 +++++ ..._terminating_exception_in_microtasks.patch | 8 +- ...workaround_an_undefined_symbol_error.patch | 2 +- script/nan-spec-runner.js | 2 +- script/node-disabled-tests.json | 1 + shell/app/electron_main_delegate.cc | 4 +- shell/app/electron_main_delegate.h | 2 +- shell/browser/api/electron_api_net_log.cc | 9 +- shell/browser/api/electron_api_net_log.h | 2 +- .../browser/api/electron_api_web_contents.cc | 142 +------ shell/browser/api/electron_api_web_contents.h | 35 -- .../api/electron_api_web_frame_main.cc | 2 +- shell/browser/api/gpu_info_enumerator.cc | 8 +- .../bluetooth/electron_bluetooth_delegate.cc | 7 + .../bluetooth/electron_bluetooth_delegate.h | 3 + .../electron_autofill_driver_factory.cc | 2 +- shell/browser/electron_browser_context.cc | 110 ++++++ shell/browser/electron_browser_context.h | 32 ++ shell/browser/electron_browser_main_parts.cc | 8 +- shell/browser/electron_browser_main_parts.h | 2 + shell/browser/electron_permission_manager.cc | 38 +- shell/browser/electron_permission_manager.h | 18 +- shell/browser/hid/electron_hid_delegate.cc | 67 ++-- shell/browser/hid/electron_hid_delegate.h | 21 +- shell/browser/hid/hid_chooser_context.cc | 64 ++- shell/browser/hid/hid_chooser_context.h | 13 +- shell/browser/hid/hid_chooser_controller.cc | 5 +- .../mac/electron_application_delegate.mm | 10 - .../media/media_stream_devices_controller.cc | 22 +- .../desktop_notification_controller.cc | 3 +- .../printing/print_preview_message_handler.cc | 6 +- .../browser/serial/serial_chooser_context.cc | 30 +- shell/browser/serial/serial_chooser_context.h | 4 +- .../serial/serial_chooser_context_factory.cc | 4 +- shell/browser/ui/certificate_trust_mac.mm | 3 +- shell/browser/ui/inspectable_web_contents.cc | 2 +- shell/browser/ui/webui/accessibility_ui.cc | 7 +- .../browser/web_contents_permission_helper.cc | 86 ----- .../browser/web_contents_permission_helper.h | 37 -- shell/common/v8_value_converter.cc | 13 +- spec/package.json | 4 +- spec/yarn.lock | 19 +- 124 files changed, 1347 insertions(+), 1085 deletions(-) delete mode 100644 patches/chromium/chore_expose_v8_initialization_isolate_callbacks.patch create mode 100644 patches/chromium/disable_freezing_flags_after_init_in_node.patch create mode 100644 patches/chromium/fix_allow_guest_webcontents_to_enter_fullscreen.patch create mode 100644 patches/nan/chore_remove_deprecated_accessorsignatures.patch create mode 100644 patches/node/build_define_libcpp_abi_namespace_as_cr_to_align_with_chromium.patch create mode 100644 patches/v8/ext-code-space_fix_coderange_allocation_logic.patch diff --git a/DEPS b/DEPS index bc96d86bcb6cd..809bd02d4ee7f 100644 --- a/DEPS +++ b/DEPS @@ -2,7 +2,7 @@ gclient_gn_args_from = 'src' vars = { 'chromium_version': - '104.0.5073.0', + '104.0.5112.39', 'node_version': 'v16.15.0', 'nan_version': diff --git a/docs/api/session.md b/docs/api/session.md index 8475302e9422b..ed8f895f1655b 100644 --- a/docs/api/session.md +++ b/docs/api/session.md @@ -281,7 +281,7 @@ Returns: * `event` Event * `details` Object * `device` [HIDDevice[]](structures/hid-device.md) - * `frame` [WebFrameMain](web-frame-main.md) + * `origin` string (optional) - The origin that the device has been revoked from. Emitted after `HIDDevice.forget()` has been called. This event can be used to help maintain persistent storage of permissions when @@ -705,7 +705,6 @@ session.fromPartition('some-partition').setPermissionCheckHandler((webContents, * `deviceType` string - The type of device that permission is being requested on, can be `hid` or `serial`. * `origin` string - The origin URL of the device permission check. * `device` [HIDDevice](structures/hid-device.md) | [SerialPort](structures/serial-port.md)- the device that permission is being requested for. - * `frame` [WebFrameMain](web-frame-main.md) - WebFrameMain checking the device permission. Sets the handler which can be used to respond to device permission checks for the `session`. Returning `true` will allow the device to be permitted and `false` will reject it. @@ -713,8 +712,8 @@ To clear the handler, call `setDevicePermissionHandler(null)`. This handler can be used to provide default permissioning to devices without first calling for permission to devices (eg via `navigator.hid.requestDevice`). If this handler is not defined, the default device permissions as granted through device selection (eg via `navigator.hid.requestDevice`) will be used. -Additionally, the default behavior of Electron is to store granted device permision through the lifetime -of the corresponding WebContents. If longer term storage is needed, a developer can store granted device +Additionally, the default behavior of Electron is to store granted device permision in memory. +If longer term storage is needed, a developer can store granted device permissions (eg when handling the `select-hid-device` event) and then read from that storage with `setDevicePermissionHandler`. ```javascript diff --git a/docs/breaking-changes.md b/docs/breaking-changes.md index 5027da8617284..a1e3e180c12b1 100644 --- a/docs/breaking-changes.md +++ b/docs/breaking-changes.md @@ -34,6 +34,13 @@ window manager. There is not a direct equivalent for Wayland, and the known workarounds have unacceptable tradeoffs (e.g. Window.is_skip_taskbar in GNOME requires unsafe mode), so Electron is unable to support this feature on Linux. +### API Changed: `session.setDevicePermissionHandler(handler)` + +The handler invoked when `session.setDevicePermissionHandler(handler)` is used +has a change to its arguments. This handler no longer is passed a frame +`[WebFrameMain](api/web-frame-main.md)`, but instead is passed the `origin`, which +is the origin that is checking for device permission. + ## Planned Breaking API Changes (19.0) ### Removed: IA32 Linux binaries diff --git a/filenames.libcxx.gni b/filenames.libcxx.gni index b14a775f99962..56021a48dd9e4 100644 --- a/filenames.libcxx.gni +++ b/filenames.libcxx.gni @@ -1,49 +1,376 @@ libcxx_headers = [ "//buildtools/third_party/libc++/trunk/include/CMakeLists.txt", + "//buildtools/third_party/libc++/trunk/include/__algorithm/adjacent_find.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/all_of.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/any_of.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/binary_search.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/clamp.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/comp.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/comp_ref_type.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/copy.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/copy_backward.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/copy_if.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/copy_n.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/count.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/count_if.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/equal.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/equal_range.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/fill.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/fill_n.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/find.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/find_end.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/find_first_of.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/find_if.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/find_if_not.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/for_each.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/for_each_n.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/generate.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/generate_n.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/half_positive.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/in_found_result.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/in_fun_result.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/in_in_out_result.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/in_in_result.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/in_out_out_result.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/in_out_result.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/includes.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/inplace_merge.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/is_heap.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/is_heap_until.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/is_partitioned.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/is_permutation.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/is_sorted.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/is_sorted_until.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/iter_swap.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/lexicographical_compare.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/lower_bound.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/make_heap.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/max.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/max_element.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/merge.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/min.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/min_element.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/min_max_result.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/minmax.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/minmax_element.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/mismatch.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/move.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/move_backward.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/next_permutation.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/none_of.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/nth_element.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/partial_sort.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/partial_sort_copy.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/partition.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/partition_copy.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/partition_point.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/pop_heap.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/prev_permutation.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/push_heap.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/ranges_find.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/ranges_find_if.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/ranges_find_if_not.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/ranges_max_element.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/ranges_min.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/ranges_min_element.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/ranges_mismatch.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/ranges_swap_ranges.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/remove.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/remove_copy.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/remove_copy_if.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/remove_if.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/replace.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/replace_copy.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/replace_copy_if.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/replace_if.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/reverse.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/reverse_copy.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/rotate.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/rotate_copy.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/sample.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/search.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/search_n.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/set_difference.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/set_intersection.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/set_symmetric_difference.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/set_union.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/shift_left.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/shift_right.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/shuffle.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/sift_down.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/sort.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/sort_heap.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/stable_partition.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/stable_sort.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/swap_ranges.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/transform.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/unique.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/unique_copy.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/unwrap_iter.h", + "//buildtools/third_party/libc++/trunk/include/__algorithm/upper_bound.h", + "//buildtools/third_party/libc++/trunk/include/__assert", "//buildtools/third_party/libc++/trunk/include/__availability", + "//buildtools/third_party/libc++/trunk/include/__bit/bit_cast.h", + "//buildtools/third_party/libc++/trunk/include/__bit/byteswap.h", "//buildtools/third_party/libc++/trunk/include/__bit_reference", "//buildtools/third_party/libc++/trunk/include/__bits", "//buildtools/third_party/libc++/trunk/include/__bsd_locale_defaults.h", "//buildtools/third_party/libc++/trunk/include/__bsd_locale_fallbacks.h", + "//buildtools/third_party/libc++/trunk/include/__charconv/chars_format.h", + "//buildtools/third_party/libc++/trunk/include/__charconv/from_chars_result.h", + "//buildtools/third_party/libc++/trunk/include/__charconv/to_chars_result.h", + "//buildtools/third_party/libc++/trunk/include/__chrono/calendar.h", + "//buildtools/third_party/libc++/trunk/include/__chrono/convert_to_timespec.h", + "//buildtools/third_party/libc++/trunk/include/__chrono/duration.h", + "//buildtools/third_party/libc++/trunk/include/__chrono/file_clock.h", + "//buildtools/third_party/libc++/trunk/include/__chrono/high_resolution_clock.h", + "//buildtools/third_party/libc++/trunk/include/__chrono/steady_clock.h", + "//buildtools/third_party/libc++/trunk/include/__chrono/system_clock.h", + "//buildtools/third_party/libc++/trunk/include/__chrono/time_point.h", + "//buildtools/third_party/libc++/trunk/include/__compare/common_comparison_category.h", + "//buildtools/third_party/libc++/trunk/include/__compare/compare_partial_order_fallback.h", + "//buildtools/third_party/libc++/trunk/include/__compare/compare_strong_order_fallback.h", + "//buildtools/third_party/libc++/trunk/include/__compare/compare_three_way.h", + "//buildtools/third_party/libc++/trunk/include/__compare/compare_three_way_result.h", + "//buildtools/third_party/libc++/trunk/include/__compare/compare_weak_order_fallback.h", + "//buildtools/third_party/libc++/trunk/include/__compare/is_eq.h", + "//buildtools/third_party/libc++/trunk/include/__compare/ordering.h", + "//buildtools/third_party/libc++/trunk/include/__compare/partial_order.h", + "//buildtools/third_party/libc++/trunk/include/__compare/strong_order.h", + "//buildtools/third_party/libc++/trunk/include/__compare/synth_three_way.h", + "//buildtools/third_party/libc++/trunk/include/__compare/three_way_comparable.h", + "//buildtools/third_party/libc++/trunk/include/__compare/weak_order.h", + "//buildtools/third_party/libc++/trunk/include/__concepts/arithmetic.h", + "//buildtools/third_party/libc++/trunk/include/__concepts/assignable.h", + "//buildtools/third_party/libc++/trunk/include/__concepts/boolean_testable.h", + "//buildtools/third_party/libc++/trunk/include/__concepts/class_or_enum.h", + "//buildtools/third_party/libc++/trunk/include/__concepts/common_reference_with.h", + "//buildtools/third_party/libc++/trunk/include/__concepts/common_with.h", + "//buildtools/third_party/libc++/trunk/include/__concepts/constructible.h", + "//buildtools/third_party/libc++/trunk/include/__concepts/convertible_to.h", + "//buildtools/third_party/libc++/trunk/include/__concepts/copyable.h", + "//buildtools/third_party/libc++/trunk/include/__concepts/derived_from.h", + "//buildtools/third_party/libc++/trunk/include/__concepts/destructible.h", + "//buildtools/third_party/libc++/trunk/include/__concepts/different_from.h", + "//buildtools/third_party/libc++/trunk/include/__concepts/equality_comparable.h", + "//buildtools/third_party/libc++/trunk/include/__concepts/invocable.h", + "//buildtools/third_party/libc++/trunk/include/__concepts/movable.h", + "//buildtools/third_party/libc++/trunk/include/__concepts/predicate.h", + "//buildtools/third_party/libc++/trunk/include/__concepts/regular.h", + "//buildtools/third_party/libc++/trunk/include/__concepts/relation.h", + "//buildtools/third_party/libc++/trunk/include/__concepts/same_as.h", + "//buildtools/third_party/libc++/trunk/include/__concepts/semiregular.h", + "//buildtools/third_party/libc++/trunk/include/__concepts/swappable.h", + "//buildtools/third_party/libc++/trunk/include/__concepts/totally_ordered.h", "//buildtools/third_party/libc++/trunk/include/__config", "//buildtools/third_party/libc++/trunk/include/__config_site.in", + "//buildtools/third_party/libc++/trunk/include/__coroutine/coroutine_handle.h", + "//buildtools/third_party/libc++/trunk/include/__coroutine/coroutine_traits.h", + "//buildtools/third_party/libc++/trunk/include/__coroutine/noop_coroutine_handle.h", + "//buildtools/third_party/libc++/trunk/include/__coroutine/trivial_awaitables.h", "//buildtools/third_party/libc++/trunk/include/__debug", "//buildtools/third_party/libc++/trunk/include/__errc", - "//buildtools/third_party/libc++/trunk/include/__functional_03", - "//buildtools/third_party/libc++/trunk/include/__functional_base", - "//buildtools/third_party/libc++/trunk/include/__functional_base_03", + "//buildtools/third_party/libc++/trunk/include/__filesystem/copy_options.h", + "//buildtools/third_party/libc++/trunk/include/__filesystem/directory_entry.h", + "//buildtools/third_party/libc++/trunk/include/__filesystem/directory_iterator.h", + "//buildtools/third_party/libc++/trunk/include/__filesystem/directory_options.h", + "//buildtools/third_party/libc++/trunk/include/__filesystem/file_status.h", + "//buildtools/third_party/libc++/trunk/include/__filesystem/file_time_type.h", + "//buildtools/third_party/libc++/trunk/include/__filesystem/file_type.h", + "//buildtools/third_party/libc++/trunk/include/__filesystem/filesystem_error.h", + "//buildtools/third_party/libc++/trunk/include/__filesystem/operations.h", + "//buildtools/third_party/libc++/trunk/include/__filesystem/path.h", + "//buildtools/third_party/libc++/trunk/include/__filesystem/path_iterator.h", + "//buildtools/third_party/libc++/trunk/include/__filesystem/perm_options.h", + "//buildtools/third_party/libc++/trunk/include/__filesystem/perms.h", + "//buildtools/third_party/libc++/trunk/include/__filesystem/recursive_directory_iterator.h", + "//buildtools/third_party/libc++/trunk/include/__filesystem/space_info.h", + "//buildtools/third_party/libc++/trunk/include/__filesystem/u8path.h", + "//buildtools/third_party/libc++/trunk/include/__format/format_arg.h", + "//buildtools/third_party/libc++/trunk/include/__format/format_args.h", + "//buildtools/third_party/libc++/trunk/include/__format/format_context.h", + "//buildtools/third_party/libc++/trunk/include/__format/format_error.h", + "//buildtools/third_party/libc++/trunk/include/__format/format_fwd.h", + "//buildtools/third_party/libc++/trunk/include/__format/format_parse_context.h", + "//buildtools/third_party/libc++/trunk/include/__format/format_string.h", + "//buildtools/third_party/libc++/trunk/include/__format/format_to_n_result.h", + "//buildtools/third_party/libc++/trunk/include/__format/formatter.h", + "//buildtools/third_party/libc++/trunk/include/__format/formatter_bool.h", + "//buildtools/third_party/libc++/trunk/include/__format/formatter_char.h", + "//buildtools/third_party/libc++/trunk/include/__format/formatter_floating_point.h", + "//buildtools/third_party/libc++/trunk/include/__format/formatter_integer.h", + "//buildtools/third_party/libc++/trunk/include/__format/formatter_integral.h", + "//buildtools/third_party/libc++/trunk/include/__format/formatter_pointer.h", + "//buildtools/third_party/libc++/trunk/include/__format/formatter_string.h", + "//buildtools/third_party/libc++/trunk/include/__format/parser_std_format_spec.h", + "//buildtools/third_party/libc++/trunk/include/__functional/binary_function.h", + "//buildtools/third_party/libc++/trunk/include/__functional/binary_negate.h", + "//buildtools/third_party/libc++/trunk/include/__functional/bind.h", + "//buildtools/third_party/libc++/trunk/include/__functional/bind_back.h", + "//buildtools/third_party/libc++/trunk/include/__functional/bind_front.h", + "//buildtools/third_party/libc++/trunk/include/__functional/binder1st.h", + "//buildtools/third_party/libc++/trunk/include/__functional/binder2nd.h", + "//buildtools/third_party/libc++/trunk/include/__functional/compose.h", + "//buildtools/third_party/libc++/trunk/include/__functional/default_searcher.h", + "//buildtools/third_party/libc++/trunk/include/__functional/function.h", + "//buildtools/third_party/libc++/trunk/include/__functional/hash.h", + "//buildtools/third_party/libc++/trunk/include/__functional/identity.h", + "//buildtools/third_party/libc++/trunk/include/__functional/invoke.h", + "//buildtools/third_party/libc++/trunk/include/__functional/is_transparent.h", + "//buildtools/third_party/libc++/trunk/include/__functional/mem_fn.h", + "//buildtools/third_party/libc++/trunk/include/__functional/mem_fun_ref.h", + "//buildtools/third_party/libc++/trunk/include/__functional/not_fn.h", + "//buildtools/third_party/libc++/trunk/include/__functional/operations.h", + "//buildtools/third_party/libc++/trunk/include/__functional/perfect_forward.h", + "//buildtools/third_party/libc++/trunk/include/__functional/pointer_to_binary_function.h", + "//buildtools/third_party/libc++/trunk/include/__functional/pointer_to_unary_function.h", + "//buildtools/third_party/libc++/trunk/include/__functional/ranges_operations.h", + "//buildtools/third_party/libc++/trunk/include/__functional/reference_wrapper.h", + "//buildtools/third_party/libc++/trunk/include/__functional/unary_function.h", + "//buildtools/third_party/libc++/trunk/include/__functional/unary_negate.h", + "//buildtools/third_party/libc++/trunk/include/__functional/unwrap_ref.h", + "//buildtools/third_party/libc++/trunk/include/__functional/weak_result_type.h", "//buildtools/third_party/libc++/trunk/include/__hash_table", + "//buildtools/third_party/libc++/trunk/include/__ios/fpos.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/access.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/advance.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/back_insert_iterator.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/common_iterator.h", "//buildtools/third_party/libc++/trunk/include/__iterator/concepts.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/counted_iterator.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/data.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/default_sentinel.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/distance.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/empty.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/erase_if_container.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/front_insert_iterator.h", "//buildtools/third_party/libc++/trunk/include/__iterator/incrementable_traits.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/indirectly_comparable.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/insert_iterator.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/istream_iterator.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/istreambuf_iterator.h", "//buildtools/third_party/libc++/trunk/include/__iterator/iter_move.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/iter_swap.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/iterator.h", "//buildtools/third_party/libc++/trunk/include/__iterator/iterator_traits.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/mergeable.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/move_iterator.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/next.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/ostream_iterator.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/ostreambuf_iterator.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/permutable.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/prev.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/projected.h", "//buildtools/third_party/libc++/trunk/include/__iterator/readable_traits.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/reverse_access.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/reverse_iterator.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/size.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/sortable.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/unreachable_sentinel.h", + "//buildtools/third_party/libc++/trunk/include/__iterator/wrap_iter.h", "//buildtools/third_party/libc++/trunk/include/__libcpp_version", "//buildtools/third_party/libc++/trunk/include/__locale", + "//buildtools/third_party/libc++/trunk/include/__mbstate_t.h", "//buildtools/third_party/libc++/trunk/include/__memory/addressof.h", "//buildtools/third_party/libc++/trunk/include/__memory/allocation_guard.h", "//buildtools/third_party/libc++/trunk/include/__memory/allocator.h", + "//buildtools/third_party/libc++/trunk/include/__memory/allocator_arg_t.h", "//buildtools/third_party/libc++/trunk/include/__memory/allocator_traits.h", "//buildtools/third_party/libc++/trunk/include/__memory/auto_ptr.h", "//buildtools/third_party/libc++/trunk/include/__memory/compressed_pair.h", + "//buildtools/third_party/libc++/trunk/include/__memory/concepts.h", "//buildtools/third_party/libc++/trunk/include/__memory/construct_at.h", - "//buildtools/third_party/libc++/trunk/include/__memory/pointer_safety.h", "//buildtools/third_party/libc++/trunk/include/__memory/pointer_traits.h", + "//buildtools/third_party/libc++/trunk/include/__memory/ranges_construct_at.h", + "//buildtools/third_party/libc++/trunk/include/__memory/ranges_uninitialized_algorithms.h", "//buildtools/third_party/libc++/trunk/include/__memory/raw_storage_iterator.h", "//buildtools/third_party/libc++/trunk/include/__memory/shared_ptr.h", "//buildtools/third_party/libc++/trunk/include/__memory/temporary_buffer.h", "//buildtools/third_party/libc++/trunk/include/__memory/uninitialized_algorithms.h", "//buildtools/third_party/libc++/trunk/include/__memory/unique_ptr.h", + "//buildtools/third_party/libc++/trunk/include/__memory/uses_allocator.h", + "//buildtools/third_party/libc++/trunk/include/__memory/voidify.h", "//buildtools/third_party/libc++/trunk/include/__mutex_base", "//buildtools/third_party/libc++/trunk/include/__node_handle", - "//buildtools/third_party/libc++/trunk/include/__nullptr", + "//buildtools/third_party/libc++/trunk/include/__numeric/accumulate.h", + "//buildtools/third_party/libc++/trunk/include/__numeric/adjacent_difference.h", + "//buildtools/third_party/libc++/trunk/include/__numeric/exclusive_scan.h", + "//buildtools/third_party/libc++/trunk/include/__numeric/gcd_lcm.h", + "//buildtools/third_party/libc++/trunk/include/__numeric/inclusive_scan.h", + "//buildtools/third_party/libc++/trunk/include/__numeric/inner_product.h", + "//buildtools/third_party/libc++/trunk/include/__numeric/iota.h", + "//buildtools/third_party/libc++/trunk/include/__numeric/midpoint.h", + "//buildtools/third_party/libc++/trunk/include/__numeric/partial_sum.h", + "//buildtools/third_party/libc++/trunk/include/__numeric/reduce.h", + "//buildtools/third_party/libc++/trunk/include/__numeric/transform_exclusive_scan.h", + "//buildtools/third_party/libc++/trunk/include/__numeric/transform_inclusive_scan.h", + "//buildtools/third_party/libc++/trunk/include/__numeric/transform_reduce.h", + "//buildtools/third_party/libc++/trunk/include/__random/bernoulli_distribution.h", + "//buildtools/third_party/libc++/trunk/include/__random/binomial_distribution.h", + "//buildtools/third_party/libc++/trunk/include/__random/cauchy_distribution.h", + "//buildtools/third_party/libc++/trunk/include/__random/chi_squared_distribution.h", + "//buildtools/third_party/libc++/trunk/include/__random/clamp_to_integral.h", + "//buildtools/third_party/libc++/trunk/include/__random/default_random_engine.h", + "//buildtools/third_party/libc++/trunk/include/__random/discard_block_engine.h", + "//buildtools/third_party/libc++/trunk/include/__random/discrete_distribution.h", + "//buildtools/third_party/libc++/trunk/include/__random/exponential_distribution.h", + "//buildtools/third_party/libc++/trunk/include/__random/extreme_value_distribution.h", + "//buildtools/third_party/libc++/trunk/include/__random/fisher_f_distribution.h", + "//buildtools/third_party/libc++/trunk/include/__random/gamma_distribution.h", + "//buildtools/third_party/libc++/trunk/include/__random/generate_canonical.h", + "//buildtools/third_party/libc++/trunk/include/__random/geometric_distribution.h", + "//buildtools/third_party/libc++/trunk/include/__random/independent_bits_engine.h", + "//buildtools/third_party/libc++/trunk/include/__random/is_seed_sequence.h", + "//buildtools/third_party/libc++/trunk/include/__random/is_valid.h", + "//buildtools/third_party/libc++/trunk/include/__random/knuth_b.h", + "//buildtools/third_party/libc++/trunk/include/__random/linear_congruential_engine.h", + "//buildtools/third_party/libc++/trunk/include/__random/log2.h", + "//buildtools/third_party/libc++/trunk/include/__random/lognormal_distribution.h", + "//buildtools/third_party/libc++/trunk/include/__random/mersenne_twister_engine.h", + "//buildtools/third_party/libc++/trunk/include/__random/negative_binomial_distribution.h", + "//buildtools/third_party/libc++/trunk/include/__random/normal_distribution.h", + "//buildtools/third_party/libc++/trunk/include/__random/piecewise_constant_distribution.h", + "//buildtools/third_party/libc++/trunk/include/__random/piecewise_linear_distribution.h", + "//buildtools/third_party/libc++/trunk/include/__random/poisson_distribution.h", + "//buildtools/third_party/libc++/trunk/include/__random/random_device.h", + "//buildtools/third_party/libc++/trunk/include/__random/ranlux.h", + "//buildtools/third_party/libc++/trunk/include/__random/seed_seq.h", + "//buildtools/third_party/libc++/trunk/include/__random/shuffle_order_engine.h", + "//buildtools/third_party/libc++/trunk/include/__random/student_t_distribution.h", + "//buildtools/third_party/libc++/trunk/include/__random/subtract_with_carry_engine.h", + "//buildtools/third_party/libc++/trunk/include/__random/uniform_int_distribution.h", + "//buildtools/third_party/libc++/trunk/include/__random/uniform_random_bit_generator.h", + "//buildtools/third_party/libc++/trunk/include/__random/uniform_real_distribution.h", + "//buildtools/third_party/libc++/trunk/include/__random/weibull_distribution.h", "//buildtools/third_party/libc++/trunk/include/__ranges/access.h", + "//buildtools/third_party/libc++/trunk/include/__ranges/all.h", + "//buildtools/third_party/libc++/trunk/include/__ranges/common_view.h", "//buildtools/third_party/libc++/trunk/include/__ranges/concepts.h", + "//buildtools/third_party/libc++/trunk/include/__ranges/copyable_box.h", + "//buildtools/third_party/libc++/trunk/include/__ranges/counted.h", + "//buildtools/third_party/libc++/trunk/include/__ranges/dangling.h", "//buildtools/third_party/libc++/trunk/include/__ranges/data.h", + "//buildtools/third_party/libc++/trunk/include/__ranges/drop_view.h", "//buildtools/third_party/libc++/trunk/include/__ranges/empty.h", + "//buildtools/third_party/libc++/trunk/include/__ranges/empty_view.h", "//buildtools/third_party/libc++/trunk/include/__ranges/enable_borrowed_range.h", + "//buildtools/third_party/libc++/trunk/include/__ranges/enable_view.h", + "//buildtools/third_party/libc++/trunk/include/__ranges/iota_view.h", + "//buildtools/third_party/libc++/trunk/include/__ranges/join_view.h", + "//buildtools/third_party/libc++/trunk/include/__ranges/non_propagating_cache.h", + "//buildtools/third_party/libc++/trunk/include/__ranges/owning_view.h", + "//buildtools/third_party/libc++/trunk/include/__ranges/range_adaptor.h", + "//buildtools/third_party/libc++/trunk/include/__ranges/rbegin.h", + "//buildtools/third_party/libc++/trunk/include/__ranges/ref_view.h", + "//buildtools/third_party/libc++/trunk/include/__ranges/rend.h", + "//buildtools/third_party/libc++/trunk/include/__ranges/reverse_view.h", + "//buildtools/third_party/libc++/trunk/include/__ranges/single_view.h", "//buildtools/third_party/libc++/trunk/include/__ranges/size.h", - "//buildtools/third_party/libc++/trunk/include/__ranges/view.h", + "//buildtools/third_party/libc++/trunk/include/__ranges/subrange.h", + "//buildtools/third_party/libc++/trunk/include/__ranges/take_view.h", + "//buildtools/third_party/libc++/trunk/include/__ranges/transform_view.h", + "//buildtools/third_party/libc++/trunk/include/__ranges/view_interface.h", + "//buildtools/third_party/libc++/trunk/include/__ranges/views.h", "//buildtools/third_party/libc++/trunk/include/__split_buffer", "//buildtools/third_party/libc++/trunk/include/__std_stream", "//buildtools/third_party/libc++/trunk/include/__string", @@ -51,14 +378,12 @@ libcxx_headers = [ "//buildtools/third_party/libc++/trunk/include/__support/fuchsia/xlocale.h", "//buildtools/third_party/libc++/trunk/include/__support/ibm/gettod_zos.h", "//buildtools/third_party/libc++/trunk/include/__support/ibm/limits.h", - "//buildtools/third_party/libc++/trunk/include/__support/ibm/locale_mgmt_aix.h", "//buildtools/third_party/libc++/trunk/include/__support/ibm/locale_mgmt_zos.h", "//buildtools/third_party/libc++/trunk/include/__support/ibm/nanosleep.h", "//buildtools/third_party/libc++/trunk/include/__support/ibm/support.h", "//buildtools/third_party/libc++/trunk/include/__support/ibm/xlocale.h", "//buildtools/third_party/libc++/trunk/include/__support/musl/xlocale.h", "//buildtools/third_party/libc++/trunk/include/__support/newlib/xlocale.h", - "//buildtools/third_party/libc++/trunk/include/__support/nuttx/xlocale.h", "//buildtools/third_party/libc++/trunk/include/__support/openbsd/xlocale.h", "//buildtools/third_party/libc++/trunk/include/__support/solaris/floatingpoint.h", "//buildtools/third_party/libc++/trunk/include/__support/solaris/wchar.h", @@ -68,11 +393,30 @@ libcxx_headers = [ "//buildtools/third_party/libc++/trunk/include/__support/xlocale/__nop_locale_mgmt.h", "//buildtools/third_party/libc++/trunk/include/__support/xlocale/__posix_l_fallback.h", "//buildtools/third_party/libc++/trunk/include/__support/xlocale/__strtonum_fallback.h", + "//buildtools/third_party/libc++/trunk/include/__thread/poll_with_backoff.h", + "//buildtools/third_party/libc++/trunk/include/__thread/timed_backoff_policy.h", "//buildtools/third_party/libc++/trunk/include/__threading_support", "//buildtools/third_party/libc++/trunk/include/__tree", "//buildtools/third_party/libc++/trunk/include/__tuple", "//buildtools/third_party/libc++/trunk/include/__undef_macros", + "//buildtools/third_party/libc++/trunk/include/__utility/as_const.h", + "//buildtools/third_party/libc++/trunk/include/__utility/auto_cast.h", + "//buildtools/third_party/libc++/trunk/include/__utility/cmp.h", + "//buildtools/third_party/libc++/trunk/include/__utility/declval.h", + "//buildtools/third_party/libc++/trunk/include/__utility/exchange.h", + "//buildtools/third_party/libc++/trunk/include/__utility/forward.h", + "//buildtools/third_party/libc++/trunk/include/__utility/in_place.h", + "//buildtools/third_party/libc++/trunk/include/__utility/integer_sequence.h", + "//buildtools/third_party/libc++/trunk/include/__utility/move.h", + "//buildtools/third_party/libc++/trunk/include/__utility/pair.h", + "//buildtools/third_party/libc++/trunk/include/__utility/piecewise_construct.h", + "//buildtools/third_party/libc++/trunk/include/__utility/priority_tag.h", + "//buildtools/third_party/libc++/trunk/include/__utility/rel_ops.h", + "//buildtools/third_party/libc++/trunk/include/__utility/swap.h", "//buildtools/third_party/libc++/trunk/include/__utility/to_underlying.h", + "//buildtools/third_party/libc++/trunk/include/__utility/transaction.h", + "//buildtools/third_party/libc++/trunk/include/__utility/unreachable.h", + "//buildtools/third_party/libc++/trunk/include/__variant/monostate.h", "//buildtools/third_party/libc++/trunk/include/algorithm", "//buildtools/third_party/libc++/trunk/include/any", "//buildtools/third_party/libc++/trunk/include/array", @@ -99,6 +443,7 @@ libcxx_headers = [ "//buildtools/third_party/libc++/trunk/include/complex.h", "//buildtools/third_party/libc++/trunk/include/concepts", "//buildtools/third_party/libc++/trunk/include/condition_variable", + "//buildtools/third_party/libc++/trunk/include/coroutine", "//buildtools/third_party/libc++/trunk/include/csetjmp", "//buildtools/third_party/libc++/trunk/include/csignal", "//buildtools/third_party/libc++/trunk/include/cstdarg", @@ -111,6 +456,7 @@ libcxx_headers = [ "//buildtools/third_party/libc++/trunk/include/ctgmath", "//buildtools/third_party/libc++/trunk/include/ctime", "//buildtools/third_party/libc++/trunk/include/ctype.h", + "//buildtools/third_party/libc++/trunk/include/cuchar", "//buildtools/third_party/libc++/trunk/include/cwchar", "//buildtools/third_party/libc++/trunk/include/cwctype", "//buildtools/third_party/libc++/trunk/include/deque", @@ -122,7 +468,6 @@ libcxx_headers = [ "//buildtools/third_party/libc++/trunk/include/experimental/algorithm", "//buildtools/third_party/libc++/trunk/include/experimental/coroutine", "//buildtools/third_party/libc++/trunk/include/experimental/deque", - "//buildtools/third_party/libc++/trunk/include/experimental/filesystem", "//buildtools/third_party/libc++/trunk/include/experimental/forward_list", "//buildtools/third_party/libc++/trunk/include/experimental/functional", "//buildtools/third_party/libc++/trunk/include/experimental/iterator", @@ -205,6 +550,7 @@ libcxx_headers = [ "//buildtools/third_party/libc++/trunk/include/type_traits", "//buildtools/third_party/libc++/trunk/include/typeindex", "//buildtools/third_party/libc++/trunk/include/typeinfo", + "//buildtools/third_party/libc++/trunk/include/uchar.h", "//buildtools/third_party/libc++/trunk/include/unordered_map", "//buildtools/third_party/libc++/trunk/include/unordered_set", "//buildtools/third_party/libc++/trunk/include/utility", diff --git a/patches/boringssl/expose_aes-cfb.patch b/patches/boringssl/expose_aes-cfb.patch index 767013b5404cc..f7c95c952449b 100644 --- a/patches/boringssl/expose_aes-cfb.patch +++ b/patches/boringssl/expose_aes-cfb.patch @@ -58,10 +58,10 @@ index 852b76bea69988e0b3ac76a17b603128f239dde0..d443f4dc2daea0b7aa86ae75d31d995f callback(EVP_aes_192_ctr(), "aes-192-ctr", NULL, arg); callback(EVP_aes_256_ctr(), "aes-256-ctr", NULL, arg); diff --git a/include/openssl/cipher.h b/include/openssl/cipher.h -index 2458847e5640fe955a9971aa77c27251e5091db5..a0b3ac5f6b55921a542f27108beca93d6372c6fc 100644 +index 380d25d9c2a8efb0636db5749a8e3b1ba6908ad5..7a5aa1c142e15cf06e63882e83d82a93c0d38785 100644 --- a/include/openssl/cipher.h +++ b/include/openssl/cipher.h -@@ -448,6 +448,7 @@ OPENSSL_EXPORT const EVP_CIPHER *EVP_des_ede3_ecb(void); +@@ -460,6 +460,7 @@ OPENSSL_EXPORT const EVP_CIPHER *EVP_des_ede3_ecb(void); // EVP_aes_128_cfb128 is only available in decrepit. OPENSSL_EXPORT const EVP_CIPHER *EVP_aes_128_cfb128(void); diff --git a/patches/chromium/.patches b/patches/chromium/.patches index fca913719ee48..5ee99b9400d8f 100644 --- a/patches/chromium/.patches +++ b/patches/chromium/.patches @@ -75,7 +75,6 @@ skip_atk_toolchain_check.patch worker_feat_add_hook_to_notify_script_ready.patch chore_provide_iswebcontentscreationoverridden_with_full_params.patch fix_properly_honor_printing_page_ranges.patch -chore_expose_v8_initialization_isolate_callbacks.patch export_gin_v8platform_pageallocator_for_usage_outside_of_the_gin.patch fix_export_zlib_symbols.patch don_t_use_potentially_null_getwebframe_-_view_when_get_blink.patch @@ -112,3 +111,5 @@ build_disable_print_content_analysis.patch custom_protocols_plzserviceworker.patch feat_filter_out_non-shareable_windows_in_the_current_application_in.patch posix_replace_doubleforkandexec_with_forkandspawn.patch +fix_allow_guest_webcontents_to_enter_fullscreen.patch +disable_freezing_flags_after_init_in_node.patch diff --git a/patches/chromium/add_contentgpuclient_precreatemessageloop_callback.patch b/patches/chromium/add_contentgpuclient_precreatemessageloop_callback.patch index 9176b7a52a1ad..669177d61b0f8 100644 --- a/patches/chromium/add_contentgpuclient_precreatemessageloop_callback.patch +++ b/patches/chromium/add_contentgpuclient_precreatemessageloop_callback.patch @@ -10,10 +10,10 @@ Allows Electron to restore WER when ELECTRON_DEFAULT_ERROR_MODE is set. This should be upstreamed. diff --git a/content/gpu/gpu_main.cc b/content/gpu/gpu_main.cc -index e0ff6fae1e96699e7cb54c9e82a3c68a8e95602b..2179a906bb6c93fbfaa8e7b7e64fddfaab034e94 100644 +index 3cd3d27448485e30dda92782df2df1e11635b26b..39c1615e0ac1456d2d2b350e03ef6e56c8efee53 100644 --- a/content/gpu/gpu_main.cc +++ b/content/gpu/gpu_main.cc -@@ -241,6 +241,10 @@ int GpuMain(MainFunctionParams parameters) { +@@ -239,6 +239,10 @@ int GpuMain(MainFunctionParams parameters) { // to the GpuProcessHost once the GpuServiceImpl has started. viz::GpuServiceImpl::InstallPreInitializeLogHandler(); @@ -24,9 +24,9 @@ index e0ff6fae1e96699e7cb54c9e82a3c68a8e95602b..2179a906bb6c93fbfaa8e7b7e64fddfa // We are experiencing what appear to be memory-stomp issues in the GPU // process. These issues seem to be impacting the task executor and listeners // registered to it. Create the task executor on the heap to guard against -@@ -347,7 +351,6 @@ int GpuMain(MainFunctionParams parameters) { - GpuProcess gpu_process(io_thread_priority); - #endif +@@ -345,7 +349,6 @@ int GpuMain(MainFunctionParams parameters) { + ChildProcess gpu_process(io_thread_priority); + DCHECK(base::ThreadPoolInstance::Get()->WasStarted()); - auto* client = GetContentClient()->gpu(); if (client) diff --git a/patches/chromium/add_didinstallconditionalfeatures.patch b/patches/chromium/add_didinstallconditionalfeatures.patch index bd92d7ecb804e..2ba5b9542c5e8 100644 --- a/patches/chromium/add_didinstallconditionalfeatures.patch +++ b/patches/chromium/add_didinstallconditionalfeatures.patch @@ -10,7 +10,7 @@ DidCreateScriptContext is called, not all JS APIs are available in the context, which can cause some preload scripts to trip. diff --git a/content/public/renderer/render_frame_observer.h b/content/public/renderer/render_frame_observer.h -index d921125d153742dd09e34418c19195a3d61bef1f..5348c3289a94c86bbbc9bb07be26cc56b4986788 100644 +index accbd08ec3f126e5fd5d5f3c7f636d8ccea56457..59e6c571ceb6699ddcb5cb178383ed382b277dea 100644 --- a/content/public/renderer/render_frame_observer.h +++ b/content/public/renderer/render_frame_observer.h @@ -136,6 +136,8 @@ class CONTENT_EXPORT RenderFrameObserver : public IPC::Listener, @@ -23,10 +23,10 @@ index d921125d153742dd09e34418c19195a3d61bef1f..5348c3289a94c86bbbc9bb07be26cc56 int32_t world_id) {} virtual void DidClearWindowObject() {} diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc -index 831db39365764d4001b8d602b225f157d3562ca8..4aabe0781d9e4150dddce76a50b993d0b8da8068 100644 +index 2c84b31ec771c11818e677e5d120fb965db6da86..f703ab8f616e9765ed3384654a271f251c16ac71 100644 --- a/content/renderer/render_frame_impl.cc +++ b/content/renderer/render_frame_impl.cc -@@ -4502,6 +4502,12 @@ void RenderFrameImpl::DidCreateScriptContext(v8::Local context, +@@ -4469,6 +4469,12 @@ void RenderFrameImpl::DidCreateScriptContext(v8::Local context, observer.DidCreateScriptContext(context, world_id); } @@ -40,10 +40,10 @@ index 831db39365764d4001b8d602b225f157d3562ca8..4aabe0781d9e4150dddce76a50b993d0 int world_id) { for (auto& observer : observers_) diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h -index e903ba9ec4f8d32c5d3a6795f0a20f2addf95743..bb9755b981cf96e131e6545f778f73607fabdd02 100644 +index 3d492ed695a78519207c3e760405b2b7f4edb80e..d6ea308e4eaba67a597af2c08c406942588811a1 100644 --- a/content/renderer/render_frame_impl.h +++ b/content/renderer/render_frame_impl.h -@@ -604,6 +604,8 @@ class CONTENT_EXPORT RenderFrameImpl +@@ -608,6 +608,8 @@ class CONTENT_EXPORT RenderFrameImpl uint32_t ng_call_count) override; void DidCreateScriptContext(v8::Local context, int world_id) override; @@ -53,10 +53,10 @@ index e903ba9ec4f8d32c5d3a6795f0a20f2addf95743..bb9755b981cf96e131e6545f778f7360 int world_id) override; void DidChangeScrollOffset() override; diff --git a/third_party/blink/public/web/web_local_frame_client.h b/third_party/blink/public/web/web_local_frame_client.h -index 595441198b5253e5f36f97303e952e642998be39..1b17db7b9285cb874e74abdd896888c12b288565 100644 +index 97c7d874e74ed65e960b1cce18edc1520583a2ab..c6317472b0ce1375e1c5762be59684a74c7bcde5 100644 --- a/third_party/blink/public/web/web_local_frame_client.h +++ b/third_party/blink/public/web/web_local_frame_client.h -@@ -598,6 +598,9 @@ class BLINK_EXPORT WebLocalFrameClient { +@@ -602,6 +602,9 @@ class BLINK_EXPORT WebLocalFrameClient { virtual void DidCreateScriptContext(v8::Local, int32_t world_id) {} @@ -79,7 +79,7 @@ index a6ba8411384855c82712960375bc949c5c2bd522..fc86ca807c9c1bda9236160580b09415 if (World().IsMainWorld()) { GetFrame()->Loader().DispatchDidClearWindowObjectInMainWorld(); diff --git a/third_party/blink/renderer/core/frame/local_frame_client.h b/third_party/blink/renderer/core/frame/local_frame_client.h -index 6fb24096d3a5415f59cba2a8a5a6f36fe838dcc1..a4089fb3989ecd37d5b01baeb03c2ac1f4f05b53 100644 +index c5b2d86bb3f7d75e99fda9c116dfd8f6ba036f1b..9d3e10d067006fa2043929dc3f9ab39f9bc126c9 100644 --- a/third_party/blink/renderer/core/frame/local_frame_client.h +++ b/third_party/blink/renderer/core/frame/local_frame_client.h @@ -298,6 +298,8 @@ class CORE_EXPORT LocalFrameClient : public FrameClient { @@ -92,7 +92,7 @@ index 6fb24096d3a5415f59cba2a8a5a6f36fe838dcc1..a4089fb3989ecd37d5b01baeb03c2ac1 int32_t world_id) = 0; virtual bool AllowScriptExtensions() = 0; diff --git a/third_party/blink/renderer/core/frame/local_frame_client_impl.cc b/third_party/blink/renderer/core/frame/local_frame_client_impl.cc -index 40042e1fa2622a871d0ed512f1f6fda1cdda56a6..a377548b36712bd4971bae6b4c0afdc5c8fdbdfc 100644 +index da7bd0f6c3aa7f4b787c404e1d169ee261e17836..ad2e7a0905dd7678a1f29aa03c9571bc84678029 100644 --- a/third_party/blink/renderer/core/frame/local_frame_client_impl.cc +++ b/third_party/blink/renderer/core/frame/local_frame_client_impl.cc @@ -273,6 +273,13 @@ void LocalFrameClientImpl::DidCreateScriptContext( @@ -110,7 +110,7 @@ index 40042e1fa2622a871d0ed512f1f6fda1cdda56a6..a377548b36712bd4971bae6b4c0afdc5 v8::Local context, int32_t world_id) { diff --git a/third_party/blink/renderer/core/frame/local_frame_client_impl.h b/third_party/blink/renderer/core/frame/local_frame_client_impl.h -index 1f929d9535ca19a2c443e13f2bafce179f5870df..fe7605585501fcc1fd515f1d94fda7e27d5ba632 100644 +index f2e228ab14d71999c64c204d5f65df326fadbd17..d983d944a5d28de8711c50efe73e4b104b403f9b 100644 --- a/third_party/blink/renderer/core/frame/local_frame_client_impl.h +++ b/third_party/blink/renderer/core/frame/local_frame_client_impl.h @@ -80,6 +80,8 @@ class CORE_EXPORT LocalFrameClientImpl final : public LocalFrameClient { diff --git a/patches/chromium/allow_disabling_blink_scheduler_throttling_per_renderview.patch b/patches/chromium/allow_disabling_blink_scheduler_throttling_per_renderview.patch index 785bc29c679d7..19fbc16b27275 100644 --- a/patches/chromium/allow_disabling_blink_scheduler_throttling_per_renderview.patch +++ b/patches/chromium/allow_disabling_blink_scheduler_throttling_per_renderview.patch @@ -85,10 +85,10 @@ index 5e4032ccf916f969cd669af7d983becddb57c72b..a858c9f2fa609ae756a2e70d0362f2de // Visibility ----------------------------------------------------------- diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc -index 229d9f2112e70f3bbff6e6986ab01c67483a1ae9..0529b4399959a2a2b9b0131dd8736a87fb973b0b 100644 +index 3f6460ceee1e3268db45fec668a5e75353643bcb..818394c235c3f71289218098c7db77e00d156d92 100644 --- a/third_party/blink/renderer/core/exported/web_view_impl.cc +++ b/third_party/blink/renderer/core/exported/web_view_impl.cc -@@ -3711,6 +3711,13 @@ PageScheduler* WebViewImpl::Scheduler() const { +@@ -3727,6 +3727,13 @@ PageScheduler* WebViewImpl::Scheduler() const { return GetPage()->GetPageScheduler(); } @@ -102,7 +102,7 @@ index 229d9f2112e70f3bbff6e6986ab01c67483a1ae9..0529b4399959a2a2b9b0131dd8736a87 void WebViewImpl::SetVisibilityState( mojom::blink::PageVisibilityState visibility_state, bool is_initial_state) { -@@ -3722,7 +3729,8 @@ void WebViewImpl::SetVisibilityState( +@@ -3738,7 +3745,8 @@ void WebViewImpl::SetVisibilityState( } GetPage()->SetVisibilityState(visibility_state, is_initial_state); GetPage()->GetPageScheduler()->SetPageVisible( diff --git a/patches/chromium/allow_new_privileges_in_unsandboxed_child_processes.patch b/patches/chromium/allow_new_privileges_in_unsandboxed_child_processes.patch index 31c19ddc9a29f..3e7cca104eec5 100644 --- a/patches/chromium/allow_new_privileges_in_unsandboxed_child_processes.patch +++ b/patches/chromium/allow_new_privileges_in_unsandboxed_child_processes.patch @@ -6,7 +6,7 @@ Subject: allow new privileges in unsandboxed child processes This allows unsandboxed renderers to launch setuid processes on Linux. diff --git a/content/browser/child_process_launcher_helper_linux.cc b/content/browser/child_process_launcher_helper_linux.cc -index b2b29e715d6e5ea427faf6829e935e91dd87d471..138b5da2e5ae85760faaeeff92168d1070b6f562 100644 +index 16d838b710d4f717733f4aa8f92f144922969b3b..ff2c78c7b803159dde97dafdb799d9b8761dc3fd 100644 --- a/content/browser/child_process_launcher_helper_linux.cc +++ b/content/browser/child_process_launcher_helper_linux.cc @@ -54,6 +54,18 @@ bool ChildProcessLauncherHelper::BeforeLaunchOnLauncherThread( diff --git a/patches/chromium/blink_local_frame.patch b/patches/chromium/blink_local_frame.patch index 931e0185041f2..232aced77264b 100644 --- a/patches/chromium/blink_local_frame.patch +++ b/patches/chromium/blink_local_frame.patch @@ -15,7 +15,7 @@ Refs changes in: This patch reverts the changes to fix associated crashes in Electron. diff --git a/third_party/blink/renderer/core/frame/frame.cc b/third_party/blink/renderer/core/frame/frame.cc -index f370d230361c3ab524c0fc74facf8954840aa29f..0e62d29e44a971d49d70e485509d0b59f5cb31c7 100644 +index b1b53542ad5c10619c86e423c61007cd380d0ff9..903794e43f81fb5783275eff8ffb7c9ef89e03e9 100644 --- a/third_party/blink/renderer/core/frame/frame.cc +++ b/third_party/blink/renderer/core/frame/frame.cc @@ -123,14 +123,6 @@ bool Frame::Detach(FrameDetachType type) { @@ -49,7 +49,7 @@ index f370d230361c3ab524c0fc74facf8954840aa29f..0e62d29e44a971d49d70e485509d0b59 // its owning reference back to our owning LocalFrame. client_->Detached(type); diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc -index d5ef00cb9870c2dc767d80595a39af4302c3e3c3..f3a2a9527f97902f357782eb445cf63777c77398 100644 +index fccb4b6dc2da482f10f1ea011931361d9fd96d06..3e89a6f0cc2959fe305c08b482e2c014d59e15d2 100644 --- a/third_party/blink/renderer/core/frame/local_frame.cc +++ b/third_party/blink/renderer/core/frame/local_frame.cc @@ -544,10 +544,6 @@ bool LocalFrame::DetachImpl(FrameDetachType type) { diff --git a/patches/chromium/breakpad_treat_node_processes_as_browser_processes.patch b/patches/chromium/breakpad_treat_node_processes_as_browser_processes.patch index f550c068a4fe7..810480a1b56d5 100644 --- a/patches/chromium/breakpad_treat_node_processes_as_browser_processes.patch +++ b/patches/chromium/breakpad_treat_node_processes_as_browser_processes.patch @@ -10,7 +10,7 @@ breakpad independently, as a "browser" process. This patches crash annotation. diff --git a/components/crash/core/app/breakpad_linux.cc b/components/crash/core/app/breakpad_linux.cc -index 3933fa761768b5a45891bfef4c2c2123b92fc276..2eb52b71d7ebc7525cceffbecc99db6751429afd 100644 +index b1f8fd4494e7f5deac078023c2e0240d701e1f13..a372e9bb12f9cec6235fe529d73b6e0009328038 100644 --- a/components/crash/core/app/breakpad_linux.cc +++ b/components/crash/core/app/breakpad_linux.cc @@ -719,8 +719,13 @@ bool CrashDone(const MinidumpDescriptor& minidump, 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 93c0696100b5a..311b57b30dd81 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 dc59a88bc930d4d7b8e606434d940cac5b834bd0..6a583029436f033dc2736b9d7407f26637936add 100644 +index b6234183651923505bd2a4a8640ea21508033ef1..e486f92e909f43bb65633245b7dcb3145d0a7604 100644 --- a/chrome/BUILD.gn +++ b/chrome/BUILD.gn @@ -175,11 +175,16 @@ if (!is_android && !is_mac) { @@ -33,10 +33,10 @@ index dc59a88bc930d4d7b8e606434d940cac5b834bd0..6a583029436f033dc2736b9d7407f266 "//base", "//build:branding_buildflags", diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn -index 79aa50fbb9944052163bfdf958c5add60a0151f8..9fce5f07a79f801253c6bd8658ed7dba902856ad 100644 +index bbe8847b3da8d6ec9c5d10bbe875de8c34e060d3..e2e12c141932f52f49d24a0bad4a53007133d9de 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -4479,7 +4479,7 @@ static_library("browser") { +@@ -4551,7 +4551,7 @@ static_library("browser") { # On Windows, the hashes are embedded in //chrome:chrome_initial rather # than here in :chrome_dll. @@ -46,10 +46,10 @@ index 79aa50fbb9944052163bfdf958c5add60a0151f8..9fce5f07a79f801253c6bd8658ed7dba sources += [ "certificate_viewer_stub.cc" ] } diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn -index 65bee9c9d02c6f95cce6ba60d69e2a1b879a1c2f..e26897337f8c96a493936ab1342eb6b7c2c63ffe 100644 +index cd30ea6c938860837d7427fee851974b0ec5831b..d88eb38a8ce9a0f607b85e7efe40fe23f6ab5f08 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn -@@ -5870,7 +5870,6 @@ test("unit_tests") { +@@ -5912,7 +5912,6 @@ test("unit_tests") { deps += [ "//chrome:other_version", @@ -57,7 +57,7 @@ index 65bee9c9d02c6f95cce6ba60d69e2a1b879a1c2f..e26897337f8c96a493936ab1342eb6b7 "//chrome//services/util_win:unit_tests", "//chrome/app:chrome_dll_resources", "//chrome/browser:chrome_process_finder", -@@ -5893,6 +5892,10 @@ test("unit_tests") { +@@ -5936,6 +5935,10 @@ test("unit_tests") { "//ui/resources", ] @@ -68,7 +68,7 @@ index 65bee9c9d02c6f95cce6ba60d69e2a1b879a1c2f..e26897337f8c96a493936ab1342eb6b7 ldflags = [ "/DELAYLOAD:api-ms-win-core-winrt-error-l1-1-0.dll", "/DELAYLOAD:api-ms-win-core-winrt-l1-1-0.dll", -@@ -6786,7 +6789,6 @@ test("unit_tests") { +@@ -6826,7 +6829,6 @@ test("unit_tests") { } deps += [ @@ -76,7 +76,7 @@ index 65bee9c9d02c6f95cce6ba60d69e2a1b879a1c2f..e26897337f8c96a493936ab1342eb6b7 "//chrome/browser:cart_db_content_proto", "//chrome/browser:coupon_db_content_proto", "//chrome/browser/media/router:test_support", -@@ -6887,6 +6889,10 @@ test("unit_tests") { +@@ -6932,6 +6934,10 @@ test("unit_tests") { } } diff --git a/patches/chromium/build_gn.patch b/patches/chromium/build_gn.patch index bd23b789dcd3b..a8ab854a62f91 100644 --- a/patches/chromium/build_gn.patch +++ b/patches/chromium/build_gn.patch @@ -14,7 +14,7 @@ tradeoff is that switching from MAS_BUILD to !MAS_BUILD or vice-versa will rebuild the entire tree. diff --git a/build/config/BUILDCONFIG.gn b/build/config/BUILDCONFIG.gn -index d960648941d8b959b25f87b364a594ec44760348..74a14a2373305e2e62b974b34a28ea9a62c6a911 100644 +index c737e53c2ce7237974f6c749eae60ba1de7ec2c1..26ba3ae4a77bc8f525c2ad927ff2956c028ef337 100644 --- a/build/config/BUILDCONFIG.gn +++ b/build/config/BUILDCONFIG.gn @@ -123,6 +123,9 @@ if (current_os == "") { @@ -27,7 +27,7 @@ index d960648941d8b959b25f87b364a594ec44760348..74a14a2373305e2e62b974b34a28ea9a # Set to enable the official build level of optimization. This has nothing # to do with branding, but enables an additional level of optimization above # release (!is_debug). This might be better expressed as a tri-state -@@ -349,6 +352,7 @@ default_compiler_configs = [ +@@ -348,6 +351,7 @@ default_compiler_configs = [ "//build/config/compiler/pgo:default_pgo_flags", "//build/config/coverage:default_coverage", "//build/config/sanitizers:default_sanitizer_flags", diff --git a/patches/chromium/build_libc_as_static_library.patch b/patches/chromium/build_libc_as_static_library.patch index f0bd3d9fd8ef3..ea753eee3f9e0 100644 --- a/patches/chromium/build_libc_as_static_library.patch +++ b/patches/chromium/build_libc_as_static_library.patch @@ -7,7 +7,7 @@ Build libc++ as static library to compile and pass nan tests diff --git a/buildtools/third_party/libc++/BUILD.gn b/buildtools/third_party/libc++/BUILD.gn -index 74b6ad644d49c003996db0eab225ea30ac17420a..0a1ba3510be3047bfc34e603c5aaafbf15908269 100644 +index b3e5378f711c54b76c73179e791646d4e5e4e96b..262c8e53ec25b2e91a73b5971d64dbe5d5e005a1 100644 --- a/buildtools/third_party/libc++/BUILD.gn +++ b/buildtools/third_party/libc++/BUILD.gn @@ -44,7 +44,11 @@ config("winver") { 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 89e171dc5eb23..056be0692568f 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,10 +6,10 @@ Subject: build: make libcxx_abi_unstable false for electron https://nornagon.medium.com/a-libc-odyssey-973e51649063 diff --git a/build/config/c++/BUILD.gn b/build/config/c++/BUILD.gn -index 046792ac275853bf109537589b911cfada44ed24..e43daeaa8f8c8e23eea99b3f8f5f48f92012bbc1 100644 +index 2e5843b9f0a5d39d8dbfea0ae5d2ebb413c0ac7d..f4c901e9980ad068a2903482f712bfa8b1310057 100644 --- a/build/config/c++/BUILD.gn +++ b/build/config/c++/BUILD.gn -@@ -8,6 +8,11 @@ assert(use_custom_libcxx, "should only be used if use_custom_libcxx is set") +@@ -9,6 +9,11 @@ assert(use_custom_libcxx, "should only be used if use_custom_libcxx is set") libcxx_abi_unstable = true diff --git a/patches/chromium/can_create_window.patch b/patches/chromium/can_create_window.patch index 7f3714ced8c89..27a3a42e347bf 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 c983b5f4c20acba8a7d779a634cd1593ef69b1ae..e612764997277da3411d8040850756eb38996cca 100644 +index b857d325233430a5b79b3022d33823486e558309..83cc6ded4b3354f37b8e1dc0d9e4f3289863fa09 100644 --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc -@@ -6922,6 +6922,7 @@ void RenderFrameHostImpl::CreateNewWindow( +@@ -6966,6 +6966,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 c983b5f4c20acba8a7d779a634cd1593ef69b1ae..e612764997277da3411d8040850756eb &no_javascript_access); diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc -index b94e87b6f90c986f115a87baf8214baeb8103826..987e437641b7978290aa2633755b67f9099e1d04 100644 +index 33f6efe4df4eecabcbcd08f908ed3ef12d056eb2..0e1e25d40ebf3ca92c57dfdfb52c5269198aa6f7 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc -@@ -3912,6 +3912,14 @@ FrameTree* WebContentsImpl::CreateNewWindow( +@@ -3947,6 +3947,14 @@ FrameTree* WebContentsImpl::CreateNewWindow( } auto* new_contents_impl = new_contents.get(); @@ -39,7 +39,7 @@ index b94e87b6f90c986f115a87baf8214baeb8103826..987e437641b7978290aa2633755b67f9 new_contents_impl->GetController().SetSessionStorageNamespace( partition_config, session_storage_namespace); -@@ -3956,12 +3964,6 @@ FrameTree* WebContentsImpl::CreateNewWindow( +@@ -3991,12 +3999,6 @@ FrameTree* WebContentsImpl::CreateNewWindow( AddWebContentsDestructionObserver(new_contents_impl); } @@ -53,10 +53,10 @@ index b94e87b6f90c986f115a87baf8214baeb8103826..987e437641b7978290aa2633755b67f9 new_contents_impl, opener, params.target_url, params.referrer.To(), params.disposition, diff --git a/content/common/frame.mojom b/content/common/frame.mojom -index 5aca51ea4154941512e989048295c7de0475c14c..278accd8c6f14a4d91cc2ff4e336e365279c7b9b 100644 +index 9c3a03faeee19f6f0a250680db36906ee64bf55a..0450700d02c74e047fa5124aa43b9f75b869917d 100644 --- a/content/common/frame.mojom +++ b/content/common/frame.mojom -@@ -569,6 +569,10 @@ struct CreateNewWindowParams { +@@ -566,6 +566,10 @@ struct CreateNewWindowParams { // Governs how downloads are handled if `target_url` results in a download. blink.mojom.NavigationDownloadPolicy download_policy; @@ -68,10 +68,10 @@ index 5aca51ea4154941512e989048295c7de0475c14c..278accd8c6f14a4d91cc2ff4e336e365 // 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 82d33875526759dda05a1818543c0605382597f4..ec89c920f0e0ad3638749b1468bcd54f74b3cce5 100644 +index 69bcd725d0f86bf3b175fde86bd2dbd85b59f002..b72d89b19024a9074108dde4c5c9cd0f45b719bb 100644 --- a/content/public/browser/content_browser_client.cc +++ b/content/public/browser/content_browser_client.cc -@@ -594,6 +594,8 @@ bool ContentBrowserClient::CanCreateWindow( +@@ -595,6 +595,8 @@ bool ContentBrowserClient::CanCreateWindow( const std::string& frame_name, WindowOpenDisposition disposition, const blink::mojom::WindowFeatures& features, @@ -81,10 +81,10 @@ index 82d33875526759dda05a1818543c0605382597f4..ec89c920f0e0ad3638749b1468bcd54f 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 e2c88a7e692406c9774a0e9783df612cbc38d7cd..4e069af9256eb106b50e84d1243c92353daf2015 100644 +index d0b7aed3162b8ea7673ab3ef31d2a3302f4e6456..6328fc21548f2b8277b461f9938dbcc50f6853f1 100644 --- a/content/public/browser/content_browser_client.h +++ b/content/public/browser/content_browser_client.h -@@ -165,6 +165,7 @@ class NetworkService; +@@ -164,6 +164,7 @@ class NetworkService; class TrustedURLLoaderHeaderClient; } // namespace mojom struct ResourceRequest; @@ -92,7 +92,7 @@ index e2c88a7e692406c9774a0e9783df612cbc38d7cd..4e069af9256eb106b50e84d1243c9235 } // namespace network namespace sandbox { -@@ -968,6 +969,8 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -967,6 +968,8 @@ class CONTENT_EXPORT ContentBrowserClient { const std::string& frame_name, WindowOpenDisposition disposition, const blink::mojom::WindowFeatures& features, @@ -102,7 +102,7 @@ index e2c88a7e692406c9774a0e9783df612cbc38d7cd..4e069af9256eb106b50e84d1243c9235 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 daf9b4566396c6d681760329cf4ba6869bbb55e4..321d5cfc36e40f2a649e8ea5910f4082b71b62e1 100644 +index ef3889063b562a37fbd945fe30db0d776ecaee7a..99e8449e9c515dd70ed88546a71f83ae139178fe 100644 --- a/content/public/browser/web_contents_delegate.cc +++ b/content/public/browser/web_contents_delegate.cc @@ -26,6 +26,17 @@ namespace content { @@ -124,7 +124,7 @@ index daf9b4566396c6d681760329cf4ba6869bbb55e4..321d5cfc36e40f2a649e8ea5910f4082 const OpenURLParams& params) { return nullptr; diff --git a/content/public/browser/web_contents_delegate.h b/content/public/browser/web_contents_delegate.h -index 04aa4d993b331396ee20464f6e1d2da10c91c834..2556c044b6e28501a5fac9b0040e623b8f35f497 100644 +index 348dcde05d71e7d16e4c7bb1d8d9f8718070e669..5a9cc64d6e0d9d01f5dc133c7fcab34101bc32db 100644 --- a/content/public/browser/web_contents_delegate.h +++ b/content/public/browser/web_contents_delegate.h @@ -16,6 +16,7 @@ @@ -220,14 +220,15 @@ index 34570168ccb123f5102dcf8fa6bbf98e7c373ec6..192701e56d258da41b3724292853885e } // namespace blink diff --git a/third_party/blink/renderer/core/frame/local_dom_window.cc b/third_party/blink/renderer/core/frame/local_dom_window.cc -index a25203186cc2df437fe3f9fe309599d86284aefb..b288472c5a00d76077859f02c0e1abca826aa8be 100644 +index 84eca5b0b66eda6bebf3fdc304438325545a1f17..2f0615ee1454946d6f46f6626ce9b860a0e04fee 100644 --- a/third_party/blink/renderer/core/frame/local_dom_window.cc +++ b/third_party/blink/renderer/core/frame/local_dom_window.cc -@@ -2093,6 +2093,7 @@ DOMWindow* LocalDOMWindow::open(v8::Isolate* isolate, - +@@ -2104,6 +2104,8 @@ DOMWindow* LocalDOMWindow::open(v8::Isolate* isolate, WebWindowFeatures window_features = - GetWindowFeaturesFromString(features, incumbent_window); -+ window_features.raw_features = features; + GetWindowFeaturesFromString(features, entered_window); ++ window_features.raw_features = features; ++ // In fenced frames, we should always use `noopener`. if (GetFrame()->IsInFencedFrameTree()) { + window_features.noopener = true; diff --git a/patches/chromium/chore_expose_v8_initialization_isolate_callbacks.patch b/patches/chromium/chore_expose_v8_initialization_isolate_callbacks.patch deleted file mode 100644 index e44f77536c7f9..0000000000000 --- a/patches/chromium/chore_expose_v8_initialization_isolate_callbacks.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Shelley Vohr -Date: Mon, 5 Oct 2020 13:43:59 -0700 -Subject: chore: expose v8 initialization isolate callbacks - -This commit is necessary in order to ensure consistent behavior from -v8 Isolate callbacks in contexts which Node.js does not control. If -we're running with contextIsolation enabled, we should be falling back -to Blink's logic. This will be upstreamed in some form. - -diff --git a/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc b/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc -index f417dca0103ddfd8ce6e3b3a4d033ea42133604e..d0ee37d147243858d997be230c12ea3e41e6c873 100644 ---- a/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc -+++ b/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc -@@ -448,8 +448,9 @@ CodeGenerationCheckCallbackInMainThread(v8::Local context, - return {true, std::move(stringified_source)}; - } - --bool V8Initializer::WasmCodeGenerationCheckCallbackInMainThread(v8::Local context, -- v8::Local source) { -+bool V8Initializer::WasmCodeGenerationCheckCallbackInMainThread( -+ v8::Local context, -+ v8::Local source) { - if (ExecutionContext* execution_context = ToExecutionContext(context)) { - if (ContentSecurityPolicy* policy = - execution_context->GetContentSecurityPolicy()) { -diff --git a/third_party/blink/renderer/bindings/core/v8/v8_initializer.h b/third_party/blink/renderer/bindings/core/v8/v8_initializer.h -index 932c6aad3df51dd6790e55bf708703767843dc5e..6865fd33e62f766c5a162ded8627c332bf2ed173 100644 ---- a/third_party/blink/renderer/bindings/core/v8/v8_initializer.h -+++ b/third_party/blink/renderer/bindings/core/v8/v8_initializer.h -@@ -69,8 +69,8 @@ class CORE_EXPORT V8Initializer { - static void MessageHandlerInWorker(v8::Local, - v8::Local); - static bool WasmCodeGenerationCheckCallbackInMainThread( -- v8::Local context, -- v8::Local source); -+ v8::Local context, -+ v8::Local source); - }; - - } // namespace blink diff --git a/patches/chromium/chore_provide_iswebcontentscreationoverridden_with_full_params.patch b/patches/chromium/chore_provide_iswebcontentscreationoverridden_with_full_params.patch index a72ce1e616d02..29f2ab25c3a1d 100644 --- a/patches/chromium/chore_provide_iswebcontentscreationoverridden_with_full_params.patch +++ b/patches/chromium/chore_provide_iswebcontentscreationoverridden_with_full_params.patch @@ -35,7 +35,7 @@ index 5b4d70991e19edcdfee731c56251932bf43e535f..4d996e3821410b2325ef85499f8c307c #endif // CHROME_BROWSER_ANDROID_DOCUMENT_DOCUMENT_WEB_CONTENTS_DELEGATE_H_ diff --git a/chrome/browser/media/offscreen_tab.cc b/chrome/browser/media/offscreen_tab.cc -index 370a2eaf18f86e16d4198a4f0001f96abfebad07..72f7032a8fe2011a0bd80d557e661fc487c3b876 100644 +index 3289268d3ddb3fbb625b8498c2f84370c37acdff..89920af3e44257b6091bb558537fe07d2bb2d899 100644 --- a/chrome/browser/media/offscreen_tab.cc +++ b/chrome/browser/media/offscreen_tab.cc @@ -285,8 +285,7 @@ bool OffscreenTab::IsWebContentsCreationOverridden( @@ -63,7 +63,7 @@ index faa684c429e8cd5817c043db48dcbea33c6c8782..8b5991bc8279585cc0749f6816aa8a03 content::RenderFrameHost* requesting_frame, const blink::mojom::FullscreenOptions& options) final; diff --git a/chrome/browser/ui/ash/ash_web_view_impl.cc b/chrome/browser/ui/ash/ash_web_view_impl.cc -index 2c877ddbb8c1448a73c0f0e0af27c7fecb1b7848..e1dfc70c951dd004dd8b37607dc8840b804a1e54 100644 +index 268355f22577cf21926e209a9fcdb3f52314f2ac..80f998cdb10d9955e438ba5ef4599b35c448fae2 100644 --- a/chrome/browser/ui/ash/ash_web_view_impl.cc +++ b/chrome/browser/ui/ash/ash_web_view_impl.cc @@ -84,10 +84,9 @@ bool AshWebViewImpl::IsWebContentsCreationOverridden( @@ -94,7 +94,7 @@ index f0333177f885000fb22818ffa30a0c4ad520a161..03e82957f9d7bf009dcbf5fcd43718c9 content::WebContents* source, const content::OpenURLParams& params) override; diff --git a/chrome/browser/ui/ash/keyboard/chrome_keyboard_web_contents.cc b/chrome/browser/ui/ash/keyboard/chrome_keyboard_web_contents.cc -index caa6c2dbc6dbf87081da9a2e5c42e9ac2e60c77f..ac0b7dbee8195be8c165444a141629475e97a107 100644 +index 1318d5e04d5448d2b357454c3ce4207264288760..3b0324c35d5b18ed2e29264aae860c4887cdd382 100644 --- a/chrome/browser/ui/ash/keyboard/chrome_keyboard_web_contents.cc +++ b/chrome/browser/ui/ash/keyboard/chrome_keyboard_web_contents.cc @@ -71,8 +71,7 @@ class ChromeKeyboardContentsDelegate : public content::WebContentsDelegate, @@ -108,10 +108,10 @@ index caa6c2dbc6dbf87081da9a2e5c42e9ac2e60c77f..ac0b7dbee8195be8c165444a14162947 } diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc -index 706684de51b047abf2a355416a6361b7ed8542c9..5ccbde951b833bd9413a5c3506da5d982fb3b58e 100644 +index 63d64acc7231821219a7bcd89ee02590637d4b79..007689d1cb803704dc91bd152351ccfc11bd55b7 100644 --- a/chrome/browser/ui/browser.cc +++ b/chrome/browser/ui/browser.cc -@@ -1795,12 +1795,11 @@ bool Browser::IsWebContentsCreationOverridden( +@@ -1801,12 +1801,11 @@ bool Browser::IsWebContentsCreationOverridden( content::SiteInstance* source_site_instance, content::mojom::WindowContainerType window_container_type, const GURL& opener_url, @@ -127,10 +127,10 @@ index 706684de51b047abf2a355416a6361b7ed8542c9..5ccbde951b833bd9413a5c3506da5d98 WebContents* Browser::CreateCustomWebContents( diff --git a/chrome/browser/ui/browser.h b/chrome/browser/ui/browser.h -index 1f02e2e3d3f510b52089fbc835c6401ed693f1b9..6116970cb65bb7699759fad4351497ab057e25c0 100644 +index 87859f4741386c967a0568273a2fd16ad26c4a96..8265417dcf7397b2eb37e997547d1e8cfd977509 100644 --- a/chrome/browser/ui/browser.h +++ b/chrome/browser/ui/browser.h -@@ -836,8 +836,7 @@ class Browser : public TabStripModelObserver, +@@ -839,8 +839,7 @@ class Browser : public TabStripModelObserver, content::SiteInstance* source_site_instance, content::mojom::WindowContainerType window_container_type, const GURL& opener_url, @@ -218,7 +218,7 @@ index 2930898b03d7b7ef86d13733cec3cbe84105c166..76625339f42a867c8b68840253e91648 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 9f46f0b26a0ea42d6bd36e7ec7459a1b2d9c789e..874b7c8d779f471214507417e35449c66b70c97d 100644 +index 186711550a45f4bf383cdceeabac9e1f46aeca89..df1ecec4bf56de72a6164644d3094557a7a52896 100644 --- a/components/offline_pages/content/background_loader/background_loader_contents.cc +++ b/components/offline_pages/content/background_loader/background_loader_contents.cc @@ -83,8 +83,7 @@ bool BackgroundLoaderContents::IsWebContentsCreationOverridden( @@ -246,10 +246,10 @@ index c6bd5c19f8a7ceec17c9e32af5296a9617f3a619..02199b439fba7fdc617b7f7980d958b7 void AddNewContents(content::WebContents* source, std::unique_ptr new_contents, diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc -index 6f09c04cc612d2ac58b62d44516eefa1b66d145c..407f734b77d1ed4876f01327df958847d60e9128 100644 +index 889da8724da515ab7e6b412fbaff434eb53289dc..7dba296aaa55b9aa6026ccdf288171f701601f46 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc -@@ -3860,8 +3860,7 @@ FrameTree* WebContentsImpl::CreateNewWindow( +@@ -3880,8 +3880,7 @@ FrameTree* WebContentsImpl::CreateNewWindow( if (delegate_ && delegate_->IsWebContentsCreationOverridden( source_site_instance, params.window_container_type, @@ -260,7 +260,7 @@ index 6f09c04cc612d2ac58b62d44516eefa1b66d145c..407f734b77d1ed4876f01327df958847 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 321d5cfc36e40f2a649e8ea5910f4082b71b62e1..e78e2aad4f13d7810027b65f321691091611fd2d 100644 +index 99e8449e9c515dd70ed88546a71f83ae139178fe..4f395474d3e0e1bf7a594fe3fa3e4cb53327aa69 100644 --- a/content/public/browser/web_contents_delegate.cc +++ b/content/public/browser/web_contents_delegate.cc @@ -134,8 +134,7 @@ bool WebContentsDelegate::IsWebContentsCreationOverridden( @@ -274,7 +274,7 @@ index 321d5cfc36e40f2a649e8ea5910f4082b71b62e1..e78e2aad4f13d7810027b65f32169109 } diff --git a/content/public/browser/web_contents_delegate.h b/content/public/browser/web_contents_delegate.h -index 2556c044b6e28501a5fac9b0040e623b8f35f497..4c6cd654551b2f5cfd59a5271a8d95a9e6862d3c 100644 +index 5a9cc64d6e0d9d01f5dc133c7fcab34101bc32db..166e506f1afbcb1a3a661479d489e71d8d8ff552 100644 --- a/content/public/browser/web_contents_delegate.h +++ b/content/public/browser/web_contents_delegate.h @@ -317,8 +317,7 @@ class CONTENT_EXPORT WebContentsDelegate { @@ -288,7 +288,7 @@ index 2556c044b6e28501a5fac9b0040e623b8f35f497..4c6cd654551b2f5cfd59a5271a8d95a9 // Allow delegate to creates a custom WebContents when // WebContents::CreateNewWindow() is called. This function is only called diff --git a/extensions/browser/guest_view/extension_options/extension_options_guest.cc b/extensions/browser/guest_view/extension_options/extension_options_guest.cc -index bddbd37ca73369adb82dad5bb8b25f0ab2a7f878..9bf28cd7f926f41041f40d4bc0a497c8b8730b86 100644 +index 8349c8cb2078d09c9550024ae5ca845bdebfbd35..e3763eaa2c6f7ce842cf8964bf5590efd3892c61 100644 --- a/extensions/browser/guest_view/extension_options/extension_options_guest.cc +++ b/extensions/browser/guest_view/extension_options/extension_options_guest.cc @@ -213,8 +213,7 @@ bool ExtensionOptionsGuest::IsWebContentsCreationOverridden( @@ -316,7 +316,7 @@ index 7350382146178f58960a9bf68cd959076d2d9790..a70a94d14bdfa993feab60b8e4f32e10 content::RenderFrameHost* opener, content::SiteInstance* source_site_instance, diff --git a/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc b/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc -index b652f1f30ce7043a0c8434d05a3b1da653aee1fc..259c62c60f302abebf167709b4a1c68ad5607129 100644 +index aef9d1a79fcea0e73541cf8257b498e167c9dfeb..1f0c4209d1c6be31e1abd6bcfcaf181fd2d4858c 100644 --- a/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc +++ b/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc @@ -402,8 +402,7 @@ bool MimeHandlerViewGuest::IsWebContentsCreationOverridden( @@ -343,11 +343,11 @@ index ef6faf317dd4168adf6fd530a7da0b80f9166dec..f401659a81d4aeaf71039d71eb8fec48 content::WebContents* CreateCustomWebContents( content::RenderFrameHost* opener, content::SiteInstance* source_site_instance, -diff --git a/fuchsia/engine/browser/frame_impl.cc b/fuchsia/engine/browser/frame_impl.cc -index d815a972b079676e900be8e312909832ae81bde8..ae28b864fcc2f10007ce33774d2d787c91d65f41 100644 ---- a/fuchsia/engine/browser/frame_impl.cc -+++ b/fuchsia/engine/browser/frame_impl.cc -@@ -406,8 +406,7 @@ bool FrameImpl::IsWebContentsCreationOverridden( +diff --git a/fuchsia_web/webengine/browser/frame_impl.cc b/fuchsia_web/webengine/browser/frame_impl.cc +index bb3db273afbf25b8833df3483da8e8a808a0f42d..8f673a548fb537d138ccfc66e6cdcafd56110841 100644 +--- a/fuchsia_web/webengine/browser/frame_impl.cc ++++ b/fuchsia_web/webengine/browser/frame_impl.cc +@@ -412,8 +412,7 @@ bool FrameImpl::IsWebContentsCreationOverridden( content::SiteInstance* source_site_instance, content::mojom::WindowContainerType window_container_type, const GURL& opener_url, @@ -357,11 +357,11 @@ index d815a972b079676e900be8e312909832ae81bde8..ae28b864fcc2f10007ce33774d2d787c // Specify a generous upper bound for unacknowledged popup windows, so that we // can catch bad client behavior while not interfering with normal operation. constexpr size_t kMaxPendingWebContentsCount = 10; -diff --git a/fuchsia/engine/browser/frame_impl.h b/fuchsia/engine/browser/frame_impl.h -index 50631a4db62448699e7701f7b4e950e8058896ae..13ba38e1cae39ea46e64313c6a9312e504603bbb 100644 ---- a/fuchsia/engine/browser/frame_impl.h -+++ b/fuchsia/engine/browser/frame_impl.h -@@ -309,8 +309,7 @@ class WEB_ENGINE_EXPORT FrameImpl : public fuchsia::web::Frame, +diff --git a/fuchsia_web/webengine/browser/frame_impl.h b/fuchsia_web/webengine/browser/frame_impl.h +index 0661fd642dcee69a7c8f955490dadf32dc0eb468..e3fa74da87513fbfcd035fa872dc938db96c2766 100644 +--- a/fuchsia_web/webengine/browser/frame_impl.h ++++ b/fuchsia_web/webengine/browser/frame_impl.h +@@ -310,8 +310,7 @@ class WEB_ENGINE_EXPORT FrameImpl : public fuchsia::web::Frame, content::SiteInstance* source_site_instance, content::mojom::WindowContainerType window_container_type, const GURL& opener_url, @@ -372,7 +372,7 @@ index 50631a4db62448699e7701f7b4e950e8058896ae..13ba38e1cae39ea46e64313c6a9312e5 int opener_render_process_id, int opener_render_frame_id, diff --git a/headless/lib/browser/headless_web_contents_impl.cc b/headless/lib/browser/headless_web_contents_impl.cc -index 899b8beabdf1131a08583470ace5b468576eeab6..21ab4ae22c54846af78518e897dc23ebe4ce8317 100644 +index 9108af112833f022f82d2645193eb99326633292..882cd523b2ff8b2e51ad5b23a7ba967d473217fc 100644 --- a/headless/lib/browser/headless_web_contents_impl.cc +++ b/headless/lib/browser/headless_web_contents_impl.cc @@ -177,8 +177,7 @@ class HeadlessWebContentsImpl::Delegate : public content::WebContentsDelegate { diff --git a/patches/chromium/crash_allow_disabling_compression_on_linux.patch b/patches/chromium/crash_allow_disabling_compression_on_linux.patch index bfe7658c28575..b64fe0220c598 100644 --- a/patches/chromium/crash_allow_disabling_compression_on_linux.patch +++ b/patches/chromium/crash_allow_disabling_compression_on_linux.patch @@ -13,7 +13,7 @@ Ultimately we should remove the option to disable compression, and subsequently remove this patch. diff --git a/components/crash/core/app/breakpad_linux.cc b/components/crash/core/app/breakpad_linux.cc -index 2eb52b71d7ebc7525cceffbecc99db6751429afd..d3ff2942d831745efed440be0fe1e82441a39ff7 100644 +index a372e9bb12f9cec6235fe529d73b6e0009328038..58f6f559265d0da5e6ca4c711df4b1dbf3d40e38 100644 --- a/components/crash/core/app/breakpad_linux.cc +++ b/components/crash/core/app/breakpad_linux.cc @@ -111,6 +111,8 @@ void SetUploadURL(const std::string& url) { diff --git a/patches/chromium/crash_allow_setting_more_options.patch b/patches/chromium/crash_allow_setting_more_options.patch index 0a049f6b24aad..fbe598088710b 100644 --- a/patches/chromium/crash_allow_setting_more_options.patch +++ b/patches/chromium/crash_allow_setting_more_options.patch @@ -9,7 +9,7 @@ rate-limiting, compression and global annotations. This should be upstreamed. diff --git a/components/crash/core/app/breakpad_linux.cc b/components/crash/core/app/breakpad_linux.cc -index 4ed2558351e37dde0eb35b6eb32f442346ff2490..3933fa761768b5a45891bfef4c2c2123b92fc276 100644 +index 3c28019ae3d1d8fd43e5e027fa3abe6786658885..b1f8fd4494e7f5deac078023c2e0240d701e1f13 100644 --- a/components/crash/core/app/breakpad_linux.cc +++ b/components/crash/core/app/breakpad_linux.cc @@ -113,6 +113,7 @@ void SetUploadURL(const std::string& url) { diff --git a/patches/chromium/custom_protocols_plzserviceworker.patch b/patches/chromium/custom_protocols_plzserviceworker.patch index 5c67bca44ddeb..c0c4dd9f08a42 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 9aba6deb9e11ec2803f163088d1c321dd256787f..1dc24bb4c83acd2ff618b085059c918261b2a3d4 100644 +index 654219d75727c189d377cf14e25a8abdc1002204..3e243964f429c3afcb874b208c672991dd3468bf 100644 --- a/content/browser/service_worker/service_worker_context_wrapper.cc +++ b/content/browser/service_worker/service_worker_context_wrapper.cc -@@ -1616,6 +1616,28 @@ ServiceWorkerContextWrapper::GetLoaderFactoryForBrowserInitiatedRequest( +@@ -1649,6 +1649,28 @@ ServiceWorkerContextWrapper::GetLoaderFactoryForBrowserInitiatedRequest( loader_factory_bundle_info = context()->loader_factory_bundle_for_update_check()->Clone(); @@ -40,7 +40,7 @@ index 9aba6deb9e11ec2803f163088d1c321dd256787f..1dc24bb4c83acd2ff618b085059c9182 if (base::FeatureList::IsEnabled( features::kEnableServiceWorkersForChromeUntrusted) && scope.scheme_piece() == kChromeUIUntrustedScheme) { -@@ -1636,9 +1658,7 @@ ServiceWorkerContextWrapper::GetLoaderFactoryForBrowserInitiatedRequest( +@@ -1669,9 +1691,7 @@ ServiceWorkerContextWrapper::GetLoaderFactoryForBrowserInitiatedRequest( browser_context(), scope_origin)) { config->RegisterURLDataSource(browser_context()); diff --git a/patches/chromium/desktop_media_list.patch b/patches/chromium/desktop_media_list.patch index 1d1ec74f873d3..5a439ea80d375 100644 --- a/patches/chromium/desktop_media_list.patch +++ b/patches/chromium/desktop_media_list.patch @@ -82,10 +82,10 @@ index 1e4a652634fbde2ca9a256baca840bbc5a0e001f..546f5bc3a2f79035f0eec196d9e704b8 const Source& GetSource(int index) const override; DesktopMediaList::Type GetMediaListType() const override; diff --git a/chrome/browser/media/webrtc/native_desktop_media_list.cc b/chrome/browser/media/webrtc/native_desktop_media_list.cc -index 6d8c9d940bb4488ffedc1eb8c543c065bb3953c9..d5092cb0245a4b8dc26073741f0bc6657b943bdd 100644 +index d2297c082f482219f35c3acf5bcc8dadf18bbafb..97b1589793962b2b601a78ef5118256903ee65f9 100644 --- a/chrome/browser/media/webrtc/native_desktop_media_list.cc +++ b/chrome/browser/media/webrtc/native_desktop_media_list.cc -@@ -127,8 +127,9 @@ BOOL CALLBACK AllHwndCollector(HWND hwnd, LPARAM param) { +@@ -139,8 +139,9 @@ BOOL CALLBACK AllHwndCollector(HWND hwnd, LPARAM param) { #endif // BUILDFLAG(IS_WIN) #if BUILDFLAG(IS_MAC) @@ -96,7 +96,7 @@ index 6d8c9d940bb4488ffedc1eb8c543c065bb3953c9..d5092cb0245a4b8dc26073741f0bc665 #endif } // namespace -@@ -415,6 +416,9 @@ void NativeDesktopMediaList::Worker::RefreshNextThumbnail() { +@@ -427,6 +428,9 @@ void NativeDesktopMediaList::Worker::RefreshNextThumbnail() { FROM_HERE, base::BindOnce(&NativeDesktopMediaList::UpdateNativeThumbnailsFinished, media_list_)); @@ -106,7 +106,7 @@ index 6d8c9d940bb4488ffedc1eb8c543c065bb3953c9..d5092cb0245a4b8dc26073741f0bc665 } void NativeDesktopMediaList::Worker::OnCaptureResult( -@@ -628,6 +632,11 @@ void NativeDesktopMediaList::RefreshForVizFrameSinkWindows( +@@ -642,6 +646,11 @@ void NativeDesktopMediaList::RefreshForVizFrameSinkWindows( FROM_HERE, base::BindOnce(&Worker::RefreshThumbnails, base::Unretained(worker_.get()), std::move(native_ids), thumbnail_size_)); diff --git a/patches/chromium/disable-redraw-lock.patch b/patches/chromium/disable-redraw-lock.patch index 5944ac0d05cdc..de0f40a292a83 100644 --- a/patches/chromium/disable-redraw-lock.patch +++ b/patches/chromium/disable-redraw-lock.patch @@ -15,7 +15,7 @@ the redraw locking mechanism, which fixes these issues. The electron issue can be found at https://github.com/electron/electron/issues/1821 diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc -index 15e33123f633b29db9937b76374ef9c03853defa..c24f24d7f53a8ed1c5614244a938f972706bdc61 100644 +index 2d21f2e408004fbaf6a19980ad5daf47493aec65..c6a0ac1c5dd98a41392bd170bb0ada7418f17453 100644 --- a/ui/views/win/hwnd_message_handler.cc +++ b/ui/views/win/hwnd_message_handler.cc @@ -308,6 +308,10 @@ constexpr int kSynthesizedMouseMessagesTimeDifference = 500; @@ -39,7 +39,7 @@ index 15e33123f633b29db9937b76374ef9c03853defa..c24f24d7f53a8ed1c5614244a938f972 (!(GetWindowLong(hwnd_, GWL_STYLE) & WS_CAPTION) || !ui::win::IsAeroGlassEnabled())) { if (should_lock_) -@@ -1015,6 +1020,10 @@ HWNDMessageHandler::RegisterUnadjustedMouseEvent() { +@@ -1051,6 +1056,10 @@ HWNDMessageHandler::RegisterUnadjustedMouseEvent() { return scoped_enable; } @@ -51,10 +51,10 @@ index 15e33123f633b29db9937b76374ef9c03853defa..c24f24d7f53a8ed1c5614244a938f972 // HWNDMessageHandler, gfx::WindowImpl overrides: diff --git a/ui/views/win/hwnd_message_handler.h b/ui/views/win/hwnd_message_handler.h -index 3779c5028db164c70432d042876692822c7dd75c..98d4b486f978ba6e8c1641c759dc9002cea7c345 100644 +index 73337f6b14516f93500705606c89e4c7b5a55f35..6badb272496a630031592372c1a766a9d70bb26a 100644 --- a/ui/views/win/hwnd_message_handler.h +++ b/ui/views/win/hwnd_message_handler.h -@@ -206,6 +206,8 @@ class VIEWS_EXPORT HWNDMessageHandler : public gfx::WindowImpl, +@@ -207,6 +207,8 @@ class VIEWS_EXPORT HWNDMessageHandler : public gfx::WindowImpl, using TouchIDs = std::set; enum class DwmFrameState { kOff, kOn }; @@ -64,7 +64,7 @@ index 3779c5028db164c70432d042876692822c7dd75c..98d4b486f978ba6e8c1641c759dc9002 HICON GetDefaultWindowIcon() const override; HICON GetSmallWindowIcon() const override; diff --git a/ui/views/win/hwnd_message_handler_delegate.h b/ui/views/win/hwnd_message_handler_delegate.h -index caff85f683b7a67f14f4e66b588e40b9704c2bc3..210f39f68b839684c4ba0a4c57a76df44ddad7dc 100644 +index d8e0f1d3131aef80c9fcb6069df7d7f986af6605..5dbb192d0840ca0ded61397c399b774a8cb05cce 100644 --- a/ui/views/win/hwnd_message_handler_delegate.h +++ b/ui/views/win/hwnd_message_handler_delegate.h @@ -46,6 +46,8 @@ class VIEWS_EXPORT HWNDMessageHandlerDelegate { diff --git a/patches/chromium/disable_color_correct_rendering.patch b/patches/chromium/disable_color_correct_rendering.patch index 6c05f861afee5..7d3fef6f99ffd 100644 --- a/patches/chromium/disable_color_correct_rendering.patch +++ b/patches/chromium/disable_color_correct_rendering.patch @@ -20,10 +20,10 @@ to deal with color spaces. That is being tracked at https://crbug.com/634542 and https://crbug.com/711107. diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc -index bae9dd70c7657bf2bf66ab237d35440c14e7f6fb..796c3101103465bac8a7c177185c570dcc757fc1 100644 +index 5ab61f6045aea2bf35ed25bd05270f044cbd8dd6..85875fe07d9eaf60406f60e6ffcd10dd06a265a6 100644 --- a/cc/trees/layer_tree_host_impl.cc +++ b/cc/trees/layer_tree_host_impl.cc -@@ -1863,6 +1863,9 @@ void LayerTreeHostImpl::SetIsLikelyToRequireADraw( +@@ -1852,6 +1852,9 @@ void LayerTreeHostImpl::SetIsLikelyToRequireADraw( TargetColorParams LayerTreeHostImpl::GetTargetColorParams( gfx::ContentColorUsage content_color_usage) const { TargetColorParams params; @@ -34,7 +34,7 @@ index bae9dd70c7657bf2bf66ab237d35440c14e7f6fb..796c3101103465bac8a7c177185c570d // If we are likely to software composite the resource, we use sRGB because // software compositing is unable to perform color conversion. diff --git a/cc/trees/layer_tree_settings.h b/cc/trees/layer_tree_settings.h -index 14a2e02d9a6edc3a7002ca43bc82c8ef98eb32b5..10abba0f0610719cc4be0ce792ce64aba43bbe04 100644 +index 8dfe968b6314f5f5f350b3df6819043668293fd6..2f3a8a335d130c3be58b87bccdb95bd66ae37091 100644 --- a/cc/trees/layer_tree_settings.h +++ b/cc/trees/layer_tree_settings.h @@ -93,6 +93,8 @@ class CC_EXPORT LayerTreeSettings { @@ -47,7 +47,7 @@ index 14a2e02d9a6edc3a7002ca43bc82c8ef98eb32b5..10abba0f0610719cc4be0ce792ce64ab // Image Decode Service and raster tiles without images until the decode is // ready. diff --git a/components/viz/common/display/renderer_settings.h b/components/viz/common/display/renderer_settings.h -index 8b0b5eda59c863efb6f4c67636810871677894c5..eea098eab3c2a5c36fab1a71d888e562e8f93da5 100644 +index bc48a50a7664f12a454997db54d893cde9b04881..810a8ce52bf9ac74f47a710f8b332980754996f5 100644 --- a/components/viz/common/display/renderer_settings.h +++ b/components/viz/common/display/renderer_settings.h @@ -24,6 +24,7 @@ class VIZ_COMMON_EXPORT RendererSettings { @@ -59,7 +59,7 @@ index 8b0b5eda59c863efb6f4c67636810871677894c5..eea098eab3c2a5c36fab1a71d888e562 bool force_antialiasing = false; bool force_blending_with_shaders = false; diff --git a/components/viz/host/renderer_settings_creation.cc b/components/viz/host/renderer_settings_creation.cc -index 6a830ec9f29b9764cd425f0681dafbb18d90b457..a7a095ceb9e626c79db21e0d16c8ef47da860679 100644 +index 9d34ced366026eb7cdd00ce40a4eb1af56180d39..abf67f8246bfa37df08cd2216c388dd316fb6499 100644 --- a/components/viz/host/renderer_settings_creation.cc +++ b/components/viz/host/renderer_settings_creation.cc @@ -17,6 +17,7 @@ @@ -79,159 +79,11 @@ index 6a830ec9f29b9764cd425f0681dafbb18d90b457..a7a095ceb9e626c79db21e0d16c8ef47 renderer_settings.partial_swap_enabled = !command_line->HasSwitch(switches::kUIDisablePartialSwap); -diff --git a/components/viz/service/display/gl_renderer.cc b/components/viz/service/display/gl_renderer.cc -index e0a8510a9e1d1475bfe92153db8cf860fbba74b5..5c01d58b3121ecf81d0971179ada834ca37d54a1 100644 ---- a/components/viz/service/display/gl_renderer.cc -+++ b/components/viz/service/display/gl_renderer.cc -@@ -87,6 +87,9 @@ - - using gpu::gles2::GLES2Interface; - -+#define PATCH_CS(color_space) \ -+ (settings_->enable_color_correct_rendering ? color_space : gfx::ColorSpace()) -+ - namespace viz { - namespace { - -@@ -685,8 +688,9 @@ void GLRenderer::DoDrawQuad(const DrawQuad* quad, - void GLRenderer::DrawDebugBorderQuad(const DebugBorderDrawQuad* quad) { - SetBlendEnabled(quad->ShouldDrawWithBlending()); - -- SetUseProgram(ProgramKey::DebugBorder(), gfx::ColorSpace::CreateSRGB(), -- CurrentRenderPassColorSpace()); -+ SetUseProgram(ProgramKey::DebugBorder(), -+ PATCH_CS(gfx::ColorSpace::CreateSRGB()), -+ PATCH_CS(CurrentRenderPassColorSpace())); - - // Use the full quad_rect for debug quads to not move the edges based on - // partial swaps. -@@ -1676,7 +1680,8 @@ void GLRenderer::ChooseRPDQProgram(DrawRenderPassDrawQuadParams* params, - params->use_color_matrix, tint_gl_composited_content_, - params->apply_shader_based_rounded_corner && - ShouldApplyRoundedCorner(params->quad)), -- params->contents_and_bypass_color_space, target_color_space); -+ PATCH_CS(params->contents_and_bypass_color_space), -+ PATCH_CS(target_color_space)); - } - - void GLRenderer::UpdateRPDQUniforms(DrawRenderPassDrawQuadParams* params) { -@@ -2149,7 +2154,8 @@ void GLRenderer::DrawSolidColorQuad(const SolidColorDrawQuad* quad, - SetUseProgram(ProgramKey::SolidColor(use_aa ? USE_AA : NO_AA, - tint_gl_composited_content_, - ShouldApplyRoundedCorner(quad)), -- CurrentRenderPassColorSpace(), CurrentRenderPassColorSpace()); -+ PATCH_CS(CurrentRenderPassColorSpace()), -+ PATCH_CS(CurrentRenderPassColorSpace())); - - gfx::ColorSpace quad_color_space = gfx::ColorSpace::CreateSRGB(); - SkColor4f color_f = SkColor4f::FromColor(color); -@@ -2157,7 +2163,7 @@ void GLRenderer::DrawSolidColorQuad(const SolidColorDrawQuad* quad, - // Apply color transform if the color space or source and target do not match. - if (quad_color_space != CurrentRenderPassColorSpace()) { - const gfx::ColorTransform* color_transform = -- GetColorTransform(quad_color_space, CurrentRenderPassColorSpace()); -+ GetColorTransform(PATCH_CS(quad_color_space), PATCH_CS(CurrentRenderPassColorSpace())); - gfx::ColorTransform::TriStim col(color_f.fR, color_f.fG, color_f.fB); - color_transform->Transform(&col, 1); - color_f.fR = col.x(); -@@ -2379,7 +2385,8 @@ void GLRenderer::DrawContentQuadAA(const ContentDrawQuadBase* quad, - : NON_PREMULTIPLIED_ALPHA, - false, false, tint_gl_composited_content_, - ShouldApplyRoundedCorner(quad)), -- quad_resource_lock.color_space(), CurrentRenderPassColorSpace()); -+ PATCH_CS(quad_resource_lock.color_space()), -+ PATCH_CS(CurrentRenderPassColorSpace())); - - if (current_program_->tint_color_matrix_location() != -1) { - auto matrix = cc::DebugColors::TintCompositedContentColorTransformMatrix(); -@@ -2478,7 +2485,8 @@ void GLRenderer::DrawContentQuadNoAA(const ContentDrawQuadBase* quad, - !quad->ShouldDrawWithBlending(), has_tex_clamp_rect, - tint_gl_composited_content_, - ShouldApplyRoundedCorner(quad)), -- quad_resource_lock.color_space(), CurrentRenderPassColorSpace()); -+ PATCH_CS(quad_resource_lock.color_space()), -+ PATCH_CS(CurrentRenderPassColorSpace())); - - if (current_program_->tint_color_matrix_location() != -1) { - auto matrix = cc::DebugColors::TintCompositedContentColorTransformMatrix(); -@@ -2588,7 +2596,8 @@ void GLRenderer::DrawYUVVideoQuad(const YUVVideoDrawQuad* quad, - // The source color space should never be RGB. - DCHECK_NE(src_color_space, src_color_space.GetAsFullRangeRGB()); - -- gfx::ColorSpace dst_color_space = CurrentRenderPassColorSpace(); -+ gfx::ColorSpace dst_color_space = -+ PATCH_CS(CurrentRenderPassColorSpace()); - - #if BUILDFLAG(IS_WIN) - // Force sRGB output on Windows for overlay candidate video quads to match -@@ -2769,7 +2778,8 @@ void GLRenderer::DrawStreamVideoQuad(const StreamVideoDrawQuad* quad, - - SetUseProgram(ProgramKey::VideoStream(tex_coord_precision, - ShouldApplyRoundedCorner(quad)), -- lock.color_space(), CurrentRenderPassColorSpace()); -+ PATCH_CS(lock.color_space()), -+ PATCH_CS(CurrentRenderPassColorSpace())); - - DCHECK_EQ(GL_TEXTURE0, GetActiveTextureUnit(gl_)); - gl_->BindTexture(GL_TEXTURE_EXTERNAL_OES, lock.texture_id()); -@@ -2840,8 +2850,8 @@ void GLRenderer::FlushTextureQuadCache(BoundGeometry flush_binding) { - draw_cache_.nearest_neighbor ? GL_NEAREST : GL_LINEAR); - - // Bind the program to the GL state. -- SetUseProgram(draw_cache_.program_key, locked_quad.color_space(), -- CurrentRenderPassColorSpace(), -+ SetUseProgram(draw_cache_.program_key, PATCH_CS(locked_quad.color_space()), -+ PATCH_CS(CurrentRenderPassColorSpace()), - /*adjust_src_white_level=*/draw_cache_.is_video_frame, - locked_quad.hdr_metadata()); - -@@ -3698,7 +3708,9 @@ void GLRenderer::SetUseProgram(const ProgramKey& program_key_no_color, - const gfx::ColorSpace& dst_color_space, - bool adjust_src_white_level, - absl::optional hdr_metadata) { -- DCHECK(dst_color_space.IsValid()); -+ if (settings_->enable_color_correct_rendering) { -+ DCHECK(dst_color_space.IsValid()); -+ } - gfx::ColorSpace adjusted_src_color_space = src_color_space; - - ProgramKey program_key = program_key_no_color; -@@ -4075,9 +4087,9 @@ void GLRenderer::CopyRenderPassDrawQuadToOverlayResource( - cc::MathUtil::CheckedRoundUp(iosurface_height, iosurface_multiple); - } - -- *overlay_texture = -- FindOrCreateOverlayTexture(params.quad->render_pass_id, iosurface_width, -- iosurface_height, RootRenderPassColorSpace()); -+ *overlay_texture = FindOrCreateOverlayTexture( -+ params.quad->render_pass_id, iosurface_width, iosurface_height, -+ PATCH_CS(RootRenderPassColorSpace())); - *new_bounds = gfx::RectF(updated_dst_rect.origin(), - gfx::SizeF((*overlay_texture)->texture.size())); - -@@ -4296,8 +4308,9 @@ void GLRenderer::FlushOverdrawFeedback(const gfx::Rect& output_rect) { - - PrepareGeometry(SHARED_BINDING); - -- SetUseProgram(ProgramKey::DebugBorder(), gfx::ColorSpace::CreateSRGB(), -- CurrentRenderPassColorSpace()); -+ SetUseProgram(ProgramKey::DebugBorder(), -+ PATCH_CS(gfx::ColorSpace::CreateSRGB()), -+ PATCH_CS(CurrentRenderPassColorSpace())); - - gfx::Transform render_matrix; - render_matrix.Translate(0.5 * output_rect.width() + output_rect.x(), -@@ -4503,3 +4516,5 @@ bool GLRenderer::ColorTransformKey::operator<( - } - - } // namespace viz -+ -+#undef PATCH_CS diff --git a/content/browser/gpu/gpu_process_host.cc b/content/browser/gpu/gpu_process_host.cc -index e0df775b22507336c249ed10fc0251dbbca088b8..2ba12303c28c39aa2e8f88b4a0e14a60e65b9df8 100644 +index 954aa49ed7cd6e47e56ffdfcd3b6218964862245..1a85566c28e91967603946e8941462e9ea704c68 100644 --- a/content/browser/gpu/gpu_process_host.cc +++ b/content/browser/gpu/gpu_process_host.cc -@@ -229,6 +229,7 @@ GpuTerminationStatus ConvertToGpuTerminationStatus( +@@ -228,6 +228,7 @@ GpuTerminationStatus ConvertToGpuTerminationStatus( // Command-line switches to propagate to the GPU process. static const char* const kSwitchNames[] = { @@ -240,7 +92,7 @@ index e0df775b22507336c249ed10fc0251dbbca088b8..2ba12303c28c39aa2e8f88b4a0e14a60 sandbox::policy::switches::kGpuSandboxAllowSysVShm, sandbox::policy::switches::kGpuSandboxFailuresFatal, diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc -index 8aa14d7cdb7edc5d53736fb959e3f9992d4fd896..da4830ccc3c3a160754dd9c89fc6292d7333ac67 100644 +index 73a50b19f8bf75119b6af7698cdf7d569c504e77..9fdc3d5235a95cfc9ef3b94ba9c19630efb04cde 100644 --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc @@ -199,6 +199,7 @@ @@ -251,7 +103,7 @@ index 8aa14d7cdb7edc5d53736fb959e3f9992d4fd896..da4830ccc3c3a160754dd9c89fc6292d #include "ui/gl/gl_switches.h" #include "url/gurl.h" #include "url/origin.h" -@@ -3175,6 +3176,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( +@@ -3173,6 +3174,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( // Propagate the following switches to the renderer command line (along // with any associated values) if present in the browser command line. static const char* const kSwitchNames[] = { @@ -292,7 +144,7 @@ index 75d7af9a79d4e7f2cd39e45496ab5fff66407638..b4ddafdd126edd16172f00448bbbd56e } diff --git a/third_party/blink/renderer/platform/widget/compositing/layer_tree_settings.cc b/third_party/blink/renderer/platform/widget/compositing/layer_tree_settings.cc -index 9a5903820308299a1a480ecaaa1cbca9655f4093..705f1fce4d05694b92b4eb6de1044ae2232bb8ed 100644 +index bd070fbfc7f3abcef7c0d89a608fc52c31cf3be3..8f16aaa064c2455d02c7d8e1ff09364fdedcd0fa 100644 --- a/third_party/blink/renderer/platform/widget/compositing/layer_tree_settings.cc +++ b/third_party/blink/renderer/platform/widget/compositing/layer_tree_settings.cc @@ -24,6 +24,7 @@ @@ -303,7 +155,7 @@ index 9a5903820308299a1a480ecaaa1cbca9655f4093..705f1fce4d05694b92b4eb6de1044ae2 #include "ui/native_theme/native_theme_features.h" #include "ui/native_theme/overlay_scrollbar_constants_aura.h" -@@ -185,6 +186,9 @@ cc::LayerTreeSettings GenerateLayerTreeSettings( +@@ -178,6 +179,9 @@ cc::LayerTreeSettings GenerateLayerTreeSettings( settings.main_frame_before_activation_enabled = cmd.HasSwitch(cc::switches::kEnableMainFrameBeforeActivation); diff --git a/patches/chromium/disable_compositor_recycling.patch b/patches/chromium/disable_compositor_recycling.patch index ecc594be91742..2a1ab59beebde 100644 --- a/patches/chromium/disable_compositor_recycling.patch +++ b/patches/chromium/disable_compositor_recycling.patch @@ -6,10 +6,10 @@ Subject: fix: disabling compositor recycling Compositor recycling is useful for Chrome because there can be many tabs and spinning up a compositor for each one would be costly. In practice, Chrome uses the parent compositor code path of browser_compositor_view_mac.mm; the NSView of each tab is detached when it's hidden and attached when it's shown. For Electron, there is no parent compositor, so we're forced into the "own compositor" code path, which seems to be non-optimal and pretty ruthless in terms of the release of resources. Electron has no real concept of multiple tabs per window, so it should be okay to disable this ruthless recycling altogether in Electron. diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm -index f36e046b2879c3cd24eac04b1cf5f5c62338a11f..06ca0f25bc575fa8508934fe498d599964a7f05d 100644 +index ad65d6c50ce58dc8e3f49033c4d85d57675663fa..4ae0907fc7e15e2795e7eeafb2834c631eb8f3f6 100644 --- a/content/browser/renderer_host/render_widget_host_view_mac.mm +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm -@@ -513,7 +513,11 @@ +@@ -507,7 +507,11 @@ return; host()->WasHidden(); diff --git a/patches/chromium/disable_freezing_flags_after_init_in_node.patch b/patches/chromium/disable_freezing_flags_after_init_in_node.patch new file mode 100644 index 0000000000000..908c926de71b6 --- /dev/null +++ b/patches/chromium/disable_freezing_flags_after_init_in_node.patch @@ -0,0 +1,30 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jeremy Rose +Date: Mon, 20 Jun 2022 14:53:37 -0700 +Subject: disable freezing flags after init in node + +This was introduced in +https://chromium-review.googlesource.com/c/chromium/src/+/3687671. + +When running node in the renderer, flags are updated after initialization, so +freezing the flags in Blink causes node initialization to fail. + +If possible, it would be ideal to do this without a patch. +https://bugs.chromium.org/p/v8/issues/detail?id=12887 suggests that there may +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 02b4f803369202a81f2d54f3b35aef04be13dfa2..76dd21fc8e97c1a2836ae5a5a11b56334a656fe2 100644 +--- a/content/renderer/render_process_impl.cc ++++ b/content/renderer/render_process_impl.cc +@@ -222,7 +222,8 @@ RenderProcessImpl::RenderProcessImpl() + SetV8FlagIfNotFeature(features::kWebAssemblyDynamicTiering, + "--no-wasm-dynamic-tiering"); + +- v8::V8::SetFlagsFromString("--freeze-flags-after-init"); ++ // This conflicts with node in the renderer. ++ //v8::V8::SetFlagsFromString("--freeze-flags-after-init"); + + #if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && defined(ARCH_CPU_X86_64) + if (base::FeatureList::IsEnabled(features::kWebAssemblyTrapHandler)) { diff --git a/patches/chromium/disable_hidden.patch b/patches/chromium/disable_hidden.patch index 7b943409e321a..d7bd38e933412 100644 --- a/patches/chromium/disable_hidden.patch +++ b/patches/chromium/disable_hidden.patch @@ -34,7 +34,7 @@ index 65297e78ee11fb3e7f662408f65a263f9ae8c550..62d3bef655580b1bad1077de797cdadc // |routing_id| must not be MSG_ROUTING_NONE. // If this object outlives |delegate|, DetachDelegate() must be called when diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc -index dc52cc54d2a6078bef1cf9f09e8063011b4f5191..d9b9f49ea7fe9b0b6dec4ad49c112af4fc832691 100644 +index 870cdf73fd5eeab985fc43dc92d7919d18e4e622..04bfe1f1205b06a7e105f613014540fd72b17328 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura.cc +++ b/content/browser/renderer_host/render_widget_host_view_aura.cc @@ -592,7 +592,7 @@ void RenderWidgetHostViewAura::HideImpl() { diff --git a/patches/chromium/disable_unload_metrics.patch b/patches/chromium/disable_unload_metrics.patch index c7593e21241c2..6e3c2dded3181 100644 --- a/patches/chromium/disable_unload_metrics.patch +++ b/patches/chromium/disable_unload_metrics.patch @@ -24,10 +24,10 @@ This patch temporarily disables the metrics so we can have green CI, and we should continue seeking for a real fix. diff --git a/content/browser/renderer_host/navigator.cc b/content/browser/renderer_host/navigator.cc -index cfc5263749fa3068ad3699892bc4060891d7a0ef..f0aa5f66bc62efb2ea2d105d86dc3a8ea13e5eec 100644 +index 0588899a89dda616a0d9e67f31652a53bbca2f82..17eb966009f2c10198602fb38dd5ac903da17ad2 100644 --- a/content/browser/renderer_host/navigator.cc +++ b/content/browser/renderer_host/navigator.cc -@@ -1293,6 +1293,7 @@ void Navigator::RecordNavigationMetrics( +@@ -1299,6 +1299,7 @@ void Navigator::RecordNavigationMetrics( .InMilliseconds()); } @@ -35,7 +35,7 @@ index cfc5263749fa3068ad3699892bc4060891d7a0ef..f0aa5f66bc62efb2ea2d105d86dc3a8e // If this is a same-process navigation and we have timestamps for unload // durations, fill those metrics out as well. if (params.unload_start && params.unload_end && -@@ -1339,6 +1340,7 @@ void Navigator::RecordNavigationMetrics( +@@ -1349,6 +1350,7 @@ void Navigator::RecordNavigationMetrics( first_before_unload_start_time) .InMilliseconds()); } diff --git a/patches/chromium/don_t_run_pcscan_notifythreadcreated_if_pcscan_is_disabled.patch b/patches/chromium/don_t_run_pcscan_notifythreadcreated_if_pcscan_is_disabled.patch index 75b2567794e49..c7d8872892bbe 100644 --- a/patches/chromium/don_t_run_pcscan_notifythreadcreated_if_pcscan_is_disabled.patch +++ b/patches/chromium/don_t_run_pcscan_notifythreadcreated_if_pcscan_is_disabled.patch @@ -19,7 +19,7 @@ index 1e54559bd5f9a2ee889b921379d70c51e902502d..6797a076b612ad4ed6d5ce7d9868d944 using PCScan = internal::PCScan; const auto invocation_mode = flags & PurgeFlags::kAggressiveReclaim diff --git a/base/threading/platform_thread_posix.cc b/base/threading/platform_thread_posix.cc -index d51b37c8a2df11f71fa6056193100d00883db43d..b44002788cf4d4f5d754dd35dd193be233e6ebcb 100644 +index fb5df2ee7c40e93bf2ebf625b14d08044006534b..67aecdd1d70ff58eb5b1b8b67990a7448a3b1ba4 100644 --- a/base/threading/platform_thread_posix.cc +++ b/base/threading/platform_thread_posix.cc @@ -44,6 +44,7 @@ diff --git a/patches/chromium/don_t_use_potentially_null_getwebframe_-_view_when_get_blink.patch b/patches/chromium/don_t_use_potentially_null_getwebframe_-_view_when_get_blink.patch index 7893453256944..b0430e89fee69 100644 --- a/patches/chromium/don_t_use_potentially_null_getwebframe_-_view_when_get_blink.patch +++ b/patches/chromium/don_t_use_potentially_null_getwebframe_-_view_when_get_blink.patch @@ -11,10 +11,10 @@ This regressed in https://chromium-review.googlesource.com/c/chromium/src/+/2572 Upstream: https://chromium-review.googlesource.com/c/chromium/src/+/2598393 diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc -index 4aabe0781d9e4150dddce76a50b993d0b8da8068..4961f2db5bf80ad2b926617fe933bca4db5c82b7 100644 +index f703ab8f616e9765ed3384654a271f251c16ac71..4f92c7c4a069d324b0d11a849937151143816f84 100644 --- a/content/renderer/render_frame_impl.cc +++ b/content/renderer/render_frame_impl.cc -@@ -2400,7 +2400,7 @@ const blink::WebView* RenderFrameImpl::GetWebView() const { +@@ -2370,7 +2370,7 @@ const blink::WebView* RenderFrameImpl::GetWebView() const { } const blink::web_pref::WebPreferences& RenderFrameImpl::GetBlinkPreferences() { diff --git a/patches/chromium/enable_reset_aspect_ratio.patch b/patches/chromium/enable_reset_aspect_ratio.patch index 6f0014385b6f9..c42efd45fb14b 100644 --- a/patches/chromium/enable_reset_aspect_ratio.patch +++ b/patches/chromium/enable_reset_aspect_ratio.patch @@ -6,7 +6,7 @@ Subject: feat: enable setting aspect ratio to 0 Make SetAspectRatio accept 0 as valid input, which would reset to null. diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc -index 28d01a952a31bc7df63dd70df167421c453a581c..172e250660d30d703c0c104c73f627d13797e2f4 100644 +index d7260950ca1ba9c71d9500560bc13314e78e2170..f6b37bdec2343d45447b419aeadbe2aa19493c3c 100644 --- a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc +++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc @@ -530,7 +530,7 @@ void DesktopWindowTreeHostWin::SetOpacity(float opacity) { @@ -19,10 +19,10 @@ index 28d01a952a31bc7df63dd70df167421c453a581c..172e250660d30d703c0c104c73f627d1 aspect_ratio.height()); } diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc -index c24f24d7f53a8ed1c5614244a938f972706bdc61..ee465b298240a21929abd438d930b9ce8afa6ffe 100644 +index c6a0ac1c5dd98a41392bd170bb0ada7418f17453..738a56e976a510fcdb44020193cc79522bae0855 100644 --- a/ui/views/win/hwnd_message_handler.cc +++ b/ui/views/win/hwnd_message_handler.cc -@@ -965,8 +965,11 @@ void HWNDMessageHandler::SetFullscreen(bool fullscreen) { +@@ -1001,8 +1001,11 @@ void HWNDMessageHandler::SetFullscreen(bool fullscreen) { } void HWNDMessageHandler::SetAspectRatio(float aspect_ratio) { diff --git a/patches/chromium/export_gin_v8platform_pageallocator_for_usage_outside_of_the_gin.patch b/patches/chromium/export_gin_v8platform_pageallocator_for_usage_outside_of_the_gin.patch index 74d7b3fecb28e..3c54bc5d8c658 100644 --- a/patches/chromium/export_gin_v8platform_pageallocator_for_usage_outside_of_the_gin.patch +++ b/patches/chromium/export_gin_v8platform_pageallocator_for_usage_outside_of_the_gin.patch @@ -21,7 +21,7 @@ index c9b535eb083c250f4f874d8e6bd0c29ea9f3a10f..f220b8669507a4aea616b0dfbabda509 v8::ZoneBackingAllocator* GetZoneBackingAllocator() override; #endif diff --git a/gin/v8_platform.cc b/gin/v8_platform.cc -index 1a41a282f054d8ca93db19dc5df7f1de14cb8e44..452372aa40947531452c7ad7226a4ee6b0adfccb 100644 +index 03cbb536f9a5a3f9aaf8fe2a5baac1d62e398e3a..2f4cf65a7b75e1dfe6c2b6e472040b2a0617b912 100644 --- a/gin/v8_platform.cc +++ b/gin/v8_platform.cc @@ -367,6 +367,10 @@ PageAllocator* V8Platform::GetPageAllocator() { diff --git a/patches/chromium/expose_setuseragent_on_networkcontext.patch b/patches/chromium/expose_setuseragent_on_networkcontext.patch index e2256f4f742e5..aa18104b8966a 100644 --- a/patches/chromium/expose_setuseragent_on_networkcontext.patch +++ b/patches/chromium/expose_setuseragent_on_networkcontext.patch @@ -33,10 +33,10 @@ index 14c71cc69388da46f62d9835e2a06fef0870da02..9481ea08401ae29ae9c1d960491b05b3 } // namespace net diff --git a/services/network/network_context.cc b/services/network/network_context.cc -index e351c6625fac1037040f639e55e0a2e48abf2538..1bb2e5b1d6d061961933b49bdcbe689efaeaa8f7 100644 +index b8560d71365759680fd5e49d311b19df41d6fb3b..1c0451cd2f2f7e1aeb182fb4f803cb960b63ef63 100644 --- a/services/network/network_context.cc +++ b/services/network/network_context.cc -@@ -1407,6 +1407,13 @@ void NetworkContext::SetNetworkConditions( +@@ -1412,6 +1412,13 @@ void NetworkContext::SetNetworkConditions( std::move(network_conditions)); } @@ -51,10 +51,10 @@ index e351c6625fac1037040f639e55e0a2e48abf2538..1bb2e5b1d6d061961933b49bdcbe689e // This may only be called on NetworkContexts created with the constructor // that calls MakeURLRequestContext(). diff --git a/services/network/network_context.h b/services/network/network_context.h -index 620d7b7b733cc9749775c2bcabcebdedafe6ba0b..984e1f04c01006b7f038538c16ad2dd224925731 100644 +index dd79f2c9fabf673d9e2c69830ef3513cb499d961..f7744a9610c669e53eb9ba4fe4f3bf48715a77ba 100644 --- a/services/network/network_context.h +++ b/services/network/network_context.h -@@ -298,6 +298,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -299,6 +299,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext void CloseIdleConnections(CloseIdleConnectionsCallback callback) override; void SetNetworkConditions(const base::UnguessableToken& throttling_profile_id, mojom::NetworkConditionsPtr conditions) override; @@ -63,10 +63,10 @@ index 620d7b7b733cc9749775c2bcabcebdedafe6ba0b..984e1f04c01006b7f038538c16ad2dd2 void SetEnableReferrers(bool enable_referrers) override; #if BUILDFLAG(IS_CHROMEOS) diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom -index 0450b50b5545d9b8f9025553167bed2e78157130..1b772288816ee770ee47cb59cf6c93439729320e 100644 +index d0a041032449fad884d296090aadc16862ef0b2a..b6a2ed2857ee9cb838542d76a5c3031a28483a8b 100644 --- a/services/network/public/mojom/network_context.mojom +++ b/services/network/public/mojom/network_context.mojom -@@ -1090,6 +1090,9 @@ interface NetworkContext { +@@ -1099,6 +1099,9 @@ interface NetworkContext { SetNetworkConditions(mojo_base.mojom.UnguessableToken throttling_profile_id, NetworkConditions? conditions); @@ -77,7 +77,7 @@ index 0450b50b5545d9b8f9025553167bed2e78157130..1b772288816ee770ee47cb59cf6c9343 SetAcceptLanguage(string new_accept_language); diff --git a/services/network/test/test_network_context.h b/services/network/test/test_network_context.h -index d143a82b1fd021bb03b760b91e87c7714f5395b9..3c18369ff3ab80430e21caac03373605dad64a88 100644 +index 932610486c245972abee3226cb86cd88316865df..32c3979da750443cb44936b0b2376efa06adb593 100644 --- a/services/network/test/test_network_context.h +++ b/services/network/test/test_network_context.h @@ -136,6 +136,7 @@ class TestNetworkContext : public mojom::NetworkContext { diff --git a/patches/chromium/extend_apply_webpreferences.patch b/patches/chromium/extend_apply_webpreferences.patch index 216c2d3cb749a..f2798432635af 100644 --- a/patches/chromium/extend_apply_webpreferences.patch +++ b/patches/chromium/extend_apply_webpreferences.patch @@ -12,7 +12,7 @@ Ideally we could add an embedder observer pattern here but that can be done in future work. diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc -index 0529b4399959a2a2b9b0131dd8736a87fb973b0b..6870692202c40179870d7f00e20c7ce19bdb85ce 100644 +index 818394c235c3f71289218098c7db77e00d156d92..e6a107124fd2e5f298d1e1c8246a015cce37d90d 100644 --- a/third_party/blink/renderer/core/exported/web_view_impl.cc +++ b/third_party/blink/renderer/core/exported/web_view_impl.cc @@ -161,6 +161,7 @@ @@ -23,7 +23,7 @@ index 0529b4399959a2a2b9b0131dd8736a87fb973b0b..6870692202c40179870d7f00e20c7ce1 #include "third_party/blink/renderer/platform/graphics/image.h" #include "third_party/blink/renderer/platform/graphics/paint/cull_rect.h" #include "third_party/blink/renderer/platform/graphics/paint/paint_record_builder.h" -@@ -1776,6 +1777,7 @@ void WebView::ApplyWebPreferences(const web_pref::WebPreferences& prefs, +@@ -1788,6 +1789,7 @@ void WebView::ApplyWebPreferences(const web_pref::WebPreferences& prefs, #if BUILDFLAG(IS_MAC) web_view_impl->SetMaximumLegibleScale( prefs.default_maximum_page_scale_factor); diff --git a/patches/chromium/feat_add_streaming-protocol_registry_to_multibuffer_data_source.patch b/patches/chromium/feat_add_streaming-protocol_registry_to_multibuffer_data_source.patch index 72cb9fc018ca2..529cee547296b 100644 --- a/patches/chromium/feat_add_streaming-protocol_registry_to_multibuffer_data_source.patch +++ b/patches/chromium/feat_add_streaming-protocol_registry_to_multibuffer_data_source.patch @@ -13,7 +13,7 @@ other protocols to register their streaming behavior. MultibufferDataSource::Ass then refers to the list so that it can correctly determine the data source's settings. diff --git a/third_party/blink/renderer/platform/media/multi_buffer_data_source.cc b/third_party/blink/renderer/platform/media/multi_buffer_data_source.cc -index 58256037e0a2485a9f8de9f4086550f39e865b2d..3456f1d55b16239698ba83d1d27beec1c3806192 100644 +index 58256037e0a2485a9f8de9f4086550f39e865b2d..30cf2ee44f6e0629e664fcf2072ad14ca186f947 100644 --- a/third_party/blink/renderer/platform/media/multi_buffer_data_source.cc +++ b/third_party/blink/renderer/platform/media/multi_buffer_data_source.cc @@ -10,8 +10,10 @@ @@ -56,7 +56,7 @@ index 58256037e0a2485a9f8de9f4086550f39e865b2d..3456f1d55b16239698ba83d1d27beec1 + + const std::string scheme = url_data_->url().scheme(); + for (const std::string& streaming_scheme : *GetStreamingSchemes()) { -+ if (base::LowerCaseEqualsASCII(scheme, streaming_scheme)) { ++ if (base::EqualsCaseInsensitiveASCII(scheme, streaming_scheme)) { + return false; + } + } 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 b4f87cd57376f..ded5f1b6877c2 100644 --- a/patches/chromium/feat_enable_offscreen_rendering_with_viz_compositor.patch +++ b/patches/chromium/feat_enable_offscreen_rendering_with_viz_compositor.patch @@ -81,23 +81,23 @@ index 309422bcf85810db88a048bd0930c4072b41f234..759549f3046f4a897b597409b670bb1c private: const HWND hwnd_; diff --git a/components/viz/service/BUILD.gn b/components/viz/service/BUILD.gn -index fe988e3bbcf0c9deb5592f24fdeda3016114e3bf..da82b0458d0c87cf4de793007b826984d010cbb2 100644 +index 10d10f49e7a0ebf000be90dc89c9fe2936eec0c4..534b6af3181addc6eb678d075c80f32f589c11a4 100644 --- a/components/viz/service/BUILD.gn +++ b/components/viz/service/BUILD.gn -@@ -139,6 +139,8 @@ viz_component("service") { - "display_embedder/output_surface_provider_impl.h", - "display_embedder/server_shared_bitmap_manager.cc", - "display_embedder/server_shared_bitmap_manager.h", +@@ -132,6 +132,8 @@ viz_component("service") { + "display_embedder/skia_output_surface_impl_on_gpu.h", + "display_embedder/skia_render_copy_results.cc", + "display_embedder/skia_render_copy_results.h", + "display_embedder/software_output_device_proxy.cc", + "display_embedder/software_output_device_proxy.h", "display_embedder/software_output_surface.cc", "display_embedder/software_output_surface.h", - "display_embedder/viz_process_context_provider.cc", + "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 77d463e683d8b8d3a202681a6884eacaab79d70d..05d51cb2637d34c073cd0025e365803633459a86 100644 +index 2e9453c18f2f6623d31b477aa856152ddacc3e23..93b6080135c08bc9d4cf7020f4fcb15c06a01a60 100644 --- a/components/viz/service/display_embedder/output_surface_provider.h +++ b/components/viz/service/display_embedder/output_surface_provider.h -@@ -39,7 +39,8 @@ class OutputSurfaceProvider { +@@ -38,7 +38,8 @@ class OutputSurfaceProvider { mojom::DisplayClient* display_client, DisplayCompositorMemoryAndTaskController* gpu_dependency, const RendererSettings& renderer_settings, @@ -108,26 +108,25 @@ index 77d463e683d8b8d3a202681a6884eacaab79d70d..05d51cb2637d34c073cd0025e3658036 } // namespace viz diff --git a/components/viz/service/display_embedder/output_surface_provider_impl.cc b/components/viz/service/display_embedder/output_surface_provider_impl.cc -index 8a277c6337d446890bb32814a68db2a9d3d3cd72..1c967969a03c985e68f744cf4815cefbdd2c0f71 100644 +index 8585790795707cbe06ebe9c6cc87fb6da0a4a88b..dade8473dc350ebbc0246b30615a83fc22f735fd 100644 --- a/components/viz/service/display_embedder/output_surface_provider_impl.cc +++ b/components/viz/service/display_embedder/output_surface_provider_impl.cc -@@ -26,6 +26,7 @@ +@@ -23,12 +23,14 @@ #include "components/viz/service/display_embedder/server_shared_bitmap_manager.h" #include "components/viz/service/display_embedder/skia_output_surface_dependency_impl.h" #include "components/viz/service/display_embedder/skia_output_surface_impl.h" +#include "components/viz/service/display_embedder/software_output_device_proxy.h" #include "components/viz/service/display_embedder/software_output_surface.h" - #include "components/viz/service/display_embedder/viz_process_context_provider.h" #include "components/viz/service/gl/gpu_service_impl.h" -@@ -39,6 +40,7 @@ + #include "gpu/command_buffer/client/shared_memory_limits.h" + #include "gpu/config/gpu_finch_features.h" + #include "gpu/ipc/common/surface_handle.h" #include "gpu/ipc/scheduler_sequence.h" - #include "gpu/ipc/service/gpu_channel_manager_delegate.h" - #include "gpu/ipc/service/image_transport_surface.h" +#include "services/viz/privileged/mojom/compositing/layered_window_updater.mojom.h" #include "ui/base/ui_base_switches.h" - #include "ui/gl/gl_context.h" - #include "ui/gl/init/gl_factory.h" -@@ -126,7 +128,8 @@ std::unique_ptr OutputSurfaceProviderImpl::CreateOutputSurface( + + #if BUILDFLAG(IS_WIN) +@@ -89,7 +91,8 @@ std::unique_ptr OutputSurfaceProviderImpl::CreateOutputSurface( mojom::DisplayClient* display_client, DisplayCompositorMemoryAndTaskController* gpu_dependency, const RendererSettings& renderer_settings, @@ -137,16 +136,16 @@ index 8a277c6337d446890bb32814a68db2a9d3d3cd72..1c967969a03c985e68f744cf4815cefb #if BUILDFLAG(IS_CHROMEOS_ASH) if (surface_handle == gpu::kNullSurfaceHandle) return std::make_unique(); -@@ -138,7 +141,7 @@ std::unique_ptr OutputSurfaceProviderImpl::CreateOutputSurface( +@@ -101,7 +104,7 @@ std::unique_ptr OutputSurfaceProviderImpl::CreateOutputSurface( if (!gpu_compositing) { output_surface = std::make_unique( - CreateSoftwareOutputDeviceForPlatform(surface_handle, display_client)); + CreateSoftwareOutputDeviceForPlatform(surface_handle, display_client, offscreen)); - } else if (renderer_settings.use_skia_renderer) { + } else { DCHECK(gpu_dependency); { -@@ -243,10 +246,22 @@ std::unique_ptr OutputSurfaceProviderImpl::CreateOutputSurface( +@@ -138,10 +141,22 @@ std::unique_ptr OutputSurfaceProviderImpl::CreateOutputSurface( std::unique_ptr OutputSurfaceProviderImpl::CreateSoftwareOutputDeviceForPlatform( gpu::SurfaceHandle surface_handle, @@ -171,10 +170,10 @@ index 8a277c6337d446890bb32814a68db2a9d3d3cd72..1c967969a03c985e68f744cf4815cefb return CreateSoftwareOutputDeviceWin(surface_handle, &output_device_backing_, display_client); diff --git a/components/viz/service/display_embedder/output_surface_provider_impl.h b/components/viz/service/display_embedder/output_surface_provider_impl.h -index fa9bc45b5c12821789270907f73c7e6f3c0c1424..6d2ad1d88631db82f41de2852c3e9a6ad1431b2e 100644 +index be10797e6f517ae069b8bc579155440d8a110362..fb6848b70a80c9c6cda42605a8b86ffbeb2a5ec8 100644 --- a/components/viz/service/display_embedder/output_surface_provider_impl.h +++ b/components/viz/service/display_embedder/output_surface_provider_impl.h -@@ -66,12 +66,14 @@ class VIZ_SERVICE_EXPORT OutputSurfaceProviderImpl +@@ -49,12 +49,14 @@ class VIZ_SERVICE_EXPORT OutputSurfaceProviderImpl mojom::DisplayClient* display_client, DisplayCompositorMemoryAndTaskController* gpu_dependency, const RendererSettings& renderer_settings, @@ -190,7 +189,7 @@ index fa9bc45b5c12821789270907f73c7e6f3c0c1424..6d2ad1d88631db82f41de2852c3e9a6a + bool offscreen); const raw_ptr gpu_service_impl_; - const raw_ptr task_executor_; + 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 33e12349a951ef533b964d1158f8fa124623e946..fc04bcaffefc277dd1d0cdd766168de017fedca8 100644 --- a/components/viz/service/display_embedder/software_output_device_mac.cc @@ -503,11 +502,11 @@ index 583e3e2525c753a0962d481fc67a3582df75d0e9..9416ec929bebcff7f07088e635376ef2 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 4e38e0f49054cef3fd1a712c89608ce39003edeb..427882f8ed0d85c6e4170b213c3a3678b60a62df 100644 +index 8eeb87e2322821ac52e4bc0000cb777d69515a2c..5a7d1501aed1f01b1b67ae156cfb927ee696f83b 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 @@ -84,7 +84,8 @@ RootCompositorFrameSinkImpl::Create( - params->gpu_compositing, params->widget, params->renderer_settings); + params->gpu_compositing, params->widget); auto output_surface = output_surface_provider->CreateOutputSurface( params->widget, params->gpu_compositing, display_client.get(), - display_controller.get(), params->renderer_settings, debug_settings); @@ -550,7 +549,7 @@ index b2f873919d68633103d115d7d9550a098c1a254c..8e38831a6df15d37e5fb87d63613b7db // Notifies that a swap has occurred and provides information about the pixel diff --git a/services/viz/privileged/mojom/compositing/frame_sink_manager.mojom b/services/viz/privileged/mojom/compositing/frame_sink_manager.mojom -index a9a0e5a1167b2018e6dc206ecb7d37aad94042aa..3997ecb0228914144d6b04595c47376679fca3ef 100644 +index 3c495dfe499e1bae90fa0d576d5f58f1300c17fa..678700882d379f528ee1d77819b063cfdcdad036 100644 --- a/services/viz/privileged/mojom/compositing/frame_sink_manager.mojom +++ b/services/viz/privileged/mojom/compositing/frame_sink_manager.mojom @@ -32,6 +32,7 @@ struct RootCompositorFrameSinkParams { @@ -573,7 +572,7 @@ index 6b7fbb6cf13dc8ee6ade0878a9a2c1efc5d4d3f1..e2af75168cb914a7b3b4a6c9b6a28549 + Draw(gfx.mojom.Rect damage_rect) => (); }; diff --git a/ui/compositor/compositor.h b/ui/compositor/compositor.h -index 80bff73a5886e8e79d7d91de5e27bc747fcfce02..8bc43d1359fa2551713992d6ccb73949743dde2e 100644 +index 2f6d2ee4160f24cb01ae0ce36e07f1ddcc5025df..7f33814a40f56f8ac6fbb42c9f4452ba54d92154 100644 --- a/ui/compositor/compositor.h +++ b/ui/compositor/compositor.h @@ -83,6 +83,7 @@ class DisplayPrivate; @@ -611,7 +610,7 @@ index 80bff73a5886e8e79d7d91de5e27bc747fcfce02..8bc43d1359fa2551713992d6ccb73949 // Sets the root of the layer tree drawn by this Compositor. The root layer // must have no parent. The compositor's root layer is reset if the root layer // is destroyed. NULL can be passed to reset the root layer, in which case the -@@ -476,6 +490,8 @@ class COMPOSITOR_EXPORT Compositor : public base::PowerSuspendObserver, +@@ -478,6 +492,8 @@ class COMPOSITOR_EXPORT Compositor : public base::PowerSuspendObserver, std::unique_ptr pending_begin_frame_args_; 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 10e839cd9d536..6b0bb05dbc309 100644 --- a/patches/chromium/feat_expose_raw_response_headers_from_urlloader.patch +++ b/patches/chromium/feat_expose_raw_response_headers_from_urlloader.patch @@ -81,7 +81,7 @@ index ef3e8e68621402db5a97977f49ac74c438b0a563..aa1c1bcf7ca30adde4c25ed9bd8ed8a7 // browser decide. // Note: this is an enum of type PreviewsState. diff --git a/services/network/public/mojom/url_response_head.mojom b/services/network/public/mojom/url_response_head.mojom -index 4c4cc16db82d7434573f7740855fbe72d68815e6..f71290800b6bb51a39b1f86be36f02d602ac3397 100644 +index 5a0cc45fb7b695bef46e475232adb70893299b96..156073daca8c69e05b478e8365b812321af1bf19 100644 --- a/services/network/public/mojom/url_response_head.mojom +++ b/services/network/public/mojom/url_response_head.mojom @@ -8,6 +8,7 @@ import "mojo/public/mojom/base/time.mojom"; @@ -103,10 +103,10 @@ index 4c4cc16db82d7434573f7740855fbe72d68815e6..f71290800b6bb51a39b1f86be36f02d6 string mime_type; diff --git a/services/network/url_loader.cc b/services/network/url_loader.cc -index 8137159de740809e44bc3a3dc18c842455a6795d..7292a40382fffcc96998b04696f4a2934a2da9ee 100644 +index 27ec61dc837c2e61c7907a5c488a75983d6f9ba0..62201fd4f11ce500b3a9d82fffe7776bf8a15eb0 100644 --- a/services/network/url_loader.cc +++ b/services/network/url_loader.cc -@@ -468,6 +468,7 @@ URLLoader::URLLoader( +@@ -638,6 +638,7 @@ URLLoader::URLLoader( mojo::SimpleWatcher::ArmingPolicy::MANUAL, base::SequencedTaskRunnerHandle::Get()), per_factory_corb_state_(context.GetMutableCorbState()), @@ -114,7 +114,7 @@ index 8137159de740809e44bc3a3dc18c842455a6795d..7292a40382fffcc96998b04696f4a293 devtools_request_id_(request.devtools_request_id), request_mode_(request.mode), request_credentials_mode_(request.credentials_mode), -@@ -620,7 +621,7 @@ URLLoader::URLLoader( +@@ -832,7 +833,7 @@ URLLoader::URLLoader( url_request_->SetRequestHeadersCallback(base::BindRepeating( &URLLoader::SetRawRequestHeadersAndNotify, base::Unretained(this))); @@ -123,7 +123,7 @@ index 8137159de740809e44bc3a3dc18c842455a6795d..7292a40382fffcc96998b04696f4a293 url_request_->SetResponseHeadersCallback(base::BindRepeating( &URLLoader::SetRawResponseHeaders, base::Unretained(this))); } -@@ -1347,6 +1348,19 @@ void URLLoader::OnResponseStarted(net::URLRequest* url_request, int net_error) { +@@ -1567,6 +1568,19 @@ void URLLoader::OnResponseStarted(net::URLRequest* url_request, int net_error) { } response_ = BuildResponseHead(); @@ -144,10 +144,10 @@ index 8137159de740809e44bc3a3dc18c842455a6795d..7292a40382fffcc96998b04696f4a293 // 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 abc8ecdcd717b06552af7cf5c4e4e8f60db16ec1..4f633b5a818388f6cfd30a15496c94dde1e2b48c 100644 +index 6bddb19e692f274afd077bd58145fcb68d59c4a2..08b95c71575e31e5b4d87e4d95ea7d7c8d318d29 100644 --- a/services/network/url_loader.h +++ b/services/network/url_loader.h -@@ -497,6 +497,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) URLLoader +@@ -522,6 +522,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) URLLoader std::unique_ptr resource_scheduler_request_handle_; diff --git a/patches/chromium/fix_allow_guest_webcontents_to_enter_fullscreen.patch b/patches/chromium/fix_allow_guest_webcontents_to_enter_fullscreen.patch new file mode 100644 index 0000000000000..475a66730aeda --- /dev/null +++ b/patches/chromium/fix_allow_guest_webcontents_to_enter_fullscreen.patch @@ -0,0 +1,20 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Samuel Attard +Date: Mon, 6 Jun 2022 14:25:15 -0700 +Subject: fix: allow guest webcontents to enter fullscreen + +This can be upstreamed, a guest webcontents can't technically become the focused webContents. This DCHECK should allow all guest webContents to request fullscreen entrance. + +diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc +index 050e59567dfb72833d96a9331329b8235d0a4a07..3f740e42f2ca869c4f19632a5cfee6142702f02a 100644 +--- a/content/browser/web_contents/web_contents_impl.cc ++++ b/content/browser/web_contents/web_contents_impl.cc +@@ -3417,7 +3417,7 @@ void WebContentsImpl::EnterFullscreenMode( + OPTIONAL_TRACE_EVENT0("content", "WebContentsImpl::EnterFullscreenMode"); + DCHECK(CanEnterFullscreenMode(requesting_frame, options)); + DCHECK(requesting_frame->IsActive()); +- DCHECK(ContainsOrIsFocusedWebContents()); ++ DCHECK(ContainsOrIsFocusedWebContents() || IsGuest()); + + if (delegate_) { + delegate_->EnterFullscreenModeForTab(requesting_frame, options); diff --git a/patches/chromium/fix_aspect_ratio_with_max_size.patch b/patches/chromium/fix_aspect_ratio_with_max_size.patch index fb9b97974a5f3..e863e3c246aef 100644 --- a/patches/chromium/fix_aspect_ratio_with_max_size.patch +++ b/patches/chromium/fix_aspect_ratio_with_max_size.patch @@ -11,10 +11,10 @@ enlarge window above dimensions set during creation of the BrowserWindow. diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc -index ee465b298240a21929abd438d930b9ce8afa6ffe..83702d83078b68047f4464613033bc25cee21791 100644 +index 738a56e976a510fcdb44020193cc79522bae0855..7c7952755317a8069becfff58ca5ec89e2266ce4 100644 --- a/ui/views/win/hwnd_message_handler.cc +++ b/ui/views/win/hwnd_message_handler.cc -@@ -3625,6 +3625,21 @@ void HWNDMessageHandler::SizeWindowToAspectRatio(UINT param, +@@ -3661,6 +3661,21 @@ void HWNDMessageHandler::SizeWindowToAspectRatio(UINT param, delegate_->GetMinMaxSize(&min_window_size, &max_window_size); min_window_size = delegate_->DIPToScreenSize(min_window_size); max_window_size = delegate_->DIPToScreenSize(max_window_size); diff --git a/patches/chromium/fix_crash_when_saving_edited_pdf_files.patch b/patches/chromium/fix_crash_when_saving_edited_pdf_files.patch index 022773554260c..f79a23ea27c82 100644 --- a/patches/chromium/fix_crash_when_saving_edited_pdf_files.patch +++ b/patches/chromium/fix_crash_when_saving_edited_pdf_files.patch @@ -13,10 +13,10 @@ This patch can be removed should we choose to support chrome.fileSystem or support it enough to fix the crash. diff --git a/chrome/browser/resources/pdf/pdf_viewer.ts b/chrome/browser/resources/pdf/pdf_viewer.ts -index 41e9cb083e2abfc48976f21e4ca45d175671f69f..90cd537d117894cb73af61787d7085fcedeaebbd 100644 +index 904704e95f148ee5a381c596083c4eb8a0bbafbc..bc29aaa9e0175105fb97548ddb85cafff3acd6de 100644 --- a/chrome/browser/resources/pdf/pdf_viewer.ts +++ b/chrome/browser/resources/pdf/pdf_viewer.ts -@@ -859,26 +859,12 @@ export class PDFViewerElement extends PDFViewerBaseElement { +@@ -860,26 +860,12 @@ export class PDFViewerElement extends PDFViewerBaseElement { dataArray = [result.dataToSave]; } @@ -48,7 +48,7 @@ index 41e9cb083e2abfc48976f21e4ca45d175671f69f..90cd537d117894cb73af61787d7085fc } /** -@@ -986,30 +972,12 @@ export class PDFViewerElement extends PDFViewerBaseElement { +@@ -987,30 +973,12 @@ export class PDFViewerElement extends PDFViewerBaseElement { fileName = fileName + '.pdf'; } diff --git a/patches/chromium/fix_export_zlib_symbols.patch b/patches/chromium/fix_export_zlib_symbols.patch index 5effa32d57758..0590f70607420 100644 --- a/patches/chromium/fix_export_zlib_symbols.patch +++ b/patches/chromium/fix_export_zlib_symbols.patch @@ -6,10 +6,10 @@ Subject: fix: export zlib symbols This patch sets ZLIB_DLL so that we properly export zlib symbols. diff --git a/third_party/zlib/BUILD.gn b/third_party/zlib/BUILD.gn -index ca58b86f7b5b760b8088eddfb2ab923290771e4d..5c786bccae90cfb6263cae2148a6d00c8e618b3f 100644 +index ee7483e9ef6a4ff85f8e6ac966d6e6c1e669dcf6..54d42304d84e1a25bb8b690282ff8268626eb5ad 100644 --- a/third_party/zlib/BUILD.gn +++ b/third_party/zlib/BUILD.gn -@@ -314,6 +314,10 @@ component("zlib") { +@@ -316,6 +316,10 @@ component("zlib") { defines = [] deps = [] diff --git a/patches/chromium/fix_expose_decrementcapturercount_in_web_contents_impl.patch b/patches/chromium/fix_expose_decrementcapturercount_in_web_contents_impl.patch index 4180c938c9330..74c1590053d8e 100644 --- a/patches/chromium/fix_expose_decrementcapturercount_in_web_contents_impl.patch +++ b/patches/chromium/fix_expose_decrementcapturercount_in_web_contents_impl.patch @@ -8,10 +8,10 @@ we invoke it in order to expose contents.decrementCapturerCount([stayHidden, sta to users. We should try to upstream this. diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h -index 13253163b54c86b37c7b5654b674c5f920c81272..82c4963605707a0fa56b01b572c0ef9b0d093565 100644 +index 4c278081eaec0cdb5dac5e9fc3453de5ce04d918..888b8950f4849a5005f45ee4c4be3a481166540c 100644 --- a/content/browser/web_contents/web_contents_impl.h +++ b/content/browser/web_contents/web_contents_impl.h -@@ -1820,7 +1820,7 @@ class CONTENT_EXPORT WebContentsImpl : public WebContents, +@@ -1824,7 +1824,7 @@ class CONTENT_EXPORT WebContentsImpl : public WebContents, // IncrementCapturerCount() is destructed. void DecrementCapturerCount(bool stay_hidden, bool stay_awake, @@ -21,10 +21,10 @@ index 13253163b54c86b37c7b5654b674c5f920c81272..82c4963605707a0fa56b01b572c0ef9b // Calculates the PageVisibilityState for |visibility|, taking the capturing // state into account. diff --git a/content/public/browser/web_contents.h b/content/public/browser/web_contents.h -index d5c2a922bba0ff0d5a4a22d9cd25be46fd09d4e1..86eefb4d6e2d571965be9f40269b7f4fc633d26e 100644 +index 53e264061c53ef48a7584939e47984ceab40fb8e..637d948784668a16f24a135a7e807e4933d7bfd1 100644 --- a/content/public/browser/web_contents.h +++ b/content/public/browser/web_contents.h -@@ -673,6 +673,10 @@ class WebContents : public PageNavigator, +@@ -675,6 +675,10 @@ class WebContents : public PageNavigator, bool stay_awake, bool is_activity = true) = 0; diff --git a/patches/chromium/fix_patch_out_profile_refs_in_accessibility_ui.patch b/patches/chromium/fix_patch_out_profile_refs_in_accessibility_ui.patch index fd64b412b8433..64fa426f75151 100644 --- a/patches/chromium/fix_patch_out_profile_refs_in_accessibility_ui.patch +++ b/patches/chromium/fix_patch_out_profile_refs_in_accessibility_ui.patch @@ -7,7 +7,7 @@ This tweaks Chrome's Accessibility support at chrome://accessibility to make it usable from Electron by removing Profile references. diff --git a/chrome/browser/accessibility/accessibility_ui.cc b/chrome/browser/accessibility/accessibility_ui.cc -index 35568a00ef94ca0db2cbb0325634ce8d2a881e12..a8ea8eaabb7cf3248b19af93bf5002f88e23fd8d 100644 +index 82794034de0fccde58d04acbe6a799ba5cd57619..505376836fb93df7ebececab0e4f8fe8299fe9e8 100644 --- a/chrome/browser/accessibility/accessibility_ui.cc +++ b/chrome/browser/accessibility/accessibility_ui.cc @@ -22,7 +22,10 @@ diff --git a/patches/chromium/frame_host_manager.patch b/patches/chromium/frame_host_manager.patch index 76157c2e242da..8fa0bd430fe5a 100644 --- a/patches/chromium/frame_host_manager.patch +++ b/patches/chromium/frame_host_manager.patch @@ -6,10 +6,10 @@ Subject: frame_host_manager.patch Allows embedder to intercept site instances created by chromium. diff --git a/content/browser/renderer_host/render_frame_host_manager.cc b/content/browser/renderer_host/render_frame_host_manager.cc -index c8f2abaf2991b415b117604d37e8fb8abded00a3..41b09cb5c3a73f72178db9efcf883bd04fe68d6d 100644 +index 398358851f4ec3d1373091c352fe864b8901f08b..0fadcf6eb5aa9e7e6ca32ec252f1722ab87b6be9 100644 --- a/content/browser/renderer_host/render_frame_host_manager.cc +++ b/content/browser/renderer_host/render_frame_host_manager.cc -@@ -3217,6 +3217,9 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest( +@@ -3203,6 +3203,9 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest( request->ResetStateForSiteInstanceChange(); } @@ -20,10 +20,10 @@ index c8f2abaf2991b415b117604d37e8fb8abded00a3..41b09cb5c3a73f72178db9efcf883bd0 } diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h -index 4e069af9256eb106b50e84d1243c92353daf2015..8e8ba0a946c3382045691b788566885fb0e41ce5 100644 +index 6328fc21548f2b8277b461f9938dbcc50f6853f1..90058e16373ce92a9eede27f13010417cf51dae2 100644 --- a/content/public/browser/content_browser_client.h +++ b/content/public/browser/content_browser_client.h -@@ -271,6 +271,11 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -270,6 +270,11 @@ class CONTENT_EXPORT ContentBrowserClient { virtual ~ContentBrowserClient() = default; diff --git a/patches/chromium/gin_enable_disable_v8_platform.patch b/patches/chromium/gin_enable_disable_v8_platform.patch index 3de96009621ac..34f6362ed8334 100644 --- a/patches/chromium/gin_enable_disable_v8_platform.patch +++ b/patches/chromium/gin_enable_disable_v8_platform.patch @@ -38,7 +38,7 @@ index 20cfc2257e9ba25ec3f39f19db952ba6b6036c72..4efc13c79ae742fa1925d06431862745 // Returns whether `Initialize` has already been invoked in the process. // Initialization is a one-way operation (i.e., this method cannot return diff --git a/gin/v8_initializer.cc b/gin/v8_initializer.cc -index ec8de596ca5028e9d8c722cda082f0df668359ed..899ebbb1c2ba8d57532a1af43fcd5d44ac3a2de0 100644 +index b908194f581ae5b8d9c28bfd18a5e433fc4f4acd..34a65998cbaa22241fd7c6cc60d8ab01982ca3ce 100644 --- a/gin/v8_initializer.cc +++ b/gin/v8_initializer.cc @@ -353,7 +353,8 @@ void SetFlags(IsolateHolder::ScriptMode mode, diff --git a/patches/chromium/gritsettings_resource_ids.patch b/patches/chromium/gritsettings_resource_ids.patch index b9b2c2bd509dd..8d322cdbe7a8c 100644 --- a/patches/chromium/gritsettings_resource_ids.patch +++ b/patches/chromium/gritsettings_resource_ids.patch @@ -6,7 +6,7 @@ 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 4ab466ef86340e97707bc5b14e0f0e67997c52a6..03d0b2f126c69df7af42095725a4f89880f0d634 100644 +index 70a1901dc65dc01f7d0a2c46095d93ae8b0fc68f..0bc0f4c29471833289a16642d8bc7fc3f98f1cf6 100644 --- a/tools/gritsettings/resource_ids.spec +++ b/tools/gritsettings/resource_ids.spec @@ -955,6 +955,11 @@ diff --git a/patches/chromium/gtk_visibility.patch b/patches/chromium/gtk_visibility.patch index f9b02be672a7b..bdb9eedb18e94 100644 --- a/patches/chromium/gtk_visibility.patch +++ b/patches/chromium/gtk_visibility.patch @@ -18,7 +18,7 @@ index 349043f8a3cfc9f91cbae951e74258799a4fd126..0f7e3e544f524a7ad6660b54912cb119 # on GTK. "//examples:peerconnection_client", diff --git a/ui/ozone/platform/x11/BUILD.gn b/ui/ozone/platform/x11/BUILD.gn -index b1180a85530a7dd65022e174fe335ede0c7c55ca..c12133d82b111d37c8bac92980c22e406125c8df 100644 +index 252986ee44f9492ada6e11c08dea188bf17e741e..288ff1de7a09d501e0a86563c90e33d064517dac 100644 --- a/ui/ozone/platform/x11/BUILD.gn +++ b/ui/ozone/platform/x11/BUILD.gn @@ -6,7 +6,7 @@ import("//build/config/chromeos/ui_mode.gni") diff --git a/patches/chromium/hack_to_allow_gclient_sync_with_host_os_mac_on_linux_in_ci.patch b/patches/chromium/hack_to_allow_gclient_sync_with_host_os_mac_on_linux_in_ci.patch index 44ac6e99b22d1..823a4fb823937 100644 --- a/patches/chromium/hack_to_allow_gclient_sync_with_host_os_mac_on_linux_in_ci.patch +++ b/patches/chromium/hack_to_allow_gclient_sync_with_host_os_mac_on_linux_in_ci.patch @@ -11,7 +11,7 @@ If removing this patch causes no sync failures, it's safe to delete :+1: Ref https://chromium-review.googlesource.com/c/chromium/src/+/2953903 diff --git a/tools/clang/scripts/update.py b/tools/clang/scripts/update.py -index 3a4bbeb6233f2735d5354c3faaeaef71c0f892a1..2a6891fb0af06d418fd3dc9ff7595f4b898c55df 100755 +index a6af0980390fd5328aedbe2afc1c2c8b474866c3..5c6a32dca0bd4f346b0ec0b5569939f7fa50ec53 100755 --- a/tools/clang/scripts/update.py +++ b/tools/clang/scripts/update.py @@ -302,6 +302,8 @@ def GetDefaultHostOs(): diff --git a/patches/chromium/introduce_ozoneplatform_electron_can_call_x11_property.patch b/patches/chromium/introduce_ozoneplatform_electron_can_call_x11_property.patch index f879002345cc1..3342d70593fd8 100644 --- a/patches/chromium/introduce_ozoneplatform_electron_can_call_x11_property.patch +++ b/patches/chromium/introduce_ozoneplatform_electron_can_call_x11_property.patch @@ -21,7 +21,7 @@ index 9008af973427d7dab8170449bc5767cebc9d2e9e..e312287e4aca61b51a69c8413088f56f properties->supports_global_application_menus = true; properties->app_modal_dialogs_use_event_blocker = true; diff --git a/ui/ozone/public/ozone_platform.h b/ui/ozone/public/ozone_platform.h -index 22ba32317a74df24249d1528dcaaa28ff18bd0f4..fa57f97520a0327be2c7f5179591ca61b801c8b0 100644 +index df6b551b94bd4e04f4c0d6e976c68cc187a57d85..3b6dd20277af88568cdb17a7fddf89bdf89b5640 100644 --- a/ui/ozone/public/ozone_platform.h +++ b/ui/ozone/public/ozone_platform.h @@ -132,6 +132,10 @@ class COMPONENT_EXPORT(OZONE) OzonePlatform { diff --git a/patches/chromium/load_v8_snapshot_in_browser_process.patch b/patches/chromium/load_v8_snapshot_in_browser_process.patch index 280c955d156f0..25236e534c2f9 100644 --- a/patches/chromium/load_v8_snapshot_in_browser_process.patch +++ b/patches/chromium/load_v8_snapshot_in_browser_process.patch @@ -9,10 +9,10 @@ but due to the nature of electron, we need to load the v8 snapshot in the browser process. diff --git a/content/app/content_main_runner_impl.cc b/content/app/content_main_runner_impl.cc -index 4ea2ad7697bd4531f9538c16778b76ed7b439d74..bdc2e97e41705abe0f7b259635842c4f2e122b41 100644 +index 892ed9c63346595376ea89bd8161bd66bb43459a..328f8b800c36544f7906536416ac61dc87cc45d3 100644 --- a/content/app/content_main_runner_impl.cc +++ b/content/app/content_main_runner_impl.cc -@@ -251,11 +251,8 @@ void LoadV8SnapshotFile(const base::CommandLine& command_line) { +@@ -253,11 +253,8 @@ void LoadV8SnapshotFile(const base::CommandLine& command_line) { bool ShouldLoadV8Snapshot(const base::CommandLine& command_line, const std::string& process_type) { diff --git a/patches/chromium/mas-cgdisplayusesforcetogray.patch b/patches/chromium/mas-cgdisplayusesforcetogray.patch index 8f74c3cf1c77e..2408079f26546 100644 --- a/patches/chromium/mas-cgdisplayusesforcetogray.patch +++ b/patches/chromium/mas-cgdisplayusesforcetogray.patch @@ -6,10 +6,10 @@ Subject: mas: avoid usage of CGDisplayUsesForceToGray Removes usage of the CGDisplayUsesForceToGray private API. diff --git a/ui/display/mac/screen_mac.mm b/ui/display/mac/screen_mac.mm -index 596084265973b955a02c87babdefd43c7a1fc8e3..747718d5a0f58911e3f5f6e7a04a0a8d22238627 100644 +index fc2ac4583bafd1847fd8dfe3fccbdf4eb40bd929..50fb6b583f84623bd8a146d9476cdf7989627d8a 100644 --- a/ui/display/mac/screen_mac.mm +++ b/ui/display/mac/screen_mac.mm -@@ -159,7 +159,17 @@ DisplayMac BuildDisplayForScreen(NSScreen* screen) { +@@ -269,7 +269,17 @@ DisplayMac BuildDisplayForScreen(NSScreen* screen) { display.set_color_depth(Display::kDefaultBitsPerPixel); display.set_depth_per_component(Display::kDefaultBitsPerComponent); } diff --git a/patches/chromium/mas_disable_custom_window_frame.patch b/patches/chromium/mas_disable_custom_window_frame.patch index 06cd665d2e11d..7c7230f4a4dce 100644 --- a/patches/chromium/mas_disable_custom_window_frame.patch +++ b/patches/chromium/mas_disable_custom_window_frame.patch @@ -95,11 +95,11 @@ index 67ebc56bd7ee267c03a5543e10a6a41042fcaa38..af3ed27dea51c22ab32ce14686dd7807 // The NSWindow used by BridgedNativeWidget. Provides hooks into AppKit that // can only be accomplished by overriding methods. diff --git a/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm b/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm -index 773158df97f36f69d2226c9ae748aa5eaade0c0b..ee17b53daf9e9c5b53f42704efbb565aeb8bfb01 100644 +index 48c86f5aa9578545f43b04b520e9f1dd92d224c5..fc57c47fe6afaabf363c9efdf75f60e866244fdb 100644 --- a/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm +++ b/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm -@@ -16,7 +16,9 @@ - #import "ui/base/cocoa/window_size_constants.h" +@@ -77,7 +77,9 @@ void OrderChildWindow(NSWindow* child_window, + } // namespace @interface NSWindow (Private) +#ifndef MAS_BUILD @@ -108,7 +108,7 @@ index 773158df97f36f69d2226c9ae748aa5eaade0c0b..ee17b53daf9e9c5b53f42704efbb565a - (BOOL)hasKeyAppearance; - (long long)_resizeDirectionForMouseLocation:(CGPoint)location; - (BOOL)_isConsideredOpenForPersistentState; -@@ -48,6 +50,8 @@ - (void)cr_mouseDownOnFrameView:(NSEvent*)event { +@@ -109,6 +111,8 @@ - (void)cr_mouseDownOnFrameView:(NSEvent*)event { } @end @@ -117,7 +117,7 @@ index 773158df97f36f69d2226c9ae748aa5eaade0c0b..ee17b53daf9e9c5b53f42704efbb565a @implementation NativeWidgetMacNSWindowTitledFrame - (void)mouseDown:(NSEvent*)event { if (self.window.isMovable) -@@ -74,6 +78,8 @@ - (BOOL)usesCustomDrawing { +@@ -135,6 +139,8 @@ - (BOOL)usesCustomDrawing { } @end @@ -126,7 +126,7 @@ index 773158df97f36f69d2226c9ae748aa5eaade0c0b..ee17b53daf9e9c5b53f42704efbb565a @implementation NativeWidgetMacNSWindow { @private base::scoped_nsobject _commandDispatcher; -@@ -209,6 +215,8 @@ - (BOOL)hasViewsMenuActive { +@@ -281,6 +287,8 @@ - (BOOL)hasViewsMenuActive { // NSWindow overrides. @@ -135,7 +135,7 @@ index 773158df97f36f69d2226c9ae748aa5eaade0c0b..ee17b53daf9e9c5b53f42704efbb565a + (Class)frameViewClassForStyleMask:(NSWindowStyleMask)windowStyle { if (windowStyle & NSWindowStyleMaskTitled) { if (Class customFrame = [NativeWidgetMacNSWindowTitledFrame class]) -@@ -220,6 +228,8 @@ + (Class)frameViewClassForStyleMask:(NSWindowStyleMask)windowStyle { +@@ -292,6 +300,8 @@ + (Class)frameViewClassForStyleMask:(NSWindowStyleMask)windowStyle { return [super frameViewClassForStyleMask:windowStyle]; } diff --git a/patches/chromium/mas_disable_remote_accessibility.patch b/patches/chromium/mas_disable_remote_accessibility.patch index 1d607671a6b66..da2adb330879f 100644 --- a/patches/chromium/mas_disable_remote_accessibility.patch +++ b/patches/chromium/mas_disable_remote_accessibility.patch @@ -44,10 +44,10 @@ index 306db835fe203f663b1d84dd3490b619eb3f60b2..7a41d7afe6197e0a78934206782b1063 } // namespace diff --git a/components/remote_cocoa/app_shim/native_widget_ns_window_bridge.mm b/components/remote_cocoa/app_shim/native_widget_ns_window_bridge.mm -index 4c76aafff03b76d78ab8c84e962cf96f8fefc091..32ac66e9ac5a643f5e4ddea979bf4239d441d23f 100644 +index 4c5bb2cd395346dd180f1a518229ed227e8fbdd8..d71840b1da37e6574c8c35e5c2dcb4dcba12b19c 100644 --- a/components/remote_cocoa/app_shim/native_widget_ns_window_bridge.mm +++ b/components/remote_cocoa/app_shim/native_widget_ns_window_bridge.mm -@@ -579,10 +579,12 @@ NSUInteger CountBridgedWindows(NSArray* child_windows) { +@@ -580,10 +580,12 @@ NSUInteger CountBridgedWindows(NSArray* child_windows) { // this should be treated as an error and caught early. CHECK(bridged_view_); @@ -114,7 +114,7 @@ index 0048862cb89d519b8c1c111f923e6dd960c855d6..c7b9124462b0779ed4d1b27fe167e653 // Used to force the NSApplication's focused accessibility element to be the // content::BrowserAccessibilityCocoa accessibility tree when the NSView for diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm -index b72b540492abd9d9060bb06996d2d849ac580aa2..f36e046b2879c3cd24eac04b1cf5f5c62338a11f 100644 +index cf39590bbeca3689f1627d601ca765b39ad7fd58..ad65d6c50ce58dc8e3f49033c4d85d57675663fa 100644 --- a/content/browser/renderer_host/render_widget_host_view_mac.mm +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm @@ -254,8 +254,10 @@ @@ -128,7 +128,7 @@ index b72b540492abd9d9060bb06996d2d849ac580aa2..f36e046b2879c3cd24eac04b1cf5f5c6 // Disconnect from the previous bridge (this will have the effect of // destroying the associated bridge), and close the receiver (to allow it -@@ -1521,8 +1523,10 @@ void CombineTextNodesAndMakeCallback(SpeechCallback callback, +@@ -1515,8 +1517,10 @@ void CombineTextNodesAndMakeCallback(SpeechCallback callback, gfx::NativeViewAccessible RenderWidgetHostViewMac::AccessibilityGetNativeViewAccessibleForWindow() { @@ -139,7 +139,7 @@ index b72b540492abd9d9060bb06996d2d849ac580aa2..f36e046b2879c3cd24eac04b1cf5f5c6 return [GetInProcessNSView() window]; } -@@ -1566,9 +1570,11 @@ void CombineTextNodesAndMakeCallback(SpeechCallback callback, +@@ -1560,9 +1564,11 @@ void CombineTextNodesAndMakeCallback(SpeechCallback callback, } void RenderWidgetHostViewMac::SetAccessibilityWindow(NSWindow* window) { @@ -151,7 +151,7 @@ index b72b540492abd9d9060bb06996d2d849ac580aa2..f36e046b2879c3cd24eac04b1cf5f5c6 } bool RenderWidgetHostViewMac::SyncIsWidgetForMainFrame( -@@ -2063,12 +2069,14 @@ void CombineTextNodesAndMakeCallback(SpeechCallback callback, +@@ -2057,12 +2063,14 @@ void CombineTextNodesAndMakeCallback(SpeechCallback callback, void RenderWidgetHostViewMac::SetRemoteAccessibilityWindowToken( const std::vector& window_token) { @@ -167,7 +167,7 @@ index b72b540492abd9d9060bb06996d2d849ac580aa2..f36e046b2879c3cd24eac04b1cf5f5c6 /////////////////////////////////////////////////////////////////////////////// diff --git a/ui/base/BUILD.gn b/ui/base/BUILD.gn -index 4c996a80ae71aee8c2d259a7eb294fe3257ad9ac..5e897496539a365a5de15073f1dccb16db3987dd 100644 +index ecb4b1e6aafb34f594b6dfa6e5357e0dabb7c866..e80c3d5af1f5e690b7404a323a51db6d46d790c4 100644 --- a/ui/base/BUILD.gn +++ b/ui/base/BUILD.gn @@ -337,6 +337,13 @@ component("base") { diff --git a/patches/chromium/mas_disable_remote_layer.patch b/patches/chromium/mas_disable_remote_layer.patch index 093c692d94b8f..87a806ed62c58 100644 --- a/patches/chromium/mas_disable_remote_layer.patch +++ b/patches/chromium/mas_disable_remote_layer.patch @@ -16,7 +16,7 @@ cases where performance improves when disabling remote CoreAnimation (remote CoreAnimation is really only about battery usage). diff --git a/gpu/ipc/service/image_transport_surface_overlay_mac.h b/gpu/ipc/service/image_transport_surface_overlay_mac.h -index 7fc76ecb3292a892e2aa8c117cd6302f9ce63fa6..efd5da9daf8fbe80264b8b55eafc717317ba48e6 100644 +index 506ff3c2b9a14a725d13e3933bc281d05c0b6b13..9726e2d34d6d123ad3e62d843d21b755788fc062 100644 --- a/gpu/ipc/service/image_transport_surface_overlay_mac.h +++ b/gpu/ipc/service/image_transport_surface_overlay_mac.h @@ -21,7 +21,9 @@ @@ -29,7 +29,7 @@ index 7fc76ecb3292a892e2aa8c117cd6302f9ce63fa6..efd5da9daf8fbe80264b8b55eafc7173 @class CALayer; namespace ui { -@@ -115,7 +117,9 @@ class ImageTransportSurfaceOverlayMac : public gl::GLSurface, +@@ -113,7 +115,9 @@ class ImageTransportSurfaceOverlayMac : public gl::GLSurface, base::WeakPtr delegate_; bool use_remote_layer_api_; @@ -39,7 +39,7 @@ index 7fc76ecb3292a892e2aa8c117cd6302f9ce63fa6..efd5da9daf8fbe80264b8b55eafc7173 std::unique_ptr ca_layer_tree_coordinator_; gfx::Size pixel_size_; -@@ -210,7 +214,9 @@ class ImageTransportSurfaceOverlayMacEGL : public gl::GLSurfaceEGL, +@@ -204,7 +208,9 @@ class ImageTransportSurfaceOverlayMacEGL : public gl::GLSurfaceEGL, base::WeakPtr delegate_; bool use_remote_layer_api_; @@ -50,10 +50,10 @@ index 7fc76ecb3292a892e2aa8c117cd6302f9ce63fa6..efd5da9daf8fbe80264b8b55eafc7173 gfx::Size pixel_size_; diff --git a/gpu/ipc/service/image_transport_surface_overlay_mac.mm b/gpu/ipc/service/image_transport_surface_overlay_mac.mm -index 43be379adb3df7dc31e59319c921cd89654db57a..bc495df301751628117356c8e68b5d121828ce85 100644 +index 3378b9a6d411b853fe64e02812c329f68cbbd2ad..7b2f0b3dc28ff71ae84fe63aa9ea80c2aab75969 100644 --- a/gpu/ipc/service/image_transport_surface_overlay_mac.mm +++ b/gpu/ipc/service/image_transport_surface_overlay_mac.mm -@@ -59,6 +59,7 @@ +@@ -60,6 +60,7 @@ ca_layer_tree_coordinator_ = std::make_unique( use_remote_layer_api_, allow_av_sample_buffer_display_layer); @@ -61,7 +61,7 @@ index 43be379adb3df7dc31e59319c921cd89654db57a..bc495df301751628117356c8e68b5d12 // Create the CAContext to send this to the GPU process, and the layer for // the context. if (use_remote_layer_api_) { -@@ -67,6 +68,7 @@ +@@ -68,6 +69,7 @@ options:@{}] retain]); [ca_context_ setLayer:ca_layer_tree_coordinator_->GetCALayerForDisplay()]; } @@ -69,17 +69,17 @@ index 43be379adb3df7dc31e59319c921cd89654db57a..bc495df301751628117356c8e68b5d12 } ImageTransportSurfaceOverlayMac::~ImageTransportSurfaceOverlayMac() { -@@ -146,7 +148,9 @@ +@@ -145,7 +147,9 @@ "GLImpl", static_cast(gl::GetGLImplementation()), "width", pixel_size_.width()); if (use_remote_layer_api_) { +#ifndef MAS_BUILD - params.ca_layer_params.ca_context_id = [ca_context_ contextId]; + params.ca_context_id = [ca_context_ contextId]; +#endif } else { IOSurfaceRef io_surface = ca_layer_tree_coordinator_->GetIOSurfaceForDisplay(); -@@ -408,6 +412,7 @@ +@@ -378,6 +382,7 @@ ca_layer_tree_coordinator_ = std::make_unique( use_remote_layer_api_, allow_av_sample_buffer_display_layer); @@ -87,7 +87,7 @@ index 43be379adb3df7dc31e59319c921cd89654db57a..bc495df301751628117356c8e68b5d12 // Create the CAContext to send this to the GPU process, and the layer for // the context. if (use_remote_layer_api_) { -@@ -416,6 +421,7 @@ +@@ -386,6 +391,7 @@ options:@{}] retain]); [ca_context_ setLayer:ca_layer_tree_coordinator_->GetCALayerForDisplay()]; } @@ -95,12 +95,12 @@ index 43be379adb3df7dc31e59319c921cd89654db57a..bc495df301751628117356c8e68b5d12 } ImageTransportSurfaceOverlayMacEGL::~ImageTransportSurfaceOverlayMacEGL() { -@@ -496,7 +502,9 @@ +@@ -464,7 +470,9 @@ "GLImpl", static_cast(gl::GetGLImplementation()), "width", pixel_size_.width()); if (use_remote_layer_api_) { +#ifndef MAS_BUILD - params.ca_layer_params.ca_context_id = [ca_context_ contextId]; + params.ca_context_id = [ca_context_ contextId]; +#endif } else { IOSurfaceRef io_surface = diff --git a/patches/chromium/mas_no_private_api.patch b/patches/chromium/mas_no_private_api.patch index 124bb9afbc651..794d3ccd308e7 100644 --- a/patches/chromium/mas_no_private_api.patch +++ b/patches/chromium/mas_no_private_api.patch @@ -166,10 +166,10 @@ index 69e60d498941c34cfac9e79c7517765bf93849f5..b998ad7cf01c21e93c57e1283cfdcb1e void BluetoothAdapterMac::RemovePairingDelegateInternal( diff --git a/media/audio/BUILD.gn b/media/audio/BUILD.gn -index 1b849df0ee4c40a765a14bfaa75720f5570d4846..1f7a4fe36a96d076ddcfd9c9f092f95132d579dc 100644 +index f8b5193b1a1df1c03ba41568d6528894fa2658cc..3faaadd2b75b86ba73ddf6e47aa116f3e45f42ec 100644 --- a/media/audio/BUILD.gn +++ b/media/audio/BUILD.gn -@@ -173,6 +173,12 @@ source_set("audio") { +@@ -176,6 +176,12 @@ source_set("audio") { "mac/scoped_audio_unit.cc", "mac/scoped_audio_unit.h", ] 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 af9c65ee153b1..8b28ad792f4db 100644 --- a/patches/chromium/network_service_allow_remote_certificate_verification_logic.patch +++ b/patches/chromium/network_service_allow_remote_certificate_verification_logic.patch @@ -7,7 +7,7 @@ This adds a callback from the network service that's used to implement session.setCertificateVerifyCallback. diff --git a/services/network/network_context.cc b/services/network/network_context.cc -index 812cfebfbe4f95cf38ce2fcd115a5a363f51363e..e351c6625fac1037040f639e55e0a2e48abf2538 100644 +index 89bbba4956965fda7743f122d05fb5dfc3862e72..b8560d71365759680fd5e49d311b19df41d6fb3b 100644 --- a/services/network/network_context.cc +++ b/services/network/network_context.cc @@ -128,6 +128,11 @@ @@ -114,7 +114,7 @@ index 812cfebfbe4f95cf38ce2fcd115a5a363f51363e..e351c6625fac1037040f639e55e0a2e4 constexpr uint32_t NetworkContext::kMaxOutstandingRequestsPerProcess; NetworkContext::PendingCertVerify::PendingCertVerify() = default; -@@ -733,6 +823,13 @@ void NetworkContext::SetClient( +@@ -742,6 +832,13 @@ void NetworkContext::SetClient( client_.Bind(std::move(client)); } @@ -128,7 +128,7 @@ index 812cfebfbe4f95cf38ce2fcd115a5a363f51363e..e351c6625fac1037040f639e55e0a2e4 void NetworkContext::CreateURLLoaderFactory( mojo::PendingReceiver receiver, mojom::URLLoaderFactoryParamsPtr params) { -@@ -2302,6 +2399,9 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( +@@ -2307,6 +2404,9 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( std::move(cert_verifier)); cert_verifier = base::WrapUnique(cert_verifier_with_trust_anchors_); #endif // BUILDFLAG(IS_CHROMEOS) @@ -139,10 +139,10 @@ index 812cfebfbe4f95cf38ce2fcd115a5a363f51363e..e351c6625fac1037040f639e55e0a2e4 builder.SetCertVerifier(IgnoreErrorsCertVerifier::MaybeWrapCertVerifier( diff --git a/services/network/network_context.h b/services/network/network_context.h -index bcd47e726ad4d320cac3c3341d87b9a3ca2c4065..620d7b7b733cc9749775c2bcabcebdedafe6ba0b 100644 +index f2535521ef0218a1eb1adcdb85235ac3c02ae787..dd79f2c9fabf673d9e2c69830ef3513cb499d961 100644 --- a/services/network/network_context.h +++ b/services/network/network_context.h -@@ -105,6 +105,7 @@ class URLMatcher; +@@ -106,6 +106,7 @@ class URLMatcher; namespace network { class CertVerifierWithTrustAnchors; @@ -150,7 +150,7 @@ index bcd47e726ad4d320cac3c3341d87b9a3ca2c4065..620d7b7b733cc9749775c2bcabcebded class CookieManager; class ExpectCTReporter; class HostResolver; -@@ -236,6 +237,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -237,6 +238,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext void CreateURLLoaderFactory( mojo::PendingReceiver receiver, mojom::URLLoaderFactoryParamsPtr params) override; @@ -159,7 +159,7 @@ index bcd47e726ad4d320cac3c3341d87b9a3ca2c4065..620d7b7b733cc9749775c2bcabcebded void ResetURLLoaderFactories() override; void GetCookieManager( mojo::PendingReceiver receiver) override; -@@ -823,6 +826,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -826,6 +829,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext std::vector dismount_closures_; #endif // BUILDFLAG(IS_DIRECTORY_TRANSFER_REQUIRED) @@ -169,10 +169,10 @@ index bcd47e726ad4d320cac3c3341d87b9a3ca2c4065..620d7b7b733cc9749775c2bcabcebded // CertNetFetcher is not used by the current platform, or if the actual // net::CertVerifier is instantiated outside of the network service. diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom -index cc3f99007db46a488d7f8dacd3ede4a90e1d2ae3..0450b50b5545d9b8f9025553167bed2e78157130 100644 +index cd28ac0510e13539946e4f6bbf8e5fac6e5adb37..d0a041032449fad884d296090aadc16862ef0b2a 100644 --- a/services/network/public/mojom/network_context.mojom +++ b/services/network/public/mojom/network_context.mojom -@@ -282,6 +282,17 @@ struct NetworkContextFilePaths { +@@ -283,6 +283,17 @@ struct NetworkContextFilePaths { bool trigger_migration = false; }; @@ -190,7 +190,7 @@ index cc3f99007db46a488d7f8dacd3ede4a90e1d2ae3..0450b50b5545d9b8f9025553167bed2e // Parameters for constructing a network context. struct NetworkContextParams { // The user agent string. -@@ -833,6 +844,9 @@ interface NetworkContext { +@@ -842,6 +853,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 4f582c7187ca0..defe9e5e06635 100644 --- a/patches/chromium/notification_provenance.patch +++ b/patches/chromium/notification_provenance.patch @@ -31,23 +31,24 @@ index b0e64049d411305d58802fd290bb0480e9b36fee..4afcf3b7a5b841409b0e1c4c2f32fd48 const GURL& origin, const GURL& document_url, diff --git a/content/browser/notifications/blink_notification_service_impl.cc b/content/browser/notifications/blink_notification_service_impl.cc -index a3df152caabcadaba454f73f58763a89fdea4247..ba76f2f294a2eab8581b5ef8d879cb464f14cb1f 100644 +index 0c59d3cec404bc28acd112329ebd8332cfae96a4..62f06f55ec122597af442561fb688c0f6654be6e 100644 --- a/content/browser/notifications/blink_notification_service_impl.cc +++ b/content/browser/notifications/blink_notification_service_impl.cc -@@ -82,10 +82,12 @@ BlinkNotificationServiceImpl::BlinkNotificationServiceImpl( +@@ -83,11 +83,13 @@ BlinkNotificationServiceImpl::BlinkNotificationServiceImpl( BrowserContext* browser_context, scoped_refptr service_worker_context, RenderProcessHost* render_process_host, + RenderFrameHost* render_frame_host, const url::Origin& origin, const GURL& document_url, + const WeakDocumentPtr& weak_document_ptr, mojo::PendingReceiver receiver) : notification_context_(notification_context), + render_frame_host_(render_frame_host), browser_context_(browser_context), service_worker_context_(std::move(service_worker_context)), render_process_host_id_(render_process_host->GetID()), -@@ -149,7 +151,7 @@ void BlinkNotificationServiceImpl::DisplayNonPersistentNotification( +@@ -152,7 +154,7 @@ void BlinkNotificationServiceImpl::DisplayNonPersistentNotification( notification_id, std::move(event_listener_remote)); browser_context_->GetPlatformNotificationService()->DisplayNotification( @@ -57,18 +58,18 @@ index a3df152caabcadaba454f73f58763a89fdea4247..ba76f2f294a2eab8581b5ef8d879cb46 } diff --git a/content/browser/notifications/blink_notification_service_impl.h b/content/browser/notifications/blink_notification_service_impl.h -index dc8de24c86f1769680ce7830844d35dfef7eb7e7..fcd99361fa8c895d6bd89bacb9fb94e76969e7b2 100644 +index 20db1f61b391f7b154071f24e91fd0925e3e0df2..4816ac66d1eebe0823844b07b146707db7727c21 100644 --- a/content/browser/notifications/blink_notification_service_impl.h +++ b/content/browser/notifications/blink_notification_service_impl.h -@@ -42,6 +42,7 @@ class CONTENT_EXPORT BlinkNotificationServiceImpl +@@ -43,6 +43,7 @@ class CONTENT_EXPORT BlinkNotificationServiceImpl BrowserContext* browser_context, scoped_refptr service_worker_context, RenderProcessHost* render_process_host, + RenderFrameHost* render_frame_host, const url::Origin& origin, const GURL& document_url, - mojo::PendingReceiver receiver); -@@ -102,6 +103,7 @@ class CONTENT_EXPORT BlinkNotificationServiceImpl + const WeakDocumentPtr& weak_document_ptr, +@@ -104,6 +105,7 @@ class CONTENT_EXPORT BlinkNotificationServiceImpl // The notification context that owns this service instance. raw_ptr notification_context_; @@ -77,7 +78,7 @@ index dc8de24c86f1769680ce7830844d35dfef7eb7e7..fcd99361fa8c895d6bd89bacb9fb94e7 scoped_refptr service_worker_context_; diff --git a/content/browser/notifications/blink_notification_service_impl_unittest.cc b/content/browser/notifications/blink_notification_service_impl_unittest.cc -index fe015fa7d7813115a2c6a23a00cb509c4c16cd93..88e04351204c786d0fc72a99ccc421f76fc26ef9 100644 +index 41fb02d532190e82d50286e2733a6c3627bf25c8..05f274c2b64646120bb6ef6a26efd2b0152db471 100644 --- a/content/browser/notifications/blink_notification_service_impl_unittest.cc +++ b/content/browser/notifications/blink_notification_service_impl_unittest.cc @@ -129,7 +129,7 @@ class BlinkNotificationServiceImplTest : public ::testing::Test { @@ -85,32 +86,34 @@ index fe015fa7d7813115a2c6a23a00cb509c4c16cd93..88e04351204c786d0fc72a99ccc421f7 notification_context_.get(), &browser_context_, embedded_worker_helper_->context_wrapper(), &render_process_host_, - url::Origin::Create(GURL(kTestOrigin)), -+ nullptr, url::Origin::Create(GURL(kTestOrigin)), ++ nullptr, nurl::Origin::Create(GURL(kTestOrigin)), /*document_url=*/GURL(), + /*weak_document_ptr=*/WeakDocumentPtr(), notification_service_remote_.BindNewPipeAndPassReceiver()); - diff --git a/content/browser/notifications/platform_notification_context_impl.cc b/content/browser/notifications/platform_notification_context_impl.cc -index fc24d16beb5a0ae61bf3123d0594287031d69ddf..6a6edfa8f919ffca815cc0f50fcde0b09067d494 100644 +index 61ac1d7760432bd1a4118c0929a35168a3e26f49..e2ce4aa910053b1a4fb52fcc1197943af95b02f6 100644 --- a/content/browser/notifications/platform_notification_context_impl.cc +++ b/content/browser/notifications/platform_notification_context_impl.cc -@@ -282,13 +282,14 @@ void PlatformNotificationContextImpl::Shutdown() { +@@ -282,6 +282,7 @@ void PlatformNotificationContextImpl::Shutdown() { void PlatformNotificationContextImpl::CreateService( RenderProcessHost* render_process_host, + RenderFrameHost* render_frame_host, const url::Origin& origin, const GURL& document_url, - mojo::PendingReceiver receiver) { + const WeakDocumentPtr& weak_document_ptr, +@@ -289,7 +290,8 @@ void PlatformNotificationContextImpl::CreateService( DCHECK_CURRENTLY_ON(BrowserThread::UI); services_.push_back(std::make_unique( this, browser_context_, service_worker_context_, render_process_host, -- origin, document_url, std::move(receiver))); -+ render_frame_host, origin, document_url, std::move(receiver))); +- origin, document_url, weak_document_ptr, std::move(receiver))); ++ render_frame_host, origin, document_url, weak_document_ptr, ++ std::move(receiver))); } void PlatformNotificationContextImpl::RemoveService( diff --git a/content/browser/notifications/platform_notification_context_impl.h b/content/browser/notifications/platform_notification_context_impl.h -index 69f000e5cd25c6d89c88238873f638923bafdf0e..4f0068a92a0e99e2b34f105954689c7b5c19f436 100644 +index 424fae79eb1c93f1fac293ae8fdeb6d067f523cc..6a2f074ad981deb15b46bd91b6d7eb5de8612403 100644 --- a/content/browser/notifications/platform_notification_context_impl.h +++ b/content/browser/notifications/platform_notification_context_impl.h @@ -48,6 +48,7 @@ struct NotificationDatabaseData; @@ -128,21 +131,32 @@ index 69f000e5cd25c6d89c88238873f638923bafdf0e..4f0068a92a0e99e2b34f105954689c7b + RenderFrameHost* render_frame_host, const url::Origin& origin, const GURL& document_url, - mojo::PendingReceiver receiver); + 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 b661376d97f515574385dde451ed21fb3f3e4f7b..733931cf9f2b55b63c0611cca673250696f1300d 100644 +index cf7d850bbc92a3bf5d18cd112664125bc4195fad..fe59d1d26462b2dec76a6b3c2c9a11be04df1ca8 100644 --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc -@@ -2051,7 +2051,8 @@ void RenderProcessHostImpl::CreateNotificationService( - document_url = rfh->GetLastCommittedURL(); - +@@ -2055,8 +2055,9 @@ void RenderProcessHostImpl::CreateNotificationService( + // For workers: + if (render_frame_id == MSG_ROUTING_NONE) { + storage_partition_impl_->GetPlatformNotificationContext()->CreateService( +- this, origin, /*document_url=*/GURL(), +- /*weak_document_ptr=*/WeakDocumentPtr(), std::move(receiver)); ++ this, RenderFrameHost::FromID(GetID(), render_frame_id), origin, ++ /*document_url=*/GURL(), /*weak_document_ptr=*/WeakDocumentPtr(), ++ std::move(receiver)); + return; + } + +@@ -2064,7 +2065,7 @@ void RenderProcessHostImpl::CreateNotificationService( + RenderFrameHost* rfh = RenderFrameHost::FromID(GetID(), render_frame_id); + CHECK(rfh); storage_partition_impl_->GetPlatformNotificationContext()->CreateService( -- this, origin, document_url, std::move(receiver)); -+ this, RenderFrameHost::FromID(GetID(), render_frame_id), -+ origin, document_url, std::move(receiver)); +- this, origin, rfh->GetLastCommittedURL(), rfh->GetWeakDocumentPtr(), ++ this, rfh, origin, rfh->GetLastCommittedURL(), rfh->GetWeakDocumentPtr(), + std::move(receiver)); } - void RenderProcessHostImpl::CreateWebSocketConnector( diff --git a/content/public/browser/platform_notification_service.h b/content/public/browser/platform_notification_service.h index 9646cbeb31141e3518f51482801431f3a6010360..b13b6ab07b4931b892749c84879d9a6adb3bcb58 100644 --- a/content/public/browser/platform_notification_service.h diff --git a/patches/chromium/port_autofill_colors_to_the_color_pipeline.patch b/patches/chromium/port_autofill_colors_to_the_color_pipeline.patch index 4d30cc3869be4..c8de7c61f19c2 100644 --- a/patches/chromium/port_autofill_colors_to_the_color_pipeline.patch +++ b/patches/chromium/port_autofill_colors_to_the_color_pipeline.patch @@ -8,7 +8,7 @@ needed in chromium but our autofill implementation uses them. This patch can be our autofill implementation to work like Chromium's. diff --git a/ui/color/color_id.h b/ui/color/color_id.h -index 14d91a0d19c01a856a9614b127a4ef3655614684..a243dd71886af7c5313b16a8522a50ae50af5959 100644 +index e7b5202d87dd91c79c7b5f0ffe0473f5f38cafa0..a8e477c358ac283718f571738510a62a4a7631c5 100644 --- a/ui/color/color_id.h +++ b/ui/color/color_id.h @@ -128,6 +128,16 @@ diff --git a/patches/chromium/posix_replace_doubleforkandexec_with_forkandspawn.patch b/patches/chromium/posix_replace_doubleforkandexec_with_forkandspawn.patch index 5cb0508a1a082..b9459144375d1 100644 --- a/patches/chromium/posix_replace_doubleforkandexec_with_forkandspawn.patch +++ b/patches/chromium/posix_replace_doubleforkandexec_with_forkandspawn.patch @@ -33,7 +33,7 @@ index 8dcac3238870920d374b86033d05d77ebde351e9..02103924332eddbd158c04f8a395bb4a MIPS Technologies, Inc. +Darshan Sen diff --git a/third_party/crashpad/crashpad/client/crashpad_client_linux.cc b/third_party/crashpad/crashpad/client/crashpad_client_linux.cc -index 53c2dadac9d6cb74a3c3e07d9917e9162474b8a0..6761db0e8ac5edba6fac90cdf79e38dfd4cd9d70 100644 +index 295ec1615d83984835e238e349029b8755611f52..94c1cb02efe328ab45bc30fc7db8992872ed6b08 100644 --- a/third_party/crashpad/crashpad/client/crashpad_client_linux.cc +++ b/third_party/crashpad/crashpad/client/crashpad_client_linux.cc @@ -45,7 +45,7 @@ @@ -45,7 +45,7 @@ index 53c2dadac9d6cb74a3c3e07d9917e9162474b8a0..6761db0e8ac5edba6fac90cdf79e38df #include "util/posix/scoped_mmap.h" #include "util/posix/signals.h" -@@ -454,7 +454,7 @@ bool CrashpadClient::StartHandler( +@@ -459,7 +459,7 @@ bool CrashpadClient::StartHandler( argv.push_back(FormatArgumentInt("initial-client-fd", handler_sock.get())); argv.push_back("--shared-client-connection"); @@ -54,7 +54,7 @@ index 53c2dadac9d6cb74a3c3e07d9917e9162474b8a0..6761db0e8ac5edba6fac90cdf79e38df return false; } -@@ -609,7 +609,7 @@ bool CrashpadClient::StartJavaHandlerForClient( +@@ -614,7 +614,7 @@ bool CrashpadClient::StartJavaHandlerForClient( int socket) { std::vector argv = BuildAppProcessArgs( class_name, database, metrics_dir, url, annotations, arguments, socket); @@ -63,7 +63,7 @@ index 53c2dadac9d6cb74a3c3e07d9917e9162474b8a0..6761db0e8ac5edba6fac90cdf79e38df } bool CrashpadClient::StartHandlerWithLinkerAtCrash( -@@ -658,7 +658,7 @@ bool CrashpadClient::StartHandlerWithLinkerForClient( +@@ -663,7 +663,7 @@ bool CrashpadClient::StartHandlerWithLinkerForClient( annotations, arguments, socket); @@ -72,7 +72,7 @@ index 53c2dadac9d6cb74a3c3e07d9917e9162474b8a0..6761db0e8ac5edba6fac90cdf79e38df } #endif -@@ -692,7 +692,7 @@ bool CrashpadClient::StartHandlerForClient( +@@ -697,7 +697,7 @@ bool CrashpadClient::StartHandlerForClient( argv.push_back(FormatArgumentInt("initial-client-fd", socket)); diff --git a/patches/chromium/printing.patch b/patches/chromium/printing.patch index 79f3d608bd248..07a9d227e0853 100644 --- a/patches/chromium/printing.patch +++ b/patches/chromium/printing.patch @@ -55,7 +55,7 @@ index 331a084371402b5a2440b5d60feac8f0189e84b9..6755d1f497cef4deea6b83df1d8720dc : PdfRenderSettings::Mode::POSTSCRIPT_LEVEL3; } diff --git a/chrome/browser/printing/print_job_worker.cc b/chrome/browser/printing/print_job_worker.cc -index ee713c5686d4ea8a5d73cebf74e67381b685cff6..375ce3294727b84bf0071681c7bc35c772e4e3b9 100644 +index d9ae000f1348529ab849349d7562dbb04fe9fd16..cf66978761f5dda2f8958234d62c3cf11ae4cf9c 100644 --- a/chrome/browser/printing/print_job_worker.cc +++ b/chrome/browser/printing/print_job_worker.cc @@ -20,7 +20,6 @@ @@ -74,7 +74,7 @@ index ee713c5686d4ea8a5d73cebf74e67381b685cff6..375ce3294727b84bf0071681c7bc35c7 #include "printing/backend/print_backend.h" #include "printing/buildflags/buildflags.h" #include "printing/mojom/print.mojom.h" -@@ -229,16 +229,21 @@ void PrintJobWorker::UpdatePrintSettings(base::Value::Dict new_settings, +@@ -222,16 +222,21 @@ void PrintJobWorker::UpdatePrintSettings(base::Value::Dict new_settings, #endif // BUILDFLAG(IS_LINUX) && defined(USE_CUPS) } @@ -113,7 +113,7 @@ index 1e158ecd686e775f656d5a05a9d916ce8f075fa8..20613012d1e6f435c3211d78ec311cf0 void PrintJobWorkerOop::UnregisterServiceManagerClient() { diff --git a/chrome/browser/printing/print_view_manager_base.cc b/chrome/browser/printing/print_view_manager_base.cc -index e74a2d0858c187b11ac322033b122e046a45967e..1e190f58d61a1a3767c7d1e1e11c27fa972c1c03 100644 +index e665eb42fad5f47b1643315d2cdcdf2eb66b069d..810c190e60bfc1bab4dcc5385c9cb30ae491a0fb 100644 --- a/chrome/browser/printing/print_view_manager_base.cc +++ b/chrome/browser/printing/print_view_manager_base.cc @@ -30,10 +30,10 @@ @@ -153,9 +153,9 @@ index e74a2d0858c187b11ac322033b122e046a45967e..1e190f58d61a1a3767c7d1e1e11c27fa +#endif } - #if BUILDFLAG(ENABLE_PRINT_PREVIEW) -@@ -192,7 +196,9 @@ void UpdatePrintSettingsReplyOnIO( - DCHECK_CURRENTLY_ON(content::BrowserThread::IO); + void OnDidGetDefaultPrintSettings( +@@ -144,7 +148,9 @@ void OnDidUpdatePrintSettings( + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); DCHECK(printer_query); mojom::PrintPagesParamsPtr params = CreateEmptyPrintPagesParamsPtr(); - if (printer_query->last_status() == mojom::ResultCode::kSuccess) { @@ -165,26 +165,25 @@ index e74a2d0858c187b11ac322033b122e046a45967e..1e190f58d61a1a3767c7d1e1e11c27fa RenderParamsFromPrintSettings(printer_query->settings(), params->params.get()); params->params->document_cookie = printer_query->cookie(); -@@ -245,6 +251,7 @@ void ScriptedPrintReplyOnIO( +@@ -172,6 +178,7 @@ void OnDidScriptedPrint( mojom::PrintManagerHost::ScriptedPrintCallback callback) { - DCHECK_CURRENTLY_ON(content::BrowserThread::IO); + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); mojom::PrintPagesParamsPtr params = CreateEmptyPrintPagesParamsPtr(); + if (printer_query->last_status() == mojom::ResultCode::kSuccess && printer_query->settings().dpi()) { RenderParamsFromPrintSettings(printer_query->settings(), -@@ -254,8 +261,9 @@ void ScriptedPrintReplyOnIO( +@@ -181,7 +188,8 @@ void OnDidScriptedPrint( } bool has_valid_cookie = params->params->document_cookie; bool has_dpi = !params->params->dpi.IsEmpty(); +- std::move(callback).Run(std::move(params)); + bool canceled = printer_query->last_status() == mojom::ResultCode::kCanceled; - content::GetUIThreadTaskRunner({})->PostTask( -- FROM_HERE, base::BindOnce(std::move(callback), std::move(params))); -+ FROM_HERE, base::BindOnce(std::move(callback), std::move(params), canceled)); ++ std::move(callback).Run(std::move(params), canceled); if (has_dpi && has_valid_cookie) { queue->QueuePrinterQuery(std::move(printer_query)); -@@ -293,12 +301,14 @@ PrintViewManagerBase::PrintViewManagerBase(content::WebContents* web_contents) +@@ -196,12 +204,14 @@ PrintViewManagerBase::PrintViewManagerBase(content::WebContents* web_contents) : PrintManager(web_contents), queue_(g_browser_process->print_job_manager()->queue()) { DCHECK(queue_); @@ -199,7 +198,7 @@ index e74a2d0858c187b11ac322033b122e046a45967e..1e190f58d61a1a3767c7d1e1e11c27fa } PrintViewManagerBase::~PrintViewManagerBase() { -@@ -306,7 +316,10 @@ PrintViewManagerBase::~PrintViewManagerBase() { +@@ -209,7 +219,10 @@ PrintViewManagerBase::~PrintViewManagerBase() { DisconnectFromCurrentPrintJob(); } @@ -211,7 +210,7 @@ index e74a2d0858c187b11ac322033b122e046a45967e..1e190f58d61a1a3767c7d1e1e11c27fa // Remember the ID for `rfh`, to enable checking that the `RenderFrameHost` // is still valid after a possible inner message loop runs in // `DisconnectFromCurrentPrintJob()`. -@@ -334,6 +347,9 @@ bool PrintViewManagerBase::PrintNow(content::RenderFrameHost* rfh) { +@@ -237,6 +250,9 @@ bool PrintViewManagerBase::PrintNow(content::RenderFrameHost* rfh) { #endif SetPrintingRFH(rfh); @@ -221,7 +220,7 @@ index e74a2d0858c187b11ac322033b122e046a45967e..1e190f58d61a1a3767c7d1e1e11c27fa #if BUILDFLAG(ENABLE_PRINT_CONTENT_ANALYSIS) enterprise_connectors::ContentAnalysisDelegate::Data scanning_data; -@@ -502,7 +518,8 @@ void PrintViewManagerBase::GetDefaultPrintSettingsReply( +@@ -405,7 +421,8 @@ void PrintViewManagerBase::GetDefaultPrintSettingsReply( void PrintViewManagerBase::ScriptedPrintReply( ScriptedPrintCallback callback, int process_id, @@ -231,7 +230,7 @@ index e74a2d0858c187b11ac322033b122e046a45967e..1e190f58d61a1a3767c7d1e1e11c27fa DCHECK_CURRENTLY_ON(content::BrowserThread::UI); #if BUILDFLAG(ENABLE_OOP_PRINTING) -@@ -517,16 +534,19 @@ void PrintViewManagerBase::ScriptedPrintReply( +@@ -420,8 +437,11 @@ void PrintViewManagerBase::ScriptedPrintReply( return; } @@ -244,18 +243,17 @@ index e74a2d0858c187b11ac322033b122e046a45967e..1e190f58d61a1a3767c7d1e1e11c27fa } void PrintViewManagerBase::UpdatePrintingEnabled() { - DCHECK_CURRENTLY_ON(content::BrowserThread::UI); +@@ -429,8 +449,7 @@ void PrintViewManagerBase::UpdatePrintingEnabled() { // The Unretained() is safe because ForEachRenderFrameHost() is synchronous. -- web_contents()->GetMainFrame()->ForEachRenderFrameHost(base::BindRepeating( -- &PrintViewManagerBase::SendPrintingEnabled, base::Unretained(this), -- printing_enabled_.GetValue())); -+ web_contents()->GetMainFrame()->ForEachRenderFrameHost( -+ base::BindRepeating(&PrintViewManagerBase::SendPrintingEnabled, + web_contents()->GetPrimaryMainFrame()->ForEachRenderFrameHost( + base::BindRepeating(&PrintViewManagerBase::SendPrintingEnabled, +- base::Unretained(this), +- printing_enabled_.GetValue())); + base::Unretained(this), true)); } void PrintViewManagerBase::NavigationStopped() { -@@ -642,11 +662,14 @@ void PrintViewManagerBase::DidPrintDocument( +@@ -546,11 +565,14 @@ void PrintViewManagerBase::DidPrintDocument( void PrintViewManagerBase::GetDefaultPrintSettings( GetDefaultPrintSettingsCallback callback) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); @@ -270,7 +268,7 @@ index e74a2d0858c187b11ac322033b122e046a45967e..1e190f58d61a1a3767c7d1e1e11c27fa #if BUILDFLAG(ENABLE_OOP_PRINTING) if (printing::features::kEnableOopPrintDriversJobPrint.Get() && !service_manager_client_id_.has_value()) { -@@ -676,18 +699,20 @@ void PrintViewManagerBase::UpdatePrintSettings( +@@ -588,18 +610,20 @@ void PrintViewManagerBase::UpdatePrintSettings( base::Value::Dict job_settings, UpdatePrintSettingsCallback callback) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); @@ -292,7 +290,7 @@ index e74a2d0858c187b11ac322033b122e046a45967e..1e190f58d61a1a3767c7d1e1e11c27fa content::BrowserContext* context = web_contents() ? web_contents()->GetBrowserContext() : nullptr; PrefService* prefs = -@@ -697,6 +722,7 @@ void PrintViewManagerBase::UpdatePrintSettings( +@@ -609,6 +633,7 @@ void PrintViewManagerBase::UpdatePrintSettings( if (value > 0) job_settings.Set(kSettingRasterizePdfDpi, value); } @@ -300,7 +298,7 @@ index e74a2d0858c187b11ac322033b122e046a45967e..1e190f58d61a1a3767c7d1e1e11c27fa auto callback_wrapper = base::BindOnce(&PrintViewManagerBase::UpdatePrintSettingsReply, -@@ -722,14 +748,14 @@ void PrintViewManagerBase::ScriptedPrint(mojom::ScriptedPrintParamsPtr params, +@@ -640,14 +665,14 @@ void PrintViewManagerBase::ScriptedPrint(mojom::ScriptedPrintParamsPtr params, // didn't happen for some reason. bad_message::ReceivedBadMessage( render_process_host, bad_message::PVMB_SCRIPTED_PRINT_FENCED_FRAME); @@ -317,7 +315,7 @@ index e74a2d0858c187b11ac322033b122e046a45967e..1e190f58d61a1a3767c7d1e1e11c27fa return; } #endif -@@ -767,7 +793,6 @@ void PrintViewManagerBase::PrintingFailed(int32_t cookie, +@@ -685,7 +710,6 @@ void PrintViewManagerBase::PrintingFailed(int32_t cookie, PrintManager::PrintingFailed(cookie, reason); #if !BUILDFLAG(IS_ANDROID) // Android does not implement this function. @@ -325,7 +323,7 @@ index e74a2d0858c187b11ac322033b122e046a45967e..1e190f58d61a1a3767c7d1e1e11c27fa #endif ReleasePrinterQuery(); -@@ -782,6 +807,11 @@ void PrintViewManagerBase::RemoveObserver(Observer& observer) { +@@ -700,6 +724,11 @@ void PrintViewManagerBase::RemoveObserver(Observer& observer) { } void PrintViewManagerBase::ShowInvalidPrinterSettingsError() { @@ -337,7 +335,7 @@ index e74a2d0858c187b11ac322033b122e046a45967e..1e190f58d61a1a3767c7d1e1e11c27fa base::ThreadTaskRunnerHandle::Get()->PostTask( FROM_HERE, base::BindOnce(&ShowWarningMessageBox, l10n_util::GetStringUTF16( -@@ -792,10 +822,12 @@ void PrintViewManagerBase::RenderFrameHostStateChanged( +@@ -710,10 +739,12 @@ void PrintViewManagerBase::RenderFrameHostStateChanged( content::RenderFrameHost* render_frame_host, content::RenderFrameHost::LifecycleState /*old_state*/, content::RenderFrameHost::LifecycleState new_state) { @@ -350,7 +348,7 @@ index e74a2d0858c187b11ac322033b122e046a45967e..1e190f58d61a1a3767c7d1e1e11c27fa } void PrintViewManagerBase::DidStartLoading() { -@@ -855,6 +887,11 @@ void PrintViewManagerBase::OnJobDone() { +@@ -773,6 +804,11 @@ void PrintViewManagerBase::OnJobDone() { ReleasePrintJob(); } @@ -362,9 +360,9 @@ index e74a2d0858c187b11ac322033b122e046a45967e..1e190f58d61a1a3767c7d1e1e11c27fa void PrintViewManagerBase::OnFailed() { TerminatePrintJob(true); } -@@ -912,7 +949,10 @@ bool PrintViewManagerBase::CreateNewPrintJob( +@@ -831,7 +867,10 @@ bool PrintViewManagerBase::CreateNewPrintJob( - // Disconnect the current |print_job_|. + // Disconnect the current `print_job_`. auto weak_this = weak_ptr_factory_.GetWeakPtr(); - DisconnectFromCurrentPrintJob(); + if (callback_.is_null()) { @@ -374,7 +372,7 @@ index e74a2d0858c187b11ac322033b122e046a45967e..1e190f58d61a1a3767c7d1e1e11c27fa if (!weak_this) return false; -@@ -993,6 +1033,13 @@ void PrintViewManagerBase::ReleasePrintJob() { +@@ -912,6 +951,13 @@ void PrintViewManagerBase::ReleasePrintJob() { } #endif @@ -388,7 +386,7 @@ index e74a2d0858c187b11ac322033b122e046a45967e..1e190f58d61a1a3767c7d1e1e11c27fa if (!print_job_) return; -@@ -1042,7 +1089,7 @@ bool PrintViewManagerBase::RunInnerMessageLoop() { +@@ -961,7 +1007,7 @@ bool PrintViewManagerBase::RunInnerMessageLoop() { } bool PrintViewManagerBase::OpportunisticallyCreatePrintJob(int cookie) { @@ -397,7 +395,7 @@ index e74a2d0858c187b11ac322033b122e046a45967e..1e190f58d61a1a3767c7d1e1e11c27fa return true; if (!cookie) { -@@ -1150,7 +1197,7 @@ void PrintViewManagerBase::SendPrintingEnabled(bool enabled, +@@ -1067,7 +1113,7 @@ void PrintViewManagerBase::SendPrintingEnabled(bool enabled, } void PrintViewManagerBase::CompletePrintNow(content::RenderFrameHost* rfh) { @@ -537,7 +535,7 @@ index f2c17a8fecc36ea18de71598b582e206661763c5..599b34690da042b57fcd78d0c0557d18 // Tells the browser that there are invalid printer settings. ShowInvalidPrinterSettingsError(); diff --git a/components/printing/renderer/print_render_frame_helper.cc b/components/printing/renderer/print_render_frame_helper.cc -index 1664ac8233e74cadcf19ebc53e41cef37d13019c..c3909745f02ed4df8f1dd1fb1b2c1192bc3861ff 100644 +index 66ac411e4a70610cbf457e0bbbb0439a6e0f7c59..8b5e9f822615223bb55dba288e8f131d095950c7 100644 --- a/components/printing/renderer/print_render_frame_helper.cc +++ b/components/printing/renderer/print_render_frame_helper.cc @@ -42,6 +42,7 @@ 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 288bb9200db53..3150d3c2096aa 100644 --- a/patches/chromium/refactor_expose_cursor_changes_to_the_webcontentsobserver.patch +++ b/patches/chromium/refactor_expose_cursor_changes_to_the_webcontentsobserver.patch @@ -43,10 +43,10 @@ index 273750752cdef18ccd7d54b9b28c524375bb3e8d..3eec2e5c14186b39a67ca8ad410a3268 void RenderWidgetHostImpl::ShowContextMenuAtPoint( diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc -index 987e437641b7978290aa2633755b67f9099e1d04..6f09c04cc612d2ac58b62d44516eefa1b66d145c 100644 +index 0e1e25d40ebf3ca92c57dfdfb52c5269198aa6f7..889da8724da515ab7e6b412fbaff434eb53289dc 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc -@@ -4491,6 +4491,11 @@ TextInputManager* WebContentsImpl::GetTextInputManager() { +@@ -4526,6 +4526,11 @@ TextInputManager* WebContentsImpl::GetTextInputManager() { return text_input_manager_.get(); } @@ -59,10 +59,10 @@ index 987e437641b7978290aa2633755b67f9099e1d04..6f09c04cc612d2ac58b62d44516eefa1 RenderWidgetHostImpl* render_widget_host) { return render_widget_host == GetMainFrame()->GetRenderWidgetHost(); diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h -index 36888689fe38e7873f09b1bc64a901f0771cbd5b..13253163b54c86b37c7b5654b674c5f920c81272 100644 +index 4d6a72ac7eebfc27a97f7c269324129dfc7c534d..4c278081eaec0cdb5dac5e9fc3453de5ce04d918 100644 --- a/content/browser/web_contents/web_contents_impl.h +++ b/content/browser/web_contents/web_contents_impl.h -@@ -954,6 +954,7 @@ class CONTENT_EXPORT WebContentsImpl : public WebContents, +@@ -958,6 +958,7 @@ class CONTENT_EXPORT WebContentsImpl : public WebContents, void SendScreenRects() override; void SendActiveState(bool active) override; TextInputManager* GetTextInputManager() override; diff --git a/patches/chromium/render_widget_host_view_base.patch b/patches/chromium/render_widget_host_view_base.patch index 579052a1a0d70..955cf1383f819 100644 --- a/patches/chromium/render_widget_host_view_base.patch +++ b/patches/chromium/render_widget_host_view_base.patch @@ -6,10 +6,10 @@ Subject: render_widget_host_view_base.patch ... something to do with OSR? and maybe as well? terrifying. diff --git a/content/browser/renderer_host/render_widget_host_view_base.cc b/content/browser/renderer_host/render_widget_host_view_base.cc -index bdaae69dbeac280dcc83baa217d6c4ab0039ba35..14e7b4386d8d8bf020abf5a1037761eac1068223 100644 +index edcca00291646d4c6c03f840f9cd49f4740624c6..f18e20852d70a82570dd45fe10a284a41c8e4be7 100644 --- a/content/browser/renderer_host/render_widget_host_view_base.cc +++ b/content/browser/renderer_host/render_widget_host_view_base.cc -@@ -691,6 +691,13 @@ bool RenderWidgetHostViewBase::ScreenRectIsUnstableFor( +@@ -695,6 +695,13 @@ bool RenderWidgetHostViewBase::ScreenRectIsUnstableFor( return false; } @@ -24,7 +24,7 @@ index bdaae69dbeac280dcc83baa217d6c4ab0039ba35..14e7b4386d8d8bf020abf5a1037761ea const blink::WebMouseEvent& event, const ui::LatencyInfo& latency) { diff --git a/content/browser/renderer_host/render_widget_host_view_base.h b/content/browser/renderer_host/render_widget_host_view_base.h -index 8f76edf316a075bddb2963ff1baf3ba0481b5fa7..2604d55c46e4ef3e512554a645d3db4b5670995c 100644 +index 912e238c2cc03df22135eaff1bdf7d12fc390629..6cb6557236296d9f86f4deeafbeea33a3f1d6327 100644 --- a/content/browser/renderer_host/render_widget_host_view_base.h +++ b/content/browser/renderer_host/render_widget_host_view_base.h @@ -26,8 +26,10 @@ @@ -50,7 +50,7 @@ index 8f76edf316a075bddb2963ff1baf3ba0481b5fa7..2604d55c46e4ef3e512554a645d3db4b class WebCursor; class WebContentsAccessibility; class DelegatedFrameHost; -@@ -144,6 +148,9 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { +@@ -145,6 +149,9 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { const gfx::Rect& keyboard_rect) override {} bool IsHTMLFormPopup() const override; @@ -60,7 +60,7 @@ index 8f76edf316a075bddb2963ff1baf3ba0481b5fa7..2604d55c46e4ef3e512554a645d3db4b // This only needs to be overridden by RenderWidgetHostViewBase subclasses // that handle content embedded within other RenderWidgetHostViews. gfx::PointF TransformPointToRootCoordSpaceF( -@@ -295,6 +302,11 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { +@@ -296,6 +303,11 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { virtual void ProcessGestureEvent(const blink::WebGestureEvent& event, const ui::LatencyInfo& latency); diff --git a/patches/chromium/resource_file_conflict.patch b/patches/chromium/resource_file_conflict.patch index 64adbef1380b8..d1f1bcef7a2e0 100644 --- a/patches/chromium/resource_file_conflict.patch +++ b/patches/chromium/resource_file_conflict.patch @@ -52,10 +52,10 @@ 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 b1c9b0c7e7d6d8694f123d057e415676cab607c7..dc59a88bc930d4d7b8e606434d940cac5b834bd0 100644 +index abbbfc5db4d63d6b31a062e0394438354030f3e8..b6234183651923505bd2a4a8640ea21508033ef1 100644 --- a/chrome/BUILD.gn +++ b/chrome/BUILD.gn -@@ -1538,7 +1538,7 @@ if (is_chrome_branded && !is_android) { +@@ -1539,7 +1539,7 @@ if (is_chrome_branded && !is_android) { } } @@ -64,7 +64,7 @@ index b1c9b0c7e7d6d8694f123d057e415676cab607c7..dc59a88bc930d4d7b8e606434d940cac chrome_paks("packed_resources") { if (is_mac) { output_dir = "$root_gen_dir/repack" -@@ -1567,6 +1567,12 @@ if (!is_android) { +@@ -1568,6 +1568,12 @@ if (!is_android) { } } diff --git a/patches/chromium/scroll_bounce_flag.patch b/patches/chromium/scroll_bounce_flag.patch index 38a37c6c62911..a5704c0b5bb82 100644 --- a/patches/chromium/scroll_bounce_flag.patch +++ b/patches/chromium/scroll_bounce_flag.patch @@ -6,10 +6,10 @@ 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 f81f1104399a42009f7705585716579d4c17ad03..d08e4c8223078230e35afd21b6f98ec839664ea9 100644 +index ab74207b348f211ee78de1384c9c75f7682926fe..ff475b3978b215cdbe921c620661070309bc5f5d 100644 --- a/content/renderer/render_thread_impl.cc +++ b/content/renderer/render_thread_impl.cc -@@ -1343,7 +1343,7 @@ bool RenderThreadImpl::IsLcdTextEnabled() { +@@ -1283,7 +1283,7 @@ bool RenderThreadImpl::IsLcdTextEnabled() { } bool RenderThreadImpl::IsElasticOverscrollEnabled() { diff --git a/patches/chromium/support_mixed_sandbox_with_zygote.patch b/patches/chromium/support_mixed_sandbox_with_zygote.patch index c0ca856c45100..8081865c62c90 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 733931cf9f2b55b63c0611cca673250696f1300d..8aa14d7cdb7edc5d53736fb959e3f9992d4fd896 100644 +index fe59d1d26462b2dec76a6b3c2c9a11be04df1ca8..73a50b19f8bf75119b6af7698cdf7d569c504e77 100644 --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc -@@ -1750,9 +1750,15 @@ bool RenderProcessHostImpl::Init() { +@@ -1748,9 +1748,15 @@ bool RenderProcessHostImpl::Init() { std::unique_ptr sandbox_delegate = std::make_unique( cmd_line.get(), IsJitDisabled()); @@ -42,7 +42,7 @@ index 733931cf9f2b55b63c0611cca673250696f1300d..8aa14d7cdb7edc5d53736fb959e3f999 auto file_data = std::make_unique(); diff --git a/content/browser/renderer_host/renderer_sandboxed_process_launcher_delegate.cc b/content/browser/renderer_host/renderer_sandboxed_process_launcher_delegate.cc -index 2c4bd947eca08223c541de53390a18d19208397e..6ef28fe7ebfd3dfa60995184772e3e2dd6f7f0d8 100644 +index af8173d4203150237387529aa2b974aeec7c5a41..9fadaa80a4547a583484355342c3fd98d53bcd27 100644 --- a/content/browser/renderer_host/renderer_sandboxed_process_launcher_delegate.cc +++ b/content/browser/renderer_host/renderer_sandboxed_process_launcher_delegate.cc @@ -31,6 +31,9 @@ namespace content { @@ -55,10 +55,10 @@ index 2c4bd947eca08223c541de53390a18d19208397e..6ef28fe7ebfd3dfa60995184772e3e2d const base::CommandLine& browser_command_line = *base::CommandLine::ForCurrentProcess(); base::CommandLine::StringType renderer_prefix = -@@ -58,6 +61,9 @@ RendererSandboxedProcessLauncherDelegateWin:: - bool is_jit_disabled) - : renderer_code_integrity_enabled_( - GetContentClient()->browser()->IsRendererCodeIntegrityEnabled()) { +@@ -60,6 +63,9 @@ RendererSandboxedProcessLauncherDelegateWin:: + GetContentClient()->browser()->IsRendererCodeIntegrityEnabled()), + renderer_app_container_disabled_( + GetContentClient()->browser()->IsRendererAppContainerDisabled()) { +#if BUILDFLAG(USE_ZYGOTE_HANDLE) + use_zygote_ = !cmd_line->HasSwitch(switches::kNoZygote); +#endif @@ -66,7 +66,7 @@ index 2c4bd947eca08223c541de53390a18d19208397e..6ef28fe7ebfd3dfa60995184772e3e2d dynamic_code_can_be_disabled_ = true; return; diff --git a/content/browser/renderer_host/renderer_sandboxed_process_launcher_delegate.h b/content/browser/renderer_host/renderer_sandboxed_process_launcher_delegate.h -index 576a2c0782bf49cb57c973434b5d1f2ec9fdcbc5..24d1854c261372353c9bf69a6cb0cf2d24e9ebef 100644 +index 3a0e25b38965de5b57fd0be1112cf62dfda846d7..f412080cfb49330d855fdf1cbc13ff8850530401 100644 --- a/content/browser/renderer_host/renderer_sandboxed_process_launcher_delegate.h +++ b/content/browser/renderer_host/renderer_sandboxed_process_launcher_delegate.h @@ -18,6 +18,11 @@ class CONTENT_EXPORT RendererSandboxedProcessLauncherDelegate diff --git a/patches/chromium/web_contents.patch b/patches/chromium/web_contents.patch index 9239a84e8dd6a..5349fb89f413e 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 407f734b77d1ed4876f01327df958847d60e9128..ddfa7cf439244a6d58ab73dea014b341912f503f 100644 +index 7dba296aaa55b9aa6026ccdf288171f701601f46..050e59567dfb72833d96a9331329b8235d0a4a07 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc -@@ -3026,6 +3026,13 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, +@@ -3036,6 +3036,13 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, site_instance.get(), params.renderer_initiated_creation, params.main_frame_name, GetOpener(), primary_main_frame_policy); @@ -26,7 +26,7 @@ index 407f734b77d1ed4876f01327df958847d60e9128..ddfa7cf439244a6d58ab73dea014b341 std::unique_ptr delegate = GetContentClient()->browser()->GetWebContentsViewDelegate(this); -@@ -3036,6 +3043,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, +@@ -3046,6 +3053,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, view_ = CreateWebContentsView(this, std::move(delegate), &render_view_host_delegate_view_); } @@ -35,7 +35,7 @@ index 407f734b77d1ed4876f01327df958847d60e9128..ddfa7cf439244a6d58ab73dea014b341 CHECK(view_.get()); diff --git a/content/public/browser/web_contents.h b/content/public/browser/web_contents.h -index e82a5b71eb8a6ee2df8478ccd3432b4afbb096aa..d5c2a922bba0ff0d5a4a22d9cd25be46fd09d4e1 100644 +index c98dd2d9a23a0a69a8c0d401e810c79f29308cea..53e264061c53ef48a7584939e47984ceab40fb8e 100644 --- a/content/public/browser/web_contents.h +++ b/content/public/browser/web_contents.h @@ -93,10 +93,13 @@ class BrowserContext; diff --git a/patches/chromium/webview_fullscreen.patch b/patches/chromium/webview_fullscreen.patch index 1653f6c8f33ce..e363b1ef4a0ed 100644 --- a/patches/chromium/webview_fullscreen.patch +++ b/patches/chromium/webview_fullscreen.patch @@ -14,10 +14,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 e612764997277da3411d8040850756eb38996cca..f0341511d7d00f03a52bdead457f1f9d60ac5486 100644 +index 83cc6ded4b3354f37b8e1dc0d9e4f3289863fa09..269a7b63c8afa14fbf3b48de020c89ea22f50a83 100644 --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc -@@ -6284,6 +6284,15 @@ void RenderFrameHostImpl::EnterFullscreen( +@@ -6325,6 +6325,15 @@ void RenderFrameHostImpl::EnterFullscreen( notified_instances.insert(parent_site_instance); } @@ -30,6 +30,6 @@ index e612764997277da3411d8040850756eb38996cca..f0341511d7d00f03a52bdead457f1f9d + options.Clone()); + } + - delegate_->EnterFullscreenMode(this, *options); - delegate_->FullscreenStateChanged(this, /*is_fullscreen=*/true, - std::move(options)); + // Focus the window if another frame may have delegated the capability. + if (had_fullscreen_token && !GetView()->HasFocus()) + GetView()->Focus(); diff --git a/patches/chromium/worker_context_will_destroy.patch b/patches/chromium/worker_context_will_destroy.patch index 00b3be1ea6281..a41f69b1c54ab 100644 --- a/patches/chromium/worker_context_will_destroy.patch +++ b/patches/chromium/worker_context_will_destroy.patch @@ -10,10 +10,10 @@ An attempt to upstream this was made, but rejected: https://chromium-review.googlesource.com/c/chromium/src/+/1954347 diff --git a/content/public/renderer/content_renderer_client.h b/content/public/renderer/content_renderer_client.h -index eb8968c2a86102d0d3a21f07c394f1c360083c6c..025ef3f70a5ae34faf8c6013fbfba171c7f501ac 100644 +index 1dfe162dc69f404b49bae6197fa7b713600eb9bd..dedfb41c933ad7930cbab5aae502e1df28cf05e4 100644 --- a/content/public/renderer/content_renderer_client.h +++ b/content/public/renderer/content_renderer_client.h -@@ -356,6 +356,11 @@ class CONTENT_EXPORT ContentRendererClient { +@@ -360,6 +360,11 @@ class CONTENT_EXPORT ContentRendererClient { virtual void DidInitializeWorkerContextOnWorkerThread( v8::Local context) {} @@ -26,10 +26,10 @@ index eb8968c2a86102d0d3a21f07c394f1c360083c6c..025ef3f70a5ae34faf8c6013fbfba171 // An empty URL is returned if the URL is not overriden. virtual GURL OverrideFlashEmbedWithHTML(const GURL& url); diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer/renderer_blink_platform_impl.cc -index 16322f245b51465d77b08c0c5d4da0b79ba8ae03..bd63f484db056d099bada03a0d3aab7742016110 100644 +index 51ab89673260423a6f2fdab13b42609d01e1d01e..e453f8301ddc537559ffe30252ee5293daad1009 100644 --- a/content/renderer/renderer_blink_platform_impl.cc +++ b/content/renderer/renderer_blink_platform_impl.cc -@@ -966,6 +966,12 @@ void RendererBlinkPlatformImpl::WillStopWorkerThread() { +@@ -909,6 +909,12 @@ void RendererBlinkPlatformImpl::WillStopWorkerThread() { WorkerThreadRegistry::Instance()->WillStopCurrentWorkerThread(); } @@ -43,10 +43,10 @@ index 16322f245b51465d77b08c0c5d4da0b79ba8ae03..bd63f484db056d099bada03a0d3aab77 const v8::Local& worker) { GetContentClient()->renderer()->DidInitializeWorkerContextOnWorkerThread( diff --git a/content/renderer/renderer_blink_platform_impl.h b/content/renderer/renderer_blink_platform_impl.h -index 213b0b9c28974aecbdd2dd1297dfa21cd716a337..f77763977aee112b854ade93b59172247599a16b 100644 +index 156fb6cda9c41861bf3a44f7f4c40216b3c5fbaf..dca2adb4b773a3b5861586938ac788d1de2130cd 100644 --- a/content/renderer/renderer_blink_platform_impl.h +++ b/content/renderer/renderer_blink_platform_impl.h -@@ -209,6 +209,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { +@@ -191,6 +191,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { void DidStartWorkerThread() override; void WillStopWorkerThread() override; void WorkerContextCreated(const v8::Local& worker) override; @@ -55,10 +55,10 @@ index 213b0b9c28974aecbdd2dd1297dfa21cd716a337..f77763977aee112b854ade93b5917224 const blink::WebSecurityOrigin& script_origin) override; blink::ProtocolHandlerSecurityLevel GetProtocolHandlerSecurityLevel() diff --git a/third_party/blink/public/platform/platform.h b/third_party/blink/public/platform/platform.h -index 3f8fbe6330051d96715706801efdefcb2ee3b971..be0eb834ba868bb7f6f40e08277f4475a6a92f7d 100644 +index e56d75ffd68c41d7dd9441233c72d817788e87a2..62b4468790382639990d2d6d2e57adc01e7523f2 100644 --- a/third_party/blink/public/platform/platform.h +++ b/third_party/blink/public/platform/platform.h -@@ -722,6 +722,7 @@ class BLINK_PLATFORM_EXPORT Platform { +@@ -685,6 +685,7 @@ class BLINK_PLATFORM_EXPORT Platform { virtual void DidStartWorkerThread() {} virtual void WillStopWorkerThread() {} virtual void WorkerContextCreated(const v8::Local& worker) {} diff --git a/patches/chromium/worker_feat_add_hook_to_notify_script_ready.patch b/patches/chromium/worker_feat_add_hook_to_notify_script_ready.patch index 4d3c34796e359..0c1437332ded5 100644 --- a/patches/chromium/worker_feat_add_hook_to_notify_script_ready.patch +++ b/patches/chromium/worker_feat_add_hook_to_notify_script_ready.patch @@ -19,10 +19,10 @@ that clearly establishes the worker script is ready for evaluation with the scop initialized. diff --git a/content/public/renderer/content_renderer_client.h b/content/public/renderer/content_renderer_client.h -index 025ef3f70a5ae34faf8c6013fbfba171c7f501ac..cea3f3dc05f91927f4ee8be5eec85ec26c8e1e07 100644 +index dedfb41c933ad7930cbab5aae502e1df28cf05e4..8ad7306886109e827a8a692fee39f7c7b491b9ba 100644 --- a/content/public/renderer/content_renderer_client.h +++ b/content/public/renderer/content_renderer_client.h -@@ -356,6 +356,11 @@ class CONTENT_EXPORT ContentRendererClient { +@@ -360,6 +360,11 @@ class CONTENT_EXPORT ContentRendererClient { virtual void DidInitializeWorkerContextOnWorkerThread( v8::Local context) {} @@ -35,10 +35,10 @@ index 025ef3f70a5ae34faf8c6013fbfba171c7f501ac..cea3f3dc05f91927f4ee8be5eec85ec2 // from the worker thread. virtual void WillDestroyWorkerContextOnWorkerThread( diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer/renderer_blink_platform_impl.cc -index bd63f484db056d099bada03a0d3aab7742016110..7aea168344138d6210216997047bdcd8edfab6cc 100644 +index e453f8301ddc537559ffe30252ee5293daad1009..e3f1b23e91f6c02ee1ee8c3f9aa41bd60db77637 100644 --- a/content/renderer/renderer_blink_platform_impl.cc +++ b/content/renderer/renderer_blink_platform_impl.cc -@@ -978,6 +978,12 @@ void RendererBlinkPlatformImpl::WorkerContextCreated( +@@ -921,6 +921,12 @@ void RendererBlinkPlatformImpl::WorkerContextCreated( worker); } @@ -52,10 +52,10 @@ index bd63f484db056d099bada03a0d3aab7742016110..7aea168344138d6210216997047bdcd8 const blink::WebSecurityOrigin& script_origin) { return GetContentClient()->renderer()->AllowScriptExtensionForServiceWorker( diff --git a/content/renderer/renderer_blink_platform_impl.h b/content/renderer/renderer_blink_platform_impl.h -index f77763977aee112b854ade93b59172247599a16b..f3518973a5e071bf428d928f20255c208cf4d0b9 100644 +index dca2adb4b773a3b5861586938ac788d1de2130cd..06bdb6cfb00c203c97e293f5dcf3734e9e52521e 100644 --- a/content/renderer/renderer_blink_platform_impl.h +++ b/content/renderer/renderer_blink_platform_impl.h -@@ -209,6 +209,8 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { +@@ -191,6 +191,8 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { void DidStartWorkerThread() override; void WillStopWorkerThread() override; void WorkerContextCreated(const v8::Local& worker) override; @@ -65,10 +65,10 @@ index f77763977aee112b854ade93b59172247599a16b..f3518973a5e071bf428d928f20255c20 bool AllowScriptExtensionForServiceWorker( const blink::WebSecurityOrigin& script_origin) override; diff --git a/third_party/blink/public/platform/platform.h b/third_party/blink/public/platform/platform.h -index be0eb834ba868bb7f6f40e08277f4475a6a92f7d..00db8b6bdbf005a9aac20ede6ce810aefac4d03e 100644 +index 62b4468790382639990d2d6d2e57adc01e7523f2..0fb9f3dfefe6e26a07714cd8bbaceee269bcabe4 100644 --- a/third_party/blink/public/platform/platform.h +++ b/third_party/blink/public/platform/platform.h -@@ -722,6 +722,8 @@ class BLINK_PLATFORM_EXPORT Platform { +@@ -685,6 +685,8 @@ class BLINK_PLATFORM_EXPORT Platform { virtual void DidStartWorkerThread() {} virtual void WillStopWorkerThread() {} virtual void WorkerContextCreated(const v8::Local& worker) {} diff --git a/patches/nan/.patches b/patches/nan/.patches index 3b26a944836c5..55f1dd90c6bb6 100644 --- a/patches/nan/.patches +++ b/patches/nan/.patches @@ -1 +1,2 @@ use_new_constructor_for_scriptorigin_when_17_x.patch +chore_remove_deprecated_accessorsignatures.patch diff --git a/patches/nan/chore_remove_deprecated_accessorsignatures.patch b/patches/nan/chore_remove_deprecated_accessorsignatures.patch new file mode 100644 index 0000000000000..c2c394ec440f6 --- /dev/null +++ b/patches/nan/chore_remove_deprecated_accessorsignatures.patch @@ -0,0 +1,45 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Shelley Vohr +Date: Thu, 2 Jun 2022 15:45:21 +0200 +Subject: chore: remove deprecated AccessorSignatures + +Removed in https://chromium-review.googlesource.com/c/v8/v8/+/3654096 +This should be upstreamed to nan. + +diff --git a/nan.h b/nan.h +index df5496c1a001120d10cd7c4b87d5e7bce8169f38..c29a99b79970421a15c5520a94ab65b1c3c473ff 100644 +--- a/nan.h ++++ b/nan.h +@@ -2516,8 +2516,7 @@ inline void SetAccessor( + , SetterCallback setter = 0 + , v8::Local data = v8::Local() + , v8::AccessControl settings = v8::DEFAULT +- , v8::PropertyAttribute attribute = v8::None +- , imp::Sig signature = imp::Sig()) { ++ , v8::PropertyAttribute attribute = v8::None) { + HandleScope scope; + + imp::NativeGetter getter_ = +@@ -2550,9 +2549,6 @@ inline void SetAccessor( + , obj + , settings + , attribute +-#if (NODE_MODULE_VERSION < NODE_18_0_MODULE_VERSION) +- , signature +-#endif + ); + } + +diff --git a/nan_callbacks.h b/nan_callbacks.h +index 53ede846ac9a865a737218dabbbd48305d3d6b63..ea81e452d364e3d3c15a121dc69ae21134bfb586 100644 +--- a/nan_callbacks.h ++++ b/nan_callbacks.h +@@ -52,8 +52,6 @@ typedef void(*IndexQueryCallback)( + const PropertyCallbackInfo&); + + namespace imp { +-typedef v8::Local Sig; +- + static const int kDataIndex = 0; + + static const int kFunctionIndex = 1; diff --git a/patches/node/.patches b/patches/node/.patches index 16fac1923caf4..af17227eaf3b9 100644 --- a/patches/node/.patches +++ b/patches/node/.patches @@ -44,3 +44,4 @@ src_update_importmoduledynamically.patch fix_add_v8_enable_reverse_jsargs_defines_in_common_gypi.patch json_parse_errors_made_user-friendly.patch build_ensure_v8_pointer_compression_sandbox_is_enabled_on_64bit.patch +build_define_libcpp_abi_namespace_as_cr_to_align_with_chromium.patch diff --git a/patches/node/build_define_libcpp_abi_namespace_as_cr_to_align_with_chromium.patch b/patches/node/build_define_libcpp_abi_namespace_as_cr_to_align_with_chromium.patch new file mode 100644 index 0000000000000..4935c302868f4 --- /dev/null +++ b/patches/node/build_define_libcpp_abi_namespace_as_cr_to_align_with_chromium.patch @@ -0,0 +1,21 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Samuel Attard +Date: Mon, 6 Jun 2022 14:46:40 -0700 +Subject: build: define _LIBCPP_ABI_NAMESPACE as Cr to align with chromium + +Without this define native modules will be built trying to link to _LIBCPP_ABI_NAMESPACE which is the default name, chromium overrides this to Cr for PDB size reasons but they override it on all platforms. Setting this define allows native modules to actually work. This should not be upstreamed as it is Electron specific. + +Refs: https://chromium-review.googlesource.com/c/chromium/src/+/3655638 + +diff --git a/common.gypi b/common.gypi +index e20092d15d5f71f3e90a2ce655d660a8fa1e1385..242ff08b581c143018046618e539bec12ac566f1 100644 +--- a/common.gypi ++++ b/common.gypi +@@ -293,6 +293,7 @@ + 'V8_DEPRECATION_WARNINGS', + 'V8_IMMINENT_DEPRECATION_WARNINGS', + '_GLIBCXX_USE_CXX11_ABI=1', ++ '_LIBCPP_ABI_NAMESPACE=Cr', + ], + + # Forcibly disable -Werror. We support a wide range of compilers, it's diff --git a/patches/node/fix_crypto_tests_to_run_with_bssl.patch b/patches/node/fix_crypto_tests_to_run_with_bssl.patch index 44a303b93a03b..bcfd21a6fad4c 100644 --- a/patches/node/fix_crypto_tests_to_run_with_bssl.patch +++ b/patches/node/fix_crypto_tests_to_run_with_bssl.patch @@ -251,6 +251,34 @@ index 3bbca5b0da395b94c04da7bb7c55b107e41367d8..af62558c4f23aa82804e0077da7b7f3a // +diff --git a/test/parallel/test-crypto-certificate.js b/test/parallel/test-crypto-certificate.js +index 4a5f1f149fe6c739f7f1d2ee17df6e61a942d621..ffd10deddbffceba1f28a37f54608798e87d5a36 100644 +--- a/test/parallel/test-crypto-certificate.js ++++ b/test/parallel/test-crypto-certificate.js +@@ -41,7 +41,10 @@ function copyArrayBuffer(buf) { + + function checkMethods(certificate) { + ++ /* spkacValid has a md5 based signature which is not allowed in boringssl ++ https://boringssl.googlesource.com/boringssl/+/33d7e32ce40c04e8f1b99c05964956fda187819f + assert.strictEqual(certificate.verifySpkac(spkacValid), true); ++ */ + assert.strictEqual(certificate.verifySpkac(spkacFail), false); + + assert.strictEqual( +@@ -56,10 +59,12 @@ function checkMethods(certificate) { + ); + assert.strictEqual(certificate.exportChallenge(spkacFail), ''); + ++ /* spkacValid has a md5 based signature which is not allowed in boringssl + const ab = copyArrayBuffer(spkacValid); + assert.strictEqual(certificate.verifySpkac(ab), true); + assert.strictEqual(certificate.verifySpkac(new Uint8Array(ab)), true); + assert.strictEqual(certificate.verifySpkac(new DataView(ab)), true); ++ */ + } + + { diff --git a/test/parallel/test-crypto-cipher-decipher.js b/test/parallel/test-crypto-cipher-decipher.js index 35514afbea92562a81c163b1e4d918b4ab609f71..13098e1acf12c309f2ed6f6143a2c2eeb8a2763d 100644 --- a/test/parallel/test-crypto-cipher-decipher.js diff --git a/patches/v8/.patches b/patches/v8/.patches index aa4ed2c39d565..0a0969c9d1dba 100644 --- a/patches/v8/.patches +++ b/patches/v8/.patches @@ -10,3 +10,4 @@ revert_fix_cppgc_removed_deleted_cstors_in_cppheapcreateparams.patch revert_runtime_dhceck_terminating_exception_in_microtasks.patch allow_disabling_of_v8_sandboxed_pointers.patch chore_disable_is_execution_terminating_dcheck.patch +ext-code-space_fix_coderange_allocation_logic.patch diff --git a/patches/v8/allow_disabling_of_v8_sandboxed_pointers.patch b/patches/v8/allow_disabling_of_v8_sandboxed_pointers.patch index 2c98e2ad7c6d2..9914365ff5f70 100644 --- a/patches/v8/allow_disabling_of_v8_sandboxed_pointers.patch +++ b/patches/v8/allow_disabling_of_v8_sandboxed_pointers.patch @@ -8,25 +8,18 @@ https://chromium-review.googlesource.com/c/v8/v8/+/3114136, so for now we need a way to disable v8 sandboxed pointers. diff --git a/BUILD.gn b/BUILD.gn -index 114cfd757b60c14cfb7a6bc9f9f69765363c9c6c..5e8a6bb2c26c3e5701e628cbf4bfcf9b2eb6b82f 100644 +index c7b3a664f8d05e2ca2a548f8254b6c1349106a3d..e98ba25f30853bc511b000521f3cb5bdfd89a01c 100644 --- a/BUILD.gn +++ b/BUILD.gn -@@ -501,18 +501,6 @@ if (v8_enable_sandbox == "") { - v8_enable_external_code_space +@@ -508,9 +508,9 @@ if (v8_enable_sandbox == "") { + v8_enable_external_code_space && target_os != "fuchsia" } -# Enable sandboxed pointers on desktop when the sandbox is enabled. --if (v8_enable_sandbox) { -- # When sanitizers are enabled, PartitionAlloc forwards allocations to malloc -- # instead of allocating from its Pools and so isn't compatible with the -- # sandbox. As such, disable the sandbox there. See https://crbug.com/1323174 -- if (!is_asan && !is_hwasan && !is_lsan && !is_tsan && !is_msan) { -- v8_enable_sandboxed_pointers = -- target_os != "fuchsia" && target_os != "android" && -- target_os != "chromeos" -- } --} -- ++# Disable sandboxed pointers. + if (v8_enable_sandbox) { +- v8_enable_sandboxed_pointers = target_os != "android" ++ v8_enable_sandboxed_pointers = false + } + # Enable all available sandbox features if sandbox future is enabled. - if (v8_enable_sandbox_future) { - v8_enable_sandboxed_pointers = true diff --git a/patches/v8/build_gn.patch b/patches/v8/build_gn.patch index aec7148bcd45c..5a898a6126cc7 100644 --- a/patches/v8/build_gn.patch +++ b/patches/v8/build_gn.patch @@ -9,10 +9,10 @@ necessary for native modules to load. Also, some fixes relating to mksnapshot on ARM. diff --git a/BUILD.gn b/BUILD.gn -index 744ae6a11ffff47872da4141b3f0e4af5130fff9..31dfdf8a3facd470c3f92c58a5a12566af96521a 100644 +index 00770169bf5aa2e6d4eb55ec379a1d939934185f..603cf9f8eacff45be52d4c4331b697904d407ddf 100644 --- a/BUILD.gn +++ b/BUILD.gn -@@ -620,7 +620,7 @@ config("internal_config") { +@@ -623,7 +623,7 @@ config("internal_config") { ":cppgc_header_features", ] @@ -21,7 +21,7 @@ index 744ae6a11ffff47872da4141b3f0e4af5130fff9..31dfdf8a3facd470c3f92c58a5a12566 defines += [ "BUILDING_V8_SHARED" ] } -@@ -5905,7 +5905,7 @@ if (current_toolchain == v8_generator_toolchain) { +@@ -5939,7 +5939,7 @@ if (current_toolchain == v8_generator_toolchain) { "src/interpreter/bytecodes.h", ] @@ -30,7 +30,7 @@ index 744ae6a11ffff47872da4141b3f0e4af5130fff9..31dfdf8a3facd470c3f92c58a5a12566 deps = [ ":v8_libbase", -@@ -5943,6 +5943,8 @@ if (current_toolchain == v8_snapshot_toolchain) { +@@ -5977,6 +5977,8 @@ if (current_toolchain == v8_snapshot_toolchain) { configs = [ ":internal_config" ] diff --git a/patches/v8/dcheck.patch b/patches/v8/dcheck.patch index 156ab2298be93..4920accd33c5b 100644 --- a/patches/v8/dcheck.patch +++ b/patches/v8/dcheck.patch @@ -6,10 +6,10 @@ Subject: dcheck.patch https://github.com/auchenberg/volkswagen diff --git a/src/api/api.cc b/src/api/api.cc -index 03bb3f062c5510292c2c983508d284f8cfde5b41..6d0622863ae436dfae6413126884e0f941a3f0b6 100644 +index f5eac55602eb03e5f15f2dcba2010d5530cf6087..cb801a3654c35664c6e9d34060471309c842345a 100644 --- a/src/api/api.cc +++ b/src/api/api.cc -@@ -9168,7 +9168,7 @@ void Isolate::SetPromiseRejectCallback(PromiseRejectCallback callback) { +@@ -9115,7 +9115,7 @@ void Isolate::SetPromiseRejectCallback(PromiseRejectCallback callback) { } void Isolate::PerformMicrotaskCheckpoint() { @@ -19,10 +19,10 @@ index 03bb3f062c5510292c2c983508d284f8cfde5b41..6d0622863ae436dfae6413126884e0f9 i_isolate->default_microtask_queue()->PerformCheckpoint(this); } diff --git a/src/heap/heap.cc b/src/heap/heap.cc -index a2a22674d1d50926fefac037f837d0e33d9b5220..214c0ac8d83fc74d40eb00d4d2641f329500e33c 100644 +index f295e7f48d0cca2fc1f5cee443bedc86b57da6cd..62f5abd7c205d6252188f0071f0a2c7a6ce5553e 100644 --- a/src/heap/heap.cc +++ b/src/heap/heap.cc -@@ -6208,9 +6208,9 @@ void Heap::TearDown() { +@@ -6220,9 +6220,9 @@ void Heap::TearDown() { void Heap::AddGCPrologueCallback(v8::Isolate::GCCallbackWithData callback, GCType gc_type, void* data) { DCHECK_NOT_NULL(callback); diff --git a/patches/v8/do_not_export_private_v8_symbols_on_windows.patch b/patches/v8/do_not_export_private_v8_symbols_on_windows.patch index 70f4cab7eb7fe..e2d70c0d6cadb 100644 --- a/patches/v8/do_not_export_private_v8_symbols_on_windows.patch +++ b/patches/v8/do_not_export_private_v8_symbols_on_windows.patch @@ -12,10 +12,10 @@ This patch can be safely removed if, when it is removed, `node.lib` does not contain any standard C++ library exports (e.g. `std::ostringstream`). diff --git a/BUILD.gn b/BUILD.gn -index 29ce9b289eb33526abd6a430428b82e9dc8c7027..114cfd757b60c14cfb7a6bc9f9f69765363c9c6c 100644 +index e8b9c11d50b3e72f6579b9665a5345af2a270dd5..c7b3a664f8d05e2ca2a548f8254b6c1349106a3d 100644 --- a/BUILD.gn +++ b/BUILD.gn -@@ -620,6 +620,10 @@ config("internal_config") { +@@ -623,6 +623,10 @@ config("internal_config") { ":cppgc_header_features", ] diff --git a/patches/v8/export_symbols_needed_for_windows_build.patch b/patches/v8/export_symbols_needed_for_windows_build.patch index c9836854ec41a..2670c627e90ce 100644 --- a/patches/v8/export_symbols_needed_for_windows_build.patch +++ b/patches/v8/export_symbols_needed_for_windows_build.patch @@ -6,10 +6,10 @@ Subject: Export symbols needed for Windows build These symbols are required to build v8 with BUILD_V8_SHARED on Windows. diff --git a/src/objects/objects.h b/src/objects/objects.h -index 316f870e31f33c990793fdfe7ecb69bb120bb024..5db324b2bf0169657fc6e9dc3b15fa3ccaeac9c4 100644 +index 1e4353f2a8f6867a19f1e14943932321c5b23145..4f10b7c2aa589798f510b3dbfac2dbab35cbb720 100644 --- a/src/objects/objects.h +++ b/src/objects/objects.h -@@ -927,7 +927,7 @@ enum AccessorComponent { ACCESSOR_GETTER, ACCESSOR_SETTER }; +@@ -924,7 +924,7 @@ enum AccessorComponent { ACCESSOR_GETTER, ACCESSOR_SETTER }; // Utility superclass for stack-allocated objects that must be updated // on gc. It provides two ways for the gc to update instances, either // iterating or updating after gc. diff --git a/patches/v8/expose_mksnapshot.patch b/patches/v8/expose_mksnapshot.patch index f69f6226168e5..226ee645c5844 100644 --- a/patches/v8/expose_mksnapshot.patch +++ b/patches/v8/expose_mksnapshot.patch @@ -6,10 +6,10 @@ Subject: expose_mksnapshot.patch Needed in order to target mksnapshot for mksnapshot zip. diff --git a/BUILD.gn b/BUILD.gn -index 31dfdf8a3facd470c3f92c58a5a12566af96521a..29ce9b289eb33526abd6a430428b82e9dc8c7027 100644 +index 603cf9f8eacff45be52d4c4331b697904d407ddf..e8b9c11d50b3e72f6579b9665a5345af2a270dd5 100644 --- a/BUILD.gn +++ b/BUILD.gn -@@ -5917,7 +5917,6 @@ if (current_toolchain == v8_generator_toolchain) { +@@ -5951,7 +5951,6 @@ if (current_toolchain == v8_generator_toolchain) { if (current_toolchain == v8_snapshot_toolchain) { v8_executable("mksnapshot") { diff --git a/patches/v8/ext-code-space_fix_coderange_allocation_logic.patch b/patches/v8/ext-code-space_fix_coderange_allocation_logic.patch new file mode 100644 index 0000000000000..f354c4f912fd5 --- /dev/null +++ b/patches/v8/ext-code-space_fix_coderange_allocation_logic.patch @@ -0,0 +1,105 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Igor Sheludko +Date: Thu, 9 Jun 2022 11:07:32 +0200 +Subject: Fix CodeRange allocation logic +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +... which required unnecessarily big alignment for the base on Windows. + +Drive-by: adapt hint usage in VirtualMemoryCage::InitReservation() for +non-zero kReservedCodeRangePages and hint values provided by +CodeRangeAddressHint::GetAddressHint() which might be the start address +of the previously reserved region which in turn already includes the +kReservedCodeRangePages pages. + +Bug: v8:11880, v8:12942 +Change-Id: Ieee44ed2bdfc77aa8efaef449221caaae1f0f08f +Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3695382 +Reviewed-by: Dominik Inführ +Commit-Queue: Igor Sheludko +Cr-Commit-Position: refs/heads/main@{#81026} +(cherry picked from commit 36e47253a47d1cac3ce15008c08ddd1fc8617d53) + +diff --git a/src/heap/code-range.cc b/src/heap/code-range.cc +index badef8e17f5a9395217085ee7d983d2ff935e2ea..02d5553c5d6b838e794cc250e78aa8429e181ac6 100644 +--- a/src/heap/code-range.cc ++++ b/src/heap/code-range.cc +@@ -107,6 +107,22 @@ bool CodeRange::InitReservation(v8::PageAllocator* page_allocator, + if (requested <= kMinimumCodeRangeSize) { + requested = kMinimumCodeRangeSize; + } ++ ++ // When V8_EXTERNAL_CODE_SPACE_BOOL is enabled the allocatable region must ++ // not cross the 4Gb boundary and thus the default compression scheme of ++ // truncating the Code pointers to 32-bits still works. It's achieved by ++ // specifying base_alignment parameter. ++ // Note that the alignment is calculated before adjusting the requested size ++ // for GetWritableReservedAreaSize(). The reasons are: ++ // - this extra page is used by breakpad on Windows and it's allowed to cross ++ // the 4Gb boundary, ++ // - rounding up the adjusted size would result in requresting unnecessarily ++ // big aligment. ++ const size_t base_alignment = ++ V8_EXTERNAL_CODE_SPACE_BOOL ++ ? base::bits::RoundUpToPowerOfTwo(requested) ++ : VirtualMemoryCage::ReservationParams::kAnyBaseAlignment; ++ + const size_t reserved_area = GetWritableReservedAreaSize(); + if (requested < (kMaximalCodeRangeSize - reserved_area)) { + requested += RoundUp(reserved_area, MemoryChunk::kPageSize); +@@ -120,14 +136,8 @@ bool CodeRange::InitReservation(v8::PageAllocator* page_allocator, + VirtualMemoryCage::ReservationParams params; + params.page_allocator = page_allocator; + params.reservation_size = requested; +- // base_alignment should be kAnyBaseAlignment when V8_ENABLE_NEAR_CODE_RANGE +- // is enabled so that InitReservation would not break the alignment in +- // GetAddressHint(). + const size_t allocate_page_size = page_allocator->AllocatePageSize(); +- params.base_alignment = +- V8_EXTERNAL_CODE_SPACE_BOOL +- ? base::bits::RoundUpToPowerOfTwo(requested) +- : VirtualMemoryCage::ReservationParams::kAnyBaseAlignment; ++ params.base_alignment = base_alignment; + params.base_bias_size = RoundUp(reserved_area, allocate_page_size); + params.page_size = MemoryChunk::kPageSize; + params.requested_start_hint = +@@ -139,8 +149,8 @@ bool CodeRange::InitReservation(v8::PageAllocator* page_allocator, + + if (V8_EXTERNAL_CODE_SPACE_BOOL) { + // Ensure that the code range does not cross the 4Gb boundary and thus +- // default compression scheme of truncating the Code pointers to 32-bit +- // still work. ++ // default compression scheme of truncating the Code pointers to 32-bits ++ // still works. + Address base = page_allocator_->begin(); + Address last = base + page_allocator_->size() - 1; + CHECK_EQ(GetPtrComprCageBaseAddress(base), +diff --git a/src/utils/allocation.cc b/src/utils/allocation.cc +index ac187407ce790f098495909bd06028aba64ce89c..50255fcc641475bde52fbd17e17f1da755349cd2 100644 +--- a/src/utils/allocation.cc ++++ b/src/utils/allocation.cc +@@ -403,13 +403,17 @@ bool VirtualMemoryCage::InitReservation( + base_ = reservation_.address() + params.base_bias_size; + CHECK_EQ(reservation_.size(), params.reservation_size); + } else { +- // Otherwise, we need to try harder by first overreserving +- // in hopes of finding a correctly aligned address within the larger +- // reservation. ++ // Otherwise, we need to try harder by first overreserving in hopes of ++ // finding a correctly aligned address within the larger reservation. ++ size_t bias_size = RoundUp(params.base_bias_size, allocate_page_size); + Address hint = +- RoundDown(params.requested_start_hint, ++ RoundDown(params.requested_start_hint + bias_size, + RoundUp(params.base_alignment, allocate_page_size)) - +- RoundUp(params.base_bias_size, allocate_page_size); ++ bias_size; ++ // Alignments requring overreserving more than twice the requested size ++ // are not supported (they are too expensive and shouldn't be necessary ++ // in the first place). ++ DCHECK_LE(params.base_alignment, params.reservation_size); + const int kMaxAttempts = 4; + for (int attempt = 0; attempt < kMaxAttempts; ++attempt) { + // Reserve a region of twice the size so that there is an aligned address diff --git a/patches/v8/revert_runtime_dhceck_terminating_exception_in_microtasks.patch b/patches/v8/revert_runtime_dhceck_terminating_exception_in_microtasks.patch index 04f2010a887b9..dffa18f816867 100644 --- a/patches/v8/revert_runtime_dhceck_terminating_exception_in_microtasks.patch +++ b/patches/v8/revert_runtime_dhceck_terminating_exception_in_microtasks.patch @@ -18,10 +18,10 @@ index ca4b1dc557f573bfcde200201cbd2f05e3c6b530..9edc8ce00c524a63cb23911a474f1904 StoreRoot(RootIndex::kCurrentMicrotask, microtask); TNode saved_entered_context_count = GetEnteredContextCount(); diff --git a/src/codegen/code-stub-assembler.cc b/src/codegen/code-stub-assembler.cc -index 400d8cb85ea3b45448e79903b05936998b1941b3..2405b99a5badd2ee266459d17d2ec352b4ef71c5 100644 +index d35929d7f2155af23320aa70fe5cdff178fe6fc7..007284be5a29ae6e30c9c13b1ed0e41ce8e7a4c4 100644 --- a/src/codegen/code-stub-assembler.cc +++ b/src/codegen/code-stub-assembler.cc -@@ -6170,12 +6170,6 @@ void CodeStubAssembler::SetPendingMessage(TNode message) { +@@ -6142,12 +6142,6 @@ void CodeStubAssembler::SetPendingMessage(TNode message) { StoreFullTaggedNoWriteBarrier(pending_message, message); } @@ -35,10 +35,10 @@ index 400d8cb85ea3b45448e79903b05936998b1941b3..2405b99a5badd2ee266459d17d2ec352 int type) { return Word32Equal(instance_type, Int32Constant(type)); diff --git a/src/codegen/code-stub-assembler.h b/src/codegen/code-stub-assembler.h -index d49403e9326b85ae4e52e7bc3e232834038fbe09..64f554332b1241aa22f1e292ebf9d0bc667a647a 100644 +index 2b469c5e351debf1b684c003f0c256497709ccf6..c5bbe11ae949a076d9b51efbd8a845c8a05c7653 100644 --- a/src/codegen/code-stub-assembler.h +++ b/src/codegen/code-stub-assembler.h -@@ -2522,7 +2522,6 @@ class V8_EXPORT_PRIVATE CodeStubAssembler +@@ -2513,7 +2513,6 @@ class V8_EXPORT_PRIVATE CodeStubAssembler TNode GetPendingMessage(); void SetPendingMessage(TNode message); diff --git a/patches/v8/workaround_an_undefined_symbol_error.patch b/patches/v8/workaround_an_undefined_symbol_error.patch index ee905e4f0f881..164c824a19d6c 100644 --- a/patches/v8/workaround_an_undefined_symbol_error.patch +++ b/patches/v8/workaround_an_undefined_symbol_error.patch @@ -12,7 +12,7 @@ By moving some functions out of the the arm64-assembler header file, this error no longer seems to happen. diff --git a/src/codegen/arm64/assembler-arm64.cc b/src/codegen/arm64/assembler-arm64.cc -index 2511a0752037939562e861a8f492f6c9496453c6..8762c4dfa25dd17d7f36962410aeb9846593073e 100644 +index 52c5d32227029a24d9576967f27e7a8554edd66b..35c5cbe4ce68539ed29e6b365651e6b2c678d457 100644 --- a/src/codegen/arm64/assembler-arm64.cc +++ b/src/codegen/arm64/assembler-arm64.cc @@ -3629,6 +3629,22 @@ void Assembler::MoveWide(const Register& rd, uint64_t imm, int shift, diff --git a/script/nan-spec-runner.js b/script/nan-spec-runner.js index f022f3da25fa7..5672af3322fa0 100644 --- a/script/nan-spec-runner.js +++ b/script/nan-spec-runner.js @@ -58,7 +58,7 @@ async function main () { const cxxflags = [ '-std=c++17', '-nostdinc++', - `-isystem"${path.resolve(BASE, 'buildtools', 'third_party', 'libc++')}"`, + `-I"${path.resolve(BASE, 'buildtools', 'third_party', 'libc++')}"`, `-isystem"${path.resolve(BASE, 'buildtools', 'third_party', 'libc++', 'trunk', 'include')}"`, `-isystem"${path.resolve(BASE, 'buildtools', 'third_party', 'libc++abi', 'trunk', 'include')}"`, '-fPIC', diff --git a/script/node-disabled-tests.json b/script/node-disabled-tests.json index ba2bc83e85ac3..fe69ab29c7e22 100644 --- a/script/node-disabled-tests.json +++ b/script/node-disabled-tests.json @@ -127,6 +127,7 @@ "report/test-report-writereport", "sequential/test-cpu-prof-kill", "sequential/test-diagnostic-dir-cpu-prof", + "sequential/test-cpu-prof-drained.js", "sequential/test-tls-connect", "wpt/test-webcrypto" ] diff --git a/shell/app/electron_main_delegate.cc b/shell/app/electron_main_delegate.cc index b757c598891bc..8179c7b6234a1 100644 --- a/shell/app/electron_main_delegate.cc +++ b/shell/app/electron_main_delegate.cc @@ -460,8 +460,8 @@ ElectronMainDelegate::RunProcess( return std::move(main_function_params); } -bool ElectronMainDelegate::ShouldCreateFeatureList() { - return false; +bool ElectronMainDelegate::ShouldCreateFeatureList(InvokedIn invoked_in) { + return invoked_in == InvokedIn::kChildProcess; } bool ElectronMainDelegate::ShouldLockSchemeRegistry() { diff --git a/shell/app/electron_main_delegate.h b/shell/app/electron_main_delegate.h index 255df5c235d8f..dd43875cc5d17 100644 --- a/shell/app/electron_main_delegate.h +++ b/shell/app/electron_main_delegate.h @@ -43,7 +43,7 @@ class ElectronMainDelegate : public content::ContentMainDelegate { absl::variant RunProcess( const std::string& process_type, content::MainFunctionParams main_function_params) override; - bool ShouldCreateFeatureList() override; + bool ShouldCreateFeatureList(InvokedIn invoked_in) override; bool ShouldLockSchemeRegistry() override; #if BUILDFLAG(IS_LINUX) void ZygoteForked() override; diff --git a/shell/browser/api/electron_api_net_log.cc b/shell/browser/api/electron_api_net_log.cc index f30aa2aebf8fe..8cf645acbdc31 100644 --- a/shell/browser/api/electron_api_net_log.cc +++ b/shell/browser/api/electron_api_net_log.cc @@ -132,9 +132,8 @@ v8::Local NetLog::StartLogging(base::FilePath log_path, auto command_line_string = base::CommandLine::ForCurrentProcess()->GetCommandLineString(); auto channel_string = std::string("Electron " ELECTRON_VERSION); - base::Value custom_constants = - base::Value::FromUniquePtrValue(net_log::GetPlatformConstantsForNetLog( - command_line_string, channel_string)); + base::Value::Dict custom_constants = net_log::GetPlatformConstantsForNetLog( + command_line_string, channel_string); auto* network_context = browser_context_->GetDefaultStoragePartition()->GetNetworkContext(); @@ -156,7 +155,7 @@ v8::Local NetLog::StartLogging(base::FilePath log_path, void NetLog::StartNetLogAfterCreateFile(net::NetLogCaptureMode capture_mode, uint64_t max_file_size, - base::Value custom_constants, + base::Value::Dict custom_constants, base::File output_file) { if (!net_log_exporter_) { // Theoretically the mojo pipe could have been closed by the time we get @@ -204,7 +203,7 @@ v8::Local NetLog::StopLogging(gin::Arguments* args) { // pointer lives long enough to resolve the promise. Moving it into the // callback will cause the instance variable to become empty. net_log_exporter_->Stop( - base::Value(base::Value::Type::DICTIONARY), + base::Value::Dict(), base::BindOnce( [](mojo::Remote, gin_helper::Promise promise, int32_t error) { diff --git a/shell/browser/api/electron_api_net_log.h b/shell/browser/api/electron_api_net_log.h index 30a6ad6981a1d..26450517c687e 100644 --- a/shell/browser/api/electron_api_net_log.h +++ b/shell/browser/api/electron_api_net_log.h @@ -57,7 +57,7 @@ class NetLog : public gin::Wrappable { void StartNetLogAfterCreateFile(net::NetLogCaptureMode capture_mode, uint64_t max_file_size, - base::Value custom_constants, + base::Value::Dict custom_constants, base::File output_file); void NetLogStarted(int32_t error); diff --git a/shell/browser/api/electron_api_web_contents.cc b/shell/browser/api/electron_api_web_contents.cc index 25539f8a4e371..6a9fee0cef1ee 100644 --- a/shell/browser/api/electron_api_web_contents.cc +++ b/shell/browser/api/electron_api_web_contents.cc @@ -945,12 +945,6 @@ void WebContents::InitWithWebContents( } WebContents::~WebContents() { - // clear out objects that have been granted permissions so that when - // WebContents::RenderFrameDeleted is called as a result of WebContents - // destruction it doesn't try to clear out a granted_devices_ - // on a destructed object. - granted_devices_.clear(); - if (!inspectable_web_contents_) { WebContentsDestroyed(); return; @@ -1558,11 +1552,6 @@ void WebContents::RenderFrameDeleted( // is swapped by content::RenderFrameHostManager. // - // clear out objects that have been granted permissions - if (!granted_devices_.empty()) { - granted_devices_.erase(render_frame_host->GetFrameTreeNodeId()); - } - // WebFrameMain::FromRenderFrameHost(rfh) will use the RFH's FrameTreeNode ID // to find an existing instance of WebFrameMain. During a cross-origin // navigation, the deleted RFH will be the old host which was swapped out. In @@ -3421,7 +3410,7 @@ v8::Local WebContents::TakeHeapSnapshot( return handle; } - if (!frame_host->IsRenderFrameCreated()) { + if (!frame_host->IsRenderFrameLive()) { promise.RejectWithErrorMessage("takeHeapSnapshot failed"); return handle; } @@ -3449,132 +3438,6 @@ v8::Local WebContents::TakeHeapSnapshot( return handle; } -void WebContents::GrantDevicePermission( - const url::Origin& origin, - const base::Value* device, - blink::PermissionType permission_type, - content::RenderFrameHost* render_frame_host) { - granted_devices_[render_frame_host->GetFrameTreeNodeId()][permission_type] - [origin] - .push_back( - std::make_unique(device->Clone())); -} - -void WebContents::RevokeDevicePermission( - const url::Origin& origin, - const base::Value* device, - blink::PermissionType permission_type, - content::RenderFrameHost* render_frame_host) { - const auto& devices_for_frame_host_it = - granted_devices_.find(render_frame_host->GetFrameTreeNodeId()); - if (devices_for_frame_host_it == granted_devices_.end()) - return; - - const auto& current_devices_it = - devices_for_frame_host_it->second.find(permission_type); - if (current_devices_it == devices_for_frame_host_it->second.end()) - return; - - const auto& origin_devices_it = current_devices_it->second.find(origin); - if (origin_devices_it == current_devices_it->second.end()) - return; - - for (auto it = origin_devices_it->second.begin(); - it != origin_devices_it->second.end();) { - if (DoesDeviceMatch(device, it->get(), permission_type)) { - it = origin_devices_it->second.erase(it); - } else { - ++it; - } - } -} - -bool WebContents::DoesDeviceMatch(const base::Value* device, - const base::Value* device_to_compare, - blink::PermissionType permission_type) { - if (permission_type == - static_cast( - WebContentsPermissionHelper::PermissionType::HID)) { - if (device->GetDict().FindInt(kHidVendorIdKey) != - device_to_compare->GetDict().FindInt(kHidVendorIdKey) || - device->GetDict().FindInt(kHidProductIdKey) != - device_to_compare->GetDict().FindInt(kHidProductIdKey)) { - return false; - } - - const auto* serial_number = - device_to_compare->GetDict().FindString(kHidSerialNumberKey); - const auto* device_serial_number = - device->GetDict().FindString(kHidSerialNumberKey); - - if (serial_number && device_serial_number && - *device_serial_number == *serial_number) - return true; - } else if (permission_type == - static_cast( - WebContentsPermissionHelper::PermissionType::SERIAL)) { -#if BUILDFLAG(IS_WIN) - const auto* instance_id = - device->GetDict().FindString(kDeviceInstanceIdKey); - const auto* port_instance_id = - device_to_compare->GetDict().FindString(kDeviceInstanceIdKey); - if (instance_id && port_instance_id && *instance_id == *port_instance_id) - return true; -#else - const auto* serial_number = device->GetDict().FindString(kSerialNumberKey); - const auto* port_serial_number = - device_to_compare->GetDict().FindString(kSerialNumberKey); - if (device->GetDict().FindInt(kVendorIdKey) != - device_to_compare->GetDict().FindInt(kVendorIdKey) || - device->GetDict().FindInt(kProductIdKey) != - device_to_compare->GetDict().FindInt(kProductIdKey) || - (serial_number && port_serial_number && - *port_serial_number != *serial_number)) { - return false; - } - -#if BUILDFLAG(IS_MAC) - const auto* usb_driver_key = device->GetDict().FindString(kUsbDriverKey); - const auto* port_usb_driver_key = - device_to_compare->GetDict().FindString(kUsbDriverKey); - if (usb_driver_key && port_usb_driver_key && - *usb_driver_key != *port_usb_driver_key) { - return false; - } -#endif // BUILDFLAG(IS_MAC) - return true; -#endif // BUILDFLAG(IS_WIN) - } - return false; -} - -bool WebContents::CheckDevicePermission( - const url::Origin& origin, - const base::Value* device, - blink::PermissionType permission_type, - content::RenderFrameHost* render_frame_host) { - const auto& devices_for_frame_host_it = - granted_devices_.find(render_frame_host->GetFrameTreeNodeId()); - if (devices_for_frame_host_it == granted_devices_.end()) - return false; - - const auto& current_devices_it = - devices_for_frame_host_it->second.find(permission_type); - if (current_devices_it == devices_for_frame_host_it->second.end()) - return false; - - const auto& origin_devices_it = current_devices_it->second.find(origin); - if (origin_devices_it == current_devices_it->second.end()) - return false; - - for (const auto& device_to_compare : origin_devices_it->second) { - if (DoesDeviceMatch(device, device_to_compare.get(), permission_type)) - return true; - } - - return false; -} - void WebContents::UpdatePreferredSize(content::WebContents* web_contents, const gfx::Size& pref_size) { Emit("preferred-size-changed", pref_size); @@ -3712,7 +3575,8 @@ void WebContents::DevToolsRequestFileSystems() { base::ListValue file_system_value; for (const auto& file_system : file_systems) - file_system_value.Append(CreateFileSystemValue(file_system)); + file_system_value.Append( + base::Value::FromUniquePtrValue(CreateFileSystemValue(file_system))); inspectable_web_contents_->CallClientFunction( "DevToolsAPI.fileSystemsLoaded", &file_system_value, nullptr, nullptr); } diff --git a/shell/browser/api/electron_api_web_contents.h b/shell/browser/api/electron_api_web_contents.h index 8925e14db4f5c..c03d86a9802db 100644 --- a/shell/browser/api/electron_api_web_contents.h +++ b/shell/browser/api/electron_api_web_contents.h @@ -42,7 +42,6 @@ #include "shell/common/gin_helper/constructible.h" #include "shell/common/gin_helper/error_thrower.h" #include "shell/common/gin_helper/pinnable.h" -#include "third_party/blink/public/common/permissions/permission_utils.h" #include "ui/base/models/image_model.h" #include "ui/gfx/image/image.h" @@ -96,11 +95,6 @@ class OffScreenWebContentsView; namespace api { -using DevicePermissionMap = std::map< - int, - std::map>>>>; - // Wrapper around the content::WebContents. class WebContents : public ExclusiveAccessContext, public gin::Wrappable, @@ -436,28 +430,6 @@ class WebContents : public ExclusiveAccessContext, void SetImageAnimationPolicy(const std::string& new_policy); - // Grants |origin| access to |device|. - // To be used in place of ObjectPermissionContextBase::GrantObjectPermission. - void GrantDevicePermission(const url::Origin& origin, - const base::Value* device, - blink::PermissionType permissionType, - content::RenderFrameHost* render_frame_host); - - // Revokes |origin| access to |device|. - // To be used in place of ObjectPermissionContextBase::RevokeObjectPermission. - void RevokeDevicePermission(const url::Origin& origin, - const base::Value* device, - blink::PermissionType permission_type, - content::RenderFrameHost* render_frame_host); - - // Returns the list of devices that |origin| has been granted permission to - // access. To be used in place of - // ObjectPermissionContextBase::GetGrantedObjects. - bool CheckDevicePermission(const url::Origin& origin, - const base::Value* device, - blink::PermissionType permissionType, - content::RenderFrameHost* render_frame_host); - // disable copy WebContents(const WebContents&) = delete; WebContents& operator=(const WebContents&) = delete; @@ -753,10 +725,6 @@ class WebContents : public ExclusiveAccessContext, // Update the html fullscreen flag in both browser and renderer. void UpdateHtmlApiFullscreen(bool fullscreen); - bool DoesDeviceMatch(const base::Value* device, - const base::Value* device_to_compare, - blink::PermissionType permission_type); - v8::Global session_; v8::Global devtools_web_contents_; v8::Global debugger_; @@ -841,9 +809,6 @@ class WebContents : public ExclusiveAccessContext, // Stores the frame thats currently in fullscreen, nullptr if there is none. content::RenderFrameHost* fullscreen_frame_ = nullptr; - // In-memory cache that holds objects that have been granted permissions. - DevicePermissionMap granted_devices_; - base::WeakPtrFactory weak_factory_{this}; }; diff --git a/shell/browser/api/electron_api_web_frame_main.cc b/shell/browser/api/electron_api_web_frame_main.cc index 5bea00749976d..42bae87cf1c58 100644 --- a/shell/browser/api/electron_api_web_frame_main.cc +++ b/shell/browser/api/electron_api_web_frame_main.cc @@ -206,7 +206,7 @@ void WebFrameMain::MaybeSetupMojoConnection() { // Wait for RenderFrame to be created in renderer before accessing remote. if (pending_receiver_ && render_frame_ && - render_frame_->IsRenderFrameCreated()) { + render_frame_->IsRenderFrameLive()) { render_frame_->GetRemoteInterfaces()->GetInterface( std::move(pending_receiver_)); } diff --git a/shell/browser/api/gpu_info_enumerator.cc b/shell/browser/api/gpu_info_enumerator.cc index 75b330a3264fc..23b2ccd345a4f 100644 --- a/shell/browser/api/gpu_info_enumerator.cc +++ b/shell/browser/api/gpu_info_enumerator.cc @@ -49,13 +49,13 @@ void GPUInfoEnumerator::EndGPUDevice() { auto& top_value = value_stack.top(); // GPUDevice can be more than one. So create a list of all. // The first one is the active GPU device. - if (top_value->HasKey(kGPUDeviceKey)) { + if (top_value->FindKey(kGPUDeviceKey)) { base::ListValue* list; top_value->GetList(kGPUDeviceKey, &list); - list->Append(std::move(current)); + list->Append(base::Value::FromUniquePtrValue(std::move(current))); } else { - auto gpus = std::make_unique(); - gpus->Append(std::move(current)); + std::unique_ptr gpus(new base::ListValue()); + gpus->Append(base::Value::FromUniquePtrValue(std::move(current))); top_value->SetList(kGPUDeviceKey, std::move(gpus)); } current = std::move(top_value); diff --git a/shell/browser/bluetooth/electron_bluetooth_delegate.cc b/shell/browser/bluetooth/electron_bluetooth_delegate.cc index fcc90988bffb5..70fc5c6d84775 100644 --- a/shell/browser/bluetooth/electron_bluetooth_delegate.cc +++ b/shell/browser/bluetooth/electron_bluetooth_delegate.cc @@ -138,4 +138,11 @@ ElectronBluetoothDelegate::GetPermittedDevices( return permitted_devices; } +void ElectronBluetoothDelegate::ShowDevicePairConfirmPrompt( + RenderFrameHost* frame, + const std::u16string& device_identifier, + PairConfirmCallback callback) { + NOTIMPLEMENTED(); +} + } // namespace electron diff --git a/shell/browser/bluetooth/electron_bluetooth_delegate.h b/shell/browser/bluetooth/electron_bluetooth_delegate.h index 9e9888ab42210..39918dc2bfbc3 100644 --- a/shell/browser/bluetooth/electron_bluetooth_delegate.h +++ b/shell/browser/bluetooth/electron_bluetooth_delegate.h @@ -55,6 +55,9 @@ class ElectronBluetoothDelegate : public content::BluetoothDelegate { void ShowDeviceCredentialsPrompt(content::RenderFrameHost* frame, const std::u16string& device_identifier, CredentialsCallback callback) override; + void ShowDevicePairConfirmPrompt(content::RenderFrameHost* frame, + const std::u16string& device_identifier, + PairConfirmCallback callback) override; blink::WebBluetoothDeviceId GetWebBluetoothDeviceId( content::RenderFrameHost* frame, const std::string& device_address) override; diff --git a/shell/browser/electron_autofill_driver_factory.cc b/shell/browser/electron_autofill_driver_factory.cc index e49683744baa6..254836b82408d 100644 --- a/shell/browser/electron_autofill_driver_factory.cc +++ b/shell/browser/electron_autofill_driver_factory.cc @@ -80,7 +80,7 @@ AutofillDriver* AutofillDriverFactory::DriverForFrame( // 3. `SomeOtherWebContentsObserver::RenderFrameDeleted(render_frame_host)` // calls `DriverForFrame(render_frame_host)`. // 5. `render_frame_host->~RenderFrameHostImpl()` finishes. - if (render_frame_host->IsRenderFrameCreated()) { + if (render_frame_host->IsRenderFrameLive()) { driver = std::make_unique(render_frame_host); DCHECK_EQ(driver_map_.find(render_frame_host)->second.get(), driver.get()); diff --git a/shell/browser/electron_browser_context.cc b/shell/browser/electron_browser_context.cc index 66643c4731e99..0d1532b2b12da 100644 --- a/shell/browser/electron_browser_context.cc +++ b/shell/browser/electron_browser_context.cc @@ -46,6 +46,7 @@ #include "shell/browser/protocol_registry.h" #include "shell/browser/special_storage_policy.h" #include "shell/browser/ui/inspectable_web_contents.h" +#include "shell/browser/web_contents_permission_helper.h" #include "shell/browser/web_view_manager.h" #include "shell/browser/zoom_level_delegate.h" #include "shell/common/application_info.h" @@ -415,6 +416,115 @@ void ElectronBrowserContext::SetSSLConfigClient( ssl_config_client_ = std::move(client); } +void ElectronBrowserContext::GrantDevicePermission( + const url::Origin& origin, + const base::Value& device, + blink::PermissionType permission_type) { + granted_devices_[permission_type][origin].push_back( + std::make_unique(device.Clone())); +} + +void ElectronBrowserContext::RevokeDevicePermission( + const url::Origin& origin, + const base::Value& device, + blink::PermissionType permission_type) { + const auto& current_devices_it = granted_devices_.find(permission_type); + if (current_devices_it == granted_devices_.end()) + return; + + const auto& origin_devices_it = current_devices_it->second.find(origin); + if (origin_devices_it == current_devices_it->second.end()) + return; + + for (auto it = origin_devices_it->second.begin(); + it != origin_devices_it->second.end();) { + if (DoesDeviceMatch(device, it->get(), permission_type)) { + it = origin_devices_it->second.erase(it); + } else { + ++it; + } + } +} + +bool ElectronBrowserContext::DoesDeviceMatch( + const base::Value& device, + const base::Value* device_to_compare, + blink::PermissionType permission_type) { + if (permission_type == + static_cast( + WebContentsPermissionHelper::PermissionType::HID)) { + if (device.GetDict().FindInt(kHidVendorIdKey) != + device_to_compare->GetDict().FindInt(kHidVendorIdKey) || + device.GetDict().FindInt(kHidProductIdKey) != + device_to_compare->GetDict().FindInt(kHidProductIdKey)) { + return false; + } + + const auto* serial_number = + device_to_compare->GetDict().FindString(kHidSerialNumberKey); + const auto* device_serial_number = + device.GetDict().FindString(kHidSerialNumberKey); + + if (serial_number && device_serial_number && + *device_serial_number == *serial_number) + return true; + } else if (permission_type == + static_cast( + WebContentsPermissionHelper::PermissionType::SERIAL)) { +#if BUILDFLAG(IS_WIN) + const auto* instance_id = device.GetDict().FindString(kDeviceInstanceIdKey); + const auto* port_instance_id = + device_to_compare->GetDict().FindString(kDeviceInstanceIdKey); + if (instance_id && port_instance_id && *instance_id == *port_instance_id) + return true; +#else + const auto* serial_number = device.GetDict().FindString(kSerialNumberKey); + const auto* port_serial_number = + device_to_compare->GetDict().FindString(kSerialNumberKey); + if (device.GetDict().FindInt(kVendorIdKey) != + device_to_compare->GetDict().FindInt(kVendorIdKey) || + device.GetDict().FindInt(kProductIdKey) != + device_to_compare->GetDict().FindInt(kProductIdKey) || + (serial_number && port_serial_number && + *port_serial_number != *serial_number)) { + return false; + } + +#if BUILDFLAG(IS_MAC) + const auto* usb_driver_key = device.GetDict().FindString(kUsbDriverKey); + const auto* port_usb_driver_key = + device_to_compare->GetDict().FindString(kUsbDriverKey); + if (usb_driver_key && port_usb_driver_key && + *usb_driver_key != *port_usb_driver_key) { + return false; + } +#endif // BUILDFLAG(IS_MAC) + return true; +#endif // BUILDFLAG(IS_WIN) + } + return false; +} + +bool ElectronBrowserContext::CheckDevicePermission( + const url::Origin& origin, + const base::Value& device, + blink::PermissionType permission_type) { + const auto& current_devices_it = granted_devices_.find(permission_type); + if (current_devices_it == granted_devices_.end()) + return false; + + const auto& origin_devices_it = current_devices_it->second.find(origin); + if (origin_devices_it == current_devices_it->second.end()) + return false; + + for (const auto& device_to_compare : origin_devices_it->second) { + if (DoesDeviceMatch(device, device_to_compare.get(), permission_type)) + return true; + } + + return false; +} + // static ElectronBrowserContext* ElectronBrowserContext::From( const std::string& partition, diff --git a/shell/browser/electron_browser_context.h b/shell/browser/electron_browser_context.h index c585859ce038f..844df7f65e65b 100644 --- a/shell/browser/electron_browser_context.h +++ b/shell/browser/electron_browser_context.h @@ -8,6 +8,7 @@ #include #include #include +#include #include "base/memory/weak_ptr.h" #include "chrome/browser/predictors/preconnect_manager.h" @@ -18,6 +19,7 @@ #include "services/network/public/mojom/network_context.mojom.h" #include "services/network/public/mojom/url_loader_factory.mojom.h" #include "shell/browser/media/media_device_id_salt.h" +#include "third_party/blink/public/common/permissions/permission_utils.h" class PrefService; class ValueMapPrefStore; @@ -38,6 +40,10 @@ class ElectronExtensionSystem; namespace electron { +using DevicePermissionMap = + std::map>>>; + class ElectronBrowserContext; class ElectronDownloadManagerDelegate; class ElectronPermissionManager; @@ -149,6 +155,25 @@ class ElectronBrowserContext : public content::BrowserContext { ~ElectronBrowserContext() override; + // Grants |origin| access to |device|. + // To be used in place of ObjectPermissionContextBase::GrantObjectPermission. + void GrantDevicePermission(const url::Origin& origin, + const base::Value& device, + blink::PermissionType permissionType); + + // Revokes |origin| access to |device|. + // To be used in place of ObjectPermissionContextBase::RevokeObjectPermission. + void RevokeDevicePermission(const url::Origin& origin, + const base::Value& device, + blink::PermissionType permission_type); + + // Returns the list of devices that |origin| has been granted permission to + // access. To be used in place of + // ObjectPermissionContextBase::GetGrantedObjects. + bool CheckDevicePermission(const url::Origin& origin, + const base::Value& device, + blink::PermissionType permissionType); + private: ElectronBrowserContext(const std::string& partition, bool in_memory, @@ -157,6 +182,10 @@ class ElectronBrowserContext : public content::BrowserContext { // Initialize pref registry. void InitPrefs(); + bool DoesDeviceMatch(const base::Value& device, + const base::Value* device_to_compare, + blink::PermissionType permission_type); + ValueMapPrefStore* in_memory_pref_store_ = nullptr; std::unique_ptr resource_context_; @@ -188,6 +217,9 @@ class ElectronBrowserContext : public content::BrowserContext { network::mojom::SSLConfigPtr ssl_config_; mojo::Remote ssl_config_client_; + // In-memory cache that holds objects that have been granted permissions. + DevicePermissionMap granted_devices_; + base::WeakPtrFactory weak_factory_{this}; }; diff --git a/shell/browser/electron_browser_main_parts.cc b/shell/browser/electron_browser_main_parts.cc index dd5f187ce9ed5..eaef6148d18f7 100644 --- a/shell/browser/electron_browser_main_parts.cc +++ b/shell/browser/electron_browser_main_parts.cc @@ -219,6 +219,9 @@ int ElectronBrowserMainParts::PreEarlyInitialization() { #if BUILDFLAG(IS_LINUX) ui::OzonePlatform::PreEarlyInitialization(); #endif +#if BUILDFLAG(IS_MAC) + screen_ = std::make_unique(); +#endif return GetExitCode(); } @@ -275,8 +278,9 @@ void ElectronBrowserMainParts::PostEarlyInitialization() { int ElectronBrowserMainParts::PreCreateThreads() { #if defined(USE_AURA) - screen_ = views::CreateDesktopScreen(); - display::Screen::SetScreenInstance(screen_.get()); + if (!display::Screen::GetScreen()) { + screen_ = views::CreateDesktopScreen(); + } #endif if (!views::LayoutProvider::Get()) diff --git a/shell/browser/electron_browser_main_parts.h b/shell/browser/electron_browser_main_parts.h index d0f813544f8d2..95ced64ed7c9e 100644 --- a/shell/browser/electron_browser_main_parts.h +++ b/shell/browser/electron_browser_main_parts.h @@ -16,6 +16,7 @@ #include "mojo/public/cpp/bindings/remote.h" #include "services/device/public/mojom/geolocation_control.mojom.h" #include "third_party/abseil-cpp/absl/types/optional.h" +#include "ui/display/screen.h" #include "ui/views/layout/layout_provider.h" class BrowserProcessImpl; @@ -169,6 +170,7 @@ class ElectronBrowserMainParts : public content::BrowserMainParts { #if BUILDFLAG(IS_MAC) std::unique_ptr geolocation_manager_; + std::unique_ptr screen_; #endif static ElectronBrowserMainParts* self_; diff --git a/shell/browser/electron_permission_manager.cc b/shell/browser/electron_permission_manager.cc index f41683704d651..248d5c71d1008 100644 --- a/shell/browser/electron_permission_manager.cc +++ b/shell/browser/electron_permission_manager.cc @@ -307,25 +307,17 @@ bool ElectronPermissionManager::CheckPermissionWithDetails( bool ElectronPermissionManager::CheckDevicePermission( blink::PermissionType permission, const url::Origin& origin, - const base::Value* device, - content::RenderFrameHost* render_frame_host) const { - auto* web_contents = - content::WebContents::FromRenderFrameHost(render_frame_host); - api::WebContents* api_web_contents = api::WebContents::From(web_contents); + const base::Value& device, + ElectronBrowserContext* browser_context) const { if (device_permission_handler_.is_null()) { - if (api_web_contents) { - return api_web_contents->CheckDevicePermission(origin, device, permission, - render_frame_host); - } - return false; + return browser_context->CheckDevicePermission(origin, device, permission); } else { v8::Isolate* isolate = JavascriptEnvironment::GetIsolate(); v8::HandleScope scope(isolate); v8::Local details = gin::DataObjectBuilder(isolate) .Set("deviceType", permission) .Set("origin", origin.Serialize()) - .Set("device", device->Clone()) - .Set("frame", render_frame_host) + .Set("device", device.Clone()) .Build(); return device_permission_handler_.Run(details); } @@ -334,29 +326,19 @@ bool ElectronPermissionManager::CheckDevicePermission( void ElectronPermissionManager::GrantDevicePermission( blink::PermissionType permission, const url::Origin& origin, - const base::Value* device, - content::RenderFrameHost* render_frame_host) const { + const base::Value& device, + ElectronBrowserContext* browser_context) const { if (device_permission_handler_.is_null()) { - auto* web_contents = - content::WebContents::FromRenderFrameHost(render_frame_host); - api::WebContents* api_web_contents = api::WebContents::From(web_contents); - if (api_web_contents) - api_web_contents->GrantDevicePermission(origin, device, permission, - render_frame_host); + browser_context->GrantDevicePermission(origin, device, permission); } } void ElectronPermissionManager::RevokeDevicePermission( blink::PermissionType permission, const url::Origin& origin, - const base::Value* device, - content::RenderFrameHost* render_frame_host) const { - auto* web_contents = - content::WebContents::FromRenderFrameHost(render_frame_host); - api::WebContents* api_web_contents = api::WebContents::From(web_contents); - if (api_web_contents) - api_web_contents->RevokeDevicePermission(origin, device, permission, - render_frame_host); + const base::Value& device, + ElectronBrowserContext* browser_context) const { + browser_context->RevokeDevicePermission(origin, device, permission); } blink::mojom::PermissionStatus diff --git a/shell/browser/electron_permission_manager.h b/shell/browser/electron_permission_manager.h index e2cd6655b8819..aacbd18c650fa 100644 --- a/shell/browser/electron_permission_manager.h +++ b/shell/browser/electron_permission_manager.h @@ -12,6 +12,7 @@ #include "base/containers/id_map.h" #include "content/public/browser/permission_controller_delegate.h" #include "gin/dictionary.h" +#include "shell/browser/electron_browser_context.h" namespace base { class DictionaryValue; @@ -91,19 +92,18 @@ class ElectronPermissionManager : public content::PermissionControllerDelegate { bool CheckDevicePermission(blink::PermissionType permission, const url::Origin& origin, - const base::Value* object, - content::RenderFrameHost* render_frame_host) const; + const base::Value& object, + ElectronBrowserContext* browser_context) const; void GrantDevicePermission(blink::PermissionType permission, const url::Origin& origin, - const base::Value* object, - content::RenderFrameHost* render_frame_host) const; + const base::Value& object, + ElectronBrowserContext* browser_context) const; - void RevokeDevicePermission( - blink::PermissionType permission, - const url::Origin& origin, - const base::Value* object, - content::RenderFrameHost* render_frame_host) const; + void RevokeDevicePermission(blink::PermissionType permission, + const url::Origin& origin, + const base::Value& object, + ElectronBrowserContext* browser_context) const; protected: void OnPermissionResponse(int request_id, diff --git a/shell/browser/hid/electron_hid_delegate.cc b/shell/browser/hid/electron_hid_delegate.cc index 75298a5870046..13b36dd75bb12 100644 --- a/shell/browser/hid/electron_hid_delegate.cc +++ b/shell/browser/hid/electron_hid_delegate.cc @@ -10,17 +10,17 @@ #include "base/command_line.h" #include "content/public/browser/web_contents.h" #include "services/device/public/cpp/hid/hid_switches.h" +#include "shell/browser/electron_permission_manager.h" #include "shell/browser/hid/hid_chooser_context.h" #include "shell/browser/hid/hid_chooser_context_factory.h" #include "shell/browser/hid/hid_chooser_controller.h" #include "shell/browser/web_contents_permission_helper.h" +#include "third_party/blink/public/common/permissions/permission_utils.h" namespace { electron::HidChooserContext* GetChooserContext( - content::RenderFrameHost* frame) { - auto* web_contents = content::WebContents::FromRenderFrameHost(frame); - auto* browser_context = web_contents->GetBrowserContext(); + content::BrowserContext* browser_context) { return electron::HidChooserContextFactory::GetForBrowserContext( browser_context); } @@ -38,8 +38,9 @@ std::unique_ptr ElectronHidDelegate::RunChooser( std::vector filters, std::vector exclusion_filters, content::HidChooser::Callback callback) { - electron::HidChooserContext* chooser_context = - GetChooserContext(render_frame_host); + DCHECK(render_frame_host); + auto* chooser_context = + GetChooserContext(render_frame_host->GetBrowserContext()); if (!device_observation_.IsObserving()) device_observation_.Observe(chooser_context); @@ -58,65 +59,61 @@ std::unique_ptr ElectronHidDelegate::RunChooser( } bool ElectronHidDelegate::CanRequestDevicePermission( - content::RenderFrameHost* render_frame_host) { - auto* web_contents = - content::WebContents::FromRenderFrameHost(render_frame_host); - auto* permission_helper = - WebContentsPermissionHelper::FromWebContents(web_contents); - return permission_helper->CheckHIDAccessPermission( - web_contents->GetMainFrame()->GetLastCommittedOrigin()); + content::BrowserContext* browser_context, + const url::Origin& origin) { + base::DictionaryValue details; + details.SetString("securityOrigin", origin.GetURL().spec()); + auto* permission_manager = static_cast( + browser_context->GetPermissionControllerDelegate()); + return permission_manager->CheckPermissionWithDetails( + static_cast( + WebContentsPermissionHelper::PermissionType::HID), + nullptr, origin.GetURL(), &details); } bool ElectronHidDelegate::HasDevicePermission( - content::RenderFrameHost* render_frame_host, + content::BrowserContext* browser_context, + const url::Origin& origin, const device::mojom::HidDeviceInfo& device) { - auto* chooser_context = GetChooserContext(render_frame_host); - const auto& origin = - render_frame_host->GetMainFrame()->GetLastCommittedOrigin(); - return chooser_context->HasDevicePermission(origin, device, - render_frame_host); + return GetChooserContext(browser_context) + ->HasDevicePermission(origin, device); } void ElectronHidDelegate::RevokeDevicePermission( - content::RenderFrameHost* render_frame_host, + content::BrowserContext* browser_context, + const url::Origin& origin, const device::mojom::HidDeviceInfo& device) { - auto* chooser_context = GetChooserContext(render_frame_host); - const auto& origin = - render_frame_host->GetMainFrame()->GetLastCommittedOrigin(); - return chooser_context->RevokeDevicePermission(origin, device, - render_frame_host); + return GetChooserContext(browser_context) + ->RevokeDevicePermission(origin, device); } device::mojom::HidManager* ElectronHidDelegate::GetHidManager( - content::RenderFrameHost* render_frame_host) { - auto* chooser_context = GetChooserContext(render_frame_host); - return chooser_context->GetHidManager(); + content::BrowserContext* browser_context) { + return GetChooserContext(browser_context)->GetHidManager(); } -void ElectronHidDelegate::AddObserver( - content::RenderFrameHost* render_frame_host, - Observer* observer) { +void ElectronHidDelegate::AddObserver(content::BrowserContext* browser_context, + Observer* observer) { observer_list_.AddObserver(observer); - auto* chooser_context = GetChooserContext(render_frame_host); + auto* chooser_context = GetChooserContext(browser_context); if (!device_observation_.IsObserving()) device_observation_.Observe(chooser_context); } void ElectronHidDelegate::RemoveObserver( - content::RenderFrameHost* render_frame_host, content::HidDelegate::Observer* observer) { observer_list_.RemoveObserver(observer); } const device::mojom::HidDeviceInfo* ElectronHidDelegate::GetDeviceInfo( - content::RenderFrameHost* render_frame_host, + content::BrowserContext* browser_context, const std::string& guid) { - auto* chooser_context = GetChooserContext(render_frame_host); + auto* chooser_context = GetChooserContext(browser_context); return chooser_context->GetDeviceInfo(guid); } bool ElectronHidDelegate::IsFidoAllowedForOrigin( - content::RenderFrameHost* render_frame_host, + content::BrowserContext* browser_context, const url::Origin& origin) { return base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kDisableHidBlocklist); diff --git a/shell/browser/hid/electron_hid_delegate.h b/shell/browser/hid/electron_hid_delegate.h index 0305828750035..2fc81abd3c172 100644 --- a/shell/browser/hid/electron_hid_delegate.h +++ b/shell/browser/hid/electron_hid_delegate.h @@ -33,23 +33,24 @@ class ElectronHidDelegate : public content::HidDelegate, std::vector filters, std::vector exclusion_filters, content::HidChooser::Callback callback) override; - bool CanRequestDevicePermission( - content::RenderFrameHost* render_frame_host) override; - bool HasDevicePermission(content::RenderFrameHost* render_frame_host, + bool CanRequestDevicePermission(content::BrowserContext* browser_context, + const url::Origin& origin) override; + bool HasDevicePermission(content::BrowserContext* browser_context, + const url::Origin& origin, const device::mojom::HidDeviceInfo& device) override; void RevokeDevicePermission( - content::RenderFrameHost* render_frame_host, + content::BrowserContext* browser_context, + const url::Origin& origin, const device::mojom::HidDeviceInfo& device) override; device::mojom::HidManager* GetHidManager( - content::RenderFrameHost* render_frame_host) override; - void AddObserver(content::RenderFrameHost* render_frame_host, + content::BrowserContext* browser_context) override; + void AddObserver(content::BrowserContext* browser_context, content::HidDelegate::Observer* observer) override; - void RemoveObserver(content::RenderFrameHost* render_frame_host, - content::HidDelegate::Observer* observer) override; + void RemoveObserver(content::HidDelegate::Observer* observer) override; const device::mojom::HidDeviceInfo* GetDeviceInfo( - content::RenderFrameHost* render_frame_host, + content::BrowserContext* browser_context, const std::string& guid) override; - bool IsFidoAllowedForOrigin(content::RenderFrameHost* render_frame_host, + bool IsFidoAllowedForOrigin(content::BrowserContext* browser_context, const url::Origin& origin) override; // HidChooserContext::DeviceObserver: diff --git a/shell/browser/hid/hid_chooser_context.cc b/shell/browser/hid/hid_chooser_context.cc index 84231d6eb5dbe..108ecb28f49fb 100644 --- a/shell/browser/hid/hid_chooser_context.cc +++ b/shell/browser/hid/hid_chooser_context.cc @@ -20,12 +20,15 @@ #include "services/device/public/cpp/hid/hid_blocklist.h" #include "services/device/public/cpp/hid/hid_switches.h" #include "shell/browser/api/electron_api_session.h" +#include "shell/browser/electron_permission_manager.h" #include "shell/browser/web_contents_permission_helper.h" #include "shell/common/gin_converters/content_converter.h" #include "shell/common/gin_converters/frame_converter.h" #include "shell/common/gin_converters/hid_device_info_converter.h" #include "shell/common/gin_converters/value_converter.h" #include "shell/common/gin_helper/dictionary.h" +#include "third_party/blink/public/common/permissions/permission_utils.h" + #include "ui/base/l10n/l10n_util.h" namespace electron { @@ -90,16 +93,16 @@ base::Value HidChooserContext::DeviceInfoToValue( void HidChooserContext::GrantDevicePermission( const url::Origin& origin, - const device::mojom::HidDeviceInfo& device, - content::RenderFrameHost* render_frame_host) { + const device::mojom::HidDeviceInfo& device) { DCHECK(base::Contains(devices_, device.guid)); if (CanStorePersistentEntry(device)) { - auto* web_contents = - content::WebContents::FromRenderFrameHost(render_frame_host); - auto* permission_helper = - WebContentsPermissionHelper::FromWebContents(web_contents); - permission_helper->GrantHIDDevicePermission( - origin, DeviceInfoToValue(device), render_frame_host); + auto* permission_manager = static_cast( + browser_context_->GetPermissionControllerDelegate()); + + permission_manager->GrantDevicePermission( + static_cast( + WebContentsPermissionHelper::PermissionType::HID), + origin, DeviceInfoToValue(device), browser_context_); } else { ephemeral_devices_[origin].insert(device.guid); } @@ -107,40 +110,34 @@ void HidChooserContext::GrantDevicePermission( void HidChooserContext::RevokeDevicePermission( const url::Origin& origin, - const device::mojom::HidDeviceInfo& device, - content::RenderFrameHost* render_frame_host) { + const device::mojom::HidDeviceInfo& device) { DCHECK(base::Contains(devices_, device.guid)); if (CanStorePersistentEntry(device)) { - RevokePersistentDevicePermission(origin, device, render_frame_host); + RevokePersistentDevicePermission(origin, device); } else { RevokeEphemeralDevicePermission(origin, device); } - auto* web_contents = - content::WebContents::FromRenderFrameHost(render_frame_host); - - api::Session* session = - api::Session::FromBrowserContext(web_contents->GetBrowserContext()); + api::Session* session = api::Session::FromBrowserContext(browser_context_); if (session) { v8::Isolate* isolate = JavascriptEnvironment::GetIsolate(); v8::HandleScope scope(isolate); gin_helper::Dictionary details = gin_helper::Dictionary::CreateEmpty(isolate); details.Set("device", device.Clone()); - details.SetGetter("frame", render_frame_host); + details.Set("origin", origin.Serialize()); session->Emit("hid-device-revoked", details); } } void HidChooserContext::RevokePersistentDevicePermission( const url::Origin& origin, - const device::mojom::HidDeviceInfo& device, - content::RenderFrameHost* render_frame_host) { - auto* web_contents = - content::WebContents::FromRenderFrameHost(render_frame_host); - auto* permission_helper = - WebContentsPermissionHelper::FromWebContents(web_contents); - permission_helper->RevokeHIDDevicePermission( - origin, DeviceInfoToValue(device), render_frame_host); + const device::mojom::HidDeviceInfo& device) { + auto* permission_manager = static_cast( + browser_context_->GetPermissionControllerDelegate()); + permission_manager->RevokeDevicePermission( + static_cast( + WebContentsPermissionHelper::PermissionType::HID), + origin, DeviceInfoToValue(device), browser_context_); RevokeEphemeralDevicePermission(origin, device); } @@ -167,11 +164,10 @@ void HidChooserContext::RevokeEphemeralDevicePermission( bool HidChooserContext::HasDevicePermission( const url::Origin& origin, - const device::mojom::HidDeviceInfo& device, - content::RenderFrameHost* render_frame_host) { + const device::mojom::HidDeviceInfo& device) { if (!base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kDisableHidBlocklist) && - device::HidBlocklist::IsDeviceExcluded(device)) + device.is_excluded_by_blocklist) return false; auto it = ephemeral_devices_.find(origin); @@ -180,12 +176,12 @@ bool HidChooserContext::HasDevicePermission( return true; } - auto* web_contents = - content::WebContents::FromRenderFrameHost(render_frame_host); - auto* permission_helper = - WebContentsPermissionHelper::FromWebContents(web_contents); - return permission_helper->CheckHIDDevicePermission( - origin, DeviceInfoToValue(device), render_frame_host); + auto* permission_manager = static_cast( + browser_context_->GetPermissionControllerDelegate()); + return permission_manager->CheckDevicePermission( + static_cast( + WebContentsPermissionHelper::PermissionType::HID), + origin, DeviceInfoToValue(device), browser_context_); } void HidChooserContext::AddDeviceObserver(DeviceObserver* observer) { diff --git a/shell/browser/hid/hid_chooser_context.h b/shell/browser/hid/hid_chooser_context.h index 544984004e654..6e7bf2262f642 100644 --- a/shell/browser/hid/hid_chooser_context.h +++ b/shell/browser/hid/hid_chooser_context.h @@ -16,7 +16,6 @@ #include "base/memory/weak_ptr.h" #include "base/observer_list.h" #include "base/unguessable_token.h" -#include "content/public/browser/render_frame_host.h" #include "content/public/browser/web_contents.h" #include "mojo/public/cpp/bindings/associated_receiver.h" #include "mojo/public/cpp/bindings/pending_remote.h" @@ -74,14 +73,11 @@ class HidChooserContext : public KeyedService, // HID-specific interface for granting and checking permissions. void GrantDevicePermission(const url::Origin& origin, - const device::mojom::HidDeviceInfo& device, - content::RenderFrameHost* render_frame_host); + const device::mojom::HidDeviceInfo& device); void RevokeDevicePermission(const url::Origin& origin, - const device::mojom::HidDeviceInfo& device, - content::RenderFrameHost* render_frame_host); + const device::mojom::HidDeviceInfo& device); bool HasDevicePermission(const url::Origin& origin, - const device::mojom::HidDeviceInfo& device, - content::RenderFrameHost* render_frame_host); + const device::mojom::HidDeviceInfo& device); // For ScopedObserver. void AddDeviceObserver(DeviceObserver* observer); @@ -117,8 +113,7 @@ class HidChooserContext : public KeyedService, // HID-specific interface for revoking device permissions. void RevokePersistentDevicePermission( const url::Origin& origin, - const device::mojom::HidDeviceInfo& device, - content::RenderFrameHost* render_frame_host); + const device::mojom::HidDeviceInfo& device); void RevokeEphemeralDevicePermission( const url::Origin& origin, const device::mojom::HidDeviceInfo& device); diff --git a/shell/browser/hid/hid_chooser_controller.cc b/shell/browser/hid/hid_chooser_controller.cc index 69f660fa03016..8d2a91c9d32ca 100644 --- a/shell/browser/hid/hid_chooser_controller.cc +++ b/shell/browser/hid/hid_chooser_controller.cc @@ -196,8 +196,7 @@ void HidChooserController::OnDeviceChosen(gin::Arguments* args) { std::vector devices; devices.reserve(device_infos.size()); for (auto& device : device_infos) { - chooser_context_->GrantDevicePermission(origin_, *device, - web_contents()->GetMainFrame()); + chooser_context_->GrantDevicePermission(origin_, *device); devices.push_back(device->Clone()); } RunCallback(std::move(devices)); @@ -262,7 +261,7 @@ bool HidChooserController::DisplayDevice( if (!base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kDisableHidBlocklist)) { // Do not pass the device to the chooser if it is excluded by the blocklist. - if (device::HidBlocklist::IsDeviceExcluded(device)) + if (device.is_excluded_by_blocklist) return false; // Do not pass the device to the chooser if it has a top-level collection diff --git a/shell/browser/mac/electron_application_delegate.mm b/shell/browser/mac/electron_application_delegate.mm index 138400d625a87..c5ebcf2306bc8 100644 --- a/shell/browser/mac/electron_application_delegate.mm +++ b/shell/browser/mac/electron_application_delegate.mm @@ -109,16 +109,6 @@ - (void)applicationDidFinishLaunching:(NSNotification*)notify { electron::Browser::Get()->DidFinishLaunching( electron::NSDictionaryToDictionaryValue(notification_info)); - -#if BUILDFLAG(USE_ALLOCATOR_SHIM) - // Disable fatal OOM to hack around an OS bug https://crbug.com/654695. - if (base::mac::IsOS10_12()) { - g_swizzle_imk_input_session = new base::mac::ScopedObjCClassSwizzler( - NSClassFromString(@"IMKInputSession"), - [OOMDisabledIMKInputSession class], - @selector(_coreAttributesFromRange:whichAttributes:completionHandler:)); - } -#endif } - (void)applicationDidBecomeActive:(NSNotification*)notification { diff --git a/shell/browser/media/media_stream_devices_controller.cc b/shell/browser/media/media_stream_devices_controller.cc index c74f0c9ccfb61..c7594bfdd0bc9 100644 --- a/shell/browser/media/media_stream_devices_controller.cc +++ b/shell/browser/media/media_stream_devices_controller.cc @@ -45,7 +45,7 @@ MediaStreamDevicesController::MediaStreamDevicesController( MediaStreamDevicesController::~MediaStreamDevicesController() { if (!callback_.is_null()) { std::move(callback_).Run( - blink::mojom::StreamDevices(), + blink::mojom::StreamDevicesSet(), blink::mojom::MediaStreamRequestResult::FAILED_DUE_TO_SHUTDOWN, std::unique_ptr()); } @@ -77,7 +77,13 @@ bool MediaStreamDevicesController::TakeAction() { void MediaStreamDevicesController::Accept() { // Get the default devices for the request. - blink::mojom::StreamDevices stream_devices; + blink::mojom::StreamDevicesSetPtr stream_devices_set = + blink::mojom::StreamDevicesSet::New(); + stream_devices_set->stream_devices.emplace_back( + blink::mojom::StreamDevices::New()); + blink::mojom::StreamDevices& stream_devices = + *stream_devices_set->stream_devices[0]; + if (microphone_requested_ || webcam_requested_) { switch (request_.request_type) { case blink::MEDIA_OPEN_DEVICE_PEPPER_ONLY: { @@ -164,19 +170,23 @@ void MediaStreamDevicesController::Accept() { } } - std::move(callback_).Run(stream_devices, + std::move(callback_).Run(*stream_devices_set, blink::mojom::MediaStreamRequestResult::OK, std::unique_ptr()); } void MediaStreamDevicesController::Deny( blink::mojom::MediaStreamRequestResult result) { - std::move(callback_).Run(blink::mojom::StreamDevices(), result, + std::move(callback_).Run(blink::mojom::StreamDevicesSet(), result, std::unique_ptr()); } void MediaStreamDevicesController::HandleUserMediaRequest() { - blink::mojom::StreamDevices devices; + blink::mojom::StreamDevicesSetPtr stream_devices_set = + blink::mojom::StreamDevicesSet::New(); + stream_devices_set->stream_devices.emplace_back( + blink::mojom::StreamDevices::New()); + blink::mojom::StreamDevices& devices = *stream_devices_set->stream_devices[0]; if (request_.audio_type == blink::mojom::MediaStreamType::GUM_TAB_AUDIO_CAPTURE) { @@ -215,7 +225,7 @@ void MediaStreamDevicesController::HandleUserMediaRequest() { bool empty = !devices.audio_device.has_value() && !devices.video_device.has_value(); std::move(callback_).Run( - devices, + *stream_devices_set, empty ? blink::mojom::MediaStreamRequestResult::NO_HARDWARE : blink::mojom::MediaStreamRequestResult::OK, std::unique_ptr()); diff --git a/shell/browser/notifications/win/win32_desktop_notifications/desktop_notification_controller.cc b/shell/browser/notifications/win/win32_desktop_notifications/desktop_notification_controller.cc index d0de9f6ae1b65..ba6deb94882af 100644 --- a/shell/browser/notifications/win/win32_desktop_notifications/desktop_notification_controller.cc +++ b/shell/browser/notifications/win/win32_desktop_notifications/desktop_notification_controller.cc @@ -13,6 +13,7 @@ #include "shell/browser/notifications/win/win32_desktop_notifications/desktop_notification_controller.h" #include +#include #include #include "base/check.h" @@ -238,7 +239,7 @@ void DesktopNotificationController::AnimateAll() { it = stable_partition(it, it2, is_alive); // purge the dead items - for_each(it, it2, [this](auto&& inst) { DestroyToast(&inst); }); + std::for_each(it, it2, [this](auto&& inst) { DestroyToast(&inst); }); if (it2 == instances_.end()) { instances_.erase(it, it2); diff --git a/shell/browser/printing/print_preview_message_handler.cc b/shell/browser/printing/print_preview_message_handler.cc index 57a169a5f39bb..0fac2edb11d7d 100644 --- a/shell/browser/printing/print_preview_message_handler.cc +++ b/shell/browser/printing/print_preview_message_handler.cc @@ -41,9 +41,9 @@ void StopWorker(int document_cookie) { std::unique_ptr printer_query = queue->PopPrinterQuery(document_cookie); if (printer_query.get()) { - content::GetIOThreadTaskRunner({})->PostTask( - FROM_HERE, base::BindOnce(&printing::PrinterQuery::StopWorker, - std::move(printer_query))); + printer_query->PostTask(FROM_HERE, + base::BindOnce(&printing::PrinterQuery::StopWorker, + std::move(printer_query))); } } diff --git a/shell/browser/serial/serial_chooser_context.cc b/shell/browser/serial/serial_chooser_context.cc index c4001b529946f..356547f81a55f 100644 --- a/shell/browser/serial/serial_chooser_context.cc +++ b/shell/browser/serial/serial_chooser_context.cc @@ -15,6 +15,7 @@ #include "content/public/browser/device_service.h" #include "content/public/browser/web_contents.h" #include "mojo/public/cpp/bindings/pending_remote.h" +#include "shell/browser/electron_permission_manager.h" #include "shell/browser/web_contents_permission_helper.h" namespace electron { @@ -86,7 +87,8 @@ base::Value PortInfoToValue(const device::mojom::SerialPortInfo& port) { return value; } -SerialChooserContext::SerialChooserContext() = default; +SerialChooserContext::SerialChooserContext(ElectronBrowserContext* context) + : browser_context_(context) {} SerialChooserContext::~SerialChooserContext() = default; @@ -99,26 +101,24 @@ void SerialChooserContext::GrantPortPermission( const url::Origin& origin, const device::mojom::SerialPortInfo& port, content::RenderFrameHost* render_frame_host) { - base::Value value = PortInfoToValue(port); - auto* web_contents = - content::WebContents::FromRenderFrameHost(render_frame_host); - auto* permission_helper = - WebContentsPermissionHelper::FromWebContents(web_contents); - permission_helper->GrantSerialPortPermission(origin, std::move(value), - render_frame_host); + auto* permission_manager = static_cast( + browser_context_->GetPermissionControllerDelegate()); + return permission_manager->GrantDevicePermission( + static_cast( + WebContentsPermissionHelper::PermissionType::SERIAL), + origin, PortInfoToValue(port), browser_context_); } bool SerialChooserContext::HasPortPermission( const url::Origin& origin, const device::mojom::SerialPortInfo& port, content::RenderFrameHost* render_frame_host) { - auto* web_contents = - content::WebContents::FromRenderFrameHost(render_frame_host); - auto* permission_helper = - WebContentsPermissionHelper::FromWebContents(web_contents); - base::Value value = PortInfoToValue(port); - return permission_helper->CheckSerialPortPermission(origin, std::move(value), - render_frame_host); + auto* permission_manager = static_cast( + browser_context_->GetPermissionControllerDelegate()); + return permission_manager->CheckDevicePermission( + static_cast( + WebContentsPermissionHelper::PermissionType::SERIAL), + origin, PortInfoToValue(port), browser_context_); } void SerialChooserContext::RevokePortPermissionWebInitiated( diff --git a/shell/browser/serial/serial_chooser_context.h b/shell/browser/serial/serial_chooser_context.h index 2296668874115..a0426c8b8f0c4 100644 --- a/shell/browser/serial/serial_chooser_context.h +++ b/shell/browser/serial/serial_chooser_context.h @@ -48,7 +48,7 @@ class SerialChooserContext : public KeyedService, public: using PortObserver = content::SerialDelegate::Observer; - SerialChooserContext(); + explicit SerialChooserContext(ElectronBrowserContext* context); ~SerialChooserContext() override; // disable copy @@ -104,6 +104,8 @@ class SerialChooserContext : public KeyedService, mojo::Receiver client_receiver_{this}; base::ObserverList port_observer_list_; + ElectronBrowserContext* browser_context_; + base::WeakPtrFactory weak_factory_{this}; }; diff --git a/shell/browser/serial/serial_chooser_context_factory.cc b/shell/browser/serial/serial_chooser_context_factory.cc index 914bdd49998a2..c3f18c856b7a0 100644 --- a/shell/browser/serial/serial_chooser_context_factory.cc +++ b/shell/browser/serial/serial_chooser_context_factory.cc @@ -19,7 +19,9 @@ SerialChooserContextFactory::~SerialChooserContextFactory() = default; KeyedService* SerialChooserContextFactory::BuildServiceInstanceFor( content::BrowserContext* context) const { - return new SerialChooserContext(); + auto* browser_context = + static_cast(context); + return new SerialChooserContext(browser_context); } // static diff --git a/shell/browser/ui/certificate_trust_mac.mm b/shell/browser/ui/certificate_trust_mac.mm index ae234d6fccf75..de9006728cec0 100644 --- a/shell/browser/ui/certificate_trust_mac.mm +++ b/shell/browser/ui/certificate_trust_mac.mm @@ -13,8 +13,7 @@ #include "base/strings/sys_string_conversions.h" #include "net/cert/cert_database.h" -#include "net/cert/x509_util_ios_and_mac.h" -#include "net/cert/x509_util_mac.h" +#include "net/cert/x509_util_apple.h" #include "shell/browser/native_window.h" @interface TrustDelegate : NSObject { diff --git a/shell/browser/ui/inspectable_web_contents.cc b/shell/browser/ui/inspectable_web_contents.cc index 2c2594ef3ff83..c7e47be7a8f28 100644 --- a/shell/browser/ui/inspectable_web_contents.cc +++ b/shell/browser/ui/inspectable_web_contents.cc @@ -622,7 +622,7 @@ void InspectableWebContents::AddDevToolsExtensionsToClient() { "exposeExperimentalAPIs", extension->permissions_data()->HasAPIPermission( extensions::mojom::APIPermissionID::kExperimental)); - results.Append(std::move(extension_info)); + results.Append(base::Value::FromUniquePtrValue(std::move(extension_info))); } CallClientFunction("DevToolsAPI.addExtensions", &results, NULL, NULL); diff --git a/shell/browser/ui/webui/accessibility_ui.cc b/shell/browser/ui/webui/accessibility_ui.cc index 15e0b2311e433..f276f59a3e714 100644 --- a/shell/browser/ui/webui/accessibility_ui.cc +++ b/shell/browser/ui/webui/accessibility_ui.cc @@ -196,7 +196,7 @@ std::string RecursiveDumpAXPlatformNodeAsString( } } str += "\n"; - for (int i = 0; i < node->GetDelegate()->GetChildCount(); i++) { + for (size_t i = 0; i < node->GetDelegate()->GetChildCount(); i++) { gfx::NativeViewAccessible child = node->GetDelegate()->ChildAtIndex(i); const ui::AXPlatformNode* child_node = ui::AXPlatformNode::FromNativeViewAccessible(child); @@ -286,14 +286,15 @@ void HandleAccessibilityRequestCallback( descriptor->SetBoolean(kWeb, is_web_enabled); descriptor->SetBoolean(kLabelImages, are_accessibility_image_labels_enabled); - rvh_list->Append(std::move(descriptor)); + rvh_list->Append(base::Value::FromUniquePtrValue(std::move(descriptor))); } data.Set(kPagesField, std::move(rvh_list)); auto window_list = std::make_unique(); for (auto* window : electron::WindowList::GetWindows()) { - window_list->Append(BuildTargetDescriptor(window)); + window_list->Append( + base::Value::FromUniquePtrValue(BuildTargetDescriptor(window))); } data.Set(kBrowsersField, std::move(window_list)); diff --git a/shell/browser/web_contents_permission_helper.cc b/shell/browser/web_contents_permission_helper.cc index 093f6504d3e99..d12ee24602dc0 100644 --- a/shell/browser/web_contents_permission_helper.cc +++ b/shell/browser/web_contents_permission_helper.cc @@ -85,39 +85,6 @@ bool WebContentsPermissionHelper::CheckPermission( details); } -bool WebContentsPermissionHelper::CheckDevicePermission( - blink::PermissionType permission, - const url::Origin& origin, - const base::Value* device, - content::RenderFrameHost* render_frame_host) const { - auto* permission_manager = static_cast( - web_contents_->GetBrowserContext()->GetPermissionControllerDelegate()); - return permission_manager->CheckDevicePermission(permission, origin, device, - render_frame_host); -} - -void WebContentsPermissionHelper::GrantDevicePermission( - blink::PermissionType permission, - const url::Origin& origin, - const base::Value* device, - content::RenderFrameHost* render_frame_host) const { - auto* permission_manager = static_cast( - web_contents_->GetBrowserContext()->GetPermissionControllerDelegate()); - permission_manager->GrantDevicePermission(permission, origin, device, - render_frame_host); -} - -void WebContentsPermissionHelper::RevokeDevicePermission( - blink::PermissionType permission, - const url::Origin& origin, - const base::Value* device, - content::RenderFrameHost* render_frame_host) const { - auto* permission_manager = static_cast( - web_contents_->GetBrowserContext()->GetPermissionControllerDelegate()); - permission_manager->RevokeDevicePermission(permission, origin, device, - render_frame_host); -} - void WebContentsPermissionHelper::RequestFullscreenPermission( base::OnceCallback callback) { RequestPermission( @@ -197,59 +164,6 @@ bool WebContentsPermissionHelper::CheckSerialAccessPermission( static_cast(PermissionType::SERIAL), &details); } -bool WebContentsPermissionHelper::CheckSerialPortPermission( - const url::Origin& origin, - base::Value device, - content::RenderFrameHost* render_frame_host) const { - return CheckDevicePermission( - static_cast(PermissionType::SERIAL), origin, - &device, render_frame_host); -} - -void WebContentsPermissionHelper::GrantSerialPortPermission( - const url::Origin& origin, - base::Value device, - content::RenderFrameHost* render_frame_host) const { - return GrantDevicePermission( - static_cast(PermissionType::SERIAL), origin, - &device, render_frame_host); -} - -bool WebContentsPermissionHelper::CheckHIDAccessPermission( - const url::Origin& embedding_origin) const { - base::DictionaryValue details; - details.SetString("securityOrigin", embedding_origin.GetURL().spec()); - return CheckPermission( - static_cast(PermissionType::HID), &details); -} - -bool WebContentsPermissionHelper::CheckHIDDevicePermission( - const url::Origin& origin, - base::Value device, - content::RenderFrameHost* render_frame_host) const { - return CheckDevicePermission( - static_cast(PermissionType::HID), origin, &device, - render_frame_host); -} - -void WebContentsPermissionHelper::GrantHIDDevicePermission( - const url::Origin& origin, - base::Value device, - content::RenderFrameHost* render_frame_host) const { - return GrantDevicePermission( - static_cast(PermissionType::HID), origin, &device, - render_frame_host); -} - -void WebContentsPermissionHelper::RevokeHIDDevicePermission( - const url::Origin& origin, - base::Value device, - content::RenderFrameHost* render_frame_host) const { - return RevokeDevicePermission( - static_cast(PermissionType::HID), origin, &device, - render_frame_host); -} - WEB_CONTENTS_USER_DATA_KEY_IMPL(WebContentsPermissionHelper); } // namespace electron diff --git a/shell/browser/web_contents_permission_helper.h b/shell/browser/web_contents_permission_helper.h index 847093d559950..cfd4fc4600dcc 100644 --- a/shell/browser/web_contents_permission_helper.h +++ b/shell/browser/web_contents_permission_helper.h @@ -51,27 +51,6 @@ class WebContentsPermissionHelper bool CheckMediaAccessPermission(const GURL& security_origin, blink::mojom::MediaStreamType type) const; bool CheckSerialAccessPermission(const url::Origin& embedding_origin) const; - bool CheckSerialPortPermission( - const url::Origin& origin, - base::Value device, - content::RenderFrameHost* render_frame_host) const; - void GrantSerialPortPermission( - const url::Origin& origin, - base::Value device, - content::RenderFrameHost* render_frame_host) const; - bool CheckHIDAccessPermission(const url::Origin& embedding_origin) const; - bool CheckHIDDevicePermission( - const url::Origin& origin, - base::Value device, - content::RenderFrameHost* render_frame_host) const; - void GrantHIDDevicePermission( - const url::Origin& origin, - base::Value device, - content::RenderFrameHost* render_frame_host) const; - void RevokeHIDDevicePermission( - const url::Origin& origin, - base::Value device, - content::RenderFrameHost* render_frame_host) const; private: explicit WebContentsPermissionHelper(content::WebContents* web_contents); @@ -85,22 +64,6 @@ class WebContentsPermissionHelper bool CheckPermission(blink::PermissionType permission, const base::DictionaryValue* details) const; - bool CheckDevicePermission(blink::PermissionType permission, - const url::Origin& origin, - const base::Value* device, - content::RenderFrameHost* render_frame_host) const; - - void GrantDevicePermission(blink::PermissionType permission, - const url::Origin& origin, - const base::Value* device, - content::RenderFrameHost* render_frame_host) const; - - void RevokeDevicePermission( - blink::PermissionType permission, - const url::Origin& origin, - const base::Value* device, - content::RenderFrameHost* render_frame_host) const; - // TODO(clavin): refactor to use the WebContents provided by the // WebContentsUserData base class instead of storing a duplicate ref content::WebContents* web_contents_; diff --git a/shell/common/v8_value_converter.cc b/shell/common/v8_value_converter.cc index a46c4fb1a4b35..a299a8f4ea5b3 100644 --- a/shell/common/v8_value_converter.cc +++ b/shell/common/v8_value_converter.cc @@ -394,7 +394,7 @@ std::unique_ptr V8ValueConverter::FromV8Array( scope = std::make_unique(val->GetCreationContextChecked()); - auto result = std::make_unique(); + std::unique_ptr result(new base::ListValue()); // Only fields with integer keys are carried over to the ListValue. for (uint32_t i = 0; i < val->Length(); ++i) { @@ -409,18 +409,19 @@ std::unique_ptr V8ValueConverter::FromV8Array( if (!val->HasRealIndexedProperty(isolate->GetCurrentContext(), i) .FromMaybe(false)) { - result->Append(std::make_unique()); + result->Append(base::Value()); continue; } std::unique_ptr child = FromV8ValueImpl(state, child_v8, isolate); - if (child) - result->Append(std::move(child)); - else + if (child) { + result->Append(base::Value::FromUniquePtrValue(std::move(child))); + } else { // JSON.stringify puts null in places where values don't serialize, for // example undefined and functions. Emulate that behavior. - result->Append(std::make_unique()); + result->Append(base::Value()); + } } return std::move(result); } diff --git a/spec/package.json b/spec/package.json index 5102db8eab7c5..38ccc292934a1 100644 --- a/spec/package.json +++ b/spec/package.json @@ -11,7 +11,7 @@ "chai": "^4.2.0", "chai-as-promised": "^7.1.1", "coffeescript": "^2.4.1", - "dbus-native": "github:jkleinsc/dbus-native#master", + "dbus-native": "github:nornagon/dbus-native#master", "dirty-chai": "^2.0.1", "graceful-fs": "^4.1.15", "is-valid-window": "0.0.5", @@ -32,6 +32,6 @@ "mocha-appveyor-reporter": "^0.4.2" }, "resolutions": { - "nan": "nodejs/nan#16fa32231e2ccd89d2804b3f765319128b20c4ac" + "nan": "github:jkleinsc/nan#remove_accessor_signature" } } diff --git a/spec/yarn.lock b/spec/yarn.lock index bc0113391a384..3bb7e4d164a92 100644 --- a/spec/yarn.lock +++ b/spec/yarn.lock @@ -12,9 +12,10 @@ resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== -"abstract-socket@github:saghul/node-abstractsocket#35b1b1491fabc04899bde5be3428abf5cf9cd528": - version "2.1.0" - resolved "https://codeload.github.com/saghul/node-abstractsocket/tar.gz/35b1b1491fabc04899bde5be3428abf5cf9cd528" +abstract-socket@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/abstract-socket/-/abstract-socket-2.1.1.tgz#243a7e6e6ff65bb9eab16a22fa90699b91e528f7" + integrity sha512-YZJizsvS1aBua5Gd01woe4zuyYBGgSMeqDOB6/ChwdTI904KP6QGtJswXl4hcqWxbz86hQBe++HWV0hF1aGUtA== dependencies: bindings "^1.2.1" nan "^2.12.1" @@ -212,9 +213,9 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -"dbus-native@github:jkleinsc/dbus-native#master": +"dbus-native@github:nornagon/dbus-native#master": version "0.4.0" - resolved "https://codeload.github.com/jkleinsc/dbus-native/tar.gz/bb7cba24533fac70f81b92f8357211a84f6e0c1f" + resolved "https://codeload.github.com/nornagon/dbus-native/tar.gz/b90ed62d0b5cb93909173c3e0551d9bff0602a90" dependencies: "@nornagon/put" "0.0.8" event-stream "^4.0.0" @@ -224,7 +225,7 @@ dashdash@^1.12.0: safe-buffer "^5.1.1" xml2js "^0.4.17" optionalDependencies: - abstract-socket "github:saghul/node-abstractsocket#35b1b1491fabc04899bde5be3428abf5cf9cd528" + abstract-socket "^2.0.0" debug@2.6.9, debug@^2.2.0: version "2.6.9" @@ -685,9 +686,9 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -nan@2.x, nan@^2.12.1, nan@nodejs/nan#16fa32231e2ccd89d2804b3f765319128b20c4ac: - version "2.15.0" - resolved "https://codeload.github.com/nodejs/nan/tar.gz/16fa32231e2ccd89d2804b3f765319128b20c4ac" +nan@2.x, nan@^2.12.1, "nan@github:jkleinsc/nan#remove_accessor_signature": + version "2.16.0" + resolved "https://codeload.github.com/jkleinsc/nan/tar.gz/6a2f95a6a2209d8aa7542fb18099fd808a802059" oauth-sign@~0.9.0: version "0.9.0"