Browse Source

chore: bump chromium to 87.0.4276.0 (11-x-y) (#25488)

* chore: bump chromium in DEPS to 87.0.4265.1

* chore: bump chromium in DEPS to 87.0.4266.2

* chore: bump chromium in DEPS to 87.0.4267.1

* update patches

* chore: bump chromium in DEPS to 87.0.4270.0

* Update patches

* Move content::WebPreferences struct to Blink

https://chromium-review.googlesource.com/c/chromium/src/+/2397670
(cherry picked from commit 5c98c5ebf40aec920583399f616238048bbe736b)

* viz: Rename RenderPass to CompositorRenderPass (and related types).

https://chromium-review.googlesource.com/c/chromium/src/+/2380730
(cherry picked from commit ae999b29c1d8a64cef777ca47423066f93d07bf0)

* 2320268: Migrate DragHostMsg_StartDragging to Mojo

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2320268
(cherry picked from commit 4e835d505d6ae5759e7a859220f17e6369420aed)

* Make FileURLLoaderFactory always owned by its |receivers_|.

https://chromium-review.googlesource.com/c/chromium/src/+/2337411
(cherry picked from commit 284abad17d9897d3bbffe4f47481daf467d35f41)

* fix: add a patch to remove deprecated factory

(cherry picked from commit 98c96168297284e5db10f32d2ecd06154af2adf9)
Co-Authored-By: Robo <[email protected]>

* fixup patch

(cherry picked from commit 98c96168297284e5db10f32d2ecd06154af2adf9)
Co-Authored-By: Robo <[email protected]>

* Add MIME sniffer overloads that take base::StringPieces

https://chromium-review.googlesource.com/c/chromium/src/+/2382896
(cherry picked from commit 211fd4f8f0081406da95fa81d501c42cb76c0c2d)

* chore: implement GetSurveyAPIKey

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2362182
(cherry picked from commit 6c539bc6fcf6993d2e8b6e86c935530cbb503f11)

* 2415752: Reland "Reland "OOR-CORS: Remove BlinkCORS supporting code outside Blink""

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2415752
(cherry picked from commit b67757d77da5f7884b445161acc863fe90821992)

* Make FileURLLoaderFactory always owned by its |receivers_|.

https://chromium-review.googlesource.com/c/chromium/src/+/2337411
(cherry picked from commit 507eb0965f874231f430a3100a7c8c03b747998f)

* fixup! Make FileURLLoaderFactory always owned by its |receivers_|.

(cherry picked from commit e19400b4e2916e8dd787254f963c67fc96aa8882)

* 2418471: PDF Viewer update: Add missing aria-labels to various buttons.

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

* chore: bump chromium in DEPS to 87.0.4271.0

* Refactor WebContentSettingsClient to dedupe AllowXYZ methods

https://chromium-review.googlesource.com/c/chromium/src/+/2353552
(cherry picked from commit f1a5414372bc86d3a12865c2b312253ba3c1fa1f)

* 2402123: Use end date when deleting http auth cache

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2402123
(cherry picked from commit d00971d0cbcdd8daa165718e09f973307fc53668)

* [printing] Move PrintHostMsg_PreviewIds to print.mojom

https://chromium-review.googlesource.com/c/chromium/src/+/2379455
(cherry picked from commit e212297da9f59873d56e561f28e7a4f3ed88c73e)

* update patches

* 2401303: Move content/browser/frame_host/* over to content/browser/renderer_host/

https://chromium-review.googlesource.com/c/chromium/src/+/2401303
(cherry picked from commit bcffa8aeabf808a7e1515f0a504cb0c971bc7875)

* Introduce NonNetworkURLLoaderFactoryBase class.

https://chromium-review.googlesource.com/c/chromium/src/+/2357559
(cherry picked from commit 33e2e12114aff38409fa5e1908f7be2f11705971)

* fix: add a patch to remove deprecated factory

(cherry picked from commit 98c96168297284e5db10f32d2ecd06154af2adf9)

* chore: non_network_url_loader_factory_base was moved

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2357431
(cherry picked from commit a1a8878402f791101c9c22254f3804f6de14b72c)

* chore: replace CreateWebUIURLLoader with CreateWebUIURLLoaderFactory

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2358309
(cherry picked from commit 40bfaa5ea429aaceeb397314239fc4fb5c605c63)

* 2346803: Study whether blocking of requests via webRequest is fingerprintable

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

* lint cleanup

* chore: bump chromium in DEPS to 87.0.4272.0

* update patches

* 2387901: Accessing C++ enums in Java for WebBluetooth

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

* chore: bump chromium in DEPS to 87.0.4273.0

* Update patches

(cherry picked from commit b389d4adca71e268c390c41370e87033b69c649c)

* chore: bump chromium in DEPS to 87.0.4274.0

* chore: bump chromium in DEPS to 87.0.4275.0

* chore: bump chromium in DEPS to 87.0.4276.0

* update patches

* 2418443: Explicit use of deprecated global sources assignment filter

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

* fixup 2418443: Explicit use of deprecated global sources assignment filter

* Use 87.0.4274.2 for now

* 2401847: Cache Storage Permissions on ContentSettingsClientImpl

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

* 2418568: Remove ConvertPointToPixel() methods.

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

* 2419388: Rename Button methods to be suitable for builders and properties.

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

* [XProto] Remove usage of all Xlib headers

https: //chromium-review.googlesource.com/c/chromium/src/+/2392140
Co-Authored-By: Robo <[email protected]>

* service_manager::kCrashDumpSignal -> kCrashDumpSignal

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2417073
(cherry picked from commit 7d9d2a172f50e12830a2b8fbfbb2fe344756c377)

* gfx::ConvertPointToPixel -> gfx::ConvertPointToPixels

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2418568
(cherry picked from commit a0bf07570409f84a3b7fa9d12bddd8c1805f43c5)

* Fixup [XProto] Remove usage of all Xlib headers

* Set appid on Pip windows.

https: //chromium-review.googlesource.com/c/chromium/src/+/2388274
Co-Authored-By: Robo <[email protected]>

* chore: update node patches for common.gypi

Co-Authored-By: Samuel Attard <[email protected]>

* Try using lower number of processes for linux

* fixup call to diagnose_goma_log.py

* Use larger machines on linux to work around goma issue

* Don't fail on goma stats

* don't exit immediately

* turn off pipefail

* always return true

Co-authored-by: John Kleinschmidt <[email protected]>
Co-authored-by: deepak1556 <[email protected]>
Co-authored-by: Samuel Attard <[email protected]>
Co-authored-by: Andy Locascio <[email protected]>
Co-authored-by: Samuel Attard <[email protected]>
Electron Bot 4 years ago
parent
commit
c157521bd0
100 changed files with 863 additions and 755 deletions
  1. 8 2
      .circleci/config.yml
  2. 3 1
      BUILD.gn
  3. 1 1
      DEPS
  4. 4 0
      electron_strings.grdp
  5. 1 1
      patches/chromium/.patches
  6. 8 8
      patches/chromium/add_didinstallconditionalfeatures.patch
  7. 10 10
      patches/chromium/add_trustedauthclient_to_urlloaderfactory.patch
  8. 0 34
      patches/chromium/allow_nested_error_trackers.patch
  9. 5 5
      patches/chromium/blink_local_frame.patch
  10. 6 6
      patches/chromium/blink_world_context.patch
  11. 3 3
      patches/chromium/breakpad_treat_node_processes_as_browser_processes.patch
  12. 1 1
      patches/chromium/build_add_electron_tracing_category.patch
  13. 2 2
      patches/chromium/build_gn.patch
  14. 27 27
      patches/chromium/can_create_window.patch
  15. 3 3
      patches/chromium/chore_use_electron_resources_not_chrome_for_spellchecker.patch
  16. 1 1
      patches/chromium/command-ismediakey.patch
  17. 2 2
      patches/chromium/content_browser_main_loop.patch
  18. 5 5
      patches/chromium/crash_allow_disabling_compression_on_linux.patch
  19. 2 2
      patches/chromium/crash_allow_setting_more_options.patch
  20. 8 8
      patches/chromium/dcheck.patch
  21. 10 10
      patches/chromium/delay_lock_the_protocol_scheme_registry.patch
  22. 24 24
      patches/chromium/disable_color_correct_rendering.patch
  23. 2 2
      patches/chromium/disable_compositor_recycling.patch
  24. 6 6
      patches/chromium/disable_hidden.patch
  25. 8 8
      patches/chromium/expose_setuseragent_on_networkcontext.patch
  26. 2 2
      patches/chromium/feat_add_set_theme_source_to_allow_apps_to.patch
  27. 2 2
      patches/chromium/feat_add_streaming-protocol_registry_to_multibuffer_data_source.patch
  28. 1 1
      patches/chromium/feat_add_support_for_overriding_the_base_spellchecker_download_url.patch
  29. 26 26
      patches/chromium/feat_allow_disabling_blink_scheduler_throttling_per_renderview.patch
  30. 3 3
      patches/chromium/feat_allow_embedders_to_add_observers_on_created_hunspell.patch
  31. 4 4
      patches/chromium/feat_enable_offscreen_rendering_with_viz_compositor.patch
  32. 14 5
      patches/chromium/fix_disable_usage_of_setapplicationisdaemon_and.patch
  33. 7 7
      patches/chromium/fix_patch_out_profile_refs_in_accessibility_ui.patch
  34. 2 2
      patches/chromium/fix_route_mouse_event_navigations_through_the_web_contents_delegate.patch
  35. 1 1
      patches/chromium/fix_swap_global_proxies_before_initializing_the_windows_proxies.patch
  36. 27 27
      patches/chromium/frame_host_manager.patch
  37. 1 1
      patches/chromium/gin_enable_disable_v8_platform.patch
  38. 6 6
      patches/chromium/gpu_notify_when_dxdiag_request_fails.patch
  39. 2 2
      patches/chromium/gritsettings_resource_ids.patch
  40. 1 1
      patches/chromium/mas-audiodeviceduck.patch
  41. 10 10
      patches/chromium/mas_disable_remote_accessibility.patch
  42. 3 3
      patches/chromium/mas_disable_remote_layer.patch
  43. 37 37
      patches/chromium/mas_no_private_api.patch
  44. 12 12
      patches/chromium/network_service_allow_remote_certificate_verification_logic.patch
  45. 5 5
      patches/chromium/notification_provenance.patch
  46. 31 2
      patches/chromium/picture-in-picture.patch
  47. 114 102
      patches/chromium/printing.patch
  48. 5 5
      patches/chromium/put_back_deleted_colors_for_autofill.patch
  49. 9 9
      patches/chromium/refactor_expose_cursor_changes_to_the_webcontentsobserver.patch
  50. 47 0
      patches/chromium/remove_deprecated_factory_parameter_for_worker_resource_loader.patch
  51. 6 7
      patches/chromium/render_widget_host_view_base.patch
  52. 3 3
      patches/chromium/resource_file_conflict.patch
  53. 8 8
      patches/chromium/revert_remove_contentrendererclient_shouldfork.patch
  54. 2 2
      patches/chromium/scroll_bounce_flag.patch
  55. 5 5
      patches/chromium/support_mixed_sandbox_with_zygote.patch
  56. 3 2
      patches/chromium/use_electron_resources_in_pdf_util.patch
  57. 6 6
      patches/chromium/web_contents.patch
  58. 2 2
      patches/chromium/webview_cross_drag.patch
  59. 9 9
      patches/chromium/worker_context_will_destroy.patch
  60. 10 10
      patches/chromium/worker_feat_add_hook_to_notify_script_ready.patch
  61. 1 0
      patches/node/.patches
  62. 29 0
      patches/node/fix_add_v8_enable_reverse_jsargs_defines_in_common_gypi.patch
  63. 3 3
      patches/v8/add_realloc.patch
  64. 4 4
      patches/v8/build_gn.patch
  65. 11 11
      patches/v8/chore_add_v8_apple_silicon_patches.patch
  66. 4 4
      patches/v8/dcheck.patch
  67. 3 3
      patches/v8/do_not_export_private_v8_symbols_on_windows.patch
  68. 2 2
      patches/v8/expose_mksnapshot.patch
  69. 3 3
      patches/v8/fix_use_proper_page_size_for_mac_arm64.patch
  70. 3 3
      patches/v8/revert_cleanup_switch_offset_of_to_offsetof_where_possible.patch
  71. 1 1
      shell/browser/api/electron_api_session.cc
  72. 2 2
      shell/browser/api/electron_api_web_contents.cc
  73. 2 2
      shell/browser/api/electron_api_web_contents_impl.cc
  74. 62 24
      shell/browser/electron_browser_client.cc
  75. 4 1
      shell/browser/electron_browser_client.h
  76. 2 2
      shell/browser/electron_browser_context.cc
  77. 3 3
      shell/browser/font_defaults.cc
  78. 5 3
      shell/browser/font_defaults.h
  79. 10 8
      shell/browser/lib/bluetooth_chooser.cc
  80. 5 6
      shell/browser/native_window_views.cc
  81. 4 3
      shell/browser/net/asar/asar_url_loader.cc
  82. 19 7
      shell/browser/net/electron_url_loader_factory.cc
  83. 12 10
      shell/browser/net/electron_url_loader_factory.h
  84. 15 33
      shell/browser/net/proxying_url_loader_factory.cc
  85. 0 2
      shell/browser/net/proxying_url_loader_factory.h
  86. 2 1
      shell/browser/net/proxying_websocket.cc
  87. 7 5
      shell/browser/osr/osr_render_widget_host_view.cc
  88. 1 1
      shell/browser/osr/osr_web_contents_view.cc
  89. 1 1
      shell/browser/osr/osr_web_contents_view.h
  90. 6 6
      shell/browser/printing/print_preview_message_handler.cc
  91. 6 7
      shell/browser/printing/print_preview_message_handler.h
  92. 19 13
      shell/browser/protocol_registry.cc
  93. 0 1
      shell/browser/ui/gtk/menu_util.cc
  94. 8 3
      shell/browser/ui/inspectable_web_contents.cc
  95. 1 0
      shell/browser/ui/inspectable_web_contents.h
  96. 2 2
      shell/browser/ui/views/submenu_button.cc
  97. 7 36
      shell/browser/ui/x/x_window_utils.cc
  98. 14 13
      shell/browser/web_contents_preferences.cc
  99. 1 1
      shell/browser/web_contents_preferences.h
  100. 3 24
      shell/renderer/content_settings_observer.cc

+ 8 - 2
.circleci/config.yml

@@ -764,14 +764,20 @@ step-setup-linux-for-headless-testing: &step-setup-linux-for-headless-testing
 
 step-show-sccache-stats: &step-show-sccache-stats
   run:
+    shell: /bin/bash
     name: Check sccache/goma stats after build
     command: |
       if [ "$SCCACHE_PATH" != "" ]; then
         $SCCACHE_PATH -s
       fi
       if [ "$USE_GOMA" == "true" ]; then
+        set +e
+        set +o pipefail
         $LOCAL_GOMA_DIR/goma_ctl.py stat
+        $LOCAL_GOMA_DIR/diagnose_goma_log.py
+        true
       fi
+    when: always
 
 step-mksnapshot-build: &step-mksnapshot-build
   run:
@@ -1799,7 +1805,7 @@ jobs:
 
   # Layer 2: Builds.
   linux-x64-testing:
-    <<: *machine-linux-xlarge
+    <<: *machine-linux-2xlarge
     environment:
       <<: *env-global
       <<: *env-testing-build
@@ -1879,7 +1885,7 @@ jobs:
           checkout: false
 
   linux-ia32-testing:
-    <<: *machine-linux-xlarge
+    <<: *machine-linux-2xlarge
     environment:
       <<: *env-global
       <<: *env-ia32

+ 3 - 1
BUILD.gn

@@ -531,7 +531,9 @@ source_set("electron_lib") {
       ]
     }
     configs += [ ":gio_unix" ]
-    configs += [ "//build/config/linux:x11" ]
+    if (use_x11) {
+      deps += [ "//ui/gfx/x" ]
+    }
     defines += [
       # Disable warnings for g_settings_list_schemas.
       "GLIB_DISABLE_DEPRECATION_WARNINGS",

+ 1 - 1
DEPS

@@ -14,7 +14,7 @@ gclient_gn_args = [
 
 vars = {
   'chromium_version':
-    '87.0.4251.1',
+    '87.0.4274.2',
   'node_version':
     'v12.18.3',
   'nan_version':

+ 4 - 0
electron_strings.grdp

@@ -80,4 +80,8 @@
       Windows Utilities
     </message>
   </if>
+  <message name="IDS_DOWNLOAD_MORE_ACTIONS"
+          desc="Tooltip of a button on the downloads page that shows a menu with actions like 'Open downloads folder' or 'Clear all'">
+    More actions
+</message>
 </grit-part>

+ 1 - 1
patches/chromium/.patches

@@ -33,7 +33,6 @@ mas_disable_remote_layer.patch
 mas_disable_remote_accessibility.patch
 mas_disable_custom_window_frame.patch
 chrome_key_systems.patch
-allow_nested_error_trackers.patch
 add_didinstallconditionalfeatures.patch
 ssl_security_state_tab_helper.patch
 desktop_media_list.patch
@@ -100,3 +99,4 @@ remove_some_deps_that_do_not_work_on_arm64.patch
 fix_check_issecureeventinputenabled_in_constructor_before_setting.patch
 skip_atk_toolchain_check.patch
 worker_feat_add_hook_to_notify_script_ready.patch
+remove_deprecated_factory_parameter_for_worker_resource_loader.patch

+ 8 - 8
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 8ab07f180b0e5d7baaa314cf1121c7182de7cce9..feb76f5278ba11f82c65e298d9772fc8742739a9 100644
+index ae8a3e0613183d67d91081d21f2844e1e6e596e6..2b04c710bab425280727e282ca3d3131b515ee14 100644
 --- a/content/public/renderer/render_frame_observer.h
 +++ b/content/public/renderer/render_frame_observer.h
 @@ -115,6 +115,8 @@ class CONTENT_EXPORT RenderFrameObserver : public IPC::Listener,
@@ -23,10 +23,10 @@ index 8ab07f180b0e5d7baaa314cf1121c7182de7cce9..feb76f5278ba11f82c65e298d9772fc8
                                          int32_t world_id) {}
    virtual void DidClearWindowObject() {}
 diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
-index 2a202b7a21744a4d736831de74cfbf5cbbed22b2..fd2f73901ec6f565033af71f99d531aecab0233f 100644
+index 6073d26739ae07eadcadc9f1a553211fb3161867..c7fa94ee18d094f4674cecf5c5cb746a2ded7ae9 100644
 --- a/content/renderer/render_frame_impl.cc
 +++ b/content/renderer/render_frame_impl.cc
-@@ -4978,6 +4978,12 @@ void RenderFrameImpl::DidCreateScriptContext(v8::Local<v8::Context> context,
+@@ -4948,6 +4948,12 @@ void RenderFrameImpl::DidCreateScriptContext(v8::Local<v8::Context> context,
      observer.DidCreateScriptContext(context, world_id);
  }
  
@@ -40,10 +40,10 @@ index 2a202b7a21744a4d736831de74cfbf5cbbed22b2..fd2f73901ec6f565033af71f99d531ae
                                                 int world_id) {
    for (auto& observer : observers_)
 diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
-index adf5764a4dc452dee870954063950980171bcfd6..a5660ad498e1a9df255f1302bea8144de3eded3f 100644
+index 034d40122eabb738859867acde81e3245c7e2f2d..9208d8f1ae2ed515542dc13b7b7a8cce0b67108b 100644
 --- a/content/renderer/render_frame_impl.h
 +++ b/content/renderer/render_frame_impl.h
-@@ -730,6 +730,8 @@ class CONTENT_EXPORT RenderFrameImpl
+@@ -698,6 +698,8 @@ class CONTENT_EXPORT RenderFrameImpl
    bool ShouldTrackUseCounter(const blink::WebURL& url) override;
    void DidCreateScriptContext(v8::Local<v8::Context> context,
                                int world_id) override;
@@ -53,10 +53,10 @@ index adf5764a4dc452dee870954063950980171bcfd6..a5660ad498e1a9df255f1302bea8144d
                                  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 55fcd230465f4732066188dca62c120b7d875378..97e297d4010c02cdf0af7361a5538e11790746a6 100644
+index 08804afc647cf898d7301ba8c34c6da14d5aa8f2..13ed1e5af2bbd9cdba42c2eb8619e521adf3d8be 100644
 --- a/third_party/blink/public/web/web_local_frame_client.h
 +++ b/third_party/blink/public/web/web_local_frame_client.h
-@@ -541,6 +541,9 @@ class BLINK_EXPORT WebLocalFrameClient {
+@@ -535,6 +535,9 @@ class BLINK_EXPORT WebLocalFrameClient {
    virtual void DidCreateScriptContext(v8::Local<v8::Context>,
                                        int32_t world_id) {}
  
@@ -67,7 +67,7 @@ index 55fcd230465f4732066188dca62c120b7d875378..97e297d4010c02cdf0af7361a5538e11
    virtual void WillReleaseScriptContext(v8::Local<v8::Context>,
                                          int32_t world_id) {}
 diff --git a/third_party/blink/renderer/bindings/core/v8/local_window_proxy.cc b/third_party/blink/renderer/bindings/core/v8/local_window_proxy.cc
-index 81287dbc57a55f02945a66801ea62b0e0dfe262c..8d084e236d4f0d142a2414c55a8b8aab51f41622 100644
+index be4c8053f2bc5e2ad9da6a038a1a70edb37656c9..953e436fc09e9afa2189ad2ebdfdb085cabe51a7 100644
 --- a/third_party/blink/renderer/bindings/core/v8/local_window_proxy.cc
 +++ b/third_party/blink/renderer/bindings/core/v8/local_window_proxy.cc
 @@ -203,6 +203,7 @@ void LocalWindowProxy::Initialize() {

+ 10 - 10
patches/chromium/add_trustedauthclient_to_urlloaderfactory.patch

@@ -10,7 +10,7 @@ WebContents, and cancels the authentication if there's no WebContents
 available, which there isn't in the case of the 'net' module.
 
 diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom
-index 113006d65c011bacd856c471d93dbff71254f034..d9e327e72ddf86f79387fa3c003e56379f3096a5 100644
+index b4d200164829d0d34c2511a07eb0cc3d046d6fa3..e15635d66859211ac91b5beff36beffd4dfe4807 100644
 --- a/services/network/public/mojom/network_context.mojom
 +++ b/services/network/public/mojom/network_context.mojom
 @@ -214,6 +214,25 @@ struct CTPolicy {
@@ -39,7 +39,7 @@ index 113006d65c011bacd856c471d93dbff71254f034..d9e327e72ddf86f79387fa3c003e5637
  interface CertVerifierClient {
    Verify(
      int32 default_error,
-@@ -659,6 +678,8 @@ struct URLLoaderFactoryParams {
+@@ -652,6 +671,8 @@ struct URLLoaderFactoryParams {
    // impact because of the extra process hops, so use should be minimized.
    pending_remote<TrustedURLLoaderHeaderClient>? header_client;
  
@@ -49,10 +49,10 @@ index 113006d65c011bacd856c471d93dbff71254f034..d9e327e72ddf86f79387fa3c003e5637
    // the per-context allow patterns that is managed via NetworkContext
    // interface. This still respects the per-context block lists.
 diff --git a/services/network/url_loader.cc b/services/network/url_loader.cc
-index 2527d28a4af8116e410f286f8511b778d6db0f5b..9ded831c921c1f7e3eabac4549a70570c13bd5c2 100644
+index 7e2819f3748ee89698a2d64987f1fd167bdef1f5..6743a8c99d4ccd590ba8f7c459ccbdd80f17b661 100644
 --- a/services/network/url_loader.cc
 +++ b/services/network/url_loader.cc
-@@ -483,6 +483,7 @@ URLLoader::URLLoader(
+@@ -492,6 +492,7 @@ URLLoader::URLLoader(
      base::WeakPtr<KeepaliveStatisticsRecorder> keepalive_statistics_recorder,
      base::WeakPtr<NetworkUsageAccumulator> network_usage_accumulator,
      mojom::TrustedURLLoaderHeaderClient* url_loader_header_client,
@@ -60,7 +60,7 @@ index 2527d28a4af8116e410f286f8511b778d6db0f5b..9ded831c921c1f7e3eabac4549a70570
      mojom::OriginPolicyManager* origin_policy_manager,
      std::unique_ptr<TrustTokenRequestHelperFactory> trust_token_helper_factory,
      mojo::PendingRemote<mojom::CookieAccessObserver> cookie_observer)
-@@ -546,6 +547,11 @@ URLLoader::URLLoader(
+@@ -554,6 +555,11 @@ URLLoader::URLLoader(
      header_client_.set_disconnect_handler(
          base::BindOnce(&URLLoader::OnMojoDisconnect, base::Unretained(this)));
    }
@@ -72,7 +72,7 @@ index 2527d28a4af8116e410f286f8511b778d6db0f5b..9ded831c921c1f7e3eabac4549a70570
    if (want_raw_headers_) {
      options_ |= mojom::kURLLoadOptionSendSSLInfoWithResponse |
                  mojom::kURLLoadOptionSendSSLInfoForCertificateError;
-@@ -1119,7 +1125,7 @@ void URLLoader::OnAuthRequired(net::URLRequest* url_request,
+@@ -1127,7 +1133,7 @@ void URLLoader::OnAuthRequired(net::URLRequest* url_request,
      // |this| may have been deleted.
      return;
    }
@@ -81,7 +81,7 @@ index 2527d28a4af8116e410f286f8511b778d6db0f5b..9ded831c921c1f7e3eabac4549a70570
      OnAuthCredentials(base::nullopt);
      return;
    }
-@@ -1135,11 +1141,20 @@ void URLLoader::OnAuthRequired(net::URLRequest* url_request,
+@@ -1143,11 +1149,20 @@ void URLLoader::OnAuthRequired(net::URLRequest* url_request,
    if (url_request->response_headers())
      head->headers = url_request->response_headers();
    head->auth_challenge_info = auth_info;
@@ -108,7 +108,7 @@ index 2527d28a4af8116e410f286f8511b778d6db0f5b..9ded831c921c1f7e3eabac4549a70570
    auth_challenge_responder_receiver_.set_disconnect_handler(
        base::BindOnce(&URLLoader::DeleteSelf, base::Unretained(this)));
 diff --git a/services/network/url_loader.h b/services/network/url_loader.h
-index a624b8c43f49a7db975d8deda753b18583db5d72..cce8d7e0b8847528715aca4704db5194829c5bbc 100644
+index ed6dfca8e0afe6697759e54d78f65d896be24347..619d025c1c0f192c7d3f7107f5aab7791b9843b4 100644
 --- a/services/network/url_loader.h
 +++ b/services/network/url_loader.h
 @@ -118,6 +118,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) URLLoader
@@ -148,10 +148,10 @@ index 75ae8488efa7e5acfda0b21029657b525fa95f86..5dce71ee5efc97f9f63d0b5f236dccdf
        std::move(cookie_observer));
  
 diff --git a/services/network/url_loader_factory.h b/services/network/url_loader_factory.h
-index 8b29b67a5b0663778df3169e09bf818e6bbcec3f..e504fa3d41066907a3fbc41e69daac968415dfa6 100644
+index 182b26816da9e82d83c47c3c73ecfdcf3003b967..903a3ad083201ed85e82169698041152278697fa 100644
 --- a/services/network/url_loader_factory.h
 +++ b/services/network/url_loader_factory.h
-@@ -75,6 +75,7 @@ class URLLoaderFactory : public mojom::URLLoaderFactory {
+@@ -74,6 +74,7 @@ class URLLoaderFactory : public mojom::URLLoaderFactory {
    scoped_refptr<ResourceSchedulerClient> resource_scheduler_client_;
    mojo::Remote<mojom::TrustedURLLoaderHeaderClient> header_client_;
    mojo::Remote<mojom::CrossOriginEmbedderPolicyReporter> coep_reporter_;

+ 0 - 34
patches/chromium/allow_nested_error_trackers.patch

@@ -1,34 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Charles Kerr <[email protected]>
-Date: Thu, 20 Sep 2018 17:50:17 -0700
-Subject: allow_nested_error_trackers.patch
-
-Only one X11ErrorTracker should exist at a time, but upstream has a bug
-where two can exist if running in headless mode --
-  ui::(anonymous namespace)::SupportsEWMH() [inner tracker is created]
-  ui::WmSupportsHint()
-  ui::IsX11WindowFullScreen()
-  ui::ScreensaverWindowFinder::IsScreensaverWindow()
-  ui::ScreensaverWindowFinder::ShouldStopIterating()
-  ui::EnumerateTopLevelWindows()
-  ui::ScreensaverWindowFinder::ScreensaverWindowExists() [outer tracker created]
-  ui::CheckIdleStateIsLocked()
-  ui::CalculateIdleState()
-Removal of either tracker could have side-effects in some code paths,
-so this is probably better handled upstream. This patch tries to do the
-least harm in the interim by removing the check that prevents more than
-one tracker from existing at a time.
-
-diff --git a/ui/gfx/x/x11_error_tracker.cc b/ui/gfx/x/x11_error_tracker.cc
-index 2e6addccf11ae33de6b4bb1de0a921deff36dd9d..59742930aa1eb488568068a3a4f1c4127a1ca18f 100644
---- a/ui/gfx/x/x11_error_tracker.cc
-+++ b/ui/gfx/x/x11_error_tracker.cc
-@@ -25,7 +25,7 @@ namespace gfx {
- X11ErrorTracker::X11ErrorTracker() {
-   // This is a non-exhaustive check for incorrect usage. It disallows nested
-   // X11ErrorTracker instances on the same thread.
--  DCHECK(g_handler == nullptr);
-+  // DCHECK(g_handler == nullptr);
-   g_handler = this;
-   XSync(GetXDisplay(), x11::False);
-   old_handler_ = reinterpret_cast<void*>(XSetErrorHandler(X11ErrorHandler));

+ 5 - 5
patches/chromium/blink_local_frame.patch

@@ -14,10 +14,10 @@ when there is code doing that.
 This patch reverts the change to fix the crash in Electron.
 
 diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc
-index ec267e98e19486163c70b1af240a4b638f554dc6..a33d19e719989584deb2c95f9fd8257e2b03b1f8 100644
+index e35eb49ce8ecccb2d7231bd3d6bd24bcc0a2fd9e..4db6561c0885ab394b17189aa4ba1eeb4ddecf57 100644
 --- a/third_party/blink/renderer/core/frame/local_frame.cc
 +++ b/third_party/blink/renderer/core/frame/local_frame.cc
-@@ -571,10 +571,6 @@ void LocalFrame::DetachImpl(FrameDetachType type) {
+@@ -582,10 +582,6 @@ void LocalFrame::DetachImpl(FrameDetachType type) {
    }
    DCHECK(!view_ || !view_->IsAttached());
  
@@ -28,7 +28,7 @@ index ec267e98e19486163c70b1af240a4b638f554dc6..a33d19e719989584deb2c95f9fd8257e
    if (!Client())
      return;
  
-@@ -591,6 +587,10 @@ void LocalFrame::DetachImpl(FrameDetachType type) {
+@@ -602,6 +598,10 @@ void LocalFrame::DetachImpl(FrameDetachType type) {
    // Notify ScriptController that the frame is closing, since its cleanup ends
    // up calling back to LocalFrameClient via WindowProxy.
    GetScriptController().ClearForClose();
@@ -37,5 +37,5 @@ index ec267e98e19486163c70b1af240a4b638f554dc6..a33d19e719989584deb2c95f9fd8257e
 +  // - Document::Shutdown() can dispose plugins which can run script.
 +  ScriptForbiddenScope forbid_script;
  
-   DCHECK(!view_->IsAttached());
-   SetView(nullptr);
+   // TODO(crbug.com/729196): Trace why LocalFrameView::DetachFromLayout crashes.
+   CHECK(!view_->IsAttached());

+ 6 - 6
patches/chromium/blink_world_context.patch

@@ -7,10 +7,10 @@ This exposes a method for obtaining a reference to an isolated world, which is
 otherwise not available in the Blink API.
 
 diff --git a/third_party/blink/public/web/web_local_frame.h b/third_party/blink/public/web/web_local_frame.h
-index 345860ae12ba4bc3ce68373ab2cc44f4ddc40767..21c80483521f31b8860cd41504c5796eee12875e 100644
+index fa36160318d21df55bbd31b3e5417433aad8cdc1..146d160cbee8da41731c26891ea04d703d337885 100644
 --- a/third_party/blink/public/web/web_local_frame.h
 +++ b/third_party/blink/public/web/web_local_frame.h
-@@ -356,6 +356,8 @@ class WebLocalFrame : public WebFrame {
+@@ -358,6 +358,8 @@ class WebLocalFrame : public WebFrame {
    // Returns the world ID associated with |script_context|.
    virtual int32_t GetScriptContextWorldId(
        v8::Local<v8::Context> script_context) const = 0;
@@ -20,10 +20,10 @@ index 345860ae12ba4bc3ce68373ab2cc44f4ddc40767..21c80483521f31b8860cd41504c5796e
    // Executes script in the context of the current page and returns the value
    // that the script evaluated to with callback. Script execution can be
 diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
-index 3c9637763e265d6044eaae64d162dcdeda589b6f..26cc86a4924f5e3b9b422b62356b1184f8592b3b 100644
+index 4d3aed3e3db66b669a3a04f91eca2260a9d40d58..0ed99247499a3cfcc424f47bfa4c4c908ac6b3ee 100644
 --- a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
 +++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
-@@ -969,6 +969,13 @@ v8::Local<v8::Object> WebLocalFrameImpl::GlobalProxy() const {
+@@ -980,6 +980,13 @@ v8::Local<v8::Object> WebLocalFrameImpl::GlobalProxy() const {
    return MainWorldScriptContext()->Global();
  }
  
@@ -38,10 +38,10 @@ index 3c9637763e265d6044eaae64d162dcdeda589b6f..26cc86a4924f5e3b9b422b62356b1184
    return BindingSecurity::ShouldAllowAccessToFrame(
        CurrentDOMWindow(V8PerIsolateData::MainThreadIsolate()),
 diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.h b/third_party/blink/renderer/core/frame/web_local_frame_impl.h
-index 2fb039f3be319d47899ce3567ef1d14e74894a52..b6b494a83a69022a1380750fd6e72afb6386f10c 100644
+index 46e977ab9fedbfd58d425fe4bf3b85762517fae4..85e66b66472bf83140d6652eaead2326b4c7c3dc 100644
 --- a/third_party/blink/renderer/core/frame/web_local_frame_impl.h
 +++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.h
-@@ -162,6 +162,8 @@ class CORE_EXPORT WebLocalFrameImpl final
+@@ -163,6 +163,8 @@ class CORE_EXPORT WebLocalFrameImpl final
    v8::Local<v8::Context> MainWorldScriptContext() const override;
    int32_t GetScriptContextWorldId(
        v8::Local<v8::Context> script_context) const override;

+ 3 - 3
patches/chromium/breakpad_treat_node_processes_as_browser_processes.patch

@@ -10,10 +10,10 @@ 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 72ee7e8df3d62eca301b08586f06d51711e941b5..fdd76ee1490e39dbfcd39bbff6686864a5c5af29 100644
+index 1c076672c77d90eb3814b5b269340d2800217868..7d23a5732b47bef04cadc707f58e50b423393605 100644
 --- a/components/crash/core/app/breakpad_linux.cc
 +++ b/components/crash/core/app/breakpad_linux.cc
-@@ -716,8 +716,13 @@ bool CrashDone(const MinidumpDescriptor& minidump,
+@@ -715,8 +715,13 @@ bool CrashDone(const MinidumpDescriptor& minidump,
    log_path[log_path_len] = '\0';
    info.log_filename = log_path;
  #endif
@@ -29,7 +29,7 @@ index 72ee7e8df3d62eca301b08586f06d51711e941b5..fdd76ee1490e39dbfcd39bbff6686864
    info.distro = base::g_linux_distro;
    info.distro_length = my_strlen(base::g_linux_distro);
    info.upload = upload;
-@@ -2023,8 +2028,13 @@ void InitCrashReporter(const std::string& process_type) {
+@@ -2022,8 +2027,13 @@ void InitCrashReporter(const std::string& process_type) {
        process_type == kWebViewSingleProcessType ||
        process_type == kBrowserProcessType ||
  #endif

+ 1 - 1
patches/chromium/build_add_electron_tracing_category.patch

@@ -8,7 +8,7 @@ categories in use are known / declared.  This patch is required for us
 to introduce a new Electron category for Electron-specific tracing.
 
 diff --git a/base/trace_event/builtin_categories.h b/base/trace_event/builtin_categories.h
-index b945977840047dbe0d84fb2b316d2ff5e8dfedb0..70f9e23c5a31e2c1daaac7d55b64deabb780ed93 100644
+index 97830615a4e286e3e50c0ca0f55748e8cf9a35d5..1d04ea7e776a7fcdee3c27c74b81a5f1846bfc42 100644
 --- a/base/trace_event/builtin_categories.h
 +++ b/base/trace_event/builtin_categories.h
 @@ -73,6 +73,7 @@

+ 2 - 2
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 e011502180b5a94bd32bcebb301c91314d12653e..12569e571f52a07ea5e9b104314427df1ccb558f 100644
+index bb656fa19ff32fa407a01f302ea989ffcacc45f8..7b1c24f17c44e60a2274798546cae5b8f1018327 100644
 --- a/build/config/BUILDCONFIG.gn
 +++ b/build/config/BUILDCONFIG.gn
 @@ -123,6 +123,9 @@ if (current_os == "") {
@@ -27,7 +27,7 @@ index e011502180b5a94bd32bcebb301c91314d12653e..12569e571f52a07ea5e9b104314427df
    # 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
-@@ -440,6 +443,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",

+ 27 - 27
patches/chromium/can_create_window.patch

@@ -8,11 +8,11 @@ potentially prevent a window from being created.
 
 TODO(loc): this patch is currently broken.
 
-diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
-index 3936083ceb8371dde6ba486b1cf588a2d05be071..ae074d43e9c1704911ffc3f6f4ce1be65292e636 100644
---- a/content/browser/frame_host/render_frame_host_impl.cc
-+++ b/content/browser/frame_host/render_frame_host_impl.cc
-@@ -4906,6 +4906,7 @@ void RenderFrameHostImpl::CreateNewWindow(
+diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
+index 8da4a2c699b6e5574e04891695cb39e952a04e4e..92e2064577aee673b72ae9cc7716e49d103f59a6 100644
+--- a/content/browser/renderer_host/render_frame_host_impl.cc
++++ b/content/browser/renderer_host/render_frame_host_impl.cc
+@@ -4881,6 +4881,7 @@ void RenderFrameHostImpl::CreateNewWindow(
            last_committed_origin_, params->window_container_type,
            params->target_url, params->referrer.To<Referrer>(),
            params->frame_name, params->disposition, *params->features,
@@ -21,10 +21,10 @@ index 3936083ceb8371dde6ba486b1cf588a2d05be071..ae074d43e9c1704911ffc3f6f4ce1be6
            &no_javascript_access);
  
 diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
-index ecc73328f4fa0541ba62b5811b16ffdb7dffda9e..008f03d41669738b250ba99428bfd6d3baed1e85 100644
+index 6ff42afff78f62f37c21ea1d09c796ce16708612..022e4a2aa0442939ef7bd5fde67470c2847f116f 100644
 --- a/content/browser/web_contents/web_contents_impl.cc
 +++ b/content/browser/web_contents/web_contents_impl.cc
-@@ -3442,9 +3442,9 @@ RenderFrameHostDelegate* WebContentsImpl::CreateNewWindow(
+@@ -3695,9 +3695,9 @@ RenderFrameHostDelegate* WebContentsImpl::CreateNewWindow(
    }
  
    if (delegate_) {
@@ -53,7 +53,7 @@ index c969ed9b17b915f713d9b82114c7b637c8fd90df..9530a1936b0a801a4c6152dd53ec5105
  
  // 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 7b19c20596bfa1eff5680192dba7643721e49285..593aaa7d7c9a170b2961a8d2c245c81fe138bd0f 100644
+index 68566f0bf7ac45724fe1fa771d735c8304114f01..0c15d9a28e9b54f7adbe303c341cda42a6cffb73 100644
 --- a/content/public/browser/content_browser_client.cc
 +++ b/content/public/browser/content_browser_client.cc
 @@ -544,6 +544,8 @@ bool ContentBrowserClient::CanCreateWindow(
@@ -66,10 +66,10 @@ index 7b19c20596bfa1eff5680192dba7643721e49285..593aaa7d7c9a170b2961a8d2c245c81f
      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 0229ba39ba7ff66e139df331e6ef519cba1640df..203ae3449f4547d9ba304f8aebb66becbe70d79d 100644
+index 601e19be9da5fe33c8f11b2cd33193973c62a0b1..2b8c354a39677e91d25451044cc06d6343a510f9 100644
 --- a/content/public/browser/content_browser_client.h
 +++ b/content/public/browser/content_browser_client.h
-@@ -150,6 +150,7 @@ class NetworkService;
+@@ -153,6 +153,7 @@ class NetworkService;
  class TrustedURLLoaderHeaderClient;
  }  // namespace mojom
  struct ResourceRequest;
@@ -77,7 +77,7 @@ index 0229ba39ba7ff66e139df331e6ef519cba1640df..203ae3449f4547d9ba304f8aebb66bec
  }  // namespace network
  
  namespace sandbox {
-@@ -870,6 +871,8 @@ class CONTENT_EXPORT ContentBrowserClient {
+@@ -872,6 +873,8 @@ class CONTENT_EXPORT ContentBrowserClient {
        const std::string& frame_name,
        WindowOpenDisposition disposition,
        const blink::mojom::WindowFeatures& features,
@@ -135,18 +135,18 @@ index a10c5caf5a4b7a30b7338c8b10ffa038e13dfd6a..938b6e622b52a05e6b7d626c4824e761
    // typically happens when popups are created.
    virtual void WebContentsCreated(WebContents* source_contents,
 diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
-index 8d1b62918d688c1d6060ed997dc801d9c00c5c30..0bda7168094b09f14a2eaee3840cd3603536b2a9 100644
+index 39794bbcdca8a5a1b3ab6b49493a81371384262c..554e4800766a8ca087ba32dfea9fa1c61bca5cd7 100644
 --- a/content/renderer/render_view_impl.cc
 +++ b/content/renderer/render_view_impl.cc
-@@ -67,6 +67,7 @@
+@@ -65,6 +65,7 @@
  #include "content/renderer/history_serialization.h"
  #include "content/renderer/internal_document_state_data.h"
  #include "content/renderer/loader/request_extra_data.h"
 +#include "content/renderer/loader/web_url_request_util.h"
- #include "content/renderer/media/audio/audio_device_factory.h"
  #include "content/renderer/render_frame_impl.h"
  #include "content/renderer/render_frame_proxy.h"
-@@ -1192,6 +1193,10 @@ WebView* RenderViewImpl::CreateView(
+ #include "content/renderer/render_process.h"
+@@ -635,6 +636,10 @@ WebView* RenderViewImpl::CreateView(
    }
    params->features = ConvertWebWindowFeaturesToMojoWindowFeatures(features);
  
@@ -157,11 +157,11 @@ index 8d1b62918d688c1d6060ed997dc801d9c00c5c30..0bda7168094b09f14a2eaee3840cd360
    // We preserve this information before sending the message since |params| is
    // moved on send.
    bool is_background_tab =
-diff --git a/content/shell/browser/web_test/web_test_content_browser_client.cc b/content/shell/browser/web_test/web_test_content_browser_client.cc
-index c22aeb8e80440061f33271762b373912ef30cc48..5418efe944e0e897adb754f790ba8182c20f87ec 100644
---- a/content/shell/browser/web_test/web_test_content_browser_client.cc
-+++ b/content/shell/browser/web_test/web_test_content_browser_client.cc
-@@ -381,6 +381,8 @@ bool WebTestContentBrowserClient::CanCreateWindow(
+diff --git a/content/web_test/browser/web_test_content_browser_client.cc b/content/web_test/browser/web_test_content_browser_client.cc
+index 53e938ec4b6515cabea5b7da8c5c9e7168f2d2ee..2e20931edeeca271f620128f5abd1ed4ddf75e1e 100644
+--- a/content/web_test/browser/web_test_content_browser_client.cc
++++ b/content/web_test/browser/web_test_content_browser_client.cc
+@@ -377,6 +377,8 @@ bool WebTestContentBrowserClient::CanCreateWindow(
      const std::string& frame_name,
      WindowOpenDisposition disposition,
      const blink::mojom::WindowFeatures& features,
@@ -170,11 +170,11 @@ index c22aeb8e80440061f33271762b373912ef30cc48..5418efe944e0e897adb754f790ba8182
      bool user_gesture,
      bool opener_suppressed,
      bool* no_javascript_access) {
-diff --git a/content/shell/browser/web_test/web_test_content_browser_client.h b/content/shell/browser/web_test/web_test_content_browser_client.h
-index a79ff68cb0a9fa9f65b780c06df4b62696e34891..70c0073aac1e7b133b847d62ef4d87293ec5956c 100644
---- a/content/shell/browser/web_test/web_test_content_browser_client.h
-+++ b/content/shell/browser/web_test/web_test_content_browser_client.h
-@@ -77,6 +77,8 @@ class WebTestContentBrowserClient : public ShellContentBrowserClient {
+diff --git a/content/web_test/browser/web_test_content_browser_client.h b/content/web_test/browser/web_test_content_browser_client.h
+index b96c23ec09111b29f9b9349a6324076d26f900bc..d42a00e59cde5195195096237f25eca5d4186797 100644
+--- a/content/web_test/browser/web_test_content_browser_client.h
++++ b/content/web_test/browser/web_test_content_browser_client.h
+@@ -83,6 +83,8 @@ class WebTestContentBrowserClient : public ShellContentBrowserClient {
                         const std::string& frame_name,
                         WindowOpenDisposition disposition,
                         const blink::mojom::WindowFeatures& features,
@@ -206,10 +206,10 @@ index 4f735ad0d97eaac9a57dad137e479f8a7ec33a36..0a3c5821962c85609b64b3625fa6b8d6
  
  }  // 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 17af243870a442d5f52c75c56de6f538cb067cea..01a7456a354e258f681b1064c95ee9a680f10973 100644
+index af08a5041570403b4054bb4e1dedf2af6a9d9c88..23d4aa7b35db6a21ce5ecae5b831262fd65b1805 100644
 --- a/third_party/blink/renderer/core/frame/local_dom_window.cc
 +++ b/third_party/blink/renderer/core/frame/local_dom_window.cc
-@@ -1943,6 +1943,7 @@ DOMWindow* LocalDOMWindow::open(v8::Isolate* isolate,
+@@ -1953,6 +1953,7 @@ DOMWindow* LocalDOMWindow::open(v8::Isolate* isolate,
    }
  
    WebWindowFeatures window_features = GetWindowFeaturesFromString(features);

+ 3 - 3
patches/chromium/chore_use_electron_resources_not_chrome_for_spellchecker.patch

@@ -7,10 +7,10 @@ spellchecker uses a few IDS_ resources.  We need to load these from
 Electrons grit header instead of Chromes
 
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
-index bcd196814af64c055b0e3757d49cf770f4d239c5..322fde5dfe98156a1fbc459a1b7b38d1cf112661 100644
+index 282ed5514c85064ff3c63edbeb3a9e52b7c35b67..aac56ed6ae7b7b2bb09da782b642c2274c76bef0 100644
 --- a/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
-@@ -5662,6 +5662,7 @@ static_library("browser") {
+@@ -5937,6 +5937,7 @@ static_library("browser") {
      deps += [
        "//components/spellcheck/browser",
        "//components/spellcheck/common",
@@ -44,7 +44,7 @@ index f28230ea94fece5ae8ca7ac27a14da48f40fadbb..c10eea103852b9411a644e1fe20a7e20
    ]
  }
 diff --git a/components/language/core/browser/language_prefs.cc b/components/language/core/browser/language_prefs.cc
-index 9223b194237b0d7b4df7a9d47e00d14fbcabf2d7..dfd916986804f5ffa8ec8a7e29ad507fb4d1a5aa 100644
+index 75dcb9e5c4cb1aa64800240bd9282cac469c4524..b27d374f76e24b809f9bc9cf45560603f141350c 100644
 --- a/components/language/core/browser/language_prefs.cc
 +++ b/components/language/core/browser/language_prefs.cc
 @@ -20,7 +20,7 @@

+ 1 - 1
patches/chromium/command-ismediakey.patch

@@ -32,7 +32,7 @@ index c5125495b4d178ffb18be4d2d9670f7556412cbd..cddb321abb938c667a4a2089f87eab99
    // Create an observer that registers a hot key for |accelerator|.
    std::unique_ptr<gfx::SingletonHwndHotKeyObserver> observer =
 diff --git a/chrome/browser/extensions/global_shortcut_listener_x11.cc b/chrome/browser/extensions/global_shortcut_listener_x11.cc
-index a33ff046e940880f9c1ad15769325b0dac22ee43..a4cf5dd70cd2ab6a5246b06790f2f7f6c9fd8631 100644
+index 45e3cf52684d8ce58a33f61c32a2fdfff40d5a4f..b0a34b13cd521754ce8ff630d2fdd15ddbda35f9 100644
 --- a/chrome/browser/extensions/global_shortcut_listener_x11.cc
 +++ b/chrome/browser/extensions/global_shortcut_listener_x11.cc
 @@ -38,6 +38,7 @@ int GetNativeModifiers(const ui::Accelerator& accelerator) {

+ 2 - 2
patches/chromium/content_browser_main_loop.patch

@@ -8,10 +8,10 @@ run before shutdown. This is required to cleanup WebContents asynchronously
 in atom::CommonWebContentsDelegate::ResetManageWebContents.
 
 diff --git a/content/browser/browser_main_loop.cc b/content/browser/browser_main_loop.cc
-index 40e29b8f369ee653c2b07ef48f1e3474f067fc70..e29026d38b219c5dc8e3b2673be3c30ec4386c30 100644
+index 0c286cd8ade5835991d773b94e49ea0a34817cd0..e509c717c6ecd43cc9d1fd563792e0ab3e5522aa 100644
 --- a/content/browser/browser_main_loop.cc
 +++ b/content/browser/browser_main_loop.cc
-@@ -1452,7 +1452,7 @@ void BrowserMainLoop::MainMessageLoopRun() {
+@@ -1453,7 +1453,7 @@ void BrowserMainLoop::MainMessageLoopRun() {
    NOTREACHED();
  #else
    base::RunLoop run_loop;

+ 5 - 5
patches/chromium/crash_allow_disabling_compression_on_linux.patch

@@ -13,10 +13,10 @@ 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 fdd76ee1490e39dbfcd39bbff6686864a5c5af29..4e717ba90066bc75bf173b5027100a05cc1c8749 100644
+index 7d23a5732b47bef04cadc707f58e50b423393605..f85395cd64db22f8d530b070e1929de7d1f59db3 100644
 --- a/components/crash/core/app/breakpad_linux.cc
 +++ b/components/crash/core/app/breakpad_linux.cc
-@@ -109,6 +109,8 @@ void SetUploadURL(const std::string& url) {
+@@ -108,6 +108,8 @@ void SetUploadURL(const std::string& url) {
    DCHECK(!g_upload_url);
    g_upload_url = strdup(url.c_str());
  }
@@ -25,7 +25,7 @@ index fdd76ee1490e39dbfcd39bbff6686864a5c5af29..4e717ba90066bc75bf173b5027100a05
  #endif
  
  bool g_is_node = false;
-@@ -1320,56 +1322,60 @@ void ExecUploadProcessOrTerminate(const BreakpadInfo& info,
+@@ -1319,56 +1321,60 @@ void ExecUploadProcessOrTerminate(const BreakpadInfo& info,
  
  #else  // defined(OS_CHROMEOS)
  
@@ -127,7 +127,7 @@ index fdd76ee1490e39dbfcd39bbff6686864a5c5af29..4e717ba90066bc75bf173b5027100a05
    static const char header_msg[] =
        "--header=Content-Type: multipart/form-data; boundary=";
    const size_t header_content_type_size =
-@@ -1396,7 +1402,8 @@ void ExecUploadProcessOrTerminate(const BreakpadInfo& info,
+@@ -1395,7 +1401,8 @@ void ExecUploadProcessOrTerminate(const BreakpadInfo& info,
    static const char kWgetBinary[] = "/usr/bin/wget";
    const char* args[] = {
        kWgetBinary,
@@ -137,7 +137,7 @@ index fdd76ee1490e39dbfcd39bbff6686864a5c5af29..4e717ba90066bc75bf173b5027100a05
        header_content_type,
        post_file,
        g_upload_url,
-@@ -2037,6 +2044,7 @@ void InitCrashReporter(const std::string& process_type) {
+@@ -2036,6 +2043,7 @@ void InitCrashReporter(const std::string& process_type) {
  
  #if !defined(OS_CHROMEOS)
    SetUploadURL(GetCrashReporterClient()->GetUploadUrl());

+ 2 - 2
patches/chromium/crash_allow_setting_more_options.patch

@@ -9,10 +9,10 @@ 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 9b07ab4667e691c0c8db4c71251b04d0cdf71ff3..72ee7e8df3d62eca301b08586f06d51711e941b5 100644
+index 9d8370ef035f2ca285c8aa35e98761bff7200d26..1c076672c77d90eb3814b5b269340d2800217868 100644
 --- a/components/crash/core/app/breakpad_linux.cc
 +++ b/components/crash/core/app/breakpad_linux.cc
-@@ -111,6 +111,7 @@ void SetUploadURL(const std::string& url) {
+@@ -110,6 +110,7 @@ void SetUploadURL(const std::string& url) {
  }
  #endif
  

+ 8 - 8
patches/chromium/dcheck.patch

@@ -16,11 +16,11 @@ example, the checks might be disabled for a whole build target, but actually
 only one or two specific checks fail. Then it's better to simply comment out the
 failing checks and allow the rest of the target to have them enabled.
 
-diff --git a/content/browser/frame_host/navigation_controller_impl.cc b/content/browser/frame_host/navigation_controller_impl.cc
-index 5735af8289f2e23c22135485ceb6d54cee298f74..485bfc35227ea8a9147888fe5040c7bfd57d7dce 100644
---- a/content/browser/frame_host/navigation_controller_impl.cc
-+++ b/content/browser/frame_host/navigation_controller_impl.cc
-@@ -1279,8 +1279,10 @@ NavigationType NavigationControllerImpl::ClassifyNavigation(
+diff --git a/content/browser/renderer_host/navigation_controller_impl.cc b/content/browser/renderer_host/navigation_controller_impl.cc
+index d50253cb9c4de436ac4ac4b5316834814aef248d..e1543e396a15abdbe4736ccb736bfb81294bbee5 100644
+--- a/content/browser/renderer_host/navigation_controller_impl.cc
++++ b/content/browser/renderer_host/navigation_controller_impl.cc
+@@ -1274,8 +1274,10 @@ NavigationType NavigationControllerImpl::ClassifyNavigation(
      return NAVIGATION_TYPE_NEW_SUBFRAME;
    }
  
@@ -33,7 +33,7 @@ index 5735af8289f2e23c22135485ceb6d54cee298f74..485bfc35227ea8a9147888fe5040c7bf
  
    if (rfh->GetParent()) {
      // All manual subframes would be did_create_new_entry and handled above, so
-@@ -1555,7 +1557,10 @@ void NavigationControllerImpl::RendererDidNavigateToNewPage(
+@@ -1550,7 +1552,10 @@ void NavigationControllerImpl::RendererDidNavigateToNewPage(
      new_entry->GetFavicon() = GetLastCommittedEntry()->GetFavicon();
    }
  
@@ -46,10 +46,10 @@ index 5735af8289f2e23c22135485ceb6d54cee298f74..485bfc35227ea8a9147888fe5040c7bf
    // navigation. Now we know that the renderer has updated its state accordingly
    // and it is safe to also clear the browser side history.
 diff --git a/ui/base/clipboard/clipboard_win.cc b/ui/base/clipboard/clipboard_win.cc
-index 8ec47a120d37fa14a8d6f9b417f6bfea43742c49..7a64670b0f7d22fdedba506b9cc490db1d83cbfe 100644
+index 59963787b07a313c490eacc68659a6e8d82f7446..d14687bf175e0957c7e1376065ece95cbc0cbdc2 100644
 --- a/ui/base/clipboard/clipboard_win.cc
 +++ b/ui/base/clipboard/clipboard_win.cc
-@@ -855,10 +855,10 @@ SkBitmap ClipboardWin::ReadImageInternal(ClipboardBuffer buffer) const {
+@@ -861,10 +861,10 @@ SkBitmap ClipboardWin::ReadImageInternal(ClipboardBuffer buffer) const {
  
  void ClipboardWin::WriteToClipboard(ClipboardFormatType format, HANDLE handle) {
    UINT cf_format = format.ToFormatEtc().cfFormat;

+ 10 - 10
patches/chromium/delay_lock_the_protocol_scheme_registry.patch

@@ -19,10 +19,10 @@ https://chromium-review.googlesource.com/c/chromium/src/+/1901591, we should try
 re-submitting the patch.
 
 diff --git a/content/app/content_main_runner_impl.cc b/content/app/content_main_runner_impl.cc
-index 35683362c08735174890276cb9a573cf2949ae8a..745c2f80b8a57496d6108344d72a62fb462ebe15 100644
+index b44cfe23beadd7085f3b13f6aab2cc5393f6db5a..a42268219b9a3a83b2f6da47580cfdfd69adacdb 100644
 --- a/content/app/content_main_runner_impl.cc
 +++ b/content/app/content_main_runner_impl.cc
-@@ -645,7 +645,7 @@ int ContentMainRunnerImpl::Initialize(const ContentMainParams& params) {
+@@ -642,7 +642,7 @@ int ContentMainRunnerImpl::Initialize(const ContentMainParams& params) {
    }
  #endif
  
@@ -68,7 +68,7 @@ index 3038f9d25798f36811b6398f8cc0e7d83ecc41b0..68189c36c47ef85b345b0ccc40c456f8
  // Re-initializes schemes for tests.
  CONTENT_EXPORT void ReRegisterContentSchemesForTests();
 diff --git a/content/public/app/content_main_delegate.cc b/content/public/app/content_main_delegate.cc
-index 57f1dcf106d1029a94d908f90b9f27fd96f2f888..ab4967bbcd687ff63f377c13d25b97cf395ee2f2 100644
+index e6379748886956da819523200aa35f8f95d523ee..46110a92ba9849112889f3e93c1dccbbd4911dda 100644
 --- a/content/public/app/content_main_delegate.cc
 +++ b/content/public/app/content_main_delegate.cc
 @@ -36,6 +36,10 @@ int ContentMainDelegate::TerminateForFatalInitializationError() {
@@ -79,14 +79,14 @@ index 57f1dcf106d1029a94d908f90b9f27fd96f2f888..ab4967bbcd687ff63f377c13d25b97cf
 +  return true;
 +}
 +
- service_manager::ProcessType ContentMainDelegate::OverrideProcessType() {
-   return service_manager::ProcessType::kDefault;
+ bool ContentMainDelegate::ShouldCreateFeatureList() {
+   return true;
  }
 diff --git a/content/public/app/content_main_delegate.h b/content/public/app/content_main_delegate.h
-index a384cd8f3688797bff4ef2e007ef40b6f93755e5..a387441cbe5bbe676ea1c2d77605c97eba3dd746 100644
+index abb46995385fccddf8363296fb0253624a4111c7..715d0818c03cfa7e5b9877b3ab83d1488f2f040f 100644
 --- a/content/public/app/content_main_delegate.h
 +++ b/content/public/app/content_main_delegate.h
-@@ -76,6 +76,20 @@ class CONTENT_EXPORT ContentMainDelegate {
+@@ -65,6 +65,20 @@ class CONTENT_EXPORT ContentMainDelegate {
    // returning initialization error code. Default behavior is CHECK(false).
    virtual int TerminateForFatalInitializationError();
  
@@ -104,6 +104,6 @@ index a384cd8f3688797bff4ef2e007ef40b6f93755e5..a387441cbe5bbe676ea1c2d77605c97e
 +  // from being locked.
 +  virtual bool ShouldLockSchemeRegistry();
 +
-   // Overrides the Service Manager process type to use for the currently running
-   // process.
-   virtual service_manager::ProcessType OverrideProcessType();
+   // Allows the embedder to perform platform-specific initialization before
+   // creating the main message loop.
+   virtual void PreCreateMainMessageLoop() {}

+ 24 - 24
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 89c4355b48796f7336c4fd3c949c2fbce290e92b..eb81480c353229501ce992a4fdc2e70d9d01955b 100644
+index e6a662a3963fa0a8186e52ef540a6e4babe4c20f..9ed8442978553ff554eef7ba342970f7a705febb 100644
 --- a/cc/trees/layer_tree_host_impl.cc
 +++ b/cc/trees/layer_tree_host_impl.cc
-@@ -1766,6 +1766,10 @@ void LayerTreeHostImpl::SetIsLikelyToRequireADraw(
+@@ -1760,6 +1760,10 @@ void LayerTreeHostImpl::SetIsLikelyToRequireADraw(
  
  gfx::ColorSpace LayerTreeHostImpl::GetRasterColorSpace(
      gfx::ContentColorUsage content_color_usage) const {
@@ -81,10 +81,10 @@ index b06ea5f9fe36162dc9bcec32f604b1a8fc10f825..d53e7a0055dbdfe937a51939a3122723
        !command_line->HasSwitch(switches::kUIDisablePartialSwap);
  #if defined(OS_APPLE)
 diff --git a/components/viz/service/display/gl_renderer.cc b/components/viz/service/display/gl_renderer.cc
-index 21265c5bbbeb38ab58338519964fc598f8eed8e2..2be364cfc4482a5905b98e978e1d58fee272c356 100644
+index e5179c0e4971bc593860b1e5b606fec651e6756b..fc7c09d19c60d498885d3e4f1a4a4ac995060e3d 100644
 --- a/components/viz/service/display/gl_renderer.cc
 +++ b/components/viz/service/display/gl_renderer.cc
-@@ -87,6 +87,9 @@
+@@ -86,6 +86,9 @@
  
  using gpu::gles2::GLES2Interface;
  
@@ -94,7 +94,7 @@ index 21265c5bbbeb38ab58338519964fc598f8eed8e2..2be364cfc4482a5905b98e978e1d58fe
  namespace viz {
  namespace {
  
-@@ -640,8 +643,9 @@ void GLRenderer::DoDrawQuad(const DrawQuad* quad,
+@@ -639,8 +642,9 @@ void GLRenderer::DoDrawQuad(const DrawQuad* quad,
  void GLRenderer::DrawDebugBorderQuad(const DebugBorderDrawQuad* quad) {
    SetBlendEnabled(quad->ShouldDrawWithBlending());
  
@@ -106,7 +106,7 @@ index 21265c5bbbeb38ab58338519964fc598f8eed8e2..2be364cfc4482a5905b98e978e1d58fe
  
    // Use the full quad_rect for debug quads to not move the edges based on
    // partial swaps.
-@@ -1621,7 +1625,8 @@ void GLRenderer::ChooseRPDQProgram(DrawRenderPassDrawQuadParams* params,
+@@ -1620,7 +1624,8 @@ void GLRenderer::ChooseRPDQProgram(DrawRenderPassDrawQuadParams* params,
            params->use_color_matrix, tint_gl_composited_content_,
            params->apply_shader_based_rounded_corner &&
                ShouldApplyRoundedCorner(params->quad)),
@@ -116,7 +116,7 @@ index 21265c5bbbeb38ab58338519964fc598f8eed8e2..2be364cfc4482a5905b98e978e1d58fe
  }
  
  void GLRenderer::UpdateRPDQUniforms(DrawRenderPassDrawQuadParams* params) {
-@@ -2095,15 +2100,16 @@ void GLRenderer::DrawSolidColorQuad(const SolidColorDrawQuad* quad,
+@@ -2094,15 +2099,16 @@ void GLRenderer::DrawSolidColorQuad(const SolidColorDrawQuad* quad,
    SetUseProgram(ProgramKey::SolidColor(use_aa ? USE_AA : NO_AA,
                                         tint_gl_composited_content_,
                                         ShouldApplyRoundedCorner(quad)),
@@ -136,7 +136,7 @@ index 21265c5bbbeb38ab58338519964fc598f8eed8e2..2be364cfc4482a5905b98e978e1d58fe
      gfx::ColorTransform::TriStim col(color_f.fR, color_f.fG, color_f.fB);
      color_transform->Transform(&col, 1);
      color_f.fR = col.x();
-@@ -2278,7 +2284,8 @@ void GLRenderer::DrawContentQuadAA(const ContentDrawQuadBase* quad,
+@@ -2277,7 +2283,8 @@ void GLRenderer::DrawContentQuadAA(const ContentDrawQuadBase* quad,
                                                : NON_PREMULTIPLIED_ALPHA,
                         false, false, tint_gl_composited_content_,
                         ShouldApplyRoundedCorner(quad)),
@@ -146,7 +146,7 @@ index 21265c5bbbeb38ab58338519964fc598f8eed8e2..2be364cfc4482a5905b98e978e1d58fe
  
    if (current_program_->tint_color_matrix_location() != -1) {
      auto matrix = cc::DebugColors::TintCompositedContentColorTransformMatrix();
-@@ -2377,7 +2384,8 @@ void GLRenderer::DrawContentQuadNoAA(const ContentDrawQuadBase* quad,
+@@ -2376,7 +2383,8 @@ void GLRenderer::DrawContentQuadNoAA(const ContentDrawQuadBase* quad,
                         !quad->ShouldDrawWithBlending(), has_tex_clamp_rect,
                         tint_gl_composited_content_,
                         ShouldApplyRoundedCorner(quad)),
@@ -156,7 +156,7 @@ index 21265c5bbbeb38ab58338519964fc598f8eed8e2..2be364cfc4482a5905b98e978e1d58fe
  
    if (current_program_->tint_color_matrix_location() != -1) {
      auto matrix = cc::DebugColors::TintCompositedContentColorTransformMatrix();
-@@ -2487,7 +2495,8 @@ void GLRenderer::DrawYUVVideoQuad(const YUVVideoDrawQuad* quad,
+@@ -2486,7 +2494,8 @@ void GLRenderer::DrawYUVVideoQuad(const YUVVideoDrawQuad* quad,
    // The source color space should never be RGB.
    DCHECK_NE(src_color_space, src_color_space.GetAsFullRangeRGB());
  
@@ -166,7 +166,7 @@ index 21265c5bbbeb38ab58338519964fc598f8eed8e2..2be364cfc4482a5905b98e978e1d58fe
  
  #if defined(OS_WIN)
    // Force sRGB output on Windows for overlay candidate video quads to match
-@@ -2662,7 +2671,8 @@ void GLRenderer::DrawStreamVideoQuad(const StreamVideoDrawQuad* quad,
+@@ -2661,7 +2670,8 @@ void GLRenderer::DrawStreamVideoQuad(const StreamVideoDrawQuad* quad,
  
    SetUseProgram(ProgramKey::VideoStream(tex_coord_precision,
                                          ShouldApplyRoundedCorner(quad)),
@@ -176,7 +176,7 @@ index 21265c5bbbeb38ab58338519964fc598f8eed8e2..2be364cfc4482a5905b98e978e1d58fe
  
    DCHECK_EQ(GL_TEXTURE0, GetActiveTextureUnit(gl_));
    gl_->BindTexture(GL_TEXTURE_EXTERNAL_OES, lock.texture_id());
-@@ -2729,8 +2739,8 @@ void GLRenderer::FlushTextureQuadCache(BoundGeometry flush_binding) {
+@@ -2728,8 +2738,8 @@ void GLRenderer::FlushTextureQuadCache(BoundGeometry flush_binding) {
        draw_cache_.nearest_neighbor ? GL_NEAREST : GL_LINEAR);
  
    // Bind the program to the GL state.
@@ -187,7 +187,7 @@ index 21265c5bbbeb38ab58338519964fc598f8eed8e2..2be364cfc4482a5905b98e978e1d58fe
                  /*adjust_src_white_level=*/draw_cache_.is_video_frame);
  
    if (current_program_->rounded_corner_rect_location() != -1) {
-@@ -3547,7 +3557,9 @@ void GLRenderer::SetUseProgram(const ProgramKey& program_key_no_color,
+@@ -3546,7 +3556,9 @@ void GLRenderer::SetUseProgram(const ProgramKey& program_key_no_color,
                                 const gfx::ColorSpace& src_color_space,
                                 const gfx::ColorSpace& dst_color_space,
                                 bool adjust_src_white_level) {
@@ -198,7 +198,7 @@ index 21265c5bbbeb38ab58338519964fc598f8eed8e2..2be364cfc4482a5905b98e978e1d58fe
    gfx::ColorSpace adjusted_src_color_space = src_color_space;
    if (adjust_src_white_level) {
      // If the input color space is HDR, and it did not specify a white level,
-@@ -3927,9 +3939,9 @@ void GLRenderer::CopyRenderPassDrawQuadToOverlayResource(
+@@ -3926,9 +3938,9 @@ void GLRenderer::CopyRenderPassDrawQuadToOverlayResource(
          cc::MathUtil::CheckedRoundUp(iosurface_height, iosurface_multiple);
    }
  
@@ -211,7 +211,7 @@ index 21265c5bbbeb38ab58338519964fc598f8eed8e2..2be364cfc4482a5905b98e978e1d58fe
    *new_bounds = gfx::RectF(updated_dst_rect.origin(),
                             gfx::SizeF((*overlay_texture)->texture.size()));
  
-@@ -4149,8 +4161,8 @@ void GLRenderer::FlushOverdrawFeedback(const gfx::Rect& output_rect) {
+@@ -4148,8 +4160,8 @@ void GLRenderer::FlushOverdrawFeedback(const gfx::Rect& output_rect) {
  
    PrepareGeometry(SHARED_BINDING);
  
@@ -222,14 +222,14 @@ index 21265c5bbbeb38ab58338519964fc598f8eed8e2..2be364cfc4482a5905b98e978e1d58fe
  
    gfx::Transform render_matrix;
    render_matrix.Translate(0.5 * output_rect.width() + output_rect.x(),
-@@ -4279,3 +4291,5 @@ GLRenderer::OverlayTexture::OverlayTexture() = default;
+@@ -4278,3 +4290,5 @@ GLRenderer::OverlayTexture::OverlayTexture() = default;
  GLRenderer::OverlayTexture::~OverlayTexture() = default;
  
  }  // namespace viz
 +
 +#undef PATCH_CS
 diff --git a/content/browser/gpu/gpu_process_host.cc b/content/browser/gpu/gpu_process_host.cc
-index aeae01a0958f7909e4c9273e90110ca3b6f40bdf..9340c828ab583d2b42f93c3471b7c56339045764 100644
+index de4eadaf7be8be95fc0ad454d66c8ec397cfc20a..d4c451ea992490befb34b3690a98d968bb50b899 100644
 --- a/content/browser/gpu/gpu_process_host.cc
 +++ b/content/browser/gpu/gpu_process_host.cc
 @@ -221,6 +221,7 @@ GpuTerminationStatus ConvertToGpuTerminationStatus(
@@ -241,7 +241,7 @@ index aeae01a0958f7909e4c9273e90110ca3b6f40bdf..9340c828ab583d2b42f93c3471b7c563
      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 01ed5881a0f6a492c6b5fdae515e139a0281f432..be2039e7250ae3834ddae721f4d54963e293cba4 100644
+index 616cf2720a1c5bd496dcaa3d6e93f6b5443bf84d..dde0c4aa87f334dc6ca68b6a2843d33f485221ca 100644
 --- a/content/browser/renderer_host/render_process_host_impl.cc
 +++ b/content/browser/renderer_host/render_process_host_impl.cc
 @@ -226,6 +226,7 @@
@@ -252,7 +252,7 @@ index 01ed5881a0f6a492c6b5fdae515e139a0281f432..be2039e7250ae3834ddae721f4d54963
  #include "ui/gl/gl_switches.h"
  #include "ui/native_theme/native_theme_features.h"
  #include "url/origin.h"
-@@ -3318,6 +3319,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
+@@ -3313,6 +3314,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[] = {
@@ -261,7 +261,7 @@ index 01ed5881a0f6a492c6b5fdae515e139a0281f432..be2039e7250ae3834ddae721f4d54963
      service_manager::switches::kDisableInProcessStackTraces,
      sandbox::policy::switches::kDisableSeccompFilterSandbox,
 diff --git a/third_party/blink/renderer/platform/graphics/canvas_color_params.cc b/third_party/blink/renderer/platform/graphics/canvas_color_params.cc
-index 3dc0fb19b33daf14cbf8550cbb58e3e146830f26..da34be87f36c6e50286d0ef24cade53156f0a688 100644
+index 0501709a855b9fae82ab06c4e143b42058ddc12e..e0a457aab29acda134d1da9c798b5472c9bdb627 100644
 --- a/third_party/blink/renderer/platform/graphics/canvas_color_params.cc
 +++ b/third_party/blink/renderer/platform/graphics/canvas_color_params.cc
 @@ -4,6 +4,7 @@
@@ -280,7 +280,7 @@ index 3dc0fb19b33daf14cbf8550cbb58e3e146830f26..da34be87f36c6e50286d0ef24cade531
  
  namespace blink {
  
-@@ -90,6 +92,11 @@ uint8_t CanvasColorParams::BytesPerPixel() const {
+@@ -95,6 +97,11 @@ uint8_t CanvasColorParams::BytesPerPixel() const {
  }
  
  gfx::ColorSpace CanvasColorParams::GetSamplerGfxColorSpace() const {
@@ -292,7 +292,7 @@ index 3dc0fb19b33daf14cbf8550cbb58e3e146830f26..da34be87f36c6e50286d0ef24cade531
    // TODO(ccameron): If we add support for uint8srgb as a pixel format, this
    // will need to take into account whether or not this texture will be sampled
    // in linear or nonlinear space.
-@@ -97,6 +104,11 @@ gfx::ColorSpace CanvasColorParams::GetSamplerGfxColorSpace() const {
+@@ -102,6 +109,11 @@ gfx::ColorSpace CanvasColorParams::GetSamplerGfxColorSpace() const {
  }
  
  gfx::ColorSpace CanvasColorParams::GetStorageGfxColorSpace() const {
@@ -327,7 +327,7 @@ index 95e818f1406eb1a73a746b73a608137ab5c6e894..6e1d3b3b1add4eda90560856b6915d46
    // is what the renderer uses if its not threaded.
    settings.enable_checker_imaging =
 diff --git a/ui/gfx/mac/io_surface.cc b/ui/gfx/mac/io_surface.cc
-index 4f780768e5c606e08aad96d87c309d53154bcecd..8ddbb922399265f5d525274e7c2d01dbecfdf5a9 100644
+index 3e80dc40c83bd4eb96f9029643c4a0856253494e..8e19a78f106daf4185ee69970832ea1237d3d03b 100644
 --- a/ui/gfx/mac/io_surface.cc
 +++ b/ui/gfx/mac/io_surface.cc
 @@ -18,6 +18,7 @@
@@ -338,7 +338,7 @@ index 4f780768e5c606e08aad96d87c309d53154bcecd..8ddbb922399265f5d525274e7c2d01db
  
  namespace gfx {
  
-@@ -127,6 +128,14 @@ void IOSurfaceMachPortTraits::Release(mach_port_t port) {
+@@ -126,6 +127,14 @@ void IOSurfaceMachPortTraits::Release(mach_port_t port) {
  // Common method used by IOSurfaceSetColorSpace and IOSurfaceCanSetColorSpace.
  bool IOSurfaceSetColorSpace(IOSurfaceRef io_surface,
                              const ColorSpace& color_space) {

+ 2 - 2
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 740cf03a50818b6a769abed1d487b0c9a6be2c26..2298589fcbdfb03474600f99763b10368b240a68 100644
+index 2fde2824d4eeb6c4ce5e95a175183fa3f5061fbb..f388b66fbd3182c58ced63476b002f2d3a44b5d8 100644
 --- a/content/browser/renderer_host/render_widget_host_view_mac.mm
 +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
-@@ -480,7 +480,11 @@
+@@ -482,7 +482,11 @@
      return;
  
    host()->WasHidden();

+ 6 - 6
patches/chromium/disable_hidden.patch

@@ -6,10 +6,10 @@ Subject: disable_hidden.patch
 Electron uses this to disable background throttling for hidden windows.
 
 diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
-index ae13996e8b608187a331e0fe465cbbb961806311..ba4490916017d65c08f6f31ef8453928f37b84fd 100644
+index ac1771ff9c3a99ef475ed549d5e29865ddec36af..92353f412ba6d4c25e93f22b9a43442db974b31f 100644
 --- a/content/browser/renderer_host/render_widget_host_impl.cc
 +++ b/content/browser/renderer_host/render_widget_host_impl.cc
-@@ -740,6 +740,9 @@ void RenderWidgetHostImpl::WasHidden() {
+@@ -693,6 +693,9 @@ void RenderWidgetHostImpl::WasHidden() {
    if (is_hidden_)
      return;
  
@@ -20,10 +20,10 @@ index ae13996e8b608187a331e0fe465cbbb961806311..ba4490916017d65c08f6f31ef8453928
        blink::mojom::PointerLockResult::kWrongDocument);
  
 diff --git a/content/browser/renderer_host/render_widget_host_impl.h b/content/browser/renderer_host/render_widget_host_impl.h
-index b2dfde227eda70f0ccd7770608cfe7465e3b32fb..421057fb072023718f0f326c65a3dc678c29ed1d 100644
+index e6cef26a861b3c2404a1e2ed9e06cc1d89459b90..5bda74c18abecd08f471d8735f88d2c59415a13e 100644
 --- a/content/browser/renderer_host/render_widget_host_impl.h
 +++ b/content/browser/renderer_host/render_widget_host_impl.h
-@@ -174,6 +174,9 @@ class CONTENT_EXPORT RenderWidgetHostImpl
+@@ -173,6 +173,9 @@ class CONTENT_EXPORT RenderWidgetHostImpl
    // RenderWidgetHostImpl.
    static RenderWidgetHostImpl* From(RenderWidgetHost* rwh);
  
@@ -34,10 +34,10 @@ index b2dfde227eda70f0ccd7770608cfe7465e3b32fb..421057fb072023718f0f326c65a3dc67
        const base::TimeDelta& delay) {
      new_content_rendering_delay_ = delay;
 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 b449be00666c4aec443aa0a475bc13835b1a2a3b..6d0885f9df73a5785d2eb618a848ccf290152acd 100644
+index 934ab262a5785872a8a389dc5fec1a898fe1e7f7..b2b095e2b5ddead325351fadb16a9ab0b361cd32 100644
 --- a/content/browser/renderer_host/render_widget_host_view_aura.cc
 +++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
-@@ -625,7 +625,7 @@ void RenderWidgetHostViewAura::HideImpl() {
+@@ -627,7 +627,7 @@ void RenderWidgetHostViewAura::HideImpl() {
    DCHECK(visibility_ == Visibility::HIDDEN ||
           visibility_ == Visibility::OCCLUDED);
  

+ 8 - 8
patches/chromium/expose_setuseragent_on_networkcontext.patch

@@ -33,10 +33,10 @@ index 0ccfe130f00ec3b6c75cd8ee04d5a2777e1fd00c..653829457d58bf92057cc36aa8a28970
    DISALLOW_COPY_AND_ASSIGN(StaticHttpUserAgentSettings);
  };
 diff --git a/services/network/network_context.cc b/services/network/network_context.cc
-index 10ba3b1ad5d8bacbfd0f8b947db139058cd2d5f8..3bdd015d6192266b8facd5d8c2c954d3ea146d5a 100644
+index fe30fc94f752e08839913868b8464a349fe541fe..0c2c48ef148adaba81b16e6354e4098100afbca6 100644
 --- a/services/network/network_context.cc
 +++ b/services/network/network_context.cc
-@@ -1080,6 +1080,13 @@ void NetworkContext::SetNetworkConditions(
+@@ -1081,6 +1081,13 @@ void NetworkContext::SetNetworkConditions(
                                        std::move(network_conditions));
  }
  
@@ -51,10 +51,10 @@ index 10ba3b1ad5d8bacbfd0f8b947db139058cd2d5f8..3bdd015d6192266b8facd5d8c2c954d3
    // 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 3700f3ee61d4eb33a4574f3270c10a70b00057e3..00eacad5e1819b1710ab03ab1ef9428347e7f5a0 100644
+index e2a565663abea1b13beaaa33e83d8102da693e35..407e89a436905f562464536a4cd353346a8a4cce 100644
 --- a/services/network/network_context.h
 +++ b/services/network/network_context.h
-@@ -243,6 +243,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
+@@ -244,6 +244,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 3700f3ee61d4eb33a4574f3270c10a70b00057e3..00eacad5e1819b1710ab03ab1ef94283
    void SetEnableReferrers(bool enable_referrers) override;
  #if defined(OS_CHROMEOS)
 diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom
-index d9227c78e4439d90dba68349e540ae42ab3c3000..113006d65c011bacd856c471d93dbff71254f034 100644
+index 2163ef65ae5faec671f4f3ad93c36d069f598ac6..b4d200164829d0d34c2511a07eb0cc3d046d6fa3 100644
 --- a/services/network/public/mojom/network_context.mojom
 +++ b/services/network/public/mojom/network_context.mojom
-@@ -1073,6 +1073,9 @@ interface NetworkContext {
+@@ -1072,6 +1072,9 @@ interface NetworkContext {
    SetNetworkConditions(mojo_base.mojom.UnguessableToken throttling_profile_id,
                         NetworkConditions? conditions);
  
@@ -77,10 +77,10 @@ index d9227c78e4439d90dba68349e540ae42ab3c3000..113006d65c011bacd856c471d93dbff7
    SetAcceptLanguage(string new_accept_language);
  
 diff --git a/services/network/test/test_network_context.h b/services/network/test/test_network_context.h
-index a00a627a2ae73bf78d4b0e1eb332c7e52319e26f..5891c62a660d8e38688e7b37131af396a6e5e120 100644
+index 789be83b3d42d464c1ccc71bf13820187c598fcb..d0eddf77b04f41ae25400647629b4324e4060d7a 100644
 --- a/services/network/test/test_network_context.h
 +++ b/services/network/test/test_network_context.h
-@@ -105,6 +105,7 @@ class TestNetworkContext : public mojom::NetworkContext {
+@@ -107,6 +107,7 @@ class TestNetworkContext : public mojom::NetworkContext {
    void CloseIdleConnections(CloseIdleConnectionsCallback callback) override {}
    void SetNetworkConditions(const base::UnguessableToken& throttling_profile_id,
                              mojom::NetworkConditionsPtr conditions) override {}

+ 2 - 2
patches/chromium/feat_add_set_theme_source_to_allow_apps_to.patch

@@ -62,10 +62,10 @@ index e2ca7dd198390ebc923facd690904faeb8300e62..f2f53775abb0ba2954cbb3ec431d84c3
  };
  
 diff --git a/ui/native_theme/native_theme_win.cc b/ui/native_theme/native_theme_win.cc
-index 1ff5451c10c4843557746df9daf879d422b9855a..b215a4b7965f180f71a84b022f15f7f636924124 100644
+index 74afe95ebec7f14836b4a5f4c3689f5acc5774cb..349a61a4ea8e6d84f120cfb0a0cd5b608475fe1e 100644
 --- a/ui/native_theme/native_theme_win.cc
 +++ b/ui/native_theme/native_theme_win.cc
-@@ -734,6 +734,8 @@ bool NativeThemeWin::ShouldUseDarkColors() const {
+@@ -736,6 +736,8 @@ bool NativeThemeWin::ShouldUseDarkColors() const {
    // ...unless --force-dark-mode was specified in which case caveat emptor.
    if (UsesHighContrastColors() && !IsForcedDarkMode())
      return false;

+ 2 - 2
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/media/blink/multibuffer_data_source.cc b/media/blink/multibuffer_data_source.cc
-index d41162d5295a70ba48640610d3de39a73849ac4a..287b5294f28a4b74e967b9fbf796a859a38ad737 100644
+index 1e5c85595c77f4fde9fa30b99de197441295ffe7..a530c6c942cfb119c3089d3b857a205a11f9eb27 100644
 --- a/media/blink/multibuffer_data_source.cc
 +++ b/media/blink/multibuffer_data_source.cc
 @@ -10,9 +10,11 @@
@@ -68,7 +68,7 @@ index d41162d5295a70ba48640610d3de39a73849ac4a..287b5294f28a4b74e967b9fbf796a859
  
  void MultibufferDataSource::SetReader(MultiBufferReader* reader) {
 diff --git a/media/blink/multibuffer_data_source.h b/media/blink/multibuffer_data_source.h
-index 013ce7404ddba2a02bea78a72b535377e8d4e17c..9a283e238f8b1f0cca7f1ca2d3d68847529e0f7c 100644
+index 8441d15ece8e4a1e14f8df489cc94953605e3992..e6c893b34b9594e0df1de8aaf507740e732ecc21 100644
 --- a/media/blink/multibuffer_data_source.h
 +++ b/media/blink/multibuffer_data_source.h
 @@ -31,6 +31,8 @@ class BufferedDataSourceHost;

+ 1 - 1
patches/chromium/feat_add_support_for_overriding_the_base_spellchecker_download_url.patch

@@ -9,7 +9,7 @@ production use cases.  This is unlikely to be upstreamed as the change
 is entirely in //chrome.
 
 diff --git a/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc b/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc
-index ffdb0522bf96ac97234c543df34a175137daf347..428e90c820fe6b6731ee433284a758d6c3c25e21 100644
+index ca81ec53b3316bfc01c083818d5d2b4c0b59e967..c303a5bdd8cc3d19c61b03206c5e17ed98fefabf 100644
 --- a/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc
 +++ b/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc
 @@ -50,6 +50,9 @@ namespace {

+ 26 - 26
patches/chromium/feat_allow_disabling_blink_scheduler_throttling_per_renderview.patch

@@ -6,10 +6,10 @@ Subject: feat: allow disabling blink scheduler throttling per RenderView
 This allows us to disable throttling for hidden windows.
 
 diff --git a/content/browser/renderer_host/render_view_host_impl.cc b/content/browser/renderer_host/render_view_host_impl.cc
-index 0ba4a01e1384bd8b123798c89d5858a7e6de5c3e..cc851b51dc166668ecb47a6f4f289ff44204e1b3 100644
+index aeb9f114b7306a54813584d9c074a0569ad10039..56aeaa5a8182551ead6418009c5687161fbc158c 100644
 --- a/content/browser/renderer_host/render_view_host_impl.cc
 +++ b/content/browser/renderer_host/render_view_host_impl.cc
-@@ -525,6 +525,10 @@ void RenderViewHostImpl::SetBackgroundOpaque(bool opaque) {
+@@ -587,6 +587,10 @@ void RenderViewHostImpl::SetBackgroundOpaque(bool opaque) {
    GetWidget()->GetAssociatedFrameWidget()->SetBackgroundOpaque(opaque);
  }
  
@@ -21,10 +21,10 @@ index 0ba4a01e1384bd8b123798c89d5858a7e6de5c3e..cc851b51dc166668ecb47a6f4f289ff4
    return is_active();
  }
 diff --git a/content/browser/renderer_host/render_view_host_impl.h b/content/browser/renderer_host/render_view_host_impl.h
-index 6caa848692512bef8a261e61d81d434d184b7a7d..18f3d938c94c33c1fb6b1bb7beadaf5dd7d6f729 100644
+index 1f01a5e961e8659b9fa3cbf7198dcff98d52c010..460fb0b3e4b8747b5673c2b9e692d7d48a5ef082 100644
 --- a/content/browser/renderer_host/render_view_host_impl.h
 +++ b/content/browser/renderer_host/render_view_host_impl.h
-@@ -110,6 +110,7 @@ class CONTENT_EXPORT RenderViewHostImpl
+@@ -126,6 +126,7 @@ class CONTENT_EXPORT RenderViewHostImpl
    SiteInstanceImpl* GetSiteInstance() override;
    bool IsRenderViewLive() override;
    void NotifyMoveOrResizeStarted() override;
@@ -33,7 +33,7 @@ index 6caa848692512bef8a261e61d81d434d184b7a7d..18f3d938c94c33c1fb6b1bb7beadaf5d
    void SendWebPreferencesToRenderer();
  
 diff --git a/content/common/view_messages.h b/content/common/view_messages.h
-index 1a18cbf17c044f78667feabfebdaf3552ee00c60..5b47f89909c372fb7fc6d00a07847cf660411ed1 100644
+index 3f7794f80f67cfdf410d3cef6a30ff5ebd451c89..f83ee36f0031807dddb80e48121e6382a85280e9 100644
 --- a/content/common/view_messages.h
 +++ b/content/common/view_messages.h
 @@ -94,6 +94,9 @@ IPC_STRUCT_TRAITS_END()
@@ -45,7 +45,7 @@ index 1a18cbf17c044f78667feabfebdaf3552ee00c60..5b47f89909c372fb7fc6d00a07847cf6
 +
  // This passes a set of webkit preferences down to the renderer.
  IPC_MESSAGE_ROUTED1(ViewMsg_UpdateWebPreferences,
-                     content::WebPreferences)
+                     blink::web_pref::WebPreferences)
 diff --git a/content/public/browser/render_view_host.h b/content/public/browser/render_view_host.h
 index 50601f801e08a90d8556007617a0310bc3bfe2e3..f1f03eb2eb91567cbda2f8b9abe9979ec7ba3e57 100644
 --- a/content/public/browser/render_view_host.h
@@ -61,19 +61,19 @@ index 50601f801e08a90d8556007617a0310bc3bfe2e3..f1f03eb2eb91567cbda2f8b9abe9979e
    // This interface should only be implemented inside content.
    friend class RenderViewHostImpl;
 diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
-index 0bda7168094b09f14a2eaee3840cd3603536b2a9..96aebbd17c810835452b6fae9cbd0c9d7396db34 100644
+index 554e4800766a8ca087ba32dfea9fa1c61bca5cd7..712ad04658c7e0018e4eca57426531611642da85 100644
 --- a/content/renderer/render_view_impl.cc
 +++ b/content/renderer/render_view_impl.cc
-@@ -1131,6 +1131,8 @@ bool RenderViewImpl::OnMessageReceived(const IPC::Message& message) {
+@@ -575,6 +575,8 @@ bool RenderViewImpl::OnMessageReceived(const IPC::Message& message) {
  
    bool handled = true;
    IPC_BEGIN_MESSAGE_MAP(RenderViewImpl, message)
 +    IPC_MESSAGE_HANDLER(ViewMsg_SetSchedulerThrottling,
 +                        OnSetSchedulerThrottling)
-     IPC_MESSAGE_HANDLER(ViewMsg_UpdateTargetURL_ACK, OnUpdateTargetURLAck)
      IPC_MESSAGE_HANDLER(ViewMsg_UpdateWebPreferences, OnUpdateWebPreferences)
      IPC_MESSAGE_HANDLER(ViewMsg_MoveOrResizeStarted, OnMoveOrResizeStarted)
-@@ -1594,6 +1596,12 @@ bool RenderViewImpl::GetContentStateImmediately() {
+ 
+@@ -976,6 +978,12 @@ bool RenderViewImpl::GetContentStateImmediately() {
    return send_content_state_immediately_;
  }
  
@@ -83,26 +83,26 @@ index 0bda7168094b09f14a2eaee3840cd3603536b2a9..96aebbd17c810835452b6fae9cbd0c9d
 +  GetWebView()->SetSchedulerThrottling(allowed);
 +}
 +
- void RenderViewImpl::OnUpdateWebPreferences(const WebPreferences& prefs) {
-   webkit_preferences_ = prefs;
-   ApplyWebPreferences(webkit_preferences_, GetWebView());
+ void RenderViewImpl::OnUpdateWebPreferences(
+     const blink::web_pref::WebPreferences& prefs) {
+   webview_->SetWebPreferences(prefs);
 diff --git a/content/renderer/render_view_impl.h b/content/renderer/render_view_impl.h
-index 8043e377d15433543ce5c7942d57c4fc486ed63a..155950d620d25cb03c2a258007e9fad91ca602de 100644
+index 7ac886eb51cb5c2ea46c46aeb529450b544b5579..87db09d180f7f6c0cfe027da0c53fc089b58dfa2 100644
 --- a/content/renderer/render_view_impl.h
 +++ b/content/renderer/render_view_impl.h
-@@ -380,6 +380,7 @@ class CONTENT_EXPORT RenderViewImpl : public blink::WebViewClient,
-   void OnSetHistoryOffsetAndLength(int history_offset, int history_length);
+@@ -363,6 +363,7 @@ class CONTENT_EXPORT RenderViewImpl : public blink::WebViewClient,
+   void OnExitFullscreen();
    void OnSetRendererPrefs(
        const blink::mojom::RendererPreferences& renderer_prefs);
 +  void OnSetSchedulerThrottling(bool allowed);
    void OnSuppressDialogsUntilSwapOut();
-   void OnUpdateTargetURLAck();
-   void OnUpdateWebPreferences(const WebPreferences& prefs);
+   void OnUpdateWebPreferences(const blink::web_pref::WebPreferences& prefs);
+ 
 diff --git a/third_party/blink/public/web/web_view.h b/third_party/blink/public/web/web_view.h
-index 4d55813fed9251dd652781275f8892054cc7f6ca..582f16a1d14b1e949151f4ef326c2dc79036df20 100644
+index 3f3814b3a50b6d49d67b6a991273e8759ec9a6db..a5c51053b976353c6305cbddb59a83887f46d4b6 100644
 --- a/third_party/blink/public/web/web_view.h
 +++ b/third_party/blink/public/web/web_view.h
-@@ -404,6 +404,7 @@ class WebView {
+@@ -415,6 +415,7 @@ class WebView {
    // Scheduling -----------------------------------------------------------
  
    virtual PageScheduler* Scheduler() const = 0;
@@ -111,10 +111,10 @@ index 4d55813fed9251dd652781275f8892054cc7f6ca..582f16a1d14b1e949151f4ef326c2dc7
    // 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 864ad48116207b1190787d179f504bb95606a2fe..37cd63f04fb6384ef3590ddb5f173bc2ddcd6c34 100644
+index cf0cef2ba297fab21f63086349d47c5b51f9688a..b63db8290623c90b4493c62aeaa0e46abd54d99e 100644
 --- a/third_party/blink/renderer/core/exported/web_view_impl.cc
 +++ b/third_party/blink/renderer/core/exported/web_view_impl.cc
-@@ -3538,6 +3538,13 @@ PageScheduler* WebViewImpl::Scheduler() const {
+@@ -4176,6 +4176,13 @@ PageScheduler* WebViewImpl::Scheduler() const {
    return GetPage()->GetPageScheduler();
  }
  
@@ -128,7 +128,7 @@ index 864ad48116207b1190787d179f504bb95606a2fe..37cd63f04fb6384ef3590ddb5f173bc2
  void WebViewImpl::SetVisibilityState(
      mojom::blink::PageVisibilityState visibility_state,
      bool is_initial_state) {
-@@ -3548,7 +3555,8 @@ void WebViewImpl::SetVisibilityState(
+@@ -4186,7 +4193,8 @@ void WebViewImpl::SetVisibilityState(
    }
    GetPage()->SetVisibilityState(visibility_state, is_initial_state);
    GetPage()->GetPageScheduler()->SetPageVisible(
@@ -139,10 +139,10 @@ index 864ad48116207b1190787d179f504bb95606a2fe..37cd63f04fb6384ef3590ddb5f173bc2
  
  mojom::blink::PageVisibilityState WebViewImpl::GetVisibilityState() {
 diff --git a/third_party/blink/renderer/core/exported/web_view_impl.h b/third_party/blink/renderer/core/exported/web_view_impl.h
-index 753e0a7c964102e633b7fedce41090936f413034..c29e2f707c73dcadbdc83748c01bd6e102e0b145 100644
+index 0ecf3ca2bd69868a0e950ec83140a0a230e96914..741cfc5f8736f0b417222a99220543418d865a4a 100644
 --- a/third_party/blink/renderer/core/exported/web_view_impl.h
 +++ b/third_party/blink/renderer/core/exported/web_view_impl.h
-@@ -346,6 +346,7 @@ class CORE_EXPORT WebViewImpl final : public WebView,
+@@ -352,6 +352,7 @@ class CORE_EXPORT WebViewImpl final : public WebView,
    LocalDOMWindow* PagePopupWindow() const;
  
    PageScheduler* Scheduler() const override;
@@ -150,7 +150,7 @@ index 753e0a7c964102e633b7fedce41090936f413034..c29e2f707c73dcadbdc83748c01bd6e1
    void SetVisibilityState(mojom::blink::PageVisibilityState visibility_state,
                            bool is_initial_state) override;
    mojom::blink::PageVisibilityState GetVisibilityState() override;
-@@ -707,6 +708,8 @@ class CORE_EXPORT WebViewImpl final : public WebView,
+@@ -763,6 +764,8 @@ class CORE_EXPORT WebViewImpl final : public WebView,
    // WebViewImpl::Close while handling an input event.
    bool debug_inside_input_handling_ = false;
  

+ 3 - 3
patches/chromium/feat_allow_embedders_to_add_observers_on_created_hunspell.patch

@@ -5,10 +5,10 @@ Subject: feat: allow embedders to add observers on created hunspell
  dictionaries
 
 diff --git a/chrome/browser/spellchecker/spellcheck_service.cc b/chrome/browser/spellchecker/spellcheck_service.cc
-index ea9b6e90e0b29e0ef9f5bd01a3ea54dbd74f8854..205abd33258e569cc063fa470021bfb0e1cf0c79 100644
+index 09256573b848bbb248530f77619df47ddbeb8a0e..75b70e375ed1d680cbd2fba1ca73a4e2e5403fb6 100644
 --- a/chrome/browser/spellchecker/spellcheck_service.cc
 +++ b/chrome/browser/spellchecker/spellcheck_service.cc
-@@ -455,6 +455,9 @@ void SpellcheckService::LoadDictionaries() {
+@@ -459,6 +459,9 @@ void SpellcheckService::LoadDictionaries() {
          std::make_unique<SpellcheckHunspellDictionary>(
              dictionary, platform_spellcheck_language, context_, this));
      hunspell_dictionaries_.back()->AddObserver(this);
@@ -18,7 +18,7 @@ index ea9b6e90e0b29e0ef9f5bd01a3ea54dbd74f8854..205abd33258e569cc063fa470021bfb0
      hunspell_dictionaries_.back()->Load();
    }
  
-@@ -507,6 +510,20 @@ bool SpellcheckService::IsSpellcheckEnabled() const {
+@@ -511,6 +514,20 @@ bool SpellcheckService::IsSpellcheckEnabled() const {
           (!hunspell_dictionaries_.empty() || enable_if_uninitialized);
  }
  

+ 4 - 4
patches/chromium/feat_enable_offscreen_rendering_with_viz_compositor.patch

@@ -94,10 +94,10 @@ index 1026b739d283f0fc252fa2af83a6d4cf51bc8553..fe562ab60ce98b8bb0c5080a6428deb3
   private:
    const HWND hwnd_;
 diff --git a/components/viz/service/BUILD.gn b/components/viz/service/BUILD.gn
-index 99381735d4679817196140f49d507048ccd29539..dd29ceb0550cb72c0e267c07bf0b0583620398d9 100644
+index 3d3fc4f522707f6a5f16c936e55b49f480afd014..bafbc340e7d8969292c72ad4a9a95075ccd03841 100644
 --- a/components/viz/service/BUILD.gn
 +++ b/components/viz/service/BUILD.gn
-@@ -115,6 +115,8 @@ viz_component("service") {
+@@ -124,6 +124,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",
@@ -527,7 +527,7 @@ index 6b7fbb6cf13dc8ee6ade0878a9a2c1efc5d4d3f1..e2af75168cb914a7b3b4a6c9b6a28549
 +  Draw(gfx.mojom.Rect damage_rect) => ();
  };
 diff --git a/ui/compositor/compositor.h b/ui/compositor/compositor.h
-index 13665946e08abe7161b710b52d20307d9d248b84..eb530286d5e30691deee2285b6e78a8ee7dd6dd9 100644
+index 706c9cf26cb65b7874b88ed1015c18a1ef3f0ea7..e28267802a3349920e417cf31f588bc9827230e0 100644
 --- a/ui/compositor/compositor.h
 +++ b/ui/compositor/compositor.h
 @@ -75,6 +75,7 @@ class ExternalBeginFrameController;
@@ -564,7 +564,7 @@ index 13665946e08abe7161b710b52d20307d9d248b84..eb530286d5e30691deee2285b6e78a8e
    // 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
-@@ -435,6 +448,8 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient,
+@@ -431,6 +444,8 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient,
  
    std::unique_ptr<PendingBeginFrameArgs> pending_begin_frame_args_;
  

+ 14 - 5
patches/chromium/fix_disable_usage_of_setapplicationisdaemon_and.patch

@@ -7,10 +7,10 @@ Disable usage of SetApplicationIsDaemon and
 _LSSetApplicationLaunchServicesServerConnectionStatus in MAS builds
 
 diff --git a/sandbox/mac/system_services.cc b/sandbox/mac/system_services.cc
-index caa30bb378b30331f90057fe7ce3aec724104bf8..a766daa808495f7872051e129c6ad9f76f54e4fe 100644
+index 9f5261425162791668c2d15b7ffba091f831d652..590cfca18a648ab90c5f27e723dcb19f8a021ba3 100644
 --- a/sandbox/mac/system_services.cc
 +++ b/sandbox/mac/system_services.cc
-@@ -9,16 +9,19 @@
+@@ -9,6 +9,7 @@
  
  #include "base/mac/mac_logging.h"
  
@@ -18,8 +18,9 @@ index caa30bb378b30331f90057fe7ce3aec724104bf8..a766daa808495f7872051e129c6ad9f7
  extern "C" {
  OSStatus SetApplicationIsDaemon(Boolean isDaemon);
  void _LSSetApplicationLaunchServicesServerConnectionStatus(
-     uint64_t flags,
-     bool (^connection_allowed)(CFDictionaryRef options));
+@@ -19,10 +20,12 @@ void _LSSetApplicationLaunchServicesServerConnectionStatus(
+ // https://github.com/WebKit/webkit/commit/8da694b0b3febcc262653d01a45e946ce91845ed.
+ void _CSCheckFixDisable() API_AVAILABLE(macosx(10.15));
  }  // extern "C"
 +#endif
  
@@ -30,11 +31,19 @@ index caa30bb378b30331f90057fe7ce3aec724104bf8..a766daa808495f7872051e129c6ad9f7
    // Allow the process to continue without a LaunchServices ASN. The
    // INIT_Process function in HIServices will abort if it cannot connect to
    // launchservicesd to get an ASN. By setting this flag, HIServices skips
-@@ -32,6 +35,7 @@ void DisableLaunchServices() {
+@@ -36,12 +39,15 @@ void DisableLaunchServices() {
        0, ^bool(CFDictionaryRef options) {
          return false;
        });
 +  #endif
  }
  
+ void DisableCoreServicesCheckFix() {
++#if !defined(MAS_BUILD)
+   if (__builtin_available(macOS 10.15, *)) {
+     _CSCheckFixDisable();
+   }
++  #endif  
+ }
+ 
  }  // namespace sandbox

+ 7 - 7
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 34e1fe5d6cf8e9f44dc3def60cf40cd6de8d8d3e..98e8e8ac6cca5cffd9aafebbc06fa78e7917bb98 100644
+index 63dcc09dc00d58eb141a1833db8abe9e8c43f05d..8d6546111e1e3b52b02b19d2f49265c3d8f55cbc 100644
 --- a/chrome/browser/accessibility/accessibility_ui.cc
 +++ b/chrome/browser/accessibility/accessibility_ui.cc
 @@ -19,7 +19,9 @@
@@ -101,14 +101,14 @@ index 34e1fe5d6cf8e9f44dc3def60cf40cd6de8d8d3e..98e8e8ac6cca5cffd9aafebbc06fa78e
 +#if 0
    PrefService* pref = Profile::FromWebUI(web_ui())->GetPrefs();
    bool internal = pref->GetBoolean(prefs::kShowInternalAccessibilityTree);
-+#endif
-   base::string16 accessibility_contents_utf16 =
++#endif  
+   std::string accessibility_contents =
 -      web_contents->DumpAccessibilityTree(internal, property_filters);
 +      web_contents->DumpAccessibilityTree(true, property_filters);
-   result->SetString(kTreeField,
-                     base::UTF16ToUTF8(accessibility_contents_utf16));
+   result->SetString(kTreeField, accessibility_contents);
    CallJavascriptFunction(request_type, *(result.get()));
-@@ -623,7 +628,8 @@ void AccessibilityUIMessageHandler::RequestNativeUITree(
+ }
+@@ -622,7 +627,8 @@ void AccessibilityUIMessageHandler::RequestNativeUITree(
        content::AccessibilityTreeFormatter::PropertyFilter::ALLOW_EMPTY);
    AddPropertyFilters(property_filters, deny,
                       content::AccessibilityTreeFormatter::PropertyFilter::DENY);
@@ -118,7 +118,7 @@ index 34e1fe5d6cf8e9f44dc3def60cf40cd6de8d8d3e..98e8e8ac6cca5cffd9aafebbc06fa78e
    for (Browser* browser : *BrowserList::GetInstance()) {
      if (browser->session_id().id() == session_id) {
        std::unique_ptr<base::DictionaryValue> result(
-@@ -704,5 +710,7 @@ void AccessibilityUIMessageHandler::RequestAccessibilityEvents(
+@@ -703,5 +709,7 @@ void AccessibilityUIMessageHandler::RequestAccessibilityEvents(
  // static
  void AccessibilityUIMessageHandler::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {

+ 2 - 2
patches/chromium/fix_route_mouse_event_navigations_through_the_web_contents_delegate.patch

@@ -13,10 +13,10 @@ This patch can be removed once app.allowRendererProcessReuse is forced
 to true as then Chromiums assumptions around processes become correct.
 
 diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
-index 008f03d41669738b250ba99428bfd6d3baed1e85..14abe9e1e715d849826b07e533cb0900d6ab81e8 100644
+index 022e4a2aa0442939ef7bd5fde67470c2847f116f..60394e536151d928e7a067c9e0bb98946bb94ff2 100644
 --- a/content/browser/web_contents/web_contents_impl.cc
 +++ b/content/browser/web_contents/web_contents_impl.cc
-@@ -2852,11 +2852,13 @@ bool WebContentsImpl::HandleMouseEvent(const blink::WebMouseEvent& event) {
+@@ -3068,11 +3068,13 @@ bool WebContentsImpl::HandleMouseEvent(const blink::WebMouseEvent& event) {
      WebContentsImpl* outermost = GetOutermostWebContents();
      if (event.button == blink::WebPointerProperties::Button::kBack &&
          outermost->controller_.CanGoBack()) {

+ 1 - 1
patches/chromium/fix_swap_global_proxies_before_initializing_the_windows_proxies.patch

@@ -61,7 +61,7 @@ index 33d85e22813ee15ced7e8c41d1bc070c8dbbdd26..d9ff55f67ffa4208a6fa342ed24cd6e1
    // TODO(dcheng): Temporarily exposed to avoid include cycles. Remove the need
    // for this and remove this getter.
 diff --git a/third_party/blink/renderer/bindings/core/v8/window_proxy_manager.cc b/third_party/blink/renderer/bindings/core/v8/window_proxy_manager.cc
-index 90083d1fa2e2fed8173f6ff993c7a93da36510bf..9fa174ba67b1212a70f8951eda86d12ecb0df9a3 100644
+index f13c18e345543733cfb733f8083be2462079bb9a..1fb9cfa329dcd9d54b38bef3f1a282358e5cf2c4 100644
 --- a/third_party/blink/renderer/bindings/core/v8/window_proxy_manager.cc
 +++ b/third_party/blink/renderer/bindings/core/v8/window_proxy_manager.cc
 @@ -55,8 +55,11 @@ void WindowProxyManager::ReleaseGlobalProxies(

+ 27 - 27
patches/chromium/frame_host_manager.patch

@@ -8,7 +8,7 @@ and respond with custom instance. Also allows for us to at-runtime
 enable or disable this patch.
 
 diff --git a/content/browser/browsing_instance.cc b/content/browser/browsing_instance.cc
-index 4388cf3c8741807995e6afed3f8b13681cff08ee..6a2d743fac73d3b834e39ce215d06a2c0ea2c80a 100644
+index b5a6cce52d5a49d52e40f4806adc58704f186a3e..e9d94fe452b655382db62125758f9f73b10c29a0 100644
 --- a/content/browser/browsing_instance.cc
 +++ b/content/browser/browsing_instance.cc
 @@ -91,6 +91,13 @@ scoped_refptr<SiteInstanceImpl> BrowsingInstance::GetSiteInstanceForURL(
@@ -26,10 +26,10 @@ index 4388cf3c8741807995e6afed3f8b13681cff08ee..6a2d743fac73d3b834e39ce215d06a2c
                                               bool allow_default_instance) {
    scoped_refptr<SiteInstanceImpl> site_instance =
 diff --git a/content/browser/browsing_instance.h b/content/browser/browsing_instance.h
-index 028c197b8f25e64bf8c9a7df7fbd22a94d2d9de0..b9fd96f5b3d5e3d461b55c92b7518e75661f25cf 100644
+index bc0c8821f6a871a5d09f6e9fd97f52abe126370b..06a6b7805f710be51c84a3882922d9602cd7d80d 100644
 --- a/content/browser/browsing_instance.h
 +++ b/content/browser/browsing_instance.h
-@@ -144,6 +144,11 @@ class CONTENT_EXPORT BrowsingInstance final
+@@ -148,6 +148,11 @@ class CONTENT_EXPORT BrowsingInstance final
        const GURL& url,
        bool allow_default_instance);
  
@@ -41,11 +41,11 @@ index 028c197b8f25e64bf8c9a7df7fbd22a94d2d9de0..b9fd96f5b3d5e3d461b55c92b7518e75
    // Adds the given SiteInstance to our map, to ensure that we do not create
    // another SiteInstance for the same site.
    void RegisterSiteInstance(SiteInstanceImpl* site_instance);
-diff --git a/content/browser/frame_host/navigation_request.cc b/content/browser/frame_host/navigation_request.cc
-index 4039355c521baea795ae2eb3ee9dda3eaf6b6863..d7d34b06ab5e5d934d1bf73d5759116875d15a4d 100644
---- a/content/browser/frame_host/navigation_request.cc
-+++ b/content/browser/frame_host/navigation_request.cc
-@@ -1390,6 +1390,21 @@ void NavigationRequest::BeginNavigation() {
+diff --git a/content/browser/renderer_host/navigation_request.cc b/content/browser/renderer_host/navigation_request.cc
+index 9e83a156d7e1341054817765c347a9f91e31c669..071dc64c664d07796c420483813fd9bd36c8e170 100644
+--- a/content/browser/renderer_host/navigation_request.cc
++++ b/content/browser/renderer_host/navigation_request.cc
+@@ -1394,6 +1394,21 @@ void NavigationRequest::BeginNavigation() {
      // it immediately.
      EnterChildTraceEvent("ResponseStarted", this);
  
@@ -67,7 +67,7 @@ index 4039355c521baea795ae2eb3ee9dda3eaf6b6863..d7d34b06ab5e5d934d1bf73d57591168
      // Select an appropriate RenderFrameHost.
      render_frame_host_ =
          frame_tree_node_->render_manager()->GetFrameHostForNavigation(this);
-@@ -4970,6 +4985,7 @@ void NavigationRequest::CheckStateTransition(NavigationState state) const {
+@@ -5041,6 +5056,7 @@ void NavigationRequest::CheckStateTransition(NavigationState state) const {
            {WILL_START_REQUEST, {
                WILL_REDIRECT_REQUEST,
                WILL_PROCESS_RESPONSE,
@@ -75,7 +75,7 @@ index 4039355c521baea795ae2eb3ee9dda3eaf6b6863..d7d34b06ab5e5d934d1bf73d57591168
                READY_TO_COMMIT,
                DID_COMMIT,
                CANCELING,
-@@ -4983,10 +4999,14 @@ void NavigationRequest::CheckStateTransition(NavigationState state) const {
+@@ -5054,10 +5070,14 @@ void NavigationRequest::CheckStateTransition(NavigationState state) const {
                WILL_FAIL_REQUEST,
            }},
            {WILL_PROCESS_RESPONSE, {
@@ -90,10 +90,10 @@ index 4039355c521baea795ae2eb3ee9dda3eaf6b6863..d7d34b06ab5e5d934d1bf73d57591168
            {READY_TO_COMMIT, {
                NOT_STARTED,
                DID_COMMIT,
-diff --git a/content/browser/frame_host/navigation_request.h b/content/browser/frame_host/navigation_request.h
-index e8c07036146b0df87613b54a7ab455ad99190fc7..e0b1af16759fcafcc07f6c5a8a56d2d089f667fd 100644
---- a/content/browser/frame_host/navigation_request.h
-+++ b/content/browser/frame_host/navigation_request.h
+diff --git a/content/browser/renderer_host/navigation_request.h b/content/browser/renderer_host/navigation_request.h
+index 8d82710542bce9cd7491221c59071b1b9f32c24b..1c6e0d8ed3798be6ad0bd70d719c9c88cef475e3 100644
+--- a/content/browser/renderer_host/navigation_request.h
++++ b/content/browser/renderer_host/navigation_request.h
 @@ -129,6 +129,10 @@ class CONTENT_EXPORT NavigationRequest
      // asynchronous.
      WILL_PROCESS_RESPONSE,
@@ -105,11 +105,11 @@ index e8c07036146b0df87613b54a7ab455ad99190fc7..e0b1af16759fcafcc07f6c5a8a56d2d0
      // The response started on the IO thread and is ready to be committed.
      READY_TO_COMMIT,
  
-diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc
-index 4810af6f743062086a1d9cd4d1e6c4470e128bbe..1a7e4cb9561b2347fd0a9d9a19a15ddeb3a2f7c1 100644
---- a/content/browser/frame_host/render_frame_host_manager.cc
-+++ b/content/browser/frame_host/render_frame_host_manager.cc
-@@ -2537,6 +2537,16 @@ bool RenderFrameHostManager::InitRenderView(
+diff --git a/content/browser/renderer_host/render_frame_host_manager.cc b/content/browser/renderer_host/render_frame_host_manager.cc
+index abe9ae05e7b505c8c0cddbee7bf3d5e186548458..bf58d0f65e161e61d8303f5652f2d348ba2cbd6a 100644
+--- a/content/browser/renderer_host/render_frame_host_manager.cc
++++ b/content/browser/renderer_host/render_frame_host_manager.cc
+@@ -2550,6 +2550,16 @@ void RenderFrameHostManager::GetCoopCoepCrossOriginIsolationInfo(
  scoped_refptr<SiteInstance>
  RenderFrameHostManager::GetSiteInstanceForNavigationRequest(
      NavigationRequest* request) {
@@ -126,7 +126,7 @@ index 4810af6f743062086a1d9cd4d1e6c4470e128bbe..1a7e4cb9561b2347fd0a9d9a19a15dde
    SiteInstance* current_site_instance = render_frame_host_->GetSiteInstance();
  
    // All children of MHTML documents must be MHTML documents. They all live in
-@@ -2556,10 +2566,60 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest(
+@@ -2569,10 +2579,60 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest(
    //
    // TODO(clamy): We should also consider as a candidate SiteInstance the
    // speculative SiteInstance that was computed on redirects.
@@ -202,10 +202,10 @@ index 4810af6f743062086a1d9cd4d1e6c4470e128bbe..1a7e4cb9561b2347fd0a9d9a19a15dde
  }
  
 diff --git a/content/browser/site_instance_impl.cc b/content/browser/site_instance_impl.cc
-index 8cac1fb3f3824713f8548d783e059354b4836197..c924fc2676c8e5875eabca474f3d125eea7032e4 100644
+index ed973ac9ee40abc70ead81fba83573592dfd3efc..40c57cadaae712495bf28f0065ff4751c06629db 100644
 --- a/content/browser/site_instance_impl.cc
 +++ b/content/browser/site_instance_impl.cc
-@@ -545,6 +545,10 @@ bool SiteInstanceImpl::HasRelatedSiteInstance(const SiteInfo& site_info) {
+@@ -600,6 +600,10 @@ bool SiteInstanceImpl::HasRelatedSiteInstance(const SiteInfo& site_info) {
    return browsing_instance_->HasSiteInstance(site_info);
  }
  
@@ -217,10 +217,10 @@ index 8cac1fb3f3824713f8548d783e059354b4836197..c924fc2676c8e5875eabca474f3d125e
      const GURL& url) {
    return browsing_instance_->GetSiteInstanceForURL(
 diff --git a/content/browser/site_instance_impl.h b/content/browser/site_instance_impl.h
-index b70ed75a6500776fedcf75b5bce1f5e044664b4f..3d581373ff0251d8dbe6c09ecfc170c3d00026c6 100644
+index ecebcc5d30f66ef30325bb3cc0b367d3d9de2c82..f1a27bf06e416d876efe095f6f81acf26183fb83 100644
 --- a/content/browser/site_instance_impl.h
 +++ b/content/browser/site_instance_impl.h
-@@ -211,6 +211,7 @@ class CONTENT_EXPORT SiteInstanceImpl final : public SiteInstance,
+@@ -231,6 +231,7 @@ class CONTENT_EXPORT SiteInstanceImpl final : public SiteInstance,
    BrowserContext* GetBrowserContext() override;
    const GURL& GetSiteURL() override;
    scoped_refptr<SiteInstance> GetRelatedSiteInstance(const GURL& url) override;
@@ -229,7 +229,7 @@ index b70ed75a6500776fedcf75b5bce1f5e044664b4f..3d581373ff0251d8dbe6c09ecfc170c3
    size_t GetRelatedActiveContentsCount() override;
    bool RequiresDedicatedProcess() override;
 diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc
-index 593aaa7d7c9a170b2961a8d2c245c81fe138bd0f..31ad15e7e35d66129f47454b1e189d3d408faf6d 100644
+index 0c15d9a28e9b54f7adbe303c341cda42a6cffb73..2d2c8e61063ed3c34e4eb40a31ec62affcbe1f66 100644
 --- a/content/public/browser/content_browser_client.cc
 +++ b/content/public/browser/content_browser_client.cc
 @@ -63,6 +63,21 @@
@@ -255,10 +255,10 @@ index 593aaa7d7c9a170b2961a8d2c245c81fe138bd0f..31ad15e7e35d66129f47454b1e189d3d
      const MainFunctionParams& parameters) {
    return nullptr;
 diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h
-index 203ae3449f4547d9ba304f8aebb66becbe70d79d..929c0873542b8eaeb2e3e05079e43cf7a3bd2fb9 100644
+index 2b8c354a39677e91d25451044cc06d6343a510f9..464df770f76bacd7556dae52c7d59aa07d19762e 100644
 --- a/content/public/browser/content_browser_client.h
 +++ b/content/public/browser/content_browser_client.h
-@@ -250,8 +250,45 @@ class CONTENT_EXPORT ContentBrowserClient {
+@@ -252,8 +252,45 @@ class CONTENT_EXPORT ContentBrowserClient {
    using IsClipboardPasteAllowedCallback =
        base::OnceCallback<void(ClipboardPasteAllowed)>;
  

+ 1 - 1
patches/chromium/gin_enable_disable_v8_platform.patch

@@ -38,7 +38,7 @@ index f23af2d9738f3aa76e3a49301e1c3216ee4a64b4..ede178acabc63c3c33d6ce93efd5632b
    v8::Isolate* isolate() { return isolate_; }
  
 diff --git a/gin/v8_initializer.cc b/gin/v8_initializer.cc
-index 3484c3f307f346e6b7fc75c365b28a4935b99263..cbaa537b4e58b772df1e9f864ecaa50d0719c802 100644
+index 9ba60a7f928a24b4829dafdf9a7362ad58bd7c64..51fe2fa000e47ced3661ba581c52dceba93447fe 100644
 --- a/gin/v8_initializer.cc
 +++ b/gin/v8_initializer.cc
 @@ -191,12 +191,14 @@ enum LoadV8FileResult {

+ 6 - 6
patches/chromium/gpu_notify_when_dxdiag_request_fails.patch

@@ -12,10 +12,10 @@ rendering and there is no signal from browser process on this event
 to identify it.
 
 diff --git a/content/browser/gpu/gpu_data_manager_impl.cc b/content/browser/gpu/gpu_data_manager_impl.cc
-index 919ccd3f86aaecc841182de67ed94cab1008ae3d..cd9a0c9d1842daf1536b88e9d10c447ceb463d3c 100644
+index 694f63ecd2de241fd1a8b7b529bbd4d1bea78337..cc9679eb86f85239f5612d8db8200db5392f5bc5 100644
 --- a/content/browser/gpu/gpu_data_manager_impl.cc
 +++ b/content/browser/gpu/gpu_data_manager_impl.cc
-@@ -188,6 +188,11 @@ void GpuDataManagerImpl::TerminateInfoCollectionGpuProcess() {
+@@ -229,6 +229,11 @@ void GpuDataManagerImpl::TerminateInfoCollectionGpuProcess() {
    base::AutoLock auto_lock(lock_);
    private_->TerminateInfoCollectionGpuProcess();
  }
@@ -28,10 +28,10 @@ index 919ccd3f86aaecc841182de67ed94cab1008ae3d..cd9a0c9d1842daf1536b88e9d10c447c
  
  void GpuDataManagerImpl::UpdateGpuFeatureInfo(
 diff --git a/content/browser/gpu/gpu_data_manager_impl.h b/content/browser/gpu/gpu_data_manager_impl.h
-index 207e27419b1e82bfb1a59399b257b434a820d577..1aa131759978cae4cd3ee3f379282bd5bb03c1e9 100644
+index 7030549c94196877b690e8f683dda212534176ec..e9b216f65394e36525533768e087cd367d7bfaae 100644
 --- a/content/browser/gpu/gpu_data_manager_impl.h
 +++ b/content/browser/gpu/gpu_data_manager_impl.h
-@@ -95,6 +95,7 @@ class CONTENT_EXPORT GpuDataManagerImpl : public GpuDataManager,
+@@ -97,6 +97,7 @@ class CONTENT_EXPORT GpuDataManagerImpl : public GpuDataManager,
    // Called from BrowserMainLoop::BrowserThreadsStarted().
    void OnBrowserThreadsStarted();
    void TerminateInfoCollectionGpuProcess();
@@ -40,7 +40,7 @@ index 207e27419b1e82bfb1a59399b257b434a820d577..1aa131759978cae4cd3ee3f379282bd5
    // Update the GPU feature info. This updates the blocklist and enabled status
    // of GPU rasterization. In the future this will be used for more features.
 diff --git a/content/browser/gpu/gpu_data_manager_impl_private.cc b/content/browser/gpu/gpu_data_manager_impl_private.cc
-index 6f93628f837950cc9af5ca09179a1894c0b215ad..4c70fd640a7a2c75894826552649f46a49223c87 100644
+index 879e233fa550b3aad94b64fb1ac603cbae782922..cecf9738c6e33c766fcadea8c71b6656fb67784d 100644
 --- a/content/browser/gpu/gpu_data_manager_impl_private.cc
 +++ b/content/browser/gpu/gpu_data_manager_impl_private.cc
 @@ -1060,6 +1060,11 @@ void GpuDataManagerImplPrivate::TerminateInfoCollectionGpuProcess() {
@@ -56,7 +56,7 @@ index 6f93628f837950cc9af5ca09179a1894c0b215ad..4c70fd640a7a2c75894826552649f46a
  
  void GpuDataManagerImplPrivate::UpdateGpuFeatureInfo(
 diff --git a/content/browser/gpu/gpu_data_manager_impl_private.h b/content/browser/gpu/gpu_data_manager_impl_private.h
-index 18f1d94764048b19a53b68622ea2f133ccf4c11b..1e6230534a85ccd23736a73f7285a5fed6ad7f0d 100644
+index 27b517d56af0c687c15b7e2d2db37798b63df3e8..aa92f8b6e12c762cdb81090d072c76742ac9489c 100644
 --- a/content/browser/gpu/gpu_data_manager_impl_private.h
 +++ b/content/browser/gpu/gpu_data_manager_impl_private.h
 @@ -75,6 +75,7 @@ class CONTENT_EXPORT GpuDataManagerImplPrivate {

+ 2 - 2
patches/chromium/gritsettings_resource_ids.patch

@@ -6,10 +6,10 @@ Subject: gritsettings_resource_ids.patch
 Add electron resources file to the list of resource ids generation.
 
 diff --git a/tools/gritsettings/resource_ids.spec b/tools/gritsettings/resource_ids.spec
-index 1a4acc42f9ee7390e8d7355835bbb885fe603fb6..65e95e4796e203f72cec2e6afe653e3af9bf7e59 100644
+index 9ee0acf3ade8dd4789f40a2b17bfeabbfa5e3cf8..edd5b3858cdcb40e0aeb0b35cd711ed0a1652e5f 100644
 --- a/tools/gritsettings/resource_ids.spec
 +++ b/tools/gritsettings/resource_ids.spec
-@@ -665,6 +665,11 @@
+@@ -675,6 +675,11 @@
      "includes": [3880],
    },
  

+ 1 - 1
patches/chromium/mas-audiodeviceduck.patch

@@ -6,7 +6,7 @@ Subject: mas-audiodeviceduck.patch
 Removes usage of the AudioDeviceDuck private API.
 
 diff --git a/media/audio/mac/audio_low_latency_input_mac.cc b/media/audio/mac/audio_low_latency_input_mac.cc
-index 7982674799f68ab331f08291ff72244c2e7356bb..e9db50fb703a5438444f50d064702d93ab731dde 100644
+index 0aceabbd42ede80afd7b4e90b072d79672065b58..86810fe719fa59aa4ae54c8a867da0dfea3c77b5 100644
 --- a/media/audio/mac/audio_low_latency_input_mac.cc
 +++ b/media/audio/mac/audio_low_latency_input_mac.cc
 @@ -33,19 +33,23 @@

+ 10 - 10
patches/chromium/mas_disable_remote_accessibility.patch

@@ -47,10 +47,10 @@ index 9ddda9116e7284cbccde8a51e23ad7560dd06367..e846091ad99b0154636489e53491209f
  
  }  // 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 2ee45cb069ec5d78d9c7a3f61fdd1d444a590f41..badc4323b910f8e3957583e05af303472cb204f6 100644
+index cad39d6496aa138daa121b9fa08512cbde55dc72..cf0806ac316a9927bc917cedea98d865a641d1ef 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
-@@ -543,10 +543,12 @@ NSUInteger CountBridgedWindows(NSArray* child_windows) {
+@@ -550,10 +550,12 @@ NSUInteger CountBridgedWindows(NSArray* child_windows) {
    // this should be treated as an error and caught early.
    CHECK(bridged_view_);
  
@@ -90,7 +90,7 @@ index c3a9fbf0f9d2b80c1de42a22ad094a286f0b559b..02493d4b62c98a3aebd3e460c459218a
    DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostNSViewBridgeOwner);
  };
 diff --git a/content/browser/renderer_host/render_widget_host_view_mac.h b/content/browser/renderer_host/render_widget_host_view_mac.h
-index 82f2b94d4fe1688fd19d5321c4a4398dda3b8d33..b00517cb5b5acdce7b58552967858b93d2474110 100644
+index 76a552ec5c9db4f2ffade1a809fa6d719105295a..b432685a5c4dc99618663c13e43ee971a5c8b542 100644
 --- a/content/browser/renderer_host/render_widget_host_view_mac.h
 +++ b/content/browser/renderer_host/render_widget_host_view_mac.h
 @@ -47,7 +47,9 @@ class ScopedPasswordInputEnabler;
@@ -103,7 +103,7 @@ index 82f2b94d4fe1688fd19d5321c4a4398dda3b8d33..b00517cb5b5acdce7b58552967858b93
  @class RenderWidgetHostViewCocoa;
  
  namespace content {
-@@ -641,10 +643,12 @@ class CONTENT_EXPORT RenderWidgetHostViewMac
+@@ -647,10 +649,12 @@ class CONTENT_EXPORT RenderWidgetHostViewMac
    // EnsureSurfaceSynchronizedForWebTest().
    uint32_t latest_capture_sequence_number_ = 0u;
  
@@ -117,10 +117,10 @@ index 82f2b94d4fe1688fd19d5321c4a4398dda3b8d33..b00517cb5b5acdce7b58552967858b93
    // 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 6d7cef71ce502f430479b4ad763ecee6080de397..740cf03a50818b6a769abed1d487b0c9a6be2c26 100644
+index 338811a3c01f2adac24f851e6952a5562965afaf..2fde2824d4eeb6c4ce5e95a175183fa3f5061fbb 100644
 --- a/content/browser/renderer_host/render_widget_host_view_mac.mm
 +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
-@@ -233,8 +233,10 @@
+@@ -235,8 +235,10 @@
  void RenderWidgetHostViewMac::MigrateNSViewBridge(
      remote_cocoa::mojom::Application* remote_cocoa_application,
      uint64_t parent_ns_view_id) {
@@ -131,7 +131,7 @@ index 6d7cef71ce502f430479b4ad763ecee6080de397..740cf03a50818b6a769abed1d487b0c9
  
    // Disconnect from the previous bridge (this will have the effect of
    // destroying the associated bridge), and close the receiver (to allow it
-@@ -1385,8 +1387,10 @@ void CombineTextNodesAndMakeCallback(SpeechCallback callback,
+@@ -1388,8 +1390,10 @@ void CombineTextNodesAndMakeCallback(SpeechCallback callback,
  
  gfx::NativeViewAccessible
  RenderWidgetHostViewMac::AccessibilityGetNativeViewAccessibleForWindow() {
@@ -142,7 +142,7 @@ index 6d7cef71ce502f430479b4ad763ecee6080de397..740cf03a50818b6a769abed1d487b0c9
    return [GetInProcessNSView() window];
  }
  
-@@ -1418,9 +1422,11 @@ void CombineTextNodesAndMakeCallback(SpeechCallback callback,
+@@ -1421,9 +1425,11 @@ void CombineTextNodesAndMakeCallback(SpeechCallback callback,
  }
  
  void RenderWidgetHostViewMac::SetAccessibilityWindow(NSWindow* window) {
@@ -154,7 +154,7 @@ index 6d7cef71ce502f430479b4ad763ecee6080de397..740cf03a50818b6a769abed1d487b0c9
  }
  
  bool RenderWidgetHostViewMac::SyncIsWidgetForMainFrame(
-@@ -1907,12 +1913,14 @@ void CombineTextNodesAndMakeCallback(SpeechCallback callback,
+@@ -1910,12 +1916,14 @@ void CombineTextNodesAndMakeCallback(SpeechCallback callback,
  
  void RenderWidgetHostViewMac::SetRemoteAccessibilityWindowToken(
      const std::vector<uint8_t>& window_token) {
@@ -170,7 +170,7 @@ index 6d7cef71ce502f430479b4ad763ecee6080de397..740cf03a50818b6a769abed1d487b0c9
  
  ///////////////////////////////////////////////////////////////////////////////
 diff --git a/ui/base/BUILD.gn b/ui/base/BUILD.gn
-index 196069945632bc613070b76caf8a895ca245ac5e..e0c861592f58f21417d6c128c0b9386efdaded90 100644
+index 7f993aa14fc1f179f4fa952241761bb826c787e9..fa6d313fb4e061dc34409696945241c9be0a0dfa 100644
 --- a/ui/base/BUILD.gn
 +++ b/ui/base/BUILD.gn
 @@ -313,6 +313,13 @@ component("base") {

+ 3 - 3
patches/chromium/mas_disable_remote_layer.patch

@@ -72,10 +72,10 @@ index 67e0efb23c717c3194f27695215a8bd20dbbb957..cf02fab328d9fe7a6e9f53c712a7c1c8
        IOSurfaceRef io_surface =
            ca_layer_tree_coordinator_->GetIOSurfaceForDisplay();
 diff --git a/ui/accelerated_widget_mac/display_ca_layer_tree.mm b/ui/accelerated_widget_mac/display_ca_layer_tree.mm
-index 0db8f3e223e3cb8e289af63a50104fb6823ed46a..d7969cf08317731bf8e1c8545a07734412593e37 100644
+index a55934320e475af475f7169a5b30954c7e98d775..78d626f2c5be20106ebd54b71a9b0663c55086da 100644
 --- a/ui/accelerated_widget_mac/display_ca_layer_tree.mm
 +++ b/ui/accelerated_widget_mac/display_ca_layer_tree.mm
-@@ -98,6 +98,7 @@ - (void)setContentsChanged;
+@@ -99,6 +99,7 @@ - (void)setContentsChanged;
  }
  
  void DisplayCALayerTree::GotCALayerFrame(uint32_t ca_context_id) {
@@ -83,7 +83,7 @@ index 0db8f3e223e3cb8e289af63a50104fb6823ed46a..d7969cf08317731bf8e1c8545a077344
    // Early-out if the remote layer has not changed.
    if ([remote_layer_ contextId] == ca_context_id)
      return;
-@@ -122,6 +123,9 @@ - (void)setContentsChanged;
+@@ -123,6 +124,9 @@ - (void)setContentsChanged;
      [io_surface_layer_ removeFromSuperlayer];
      io_surface_layer_.reset();
    }

+ 37 - 37
patches/chromium/mas_no_private_api.patch

@@ -7,10 +7,10 @@ Guard usages in blink of private Mac APIs by MAS_BUILD, so they can be
 excluded for people who want to submit their apps to the Mac App store.
 
 diff --git a/content/browser/accessibility/accessibility_tree_formatter_mac.mm b/content/browser/accessibility/accessibility_tree_formatter_mac.mm
-index f60a93dd95c451d262bd61383af965a3d6068aa8..a1ecc3010413b1c51ea24bb8fe5a9dd562e32fe9 100644
+index 12aa59f04809f8092f2f0e9640bd6fe2b4c68ac2..34c1a25f8bedafd96effcca60d36bb7f95433e52 100644
 --- a/content/browser/accessibility/accessibility_tree_formatter_mac.mm
 +++ b/content/browser/accessibility/accessibility_tree_formatter_mac.mm
-@@ -297,7 +297,7 @@ OptionalNSObject InvokeAttributeFor(
+@@ -379,7 +379,7 @@ OptionalNSObject InvokeAttributeFor(
        0 == strcmp([value objCType], @encode(NSRange))) {
      return PopulateRange([value rangeValue]);
    }
@@ -19,16 +19,16 @@ index f60a93dd95c451d262bd61383af965a3d6068aa8..a1ecc3010413b1c51ea24bb8fe5a9dd5
    // AXTextMarker
    if (content::IsAXTextMarker(value)) {
      return PopulateTextPosition(content::AXTextMarkerToPosition(value).get(),
-@@ -308,7 +308,7 @@ OptionalNSObject InvokeAttributeFor(
+@@ -390,7 +390,7 @@ OptionalNSObject InvokeAttributeFor(
    if (content::IsAXTextMarkerRange(value)) {
-     return PopulateTextMarkerRange(value, line_indexes_map);
+     return PopulateTextMarkerRange(value, line_indexer);
    }
 -
 +#endif
-   // Accessible object
-   if ([value isKindOfClass:[BrowserAccessibilityCocoa class]]) {
-     return base::Value(NodeToLineIndex(value, line_indexes_map));
-@@ -359,7 +359,7 @@ OptionalNSObject InvokeAttributeFor(
+   // AXValue
+   if (CFGetTypeID(value) == AXValueGetTypeID()) {
+     AXValueType type = AXValueGetType(static_cast<AXValueRef>(value));
+@@ -500,7 +500,7 @@ OptionalNSObject InvokeAttributeFor(
                      kConstValuePrefix + affinity);
    return set;
  }
@@ -36,21 +36,21 @@ index f60a93dd95c451d262bd61383af965a3d6068aa8..a1ecc3010413b1c51ea24bb8fe5a9dd5
 +#ifndef MAS_BUILD
  base::Value AccessibilityTreeFormatterMac::PopulateTextMarkerRange(
      id object,
-     const LineIndexesMap& line_indexes_map) const {
-@@ -374,7 +374,7 @@ OptionalNSObject InvokeAttributeFor(
-   dict.SetPath("focus", PopulateTextPosition(range.focus(), line_indexes_map));
+     const LineIndexer* line_indexer) const {
+@@ -514,7 +514,7 @@ OptionalNSObject InvokeAttributeFor(
+   dict.SetPath("focus", PopulateTextPosition(range.focus(), line_indexer));
    return dict;
  }
 -
 +#endif
  base::Value AccessibilityTreeFormatterMac::PopulateArray(
      NSArray* node_array,
-     const LineIndexesMap& line_indexes_map) const {
+     const LineIndexer* line_indexer) const {
 diff --git a/content/browser/accessibility/accessibility_tree_formatter_utils_mac.mm b/content/browser/accessibility/accessibility_tree_formatter_utils_mac.mm
-index 71126d0224fd796469d7865cffe336ba3178e796..e255c225c4d4202966e76594af2fb4084c8cb950 100644
+index 540afa34eb0ab6597f799767988b3d8cb8f4bb9c..feb109c62708d107cc475d8332cd1f969969733b 100644
 --- a/content/browser/accessibility/accessibility_tree_formatter_utils_mac.mm
 +++ b/content/browser/accessibility/accessibility_tree_formatter_utils_mac.mm
-@@ -152,6 +152,7 @@
+@@ -267,6 +267,7 @@ id ParameterizedAttributeValueOf(const id node,
    if (property_name == "AXIndexForChildUIElement") {  // UIElement
      return OptionalNSObject::NotNilOrError(PropertyNodeToUIElement(arg_node));
    }
@@ -58,7 +58,7 @@ index 71126d0224fd796469d7865cffe336ba3178e796..e255c225c4d4202966e76594af2fb408
    if (property_name == "AXIndexForTextMarker") {  // TextMarker
      return OptionalNSObject::NotNilOrError(PropertyNodeToTextMarker(arg_node));
    }
-@@ -159,6 +160,7 @@
+@@ -274,6 +275,7 @@ id ParameterizedAttributeValueOf(const id node,
      return OptionalNSObject::NotNilOrError(
          PropertyNodeToTextMarkerRange(arg_node));
    }
@@ -66,7 +66,7 @@ index 71126d0224fd796469d7865cffe336ba3178e796..e255c225c4d4202966e76594af2fb408
  
    return OptionalNSObject::NotApplicable();
  }
-@@ -224,6 +226,7 @@
+@@ -339,6 +341,7 @@ id ParameterizedAttributeValueOf(const id node,
    return uielement;
  }
  
@@ -74,7 +74,7 @@ index 71126d0224fd796469d7865cffe336ba3178e796..e255c225c4d4202966e76594af2fb408
  id AttributeInvoker::DictNodeToTextMarker(const PropertyNode& dictnode) const {
    if (!dictnode.IsDict()) {
      TEXTMARKER_FAIL(dictnode, "dictionary is expected")
-@@ -291,6 +294,7 @@
+@@ -406,6 +409,7 @@ id ParameterizedAttributeValueOf(const id node,
  
    return content::AXTextMarkerRangeFrom(anchor_textmarker, focus_textmarker);
  }
@@ -126,7 +126,7 @@ index cb253906ddd9b70df1618a1c3738fc64389b5432..318af1ec3a11ee53a1146909f76c9cea
  // is concerned.
  @property(nonatomic, readonly) NSString* subrole;
 diff --git a/content/browser/accessibility/browser_accessibility_cocoa.mm b/content/browser/accessibility/browser_accessibility_cocoa.mm
-index d203e3a6a80d3347e22c84384359de3df50a1f0c..7d38e86e76e1f1ae70300141091d0fb98fdc208c 100644
+index cf856f59f0e1990cb9b249ab264a87c27f452525..96b6fa030c2a36ab5c4217ad19f0bfe4d5212bb8 100644
 --- a/content/browser/accessibility/browser_accessibility_cocoa.mm
 +++ b/content/browser/accessibility/browser_accessibility_cocoa.mm
 @@ -208,6 +208,7 @@
@@ -216,7 +216,7 @@ index d203e3a6a80d3347e22c84384359de3df50a1f0c..7d38e86e76e1f1ae70300141091d0fb9
        {NSAccessibilitySizeAttribute, @"size"},
        {NSAccessibilitySortDirectionAttribute, @"sortDirection"},
        {NSAccessibilitySubroleAttribute, @"subrole"},
-@@ -1350,6 +1364,7 @@ - (NSNumber*)enabled {
+@@ -1337,6 +1351,7 @@ - (NSNumber*)enabled {
                                    ax::mojom::Restriction::kDisabled];
  }
  
@@ -224,7 +224,7 @@ index d203e3a6a80d3347e22c84384359de3df50a1f0c..7d38e86e76e1f1ae70300141091d0fb9
  // Returns a text marker that points to the last character in the document that
  // can be selected with VoiceOver.
  - (id)endTextMarker {
-@@ -1360,6 +1375,7 @@ - (id)endTextMarker {
+@@ -1347,6 +1362,7 @@ - (id)endTextMarker {
    BrowserAccessibilityPositionInstance position = root->CreatePositionAt(0);
    return CreateTextMarker(position->CreatePositionAtEndOfAnchor());
  }
@@ -232,7 +232,7 @@ index d203e3a6a80d3347e22c84384359de3df50a1f0c..7d38e86e76e1f1ae70300141091d0fb9
  
  - (NSNumber*)expanded {
    if (![self instanceActive])
-@@ -1509,6 +1525,8 @@ - (NSNumber*)index {
+@@ -1496,6 +1512,8 @@ - (NSNumber*)index {
    return nil;
  }
  
@@ -241,7 +241,7 @@ index d203e3a6a80d3347e22c84384359de3df50a1f0c..7d38e86e76e1f1ae70300141091d0fb9
  - (NSNumber*)insertionPointLineNumber {
    if (![self instanceActive])
      return nil;
-@@ -1531,6 +1549,7 @@ - (NSNumber*)insertionPointLineNumber {
+@@ -1518,6 +1536,7 @@ - (NSNumber*)insertionPointLineNumber {
                         caretPosition->AsTextPosition()->text_offset());
    return @(std::distance(lineBreaks.begin(), iterator));
  }
@@ -249,7 +249,7 @@ index d203e3a6a80d3347e22c84384359de3df50a1f0c..7d38e86e76e1f1ae70300141091d0fb9
  
  // Returns whether or not this node should be ignored in the
  // accessibility tree.
-@@ -1894,8 +1913,12 @@ - (BOOL)shouldExposeTitleUIElement {
+@@ -1881,8 +1900,12 @@ - (BOOL)shouldExposeTitleUIElement {
        return content::AXTextEdit(newValue, base::string16(), nil);
      }
    }
@@ -262,7 +262,7 @@ index d203e3a6a80d3347e22c84384359de3df50a1f0c..7d38e86e76e1f1ae70300141091d0fb9
  }
  
  - (BOOL)instanceActive {
-@@ -2225,6 +2248,7 @@ - (NSArray*)selectedChildren {
+@@ -2212,6 +2235,7 @@ - (NSArray*)selectedChildren {
    return ret;
  }
  
@@ -270,7 +270,7 @@ index d203e3a6a80d3347e22c84384359de3df50a1f0c..7d38e86e76e1f1ae70300141091d0fb9
  - (NSString*)selectedText {
    if (![self instanceActive])
      return nil;
-@@ -2236,11 +2260,13 @@ - (NSString*)selectedText {
+@@ -2223,11 +2247,13 @@ - (NSString*)selectedText {
      return nil;
    return base::SysUTF16ToNSString(range.GetText());
  }
@@ -284,7 +284,7 @@ index d203e3a6a80d3347e22c84384359de3df50a1f0c..7d38e86e76e1f1ae70300141091d0fb9
  - (NSValue*)selectedTextRange {
    if (![self instanceActive])
      return nil;
-@@ -2261,7 +2287,9 @@ - (NSValue*)selectedTextRange {
+@@ -2248,7 +2274,9 @@ - (NSValue*)selectedTextRange {
    int selLength = range.GetText().length();
    return [NSValue valueWithRange:NSMakeRange(selStart, selLength)];
  }
@@ -294,7 +294,7 @@ index d203e3a6a80d3347e22c84384359de3df50a1f0c..7d38e86e76e1f1ae70300141091d0fb9
  - (id)selectedTextMarkerRange {
    if (![self instanceActive])
      return nil;
-@@ -2269,6 +2297,7 @@ - (id)selectedTextMarkerRange {
+@@ -2256,6 +2284,7 @@ - (id)selectedTextMarkerRange {
    // words correctly.
    return CreateTextMarkerRange(GetSelectedRange(*_owner).AsBackwardRange());
  }
@@ -302,7 +302,7 @@ index d203e3a6a80d3347e22c84384359de3df50a1f0c..7d38e86e76e1f1ae70300141091d0fb9
  
  - (NSValue*)size {
    if (![self instanceActive])
-@@ -2301,6 +2330,7 @@ - (NSString*)sortDirection {
+@@ -2288,6 +2317,7 @@ - (NSString*)sortDirection {
    return nil;
  }
  
@@ -310,7 +310,7 @@ index d203e3a6a80d3347e22c84384359de3df50a1f0c..7d38e86e76e1f1ae70300141091d0fb9
  // Returns a text marker that points to the first character in the document that
  // can be selected with VoiceOver.
  - (id)startTextMarker {
-@@ -2311,6 +2341,7 @@ - (id)startTextMarker {
+@@ -2298,6 +2328,7 @@ - (id)startTextMarker {
    BrowserAccessibilityPositionInstance position = root->CreatePositionAt(0);
    return CreateTextMarker(position->CreatePositionAtStartOfAnchor());
  }
@@ -318,7 +318,7 @@ index d203e3a6a80d3347e22c84384359de3df50a1f0c..7d38e86e76e1f1ae70300141091d0fb9
  
  // Returns a subrole based upon the role.
  - (NSString*)subrole {
-@@ -2630,11 +2661,13 @@ - (NSAttributedString*)attributedValueForRange:(NSRange)range {
+@@ -2617,11 +2648,13 @@ - (NSAttributedString*)attributedValueForRange:(NSRange)range {
    NSMutableAttributedString* attributedInnerText =
        [[[NSMutableAttributedString alloc]
            initWithString:base::SysUTF16ToNSString(innerText)] autorelease];
@@ -332,7 +332,7 @@ index d203e3a6a80d3347e22c84384359de3df50a1f0c..7d38e86e76e1f1ae70300141091d0fb9
  
    return [attributedInnerText attributedSubstringFromRange:range];
  }
-@@ -2738,9 +2771,8 @@ - (id)accessibilityAttributeValue:(NSString*)attribute
+@@ -2725,9 +2758,8 @@ - (id)accessibilityAttributeValue:(NSString*)attribute
        return ToBrowserAccessibilityCocoa(cell);
    }
  
@@ -344,7 +344,7 @@ index d203e3a6a80d3347e22c84384359de3df50a1f0c..7d38e86e76e1f1ae70300141091d0fb9
      BrowserAccessibilityPositionInstance position =
          CreatePositionFromTextMarker(parameter);
      if (!position->IsNullPosition())
-@@ -3053,6 +3085,7 @@ AXPlatformRange range(std::move(lineStartPosition),
+@@ -3040,6 +3072,7 @@ AXPlatformRange range(std::move(lineStartPosition),
  
      return CreateTextMarker(root->CreatePositionAt(index));
    }
@@ -352,7 +352,7 @@ index d203e3a6a80d3347e22c84384359de3df50a1f0c..7d38e86e76e1f1ae70300141091d0fb9
  
    if ([attribute isEqualToString:
                       NSAccessibilityBoundsForRangeParameterizedAttribute]) {
-@@ -3088,6 +3121,7 @@ AXPlatformRange range(std::move(lineStartPosition),
+@@ -3075,6 +3108,7 @@ AXPlatformRange range(std::move(lineStartPosition),
      return nil;
    }
  
@@ -360,7 +360,7 @@ index d203e3a6a80d3347e22c84384359de3df50a1f0c..7d38e86e76e1f1ae70300141091d0fb9
    if ([attribute
            isEqualToString:
                NSAccessibilityLineTextMarkerRangeForTextMarkerParameterizedAttribute]) {
-@@ -3202,6 +3236,7 @@ AXPlatformRange range(std::move(lineStartPosition),
+@@ -3189,6 +3223,7 @@ AXPlatformRange range(std::move(lineStartPosition),
  
      return @(child->GetIndexInParent());
    }
@@ -389,7 +389,7 @@ index f77433fff5426dd174865aad3d290d787764174c..d64e4fbcf44590e9132c2338819d2aa7
    }
  
 diff --git a/content/renderer/renderer_main_platform_delegate_mac.mm b/content/renderer/renderer_main_platform_delegate_mac.mm
-index 28ca1646af0b0cce40d27baec71cbe65adc334fa..bae65c1f485bc02eb9ef2ebf7018af4a5a492397 100644
+index 894ac47e596c1c96a7e0659be80ed8a5629d0304..eca797a24df79b8502b9698e6ed8830ad1c5cb59 100644
 --- a/content/renderer/renderer_main_platform_delegate_mac.mm
 +++ b/content/renderer/renderer_main_platform_delegate_mac.mm
 @@ -10,9 +10,11 @@
@@ -412,10 +412,10 @@ index 28ca1646af0b0cce40d27baec71cbe65adc334fa..bae65c1f485bc02eb9ef2ebf7018af4a
    // Tell the WindowServer that we don't want to make any future connections.
    // This will return Success as long as there are no open connections, which
    // is what we want.
-@@ -29,6 +32,7 @@ void DisableSystemServices() {
-   CHECK_EQ(result, kCGErrorSuccess);
+@@ -30,6 +33,7 @@ void DisableSystemServices() {
  
    sandbox::DisableLaunchServices();
+   sandbox::DisableCoreServicesCheckFix();
 +#endif
  }
  

+ 12 - 12
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 ae873fbaf3662fa9e5c71068a5c1cad491cdb104..10ba3b1ad5d8bacbfd0f8b947db139058cd2d5f8 100644
+index 591c018e1e7b1f859c9871785371c60afdff89a7..fe30fc94f752e08839913868b8464a349fe541fe 100644
 --- a/services/network/network_context.cc
 +++ b/services/network/network_context.cc
 @@ -115,6 +115,11 @@
@@ -22,7 +22,7 @@ index ae873fbaf3662fa9e5c71068a5c1cad491cdb104..10ba3b1ad5d8bacbfd0f8b947db13905
  #if BUILDFLAG(IS_CT_SUPPORTED)
  #include "components/certificate_transparency/chrome_ct_policy_enforcer.h"
  #include "components/certificate_transparency/chrome_require_ct_delegate.h"
-@@ -371,6 +376,79 @@ bool SCTAuditingDelegate::IsSCTAuditingEnabled() {
+@@ -372,6 +377,79 @@ bool SCTAuditingDelegate::IsSCTAuditingEnabled() {
  
  }  // namespace
  
@@ -102,7 +102,7 @@ index ae873fbaf3662fa9e5c71068a5c1cad491cdb104..10ba3b1ad5d8bacbfd0f8b947db13905
  constexpr uint32_t NetworkContext::kMaxOutstandingRequestsPerProcess;
  
  NetworkContext::PendingCertVerify::PendingCertVerify() = default;
-@@ -563,6 +641,13 @@ void NetworkContext::SetClient(
+@@ -561,6 +639,13 @@ void NetworkContext::SetClient(
    client_.Bind(std::move(client));
  }
  
@@ -116,7 +116,7 @@ index ae873fbaf3662fa9e5c71068a5c1cad491cdb104..10ba3b1ad5d8bacbfd0f8b947db13905
  void NetworkContext::CreateURLLoaderFactory(
      mojo::PendingReceiver<mojom::URLLoaderFactory> receiver,
      mojom::URLLoaderFactoryParamsPtr params) {
-@@ -1818,8 +1903,9 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext(
+@@ -1819,8 +1904,9 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext(
           "NetworkContext should pass CertVerifierServiceRemoteParams.";
  
    std::unique_ptr<net::CertVerifier> cert_verifier;
@@ -127,7 +127,7 @@ index ae873fbaf3662fa9e5c71068a5c1cad491cdb104..10ba3b1ad5d8bacbfd0f8b947db13905
    } else {
      if (params_->cert_verifier_params &&
          params_->cert_verifier_params->is_remote_params()) {
-@@ -1847,14 +1933,14 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext(
+@@ -1848,14 +1934,14 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext(
          cert_net_fetcher_ =
              base::MakeRefCounted<net::CertNetFetcherURLRequest>();
  
@@ -145,7 +145,7 @@ index ae873fbaf3662fa9e5c71068a5c1cad491cdb104..10ba3b1ad5d8bacbfd0f8b947db13905
  
  #if defined(OS_CHROMEOS)
      cert_verifier_with_trust_anchors_ =
-@@ -1863,13 +1949,27 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext(
+@@ -1864,13 +1950,27 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext(
      UpdateAdditionalCertificates(
          std::move(params_->initial_additional_certificates));
      cert_verifier_with_trust_anchors_->InitializeOnIOThread(
@@ -178,10 +178,10 @@ index ae873fbaf3662fa9e5c71068a5c1cad491cdb104..10ba3b1ad5d8bacbfd0f8b947db13905
    std::unique_ptr<NetworkServiceNetworkDelegate> network_delegate =
        std::make_unique<NetworkServiceNetworkDelegate>(
 diff --git a/services/network/network_context.h b/services/network/network_context.h
-index 2025d29440b96a30feb62ba12c62718bbd41297d..3700f3ee61d4eb33a4574f3270c10a70b00057e3 100644
+index 615d42ea815743b264adb6615cff89c7677819a4..e2a565663abea1b13beaaa33e83d8102da693e35 100644
 --- a/services/network/network_context.h
 +++ b/services/network/network_context.h
-@@ -87,6 +87,7 @@ class DomainReliabilityMonitor;
+@@ -86,6 +86,7 @@ class DomainReliabilityMonitor;
  
  namespace network {
  class CertVerifierWithTrustAnchors;
@@ -189,7 +189,7 @@ index 2025d29440b96a30feb62ba12c62718bbd41297d..3700f3ee61d4eb33a4574f3270c10a70
  class CookieManager;
  class ExpectCTReporter;
  class HostResolver;
-@@ -190,6 +191,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
+@@ -189,6 +190,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
    void CreateURLLoaderFactory(
        mojo::PendingReceiver<mojom::URLLoaderFactory> receiver,
        mojom::URLLoaderFactoryParamsPtr params) override;
@@ -198,7 +198,7 @@ index 2025d29440b96a30feb62ba12c62718bbd41297d..3700f3ee61d4eb33a4574f3270c10a70
    void ResetURLLoaderFactories() override;
    void GetCookieManager(
        mojo::PendingReceiver<mojom::CookieManager> receiver) override;
-@@ -674,6 +677,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
+@@ -673,6 +676,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
    CertVerifierWithTrustAnchors* cert_verifier_with_trust_anchors_ = nullptr;
  #endif
  
@@ -208,7 +208,7 @@ index 2025d29440b96a30feb62ba12c62718bbd41297d..3700f3ee61d4eb33a4574f3270c10a70
    // 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 87b26150440e33c6d12f10801c5bcc68685459b4..d9227c78e4439d90dba68349e540ae42ab3c3000 100644
+index 4e4731bf930e66644a77870f69e98b3197de12ac..2163ef65ae5faec671f4f3ad93c36d069f598ac6 100644
 --- a/services/network/public/mojom/network_context.mojom
 +++ b/services/network/public/mojom/network_context.mojom
 @@ -214,6 +214,17 @@ struct CTPolicy {
@@ -229,7 +229,7 @@ index 87b26150440e33c6d12f10801c5bcc68685459b4..d9227c78e4439d90dba68349e540ae42
  // Parameters for constructing a network context.
  struct NetworkContextParams {
    // Name used by memory tools to identify the context.
-@@ -879,6 +890,9 @@ interface NetworkContext {
+@@ -876,6 +887,9 @@ interface NetworkContext {
    // Sets a client for this network context.
    SetClient(pending_remote<NetworkContextClient> client);
  

+ 5 - 5
patches/chromium/notification_provenance.patch

@@ -55,7 +55,7 @@ index 5253f6be778cc78571b3df0a33d364a9b1e6ef52..dc5307e6500b0bfb5da83e8d8ff8886b
  
    scoped_refptr<ServiceWorkerContextWrapper> 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 a3deeb43eb353601fcee39f51bd0d2cd093628e2..2ba734593ab72ac4d3f43cee1c8a5e5931f7480c 100644
+index 8465aa1395d0d4fa90a2702e697291508441bdd5..c5efb602468161a44e98836d507bdc67224c2863 100644
 --- a/content/browser/notifications/blink_notification_service_impl_unittest.cc
 +++ b/content/browser/notifications/blink_notification_service_impl_unittest.cc
 @@ -140,7 +140,7 @@ class BlinkNotificationServiceImplTest : public ::testing::Test {
@@ -68,10 +68,10 @@ index a3deeb43eb353601fcee39f51bd0d2cd093628e2..2ba734593ab72ac4d3f43cee1c8a5e59
          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 4e1fb31d9ff368b6e84aeca9382fa7d565bf75ba..57d4ae76b2508dcd1fa00a088050820e1776cb8a 100644
+index ab588373be7ff0398d1835997e5216d955313f39..b0afd19d0cbc020874cd3ea31125443ede0a354f 100644
 --- a/content/browser/notifications/platform_notification_context_impl.cc
 +++ b/content/browser/notifications/platform_notification_context_impl.cc
-@@ -240,12 +240,13 @@ void PlatformNotificationContextImpl::Shutdown() {
+@@ -257,12 +257,13 @@ void PlatformNotificationContextImpl::Shutdown() {
  }
  
  void PlatformNotificationContextImpl::CreateService(
@@ -108,10 +108,10 @@ index f9b6a18aa73968506ddeca13de69b368f4ca8606..d45cb1c32be1b5c76840dafcd96fd06c
        mojo::PendingReceiver<blink::mojom::NotificationService> receiver);
  
 diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
-index a647a101f9328c1cd9f293af8a3a4c2155922662..6380f60451affea9e801838c60842f9aaf85560d 100644
+index d4aa55854634b69f63bb947edf288a1b984e3a6e..68f5eac06290558e7072bf84d6471d316455c068 100644
 --- a/content/browser/renderer_host/render_process_host_impl.cc
 +++ b/content/browser/renderer_host/render_process_host_impl.cc
-@@ -2152,7 +2152,7 @@ void RenderProcessHostImpl::CreateNotificationService(
+@@ -2148,7 +2148,7 @@ void RenderProcessHostImpl::CreateNotificationService(
      mojo::PendingReceiver<blink::mojom::NotificationService> receiver) {
    DCHECK_CURRENTLY_ON(BrowserThread::UI);
    storage_partition_impl_->GetPlatformNotificationContext()->CreateService(

+ 31 - 2
patches/chromium/picture-in-picture.patch

@@ -35,10 +35,21 @@ index e9b64a823ae7e25361f37190d247af0fa6a6f68a..43fdb0ad50d2b11a1bc28aa0f358c6dd
  #include "ui/base/l10n/l10n_util.h"
  #include "ui/gfx/color_palette.h"
 diff --git a/chrome/browser/ui/views/overlay/overlay_window_views.cc b/chrome/browser/ui/views/overlay/overlay_window_views.cc
-index 750e1734aa9a8450c5a1616cca1e912c0023a472..55a685e31eef5fcb7d78fa1d6dd2514ac647ac19 100644
+index b7a09819e1c0ec0bbffe199fbdbcff6d9f21a7b1..a4d5e6dd61468253b60dcca53c51d824166e6c58 100644
 --- a/chrome/browser/ui/views/overlay/overlay_window_views.cc
 +++ b/chrome/browser/ui/views/overlay/overlay_window_views.cc
-@@ -19,7 +19,7 @@
+@@ -13,16 +13,18 @@
+ #include "base/timer/timer.h"
+ #include "build/build_config.h"
+ #include "chrome/app/vector_icons/vector_icons.h"
++#if 0
+ #include "chrome/browser/profiles/profile.h"
+ #include "chrome/browser/ui/browser.h"
+ #include "chrome/browser/ui/browser_finder.h"
++#endif
+ #include "chrome/browser/ui/views/overlay/back_to_tab_image_button.h"
+ #include "chrome/browser/ui/views/overlay/close_image_button.h"
+ #include "chrome/browser/ui/views/overlay/playback_image_button.h"
  #include "chrome/browser/ui/views/overlay/resize_handle_button.h"
  #include "chrome/browser/ui/views/overlay/skip_ad_label_button.h"
  #include "chrome/browser/ui/views/overlay/track_image_button.h"
@@ -47,6 +58,24 @@ index 750e1734aa9a8450c5a1616cca1e912c0023a472..55a685e31eef5fcb7d78fa1d6dd2514a
  #include "components/vector_icons/vector_icons.h"
  #include "content/public/browser/picture_in_picture_window_controller.h"
  #include "content/public/browser/web_contents.h"
+@@ -47,7 +49,7 @@
+ #include "ui/aura/window.h"
+ #endif
+ 
+-#if defined(OS_WIN)
++#if 0
+ #include "chrome/browser/shell_integration_win.h"
+ #include "ui/aura/window.h"
+ #include "ui/aura/window_tree_host.h"
+@@ -218,7 +220,7 @@ std::unique_ptr<content::OverlayWindow> OverlayWindowViews::Create(
+   overlay_window->Init(std::move(params));
+   overlay_window->OnRootViewReady();
+ 
+-#if defined(OS_WIN)
++#if 0
+   base::string16 app_user_model_id;
+   Browser* browser =
+       chrome::FindBrowserWithWebContents(controller->GetWebContents());
 diff --git a/chrome/browser/ui/views/overlay/playback_image_button.cc b/chrome/browser/ui/views/overlay/playback_image_button.cc
 index d9e5174ed622fb030bc37d32fbb40b132d7c4c23..1bf19c344721e74bb29c11a4c5c762a75e5cd821 100644
 --- a/chrome/browser/ui/views/overlay/playback_image_button.cc

+ 114 - 102
patches/chromium/printing.patch

@@ -11,10 +11,10 @@ majority of changes originally come from these PRs:
 This patch also fixes callback for manual user cancellation and success.
 
 diff --git a/chrome/browser/printing/print_job.cc b/chrome/browser/printing/print_job.cc
-index 792f6ac614a159cd28c8ebefde627b13796a4f67..23d72202bc3b1591c9729de6cf6acc6779550adc 100644
+index 4f3b68135f9bb29f2c36055f50e1725a9b36a856..c788d412544fdcc8992512784449752631aaf595 100644
 --- a/chrome/browser/printing/print_job.cc
 +++ b/chrome/browser/printing/print_job.cc
-@@ -348,18 +348,25 @@ void PrintJob::StartPdfToEmfConversion(
+@@ -349,18 +349,25 @@ void PrintJob::StartPdfToEmfConversion(
    // seems to work with the fix for this bug applied.
    const PrintSettings& settings = document()->settings();
    bool print_text_with_gdi =
@@ -43,10 +43,10 @@ index 792f6ac614a159cd28c8ebefde627b13796a4f67..23d72202bc3b1591c9729de6cf6acc67
    using RenderMode = PdfRenderSettings::Mode;
    RenderMode mode;
 diff --git a/chrome/browser/printing/print_job_worker.cc b/chrome/browser/printing/print_job_worker.cc
-index 17788cb2b506bbf04d8d5fe533e4374fddd8b9d2..a935d79806c3281fd7e75617fd226d8481fd0d80 100644
+index 89c7798d8ddf21eb74e726c142377afa05b59c26..dd75b8e82552a54868ce86caf90ba175af64e937 100644
 --- a/chrome/browser/printing/print_job_worker.cc
 +++ b/chrome/browser/printing/print_job_worker.cc
-@@ -20,7 +20,6 @@
+@@ -21,7 +21,6 @@
  #include "chrome/browser/browser_process.h"
  #include "chrome/browser/chrome_notification_types.h"
  #include "chrome/browser/printing/print_job.h"
@@ -54,7 +54,7 @@ index 17788cb2b506bbf04d8d5fe533e4374fddd8b9d2..a935d79806c3281fd7e75617fd226d84
  #include "components/crash/core/common/crash_keys.h"
  #include "content/public/browser/browser_task_traits.h"
  #include "content/public/browser/browser_thread.h"
-@@ -28,6 +27,7 @@
+@@ -29,6 +28,7 @@
  #include "content/public/browser/render_frame_host.h"
  #include "content/public/browser/web_contents.h"
  #include "printing/backend/print_backend.h"
@@ -62,7 +62,7 @@ index 17788cb2b506bbf04d8d5fe533e4374fddd8b9d2..a935d79806c3281fd7e75617fd226d84
  #include "printing/print_job_constants.h"
  #include "printing/printed_document.h"
  #include "printing/printing_utils.h"
-@@ -235,16 +235,21 @@ void PrintJobWorker::UpdatePrintSettings(base::Value new_settings,
+@@ -236,16 +236,21 @@ void PrintJobWorker::UpdatePrintSettings(base::Value new_settings,
  #endif  // defined(OS_LINUX) && defined(USE_CUPS) && !defined(OS_CHROMEOS)
    }
  
@@ -87,7 +87,7 @@ index 17788cb2b506bbf04d8d5fe533e4374fddd8b9d2..a935d79806c3281fd7e75617fd226d84
  }
  
  #if defined(OS_CHROMEOS)
-@@ -260,6 +265,13 @@ void PrintJobWorker::UpdatePrintSettingsFromPOD(
+@@ -261,6 +266,13 @@ void PrintJobWorker::UpdatePrintSettingsFromPOD(
  
  void PrintJobWorker::GetSettingsDone(SettingsCallback callback,
                                       PrintingContext::Result result) {
@@ -102,10 +102,10 @@ index 17788cb2b506bbf04d8d5fe533e4374fddd8b9d2..a935d79806c3281fd7e75617fd226d84
  }
  
 diff --git a/chrome/browser/printing/print_view_manager_base.cc b/chrome/browser/printing/print_view_manager_base.cc
-index dc7ff3ef3447d756936f77fdcec102e06a32908f..2850bc543cb1c95da992067cabd5bf456a505d9d 100644
+index ad70dada204132ce44d6613378072a080771148a..02ecf3e77bee365eef4dc8a985cfe092785b8b8e 100644
 --- a/chrome/browser/printing/print_view_manager_base.cc
 +++ b/chrome/browser/printing/print_view_manager_base.cc
-@@ -27,10 +27,7 @@
+@@ -28,10 +28,7 @@
  #include "chrome/browser/printing/print_view_manager_common.h"
  #include "chrome/browser/printing/printer_query.h"
  #include "chrome/browser/profiles/profile.h"
@@ -116,7 +116,7 @@ index dc7ff3ef3447d756936f77fdcec102e06a32908f..2850bc543cb1c95da992067cabd5bf45
  #include "chromeos/constants/chromeos_features.h"
  #include "components/prefs/pref_service.h"
  #include "components/printing/browser/print_composite_client.h"
-@@ -47,6 +44,7 @@
+@@ -48,6 +45,7 @@
  #include "content/public/browser/render_process_host.h"
  #include "content/public/browser/render_view_host.h"
  #include "content/public/browser/web_contents.h"
@@ -124,7 +124,7 @@ index dc7ff3ef3447d756936f77fdcec102e06a32908f..2850bc543cb1c95da992067cabd5bf45
  #include "mojo/public/cpp/system/buffer.h"
  #include "printing/buildflags/buildflags.h"
  #include "printing/metafile_skia.h"
-@@ -70,6 +68,8 @@ using PrintSettingsCallback =
+@@ -72,6 +70,8 @@ using PrintSettingsCallback =
      base::OnceCallback<void(std::unique_ptr<PrinterQuery>)>;
  
  void ShowWarningMessageBox(const base::string16& message) {
@@ -133,7 +133,7 @@ index dc7ff3ef3447d756936f77fdcec102e06a32908f..2850bc543cb1c95da992067cabd5bf45
    // Runs always on the UI thread.
    static bool is_dialog_shown = false;
    if (is_dialog_shown)
-@@ -78,6 +78,7 @@ void ShowWarningMessageBox(const base::string16& message) {
+@@ -80,6 +80,7 @@ void ShowWarningMessageBox(const base::string16& message) {
    base::AutoReset<bool> auto_reset(&is_dialog_shown, true);
  
    chrome::ShowWarningMessageBox(nullptr, base::string16(), message);
@@ -141,7 +141,7 @@ index dc7ff3ef3447d756936f77fdcec102e06a32908f..2850bc543cb1c95da992067cabd5bf45
  }
  
  #if BUILDFLAG(ENABLE_PRINT_PREVIEW)
-@@ -114,12 +115,14 @@ PrintViewManagerBase::PrintViewManagerBase(content::WebContents* web_contents)
+@@ -172,12 +173,14 @@ PrintViewManagerBase::PrintViewManagerBase(content::WebContents* web_contents)
      : PrintManager(web_contents),
        queue_(g_browser_process->print_job_manager()->queue()) {
    DCHECK(queue_);
@@ -156,7 +156,7 @@ index dc7ff3ef3447d756936f77fdcec102e06a32908f..2850bc543cb1c95da992067cabd5bf45
  }
  
  PrintViewManagerBase::~PrintViewManagerBase() {
-@@ -127,7 +130,10 @@ PrintViewManagerBase::~PrintViewManagerBase() {
+@@ -185,7 +188,10 @@ PrintViewManagerBase::~PrintViewManagerBase() {
    DisconnectFromCurrentPrintJob();
  }
  
@@ -168,7 +168,7 @@ index dc7ff3ef3447d756936f77fdcec102e06a32908f..2850bc543cb1c95da992067cabd5bf45
    DisconnectFromCurrentPrintJob();
  
    // Don't print / print preview crashed tabs.
-@@ -135,7 +141,14 @@ bool PrintViewManagerBase::PrintNow(content::RenderFrameHost* rfh) {
+@@ -193,7 +199,14 @@ bool PrintViewManagerBase::PrintNow(content::RenderFrameHost* rfh) {
      return false;
  
    SetPrintingRFH(rfh);
@@ -184,7 +184,7 @@ index dc7ff3ef3447d756936f77fdcec102e06a32908f..2850bc543cb1c95da992067cabd5bf45
    return true;
  }
  
-@@ -256,9 +269,9 @@ void PrintViewManagerBase::StartLocalPrintJob(
+@@ -314,9 +327,9 @@ void PrintViewManagerBase::StartLocalPrintJob(
  void PrintViewManagerBase::UpdatePrintingEnabled() {
    DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
    // The Unretained() is safe because ForEachFrame() is synchronous.
@@ -197,8 +197,8 @@ index dc7ff3ef3447d756936f77fdcec102e06a32908f..2850bc543cb1c95da992067cabd5bf45
  }
  
  void PrintViewManagerBase::NavigationStopped() {
-@@ -361,7 +374,7 @@ void PrintViewManagerBase::OnPrintingFailed(int cookie) {
-   PrintManager::OnPrintingFailed(cookie);
+@@ -441,7 +454,7 @@ void PrintViewManagerBase::PrintingFailed(int32_t cookie) {
+   PrintManager::PrintingFailed(cookie);
  
  #if BUILDFLAG(ENABLE_PRINT_PREVIEW)
 -  ShowPrintErrorDialog();
@@ -206,10 +206,10 @@ index dc7ff3ef3447d756936f77fdcec102e06a32908f..2850bc543cb1c95da992067cabd5bf45
  #endif
  
    ReleasePrinterQuery();
-@@ -380,6 +393,11 @@ void PrintViewManagerBase::OnScriptedPrint(
+@@ -460,6 +473,11 @@ void PrintViewManagerBase::OnScriptedPrint(
  }
  
- void PrintViewManagerBase::OnShowInvalidPrinterSettingsError() {
+ void PrintViewManagerBase::ShowInvalidPrinterSettingsError() {
 +  if (!callback_.is_null()) {
 +    std::string cb_str = "Invalid printer settings";
 +    std::move(callback_).Run(printing_succeeded_, cb_str);
@@ -218,7 +218,7 @@ index dc7ff3ef3447d756936f77fdcec102e06a32908f..2850bc543cb1c95da992067cabd5bf45
    base::ThreadTaskRunnerHandle::Get()->PostTask(
        FROM_HERE, base::BindOnce(&ShowWarningMessageBox,
                                  l10n_util::GetStringUTF16(
-@@ -461,9 +479,13 @@ void PrintViewManagerBase::OnNotifyPrintJobEvent(
+@@ -529,9 +547,13 @@ void PrintViewManagerBase::OnNotifyPrintJobEvent(
            content::NotificationService::NoDetails());
        break;
      }
@@ -234,7 +234,7 @@ index dc7ff3ef3447d756936f77fdcec102e06a32908f..2850bc543cb1c95da992067cabd5bf45
        NOTREACHED();
        break;
      }
-@@ -558,8 +580,10 @@ bool PrintViewManagerBase::CreateNewPrintJob(
+@@ -627,8 +649,10 @@ bool PrintViewManagerBase::CreateNewPrintJob(
    DCHECK(!quit_inner_loop_);
    DCHECK(query);
  
@@ -247,7 +247,7 @@ index dc7ff3ef3447d756936f77fdcec102e06a32908f..2850bc543cb1c95da992067cabd5bf45
  
    // We can't print if there is no renderer.
    if (!web_contents()->GetRenderViewHost() ||
-@@ -580,8 +604,6 @@ bool PrintViewManagerBase::CreateNewPrintJob(
+@@ -649,8 +673,6 @@ bool PrintViewManagerBase::CreateNewPrintJob(
    print_job_->SetSource(source, /*source_id=*/"");
  #endif
  
@@ -256,7 +256,7 @@ index dc7ff3ef3447d756936f77fdcec102e06a32908f..2850bc543cb1c95da992067cabd5bf45
    printing_succeeded_ = false;
    return true;
  }
-@@ -630,14 +652,22 @@ void PrintViewManagerBase::ReleasePrintJob() {
+@@ -699,14 +721,22 @@ void PrintViewManagerBase::ReleasePrintJob() {
    content::RenderFrameHost* rfh = printing_rfh_;
    printing_rfh_ = nullptr;
  
@@ -281,7 +281,7 @@ index dc7ff3ef3447d756936f77fdcec102e06a32908f..2850bc543cb1c95da992067cabd5bf45
    // Don't close the worker thread.
    print_job_ = nullptr;
  }
-@@ -673,7 +703,7 @@ bool PrintViewManagerBase::RunInnerMessageLoop() {
+@@ -742,7 +772,7 @@ bool PrintViewManagerBase::RunInnerMessageLoop() {
  }
  
  bool PrintViewManagerBase::OpportunisticallyCreatePrintJob(int cookie) {
@@ -291,10 +291,10 @@ index dc7ff3ef3447d756936f77fdcec102e06a32908f..2850bc543cb1c95da992067cabd5bf45
  
    if (!cookie) {
 diff --git a/chrome/browser/printing/print_view_manager_base.h b/chrome/browser/printing/print_view_manager_base.h
-index 234f422e7b4cc0c424eefbfcb78eef8e7d7b446d..99b8f8ee8c9e9ca83728def1fccfe899e2bf0104 100644
+index 1498facaafeacebeb38b96ff46c0f48c5a650ad0..095d9dfcc3ee14b646b63c29e406434c1623704a 100644
 --- a/chrome/browser/printing/print_view_manager_base.h
 +++ b/chrome/browser/printing/print_view_manager_base.h
-@@ -34,6 +34,8 @@ class PrintJob;
+@@ -38,6 +38,8 @@ class PrintJob;
  class PrintQueriesQueue;
  class PrinterQuery;
  
@@ -303,7 +303,7 @@ index 234f422e7b4cc0c424eefbfcb78eef8e7d7b446d..99b8f8ee8c9e9ca83728def1fccfe899
  // Base class for managing the print commands for a WebContents.
  class PrintViewManagerBase : public content::NotificationObserver,
                               public PrintManager {
-@@ -43,7 +45,10 @@ class PrintViewManagerBase : public content::NotificationObserver,
+@@ -47,7 +49,10 @@ class PrintViewManagerBase : public content::NotificationObserver,
    // Prints the current document immediately. Since the rendering is
    // asynchronous, the actual printing will not be completed on the return of
    // this function. Returns false if printing is impossible at the moment.
@@ -315,7 +315,7 @@ index 234f422e7b4cc0c424eefbfcb78eef8e7d7b446d..99b8f8ee8c9e9ca83728def1fccfe899
  
  #if BUILDFLAG(ENABLE_PRINT_PREVIEW)
    // Prints the document in |print_data| with settings specified in
-@@ -208,9 +213,15 @@ class PrintViewManagerBase : public content::NotificationObserver,
+@@ -214,9 +219,15 @@ class PrintViewManagerBase : public content::NotificationObserver,
    // The current RFH that is printing with a system printing dialog.
    content::RenderFrameHost* printing_rfh_ = nullptr;
  
@@ -332,7 +332,7 @@ index 234f422e7b4cc0c424eefbfcb78eef8e7d7b446d..99b8f8ee8c9e9ca83728def1fccfe899
    // This means we are _blocking_ until all the necessary pages have been
    // rendered or the print settings are being loaded.
 diff --git a/chrome/browser/printing/printing_message_filter.cc b/chrome/browser/printing/printing_message_filter.cc
-index f7754394876d0d5a2613ed9bfd75a0ff220a7c42..1f8150f7c65a3d3ef51144a6589c9f78334564d1 100644
+index 90996efd58d5428e511bf0e656b64871aebe66e9..403d83e73a62ebd062ecec1066873440c0f68f5d 100644
 --- a/chrome/browser/printing/printing_message_filter.cc
 +++ b/chrome/browser/printing/printing_message_filter.cc
 @@ -22,6 +22,7 @@
@@ -369,21 +369,7 @@ index f7754394876d0d5a2613ed9bfd75a0ff220a7c42..1f8150f7c65a3d3ef51144a6589c9f78
  }
  
  PrintingMessageFilter::~PrintingMessageFilter() {
-@@ -138,11 +142,13 @@ bool PrintingMessageFilter::OnMessageReceived(const IPC::Message& message) {
- 
- void PrintingMessageFilter::OnGetDefaultPrintSettings(IPC::Message* reply_msg) {
-   DCHECK_CURRENTLY_ON(BrowserThread::IO);
-+#if 0
-   if (!is_printing_enabled_.GetValue()) {
-     // Reply with null query.
-     OnGetDefaultPrintSettingsReply(nullptr, reply_msg);
-     return;
-   }
-+#endif
-   std::unique_ptr<PrinterQuery> printer_query = queue_->PopPrinterQuery(0);
-   if (!printer_query) {
-     printer_query =
-@@ -226,12 +232,13 @@ void PrintingMessageFilter::OnScriptedPrintReply(
+@@ -180,12 +184,13 @@ void PrintingMessageFilter::OnScriptedPrintReply(
  void PrintingMessageFilter::OnUpdatePrintSettings(int document_cookie,
                                                    base::Value job_settings,
                                                    IPC::Message* reply_msg) {
@@ -398,20 +384,18 @@ index f7754394876d0d5a2613ed9bfd75a0ff220a7c42..1f8150f7c65a3d3ef51144a6589c9f78
    if (!job_settings.is_dict() ||
        !job_settings.FindIntKey(kSettingPrinterType)) {
      // Reply with null query.
-@@ -264,7 +271,9 @@ void PrintingMessageFilter::OnUpdatePrintSettingsReply(
-     std::unique_ptr<PrinterQuery> printer_query,
+@@ -219,7 +224,7 @@ void PrintingMessageFilter::OnUpdatePrintSettingsReply(
      IPC::Message* reply_msg) {
-   PrintMsg_PrintPages_Params params;
--  if (!printer_query || printer_query->last_status() != PrintingContext::OK) {
-+  // We call update without first printing from defaults,
-+  // so the last printer status will still be defaulted to PrintingContext::FAILED
-+  if (!printer_query) {
-     params.Reset();
-   } else {
-     RenderParamsFromPrintSettings(printer_query->settings(), &params.params);
-@@ -302,7 +311,7 @@ void PrintingMessageFilter::OnUpdatePrintSettingsReply(
+   mojom::PrintPagesParams params;
+   params.params = mojom::PrintParams::New();
+-  if (printer_query && printer_query->last_status() == PrintingContext::OK) {
++  if (printer_query) {
+     RenderParamsFromPrintSettings(printer_query->settings(),
+                                   params.params.get());
+     params.params->document_cookie = printer_query->cookie();
+@@ -256,7 +261,7 @@ void PrintingMessageFilter::OnUpdatePrintSettingsReply(
  #if BUILDFLAG(ENABLE_PRINT_PREVIEW)
- void PrintingMessageFilter::OnCheckForCancel(const PrintHostMsg_PreviewIds& ids,
+ void PrintingMessageFilter::OnCheckForCancel(const mojom::PreviewIds& ids,
                                               bool* cancel) {
 -  *cancel = PrintPreviewUI::ShouldCancelRequest(ids);
 +  *cancel = false;
@@ -419,11 +403,11 @@ index f7754394876d0d5a2613ed9bfd75a0ff220a7c42..1f8150f7c65a3d3ef51144a6589c9f78
  #endif
  
 diff --git a/chrome/browser/printing/printing_message_filter.h b/chrome/browser/printing/printing_message_filter.h
-index 478183cd3e5c2022ad3f484daf2f56b16f091203..951cedc75abb1e4a1e6da1a1371ba42a0ecd698c 100644
+index 87b1cd59ed79d6b81860fd2deb415020450523c1..a0bd1370a637168a4159c1b24f412dd3507f1ea2 100644
 --- a/chrome/browser/printing/printing_message_filter.h
 +++ b/chrome/browser/printing/printing_message_filter.h
-@@ -23,6 +23,10 @@
- struct PrintHostMsg_PreviewIds;
+@@ -22,6 +22,10 @@
+ 
  class Profile;
  
 +namespace content {
@@ -433,7 +417,7 @@ index 478183cd3e5c2022ad3f484daf2f56b16f091203..951cedc75abb1e4a1e6da1a1371ba42a
  namespace printing {
  
  class PrintQueriesQueue;
-@@ -43,7 +47,8 @@ class PrintingMessageFilter : public content::BrowserMessageFilter {
+@@ -42,7 +46,8 @@ class PrintingMessageFilter : public content::BrowserMessageFilter {
  
    static void SetDelegateForTesting(TestDelegate* delegate);
  
@@ -444,10 +428,10 @@ index 478183cd3e5c2022ad3f484daf2f56b16f091203..951cedc75abb1e4a1e6da1a1371ba42a
    // content::BrowserMessageFilter:
    bool OnMessageReceived(const IPC::Message& message) override;
 diff --git a/components/printing/common/print.mojom b/components/printing/common/print.mojom
-index 177a590b5f4586274ad60b83262567a87052838a..5e918f733179fd12f2544db0ff11d73d6af51155 100644
+index 4b140a2a0f431cd7b06a8d1b6f9e84981f4ce7e7..14779debdacc7b5f78aa0799f197241dba914aff 100644
 --- a/components/printing/common/print.mojom
 +++ b/components/printing/common/print.mojom
-@@ -209,7 +209,7 @@ interface PrintPreviewUI {
+@@ -230,7 +230,7 @@ interface PrintPreviewUI {
  interface PrintRenderFrame {
    // Tells the RenderFrame to switch the CSS to print media type, render every
    // requested page, and then switch back the CSS to display media type.
@@ -457,10 +441,10 @@ index 177a590b5f4586274ad60b83262567a87052838a..5e918f733179fd12f2544db0ff11d73d
    // Tells the RenderFrame to switch the CSS to print media type, render every
    // requested page using the print preview document's frame/node, and then
 diff --git a/components/printing/renderer/print_render_frame_helper.cc b/components/printing/renderer/print_render_frame_helper.cc
-index a33f55540de28603273876ffbcb649a3ef8e008c..6d1ae5f05077ac02bca796828f9801a313966708 100644
+index fa1e26c76a2b74be723832a7388eea187aeb6d8d..7ee8ce155e650f96f87857047be57c478d839381 100644
 --- a/components/printing/renderer/print_render_frame_helper.cc
 +++ b/components/printing/renderer/print_render_frame_helper.cc
-@@ -39,6 +39,7 @@
+@@ -38,6 +38,7 @@
  #include "printing/buildflags/buildflags.h"
  #include "printing/metafile_skia.h"
  #include "printing/mojom/print.mojom.h"
@@ -468,7 +452,7 @@ index a33f55540de28603273876ffbcb649a3ef8e008c..6d1ae5f05077ac02bca796828f9801a3
  #include "printing/units.h"
  #include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h"
  #include "third_party/blink/public/common/associated_interfaces/associated_interface_registry.h"
-@@ -1161,6 +1162,7 @@ void PrintRenderFrameHelper::ScriptedPrint(bool user_initiated) {
+@@ -1152,6 +1153,7 @@ void PrintRenderFrameHelper::ScriptedPrint(bool user_initiated) {
      // Pause between onbeforeprint and onafterprint events.
      // https://html.spec.whatwg.org/C/#printing-steps
      Print(web_frame, blink::WebNode(), PrintRequestType::kScripted,
@@ -476,7 +460,7 @@ index a33f55540de28603273876ffbcb649a3ef8e008c..6d1ae5f05077ac02bca796828f9801a3
            blink::WebScopedPagePauser::Create());
  
      if (weak_this)
-@@ -1189,7 +1191,7 @@ void PrintRenderFrameHelper::BindPrintRenderFrameReceiver(
+@@ -1180,7 +1182,7 @@ void PrintRenderFrameHelper::BindPrintRenderFrameReceiver(
    receivers_.Add(this, std::move(receiver));
  }
  
@@ -485,7 +469,7 @@ index a33f55540de28603273876ffbcb649a3ef8e008c..6d1ae5f05077ac02bca796828f9801a3
    ScopedIPC scoped_ipc(weak_ptr_factory_.GetWeakPtr());
    if (ipc_nesting_level_ > 1)
      return;
-@@ -1206,7 +1208,7 @@ void PrintRenderFrameHelper::PrintRequestedPages() {
+@@ -1197,7 +1199,7 @@ void PrintRenderFrameHelper::PrintRequestedPages() {
  
    // Pause between onbeforeprint and onafterprint events.
    // https://html.spec.whatwg.org/C/#printing-steps
@@ -494,7 +478,7 @@ index a33f55540de28603273876ffbcb649a3ef8e008c..6d1ae5f05077ac02bca796828f9801a3
          blink::WebScopedPagePauser::Create());
  
    if (!render_frame_gone_)
-@@ -1228,7 +1230,7 @@ void PrintRenderFrameHelper::PrintForSystemDialog() {
+@@ -1219,7 +1221,7 @@ void PrintRenderFrameHelper::PrintForSystemDialog() {
    // Hand over control, including Print Preview's WebScopedPagePauser, to the
    // system print dialog.
    Print(frame, print_preview_context_.source_node(), PrintRequestType::kRegular,
@@ -503,7 +487,7 @@ index a33f55540de28603273876ffbcb649a3ef8e008c..6d1ae5f05077ac02bca796828f9801a3
    if (!render_frame_gone_)
      print_preview_context_.DispatchAfterPrintEvent();
    // WARNING: |this| may be gone at this point. Do not do any more work here and
-@@ -1276,6 +1278,8 @@ void PrintRenderFrameHelper::PrintPreview(base::Value settings) {
+@@ -1267,6 +1269,8 @@ void PrintRenderFrameHelper::PrintPreview(base::Value settings) {
    if (ipc_nesting_level_ > 1)
      return;
  
@@ -512,7 +496,7 @@ index a33f55540de28603273876ffbcb649a3ef8e008c..6d1ae5f05077ac02bca796828f9801a3
    print_preview_context_.OnPrintPreview();
  
    if (print_preview_context_.IsForArc()) {
-@@ -1828,7 +1832,9 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) {
+@@ -1819,7 +1823,9 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) {
        return;
  
      Print(duplicate_node.GetDocument().GetFrame(), duplicate_node,
@@ -523,7 +507,7 @@ index a33f55540de28603273876ffbcb649a3ef8e008c..6d1ae5f05077ac02bca796828f9801a3
      // Check if |this| is still valid.
      if (!weak_this)
        return;
-@@ -1845,6 +1851,8 @@ void PrintRenderFrameHelper::Print(
+@@ -1836,6 +1842,8 @@ void PrintRenderFrameHelper::Print(
      blink::WebLocalFrame* frame,
      const blink::WebNode& node,
      PrintRequestType print_request_type,
@@ -532,30 +516,61 @@ index a33f55540de28603273876ffbcb649a3ef8e008c..6d1ae5f05077ac02bca796828f9801a3
      std::unique_ptr<blink::WebScopedPagePauser> pauser) {
    // If still not finished with earlier print request simply ignore.
    if (prep_frame_view_)
-@@ -1853,7 +1861,7 @@ void PrintRenderFrameHelper::Print(
+@@ -1844,7 +1852,7 @@ void PrintRenderFrameHelper::Print(
    FrameReference frame_ref(frame);
  
-   int expected_page_count = 0;
+   uint32_t expected_page_count = 0;
 -  if (!CalculateNumberOfPages(frame, node, &expected_page_count)) {
 +  if (!CalculateNumberOfPages(frame, node, &expected_page_count, base::Value::AsDictionaryValue(settings))) {
      DidFinishPrinting(FAIL_PRINT_INIT);
      return;  // Failed to init print page settings.
    }
-@@ -1873,8 +1881,11 @@ void PrintRenderFrameHelper::Print(
+@@ -1863,10 +1871,41 @@ void PrintRenderFrameHelper::Print(
+         print_pages_params_->params->print_scaling_option;
  
-     PrintMsg_PrintPages_Params print_settings;
+     mojom::PrintPagesParams print_settings;
+-    print_settings.params = mojom::PrintParams::New();
++
      auto self = weak_ptr_factory_.GetWeakPtr();
 -    GetPrintSettingsFromUser(frame_ref.GetFrame(), node, expected_page_count,
 -                             print_request_type, &print_settings);
 +    if (silent)
-+      print_settings = *print_pages_params_.get();
-+    else
++      print_settings.params = mojom::PrintParams::New(
++        print_pages_params_->params->page_size,
++        print_pages_params_->params->content_size,
++        print_pages_params_->params->printable_area,
++        print_pages_params_->params->margin_top,
++        print_pages_params_->params->margin_left,
++        print_pages_params_->params->page_orientation,
++        print_pages_params_->params->dpi,
++        print_pages_params_->params->scale_factor,
++        print_pages_params_->params->document_cookie,
++        print_pages_params_->params->selection_only,
++        print_pages_params_->params->supports_alpha_blend,
++        print_pages_params_->params->preview_ui_id,
++        print_pages_params_->params->preview_request_id,
++        print_pages_params_->params->is_first_request,
++        print_pages_params_->params->print_scaling_option,
++        print_pages_params_->params->print_to_pdf,
++        print_pages_params_->params->display_header_footer,
++        print_pages_params_->params->title,
++        print_pages_params_->params->url,
++        print_pages_params_->params->header_template,
++        print_pages_params_->params->footer_template,
++        print_pages_params_->params->rasterize_pdf,
++        print_pages_params_->params->should_print_backgrounds,
++        print_pages_params_->params->printed_doc_type,
++        print_pages_params_->params->prefer_css_page_size,
++        print_pages_params_->params->pages_per_sheet);
++    else {
++      print_settings.params = mojom::PrintParams::New();
 +      GetPrintSettingsFromUser(frame_ref.GetFrame(), node, expected_page_count,
 +                               print_request_type, &print_settings);
++    }
      // Check if |this| is still valid.
      if (!self)
        return;
-@@ -2120,10 +2131,23 @@ void PrintRenderFrameHelper::IPCProcessed() {
+@@ -2113,10 +2152,22 @@ void PrintRenderFrameHelper::IPCProcessed() {
      base::ThreadTaskRunnerHandle::Get()->DeleteSoon(FROM_HERE, this);
  }
  
@@ -563,13 +578,12 @@ index a33f55540de28603273876ffbcb649a3ef8e008c..6d1ae5f05077ac02bca796828f9801a3
 +bool PrintRenderFrameHelper::InitPrintSettings(
 +    bool fit_to_paper_size,
 +    const base::DictionaryValue& new_settings) {
-   PrintMsg_PrintPages_Params settings;
--  Send(new PrintHostMsg_GetDefaultPrintSettings(routing_id(),
--                                                &settings.params));
+   mojom::PrintPagesParams settings;
+   settings.params = mojom::PrintParams::New();
+-  GetPrintManagerHost()->GetDefaultPrintSettings(&settings.params);
 +  if (new_settings.empty()) {
 +    // Send the default IPC message if caller is window.print()
-+    Send(new PrintHostMsg_GetDefaultPrintSettings(routing_id(),
-+                                                  &settings.params));
++    GetPrintManagerHost()->GetDefaultPrintSettings(&settings.params);
 +  } else {
 +    // Send the update IPC message if caller is webContents.print()
 +    bool canceled = false;
@@ -578,34 +592,33 @@ index a33f55540de28603273876ffbcb649a3ef8e008c..6d1ae5f05077ac02bca796828f9801a3
 +    if (canceled)
 +      return false;
 +  }
-+
+ 
    // Check if the printer returned any settings, if the settings is empty, we
    // can safely assume there are no printer drivers configured. So we safely
-   // terminate.
-@@ -2143,12 +2167,14 @@ bool PrintRenderFrameHelper::InitPrintSettings(bool fit_to_paper_size) {
+@@ -2137,12 +2188,14 @@ bool PrintRenderFrameHelper::InitPrintSettings(bool fit_to_paper_size) {
    return result;
  }
  
 -bool PrintRenderFrameHelper::CalculateNumberOfPages(blink::WebLocalFrame* frame,
 -                                                    const blink::WebNode& node,
--                                                    int* number_of_pages) {
+-                                                    uint32_t* number_of_pages) {
 +bool PrintRenderFrameHelper::CalculateNumberOfPages(
 +    blink::WebLocalFrame* frame,
 +    const blink::WebNode& node,
-+    int* number_of_pages,
++    uint32_t* number_of_pages,
 +    const base::DictionaryValue& settings) {
    DCHECK(frame);
    bool fit_to_paper_size = !IsPrintingNodeOrPdfFrame(frame, node);
 -  if (!InitPrintSettings(fit_to_paper_size)) {
 +  if (!InitPrintSettings(fit_to_paper_size, settings)) {
      notify_browser_of_print_failure_ = false;
-     Send(new PrintHostMsg_ShowInvalidPrinterSettingsError(routing_id()));
+     GetPrintManagerHost()->ShowInvalidPrinterSettingsError();
      return false;
 diff --git a/components/printing/renderer/print_render_frame_helper.h b/components/printing/renderer/print_render_frame_helper.h
-index dcf833ec1ba661509b4046a2f16ee36611e6cb9b..c2b6739b268fdd05185dbee7ab40f91c3e54d413 100644
+index 00393383967e0c542edbd7ef2798ef6ddd6c6291..f06149f97b5a91b7e2c3d1aa5d80d46283e8a882 100644
 --- a/components/printing/renderer/print_render_frame_helper.h
 +++ b/components/printing/renderer/print_render_frame_helper.h
-@@ -233,7 +233,7 @@ class PrintRenderFrameHelper
+@@ -231,7 +231,7 @@ class PrintRenderFrameHelper
        mojo::PendingAssociatedReceiver<mojom::PrintRenderFrame> receiver);
  
    // printing::mojom::PrintRenderFrame:
@@ -614,7 +627,7 @@ index dcf833ec1ba661509b4046a2f16ee36611e6cb9b..c2b6739b268fdd05185dbee7ab40f91c
    void PrintForSystemDialog() override;
  #if BUILDFLAG(ENABLE_PRINT_PREVIEW)
    void SetPrintPreviewUI(
-@@ -301,6 +301,8 @@ class PrintRenderFrameHelper
+@@ -299,6 +299,8 @@ class PrintRenderFrameHelper
    void Print(blink::WebLocalFrame* frame,
               const blink::WebNode& node,
               PrintRequestType print_request_type,
@@ -623,7 +636,7 @@ index dcf833ec1ba661509b4046a2f16ee36611e6cb9b..c2b6739b268fdd05185dbee7ab40f91c
               std::unique_ptr<blink::WebScopedPagePauser> pauser);
  
    // Notification when printing is done - signal tear-down/free resources.
-@@ -310,12 +312,14 @@ class PrintRenderFrameHelper
+@@ -308,12 +310,14 @@ class PrintRenderFrameHelper
  
    // Initialize print page settings with default settings.
    // Used only for native printing workflow.
@@ -634,25 +647,24 @@ index dcf833ec1ba661509b4046a2f16ee36611e6cb9b..c2b6739b268fdd05185dbee7ab40f91c
    // Calculate number of pages in source document.
    bool CalculateNumberOfPages(blink::WebLocalFrame* frame,
                                const blink::WebNode& node,
--                              int* number_of_pages);
-+                              int* number_of_pages,
+-                              uint32_t* number_of_pages);
++                              uint32_t* number_of_pages,
 +                              const base::DictionaryValue& settings);
  
  #if BUILDFLAG(ENABLE_PRINT_PREVIEW)
    // Set options for print preset from source PDF document.
 diff --git a/printing/printing_context.cc b/printing/printing_context.cc
-index 5f82472c0123c4a71be6c18561229ce2261b93e4..ed7db3d8463eb1353d7cadea33ded3c4d4ef21fe 100644
+index 14ec2b673afe6fc0ecfce8028a432f5bcfc9e104..5a1853c4f8e70143e9b1be3dcab7f1dff448346d 100644
 --- a/printing/printing_context.cc
 +++ b/printing/printing_context.cc
-@@ -95,8 +95,6 @@ PrintingContext::Result PrintingContext::UsePdfSettings() {
+@@ -95,7 +95,6 @@ PrintingContext::Result PrintingContext::UsePdfSettings() {
  
  PrintingContext::Result PrintingContext::UpdatePrintSettings(
      base::Value job_settings) {
 -  ResetSettings();
--
-   if (!PrintSettingsFromJobSettings(job_settings, settings_.get())) {
-     NOTREACHED();
-     return OnError();
+   {
+     std::unique_ptr<PrintSettings> settings =
+         PrintSettingsFromJobSettings(job_settings);
 diff --git a/printing/printing_context.h b/printing/printing_context.h
 index 7ac9ce996ca7cbf8bcd21cb0c8161b63050ff684..43f5383bfed965c3d8cd3102dc18309a65c457ae 100644
 --- a/printing/printing_context.h

+ 5 - 5
patches/chromium/put_back_deleted_colors_for_autofill.patch

@@ -42,7 +42,7 @@ index e4b9c5e52d6f8408f8ab5ab7c4f8b28466e04626..9c32aaaa0d88a692632a2e888250c6fd
      // TODO(thomasanderson): Render GtkSpinner directly.
      case ui::NativeTheme::kColorId_ThrobberSpinningColor:
 diff --git a/ui/native_theme/common_theme.cc b/ui/native_theme/common_theme.cc
-index c0c37674e99b9d04c983dda8312433a37dbd5170..282bdb964cb4e3fb03d53768b3212fe2b84e3bd7 100644
+index 977cefd87de616ac97c687f7fbe350cc703b84b3..286768de5756b446fafe9a9af33364270cf0e583 100644
 --- a/ui/native_theme/common_theme.cc
 +++ b/ui/native_theme/common_theme.cc
 @@ -63,7 +63,8 @@ base::Optional<SkColor> GetHighContrastColor(
@@ -70,7 +70,7 @@ index c0c37674e99b9d04c983dda8312433a37dbd5170..282bdb964cb4e3fb03d53768b3212fe2
      // FocusableBorder
      case NativeTheme::kColorId_FocusedBorderColor:
        return SkColorSetA(gfx::kGoogleBlue300, 0x4D);
-@@ -560,6 +569,18 @@ SkColor GetDefaultColor(NativeTheme::ColorId color_id,
+@@ -564,6 +573,18 @@ SkColor GetDefaultColor(NativeTheme::ColorId color_id,
      case NativeTheme::kColorId_UnfocusedBorderColor:
        return gfx::kGoogleGrey300;
  
@@ -89,7 +89,7 @@ index c0c37674e99b9d04c983dda8312433a37dbd5170..282bdb964cb4e3fb03d53768b3212fe2
      // Material spinner/throbber
      case NativeTheme::kColorId_ThrobberSpinningColor:
        return gfx::kGoogleBlue600;
-@@ -663,7 +684,7 @@ SkColor GetAuraColor(NativeTheme::ColorId color_id,
+@@ -667,7 +688,7 @@ SkColor GetAuraColor(NativeTheme::ColorId color_id,
    }
  
    if (color_scheme == NativeTheme::ColorScheme::kDark) {
@@ -115,10 +115,10 @@ index dde0f977c676b6914f206ca7022290887257622b..67fe14f482dcbdf884711e3b283f9d61
    OP(kColorId_ThrobberSpinningColor),                                          \
    OP(kColorId_ThrobberWaitingColor),                                           \
 diff --git a/ui/native_theme/native_theme_win.cc b/ui/native_theme/native_theme_win.cc
-index 91c5532be895114ac532d270cb5e00cbfd4abf89..1ff5451c10c4843557746df9daf879d422b9855a 100644
+index d6fa761fafbc7cfea744a34b1101fb33a5ac1ba2..74afe95ebec7f14836b4a5f4c3689f5acc5774cb 100644
 --- a/ui/native_theme/native_theme_win.cc
 +++ b/ui/native_theme/native_theme_win.cc
-@@ -646,6 +646,18 @@ base::Optional<SkColor> NativeThemeWin::GetPlatformHighContrastColor(
+@@ -647,6 +647,18 @@ base::Optional<SkColor> NativeThemeWin::GetPlatformHighContrastColor(
      case kColorId_ThrobberWaitingColor:
        return system_colors_[SystemThemeColor::kGrayText];
  

+ 9 - 9
patches/chromium/refactor_expose_cursor_changes_to_the_webcontentsobserver.patch

@@ -8,7 +8,7 @@ Chrome moved the SetCursor IPC message to mojo, which we use to tell OSR about `
 Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2172779
 
 diff --git a/content/browser/renderer_host/render_widget_host_delegate.h b/content/browser/renderer_host/render_widget_host_delegate.h
-index 32ffa76e3b13e67b50eed12c1b5b651e3a85a150..7faaaa3f1a728a885244b741919560649f64b531 100644
+index f56e27d3b0def3c4b58acd8d12a544f4912f78a5..682dba8763df58e6a6a2d52b5c46e6b82344a196 100644
 --- a/content/browser/renderer_host/render_widget_host_delegate.h
 +++ b/content/browser/renderer_host/render_widget_host_delegate.h
 @@ -14,6 +14,7 @@
@@ -16,10 +16,10 @@ index 32ffa76e3b13e67b50eed12c1b5b651e3a85a150..7faaaa3f1a728a885244b74191956064
  #include "components/viz/common/vertical_scroll_direction.h"
  #include "content/common/content_export.h"
 +#include "content/common/cursors/webcursor.h"
- #include "content/common/drag_event_source_info.h"
  #include "content/public/common/drop_data.h"
  #include "services/metrics/public/cpp/ukm_recorder.h"
-@@ -281,6 +282,9 @@ class CONTENT_EXPORT RenderWidgetHostDelegate {
+ #include "third_party/blink/public/common/input/web_input_event.h"
+@@ -280,6 +281,9 @@ class CONTENT_EXPORT RenderWidgetHostDelegate {
    // Allow the delegate to handle the cursor update. Returns true if handled.
    virtual bool OnUpdateDragCursor();
  
@@ -30,10 +30,10 @@ index 32ffa76e3b13e67b50eed12c1b5b651e3a85a150..7faaaa3f1a728a885244b74191956064
    // RenderWidgetHost on the main frame, and false otherwise.
    virtual bool IsWidgetForMainFrame(RenderWidgetHostImpl*);
 diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
-index ba4490916017d65c08f6f31ef8453928f37b84fd..f336b8c0c7b82b74a0603e6467a4ebf9f783509b 100644
+index 92353f412ba6d4c25e93f22b9a43442db974b31f..991cbec859c7c005aab75c30fb2a9cb841d2cd7d 100644
 --- a/content/browser/renderer_host/render_widget_host_impl.cc
 +++ b/content/browser/renderer_host/render_widget_host_impl.cc
-@@ -1715,6 +1715,8 @@ void RenderWidgetHostImpl::SetCursor(const WebCursor& cursor) {
+@@ -1690,6 +1690,8 @@ void RenderWidgetHostImpl::SetCursor(const WebCursor& cursor) {
    if (!view_)
      return;
    view_->UpdateCursor(cursor);
@@ -43,10 +43,10 @@ index ba4490916017d65c08f6f31ef8453928f37b84fd..f336b8c0c7b82b74a0603e6467a4ebf9
  
  void RenderWidgetHostImpl::OnCursorVisibilityStateChanged(bool is_visible) {
 diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
-index b3adfd8438c605894e55fb4786cae4fd2e70345b..0aa99ad47d4152f8849577f09a0cb1b796fde70f 100644
+index 07ae134c8f6ba5aa03b9db35b4cea9e8e1668b5a..4b65b5aabf7481102493e20cde9ca17d901eceaa 100644
 --- a/content/browser/web_contents/web_contents_impl.cc
 +++ b/content/browser/web_contents/web_contents_impl.cc
-@@ -3974,6 +3974,12 @@ bool WebContentsImpl::OnUpdateDragCursor() {
+@@ -4280,6 +4280,12 @@ bool WebContentsImpl::OnUpdateDragCursor() {
           browser_plugin_embedder_->OnUpdateDragCursor();
  }
  
@@ -60,10 +60,10 @@ index b3adfd8438c605894e55fb4786cae4fd2e70345b..0aa99ad47d4152f8849577f09a0cb1b7
      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 e2a8d8c8242340527e26c4193880be656158376a..588ae2e9695bd622f72c29a49c66abf005899f2b 100644
+index d2f3048bca219770a5c0606e4cb8fc0591a5a981..938dd84593f9aa445a3842b8af39941a5264d61e 100644
 --- a/content/browser/web_contents/web_contents_impl.h
 +++ b/content/browser/web_contents/web_contents_impl.h
-@@ -943,6 +943,7 @@ class CONTENT_EXPORT WebContentsImpl : public WebContents,
+@@ -945,6 +945,7 @@ class CONTENT_EXPORT WebContentsImpl : public WebContents,
    void SendScreenRects() override;
    TextInputManager* GetTextInputManager() override;
    bool OnUpdateDragCursor() override;

+ 47 - 0
patches/chromium/remove_deprecated_factory_parameter_for_worker_resource_loader.patch

@@ -0,0 +1,47 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: deepak1556 <[email protected]>
+Date: Sat, 12 Sep 2020 20:15:43 -0700
+Subject: Remove deprecated factory parameter for worker resource loader
+
+This can be removed once https://chromium-review.googlesource.com/c/chromium/src/+/2357523 lands.
+
+diff --git a/content/browser/worker_host/worker_script_fetch_initiator.cc b/content/browser/worker_host/worker_script_fetch_initiator.cc
+index 6ca1bf4c7e5c489ea3f170c350c4660a1763918a..b9b73f0d04c2e176ea7f52306eb5f562ac04d608 100644
+--- a/content/browser/worker_host/worker_script_fetch_initiator.cc
++++ b/content/browser/worker_host/worker_script_fetch_initiator.cc
+@@ -226,8 +226,7 @@ WorkerScriptFetchInitiator::CreateFactoryBundle(
+       GetContentClient()
+           ->browser()
+           ->RegisterNonNetworkWorkerMainResourceURLLoaderFactories(
+-              storage_partition->browser_context(),
+-              &non_network_uniquely_owned_factories);
++              storage_partition->browser_context(), &non_network_factories);
+       break;
+     case LoaderType::kSubResource:
+       GetContentClient()
+diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc
+index 2d2c8e61063ed3c34e4eb40a31ec62affcbe1f66..33e4c10b4b984cb49ec960cf257b866c738ec020 100644
+--- a/content/public/browser/content_browser_client.cc
++++ b/content/public/browser/content_browser_client.cc
+@@ -777,7 +777,7 @@ void ContentBrowserClient::RegisterNonNetworkNavigationURLLoaderFactories(
+ void ContentBrowserClient::
+     RegisterNonNetworkWorkerMainResourceURLLoaderFactories(
+         BrowserContext* browser_context,
+-        NonNetworkURLLoaderFactoryDeprecatedMap* uniquely_owned_factories) {}
++        NonNetworkURLLoaderFactoryMap* factories) {}
+ 
+ void ContentBrowserClient::
+     RegisterNonNetworkServiceWorkerUpdateURLLoaderFactories(
+diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h
+index 464df770f76bacd7556dae52c7d59aa07d19762e..5ba93c6008cd92d31d0d064422c23e8087281788 100644
+--- a/content/public/browser/content_browser_client.h
++++ b/content/public/browser/content_browser_client.h
+@@ -1316,7 +1316,7 @@ class CONTENT_EXPORT ContentBrowserClient {
+   // lifetimes.
+   virtual void RegisterNonNetworkWorkerMainResourceURLLoaderFactories(
+       BrowserContext* browser_context,
+-      NonNetworkURLLoaderFactoryDeprecatedMap* uniquely_owned_factories);
++      NonNetworkURLLoaderFactoryMap* factories);
+ 
+   // Allows the embedder to register per-scheme URLLoaderFactory
+   // implementations to handle service worker main/imported script requests

+ 6 - 7
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 <webview> 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 e0ff930b68812f221c674cbeb05dd287fbec6953..7ef5efa8b2004936c14717b57eb33668f9179e02 100644
+index b2139c2e9ee84f7e20feeedfd686f59a85c124b9..534c5ccece65ea2aee52240ee941630a0ae3e3f4 100644
 --- a/content/browser/renderer_host/render_widget_host_view_base.cc
 +++ b/content/browser/renderer_host/render_widget_host_view_base.cc
-@@ -620,6 +620,13 @@ bool RenderWidgetHostViewBase::ScreenRectIsUnstableFor(
+@@ -583,6 +583,13 @@ bool RenderWidgetHostViewBase::ScreenRectIsUnstableFor(
    return false;
  }
  
@@ -24,16 +24,15 @@ index e0ff930b68812f221c674cbeb05dd287fbec6953..7ef5efa8b2004936c14717b57eb33668
      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 2adcb50f68f2a595db5f0b15346dcfdcac5e6569..6153763b3d620c338b9a9f37951e69f17e49f8d4 100644
+index 6ad97d23d771e1494fcfa0a56d70626048c86cfb..a1fdaf65e6fbfad5e61af4e5bc6d5829bc2d84cf 100644
 --- a/content/browser/renderer_host/render_widget_host_view_base.h
 +++ b/content/browser/renderer_host/render_widget_host_view_base.h
-@@ -25,9 +25,11 @@
+@@ -25,8 +25,10 @@
  #include "components/viz/host/hit_test/hit_test_query.h"
  #include "content/browser/renderer_host/display_feature.h"
  #include "content/browser/renderer_host/event_with_latency_info.h"
 +#include "content/browser/web_contents/web_contents_view.h"
  #include "content/common/content_export.h"
- #include "content/common/content_to_visible_time_reporter.h"
  #include "content/public/browser/render_frame_metadata_provider.h"
 +#include "content/public/browser/render_widget_host.h"
  #include "content/public/browser/render_widget_host_view.h"
@@ -51,7 +50,7 @@ index 2adcb50f68f2a595db5f0b15346dcfdcac5e6569..6153763b3d620c338b9a9f37951e69f1
  class WebCursor;
  class DelegatedFrameHost;
  struct DisplayFeature;
-@@ -126,6 +130,9 @@ class CONTENT_EXPORT RenderWidgetHostViewBase
+@@ -121,6 +125,9 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView {
        bool show_reason_unoccluded,
        bool show_reason_bfcache_restore) final;
  
@@ -61,7 +60,7 @@ index 2adcb50f68f2a595db5f0b15346dcfdcac5e6569..6153763b3d620c338b9a9f37951e69f1
    // This only needs to be overridden by RenderWidgetHostViewBase subclasses
    // that handle content embedded within other RenderWidgetHostViews.
    gfx::PointF TransformPointToRootCoordSpaceF(
-@@ -309,6 +316,11 @@ class CONTENT_EXPORT RenderWidgetHostViewBase
+@@ -288,6 +295,11 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView {
    virtual void ProcessGestureEvent(const blink::WebGestureEvent& event,
                                     const ui::LatencyInfo& latency);
  

+ 3 - 3
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 14a04f524e5df852bd6aa8c54d6c1acc23dcbc34..1edfb760b119271eaf7936201970fba4439634a5 100644
+index d629218f01eeb1cc442643da7b6aca21b989498e..f47d3ffa467e0df6f162eaf0affb37d9a46aebad 100644
 --- a/chrome/BUILD.gn
 +++ b/chrome/BUILD.gn
-@@ -1398,7 +1398,7 @@ if (is_chrome_branded && !is_android) {
+@@ -1403,7 +1403,7 @@ if (is_chrome_branded && !is_android) {
    }
  }
  
@@ -64,7 +64,7 @@ index 14a04f524e5df852bd6aa8c54d6c1acc23dcbc34..1edfb760b119271eaf7936201970fba4
    chrome_paks("packed_resources") {
      if (is_mac) {
        output_dir = "$root_gen_dir/repack"
-@@ -1418,6 +1418,12 @@ if (!is_android) {
+@@ -1423,6 +1423,12 @@ if (!is_android) {
    }
  }
  

+ 8 - 8
patches/chromium/revert_remove_contentrendererclient_shouldfork.patch

@@ -9,10 +9,10 @@ for every navigation to keep Node.js working properly. Once Native Modules in th
 are required to be NAPI or context aware (Electron v11), this patch can be removed.
 
 diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
-index eb6e5d353b3333e4e4f474badebc67c672bf84a7..357c894a99c810f5653bab397960b48d47d326e2 100644
+index 87243e716262b31c49a2bf18fc3b3b8c38b29c53..76d5e9f82d8db1c2212db79fb2116a2a1695b0d1 100644
 --- a/chrome/renderer/chrome_content_renderer_client.cc
 +++ b/chrome/renderer/chrome_content_renderer_client.cc
-@@ -1279,6 +1279,25 @@ bool ChromeContentRendererClient::AllowPopup() {
+@@ -1281,6 +1281,25 @@ bool ChromeContentRendererClient::AllowPopup() {
  #endif
  }
  
@@ -39,7 +39,7 @@ index eb6e5d353b3333e4e4f474badebc67c672bf84a7..357c894a99c810f5653bab397960b48d
      WebLocalFrame* frame,
      ui::PageTransition transition_type,
 diff --git a/chrome/renderer/chrome_content_renderer_client.h b/chrome/renderer/chrome_content_renderer_client.h
-index 066a1a0690c013ffdb8ee043f8489e250ac430f0..4a2f67ba8e0aab4c46413e2f1268af9495038139 100644
+index 04d63a82dde7b1ec4259ec90e0733f3536e97ad0..e335dfbfabe643d15e78c691750aed3aab4a006a 100644
 --- a/chrome/renderer/chrome_content_renderer_client.h
 +++ b/chrome/renderer/chrome_content_renderer_client.h
 @@ -127,6 +127,11 @@ class ChromeContentRendererClient
@@ -55,7 +55,7 @@ index 066a1a0690c013ffdb8ee043f8489e250ac430f0..4a2f67ba8e0aab4c46413e2f1268af94
                         ui::PageTransition transition_type,
                         const blink::WebURL& url,
 diff --git a/content/public/renderer/content_renderer_client.cc b/content/public/renderer/content_renderer_client.cc
-index 6c7478594f980e3518fea2afc53d941b0f6c6a34..3b514f084ed16fc924f6a2909bd51056e5c58f6d 100644
+index 889362f4bf241c88c7228b7bef029383211ef826..b83f2a91d993e3a086b63c5f01a8960df7f4780f 100644
 --- a/content/public/renderer/content_renderer_client.cc
 +++ b/content/public/renderer/content_renderer_client.cc
 @@ -114,6 +114,14 @@ bool ContentRendererClient::HandleNavigation(
@@ -74,10 +74,10 @@ index 6c7478594f980e3518fea2afc53d941b0f6c6a34..3b514f084ed16fc924f6a2909bd51056
      blink::WebLocalFrame* frame,
      ui::PageTransition transition_type,
 diff --git a/content/public/renderer/content_renderer_client.h b/content/public/renderer/content_renderer_client.h
-index cc6101c82e659bbc5a8568c166d5a56fae0c8d64..8309bb7f3f284b0930c13a7e75a7f9de64fedb73 100644
+index 9349a3755f824630904bcd044a6ba403d639f490..5097d3f812f8ad0a583042ba332855c8b3fda222 100644
 --- a/content/public/renderer/content_renderer_client.h
 +++ b/content/public/renderer/content_renderer_client.h
-@@ -227,6 +227,13 @@ class CONTENT_EXPORT ContentRendererClient {
+@@ -229,6 +229,13 @@ class CONTENT_EXPORT ContentRendererClient {
                                  bool is_redirect);
  #endif
  
@@ -92,10 +92,10 @@ index cc6101c82e659bbc5a8568c166d5a56fae0c8d64..8309bb7f3f284b0930c13a7e75a7f9de
    // |url|. If the function returns a valid |new_url|, the request must be
    // updated to use it. The |force_ignore_site_for_cookies| output parameter
 diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
-index fd2f73901ec6f565033af71f99d531aecab0233f..2f54722031d74b8a5824b27d4e7585c8b21ece54 100644
+index c7fa94ee18d094f4674cecf5c5cb746a2ded7ae9..e7b73fabeb1979144039826679419ec73fb83355 100644
 --- a/content/renderer/render_frame_impl.cc
 +++ b/content/renderer/render_frame_impl.cc
-@@ -5743,6 +5743,23 @@ void RenderFrameImpl::BeginNavigation(
+@@ -5707,6 +5707,23 @@ void RenderFrameImpl::BeginNavigation(
      // we can do a per-frame check here rather than a process-wide check.
      bool should_fork = HasWebUIScheme(url) || HasWebUIScheme(old_url) ||
                         (enabled_bindings_ & kWebUIBindingsPolicyMask);

+ 2 - 2
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 afebe5db100f9c7e6a402e3b28b3be6e3d95cf63..543ec9f2bfd5009ed24265b49f08a5ada640028f 100644
+index 73dd6d06e13a7c44acc79bf06e2d9e8d93344bc6..90262611c0d813a709b4fa8bbb1c480793861c58 100644
 --- a/content/renderer/render_thread_impl.cc
 +++ b/content/renderer/render_thread_impl.cc
-@@ -1306,7 +1306,7 @@ bool RenderThreadImpl::IsLcdTextEnabled() {
+@@ -1295,7 +1295,7 @@ bool RenderThreadImpl::IsLcdTextEnabled() {
  }
  
  bool RenderThreadImpl::IsElasticOverscrollEnabled() {

+ 5 - 5
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 6380f60451affea9e801838c60842f9aaf85560d..01ed5881a0f6a492c6b5fdae515e139a0281f432 100644
+index 68f5eac06290558e7072bf84d6471d316455c068..616cf2720a1c5bd496dcaa3d6e93f6b5443bf84d 100644
 --- a/content/browser/renderer_host/render_process_host_impl.cc
 +++ b/content/browser/renderer_host/render_process_host_impl.cc
-@@ -412,6 +412,11 @@ class RendererSandboxedProcessLauncherDelegate
+@@ -411,6 +411,11 @@ class RendererSandboxedProcessLauncherDelegate
    {
    }
  
@@ -37,7 +37,7 @@ index 6380f60451affea9e801838c60842f9aaf85560d..01ed5881a0f6a492c6b5fdae515e139a
    ~RendererSandboxedProcessLauncherDelegate() override {}
  
  #if defined(OS_WIN)
-@@ -433,6 +438,9 @@ class RendererSandboxedProcessLauncherDelegate
+@@ -432,6 +437,9 @@ class RendererSandboxedProcessLauncherDelegate
  
  #if BUILDFLAG(USE_ZYGOTE_HANDLE)
    ZygoteHandle GetZygote() override {
@@ -47,7 +47,7 @@ index 6380f60451affea9e801838c60842f9aaf85560d..01ed5881a0f6a492c6b5fdae515e139a
      const base::CommandLine& browser_command_line =
          *base::CommandLine::ForCurrentProcess();
      base::CommandLine::StringType renderer_prefix =
-@@ -447,10 +455,13 @@ class RendererSandboxedProcessLauncherDelegate
+@@ -446,10 +454,13 @@ class RendererSandboxedProcessLauncherDelegate
      return sandbox::policy::SandboxType::kRenderer;
    }
  
@@ -62,7 +62,7 @@ index 6380f60451affea9e801838c60842f9aaf85560d..01ed5881a0f6a492c6b5fdae515e139a
  };
  
  const char kSessionStorageHolderKey[] = "kSessionStorageHolderKey";
-@@ -1865,11 +1876,18 @@ bool RenderProcessHostImpl::Init() {
+@@ -1854,11 +1865,18 @@ bool RenderProcessHostImpl::Init() {
        cmd_line->PrependWrapper(renderer_prefix);
      AppendRendererCommandLine(cmd_line.get());
  

+ 3 - 2
patches/chromium/use_electron_resources_in_pdf_util.patch

@@ -8,14 +8,15 @@ and cause a DCHECK(), since the resource will be loaded as an empty
 string.
 
 diff --git a/chrome/browser/pdf/pdf_extension_util.cc b/chrome/browser/pdf/pdf_extension_util.cc
-index 91c9c45ecc9ad574db0ee3e9c2b9269334b950ec..ff17b562e5642854c758137bdc0348a765e6ca48 100644
+index b1252ff0c7caa0916e5655e54b06965a982a7f06..03713a90d884153634535ef363943939c7e823a8 100644
 --- a/chrome/browser/pdf/pdf_extension_util.cc
 +++ b/chrome/browser/pdf/pdf_extension_util.cc
-@@ -8,7 +8,7 @@
+@@ -8,8 +8,7 @@
  #include "base/values.h"
  #include "chrome/browser/browser_process.h"
  #include "chrome/common/chrome_content_client.h"
 -#include "chrome/grit/browser_resources.h"
+-#include "chrome/grit/generated_resources.h"
 +#include "electron/grit/electron_resources.h"
  #include "components/strings/grit/components_strings.h"
  #include "components/zoom/page_zoom_constants.h"

+ 6 - 6
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 14abe9e1e715d849826b07e533cb0900d6ab81e8..b3adfd8438c605894e55fb4786cae4fd2e70345b 100644
+index 60394e536151d928e7a067c9e0bb98946bb94ff2..07ae134c8f6ba5aa03b9db35b4cea9e8e1668b5a 100644
 --- a/content/browser/web_contents/web_contents_impl.cc
 +++ b/content/browser/web_contents/web_contents_impl.cc
-@@ -2583,6 +2583,12 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
+@@ -2763,6 +2763,12 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
    std::string unique_name;
    frame_tree_.root()->SetFrameName(params.main_frame_name, unique_name);
  
@@ -25,7 +25,7 @@ index 14abe9e1e715d849826b07e533cb0900d6ab81e8..b3adfd8438c605894e55fb4786cae4fd
    WebContentsViewDelegate* delegate =
        GetContentClient()->browser()->GetWebContentsViewDelegate(this);
  
-@@ -2593,6 +2599,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
+@@ -2773,6 +2779,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
      view_.reset(CreateWebContentsView(this, delegate,
                                        &render_view_host_delegate_view_));
    }
@@ -34,10 +34,10 @@ index 14abe9e1e715d849826b07e533cb0900d6ab81e8..b3adfd8438c605894e55fb4786cae4fd
    CHECK(view_.get());
  
 diff --git a/content/public/browser/web_contents.h b/content/public/browser/web_contents.h
-index e282d97d9b0fac4a88d58baaf26b23320ca26a18..4399dc58404c9ce811f1c366ba5280aab78f3832 100644
+index b879df2f24227184972f3ac584bce57ab6b29ed0..6d6e5e1009afd5fed509b857ba5f8b919712c882 100644
 --- a/content/public/browser/web_contents.h
 +++ b/content/public/browser/web_contents.h
-@@ -83,8 +83,11 @@ class BrowserContext;
+@@ -86,8 +86,11 @@ class BrowserContext;
  class BrowserPluginGuestDelegate;
  class RenderFrameHost;
  class RenderViewHost;
@@ -49,7 +49,7 @@ index e282d97d9b0fac4a88d58baaf26b23320ca26a18..4399dc58404c9ce811f1c366ba5280aa
  class WebUI;
  struct CustomContextMenuContext;
  struct DropData;
-@@ -213,6 +216,10 @@ class WebContents : public PageNavigator,
+@@ -215,6 +218,10 @@ class WebContents : public PageNavigator,
      // Sandboxing flags set on the new WebContents.
      network::mojom::WebSandboxFlags starting_sandbox_flags;
  

+ 2 - 2
patches/chromium/webview_cross_drag.patch

@@ -8,10 +8,10 @@ This allows dragging and dropping between <webview>s.
 Originally landed in https://github.com/electron/libchromiumcontent/pull/267
 
 diff --git a/content/browser/web_contents/web_contents_view_aura.cc b/content/browser/web_contents/web_contents_view_aura.cc
-index a9d0906acc95408ee524b61e595d883924d42b69..0e628599a8eb738988a770eb3b83d2af661c8100 100644
+index aaa41c7906b1cba938f669a8c1bfe99ff55eb90e..94320f40dc50fe316f3db5ff49f93ba4303fdd02 100644
 --- a/content/browser/web_contents/web_contents_view_aura.cc
 +++ b/content/browser/web_contents/web_contents_view_aura.cc
-@@ -789,9 +789,7 @@ gfx::NativeView WebContentsViewAura::GetRenderWidgetHostViewParent() const {
+@@ -790,9 +790,7 @@ gfx::NativeView WebContentsViewAura::GetRenderWidgetHostViewParent() const {
  
  bool WebContentsViewAura::IsValidDragTarget(
      RenderWidgetHostImpl* target_rwh) const {

+ 9 - 9
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 5b0784c844bd9dd448c4e660d85902f930851b72..cc6101c82e659bbc5a8568c166d5a56fae0c8d64 100644
+index 04e4329a5886e782422258c0713bd48bac1bcf4e..9349a3755f824630904bcd044a6ba403d639f490 100644
 --- a/content/public/renderer/content_renderer_client.h
 +++ b/content/public/renderer/content_renderer_client.h
-@@ -398,6 +398,11 @@ class CONTENT_EXPORT ContentRendererClient {
+@@ -400,6 +400,11 @@ class CONTENT_EXPORT ContentRendererClient {
    virtual void DidInitializeWorkerContextOnWorkerThread(
        v8::Local<v8::Context> context) {}
  
@@ -26,7 +26,7 @@ index 5b0784c844bd9dd448c4e660d85902f930851b72..cc6101c82e659bbc5a8568c166d5a56f
    // 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 d6375e9d16dcb5302a5c5bca2a2042d53f14f1bb..d95a5b5f31d2ca91578fff8cc0cb3378fb5d95e9 100644
+index ca435bda981b386bccff5bc03400541395c2f079..4bc3a5b081b3c518e105852c97119bcfdc099917 100644
 --- a/content/renderer/renderer_blink_platform_impl.cc
 +++ b/content/renderer/renderer_blink_platform_impl.cc
 @@ -865,6 +865,12 @@ void RendererBlinkPlatformImpl::WillStopWorkerThread() {
@@ -43,10 +43,10 @@ index d6375e9d16dcb5302a5c5bca2a2042d53f14f1bb..d95a5b5f31d2ca91578fff8cc0cb3378
      const v8::Local<v8::Context>& worker) {
    GetContentClient()->renderer()->DidInitializeWorkerContextOnWorkerThread(
 diff --git a/content/renderer/renderer_blink_platform_impl.h b/content/renderer/renderer_blink_platform_impl.h
-index cfced914c88d81df2396aa5b87cc9f52c8ba5448..aa31e030f34a66ac2fee79b09b99c2dd3aaa1c8a 100644
+index 30af7f4fed5fe2e1aaa231d379c91253b55890aa..50ad183c039c492947c127fe1cafb6a908d1e65d 100644
 --- a/content/renderer/renderer_blink_platform_impl.h
 +++ b/content/renderer/renderer_blink_platform_impl.h
-@@ -191,6 +191,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl {
+@@ -192,6 +192,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl {
    void DidStartWorkerThread() override;
    void WillStopWorkerThread() override;
    void WorkerContextCreated(const v8::Local<v8::Context>& worker) override;
@@ -55,10 +55,10 @@ index cfced914c88d81df2396aa5b87cc9f52c8ba5448..aa31e030f34a66ac2fee79b09b99c2dd
        const blink::WebSecurityOrigin& script_origin) override;
    bool IsExcludedHeaderForServiceWorkerFetchEvent(
 diff --git a/third_party/blink/public/platform/platform.h b/third_party/blink/public/platform/platform.h
-index abfcd20b894191138dc0ffab48ef8749b08c69a1..614837662b2bf462e50c0bc702e4c29bcd42c8e2 100644
+index 4c05fb9099e27e4a668d8dd10c2e1a7bdfa70517..27cefad2c07d604acfdcb23181b3b8b14b3228c1 100644
 --- a/third_party/blink/public/platform/platform.h
 +++ b/third_party/blink/public/platform/platform.h
-@@ -642,6 +642,7 @@ class BLINK_PLATFORM_EXPORT Platform {
+@@ -643,6 +643,7 @@ class BLINK_PLATFORM_EXPORT Platform {
    virtual void DidStartWorkerThread() {}
    virtual void WillStopWorkerThread() {}
    virtual void WorkerContextCreated(const v8::Local<v8::Context>& worker) {}
@@ -67,10 +67,10 @@ index abfcd20b894191138dc0ffab48ef8749b08c69a1..614837662b2bf462e50c0bc702e4c29b
        const WebSecurityOrigin& script_origin) {
      return false;
 diff --git a/third_party/blink/renderer/core/workers/worker_thread.cc b/third_party/blink/renderer/core/workers/worker_thread.cc
-index ac08a8cea9c5974c2f7deba0804928b89b099378..49490b8ec83a0efb1d6420b0cd6130cb68b2a800 100644
+index f2ecee885ab4dedd07f953f4877e03e4bbb3e236..54a54e2424d88d7ef3a797ea8d020410c63ddf4f 100644
 --- a/third_party/blink/renderer/core/workers/worker_thread.cc
 +++ b/third_party/blink/renderer/core/workers/worker_thread.cc
-@@ -742,6 +742,12 @@ void WorkerThread::PrepareForShutdownOnWorkerThread() {
+@@ -744,6 +744,12 @@ void WorkerThread::PrepareForShutdownOnWorkerThread() {
      nested_runner_->QuitNow();
    }
  

+ 10 - 10
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 8309bb7f3f284b0930c13a7e75a7f9de64fedb73..7c5c925cadc5caca5ef69eda80ccc04797b2c803 100644
+index 5097d3f812f8ad0a583042ba332855c8b3fda222..343a423e393b985fefdc28e80eccb17e471f18f6 100644
 --- a/content/public/renderer/content_renderer_client.h
 +++ b/content/public/renderer/content_renderer_client.h
-@@ -405,6 +405,11 @@ class CONTENT_EXPORT ContentRendererClient {
+@@ -407,6 +407,11 @@ class CONTENT_EXPORT ContentRendererClient {
    virtual void DidInitializeWorkerContextOnWorkerThread(
        v8::Local<v8::Context> context) {}
  
@@ -35,7 +35,7 @@ index 8309bb7f3f284b0930c13a7e75a7f9de64fedb73..7c5c925cadc5caca5ef69eda80ccc047
    // 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 d95a5b5f31d2ca91578fff8cc0cb3378fb5d95e9..f3e2a429d3e058d242a7e6eda8046f7366ba0e77 100644
+index 4bc3a5b081b3c518e105852c97119bcfdc099917..f9738ff0c1811f5ffcbcd70ecbcebdf74a8ff4b0 100644
 --- a/content/renderer/renderer_blink_platform_impl.cc
 +++ b/content/renderer/renderer_blink_platform_impl.cc
 @@ -877,6 +877,12 @@ void RendererBlinkPlatformImpl::WorkerContextCreated(
@@ -52,10 +52,10 @@ index d95a5b5f31d2ca91578fff8cc0cb3378fb5d95e9..f3e2a429d3e058d242a7e6eda8046f73
      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 aa31e030f34a66ac2fee79b09b99c2dd3aaa1c8a..42ddb186cfcec7da4bed050d3b5bc57226fa15c8 100644
+index 50ad183c039c492947c127fe1cafb6a908d1e65d..97c7bfb6cffac313c837f2e83266a353c64eefd7 100644
 --- a/content/renderer/renderer_blink_platform_impl.h
 +++ b/content/renderer/renderer_blink_platform_impl.h
-@@ -191,6 +191,8 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl {
+@@ -192,6 +192,8 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl {
    void DidStartWorkerThread() override;
    void WillStopWorkerThread() override;
    void WorkerContextCreated(const v8::Local<v8::Context>& worker) override;
@@ -65,10 +65,10 @@ index aa31e030f34a66ac2fee79b09b99c2dd3aaa1c8a..42ddb186cfcec7da4bed050d3b5bc572
    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 614837662b2bf462e50c0bc702e4c29bcd42c8e2..8c643f40533b63cd3b6748d9acb444604eecfb68 100644
+index 27cefad2c07d604acfdcb23181b3b8b14b3228c1..3d5b69a75656b159352920bb0bfaee8c82648da0 100644
 --- a/third_party/blink/public/platform/platform.h
 +++ b/third_party/blink/public/platform/platform.h
-@@ -642,6 +642,8 @@ class BLINK_PLATFORM_EXPORT Platform {
+@@ -643,6 +643,8 @@ class BLINK_PLATFORM_EXPORT Platform {
    virtual void DidStartWorkerThread() {}
    virtual void WillStopWorkerThread() {}
    virtual void WorkerContextCreated(const v8::Local<v8::Context>& worker) {}
@@ -78,10 +78,10 @@ index 614837662b2bf462e50c0bc702e4c29bcd42c8e2..8c643f40533b63cd3b6748d9acb44460
    virtual bool AllowScriptExtensionForServiceWorker(
        const WebSecurityOrigin& script_origin) {
 diff --git a/third_party/blink/renderer/bindings/core/v8/worker_or_worklet_script_controller.cc b/third_party/blink/renderer/bindings/core/v8/worker_or_worklet_script_controller.cc
-index c0ed21b47e6b7808115b4ddfadea58ed5b5b4987..3190a99973b5f42a5ebc700f1939cdb38056e0a6 100644
+index 4443d8286c140887770c29ed8de09bd7193c3ee6..30498af4739628742efd58635f16294f0bec480c 100644
 --- a/third_party/blink/renderer/bindings/core/v8/worker_or_worklet_script_controller.cc
 +++ b/third_party/blink/renderer/bindings/core/v8/worker_or_worklet_script_controller.cc
-@@ -306,6 +306,7 @@ void WorkerOrWorkletScriptController::PrepareForEvaluation() {
+@@ -272,6 +272,7 @@ void WorkerOrWorkletScriptController::PrepareForEvaluation() {
    V8PerContextData* per_context_data = script_state_->PerContextData();
    ignore_result(per_context_data->ConstructorForType(
        global_scope_->GetWrapperTypeInfo()));
@@ -89,7 +89,7 @@ index c0ed21b47e6b7808115b4ddfadea58ed5b5b4987..3190a99973b5f42a5ebc700f1939cdb3
  #else   // USE_BLINK_V8_BINDING_NEW_IDL_INTERFACE
    ScriptState::Scope scope(script_state_);
    v8::Local<v8::Context> context = script_state_->GetContext();
-@@ -331,6 +332,8 @@ void WorkerOrWorkletScriptController::PrepareForEvaluation() {
+@@ -297,6 +298,8 @@ void WorkerOrWorkletScriptController::PrepareForEvaluation() {
    wrapper_type_info->InstallConditionalFeatures(
        context, *world_, global_object, v8::Local<v8::Object>(),
        v8::Local<v8::Function>(), global_interface_template);

+ 1 - 0
patches/node/.patches

@@ -45,3 +45,4 @@ feat_add_implementation_of_v8_platform_postjob.patch
 fix_enable_tls_renegotiation.patch
 crypto_update_certdata_to_nss_3_56.patch
 n-api_src_provide_asynchronous_cleanup_hooks.patch
+fix_add_v8_enable_reverse_jsargs_defines_in_common_gypi.patch

+ 29 - 0
patches/node/fix_add_v8_enable_reverse_jsargs_defines_in_common_gypi.patch

@@ -0,0 +1,29 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Samuel Attard <[email protected]>
+Date: Thu, 17 Sep 2020 14:18:30 -0700
+Subject: fix: add v8_enable_reverse_jsargs defines in common.gypi
+
+This can be removed once node upgrades V8 and inevitably has to do this exact same thing.  Also hi node people if you are looking at this.
+
+diff --git a/common.gypi b/common.gypi
+index 38e7b2802f6225ac0e1ff4789b9ff8f4fb04cb79..eb081877ec1a2075377507091cdd85faccaca671 100644
+--- a/common.gypi
++++ b/common.gypi
+@@ -73,6 +73,7 @@
+ 
+     'v8_enable_pointer_compression%': 0,
+     'v8_enable_31bit_smis_on_64bit_arch': 1,
++    'v8_enable_reverse_jsargs': 1,
+ 
+     ##### end V8 defaults #####
+ 
+@@ -390,6 +391,9 @@
+       ['v8_enable_pointer_compression == 1 or v8_enable_31bit_smis_on_64bit_arch == 1', {
+         'defines': ['V8_31BIT_SMIS_ON_64BIT_ARCH'],
+       }],
++      ['v8_enable_reverse_jsargs == 1', {
++        'defines': ['V8_REVERSE_JSARGS'],
++      }],
+       ['OS == "win"', {
+         'defines': [
+           'WIN32',

+ 3 - 3
patches/v8/add_realloc.patch

@@ -12,10 +12,10 @@ when we override ReallocateBufferMemory, so we therefore need to implement
 Realloc on the v8 side.
 
 diff --git a/include/v8.h b/include/v8.h
-index 60c07714d49abaa0aa4d38d823f25a6714f002da..e4c6489a74d2c75f7ceb1952a6f664ccf2b39f03 100644
+index 32687d90b5f96f68975a0d773dfd95ac1ed28943..e5e5e4733b1562b1dbb6c0ddc5397ee3a8f1ace1 100644
 --- a/include/v8.h
 +++ b/include/v8.h
-@@ -5089,6 +5089,13 @@ class V8_EXPORT ArrayBuffer : public Object {
+@@ -5131,6 +5131,13 @@ class V8_EXPORT ArrayBuffer : public Object {
       */
      virtual void* AllocateUninitialized(size_t length) = 0;
  
@@ -30,7 +30,7 @@ index 60c07714d49abaa0aa4d38d823f25a6714f002da..e4c6489a74d2c75f7ceb1952a6f664cc
       * Free the memory block of size |length|, pointed to by |data|.
       * That memory is guaranteed to be previously allocated by |Allocate|.
 diff --git a/src/api/api.cc b/src/api/api.cc
-index d7c9bd5c5258a18ae88cf11a2b53df7108ea2b05..54e8140dbec81d829c26389aaf49a8655547dfb4 100644
+index b49ad728a8e4d57f69d8228207f4280251fbd448..561e9888d4c71b6ef9ee45c581f5071a55a422c0 100644
 --- a/src/api/api.cc
 +++ b/src/api/api.cc
 @@ -536,6 +536,10 @@ void V8::SetSnapshotDataBlob(StartupData* snapshot_blob) {

+ 4 - 4
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 d123dd7918ec3fcbf6e2df6b34f19db466da6a35..1aed73c099931b602bf7ff70e84ad52971742901 100644
+index 920ad3b81007c4b48f199a5dd37d6626cadf0a7c..4226f4d1b27e486ae1899f7a88ff4e00b73084ea 100644
 --- a/BUILD.gn
 +++ b/BUILD.gn
-@@ -400,7 +400,7 @@ config("internal_config") {
+@@ -411,7 +411,7 @@ config("internal_config") {
      ":v8_header_features",
    ]
  
@@ -21,7 +21,7 @@ index d123dd7918ec3fcbf6e2df6b34f19db466da6a35..1aed73c099931b602bf7ff70e84ad529
      defines += [ "BUILDING_V8_SHARED" ]
    }
  }
-@@ -4431,7 +4431,7 @@ if (current_toolchain == v8_generator_toolchain) {
+@@ -4477,7 +4477,7 @@ if (current_toolchain == v8_generator_toolchain) {
        "src/interpreter/bytecodes.h",
      ]
  
@@ -30,7 +30,7 @@ index d123dd7918ec3fcbf6e2df6b34f19db466da6a35..1aed73c099931b602bf7ff70e84ad529
  
      deps = [
        ":v8_libbase",
-@@ -4468,6 +4468,8 @@ if (current_toolchain == v8_snapshot_toolchain) {
+@@ -4514,6 +4514,8 @@ if (current_toolchain == v8_snapshot_toolchain) {
  
      configs = [ ":internal_config" ]
  

+ 11 - 11
patches/v8/chore_add_v8_apple_silicon_patches.patch

@@ -6,10 +6,10 @@ Subject: chore: add v8 apple silicon patches
 Once these are available upstream we can remove this patch.
 
 diff --git a/src/codegen/arm64/macro-assembler-arm64.cc b/src/codegen/arm64/macro-assembler-arm64.cc
-index 2d3e27e5302f40466917ca5ce28bd787d14d8fe9..d0d55a25a62c255096cfb0348beaae02e5549e87 100644
+index fef1758aaa81a85009461839ec9aa816e7d196a6..c0f7a1cf5fd4787896b06bce911aabf17b290e88 100644
 --- a/src/codegen/arm64/macro-assembler-arm64.cc
 +++ b/src/codegen/arm64/macro-assembler-arm64.cc
-@@ -2973,6 +2973,35 @@ void TurboAssembler::PrintfNoPreserve(const char* format,
+@@ -2975,6 +2975,35 @@ void TurboAssembler::PrintfNoPreserve(const char* format,
  
    int arg_count = kPrintfMaxArgCount;
  
@@ -45,7 +45,7 @@ index 2d3e27e5302f40466917ca5ce28bd787d14d8fe9..d0d55a25a62c255096cfb0348beaae02
    // The PCS varargs registers for printf. Note that x0 is used for the printf
    // format string.
    static const CPURegList kPCSVarargs =
-@@ -3083,7 +3112,7 @@ void TurboAssembler::PrintfNoPreserve(const char* format,
+@@ -3085,7 +3114,7 @@ void TurboAssembler::PrintfNoPreserve(const char* format,
      }
  #endif
    }
@@ -54,7 +54,7 @@ index 2d3e27e5302f40466917ca5ce28bd787d14d8fe9..d0d55a25a62c255096cfb0348beaae02
    // Load the format string into x0, as per the procedure-call standard.
    //
    // To make the code as portable as possible, the format string is encoded
-@@ -3105,6 +3134,10 @@ void TurboAssembler::PrintfNoPreserve(const char* format,
+@@ -3107,6 +3136,10 @@ void TurboAssembler::PrintfNoPreserve(const char* format,
    }
  
    CallPrintf(arg_count, pcs);
@@ -66,10 +66,10 @@ index 2d3e27e5302f40466917ca5ce28bd787d14d8fe9..d0d55a25a62c255096cfb0348beaae02
  
  void TurboAssembler::CallPrintf(int arg_count, const CPURegister* args) {
 diff --git a/src/compiler/backend/arm64/instruction-selector-arm64.cc b/src/compiler/backend/arm64/instruction-selector-arm64.cc
-index 5f19a6bb7cbb5ace74747a0bcd780034ff4aab54..b860a88febbb6033399ca23862fd25165d5fb3e9 100644
+index dc4fdb4d2ef1a327dab529a5aa5990f6705bbd43..2a11ac9e6ab70cc3556cefc95f38b2cec72a2304 100644
 --- a/src/compiler/backend/arm64/instruction-selector-arm64.cc
 +++ b/src/compiler/backend/arm64/instruction-selector-arm64.cc
-@@ -1884,6 +1884,7 @@ void InstructionSelector::EmitPrepareArguments(
+@@ -1898,6 +1898,7 @@ void InstructionSelector::EmitPrepareArguments(
  
    // Poke the arguments into the stack.
    while (slot >= 0) {
@@ -78,10 +78,10 @@ index 5f19a6bb7cbb5ace74747a0bcd780034ff4aab54..b860a88febbb6033399ca23862fd2516
      PushParameter input1 = slot > 0 ? (*arguments)[slot - 1] : PushParameter();
      // Emit a poke-pair if consecutive parameters have the same type.
 diff --git a/src/flags/flag-definitions.h b/src/flags/flag-definitions.h
-index 97f11b55ece56eda8c640e3909cdb31541afbe9b..b06cdebbd294714582b78aeb0f14bc21d3c01ff8 100644
+index d7fbd96fb9f255e6cc110d15289281922e238387..4befa19700c44625ccaa4fca90f6a9cc432feaaf 100644
 --- a/src/flags/flag-definitions.h
 +++ b/src/flags/flag-definitions.h
-@@ -715,7 +715,12 @@ DEFINE_INT(wasm_num_compilation_tasks, 128,
+@@ -758,7 +758,12 @@ DEFINE_INT(wasm_num_compilation_tasks, 128,
             "maximum number of parallel compilation tasks for wasm")
  DEFINE_DEBUG_BOOL(trace_wasm_native_heap, false,
                    "trace wasm native heap events")
@@ -96,7 +96,7 @@ index 97f11b55ece56eda8c640e3909cdb31541afbe9b..b06cdebbd294714582b78aeb0f14bc21
  DEFINE_DEBUG_BOOL(trace_wasm_serialization, false,
                    "trace serialization/deserialization")
 diff --git a/src/wasm/function-compiler.cc b/src/wasm/function-compiler.cc
-index 22cae5f668236438c9630287cbd5c6280e12d4b2..461243b4ddbcda4a7f1a3fd888b602a070706b24 100644
+index a37d11db2fb8ee162152d62d7cca0130eacbf3fa..edaabf588c0fdf0d693b32ee2410f677afc20e74 100644
 --- a/src/wasm/function-compiler.cc
 +++ b/src/wasm/function-compiler.cc
 @@ -258,6 +258,7 @@ void WasmCompilationUnit::CompileWasmFunction(Isolate* isolate,
@@ -121,10 +121,10 @@ index 5d8abca5abb6f958b61b9922ce0e6eac80bde244..040f8cfd31a1f9f971fc866ab34657ad
    explicit NativeModuleModificationScope(NativeModule* native_module);
    ~NativeModuleModificationScope();
 diff --git a/src/wasm/wasm-objects.cc b/src/wasm/wasm-objects.cc
-index 3411bb6c87cd05985f35b290dedf3920378ee68a..27d1d21f2b2f5bcab87da358246ff62587898624 100644
+index e0202b98d138b55d1f953655fedef5717d9fb2c3..d69bf0a5be8f3ffb58ca7bf962891d95566e67ff 100644
 --- a/src/wasm/wasm-objects.cc
 +++ b/src/wasm/wasm-objects.cc
-@@ -1452,6 +1452,7 @@ void WasmInstanceObject::ImportWasmJSFunctionIntoTable(
+@@ -1504,6 +1504,7 @@ void WasmInstanceObject::ImportWasmJSFunctionIntoTable(
      wasm::WasmCompilationResult result = compiler::CompileWasmImportCallWrapper(
          isolate->wasm_engine(), &env, kind, sig, false,
          shared.internal_formal_parameter_count());

+ 4 - 4
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 54e8140dbec81d829c26389aaf49a8655547dfb4..efd05c07faf7fbcd2b484e83b4b6811046cd8a00 100644
+index 561e9888d4c71b6ef9ee45c581f5071a55a422c0..15074cf263a4bdc3908e8d26689292b23e109f5f 100644
 --- a/src/api/api.cc
 +++ b/src/api/api.cc
-@@ -8733,7 +8733,7 @@ void Isolate::SetPromiseRejectCallback(PromiseRejectCallback callback) {
+@@ -8789,7 +8789,7 @@ void Isolate::SetPromiseRejectCallback(PromiseRejectCallback callback) {
  }
  
  void Isolate::PerformMicrotaskCheckpoint() {
@@ -19,10 +19,10 @@ index 54e8140dbec81d829c26389aaf49a8655547dfb4..efd05c07faf7fbcd2b484e83b4b68110
    isolate->default_microtask_queue()->PerformCheckpoint(this);
  }
 diff --git a/src/heap/heap.cc b/src/heap/heap.cc
-index 6548365746e343eec95ad15271ae47728404de5e..547d5ab381ad84fe4bd79329381476b0f82bdd12 100644
+index 4506ed71aae301370bf0d39a1336d789d0403aa3..6755a991df16a9c9d0e9efb2f378e4d68463532c 100644
 --- a/src/heap/heap.cc
 +++ b/src/heap/heap.cc
-@@ -5614,9 +5614,9 @@ void Heap::TearDown() {
+@@ -5630,9 +5630,9 @@ void Heap::TearDown() {
  void Heap::AddGCPrologueCallback(v8::Isolate::GCCallbackWithData callback,
                                   GCType gc_type, void* data) {
    DCHECK_NOT_NULL(callback);

+ 3 - 3
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 f67fc24806fd18c7226972f77252a71fc118727f..b5777024d98e1ff298c8f74227b01a2104d3e369 100644
+index d0c872a965d6a77a2483d590f5d956cca00197e9..a3ae70aa0e5965aa19f7eeb13e882955d42d618f 100644
 --- a/BUILD.gn
 +++ b/BUILD.gn
-@@ -400,6 +400,10 @@ config("internal_config") {
+@@ -411,6 +411,10 @@ config("internal_config") {
      ":v8_header_features",
    ]
  
@@ -27,7 +27,7 @@ index f67fc24806fd18c7226972f77252a71fc118727f..b5777024d98e1ff298c8f74227b01a21
      defines += [ "BUILDING_V8_SHARED" ]
    }
 diff --git a/src/base/macros.h b/src/base/macros.h
-index cea15280a485cd6902500d3a20d85fb30eb3c449..1a5dd47c5fca640d8e3100b9f26067836460c758 100644
+index 37cab78f08fcbc859d549a3188afe234d1e03ad5..a7b628cae296c7c97e58b46502bafebe92963597 100644
 --- a/src/base/macros.h
 +++ b/src/base/macros.h
 @@ -396,13 +396,17 @@ bool is_inbounds(float_t v) {

+ 2 - 2
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 1aed73c099931b602bf7ff70e84ad52971742901..f67fc24806fd18c7226972f77252a71fc118727f 100644
+index 4226f4d1b27e486ae1899f7a88ff4e00b73084ea..d0c872a965d6a77a2483d590f5d956cca00197e9 100644
 --- a/BUILD.gn
 +++ b/BUILD.gn
-@@ -4442,7 +4442,6 @@ if (current_toolchain == v8_generator_toolchain) {
+@@ -4488,7 +4488,6 @@ if (current_toolchain == v8_generator_toolchain) {
  
  if (current_toolchain == v8_snapshot_toolchain) {
    v8_executable("mksnapshot") {

+ 3 - 3
patches/v8/fix_use_proper_page_size_for_mac_arm64.patch

@@ -7,10 +7,10 @@ This fix temporarily sets page size to 16k for mac arm64 so that mksnapshot can
 and generate a mac arm64 snapshot
 
 diff --git a/src/base/platform/platform-posix.cc b/src/base/platform/platform-posix.cc
-index b469f6254fad4ce7b2c14aa1476e81d103091e79..0dbee6661eaf71de2330f8b4ed8a8544ee2788ec 100644
+index 89173b593a6ce887c0f3cea082f2d31e17f8f5db..f233d83286dd82559ee3573b7adc525adf7ce377 100644
 --- a/src/base/platform/platform-posix.cc
 +++ b/src/base/platform/platform-posix.cc
-@@ -159,9 +159,19 @@ void* Allocate(void* hint, size_t size, OS::MemoryPermission access,
+@@ -167,9 +167,19 @@ void* Allocate(void* hint, size_t size, OS::MemoryPermission access,
                 PageType page_type) {
    int prot = GetProtectionFromMemoryPermission(access);
    int flags = GetFlagsForMemoryPermission(access, page_type);
@@ -30,7 +30,7 @@ index b469f6254fad4ce7b2c14aa1476e81d103091e79..0dbee6661eaf71de2330f8b4ed8a8544
  }
  
  #endif  // !V8_OS_FUCHSIA
-@@ -218,7 +228,9 @@ void OS::Initialize(bool hard_abort, const char* const gc_fake_mmap) {
+@@ -226,7 +236,9 @@ void OS::Initialize(bool hard_abort, const char* const gc_fake_mmap) {
  }
  
  int OS::ActivationFrameAlignment() {

+ 3 - 3
patches/v8/revert_cleanup_switch_offset_of_to_offsetof_where_possible.patch

@@ -6,10 +6,10 @@ Subject: Revert "[cleanup] Switch {OFFSET_OF} to {offsetof} where possible."
 This reverts commit d287e4bc46243841c77cf9798516ee4dcc54bf43.
 
 diff --git a/src/deoptimizer/deoptimizer.h b/src/deoptimizer/deoptimizer.h
-index aa44c3532bb8d4dbc359cdd56069fd45652ab57a..734471b5d91ebcc93378779c73fc2c666a909fd7 100644
+index e69fd090de709687ce78fa987f6113775953ceac..e029a0d3b928983778eb60cd532793901de4837a 100644
 --- a/src/deoptimizer/deoptimizer.h
 +++ b/src/deoptimizer/deoptimizer.h
-@@ -505,14 +505,14 @@ class Deoptimizer : public Malloced {
+@@ -506,14 +506,14 @@ class Deoptimizer : public Malloced {
                                      DeoptimizeKind* type);
  
    // Code generation support.
@@ -28,7 +28,7 @@ index aa44c3532bb8d4dbc359cdd56069fd45652ab57a..734471b5d91ebcc93378779c73fc2c66
    }
  
    V8_EXPORT_PRIVATE static int GetDeoptimizedCodeCount(Isolate* isolate);
-@@ -749,11 +749,11 @@ class FrameDescription {
+@@ -772,11 +772,11 @@ class FrameDescription {
    int parameter_count() { return parameter_count_; }
  
    static int registers_offset() {

+ 1 - 1
shell/browser/api/electron_api_session.cc

@@ -570,7 +570,7 @@ v8::Local<v8::Promise> Session::ClearAuthCache() {
   content::BrowserContext::GetDefaultStoragePartition(browser_context_)
       ->GetNetworkContext()
       ->ClearHttpAuthCache(
-          base::Time(),
+          base::Time(), base::Time::Max(),
           base::BindOnce(gin_helper::Promise<void>::ResolvePromise,
                          std::move(promise)));
 

+ 2 - 2
shell/browser/api/electron_api_web_contents.cc

@@ -23,8 +23,8 @@
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/hang_monitor/hang_crash_dump.h"
 #include "chrome/browser/ssl/security_state_tab_helper.h"
-#include "content/browser/frame_host/frame_tree_node.h"             // nogncheck
-#include "content/browser/frame_host/render_frame_host_manager.h"   // nogncheck
+#include "content/browser/renderer_host/frame_tree_node.h"  // nogncheck
+#include "content/browser/renderer_host/render_frame_host_manager.h"  // nogncheck
 #include "content/browser/renderer_host/render_widget_host_impl.h"  // nogncheck
 #include "content/browser/renderer_host/render_widget_host_view_base.h"  // nogncheck
 #include "content/common/widget_messages.h"

+ 2 - 2
shell/browser/api/electron_api_web_contents_impl.cc

@@ -4,8 +4,8 @@
 
 #include "shell/browser/api/electron_api_web_contents.h"
 
-#include "content/browser/frame_host/frame_tree.h"           // nogncheck
-#include "content/browser/frame_host/frame_tree_node.h"      // nogncheck
+#include "content/browser/renderer_host/frame_tree.h"        // nogncheck
+#include "content/browser/renderer_host/frame_tree_node.h"   // nogncheck
 #include "content/browser/web_contents/web_contents_impl.h"  // nogncheck
 
 #if BUILDFLAG(ENABLE_OSR)

+ 62 - 24
shell/browser/electron_browser_client.cc

@@ -34,6 +34,7 @@
 #include "content/public/browser/browser_task_traits.h"
 #include "content/public/browser/client_certificate_delegate.h"
 #include "content/public/browser/login_delegate.h"
+#include "content/public/browser/non_network_url_loader_factory_base.h"  // nogncheck
 #include "content/public/browser/overlay_window.h"
 #include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/render_process_host.h"
@@ -46,7 +47,6 @@
 #include "content/public/common/content_switches.h"
 #include "content/public/common/service_names.mojom.h"
 #include "content/public/common/url_constants.h"
-#include "content/public/common/web_preferences.h"
 #include "electron/buildflags/buildflags.h"
 #include "electron/grit/electron_resources.h"
 #include "mojo/public/cpp/bindings/binder_map.h"
@@ -97,6 +97,7 @@
 #include "shell/common/options_switches.h"
 #include "shell/common/platform_util.h"
 #include "third_party/blink/public/common/loader/url_loader_throttle.h"
+#include "third_party/blink/public/common/web_preferences/web_preferences.h"
 #include "third_party/blink/public/mojom/badging/badging.mojom.h"
 #include "ui/base/resource/resource_bundle.h"
 #include "ui/native_theme/native_theme.h"
@@ -180,6 +181,15 @@
 #include "components/crash/core/app/crashpad.h"        // nogncheck
 #endif
 
+#if BUILDFLAG(ENABLE_PICTURE_IN_PICTURE) && defined(OS_WIN)
+#include "chrome/browser/ui/views/overlay/overlay_window_views.h"
+#include "shell/browser/browser.h"
+#include "ui/aura/window.h"
+#include "ui/aura/window_tree_host.h"
+#include "ui/base/win/shell.h"
+#include "ui/views/widget/widget.h"
+#endif
+
 using content::BrowserThread;
 
 namespace electron {
@@ -575,7 +585,7 @@ content::TtsPlatform* ElectronBrowserClient::GetTtsPlatform() {
 
 void ElectronBrowserClient::OverrideWebkitPrefs(
     content::RenderViewHost* host,
-    content::WebPreferences* prefs) {
+    blink::web_pref::WebPreferences* prefs) {
   prefs->javascript_enabled = true;
   prefs->web_security_enabled = true;
   prefs->plugins_enabled = true;
@@ -915,7 +925,19 @@ bool ElectronBrowserClient::CanCreateWindow(
 std::unique_ptr<content::OverlayWindow>
 ElectronBrowserClient::CreateWindowForPictureInPicture(
     content::PictureInPictureWindowController* controller) {
-  return content::OverlayWindow::Create(controller);
+  auto overlay_window = content::OverlayWindow::Create(controller);
+#if defined(OS_WIN)
+  base::string16 app_user_model_id = Browser::Get()->GetAppUserModelID();
+  if (!app_user_model_id.empty()) {
+    OverlayWindowViews* overlay_window_view =
+        static_cast<OverlayWindowViews*>(overlay_window.get());
+    ui::win::SetAppIdForWindow(app_user_model_id,
+                               overlay_window_view->GetNativeWindow()
+                                   ->GetHost()
+                                   ->GetAcceleratedWidget());
+  }
+#endif
+  return overlay_window;
 }
 #endif
 
@@ -1271,12 +1293,13 @@ void ElectronBrowserClient::SetUserAgent(const std::string& user_agent) {
 void ElectronBrowserClient::RegisterNonNetworkNavigationURLLoaderFactories(
     int frame_tree_node_id,
     base::UkmSourceId ukm_source_id,
+    NonNetworkURLLoaderFactoryDeprecatedMap* uniquely_owned_factories,
     NonNetworkURLLoaderFactoryMap* factories) {
   content::WebContents* web_contents =
       content::WebContents::FromFrameTreeNodeId(frame_tree_node_id);
   content::BrowserContext* context = web_contents->GetBrowserContext();
 #if BUILDFLAG(ENABLE_ELECTRON_EXTENSIONS)
-  factories->emplace(
+  uniquely_owned_factories->emplace(
       extensions::kExtensionScheme,
       extensions::CreateExtensionNavigationURLLoaderFactory(
           context, ukm_source_id,
@@ -1302,11 +1325,28 @@ namespace {
 
 // The FileURLLoaderFactory provided to the extension background pages.
 // Checks with the ChildProcessSecurityPolicy to validate the file access.
-class FileURLLoaderFactory : public network::mojom::URLLoaderFactory {
+class FileURLLoaderFactory : public content::NonNetworkURLLoaderFactoryBase {
  public:
-  explicit FileURLLoaderFactory(int child_id) : child_id_(child_id) {}
+  static mojo::PendingRemote<network::mojom::URLLoaderFactory> Create(
+      int child_id) {
+    mojo::PendingRemote<network::mojom::URLLoaderFactory> pending_remote;
+
+    // The FileURLLoaderFactory will delete itself when there are no more
+    // receivers - see the NonNetworkURLLoaderFactoryBase::OnDisconnect method.
+    new FileURLLoaderFactory(child_id,
+                             pending_remote.InitWithNewPipeAndPassReceiver());
+
+    return pending_remote;
+  }
 
  private:
+  explicit FileURLLoaderFactory(
+      int child_id,
+      mojo::PendingReceiver<network::mojom::URLLoaderFactory> factory_receiver)
+      : content::NonNetworkURLLoaderFactoryBase(std::move(factory_receiver)),
+        child_id_(child_id) {}
+  ~FileURLLoaderFactory() override = default;
+
   // network::mojom::URLLoaderFactory:
   void CreateLoaderAndStart(
       mojo::PendingReceiver<network::mojom::URLLoader> loader,
@@ -1330,13 +1370,8 @@ class FileURLLoaderFactory : public network::mojom::URLLoaderFactory {
         /* allow_directory_listing */ true);
   }
 
-  void Clone(
-      mojo::PendingReceiver<network::mojom::URLLoaderFactory> loader) override {
-    receivers_.Add(this, std::move(loader));
-  }
-
   int child_id_;
-  mojo::ReceiverSet<network::mojom::URLLoaderFactory> receivers_;
+
   DISALLOW_COPY_AND_ASSIGN(FileURLLoaderFactory);
 };
 
@@ -1346,6 +1381,7 @@ class FileURLLoaderFactory : public network::mojom::URLLoaderFactory {
 void ElectronBrowserClient::RegisterNonNetworkSubresourceURLLoaderFactories(
     int render_process_id,
     int render_frame_id,
+    NonNetworkURLLoaderFactoryDeprecatedMap* uniquely_owned_factories,
     NonNetworkURLLoaderFactoryMap* factories) {
   content::RenderFrameHost* frame_host =
       content::RenderFrameHost::FromID(render_process_id, render_frame_id);
@@ -1361,7 +1397,8 @@ void ElectronBrowserClient::RegisterNonNetworkSubresourceURLLoaderFactories(
   auto factory = extensions::CreateExtensionURLLoaderFactory(render_process_id,
                                                              render_frame_id);
   if (factory)
-    factories->emplace(extensions::kExtensionScheme, std::move(factory));
+    uniquely_owned_factories->emplace(extensions::kExtensionScheme,
+                                      std::move(factory));
 
   if (!web_contents)
     return;
@@ -1385,10 +1422,10 @@ void ElectronBrowserClient::RegisterNonNetworkSubresourceURLLoaderFactories(
       extensions::Manifest::IsComponentLocation(extension->location())) {
     // Components of chrome that are implemented as extensions or platform apps
     // are allowed to use chrome://resources/ and chrome://theme/ URLs.
-    factories->emplace(
-        content::kChromeUIScheme,
-        content::CreateWebUIURLLoader(frame_host, content::kChromeUIScheme,
-                                      {content::kChromeUIResourcesHost}));
+    factories->emplace(content::kChromeUIScheme,
+                       content::CreateWebUIURLLoaderFactory(
+                           frame_host, content::kChromeUIScheme,
+                           {content::kChromeUIResourcesHost}));
   }
 
   // Extension with a background page get file access that gets approval from
@@ -1397,8 +1434,8 @@ void ElectronBrowserClient::RegisterNonNetworkSubresourceURLLoaderFactories(
       extensions::ProcessManager::Get(web_contents->GetBrowserContext())
           ->GetBackgroundHostForExtension(extension->id());
   if (host) {
-    factories->emplace(url::kFileScheme, std::make_unique<FileURLLoaderFactory>(
-                                             render_process_id));
+    factories->emplace(url::kFileScheme,
+                       FileURLLoaderFactory::Create(render_process_id));
   }
 #endif
 }
@@ -1461,6 +1498,7 @@ bool ElectronBrowserClient::WillCreateURLLoaderFactory(
     URLLoaderFactoryType type,
     const url::Origin& request_initiator,
     base::Optional<int64_t> navigation_id,
+    base::UkmSourceId ukm_source_id,
     mojo::PendingReceiver<network::mojom::URLLoaderFactory>* factory_receiver,
     mojo::PendingRemote<network::mojom::TrustedURLLoaderHeaderClient>*
         header_client,
@@ -1496,10 +1534,10 @@ bool ElectronBrowserClient::WillCreateURLLoaderFactory(
       ProtocolRegistry::FromBrowserContext(browser_context);
   new ProxyingURLLoaderFactory(
       web_request.get(), protocol_registry->intercept_handlers(),
-      browser_context, render_process_id, &next_id_,
-      std::move(navigation_ui_data), std::move(navigation_id),
-      std::move(proxied_receiver), std::move(target_factory_remote),
-      std::move(header_client_receiver), type);
+      render_process_id, &next_id_, std::move(navigation_ui_data),
+      std::move(navigation_id), std::move(proxied_receiver),
+      std::move(target_factory_remote), std::move(header_client_receiver),
+      type);
 
   if (bypass_redirect_checks)
     *bypass_redirect_checks = true;
@@ -1659,7 +1697,7 @@ void ElectronBrowserClient::GetAdditionalMappedFilesForChildProcess(
     content::PosixFileDescriptorInfo* mappings) {
   int crash_signal_fd = GetCrashSignalFD(command_line);
   if (crash_signal_fd >= 0) {
-    mappings->Share(service_manager::kCrashDumpSignal, crash_signal_fd);
+    mappings->Share(kCrashDumpSignal, crash_signal_fd);
   }
 }
 #endif

+ 4 - 1
shell/browser/electron_browser_client.h

@@ -90,7 +90,7 @@ class ElectronBrowserClient : public content::ContentBrowserClient,
   content::TtsPlatform* GetTtsPlatform() override;
 
   void OverrideWebkitPrefs(content::RenderViewHost* render_view_host,
-                           content::WebPreferences* prefs) override;
+                           blink::web_pref::WebPreferences* prefs) override;
   SiteInstanceForNavigationType ShouldOverrideSiteInstanceForNavigation(
       content::RenderFrameHost* current_rfh,
       content::RenderFrameHost* speculative_rfh,
@@ -178,6 +178,7 @@ class ElectronBrowserClient : public content::ContentBrowserClient,
   void RegisterNonNetworkNavigationURLLoaderFactories(
       int frame_tree_node_id,
       base::UkmSourceId ukm_source_id,
+      NonNetworkURLLoaderFactoryDeprecatedMap* uniquely_owned_factories,
       NonNetworkURLLoaderFactoryMap* factories) override;
   void RegisterNonNetworkWorkerMainResourceURLLoaderFactories(
       content::BrowserContext* browser_context,
@@ -185,6 +186,7 @@ class ElectronBrowserClient : public content::ContentBrowserClient,
   void RegisterNonNetworkSubresourceURLLoaderFactories(
       int render_process_id,
       int render_frame_id,
+      NonNetworkURLLoaderFactoryDeprecatedMap* uniquely_owned_factories,
       NonNetworkURLLoaderFactoryMap* factories) override;
   void CreateWebSocket(
       content::RenderFrameHost* frame,
@@ -202,6 +204,7 @@ class ElectronBrowserClient : public content::ContentBrowserClient,
       URLLoaderFactoryType type,
       const url::Origin& request_initiator,
       base::Optional<int64_t> navigation_id,
+      base::UkmSourceId ukm_source_id,
       mojo::PendingReceiver<network::mojom::URLLoaderFactory>* factory_receiver,
       mojo::PendingRemote<network::mojom::TrustedURLLoaderHeaderClient>*
           header_client,

+ 2 - 2
shell/browser/electron_browser_context.cc

@@ -336,8 +336,8 @@ ElectronBrowserContext::GetURLLoaderFactory() {
       ->WillCreateURLLoaderFactory(
           this, nullptr, -1,
           content::ContentBrowserClient::URLLoaderFactoryType::kNavigation,
-          url::Origin(), base::nullopt, &factory_receiver, &header_client,
-          nullptr, nullptr, nullptr);
+          url::Origin(), base::nullopt, base::kInvalidUkmSourceId,
+          &factory_receiver, &header_client, nullptr, nullptr, nullptr);
 
   network::mojom::URLLoaderFactoryParamsPtr params =
       network::mojom::URLLoaderFactoryParams::New();

+ 3 - 3
shell/browser/font_defaults.cc

@@ -12,7 +12,7 @@
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/common/pref_names.h"
 #include "chrome/grit/platform_locale_settings.h"
-#include "content/public/common/web_preferences.h"
+#include "third_party/blink/public/common/web_preferences/web_preferences.h"
 #include "ui/base/l10n/l10n_util.h"
 
 namespace {
@@ -148,7 +148,7 @@ base::string16 FetchFont(const char* script, const char* map_name) {
 }
 
 void FillFontFamilyMap(const char* map_name,
-                       content::ScriptFontFamilyMap* map) {
+                       blink::web_pref::ScriptFontFamilyMap* map) {
   for (size_t i = 0; i < prefs::kWebKitScriptsForFontFamilyMapsLength; ++i) {
     const char* script = prefs::kWebKitScriptsForFontFamilyMaps[i];
     base::string16 result = FetchFont(script, map_name);
@@ -162,7 +162,7 @@ void FillFontFamilyMap(const char* map_name,
 
 namespace electron {
 
-void SetFontDefaults(content::WebPreferences* prefs) {
+void SetFontDefaults(blink::web_pref::WebPreferences* prefs) {
   FillFontFamilyMap(prefs::kWebKitStandardFontFamilyMap,
                     &prefs->standard_font_family_map);
   FillFontFamilyMap(prefs::kWebKitFixedFontFamilyMap,

+ 5 - 3
shell/browser/font_defaults.h

@@ -5,13 +5,15 @@
 #ifndef SHELL_BROWSER_FONT_DEFAULTS_H_
 #define SHELL_BROWSER_FONT_DEFAULTS_H_
 
-namespace content {
+namespace blink {
+namespace web_pref {
 struct WebPreferences;
-}  // namespace content
+}  // namespace web_pref
+}  // namespace blink
 
 namespace electron {
 
-void SetFontDefaults(content::WebPreferences* prefs);
+void SetFontDefaults(blink::web_pref::WebPreferences* prefs);
 
 }  // namespace electron
 

+ 10 - 8
shell/browser/lib/bluetooth_chooser.cc

@@ -32,9 +32,9 @@ const int kMaxScanRetries = 5;
 void OnDeviceChosen(const content::BluetoothChooser::EventHandler& handler,
                     const std::string& device_id) {
   if (device_id.empty()) {
-    handler.Run(content::BluetoothChooser::Event::CANCELLED, device_id);
+    handler.Run(content::BluetoothChooserEvent::CANCELLED, device_id);
   } else {
-    handler.Run(content::BluetoothChooser::Event::SELECTED, device_id);
+    handler.Run(content::BluetoothChooserEvent::SELECTED, device_id);
   }
 }
 
@@ -50,7 +50,7 @@ void BluetoothChooser::SetAdapterPresence(AdapterPresence presence) {
   switch (presence) {
     case AdapterPresence::ABSENT:
     case AdapterPresence::POWERED_OFF:
-      event_handler_.Run(Event::CANCELLED, "");
+      event_handler_.Run(content::BluetoothChooserEvent::CANCELLED, "");
       break;
     case AdapterPresence::POWERED_ON:
       break;
@@ -60,12 +60,13 @@ void BluetoothChooser::SetAdapterPresence(AdapterPresence presence) {
 void BluetoothChooser::ShowDiscoveryState(DiscoveryState state) {
   switch (state) {
     case DiscoveryState::FAILED_TO_START:
-      event_handler_.Run(Event::CANCELLED, "");
+      event_handler_.Run(content::BluetoothChooserEvent::CANCELLED, "");
       break;
     case DiscoveryState::IDLE:
       if (device_map_.empty()) {
-        auto event =
-            ++num_retries_ > kMaxScanRetries ? Event::CANCELLED : Event::RESCAN;
+        auto event = ++num_retries_ > kMaxScanRetries
+                         ? content::BluetoothChooserEvent::CANCELLED
+                         : content::BluetoothChooserEvent::RESCAN;
         event_handler_.Run(event, "");
       } else {
         bool prevent_default = api_web_contents_->Emit(
@@ -74,7 +75,8 @@ void BluetoothChooser::ShowDiscoveryState(DiscoveryState state) {
         if (!prevent_default) {
           auto it = device_map_.begin();
           auto device_id = it->first;
-          event_handler_.Run(Event::SELECTED, device_id);
+          event_handler_.Run(content::BluetoothChooserEvent::SELECTED,
+                             device_id);
         }
       }
       break;
@@ -109,7 +111,7 @@ void BluetoothChooser::AddOrUpdateDevice(const std::string& device_id,
     // If emit not implimented select first device that matches the filters
     //  provided.
     if (!prevent_default) {
-      event_handler_.Run(Event::SELECTED, device_id);
+      event_handler_.Run(content::BluetoothChooserEvent::SELECTED, device_id);
     }
   }
 }

+ 5 - 6
shell/browser/native_window_views.cc

@@ -1095,12 +1095,11 @@ void NativeWindowViews::SetParentWindow(NativeWindow* parent) {
   NativeWindow::SetParentWindow(parent);
 
 #if defined(USE_X11)
-  XDisplay* xdisplay = gfx::GetXDisplay();
-  XSetTransientForHint(
-      xdisplay, static_cast<uint32_t>(GetAcceleratedWidget()),
-      static_cast<uint32_t>(
-          parent ? static_cast<x11::Window>(parent->GetAcceleratedWidget())
-                 : ui::GetX11RootWindow()));
+  ui::SetProperty(static_cast<x11::Window>(GetAcceleratedWidget()),
+                  x11::Atom::WM_TRANSIENT_FOR, x11::Atom::WINDOW,
+                  parent
+                      ? static_cast<x11::Window>(parent->GetAcceleratedWidget())
+                      : ui::GetX11RootWindow());
 #elif defined(OS_WIN)
   // To set parentship between windows into Windows is better to play with the
   //  owner instead of the parent, as Windows natively seems to do if a parent

+ 4 - 3
shell/browser/net/asar/asar_url_loader.cc

@@ -216,9 +216,10 @@ class AsarURLLoader : public network::mojom::URLLoader {
 
     if (!net::GetMimeTypeFromFile(path, &head->mime_type)) {
       std::string new_type;
-      net::SniffMimeType(initial_read_buffer.data(), read_result.bytes_read,
-                         request.url, head->mime_type,
-                         net::ForceSniffFileUrlsForHtml::kDisabled, &new_type);
+      net::SniffMimeType(
+          base::StringPiece(initial_read_buffer.data(), read_result.bytes_read),
+          request.url, head->mime_type,
+          net::ForceSniffFileUrlsForHtml::kDisabled, &new_type);
       head->mime_type.assign(new_type);
       head->did_mime_sniff = true;
     }

+ 19 - 7
shell/browser/net/electron_url_loader_factory.cc

@@ -161,10 +161,27 @@ void OnWrite(std::unique_ptr<WriteData> write_data, MojoResult result) {
 
 }  // namespace
 
+// static
+mojo::PendingRemote<network::mojom::URLLoaderFactory>
+ElectronURLLoaderFactory::Create(ProtocolType type,
+                                 const ProtocolHandler& handler) {
+  mojo::PendingRemote<network::mojom::URLLoaderFactory> pending_remote;
+
+  // The ElectronURLLoaderFactory will delete itself when there are no more
+  // receivers - see the NonNetworkURLLoaderFactoryBase::OnDisconnect method.
+  new ElectronURLLoaderFactory(type, handler,
+                               pending_remote.InitWithNewPipeAndPassReceiver());
+
+  return pending_remote;
+}
+
 ElectronURLLoaderFactory::ElectronURLLoaderFactory(
     ProtocolType type,
-    const ProtocolHandler& handler)
-    : type_(type), handler_(handler) {}
+    const ProtocolHandler& handler,
+    mojo::PendingReceiver<network::mojom::URLLoaderFactory> factory_receiver)
+    : content::NonNetworkURLLoaderFactoryBase(std::move(factory_receiver)),
+      type_(type),
+      handler_(handler) {}
 
 ElectronURLLoaderFactory::~ElectronURLLoaderFactory() = default;
 
@@ -184,11 +201,6 @@ void ElectronURLLoaderFactory::CreateLoaderAndStart(
                      std::move(client), traffic_annotation, nullptr, type_));
 }
 
-void ElectronURLLoaderFactory::Clone(
-    mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver) {
-  receivers_.Add(this, std::move(receiver));
-}
-
 // static
 void ElectronURLLoaderFactory::StartLoading(
     mojo::PendingReceiver<network::mojom::URLLoader> loader,

+ 12 - 10
shell/browser/net/electron_url_loader_factory.h

@@ -9,6 +9,7 @@
 #include <string>
 #include <utility>
 
+#include "content/public/browser/non_network_url_loader_factory_base.h"  // nogncheck
 #include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "mojo/public/cpp/bindings/pending_remote.h"
 #include "mojo/public/cpp/bindings/receiver_set.h"
@@ -39,10 +40,12 @@ using HandlersMap =
     std::map<std::string, std::pair<ProtocolType, ProtocolHandler>>;
 
 // Implementation of URLLoaderFactory.
-class ElectronURLLoaderFactory : public network::mojom::URLLoaderFactory {
+class ElectronURLLoaderFactory
+    : public content::NonNetworkURLLoaderFactoryBase {
  public:
-  ElectronURLLoaderFactory(ProtocolType type, const ProtocolHandler& handler);
-  ~ElectronURLLoaderFactory() override;
+  static mojo::PendingRemote<network::mojom::URLLoaderFactory> Create(
+      ProtocolType type,
+      const ProtocolHandler& handler);
 
   // network::mojom::URLLoaderFactory:
   void CreateLoaderAndStart(
@@ -54,8 +57,6 @@ class ElectronURLLoaderFactory : public network::mojom::URLLoaderFactory {
       mojo::PendingRemote<network::mojom::URLLoaderClient> client,
       const net::MutableNetworkTrafficAnnotationTag& traffic_annotation)
       override;
-  void Clone(mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver)
-      override;
 
   static void StartLoading(
       mojo::PendingReceiver<network::mojom::URLLoader> loader,
@@ -70,6 +71,12 @@ class ElectronURLLoaderFactory : public network::mojom::URLLoaderFactory {
       gin::Arguments* args);
 
  private:
+  ElectronURLLoaderFactory(
+      ProtocolType type,
+      const ProtocolHandler& handler,
+      mojo::PendingReceiver<network::mojom::URLLoaderFactory> factory_receiver);
+  ~ElectronURLLoaderFactory() override;
+
   static void StartLoadingBuffer(
       mojo::PendingRemote<network::mojom::URLLoaderClient> client,
       network::mojom::URLResponseHeadPtr head,
@@ -106,11 +113,6 @@ class ElectronURLLoaderFactory : public network::mojom::URLLoaderFactory {
       network::mojom::URLResponseHeadPtr head,
       std::string data);
 
-  // TODO(zcbenz): This comes from extensions/browser/extension_protocols.cc
-  // but I don't know what it actually does, find out the meanings of |Clone|
-  // and |bindings_| and add comments for them.
-  mojo::ReceiverSet<network::mojom::URLLoaderFactory> receivers_;
-
   ProtocolType type_;
   ProtocolHandler handler_;
 

+ 15 - 33
shell/browser/net/proxying_url_loader_factory.cc

@@ -109,7 +109,8 @@ void ProxyingURLLoaderFactory::InProgressRequest::UpdateRequestInfo() {
                                     : nullptr,
       routing_id_, request_for_info, false,
       !(options_ & network::mojom::kURLLoadOptionSynchronous),
-      factory_->IsForServiceWorkerScript(), factory_->navigation_id_));
+      factory_->IsForServiceWorkerScript(), factory_->navigation_id_,
+      base::kInvalidUkmSourceId));
 
   current_request_uses_header_client_ =
       factory_->url_loader_header_client_receiver_.is_bound() &&
@@ -668,36 +669,19 @@ void ProxyingURLLoaderFactory::InProgressRequest::
       "Non-Authoritative-Reason: WebRequest API\n\n",
       kInternalRedirectStatusCode, redirect_url_.spec().c_str());
 
-  if (factory_->browser_context_->ShouldEnableOutOfBlinkCors()) {
-    // Cross-origin requests need to modify the Origin header to 'null'. Since
-    // CorsURLLoader sets |request_initiator| to the Origin request header in
-    // NetworkService, we need to modify |request_initiator| here to craft the
-    // Origin header indirectly.
-    // Following checks implement the step 10 of "4.4. HTTP-redirect fetch",
-    // https://fetch.spec.whatwg.org/#http-redirect-fetch
-    if (request_.request_initiator &&
-        (!url::Origin::Create(redirect_url_)
-              .IsSameOriginWith(url::Origin::Create(request_.url)) &&
-         !request_.request_initiator->IsSameOriginWith(
-             url::Origin::Create(request_.url)))) {
-      // Reset the initiator to pretend tainted origin flag of the spec is set.
-      request_.request_initiator = url::Origin();
-    }
-  } else {
-    // If this redirect is used in a cross-origin request, add CORS headers to
-    // make sure that the redirect gets through the Blink CORS. Note that the
-    // destination URL is still subject to the usual CORS policy, i.e. the
-    // resource will only be available to web pages if the server serves the
-    // response with the required CORS response headers. Matches the behavior in
-    // url_request_redirect_job.cc.
-    std::string http_origin;
-    if (request_.headers.GetHeader("Origin", &http_origin)) {
-      headers += base::StringPrintf(
-          "\n"
-          "Access-Control-Allow-Origin: %s\n"
-          "Access-Control-Allow-Credentials: true",
-          http_origin.c_str());
-    }
+  // Cross-origin requests need to modify the Origin header to 'null'. Since
+  // CorsURLLoader sets |request_initiator| to the Origin request header in
+  // NetworkService, we need to modify |request_initiator| here to craft the
+  // Origin header indirectly.
+  // Following checks implement the step 10 of "4.4. HTTP-redirect fetch",
+  // https://fetch.spec.whatwg.org/#http-redirect-fetch
+  if (request_.request_initiator &&
+      (!url::Origin::Create(redirect_url_)
+            .IsSameOriginWith(url::Origin::Create(request_.url)) &&
+       !request_.request_initiator->IsSameOriginWith(
+           url::Origin::Create(request_.url)))) {
+    // Reset the initiator to pretend tainted origin flag of the spec is set.
+    request_.request_initiator = url::Origin();
   }
   head->headers = base::MakeRefCounted<net::HttpResponseHeaders>(
       net::HttpUtil::AssembleRawHeaders(headers));
@@ -755,7 +739,6 @@ void ProxyingURLLoaderFactory::InProgressRequest::OnRequestError(
 ProxyingURLLoaderFactory::ProxyingURLLoaderFactory(
     WebRequestAPI* web_request_api,
     const HandlersMap& intercepted_handlers,
-    content::BrowserContext* browser_context,
     int render_process_id,
     uint64_t* request_id_generator,
     std::unique_ptr<extensions::ExtensionNavigationUIData> navigation_ui_data,
@@ -767,7 +750,6 @@ ProxyingURLLoaderFactory::ProxyingURLLoaderFactory(
     content::ContentBrowserClient::URLLoaderFactoryType loader_factory_type)
     : web_request_api_(web_request_api),
       intercepted_handlers_(intercepted_handlers),
-      browser_context_(browser_context),
       render_process_id_(render_process_id),
       request_id_generator_(request_id_generator),
       navigation_ui_data_(std::move(navigation_ui_data)),

+ 0 - 2
shell/browser/net/proxying_url_loader_factory.h

@@ -175,7 +175,6 @@ class ProxyingURLLoaderFactory
   ProxyingURLLoaderFactory(
       WebRequestAPI* web_request_api,
       const HandlersMap& intercepted_handlers,
-      content::BrowserContext* browser_context,
       int render_process_id,
       uint64_t* request_id_generator,
       std::unique_ptr<extensions::ExtensionNavigationUIData> navigation_ui_data,
@@ -235,7 +234,6 @@ class ProxyingURLLoaderFactory
   // In this way we can avoid using code from api namespace in this file.
   const HandlersMap& intercepted_handlers_;
 
-  content::BrowserContext* const browser_context_;
   const int render_process_id_;
   uint64_t* request_id_generator_;  // managed by ElectronBrowserClient
   std::unique_ptr<extensions::ExtensionNavigationUIData> navigation_ui_data_;

+ 2 - 1
shell/browser/net/proxying_websocket.cc

@@ -45,7 +45,8 @@ ProxyingWebSocket::ProxyingWebSocket(
           /*is_download=*/false,
           /*is_async=*/true,
           /*is_service_worker_script=*/false,
-          /*navigation_id=*/base::nullopt)) {}
+          /*navigation_id=*/base::nullopt,
+          base::kInvalidUkmSourceId)) {}
 
 ProxyingWebSocket::~ProxyingWebSocket() {
   if (on_before_send_headers_callback_) {

+ 7 - 5
shell/browser/osr/osr_render_widget_host_view.cc

@@ -20,7 +20,7 @@
 #include "components/viz/common/frame_sinks/begin_frame_args.h"
 #include "components/viz/common/frame_sinks/copy_output_request.h"
 #include "components/viz/common/frame_sinks/delay_based_time_source.h"
-#include "components/viz/common/quads/render_pass.h"
+#include "components/viz/common/quads/compositor_render_pass.h"
 #include "content/browser/renderer_host/cursor_manager.h"  // nogncheck
 #include "content/browser/renderer_host/input/synthetic_gesture_target.h"  // nogncheck
 #include "content/browser/renderer_host/render_widget_host_delegate.h"  // nogncheck
@@ -697,16 +697,18 @@ void OffScreenRenderWidgetHostView::CompositeFrame(
 
       if (popup_host_view_ && !popup_host_view_->GetBacking().drawsNothing()) {
         gfx::Rect rect = popup_host_view_->popup_position_;
-        gfx::Point origin_in_pixels = gfx::ConvertPointToPixel(
-            current_device_scale_factor_, rect.origin());
+        gfx::Point origin_in_pixels =
+            gfx::ToFlooredPoint(gfx::ConvertPointToPixels(
+                rect.origin(), current_device_scale_factor_));
         canvas.writePixels(popup_host_view_->GetBacking(), origin_in_pixels.x(),
                            origin_in_pixels.y());
       }
 
       for (auto* proxy_view : proxy_views_) {
         gfx::Rect rect = proxy_view->GetBounds();
-        gfx::Point origin_in_pixels = gfx::ConvertPointToPixel(
-            current_device_scale_factor_, rect.origin());
+        gfx::Point origin_in_pixels =
+            gfx::ToFlooredPoint(gfx::ConvertPointToPixels(
+                rect.origin(), current_device_scale_factor_));
         canvas.writePixels(*proxy_view->GetBitmap(), origin_in_pixels.x(),
                            origin_in_pixels.y());
       }

+ 1 - 1
shell/browser/osr/osr_web_contents_view.cc

@@ -165,7 +165,7 @@ void OffScreenWebContentsView::StartDragging(
     blink::WebDragOperationsMask allowed_ops,
     const gfx::ImageSkia& image,
     const gfx::Vector2d& image_offset,
-    const content::DragEventSourceInfo& event_info,
+    const blink::mojom::DragEventSourceInfo& event_info,
     content::RenderWidgetHostImpl* source_rwh) {
   if (web_contents_)
     static_cast<content::WebContentsImpl*>(web_contents_)

+ 1 - 1
shell/browser/osr/osr_web_contents_view.h

@@ -71,7 +71,7 @@ class OffScreenWebContentsView : public content::WebContentsView,
                      blink::WebDragOperationsMask allowed_ops,
                      const gfx::ImageSkia& image,
                      const gfx::Vector2d& image_offset,
-                     const content::DragEventSourceInfo& event_info,
+                     const blink::mojom::DragEventSourceInfo& event_info,
                      content::RenderWidgetHostImpl* source_rwh) override;
   void UpdateDragCursor(blink::WebDragOperation operation) override;
 

+ 6 - 6
shell/browser/printing/print_preview_message_handler.cc

@@ -78,7 +78,7 @@ bool PrintPreviewMessageHandler::OnMessageReceived(
 void PrintPreviewMessageHandler::OnMetafileReadyForPrinting(
     content::RenderFrameHost* render_frame_host,
     const printing::mojom::DidPreviewDocumentParams& params,
-    const PrintHostMsg_PreviewIds& ids) {
+    const printing::mojom::PreviewIds& ids) {
   // Always try to stop the worker.
   StopWorker(params.document_cookie);
 
@@ -113,7 +113,7 @@ void PrintPreviewMessageHandler::OnMetafileReadyForPrinting(
 }
 
 void PrintPreviewMessageHandler::OnPrepareForDocumentToPdfDone(
-    const PrintHostMsg_PreviewIds& ids,
+    const printing::mojom::PreviewIds& ids,
     printing::mojom::PrintCompositor::Status status) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   if (status != printing::mojom::PrintCompositor::Status::kSuccess) {
@@ -124,7 +124,7 @@ void PrintPreviewMessageHandler::OnPrepareForDocumentToPdfDone(
 void PrintPreviewMessageHandler::OnDidPrepareForDocumentToPdf(
     content::RenderFrameHost* render_frame_host,
     int document_cookie,
-    const PrintHostMsg_PreviewIds& ids) {
+    const printing::mojom::PreviewIds& ids) {
   if (printing::IsOopifEnabled()) {
     auto* client =
         printing::PrintCompositeClient::FromWebContents(web_contents());
@@ -144,7 +144,7 @@ void PrintPreviewMessageHandler::OnDidPrepareForDocumentToPdf(
 }
 
 void PrintPreviewMessageHandler::OnCompositeDocumentToPdfDone(
-    const PrintHostMsg_PreviewIds& ids,
+    const printing::mojom::PreviewIds& ids,
     printing::mojom::PrintCompositor::Status status,
     base::ReadOnlySharedMemoryRegion region) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
@@ -163,7 +163,7 @@ void PrintPreviewMessageHandler::OnCompositeDocumentToPdfDone(
 void PrintPreviewMessageHandler::OnCompositePdfPageDone(
     int page_number,
     int document_cookie,
-    const PrintHostMsg_PreviewIds& ids,
+    const printing::mojom::PreviewIds& ids,
     printing::mojom::PrintCompositor::Status status,
     base::ReadOnlySharedMemoryRegion region) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
@@ -176,7 +176,7 @@ void PrintPreviewMessageHandler::OnCompositePdfPageDone(
 void PrintPreviewMessageHandler::OnDidPreviewPage(
     content::RenderFrameHost* render_frame_host,
     const printing::mojom::DidPreviewPageParams& params,
-    const PrintHostMsg_PreviewIds& ids) {
+    const printing::mojom::PreviewIds& ids) {
   int page_number = params.page_number;
   const printing::mojom::DidPrintContentParams& content = *params.content;
 

+ 6 - 7
shell/browser/printing/print_preview_message_handler.h

@@ -20,7 +20,6 @@
 
 struct PrintHostMsg_DidPreviewDocument_Params;
 struct PrintHostMsg_DidPreviewPage_Params;
-struct PrintHostMsg_PreviewIds;
 
 namespace content {
 class RenderFrameHost;
@@ -52,25 +51,25 @@ class PrintPreviewMessageHandler
   void OnMetafileReadyForPrinting(
       content::RenderFrameHost* render_frame_host,
       const printing::mojom::DidPreviewDocumentParams& params,
-      const PrintHostMsg_PreviewIds& ids);
+      const printing::mojom::PreviewIds& ids);
   void OnCompositeDocumentToPdfDone(
-      const PrintHostMsg_PreviewIds& ids,
+      const printing::mojom::PreviewIds& ids,
       printing::mojom::PrintCompositor::Status status,
       base::ReadOnlySharedMemoryRegion region);
   void OnPrepareForDocumentToPdfDone(
-      const PrintHostMsg_PreviewIds& ids,
+      const printing::mojom::PreviewIds& ids,
       printing::mojom::PrintCompositor::Status status);
   void OnDidPrepareForDocumentToPdf(content::RenderFrameHost* render_frame_host,
                                     int document_cookie,
-                                    const PrintHostMsg_PreviewIds& ids);
+                                    const printing::mojom::PreviewIds& ids);
   void OnCompositePdfPageDone(int page_number,
                               int document_cookie,
-                              const PrintHostMsg_PreviewIds& ids,
+                              const printing::mojom::PreviewIds& ids,
                               printing::mojom::PrintCompositor::Status status,
                               base::ReadOnlySharedMemoryRegion region);
   void OnDidPreviewPage(content::RenderFrameHost* render_frame_host,
                         const printing::mojom::DidPreviewPageParams& params,
-                        const PrintHostMsg_PreviewIds& ids);
+                        const printing::mojom::PreviewIds& ids);
 
   // printing::mojo::PrintPreviewUI:
   void SetOptionsFromDocument(

+ 19 - 13
shell/browser/protocol_registry.cc

@@ -5,6 +5,7 @@
 #include <memory>
 #include <utility>
 
+#include "content/public/browser/non_network_url_loader_factory_base.h"  // nogncheck
 #include "shell/browser/electron_browser_context.h"
 #include "shell/browser/net/asar/asar_url_loader.h"
 #include "shell/browser/protocol_registry.h"
@@ -14,11 +15,24 @@ namespace electron {
 namespace {
 
 // Provide support for accessing asar archives in file:// protocol.
-class AsarURLLoaderFactory : public network::mojom::URLLoaderFactory {
+class AsarURLLoaderFactory : public content::NonNetworkURLLoaderFactoryBase {
  public:
-  AsarURLLoaderFactory() {}
+  static mojo::PendingRemote<network::mojom::URLLoaderFactory> Create() {
+    mojo::PendingRemote<network::mojom::URLLoaderFactory> pending_remote;
+
+    // The AsarURLLoaderFactory will delete itself when there are no more
+    // receivers - see the NonNetworkURLLoaderFactoryBase::OnDisconnect method.
+    new AsarURLLoaderFactory(pending_remote.InitWithNewPipeAndPassReceiver());
+
+    return pending_remote;
+  }
 
  private:
+  AsarURLLoaderFactory(
+      mojo::PendingReceiver<network::mojom::URLLoaderFactory> factory_receiver)
+      : content::NonNetworkURLLoaderFactoryBase(std::move(factory_receiver)) {}
+  ~AsarURLLoaderFactory() override = default;
+
   // network::mojom::URLLoaderFactory:
   void CreateLoaderAndStart(
       mojo::PendingReceiver<network::mojom::URLLoader> loader,
@@ -32,13 +46,6 @@ class AsarURLLoaderFactory : public network::mojom::URLLoaderFactory {
     asar::CreateAsarURLLoader(request, std::move(loader), std::move(client),
                               new net::HttpResponseHeaders(""));
   }
-
-  void Clone(
-      mojo::PendingReceiver<network::mojom::URLLoaderFactory> loader) override {
-    receivers_.Add(this, std::move(loader));
-  }
-
-  mojo::ReceiverSet<network::mojom::URLLoaderFactory> receivers_;
 };
 
 }  // namespace
@@ -63,18 +70,17 @@ void ProtocolRegistry::RegisterURLLoaderFactories(
     // Note that Chromium calls |emplace| to create the default file factory
     // after this call, so it won't override our asar factory.
     DCHECK(!base::Contains(*factories, url::kFileScheme));
-    factories->emplace(url::kFileScheme,
-                       std::make_unique<AsarURLLoaderFactory>());
+    factories->emplace(url::kFileScheme, AsarURLLoaderFactory::Create());
   } else if (type == URLLoaderFactoryType::kDocumentSubResource) {
     // Only support requesting file:// subresource URLs when Chromium does so,
     // it is usually supported under file:// or about:blank documents.
     auto file_factory = factories->find(url::kFileScheme);
     if (file_factory != factories->end())
-      file_factory->second = std::make_unique<AsarURLLoaderFactory>();
+      file_factory->second = AsarURLLoaderFactory::Create();
   }
 
   for (const auto& it : handlers_) {
-    factories->emplace(it.first, std::make_unique<ElectronURLLoaderFactory>(
+    factories->emplace(it.first, ElectronURLLoaderFactory::Create(
                                      it.second.first, it.second.second));
   }
 }

+ 0 - 1
shell/browser/ui/gtk/menu_util.cc

@@ -5,7 +5,6 @@
 #include "shell/browser/ui/gtk/menu_util.h"
 
 #include <gdk/gdk.h>
-#include <gdk/gdkx.h>
 #include <gtk/gtk.h>
 
 #include <map>

+ 8 - 3
shell/browser/ui/inspectable_web_contents.cc

@@ -40,6 +40,7 @@
 #include "net/http/http_response_headers.h"
 #include "services/network/public/cpp/simple_url_loader.h"
 #include "services/network/public/cpp/simple_url_loader_stream_consumer.h"
+#include "services/network/public/cpp/wrapper_shared_url_loader_factory.h"
 #include "shell/browser/ui/inspectable_web_contents_delegate.h"
 #include "shell/browser/ui/inspectable_web_contents_view.h"
 #include "shell/browser/ui/inspectable_web_contents_view_delegate.h"
@@ -682,9 +683,13 @@ void InspectableWebContents::LoadNetworkResource(
 
   NetworkResourceLoader::URLLoaderFactoryHolder url_loader_factory;
   if (gurl.SchemeIsFile()) {
-    url_loader_factory = content::CreateFileURLLoaderFactory(
-        base::FilePath() /* profile_path */,
-        nullptr /* shared_cors_origin_access_list */);
+    mojo::PendingRemote<network::mojom::URLLoaderFactory> pending_remote =
+        content::CreateFileURLLoaderFactory(
+            base::FilePath() /* profile_path */,
+            nullptr /* shared_cors_origin_access_list */);
+    url_loader_factory = network::SharedURLLoaderFactory::Create(
+        std::make_unique<network::WrapperPendingSharedURLLoaderFactory>(
+            std::move(pending_remote)));
   } else {
     auto* partition = content::BrowserContext::GetDefaultStoragePartition(
         GetDevToolsWebContents()->GetBrowserContext());

+ 1 - 0
shell/browser/ui/inspectable_web_contents.h

@@ -151,6 +151,7 @@ class InspectableWebContents
   void RecordPerformanceHistogram(const std::string& name,
                                   double duration) override {}
   void RecordUserMetricsAction(const std::string& name) override {}
+  void GetSurveyAPIKey(const DispatchCallback& callback) override {}
 
   // content::DevToolsFrontendHostDelegate:
   void HandleMessageFromDevToolsFrontend(const std::string& message);

+ 2 - 2
shell/browser/ui/views/submenu_button.cc

@@ -38,7 +38,7 @@ SubmenuButton::SubmenuButton(views::ButtonListener* button_listener,
                                &text_height_, 0, 0);
 
   SetInkDropMode(InkDropMode::ON);
-  set_ink_drop_base_color(
+  SetInkDropBaseColor(
       color_utils::BlendTowardMaxContrast(background_color_, 0x81));
 }
 
@@ -49,7 +49,7 @@ std::unique_ptr<views::InkDropRipple> SubmenuButton::CreateInkDropRipple()
   std::unique_ptr<views::InkDropRipple> ripple(
       new views::FloodFillInkDropRipple(
           size(), GetInkDropCenterBasedOnLastEvent(), GetInkDropBaseColor(),
-          ink_drop_visible_opacity()));
+          GetInkDropVisibleOpacity()));
   return ripple;
 }
 

+ 7 - 36
shell/browser/ui/x/x_window_utils.cc

@@ -4,7 +4,6 @@
 
 #include "shell/browser/ui/x/x_window_utils.h"
 
-#include <X11/Xatom.h>
 #include <memory>
 
 #include "base/environment.h"
@@ -19,22 +18,9 @@
 namespace electron {
 
 void SetWMSpecState(x11::Window window, bool enabled, x11::Atom state) {
-  XEvent xclient;
-  memset(&xclient, 0, sizeof(xclient));
-  xclient.type = ClientMessage;
-  xclient.xclient.window = static_cast<uint32_t>(window);
-  xclient.xclient.message_type =
-      static_cast<uint32_t>(gfx::GetAtom("_NET_WM_STATE"));
-  xclient.xclient.format = 32;
-  xclient.xclient.data.l[0] = enabled ? 1 : 0;
-  xclient.xclient.data.l[1] = static_cast<uint32_t>(state);
-  xclient.xclient.data.l[2] = x11::None;
-  xclient.xclient.data.l[3] = 1;
-  xclient.xclient.data.l[4] = 0;
-
-  XDisplay* xdisplay = gfx::GetXDisplay();
-  XSendEvent(xdisplay, DefaultRootWindow(xdisplay), x11::False,
-             SubstructureRedirectMask | SubstructureNotifyMask, &xclient);
+  ui::SendClientMessage(
+      window, ui::GetX11RootWindow(), gfx::GetAtom("_NET_WM_STATE"),
+      {enabled ? 1 : 0, static_cast<uint32_t>(state), 0, 1, 0});
 }
 
 void SetWindowType(x11::Window window, const std::string& type) {
@@ -87,25 +73,10 @@ void MoveWindowToForeground(x11::Window window) {
 }
 
 void MoveWindowAbove(x11::Window window, x11::Window other_window) {
-  XDisplay* xdisplay = gfx::GetXDisplay();
-  XEvent xclient;
-  memset(&xclient, 0, sizeof(xclient));
-
-  xclient.type = ClientMessage;
-  xclient.xclient.display = xdisplay;
-  xclient.xclient.window = static_cast<uint32_t>(window);
-  xclient.xclient.message_type =
-      static_cast<uint32_t>(gfx::GetAtom("_NET_RESTACK_WINDOW"));
-  xclient.xclient.format = 32;
-  xclient.xclient.data.l[0] = 2;
-  xclient.xclient.data.l[1] = static_cast<uint32_t>(other_window);
-  xclient.xclient.data.l[2] = static_cast<uint32_t>(x11::StackMode::Above);
-  xclient.xclient.data.l[3] = 0;
-  xclient.xclient.data.l[4] = 0;
-
-  XSendEvent(xdisplay, DefaultRootWindow(xdisplay), x11::False,
-             SubstructureRedirectMask | SubstructureNotifyMask, &xclient);
-  XFlush(xdisplay);
+  ui::SendClientMessage(window, ui::GetX11RootWindow(),
+                        gfx::GetAtom("_NET_RESTACK_WINDOW"),
+                        {2, static_cast<uint32_t>(other_window),
+                         static_cast<uint32_t>(x11::StackMode::Above), 0, 0});
 }
 
 bool IsWindowValid(x11::Window window) {

+ 14 - 13
shell/browser/web_contents_preferences.cc

@@ -17,7 +17,6 @@
 #include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/render_process_host.h"
 #include "content/public/common/content_switches.h"
-#include "content/public/common/web_preferences.h"
 #include "electron/buildflags/buildflags.h"
 #include "net/base/filename_util.h"
 #include "sandbox/policy/switches.h"
@@ -27,6 +26,7 @@
 #include "shell/common/gin_helper/dictionary.h"
 #include "shell/common/options_switches.h"
 #include "shell/common/process_util.h"
+#include "third_party/blink/public/common/web_preferences/web_preferences.h"
 #include "third_party/blink/public/mojom/v8_cache_options.mojom.h"
 
 #if defined(OS_WIN)
@@ -76,17 +76,17 @@ bool GetAsInteger(const base::Value* val, base::StringPiece path, int* out) {
 
 bool GetAsAutoplayPolicy(const base::Value* val,
                          base::StringPiece path,
-                         content::AutoplayPolicy* out) {
+                         blink::web_pref::AutoplayPolicy* out) {
   std::string policy_str;
   if (GetAsString(val, path, &policy_str)) {
     if (policy_str == "no-user-gesture-required") {
-      *out = content::AutoplayPolicy::kNoUserGestureRequired;
+      *out = blink::web_pref::AutoplayPolicy::kNoUserGestureRequired;
       return true;
     } else if (policy_str == "user-gesture-required") {
-      *out = content::AutoplayPolicy::kUserGestureRequired;
+      *out = blink::web_pref::AutoplayPolicy::kUserGestureRequired;
       return true;
     } else if (policy_str == "document-user-activation-required") {
-      *out = content::AutoplayPolicy::kDocumentUserActivationRequired;
+      *out = blink::web_pref::AutoplayPolicy::kDocumentUserActivationRequired;
       return true;
     }
     return false;
@@ -450,7 +450,7 @@ void WebContentsPreferences::AppendCommandLineSwitches(
 }
 
 void WebContentsPreferences::OverrideWebkitPrefs(
-    content::WebPreferences* prefs) {
+    blink::web_pref::WebPreferences* prefs) {
   prefs->javascript_enabled =
       IsEnabled(options::kJavaScript, true /* default_value */);
   prefs->images_enabled = IsEnabled(options::kImages, true /* default_value */);
@@ -460,7 +460,8 @@ void WebContentsPreferences::OverrideWebkitPrefs(
       IsEnabled(options::kNavigateOnDragDrop, false /* default_value */);
   if (!GetAsAutoplayPolicy(&preference_, "autoplayPolicy",
                            &prefs->autoplay_policy)) {
-    prefs->autoplay_policy = content::AutoplayPolicy::kNoUserGestureRequired;
+    prefs->autoplay_policy =
+        blink::web_pref::AutoplayPolicy::kNoUserGestureRequired;
   }
 
   // Check if webgl should be enabled.
@@ -481,17 +482,17 @@ void WebContentsPreferences::OverrideWebkitPrefs(
   if (fonts_dict) {
     base::string16 font;
     if (GetAsString(fonts_dict, "standard", &font))
-      prefs->standard_font_family_map[content::kCommonScript] = font;
+      prefs->standard_font_family_map[blink::web_pref::kCommonScript] = font;
     if (GetAsString(fonts_dict, "serif", &font))
-      prefs->serif_font_family_map[content::kCommonScript] = font;
+      prefs->serif_font_family_map[blink::web_pref::kCommonScript] = font;
     if (GetAsString(fonts_dict, "sansSerif", &font))
-      prefs->sans_serif_font_family_map[content::kCommonScript] = font;
+      prefs->sans_serif_font_family_map[blink::web_pref::kCommonScript] = font;
     if (GetAsString(fonts_dict, "monospace", &font))
-      prefs->fixed_font_family_map[content::kCommonScript] = font;
+      prefs->fixed_font_family_map[blink::web_pref::kCommonScript] = font;
     if (GetAsString(fonts_dict, "cursive", &font))
-      prefs->cursive_font_family_map[content::kCommonScript] = font;
+      prefs->cursive_font_family_map[blink::web_pref::kCommonScript] = font;
     if (GetAsString(fonts_dict, "fantasy", &font))
-      prefs->fantasy_font_family_map[content::kCommonScript] = font;
+      prefs->fantasy_font_family_map[blink::web_pref::kCommonScript] = font;
   }
 
   int size;

+ 1 - 1
shell/browser/web_contents_preferences.h

@@ -50,7 +50,7 @@ class WebContentsPreferences
                                  bool is_subframe);
 
   // Modify the WebPreferences according to preferences.
-  void OverrideWebkitPrefs(content::WebPreferences* prefs);
+  void OverrideWebkitPrefs(blink::web_pref::WebPreferences* prefs);
 
   // Clear the current WebPreferences.
   void Clear();

+ 3 - 24
shell/renderer/content_settings_observer.cc

@@ -21,8 +21,9 @@ ContentSettingsObserver::ContentSettingsObserver(
 
 ContentSettingsObserver::~ContentSettingsObserver() = default;
 
-bool ContentSettingsObserver::AllowDatabase() {
-  if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
+bool ContentSettingsObserver::AllowStorageAccessSync(StorageType storage_type) {
+  if (storage_type == StorageType::kDatabase &&
+      !base::CommandLine::ForCurrentProcess()->HasSwitch(
           switches::kEnableWebSQL)) {
     return false;
   }
@@ -37,28 +38,6 @@ bool ContentSettingsObserver::AllowDatabase() {
   return true;
 }
 
-bool ContentSettingsObserver::AllowStorage(bool local) {
-  blink::WebFrame* frame = render_frame()->GetWebFrame();
-  if (frame->GetSecurityOrigin().IsOpaque() ||
-      frame->Top()->GetSecurityOrigin().IsOpaque())
-    return false;
-  auto origin = blink::WebStringToGURL(frame->GetSecurityOrigin().ToString());
-  if (!origin.IsStandard())
-    return false;
-  return true;
-}
-
-bool ContentSettingsObserver::AllowIndexedDB() {
-  blink::WebFrame* frame = render_frame()->GetWebFrame();
-  if (frame->GetSecurityOrigin().IsOpaque() ||
-      frame->Top()->GetSecurityOrigin().IsOpaque())
-    return false;
-  auto origin = blink::WebStringToGURL(frame->GetSecurityOrigin().ToString());
-  if (!origin.IsStandard())
-    return false;
-  return true;
-}
-
 void ContentSettingsObserver::OnDestruct() {
   delete this;
 }

Some files were not shown because too many files changed in this diff