Browse Source

build: depend on chromium version not SHA (#20839)

Samuel Attard 5 years ago
parent
commit
032552df57
100 changed files with 1256 additions and 1062 deletions
  1. 14 2
      .circleci/config.yml
  2. 6 2
      BUILD.gn
  3. 1 1
      DEPS
  4. 1 1
      appveyor.yml
  5. 0 5
      build/args/all.gn
  6. 0 1
      build/args/native_tests.gn
  7. 45 4
      build/rules.gni
  8. 2 0
      chromium_src/BUILD.gn
  9. 2 4
      chromium_src/chrome/browser/certificate_manager_model.cc
  10. 0 1
      docs/tutorial/snapcraft.md
  11. 0 1
      docs/tutorial/windows-store-guide.md
  12. 92 92
      filenames.gni
  13. 2 0
      lib/browser/api/web-contents.js
  14. 1 1
      patches/boringssl/expose_ripemd160.patch
  15. 7 6
      patches/chromium/.patches
  16. 1 1
      patches/chromium/accelerator.patch
  17. 4 4
      patches/chromium/add_contentgpuclient_precreatemessageloop_callback.patch
  18. 18 18
      patches/chromium/add_realloc.patch
  19. 7 7
      patches/chromium/add_zoom_limit_setters_to_webcontents.patch
  20. 46 0
      patches/chromium/backport_fix_msstl_compat_in_ui_events.patch
  21. 3 3
      patches/chromium/blink_local_frame.patch
  22. 9 9
      patches/chromium/blink_world_context.patch
  23. 2 2
      patches/chromium/build_add_electron_tracing_category.patch
  24. 0 74
      patches/chromium/build_fix_when_building_with_enable_plugins_false.patch
  25. 6 11
      patches/chromium/build_win_disable_zc_twophase.patch
  26. 31 0
      patches/chromium/build_win_fix_msstl_compatibility_for_pdf.patch
  27. 22 22
      patches/chromium/can_create_window.patch
  28. 2 2
      patches/chromium/content_browser_main_loop.patch
  29. 5 5
      patches/chromium/dcheck.patch
  30. 62 7
      patches/chromium/desktop_media_list.patch
  31. 6 6
      patches/chromium/disable-redraw-lock.patch
  32. 51 43
      patches/chromium/disable_color_correct_rendering.patch
  33. 4 4
      patches/chromium/disable_hidden.patch
  34. 2 2
      patches/chromium/disable_user_gesture_requirement_for_beforeunload_dialogs.patch
  35. 2 2
      patches/chromium/exclude-a-few-test-files-from-build.patch
  36. 8 8
      patches/chromium/expose_setuseragent_on_networkcontext.patch
  37. 3 3
      patches/chromium/feat_add_set_theme_source_to_allow_apps_to.patch
  38. 29 0
      patches/chromium/fix_ambiguous_reference_to_data.patch
  39. 3 3
      patches/chromium/fix_disable_usage_of_setapplicationisdaemon_and.patch
  40. 81 101
      patches/chromium/frame_host_manager.patch
  41. 5 5
      patches/chromium/gin_enable_disable_v8_platform.patch
  42. 2 2
      patches/chromium/gritsettings_resource_ids.patch
  43. 15 16
      patches/chromium/ignore_rc_check.patch
  44. 1 1
      patches/chromium/isolate_holder.patch
  45. 13 70
      patches/chromium/libgtkui_export.patch
  46. 5 5
      patches/chromium/mas-cgdisplayusesforcetogray.patch
  47. 0 23
      patches/chromium/mas-lssetapplicationlaunchservicesserverconnectionstatus.patch
  48. 4 4
      patches/chromium/mas_blink_no_private_api.patch
  49. 36 20
      patches/chromium/mas_no_private_api.patch
  50. 46 27
      patches/chromium/network_service_allow_remote_certificate_verification_logic.patch
  51. 1 1
      patches/chromium/no_cache_storage_check.patch
  52. 6 6
      patches/chromium/notification_provenance.patch
  53. 2 2
      patches/chromium/out_of_process_instance.patch
  54. 9 9
      patches/chromium/pepper_flash.patch
  55. 84 84
      patches/chromium/printing.patch
  56. 7 6
      patches/chromium/proxy_config_monitor.patch
  57. 2 2
      patches/chromium/put_back_deleted_colors_for_autofill.patch
  58. 1 1
      patches/chromium/render_widget_host_view_mac.patch
  59. 3 3
      patches/chromium/resource_file_conflict.patch
  60. 188 0
      patches/chromium/revert_remove_contentrendererclient_shouldfork.patch
  61. 2 2
      patches/chromium/scroll_bounce_flag.patch
  62. 12 12
      patches/chromium/ssl_security_state_tab_helper.patch
  63. 5 5
      patches/chromium/support_mixed_sandbox_with_zygote.patch
  64. 0 29
      patches/chromium/ui_views_fix_jumbo_build.patch
  65. 2 2
      patches/chromium/unsandboxed_ppapi_processes_skip_zygote.patch
  66. 2 2
      patches/chromium/v8_context_snapshot_generator.patch
  67. 4 4
      patches/chromium/web_contents.patch
  68. 2 2
      patches/chromium/webview_cross_drag.patch
  69. 8 8
      patches/chromium/worker_context_will_destroy.patch
  70. 4 2
      patches/config.json
  71. 1 3
      patches/perfetto/.patches
  72. 58 0
      patches/perfetto/build_win_fix_compilation_error_with_msstl.patch
  73. 0 80
      patches/perfetto/metatrace_remove_memset_and_trivial_ctor_assumption.patch
  74. 0 1
      patches/quiche/.patches
  75. 0 25
      patches/quiche/include_ostream_in_quic_ip_address_h.patch
  76. 1 0
      patches/skia/.patches
  77. 39 0
      patches/skia/build_fix_compilation_on_macos_with_10_14_sdk.patch
  78. 0 1
      patches/v8/.patches
  79. 4 4
      patches/v8/add_realloc.patch
  80. 4 4
      patches/v8/build_gn.patch
  81. 4 4
      patches/v8/dcheck.patch
  82. 64 63
      patches/v8/deps_provide_more_v8_backwards_compatibility.patch
  83. 4 4
      patches/v8/do_not_export_private_v8_symbols_on_windows.patch
  84. 2 2
      patches/v8/export_symbols_needed_for_windows_build.patch
  85. 4 4
      patches/v8/expose_mksnapshot.patch
  86. 0 30
      patches/v8/ptr-compr_temporarily_disable_31_bit_smis_on_64-bit_architectures.patch
  87. 5 5
      patches/v8/workaround_an_undefined_symbol_error.patch
  88. 1 1
      script/nan-spec-runner.js
  89. 1 1
      script/spec-runner.js
  90. 1 0
      script/strip-binaries.py
  91. 1 1
      script/verify-mksnapshot.py
  92. 2 2
      script/zip_manifests/dist_zip.linux.arm.manifest
  93. 2 2
      script/zip_manifests/dist_zip.linux.arm64.manifest
  94. 2 2
      script/zip_manifests/dist_zip.linux.x64.manifest
  95. 2 2
      script/zip_manifests/dist_zip.linux.x86.manifest
  96. 0 1
      script/zip_manifests/dist_zip.mac.x64.manifest
  97. 0 1
      script/zip_manifests/dist_zip.mac_mas.x64.manifest
  98. 1 2
      script/zip_manifests/dist_zip.win.arm64.manifest
  99. 1 2
      script/zip_manifests/dist_zip.win.ia32.manifest
  100. 1 2
      script/zip_manifests/dist_zip.win.x64.manifest

+ 14 - 2
.circleci/config.yml

@@ -65,18 +65,22 @@ machine-linux-2xlarge: &machine-linux-2xlarge
 
 machine-mac: &machine-mac
   macos:
-    xcode: "9.4.1"
+    xcode: "10.3.0"
 
 machine-mac-large: &machine-mac-large
   resource_class: large
   macos:
-    xcode: "9.4.1"
+    xcode: "10.3.0"
 
 # Build configurations options.
 env-debug-build: &env-debug-build
   GN_CONFIG: //electron/build/args/debug.gn
   SKIP_DIST_ZIP: '1'
 
+env-mac-debug-build: &env-mac-debug-build
+  # Set symbol level to 1 so that debug builds do not run out of disk space
+  GN_BUILDFLAG_ARGS: 'symbol_level = 1'  
+
 env-testing-build: &env-testing-build
   GN_CONFIG: //electron/build/args/testing.gn
   CHECK_DIST_MANIFEST: '1'
@@ -246,6 +250,12 @@ step-get-more-space-on-mac: &step-get-more-space-on-mac
     command: |
       if [ "`uname`" == "Darwin" ]; then
         sudo rm -rf /Library/Developer/CoreSimulator
+        sudo rm -rf /Applications/Xcode.app/Contents/Developer/Platforms/AppleTVOS.platform
+        sudo rm -rf /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform
+        sudo rm -rf /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform
+        sudo rm -rf /Applications/Xcode.app/Contents/Developer/Platforms/WatchSimulator.platform
+        sudo rm -rf /Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform
+        sudo rm -rf /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform
       fi
 
 step-delete-git-directories: &step-delete-git-directories
@@ -1590,6 +1600,7 @@ jobs:
     environment:
       <<: *env-mac-large
       <<: *env-debug-build
+      <<: *env-mac-debug-build
       <<: *env-enable-sccache
       <<: *env-ninja-status
     <<: *steps-electron-build
@@ -1652,6 +1663,7 @@ jobs:
       <<: *env-mac-large
       <<: *env-mas
       <<: *env-debug-build
+      <<: *env-mac-debug-build
       <<: *env-enable-sccache
       <<: *env-ninja-status
     <<: *steps-electron-build

+ 6 - 2
BUILD.gn

@@ -362,7 +362,8 @@ source_set("electron_lib") {
     "//components/certificate_transparency",
     "//components/language/core/browser",
     "//components/net_log",
-    "//components/network_hints/common",
+    "//components/network_hints/browser",
+    "//components/network_hints/common:mojo_bindings",
     "//components/network_hints/renderer",
     "//components/network_session_configurator/common",
     "//components/prefs",
@@ -552,6 +553,10 @@ source_set("electron_lib") {
     ]
 
     sources += filenames.lib_sources_nss
+    sources += [
+      "shell/browser/ui/gtk_util.cc",
+      "shell/browser/ui/gtk_util.h",
+    ]
   }
   if (is_win) {
     libs += [ "dwmapi.lib" ]
@@ -711,7 +716,6 @@ if (is_mac) {
       public_deps += [ "//third_party/icu:icudata" ]
     }
     if (v8_use_external_startup_data) {
-      sources += [ "$root_out_dir/natives_blob.bin" ]
       public_deps += [ "//v8" ]
       if (use_v8_context_snapshot) {
         sources += [ "$root_out_dir/v8_context_snapshot.bin" ]

+ 1 - 1
DEPS

@@ -11,7 +11,7 @@ gclient_gn_args = [
 
 vars = {
   'chromium_version':
-    'c3a0220e7bde049d599a8332b9b2785b0178be74',
+    '80.0.3955.0',
   'node_version':
     'v12.13.0',
   'nan_version':

+ 1 - 1
appveyor.yml

@@ -29,7 +29,7 @@
 
 version: 1.0.{build}
 build_cloud: libcc-20
-image: vs2017-15.9-10.0.18362
+image: vs2019-16.3-10.0.18362
 environment:
   GIT_CACHE_PATH: C:\Users\electron\libcc_cache
   ELECTRON_OUT_DIR: Default

+ 0 - 5
build/args/all.gn

@@ -1,5 +1,4 @@
 is_electron_build = true
-use_jumbo_build = true
 root_extra_deps = [ "//electron" ]
 
 # Registry of NMVs --> https://github.com/nodejs/node/blob/master/doc/abi_version_registry.json
@@ -21,9 +20,5 @@ angle_enable_vulkan_validation_layers = false
 
 is_cfi = false
 
-# TODO: Remove this and update CI to contain 10.14 SDK once
-# crbug.com/986701 is fixed.
-mac_sdk_min = "10.13"
-
 # TODO: disabled due to crashes. re-enable.
 enable_osr = false

+ 0 - 1
build/args/native_tests.gn

@@ -5,4 +5,3 @@ is_debug = false
 is_component_build = false
 is_component_ffmpeg = false
 symbol_level = 1
-use_jumbo_build = true

+ 45 - 4
build/rules.gni

@@ -1,9 +1,50 @@
 import("//build/config/mac/mac_sdk.gni")
 
-# This is imported from /ios becuase this functionality was moved
-# after Chromium stopped using xib files for macOS menu functionality
-# See https://chromium-review.googlesource.com/c/chromium/src/+/1648695
-import("//build/config/ios/rules.gni")
+# Template to compile .xib and .storyboard files.
+# (copied from src/build/config/ios/rules.gni)
+#
+# Arguments
+#
+#     sources:
+#         list of string, sources to compile
+#
+#     ibtool_flags:
+#         (optional) list of string, additional flags to pass to the ibtool
+template("compile_ib_files") {
+  action_foreach(target_name) {
+    forward_variables_from(invoker,
+                           [
+                             "testonly",
+                             "visibility",
+                           ])
+    assert(defined(invoker.sources),
+           "sources must be specified for $target_name")
+    assert(defined(invoker.output_extension),
+           "output_extension must be specified for $target_name")
+
+    ibtool_flags = []
+    if (defined(invoker.ibtool_flags)) {
+      ibtool_flags = invoker.ibtool_flags
+    }
+
+    _output_extension = invoker.output_extension
+
+    script = "//build/config/ios/compile_ib_files.py"
+    sources = invoker.sources
+    outputs = [
+      "$target_gen_dir/$target_name/{{source_name_part}}.$_output_extension",
+    ]
+    args = [
+      "--input",
+      "{{source}}",
+      "--output",
+      rebase_path(
+          "$target_gen_dir/$target_name/{{source_name_part}}.$_output_extension",
+          root_build_dir),
+    ]
+    args += ibtool_flags
+  }
+}
 
 # Template is copied here from Chromium but was removed in
 # https://chromium-review.googlesource.com/c/chromium/src/+/1637981

+ 2 - 0
chromium_src/BUILD.gn

@@ -40,6 +40,8 @@ static_library("chrome") {
     "//chrome/browser/net/proxy_service_factory.h",
     "//chrome/browser/predictors/preconnect_manager.cc",
     "//chrome/browser/predictors/preconnect_manager.h",
+    "//chrome/browser/predictors/predictors_features.cc",
+    "//chrome/browser/predictors/predictors_features.h",
     "//chrome/browser/predictors/proxy_lookup_client_impl.cc",
     "//chrome/browser/predictors/proxy_lookup_client_impl.h",
     "//chrome/browser/predictors/resolve_host_client_impl.cc",

+ 2 - 4
chromium_src/chrome/browser/certificate_manager_model.cc

@@ -37,10 +37,8 @@ net::NSSCertDatabase* GetNSSCertDatabaseForResourceContext(
     // public and private slot.
     // Redirect any slot usage to this persistent slot on Linux.
     g_nss_cert_database = new net::NSSCertDatabase(
-        crypto::ScopedPK11Slot(
-            crypto::GetPersistentNSSKeySlot()) /* public slot */,
-        crypto::ScopedPK11Slot(
-            crypto::GetPersistentNSSKeySlot()) /* private slot */);
+        crypto::ScopedPK11Slot(PK11_GetInternalKeySlot()) /* public slot */,
+        crypto::ScopedPK11Slot(PK11_GetInternalKeySlot()) /* private slot */);
   }
   return g_nss_cert_database;
 }

+ 0 - 1
docs/tutorial/snapcraft.md

@@ -61,7 +61,6 @@ The output should look roughly like this:
         ├── libgcrypt.so.11
         ├── libnode.so
         ├── locales
-        ├── natives_blob.bin
         ├── resources
         ├── v8_context_snapshot.bin
         └── version

+ 0 - 1
docs/tutorial/windows-store-guide.md

@@ -62,7 +62,6 @@ The output should look roughly like this:
 │   ├── am.pak
 │   ├── ar.pak
 │   ├── [...]
-├── natives_blob.bin
 ├── node.dll
 ├── resources
 │   ├── app

+ 92 - 92
filenames.gni

@@ -22,6 +22,11 @@ filenames = {
   ]
 
   lib_sources = [
+    "chromium_src/chrome/browser/process_singleton.h",
+    "chromium_src/chrome/browser/process_singleton_posix.cc",
+    "chromium_src/chrome/browser/process_singleton_win.cc",
+    "chromium_src/chrome/browser/ui/views/frame/global_menu_bar_registrar_x11.cc",
+    "chromium_src/chrome/browser/ui/views/frame/global_menu_bar_registrar_x11.h",
     "shell/app/atom_content_client.cc",
     "shell/app/atom_content_client.h",
     "shell/app/atom_main_delegate.cc",
@@ -32,17 +37,17 @@ filenames = {
     "shell/app/command_line_args.h",
     "shell/app/uv_task_runner.cc",
     "shell/app/uv_task_runner.h",
-    "shell/browser/api/atom_api_app_mac.mm",
     "shell/browser/api/atom_api_app.cc",
-    "shell/browser/font_defaults.cc",
-    "shell/browser/font_defaults.h",
-    "shell/browser/feature_list.cc",
-    "shell/browser/feature_list.h",
     "shell/browser/api/atom_api_app.h",
+    "shell/browser/api/atom_api_app_mac.mm",
     "shell/browser/api/atom_api_auto_updater.cc",
     "shell/browser/api/atom_api_auto_updater.h",
     "shell/browser/api/atom_api_browser_view.cc",
     "shell/browser/api/atom_api_browser_view.h",
+    "shell/browser/api/atom_api_browser_window.cc",
+    "shell/browser/api/atom_api_browser_window.h",
+    "shell/browser/api/atom_api_browser_window_mac.mm",
+    "shell/browser/api/atom_api_browser_window_views.cc",
     "shell/browser/api/atom_api_content_tracing.cc",
     "shell/browser/api/atom_api_cookies.cc",
     "shell/browser/api/atom_api_cookies.h",
@@ -73,10 +78,10 @@ filenames = {
     "shell/browser/api/atom_api_net_log.h",
     "shell/browser/api/atom_api_notification.cc",
     "shell/browser/api/atom_api_notification.h",
-    "shell/browser/api/atom_api_power_monitor_mac.mm",
-    "shell/browser/api/atom_api_power_monitor_win.cc",
     "shell/browser/api/atom_api_power_monitor.cc",
     "shell/browser/api/atom_api_power_monitor.h",
+    "shell/browser/api/atom_api_power_monitor_mac.mm",
+    "shell/browser/api/atom_api_power_monitor_win.cc",
     "shell/browser/api/atom_api_power_save_blocker.cc",
     "shell/browser/api/atom_api_power_save_blocker.h",
     "shell/browser/api/atom_api_protocol_ns.cc",
@@ -106,16 +111,10 @@ filenames = {
     "shell/browser/api/atom_api_web_request_ns.cc",
     "shell/browser/api/atom_api_web_request_ns.h",
     "shell/browser/api/atom_api_web_view_manager.cc",
-    "shell/browser/api/atom_api_browser_window.cc",
-    "shell/browser/api/atom_api_browser_window.h",
-    "shell/browser/api/atom_api_browser_window_mac.mm",
-    "shell/browser/api/atom_api_browser_window_views.cc",
     "shell/browser/api/event.cc",
     "shell/browser/api/event.h",
     "shell/browser/api/event_emitter_deprecated.cc",
     "shell/browser/api/event_emitter_deprecated.h",
-    "shell/browser/api/trackable_object.cc",
-    "shell/browser/api/trackable_object.h",
     "shell/browser/api/frame_subscriber.cc",
     "shell/browser/api/frame_subscriber.h",
     "shell/browser/api/gpu_info_enumerator.cc",
@@ -126,29 +125,28 @@ filenames = {
     "shell/browser/api/process_metric.h",
     "shell/browser/api/save_page_handler.cc",
     "shell/browser/api/save_page_handler.h",
-    "shell/browser/auto_updater.cc",
-    "shell/browser/auto_updater.h",
-    "shell/browser/auto_updater_mac.mm",
-    "shell/browser/atom_autofill_driver_factory.cc",
-    "shell/browser/atom_autofill_driver_factory.h",
+    "shell/browser/api/trackable_object.cc",
+    "shell/browser/api/trackable_object.h",
     "shell/browser/atom_autofill_driver.cc",
     "shell/browser/atom_autofill_driver.h",
+    "shell/browser/atom_autofill_driver_factory.cc",
+    "shell/browser/atom_autofill_driver_factory.h",
     "shell/browser/atom_browser_client.cc",
     "shell/browser/atom_browser_client.h",
     "shell/browser/atom_browser_context.cc",
     "shell/browser/atom_browser_context.h",
-    "shell/browser/atom_download_manager_delegate.cc",
-    "shell/browser/atom_download_manager_delegate.h",
-    "shell/browser/atom_gpu_client.cc",
-    "shell/browser/atom_gpu_client.h",
     "shell/browser/atom_browser_main_parts.cc",
     "shell/browser/atom_browser_main_parts.h",
     "shell/browser/atom_browser_main_parts_mac.mm",
     "shell/browser/atom_browser_main_parts_posix.cc",
+    "shell/browser/atom_download_manager_delegate.cc",
+    "shell/browser/atom_download_manager_delegate.h",
+    "shell/browser/atom_gpu_client.cc",
+    "shell/browser/atom_gpu_client.h",
     "shell/browser/atom_javascript_dialog_manager.cc",
     "shell/browser/atom_javascript_dialog_manager.h",
-    "shell/browser/atom_navigation_throttle.h",
     "shell/browser/atom_navigation_throttle.cc",
+    "shell/browser/atom_navigation_throttle.h",
     "shell/browser/atom_paths.h",
     "shell/browser/atom_permission_manager.cc",
     "shell/browser/atom_permission_manager.h",
@@ -158,29 +156,38 @@ filenames = {
     "shell/browser/atom_speech_recognition_manager_delegate.h",
     "shell/browser/atom_web_ui_controller_factory.cc",
     "shell/browser/atom_web_ui_controller_factory.h",
+    "shell/browser/auto_updater.cc",
+    "shell/browser/auto_updater.h",
+    "shell/browser/auto_updater_mac.mm",
     "shell/browser/browser.cc",
     "shell/browser/browser.h",
     "shell/browser/browser_linux.cc",
     "shell/browser/browser_mac.mm",
-    "shell/browser/browser_win.cc",
     "shell/browser/browser_observer.h",
     "shell/browser/browser_process_impl.cc",
     "shell/browser/browser_process_impl.h",
+    "shell/browser/browser_win.cc",
     "shell/browser/child_web_contents_tracker.cc",
     "shell/browser/child_web_contents_tracker.h",
-    "shell/browser/common_web_contents_delegate_mac.mm",
-    "shell/browser/common_web_contents_delegate_views.cc",
     "shell/browser/common_web_contents_delegate.cc",
     "shell/browser/common_web_contents_delegate.h",
+    "shell/browser/common_web_contents_delegate_mac.mm",
+    "shell/browser/common_web_contents_delegate_views.cc",
     "shell/browser/cookie_change_notifier.cc",
     "shell/browser/cookie_change_notifier.h",
+    "shell/browser/feature_list.cc",
+    "shell/browser/feature_list.h",
+    "shell/browser/font_defaults.cc",
+    "shell/browser/font_defaults.h",
     "shell/browser/javascript_environment.cc",
     "shell/browser/javascript_environment.h",
     "shell/browser/lib/bluetooth_chooser.cc",
     "shell/browser/lib/bluetooth_chooser.h",
     "shell/browser/lib/power_observer.h",
-    "shell/browser/lib/power_observer_linux.h",
     "shell/browser/lib/power_observer_linux.cc",
+    "shell/browser/lib/power_observer_linux.h",
+    "shell/browser/linux/unity_service.cc",
+    "shell/browser/linux/unity_service.h",
     "shell/browser/login_handler.cc",
     "shell/browser/login_handler.h",
     "shell/browser/mac/atom_application.h",
@@ -195,48 +202,52 @@ filenames = {
     "shell/browser/mac/in_app_purchase_observer.mm",
     "shell/browser/mac/in_app_purchase_product.h",
     "shell/browser/mac/in_app_purchase_product.mm",
+    "shell/browser/media/media_capture_devices_dispatcher.cc",
+    "shell/browser/media/media_capture_devices_dispatcher.h",
+    "shell/browser/media/media_device_id_salt.cc",
+    "shell/browser/media/media_device_id_salt.h",
+    "shell/browser/media/media_stream_devices_controller.cc",
+    "shell/browser/media/media_stream_devices_controller.h",
     "shell/browser/microtasks_runner.cc",
     "shell/browser/microtasks_runner.h",
     "shell/browser/native_browser_view.cc",
     "shell/browser/native_browser_view.h",
     "shell/browser/native_browser_view_mac.h",
     "shell/browser/native_browser_view_mac.mm",
-    "shell/browser/native_browser_view_views.h",
     "shell/browser/native_browser_view_views.cc",
+    "shell/browser/native_browser_view_views.h",
     "shell/browser/native_window.cc",
     "shell/browser/native_window.h",
-    "shell/browser/native_window_views_win.cc",
-    "shell/browser/native_window_views.cc",
-    "shell/browser/native_window_views.h",
     "shell/browser/native_window_mac.h",
     "shell/browser/native_window_mac.mm",
     "shell/browser/native_window_observer.h",
-    "shell/browser/media/media_capture_devices_dispatcher.cc",
-    "shell/browser/media/media_capture_devices_dispatcher.h",
-    "shell/browser/media/media_device_id_salt.cc",
-    "shell/browser/media/media_device_id_salt.h",
-    "shell/browser/media/media_stream_devices_controller.cc",
-    "shell/browser/media/media_stream_devices_controller.h",
+    "shell/browser/native_window_views.cc",
+    "shell/browser/native_window_views.h",
+    "shell/browser/native_window_views_win.cc",
     "shell/browser/net/asar/asar_url_loader.cc",
     "shell/browser/net/asar/asar_url_loader.h",
     "shell/browser/net/atom_url_loader_factory.cc",
     "shell/browser/net/atom_url_loader_factory.h",
     "shell/browser/net/cert_verifier_client.cc",
     "shell/browser/net/cert_verifier_client.h",
-    "shell/browser/net/proxying_url_loader_factory.cc",
-    "shell/browser/net/proxying_url_loader_factory.h",
-    "shell/browser/net/network_context_service_factory.cc",
-    "shell/browser/net/network_context_service_factory.h",
     "shell/browser/net/network_context_service.cc",
     "shell/browser/net/network_context_service.h",
+    "shell/browser/net/network_context_service_factory.cc",
+    "shell/browser/net/network_context_service_factory.h",
     "shell/browser/net/node_stream_loader.cc",
     "shell/browser/net/node_stream_loader.h",
+    "shell/browser/net/proxying_url_loader_factory.cc",
+    "shell/browser/net/proxying_url_loader_factory.h",
     "shell/browser/net/resolve_proxy_helper.cc",
     "shell/browser/net/resolve_proxy_helper.h",
     "shell/browser/net/system_network_context_manager.cc",
     "shell/browser/net/system_network_context_manager.h",
     "shell/browser/net/url_pipe_loader.cc",
     "shell/browser/net/url_pipe_loader.h",
+    "shell/browser/network_hints_handler_impl.cc",
+    "shell/browser/network_hints_handler_impl.h",
+    "shell/browser/node_debugger.cc",
+    "shell/browser/node_debugger.h",
     "shell/browser/notifications/linux/libnotify_notification.cc",
     "shell/browser/notifications/linux/libnotify_notification.h",
     "shell/browser/notifications/linux/notification_presenter_linux.cc",
@@ -269,17 +280,13 @@ filenames = {
     "shell/browser/notifications/win/win32_notification.h",
     "shell/browser/notifications/win/windows_toast_notification.cc",
     "shell/browser/notifications/win/windows_toast_notification.h",
-    "shell/browser/node_debugger.cc",
-    "shell/browser/node_debugger.h",
     "shell/browser/pref_store_delegate.cc",
     "shell/browser/pref_store_delegate.h",
+    "shell/browser/relauncher.cc",
+    "shell/browser/relauncher.h",
     "shell/browser/relauncher_linux.cc",
     "shell/browser/relauncher_mac.cc",
     "shell/browser/relauncher_win.cc",
-    "shell/browser/relauncher.cc",
-    "shell/browser/relauncher.h",
-    "shell/browser/renderer_host/electron_render_message_filter.cc",
-    "shell/browser/renderer_host/electron_render_message_filter.h",
     "shell/browser/session_preferences.cc",
     "shell/browser/session_preferences.h",
     "shell/browser/special_storage_policy.cc",
@@ -293,8 +300,14 @@ filenames = {
     "shell/browser/ui/certificate_trust.h",
     "shell/browser/ui/certificate_trust_mac.mm",
     "shell/browser/ui/certificate_trust_win.cc",
+    "shell/browser/ui/cocoa/NSColor+Hex.h",
+    "shell/browser/ui/cocoa/NSColor+Hex.mm",
+    "shell/browser/ui/cocoa/NSString+ANSI.h",
+    "shell/browser/ui/cocoa/NSString+ANSI.mm",
     "shell/browser/ui/cocoa/atom_bundle_mover.h",
     "shell/browser/ui/cocoa/atom_bundle_mover.mm",
+    "shell/browser/ui/cocoa/atom_inspectable_web_contents_view.h",
+    "shell/browser/ui/cocoa/atom_inspectable_web_contents_view.mm",
     "shell/browser/ui/cocoa/atom_menu_controller.h",
     "shell/browser/ui/cocoa/atom_menu_controller.mm",
     "shell/browser/ui/cocoa/atom_native_widget_mac.h",
@@ -309,27 +322,23 @@ filenames = {
     "shell/browser/ui/cocoa/atom_touch_bar.mm",
     "shell/browser/ui/cocoa/delayed_native_view_host.cc",
     "shell/browser/ui/cocoa/delayed_native_view_host.h",
-    "shell/browser/ui/cocoa/views_delegate_mac.h",
-    "shell/browser/ui/cocoa/views_delegate_mac.mm",
-    "shell/browser/ui/cocoa/root_view_mac.mm",
-    "shell/browser/ui/cocoa/root_view_mac.h",
-    "shell/browser/ui/cocoa/atom_inspectable_web_contents_view.h",
-    "shell/browser/ui/cocoa/atom_inspectable_web_contents_view.mm",
     "shell/browser/ui/cocoa/event_dispatching_window.h",
     "shell/browser/ui/cocoa/event_dispatching_window.mm",
+    "shell/browser/ui/cocoa/root_view_mac.h",
+    "shell/browser/ui/cocoa/root_view_mac.mm",
+    "shell/browser/ui/cocoa/views_delegate_mac.h",
+    "shell/browser/ui/cocoa/views_delegate_mac.mm",
     "shell/browser/ui/devtools_manager_delegate.cc",
     "shell/browser/ui/devtools_manager_delegate.h",
     "shell/browser/ui/devtools_ui.cc",
     "shell/browser/ui/devtools_ui.h",
+    "shell/browser/ui/drag_util.h",
     "shell/browser/ui/drag_util_mac.mm",
     "shell/browser/ui/drag_util_views.cc",
-    "shell/browser/ui/drag_util.h",
     "shell/browser/ui/file_dialog.h",
     "shell/browser/ui/file_dialog_gtk.cc",
     "shell/browser/ui/file_dialog_mac.mm",
     "shell/browser/ui/file_dialog_win.cc",
-    "shell/browser/ui/util_gtk.cc",
-    "shell/browser/ui/util_gtk.h",
     "shell/browser/ui/inspectable_web_contents.cc",
     "shell/browser/ui/inspectable_web_contents.h",
     "shell/browser/ui/inspectable_web_contents_delegate.h",
@@ -344,16 +353,12 @@ filenames = {
     "shell/browser/ui/message_box_gtk.cc",
     "shell/browser/ui/message_box_mac.mm",
     "shell/browser/ui/message_box_win.cc",
-    "shell/browser/ui/cocoa/NSColor+Hex.mm",
-    "shell/browser/ui/cocoa/NSColor+Hex.h",
-    "shell/browser/ui/cocoa/NSString+ANSI.mm",
-    "shell/browser/ui/cocoa/NSString+ANSI.h",
     "shell/browser/ui/tray_icon.cc",
     "shell/browser/ui/tray_icon.h",
-    "shell/browser/ui/tray_icon_gtk.cc",
-    "shell/browser/ui/tray_icon_gtk.h",
     "shell/browser/ui/tray_icon_cocoa.h",
     "shell/browser/ui/tray_icon_cocoa.mm",
+    "shell/browser/ui/tray_icon_gtk.cc",
+    "shell/browser/ui/tray_icon_gtk.h",
     "shell/browser/ui/tray_icon_observer.h",
     "shell/browser/ui/tray_icon_win.cc",
     "shell/browser/ui/views/atom_views_delegate.cc",
@@ -386,10 +391,10 @@ filenames = {
     "shell/browser/ui/win/atom_desktop_window_tree_host_win.h",
     "shell/browser/ui/win/jump_list.cc",
     "shell/browser/ui/win/jump_list.h",
-    "shell/browser/ui/win/notify_icon_host.cc",
-    "shell/browser/ui/win/notify_icon_host.h",
     "shell/browser/ui/win/notify_icon.cc",
     "shell/browser/ui/win/notify_icon.h",
+    "shell/browser/ui/win/notify_icon_host.cc",
+    "shell/browser/ui/win/notify_icon_host.h",
     "shell/browser/ui/win/taskbar_host.cc",
     "shell/browser/ui/win/taskbar_host.h",
     "shell/browser/ui/x/event_disabler.cc",
@@ -400,8 +405,6 @@ filenames = {
     "shell/browser/ui/x/x_window_utils.h",
     "shell/browser/unresponsive_suppressor.cc",
     "shell/browser/unresponsive_suppressor.h",
-    "shell/browser/win/scoped_hstring.cc",
-    "shell/browser/win/scoped_hstring.h",
     "shell/browser/web_contents_permission_helper.cc",
     "shell/browser/web_contents_permission_helper.h",
     "shell/browser/web_contents_preferences.cc",
@@ -414,6 +417,8 @@ filenames = {
     "shell/browser/web_view_guest_delegate.h",
     "shell/browser/web_view_manager.cc",
     "shell/browser/web_view_manager.h",
+    "shell/browser/win/scoped_hstring.cc",
+    "shell/browser/win/scoped_hstring.h",
     "shell/browser/window_list.cc",
     "shell/browser/window_list.h",
     "shell/browser/window_list_observer.h",
@@ -431,25 +436,25 @@ filenames = {
     "shell/common/api/atom_api_native_image_mac.mm",
     "shell/common/api/atom_api_shell.cc",
     "shell/common/api/atom_api_v8_util.cc",
+    "shell/common/api/constructor.h",
     "shell/common/api/electron_bindings.cc",
     "shell/common/api/electron_bindings.h",
-    "shell/common/api/constructor.h",
     "shell/common/api/event_emitter_caller_deprecated.cc",
     "shell/common/api/event_emitter_caller_deprecated.h",
     "shell/common/api/features.cc",
     "shell/common/api/locker.cc",
     "shell/common/api/locker.h",
+    "shell/common/application_info.cc",
+    "shell/common/application_info.h",
+    "shell/common/application_info_linux.cc",
+    "shell/common/application_info_mac.mm",
+    "shell/common/application_info_win.cc",
     "shell/common/asar/archive.cc",
     "shell/common/asar/archive.h",
     "shell/common/asar/asar_util.cc",
     "shell/common/asar/asar_util.h",
     "shell/common/asar/scoped_temporary_file.cc",
     "shell/common/asar/scoped_temporary_file.h",
-    "shell/common/application_info_linux.cc",
-    "shell/common/application_info_mac.mm",
-    "shell/common/application_info_win.cc",
-    "shell/common/application_info.cc",
-    "shell/common/application_info.h",
     "shell/common/atom_command_line.cc",
     "shell/common/atom_command_line.h",
     "shell/common/atom_constants.cc",
@@ -462,12 +467,15 @@ filenames = {
     "shell/common/crash_reporter/crash_reporter_linux.h",
     "shell/common/crash_reporter/crash_reporter_mac.h",
     "shell/common/crash_reporter/crash_reporter_mac.mm",
-    "shell/common/crash_reporter/crash_reporter_win.h",
     "shell/common/crash_reporter/crash_reporter_win.cc",
+    "shell/common/crash_reporter/crash_reporter_win.h",
     "shell/common/crash_reporter/linux/crash_dump_handler.cc",
     "shell/common/crash_reporter/linux/crash_dump_handler.h",
     "shell/common/crash_reporter/win/crash_service_main.cc",
     "shell/common/crash_reporter/win/crash_service_main.h",
+    "shell/common/deprecate_util.cc",
+    "shell/common/deprecate_util.h",
+    "shell/common/gin_converters/blink_converter_gin_adapter.h",
     "shell/common/gin_converters/callback_converter.h",
     "shell/common/gin_converters/file_dialog_converter.cc",
     "shell/common/gin_converters/file_dialog_converter.h",
@@ -483,7 +491,6 @@ filenames = {
     "shell/common/gin_converters/net_converter.cc",
     "shell/common/gin_converters/net_converter.h",
     "shell/common/gin_converters/std_converter.h",
-    "shell/common/gin_converters/blink_converter_gin_adapter.h",
     "shell/common/gin_converters/value_converter_gin_adapter.h",
     "shell/common/gin_helper/arguments.cc",
     "shell/common/gin_helper/arguments.h",
@@ -494,10 +501,10 @@ filenames = {
     "shell/common/gin_helper/dictionary.h",
     "shell/common/gin_helper/error_thrower.cc",
     "shell/common/gin_helper/error_thrower.h",
-    "shell/common/gin_helper/event_emitter_caller.cc",
-    "shell/common/gin_helper/event_emitter_caller.h",
     "shell/common/gin_helper/event_emitter.cc",
     "shell/common/gin_helper/event_emitter.h",
+    "shell/common/gin_helper/event_emitter_caller.cc",
+    "shell/common/gin_helper/event_emitter_caller.h",
     "shell/common/gin_helper/function_template.cc",
     "shell/common/gin_helper/function_template.h",
     "shell/common/gin_helper/object_template_builder.cc",
@@ -507,12 +514,10 @@ filenames = {
     "shell/common/key_weak_map.h",
     "shell/common/keyboard_util.cc",
     "shell/common/keyboard_util.h",
-    "shell/common/deprecate_util.cc",
-    "shell/common/deprecate_util.h",
-    "shell/common/mouse_util.cc",
-    "shell/common/mouse_util.h",
     "shell/common/mac/main_application_bundle.h",
     "shell/common/mac/main_application_bundle.mm",
+    "shell/common/mouse_util.cc",
+    "shell/common/mouse_util.h",
     "shell/common/native_mate_converters/accelerator_converter.cc",
     "shell/common/native_mate_converters/accelerator_converter.h",
     "shell/common/native_mate_converters/blink_converter.cc",
@@ -545,38 +550,38 @@ filenames = {
     "shell/common/node_bindings_win.cc",
     "shell/common/node_bindings_win.h",
     "shell/common/node_includes.h",
-    "shell/common/node_util.h",
     "shell/common/node_util.cc",
+    "shell/common/node_util.h",
     "shell/common/options_switches.cc",
     "shell/common/options_switches.h",
     "shell/common/platform_util.h",
     "shell/common/platform_util_linux.cc",
     "shell/common/platform_util_mac.mm",
     "shell/common/platform_util_win.cc",
-    "shell/common/promise_util.h",
     "shell/common/promise_util.cc",
-    "shell/common/skia_util.h",
+    "shell/common/promise_util.h",
     "shell/common/skia_util.cc",
-    "shell/renderer/api/context_bridge/render_frame_context_bridge_store.cc",
-    "shell/renderer/api/context_bridge/render_frame_context_bridge_store.h",
+    "shell/common/skia_util.h",
     "shell/renderer/api/atom_api_context_bridge.cc",
     "shell/renderer/api/atom_api_context_bridge.h",
     "shell/renderer/api/atom_api_renderer_ipc.cc",
     "shell/renderer/api/atom_api_spell_check_client.cc",
     "shell/renderer/api/atom_api_spell_check_client.h",
     "shell/renderer/api/atom_api_web_frame.cc",
+    "shell/renderer/api/context_bridge/render_frame_context_bridge_store.cc",
+    "shell/renderer/api/context_bridge/render_frame_context_bridge_store.h",
     "shell/renderer/atom_autofill_agent.cc",
     "shell/renderer/atom_autofill_agent.h",
     "shell/renderer/atom_render_frame_observer.cc",
     "shell/renderer/atom_render_frame_observer.h",
     "shell/renderer/atom_renderer_client.cc",
     "shell/renderer/atom_renderer_client.h",
+    "shell/renderer/atom_sandboxed_renderer_client.cc",
+    "shell/renderer/atom_sandboxed_renderer_client.h",
     "shell/renderer/content_settings_observer.cc",
     "shell/renderer/content_settings_observer.h",
     "shell/renderer/electron_api_service_impl.cc",
     "shell/renderer/electron_api_service_impl.h",
-    "shell/renderer/atom_sandboxed_renderer_client.cc",
-    "shell/renderer/atom_sandboxed_renderer_client.h",
     "shell/renderer/guest_view_container.cc",
     "shell/renderer/guest_view_container.h",
     "shell/renderer/renderer_client_base.cc",
@@ -585,11 +590,6 @@ filenames = {
     "shell/renderer/web_worker_observer.h",
     "shell/utility/atom_content_utility_client.cc",
     "shell/utility/atom_content_utility_client.h",
-    "chromium_src/chrome/browser/process_singleton_posix.cc",
-    "chromium_src/chrome/browser/process_singleton_win.cc",
-    "chromium_src/chrome/browser/process_singleton.h",
-    "chromium_src/chrome/browser/ui/views/frame/global_menu_bar_registrar_x11.cc",
-    "chromium_src/chrome/browser/ui/views/frame/global_menu_bar_registrar_x11.h",
   ]
 
   lib_sources_nss = [

+ 2 - 0
lib/browser/api/web-contents.js

@@ -251,6 +251,8 @@ WebContents.prototype.printToPDF = function (options) {
 
   // Chromium expects this in a 0-100 range number, not as float
   printingSetting.scaleFactor = Math.ceil(printingSetting.scaleFactor) % 100
+  // PrinterType enum from //printing/print_job_constants.h
+  printingSetting.printerType = 2
   if (features.isPrintingEnabled()) {
     return this._printToPDF(printingSetting)
   } else {

+ 1 - 1
patches/boringssl/expose_ripemd160.patch

@@ -80,7 +80,7 @@ index d540144b293297791c087e0b968a47d368a73695..53cb9d2dc8f1962a70dc12b648d27c32
 +  callback(EVP_ripemd160(), "ripemd160", NULL, arg);
  }
 diff --git a/include/openssl/digest.h b/include/openssl/digest.h
-index c7c679760a30329311b4a6c0db475b2375537028..991fa00b8330a663625719436075bcc8ae32e17a 100644
+index c3ceb7f22a123353f23cb33de9cc2931fb5e1c11..704d43a326e7cced925c9db1c2a6094a16f9abe9 100644
 --- a/include/openssl/digest.h
 +++ b/include/openssl/digest.h
 @@ -88,6 +88,9 @@ OPENSSL_EXPORT const EVP_MD *EVP_sha512(void);

+ 7 - 6
patches/chromium/.patches

@@ -34,8 +34,6 @@ scroll_bounce_flag.patch
 mas-cfisobjc.patch
 mas-cgdisplayusesforcetogray.patch
 mas-audiodeviceduck.patch
-mas-lssetapplicationlaunchservicesserverconnectionstatus.patch
-ignore_rc_check.patch
 chrome_key_systems.patch
 allow_nested_error_trackers.patch
 blink_initialization_order.patch
@@ -68,7 +66,6 @@ crashpad_pid_check.patch
 preconnect_feature.patch
 network_service_allow_remote_certificate_verification_logic.patch
 put_back_deleted_colors_for_autofill.patch
-build_win_disable_zc_twophase.patch
 disable_color_correct_rendering.patch
 add_contentgpuclient_precreatemessageloop_callback.patch
 picture-in-picture.patch
@@ -77,9 +74,13 @@ allow_new_privileges_in_unsandboxed_child_processes.patch
 expose_setuseragent_on_networkcontext.patch
 feat_add_set_theme_source_to_allow_apps_to.patch
 revert_cleanup_remove_menu_subtitles_sublabels.patch
-ui_views_fix_jumbo_build.patch
 export_fetchapi_mojo_traits_to_fix_component_build.patch
-build_fix_when_building_with_enable_plugins_false.patch
 add_zoom_limit_setters_to_webcontents.patch
+revert_remove_contentrendererclient_shouldfork.patch
+build_win_disable_zc_twophase.patch
+ignore_rc_check.patch
+fix_ambiguous_reference_to_data.patch
+backport_fix_msstl_compat_in_ui_events.patch
+build_win_fix_msstl_compatibility_for_pdf.patch
 remove_usage_of_incognito_apis_in_the_spellchecker.patch
-chore_use_electron_resources_not_chrome_for_spellchecker.patch
+chore_use_electron_resources_not_chrome_for_spellchecker.patch

+ 1 - 1
patches/chromium/accelerator.patch

@@ -10,7 +10,7 @@ This patch makes three changes to Accelerator::GetShortcutText to improve shortc
 3. Ctrl-Shift-= should show as Ctrl-+
 
 diff --git a/ui/base/accelerators/accelerator.cc b/ui/base/accelerators/accelerator.cc
-index 841a8ccd1f0ca5073cf0f0621f81561ed6425e0d..ac4c04b74b0a3b8e6d6c375fef021abbd8789a14 100644
+index a3e869a74c33b161215ab4eb6f6adc6a71c9fff5..83315ce63e7d39d3e47a8bb61ade728e20ac11c8 100644
 --- a/ui/base/accelerators/accelerator.cc
 +++ b/ui/base/accelerators/accelerator.cc
 @@ -11,6 +11,7 @@

+ 4 - 4
patches/chromium/add_contentgpuclient_precreatemessageloop_callback.patch

@@ -10,10 +10,10 @@ Allows Electron to restore WER when ELECTRON_DEFAULT_ERROR_MODE is set.
 This should be upstreamed.
 
 diff --git a/content/gpu/gpu_main.cc b/content/gpu/gpu_main.cc
-index 4373f508964cb1e9fd51c952122ac2f41fb35ae9..065a7a57b77f1e3bf5e03fac900f1936d48ad4ff 100644
+index 0de66bc85b1d392fba44858e3a478d918e538393..a21e318b2108223bb4ca6a74d3c654c3ad7ba77a 100644
 --- a/content/gpu/gpu_main.cc
 +++ b/content/gpu/gpu_main.cc
-@@ -236,6 +236,10 @@ int GpuMain(const MainFunctionParams& parameters) {
+@@ -228,6 +228,10 @@ int GpuMain(const MainFunctionParams& parameters) {
  
    logging::SetLogMessageHandler(GpuProcessLogMessageHandler);
  
@@ -24,7 +24,7 @@ index 4373f508964cb1e9fd51c952122ac2f41fb35ae9..065a7a57b77f1e3bf5e03fac900f1936
    // We are experiencing what appear to be memory-stomp issues in the GPU
    // process. These issues seem to be impacting the task executor and listeners
    // registered to it. Create the task executor on the heap to guard against
-@@ -349,7 +353,6 @@ int GpuMain(const MainFunctionParams& parameters) {
+@@ -336,7 +340,6 @@ int GpuMain(const MainFunctionParams& parameters) {
    GpuProcess gpu_process(io_thread_priority);
  #endif
  
@@ -33,7 +33,7 @@ index 4373f508964cb1e9fd51c952122ac2f41fb35ae9..065a7a57b77f1e3bf5e03fac900f1936
      client->PostIOThreadCreated(gpu_process.io_task_runner());
  
 diff --git a/content/public/gpu/content_gpu_client.h b/content/public/gpu/content_gpu_client.h
-index 830d5e89af7bd3ddb409ac7bf9d8eb3109830d41..7d544536ec846c294deb6626f51d5de7846fc5c2 100644
+index 3331f7152da864712e1878b4d2a2f5e2fa34b4ed..38b14405b42813d51406671ce0c4655a85bd88d0 100644
 --- a/content/public/gpu/content_gpu_client.h
 +++ b/content/public/gpu/content_gpu_client.h
 @@ -39,6 +39,10 @@ class CONTENT_EXPORT ContentGpuClient {

+ 18 - 18
patches/chromium/add_realloc.patch

@@ -39,45 +39,45 @@ index 2aef366ac8194aa261cbca6abc051f7da8a988d3..3c7d66c81032636abcca4f1538ce9b7f
  
    GIN_EXPORT static ArrayBufferAllocator* SharedInstance();
 diff --git a/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc b/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc
-index 3b1ced15de47f6b88716db2b79306bb7d98cfdf4..0ed89b4147d98f2239a3504c898666a758cee618 100644
+index 2d9f4e7f5690187e4b742e5c9d5ccc93fdb79872..9793f38d31103340ff34fa74a2749c059554ce5f 100644
 --- a/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc
 +++ b/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc
-@@ -645,6 +645,10 @@ class ArrayBufferAllocator : public v8::ArrayBuffer::Allocator {
-         size, WTF::ArrayBufferContents::kDontInitialize);
+@@ -594,6 +594,10 @@ class ArrayBufferAllocator : public v8::ArrayBuffer::Allocator {
+         size, ArrayBufferContents::kDontInitialize);
    }
  
 +  void* Realloc(void* data, size_t size) override {
-+    return WTF::ArrayBufferContents::Realloc(data, size);
++    return ArrayBufferContents::Realloc(data, size);
 +  }
 +
    void Free(void* data, size_t size) override {
-     WTF::ArrayBufferContents::FreeMemory(data);
+     ArrayBufferContents::FreeMemory(data);
    }
-diff --git a/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_contents.cc b/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_contents.cc
-index ac76d127b96b80c8260a7e2cda0b669cd98787ad..dcab64586700a8740262aede8dba2755f652d8e8 100644
---- a/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_contents.cc
-+++ b/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_contents.cc
-@@ -130,6 +130,11 @@ void* ArrayBufferContents::AllocateMemoryOrNull(size_t size,
+diff --git a/third_party/blink/renderer/core/typed_arrays/array_buffer/array_buffer_contents.cc b/third_party/blink/renderer/core/typed_arrays/array_buffer/array_buffer_contents.cc
+index ac525b62a1282839bc906b1ee59837211a83476c..5e6c54b87e88ea2741bc7986bf76ddaa48723e56 100644
+--- a/third_party/blink/renderer/core/typed_arrays/array_buffer/array_buffer_contents.cc
++++ b/third_party/blink/renderer/core/typed_arrays/array_buffer/array_buffer_contents.cc
+@@ -126,6 +126,11 @@ void* ArrayBufferContents::AllocateMemoryOrNull(size_t size,
    return AllocateMemoryWithFlags(size, policy, base::PartitionAllocReturnNull);
  }
  
 +void* ArrayBufferContents::Realloc(void* data, size_t size) {
-+  return Partitions::ArrayBufferPartition()->Realloc(data, size,
++  return WTF::Partitions::ArrayBufferPartition()->Realloc(data, size,
 +      WTF_HEAP_PROFILER_TYPE_NAME(ArrayBufferContents));
 +}
 +
  void ArrayBufferContents::FreeMemory(void* data) {
-   Partitions::ArrayBufferPartition()->Free(data);
+   WTF::Partitions::ArrayBufferPartition()->Free(data);
  }
-diff --git a/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_contents.h b/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_contents.h
-index ee7c89a4950d6b3c97a810c41a62fee7e372018d..c2b60f20a72cca46d05af369f33d9c19395b34ef 100644
---- a/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_contents.h
-+++ b/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_contents.h
-@@ -140,6 +140,7 @@ class WTF_EXPORT ArrayBufferContents {
+diff --git a/third_party/blink/renderer/core/typed_arrays/array_buffer/array_buffer_contents.h b/third_party/blink/renderer/core/typed_arrays/array_buffer/array_buffer_contents.h
+index 1adf4924657624059dcbe4e88cef684478787752..3b14d852b0654309cb53f933e396dc1e7b479790 100644
+--- a/third_party/blink/renderer/core/typed_arrays/array_buffer/array_buffer_contents.h
++++ b/third_party/blink/renderer/core/typed_arrays/array_buffer/array_buffer_contents.h
+@@ -149,6 +149,7 @@ class CORE_EXPORT ArrayBufferContents {
    void CopyTo(ArrayBufferContents& other);
  
    static void* AllocateMemoryOrNull(size_t, InitializationPolicy);
 +  static void* Realloc(void* data, size_t);
    static void FreeMemory(void*);
    static DataHandle CreateDataHandle(size_t, InitializationPolicy);
-   static void Initialize(
+ 

+ 7 - 7
patches/chromium/add_zoom_limit_setters_to_webcontents.patch

@@ -8,10 +8,10 @@ This is needed by Electron to allow apps to limit how much an app can zoom in
 or out.
 
 diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
-index 8586f71224f1cae6a5e9b4005a6acfef9ff64d4d..4d4dce8124312d46f90db8d2fc59bd0b7acd498d 100644
+index c13511e26189e68376e29f38c4ae2e1cc8fd3c57..a5c4162b3c69b534f843e1b6737392c867fc88ea 100644
 --- a/content/browser/web_contents/web_contents_impl.cc
 +++ b/content/browser/web_contents/web_contents_impl.cc
-@@ -4142,10 +4142,18 @@ bool WebContentsImpl::GetClosedByUserGesture() {
+@@ -4124,10 +4124,18 @@ bool WebContentsImpl::GetClosedByUserGesture() {
    return closed_by_user_gesture_;
  }
  
@@ -31,10 +31,10 @@ index 8586f71224f1cae6a5e9b4005a6acfef9ff64d4d..4d4dce8124312d46f90db8d2fc59bd0b
    return maximum_zoom_percent_;
  }
 diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h
-index 72f7570ed92886e97629116fec98c1c4dcf95f52..e876929be3df7ba7251886a56acf9b84bbe62e32 100644
+index ea1b3581ead984ac084fc9a2b9daf85f6756ea5c..b967e02b4052426855a2af88abbced2076b3e04a 100644
 --- a/content/browser/web_contents/web_contents_impl.h
 +++ b/content/browser/web_contents/web_contents_impl.h
-@@ -450,7 +450,9 @@ class CONTENT_EXPORT WebContentsImpl : public WebContents,
+@@ -447,7 +447,9 @@ class CONTENT_EXPORT WebContentsImpl : public WebContents,
    void SystemDragEnded(RenderWidgetHost* source_rwh) override;
    void SetClosedByUserGesture(bool value) override;
    bool GetClosedByUserGesture() override;
@@ -44,7 +44,7 @@ index 72f7570ed92886e97629116fec98c1c4dcf95f52..e876929be3df7ba7251886a56acf9b84
    int GetMaximumZoomPercent() override;
    void SetPageScale(float page_scale_factor) override;
    gfx::Size GetPreferredSize() override;
-@@ -1714,8 +1716,8 @@ class CONTENT_EXPORT WebContentsImpl : public WebContents,
+@@ -1690,8 +1692,8 @@ class CONTENT_EXPORT WebContentsImpl : public WebContents,
    bool closed_by_user_gesture_;
  
    // Minimum/maximum zoom percent.
@@ -56,10 +56,10 @@ index 72f7570ed92886e97629116fec98c1c4dcf95f52..e876929be3df7ba7251886a56acf9b84
    // Used to correctly handle integer zooming through a smooth scroll device.
    float zoom_scroll_remainder_;
 diff --git a/content/public/browser/web_contents.h b/content/public/browser/web_contents.h
-index 94a5b87ca72998729f1fca14f247914bb81d60d1..3af575d51d0a36f9586a3cfc00575e83e70a46b9 100644
+index 750de66b8002ba66d0f2247d0075da1e51ac764c..1a57feeb1dfe08f8ce1113cb5d8c8ab57d761094 100644
 --- a/content/public/browser/web_contents.h
 +++ b/content/public/browser/web_contents.h
-@@ -808,8 +808,10 @@ class WebContents : public PageNavigator,
+@@ -812,8 +812,10 @@ class WebContents : public PageNavigator,
    virtual void SetClosedByUserGesture(bool value) = 0;
    virtual bool GetClosedByUserGesture() = 0;
  

+ 46 - 0
patches/chromium/backport_fix_msstl_compat_in_ui_events.patch

@@ -0,0 +1,46 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jeremy Apthorp <[email protected]>
+Date: Thu, 31 Oct 2019 14:22:50 -0700
+Subject: backport: fix MSSTL compat in ui/events
+
+Upstream: https://chromium-review.googlesource.com/c/chromium/src/+/1893754
+
+diff --git a/ui/events/blink/prediction/least_squares_predictor.cc b/ui/events/blink/prediction/least_squares_predictor.cc
+index b43fe1893134992937fc7d97ce335344683bfa6b..8a95e17d0835afebd7594c206438cb54022853c9 100644
+--- a/ui/events/blink/prediction/least_squares_predictor.cc
++++ b/ui/events/blink/prediction/least_squares_predictor.cc
+@@ -5,6 +5,8 @@
+ #include "ui/events/blink/prediction/least_squares_predictor.h"
+ #include "ui/events/blink/prediction/predictor_factory.h"
+ 
++#include <algorithm>
++
+ namespace ui {
+ 
+ namespace {
+diff --git a/ui/events/blink/prediction/linear_predictor.cc b/ui/events/blink/prediction/linear_predictor.cc
+index e97f579d80573a1f801986c724bb33cd8bc52e8a..190fa1b3894ef5f7828e2f265566e16ce10e84c5 100644
+--- a/ui/events/blink/prediction/linear_predictor.cc
++++ b/ui/events/blink/prediction/linear_predictor.cc
+@@ -5,6 +5,8 @@
+ #include "ui/events/blink/prediction/linear_predictor.h"
+ #include "ui/events/blink/prediction/predictor_factory.h"
+ 
++#include <algorithm>
++
+ namespace ui {
+ 
+ LinearPredictor::LinearPredictor(EquationOrder order) {
+diff --git a/ui/events/blink/prediction/linear_resampling.cc b/ui/events/blink/prediction/linear_resampling.cc
+index e2a8757b779ba270cd3ae8f1735543be3cc324e0..2b2efe7f132055dfc1f650707a9cbb7a5842ca1a 100644
+--- a/ui/events/blink/prediction/linear_resampling.cc
++++ b/ui/events/blink/prediction/linear_resampling.cc
+@@ -4,6 +4,8 @@
+ 
+ #include "ui/events/blink/prediction/linear_resampling.h"
+ 
++#include <algorithm>
++
+ #include "ui/events/blink/prediction/predictor_factory.h"
+ 
+ namespace ui {

+ 3 - 3
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 0c69b3af9d2144b5d4d61e2d4add7edec839d0b5..acfba2544f6329348f60dd92ca5d9865960db371 100644
+index fa4e26718e2d663305a2be664d8ffbf1a64b3c34..7ba237076e14f0806b94a2fcae3894fec31d0e71 100644
 --- a/third_party/blink/renderer/core/frame/local_frame.cc
 +++ b/third_party/blink/renderer/core/frame/local_frame.cc
-@@ -325,10 +325,6 @@ void LocalFrame::DetachImpl(FrameDetachType type) {
+@@ -333,10 +333,6 @@ void LocalFrame::DetachImpl(FrameDetachType type) {
    }
    CHECK(!view_ || !view_->IsAttached());
  
@@ -28,7 +28,7 @@ index 0c69b3af9d2144b5d4d61e2d4add7edec839d0b5..acfba2544f6329348f60dd92ca5d9865
    if (!Client())
      return;
  
-@@ -346,6 +342,10 @@ void LocalFrame::DetachImpl(FrameDetachType type) {
+@@ -354,6 +350,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();

+ 9 - 9
patches/chromium/blink_world_context.patch

@@ -5,10 +5,10 @@ Subject: blink_world_context.patch
 
 
 diff --git a/third_party/blink/public/web/web_local_frame.h b/third_party/blink/public/web/web_local_frame.h
-index 900c1e97bd5b8ad113def9001be495cae94bbcdf..6cec8d0bdfce94fd3980eb7509dfced79903f0d6 100644
+index 0594883bc21d66704ef2f830863389d412179a29..b788ae92cacf588ad535887bb34ae3d3854bdb92 100644
 --- a/third_party/blink/public/web/web_local_frame.h
 +++ b/third_party/blink/public/web/web_local_frame.h
-@@ -356,6 +356,9 @@ class WebLocalFrame : public WebFrame {
+@@ -343,6 +343,9 @@ class WebLocalFrame : public WebFrame {
    // be calling this API.
    virtual v8::Local<v8::Context> MainWorldScriptContext() const = 0;
  
@@ -19,10 +19,10 @@ index 900c1e97bd5b8ad113def9001be495cae94bbcdf..6cec8d0bdfce94fd3980eb7509dfced7
    // that the script evaluated to with callback. Script execution can be
    // suspend.
 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 bb640f13de34de5d966d97cf617faa3cb3fd54c2..686cddd0755ee219eaf367b3ce84320aeeb5053d 100644
+index e7e07ba6a6d22078d1a6e3eb33746d5fca64b3c0..50a154939a5e52e71b728e21939c75783a28a4f7 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
-@@ -879,6 +879,13 @@ v8::Local<v8::Object> WebLocalFrameImpl::GlobalProxy() const {
+@@ -880,6 +880,13 @@ v8::Local<v8::Object> WebLocalFrameImpl::GlobalProxy() const {
    return MainWorldScriptContext()->Global();
  }
  
@@ -37,15 +37,15 @@ index bb640f13de34de5d966d97cf617faa3cb3fd54c2..686cddd0755ee219eaf367b3ce84320a
    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 ab52cef219785766b1315ec7e17d15c2ba2d6138..cf12b32172a0dc814a1478c275d1b5c067d5eaeb 100644
+index 6954e9726b5c5c48e377961224069a517e540753..42fdc1321efadccca38bf1bc1bbfa0f86c33f95a 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
-@@ -150,6 +150,8 @@ class CORE_EXPORT WebLocalFrameImpl final
+@@ -170,6 +170,8 @@ class CORE_EXPORT WebLocalFrameImpl final
        int argc,
        v8::Local<v8::Value> argv[]) override;
    v8::Local<v8::Context> MainWorldScriptContext() const override;
 +  v8::Local<v8::Context> WorldScriptContext(
 +      v8::Isolate* isolate, int world_id) const override;
-   v8::Local<v8::Object> GlobalProxy() const override;
-   void StartReload(WebFrameLoadType) override;
-   void ReloadImage(const WebNode&) override;
+   void RequestExecuteScriptAndReturnValue(const WebScriptSource&,
+                                           bool user_gesture,
+                                           WebScriptExecutionCallback*) override;

+ 2 - 2
patches/chromium/build_add_electron_tracing_category.patch

@@ -8,10 +8,10 @@ categories in use are known / declared.  This patch is required for us
 to introduce a new Electron category for Electron-specific tracing.
 
 diff --git a/base/trace_event/builtin_categories.h b/base/trace_event/builtin_categories.h
-index dcb32a5eadb7fc3c431099107bdfdfba8764a187..e1a343fdbdc6098189bce9fc1d81e6df5555e7ab 100644
+index 14fd70d103a707a4aa217f662037908178daf9cf..30011a1bda4ba3c11aa1811649730e781ccb5cbf 100644
 --- a/base/trace_event/builtin_categories.h
 +++ b/base/trace_event/builtin_categories.h
-@@ -63,6 +63,7 @@
+@@ -66,6 +66,7 @@
    X("dwrite")                                                            \
    X("DXVA Decoding")                                                     \
    X("EarlyJava")                                                         \

+ 0 - 74
patches/chromium/build_fix_when_building_with_enable_plugins_false.patch

@@ -1,74 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: deepak1556 <[email protected]>
-Date: Tue, 8 Oct 2019 15:40:50 +0000
-Subject: build: fix when building with enable_plugins=false
-
-Bug: none
-Change-Id: If878b3a7f5bb051c6e99c617418475c12754ae90
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1845624
-Reviewed-by: Robert Sesek <[email protected]>
-Commit-Queue: Robert Sesek <[email protected]>
-Cr-Commit-Position: refs/heads/master@{#703739}
-
-diff --git a/AUTHORS b/AUTHORS
-index 6714e69599bc87c47663bec740b91e352ef92780..41aa5584412e4a325d2360691b00c43d7b08f1bb 100644
---- a/AUTHORS
-+++ b/AUTHORS
-@@ -223,6 +223,7 @@ Debashish Samantaray <[email protected]>
- Debug Wang <[email protected]>
- Deepak Dilip Borade <[email protected]>
- Deepak Mittal <[email protected]>
-+Deepak Mohan <[email protected]>
- Deepak Sharma <[email protected]>
- Deepak Singla <[email protected]>
- Deokjin Kim <[email protected]>
-diff --git a/content/browser/sandbox_parameters_mac.mm b/content/browser/sandbox_parameters_mac.mm
-index 5eead918eb9d9df03c86b5201b3f924643707f4b..a12cc8734c45a4ebb29672306da3a695a883eb9b 100644
---- a/content/browser/sandbox_parameters_mac.mm
-+++ b/content/browser/sandbox_parameters_mac.mm
-@@ -25,12 +25,16 @@
- #include "content/public/common/content_client.h"
- #include "content/public/common/content_features.h"
- #include "content/public/common/content_switches.h"
--#include "content/public/common/pepper_plugin_info.h"
-+#include "ppapi/buildflags/buildflags.h"
- #include "sandbox/mac/seatbelt_exec.h"
- #include "services/service_manager/sandbox/mac/sandbox_mac.h"
- #include "services/service_manager/sandbox/sandbox_type.h"
- #include "services/service_manager/sandbox/switches.h"
- 
-+#if BUILDFLAG(ENABLE_PLUGINS)
-+#include "content/public/common/pepper_plugin_info.h"
-+#endif
-+
- namespace content {
- 
- namespace {
-@@ -148,6 +152,7 @@ void SetupNetworkSandboxParameters(sandbox::SeatbeltExecClient* client) {
-   }
- }
- 
-+#if BUILDFLAG(ENABLE_PLUGINS)
- void SetupPPAPISandboxParameters(sandbox::SeatbeltExecClient* client) {
-   SetupCommonSandboxParameters(client);
- 
-@@ -172,6 +177,7 @@ void SetupPPAPISandboxParameters(sandbox::SeatbeltExecClient* client) {
-   // to n+1 more than the plugins added.
-   CHECK(index <= 5);
- }
-+#endif
- 
- void SetupCDMSandboxParameters(sandbox::SeatbeltExecClient* client) {
-   SetupCommonSandboxParameters(client);
-@@ -212,9 +218,11 @@ void SetupSandboxParameters(service_manager::SandboxType sandbox_type,
-     case service_manager::SANDBOX_TYPE_NETWORK:
-       SetupNetworkSandboxParameters(client);
-       break;
-+#if BUILDFLAG(ENABLE_PLUGINS)
-     case service_manager::SANDBOX_TYPE_PPAPI:
-       SetupPPAPISandboxParameters(client);
-       break;
-+#endif
-     case service_manager::SANDBOX_TYPE_PROFILING:
-     case service_manager::SANDBOX_TYPE_UTILITY:
-       SetupUtilitySandboxParameters(client, command_line);

+ 6 - 11
patches/chromium/build_win_disable_zc_twophase.patch

@@ -8,7 +8,7 @@ Windows. This is to workaround the bug in crbug.com/969698#c10
 until fixes have landed in upstream.
 
 diff --git a/build/config/win/BUILD.gn b/build/config/win/BUILD.gn
-index a3a164b41b45381061c7fceb7d7ec1fdb4907792..8de0cb6a8d1987f84aaca5c3bb30ead0a2019bef 100644
+index 95e32520781fc225be1c2bf7d8bfe43925d16d45..8de0cb6a8d1987f84aaca5c3bb30ead0a2019bef 100644
 --- a/build/config/win/BUILD.gn
 +++ b/build/config/win/BUILD.gn
 @@ -2,6 +2,7 @@
@@ -19,18 +19,13 @@ index a3a164b41b45381061c7fceb7d7ec1fdb4907792..8de0cb6a8d1987f84aaca5c3bb30ead0
  import("//build/config/chrome_build.gni")
  import("//build/config/clang/clang.gni")
  import("//build/config/compiler/compiler.gni")
-@@ -61,9 +62,13 @@ config("compiler") {
-     "/FS",  # Preserve previous PDB behavior.
-     "/bigobj",  # Some of our files are bigger than the regular limits.
+@@ -63,7 +64,8 @@ config("compiler") {
      "/utf-8",  # Assume UTF-8 by default to avoid code page dependencies.
--    "/Zc:twoPhase",
    ]
  
+-  if (is_clang) {
 +  if (use_custom_libcxx) {
 +    # Work around crbug.com/969698#c6, bug in MSSTL <xxatomic>.
-+    cflags += [ "/Zc:twoPhase" ]
-+  }
-+
-   # Force C/C++ mode for the given GN detected file type. This is necessary
-   # for precompiled headers where the same source file is compiled in both
-   # modes.
+     cflags += [ "/Zc:twoPhase" ]
+   }
+ 

+ 31 - 0
patches/chromium/build_win_fix_msstl_compatibility_for_pdf.patch

@@ -0,0 +1,31 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Deepak Mohan <[email protected]>
+Date: Fri, 1 Nov 2019 15:13:55 -0700
+Subject: build,[win]: fix msstl compatibility for //pdf
+
+
+diff --git a/pdf/document_layout.cc b/pdf/document_layout.cc
+index 51064a3496f8d9354d00db6085cc9c5d23f7ec0c..b53da54e153b2078a2e18c9af38cfbbbae8da5b8 100644
+--- a/pdf/document_layout.cc
++++ b/pdf/document_layout.cc
+@@ -4,6 +4,8 @@
+ 
+ #include "pdf/document_layout.h"
+ 
++#include <algorithm>
++
+ #include "base/logging.h"
+ #include "ppapi/cpp/rect.h"
+ #include "ppapi/cpp/size.h"
+diff --git a/pdf/draw_utils/coordinates.cc b/pdf/draw_utils/coordinates.cc
+index 49c272f269ce312a72921506bd0abeeea283050f..11b7cca86116940810da374dd64ec437986ccccc 100644
+--- a/pdf/draw_utils/coordinates.cc
++++ b/pdf/draw_utils/coordinates.cc
+@@ -4,6 +4,7 @@
+ 
+ #include "pdf/draw_utils/coordinates.h"
+ 
++#include <algorithm>
+ #include <math.h>
+ 
+ #include "base/logging.h"

+ 22 - 22
patches/chromium/can_create_window.patch

@@ -5,10 +5,10 @@ Subject: can_create_window.patch
 
 
 diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
-index d6d88e7b66f2de4b6733ea454fc45bb804f13a0e..30e9eabf785a0f241e9581ea38f55dd779acd8ce 100644
+index b482fed5deb268b422da71ac323b88c5eba58f1c..535ab53bf35caa5b8c9c36e684831248a3b0100e 100644
 --- a/content/browser/frame_host/render_frame_host_impl.cc
 +++ b/content/browser/frame_host/render_frame_host_impl.cc
-@@ -4054,6 +4054,7 @@ void RenderFrameHostImpl::CreateNewWindow(
+@@ -4309,6 +4309,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,
@@ -17,10 +17,10 @@ index d6d88e7b66f2de4b6733ea454fc45bb804f13a0e..30e9eabf785a0f241e9581ea38f55dd7
            &no_javascript_access);
  
 diff --git a/content/common/frame.mojom b/content/common/frame.mojom
-index f0d9cafca7efb0ae0440619b821b1976d8460396..e34e0e6387b907960d234da93a3e90a390488d02 100644
+index 23aa37d474df2b52f91d6d07a3423728f2f6e776..4583407a4a287c9fe39e013fee3a0e3a1cf9fe12 100644
 --- a/content/common/frame.mojom
 +++ b/content/common/frame.mojom
-@@ -313,6 +313,10 @@ struct CreateNewWindowParams {
+@@ -296,6 +296,10 @@ struct CreateNewWindowParams {
  
    // The window features to use for the new window.
    blink.mojom.WindowFeatures features;
@@ -32,10 +32,10 @@ index f0d9cafca7efb0ae0440619b821b1976d8460396..e34e0e6387b907960d234da93a3e90a3
  
  // 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 a9fddd7dd2d3f5c07a3b15925209a396c9aa096d..da7eca5f443e2ecdcb3f0819848735aafeb43a00 100644
+index ee168f4c2dd6d3c81563baaa7476e80bb2aa7b95..3fdc443b408c3d8f7ffdabf6b010d5fc1ecd22d5 100644
 --- a/content/public/browser/content_browser_client.cc
 +++ b/content/public/browser/content_browser_client.cc
-@@ -502,6 +502,8 @@ bool ContentBrowserClient::CanCreateWindow(
+@@ -506,6 +506,8 @@ bool ContentBrowserClient::CanCreateWindow(
      const std::string& frame_name,
      WindowOpenDisposition disposition,
      const blink::mojom::WindowFeatures& features,
@@ -45,18 +45,18 @@ index a9fddd7dd2d3f5c07a3b15925209a396c9aa096d..da7eca5f443e2ecdcb3f0819848735aa
      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 4e18dfd0dc8d4be9b59f12e7010b7f2be70d6cf0..07fa16953d6167a5a381b28a5da3c08a78de4306 100644
+index 3792cba399a4b80f9fbb7fa1c5561f4614dbba62..891b69d65de0e47719af23eb7047d22d10417019 100644
 --- a/content/public/browser/content_browser_client.h
 +++ b/content/public/browser/content_browser_client.h
-@@ -178,6 +178,7 @@ class RenderFrameHost;
- class RenderProcessHost;
- class RenderViewHost;
- class ResourceContext;
+@@ -134,6 +134,7 @@ class NetworkService;
+ class TrustedURLLoaderHeaderClient;
+ }  // namespace mojom
+ struct ResourceRequest;
 +class ResourceRequestBody;
- class SerialDelegate;
- class SiteInstance;
- class SpeechRecognitionManagerDelegate;
-@@ -801,6 +802,8 @@ class CONTENT_EXPORT ContentBrowserClient {
+ }  // namespace network
+ 
+ namespace rappor {
+@@ -812,6 +813,8 @@ class CONTENT_EXPORT ContentBrowserClient {
        const std::string& frame_name,
        WindowOpenDisposition disposition,
        const blink::mojom::WindowFeatures& features,
@@ -66,7 +66,7 @@ index 4e18dfd0dc8d4be9b59f12e7010b7f2be70d6cf0..07fa16953d6167a5a381b28a5da3c08a
        bool opener_suppressed,
        bool* no_javascript_access);
 diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
-index 4a3c760000fca5f53244a03b9a2074991bc0c382..c5ab8ad81bf11d0ec151b9585a4f1a7f5397ae4b 100644
+index 808b3fabd93bf3d7daa9e4b944df9f4a35b446b2..e31eca37ea538c1c26fe6be636d2b0372792653b 100644
 --- a/content/renderer/render_view_impl.cc
 +++ b/content/renderer/render_view_impl.cc
 @@ -71,6 +71,7 @@
@@ -75,9 +75,9 @@ index 4a3c760000fca5f53244a03b9a2074991bc0c382..c5ab8ad81bf11d0ec151b9585a4f1a7f
  #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/media/webrtc/peer_connection_dependency_factory.h"
- #include "content/renderer/media/webrtc/rtc_peer_connection_handler.h"
-@@ -1367,6 +1368,8 @@ WebView* RenderViewImpl::CreateView(
+ #include "content/renderer/render_frame_impl.h"
+ #include "content/renderer/render_frame_proxy.h"
+@@ -1339,6 +1340,8 @@ WebView* RenderViewImpl::CreateView(
    }
    params->features = ConvertWebWindowFeaturesToMojoWindowFeatures(features);
  
@@ -87,10 +87,10 @@ index 4a3c760000fca5f53244a03b9a2074991bc0c382..c5ab8ad81bf11d0ec151b9585a4f1a7f
    // 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 5faaea374484d51b1af261ff93fb96aec2eaa4e1..786d3a904a765b5cb53859c35a045b9e04b6250b 100644
+index 87667cbeca11db24199ece95c717dd6a42f7466c..5f5af14a08f70d9e6de4454d6f672699c3e85c8f 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
-@@ -312,6 +312,8 @@ bool WebTestContentBrowserClient::CanCreateWindow(
+@@ -315,6 +315,8 @@ bool WebTestContentBrowserClient::CanCreateWindow(
      const std::string& frame_name,
      WindowOpenDisposition disposition,
      const blink::mojom::WindowFeatures& features,
@@ -100,7 +100,7 @@ index 5faaea374484d51b1af261ff93fb96aec2eaa4e1..786d3a904a765b5cb53859c35a045b9e
      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 435f204a364e54b59c0bd651b760bf350ea94d11..1e6bee1fa08fa2d2a396678838d475e0e7e4ce0c 100644
+index 987f2228a312a3cb9c9a04dd682987d1af3f3fe0..30cde8a73a4ca67edd8f898ff63cf446f62bfc64 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
 @@ -68,6 +68,8 @@ class WebTestContentBrowserClient : public ShellContentBrowserClient {

+ 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 82f291613ac9682ddf414699046393125eb102eb..440681987b4d6420be93fe2f17180cb42adc8d2c 100644
+index 3af6a64be2f12cc4b7618f2c4db1a70fe7df0689..a81a8a3ba12b75fffd871b63bfc5c0564ea87826 100644
 --- a/content/browser/browser_main_loop.cc
 +++ b/content/browser/browser_main_loop.cc
-@@ -1505,7 +1505,7 @@ void BrowserMainLoop::MainMessageLoopRun() {
+@@ -1541,7 +1541,7 @@ void BrowserMainLoop::MainMessageLoopRun() {
    NOTREACHED();
  #else
    base::RunLoop run_loop;

+ 5 - 5
patches/chromium/dcheck.patch

@@ -17,10 +17,10 @@ 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 f383b8ee13881b66144ca12e284e1ead4376a27f..42375cd33bb9759ef1c264672b250638a472fe7e 100644
+index 6d52381b3cb1aa290d33ae07c6e4c499e007b928..60e8705fb3afe5e7712a159d79fee2efa4bd3587 100644
 --- a/content/browser/frame_host/navigation_controller_impl.cc
 +++ b/content/browser/frame_host/navigation_controller_impl.cc
-@@ -1209,8 +1209,10 @@ NavigationType NavigationControllerImpl::ClassifyNavigation(
+@@ -1226,8 +1226,10 @@ NavigationType NavigationControllerImpl::ClassifyNavigation(
      return NAVIGATION_TYPE_NEW_SUBFRAME;
    }
  
@@ -33,7 +33,7 @@ index f383b8ee13881b66144ca12e284e1ead4376a27f..42375cd33bb9759ef1c264672b250638
  
    if (rfh->GetParent()) {
      // All manual subframes would be did_create_new_entry and handled above, so
-@@ -1462,7 +1464,10 @@ void NavigationControllerImpl::RendererDidNavigateToNewPage(
+@@ -1483,7 +1485,10 @@ void NavigationControllerImpl::RendererDidNavigateToNewPage(
      new_entry->GetFavicon() = GetLastCommittedEntry()->GetFavicon();
    }
  
@@ -46,10 +46,10 @@ index f383b8ee13881b66144ca12e284e1ead4376a27f..42375cd33bb9759ef1c264672b250638
    // 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 34c13c28117fe5fced5ca3190c5f948168cd010f..554ddabee8952e578a61a9b9c3f358b2475abd69 100644
+index 00a096c43f13d8addcf202545ac2aef97ef9c556..0145c63c41ba67b260b5df273d04e5b87c22af23 100644
 --- a/ui/base/clipboard/clipboard_win.cc
 +++ b/ui/base/clipboard/clipboard_win.cc
-@@ -730,9 +730,9 @@ void ClipboardWin::WriteBitmapFromHandle(HBITMAP source_hbitmap,
+@@ -744,9 +744,9 @@ void ClipboardWin::WriteBitmapFromHandle(HBITMAP source_hbitmap,
  }
  
  void ClipboardWin::WriteToClipboard(unsigned int format, HANDLE handle) {

+ 62 - 7
patches/chromium/desktop_media_list.patch

@@ -7,10 +7,20 @@ Subject: desktop_media_list.patch
 * Free the one-time use capturer after thumbnails are fetched
 
 diff --git a/chrome/browser/media/webrtc/desktop_media_list.h b/chrome/browser/media/webrtc/desktop_media_list.h
-index a489bf6ea2179059f53e53563e993db9c7cd123b..8d3df446290e2111e4952899539cbc16d37546e5 100644
+index a489bf6ea2179059f53e53563e993db9c7cd123b..93e237569fe94ec8526f67d915e1a7352d586b16 100644
 --- a/chrome/browser/media/webrtc/desktop_media_list.h
 +++ b/chrome/browser/media/webrtc/desktop_media_list.h
-@@ -69,6 +69,7 @@ class DesktopMediaList {
+@@ -38,6 +38,9 @@ class DesktopMediaList {
+ 
+   virtual ~DesktopMediaList() {}
+ 
++  // Allows listening to notifications generated by the model.
++  virtual void AddObserver(DesktopMediaListObserver* observer) = 0;
++
+   // Sets time interval between updates. By default list of sources and their
+   // thumbnail are updated once per second. If called after StartUpdating() then
+   // it will take effect only after the next update.
+@@ -69,6 +72,7 @@ class DesktopMediaList {
  
    virtual int GetSourceCount() const = 0;
    virtual const Source& GetSource(int index) const = 0;
@@ -19,10 +29,22 @@ index a489bf6ea2179059f53e53563e993db9c7cd123b..8d3df446290e2111e4952899539cbc16
    virtual content::DesktopMediaID::Type GetMediaListType() const = 0;
  };
 diff --git a/chrome/browser/media/webrtc/desktop_media_list_base.cc b/chrome/browser/media/webrtc/desktop_media_list_base.cc
-index 9d9b7435044c4b84f971bd94765eb875fbac1624..eb7e10f7d9e937ebd6f776e4b4ec495d02fb884b 100644
+index 9d9b7435044c4b84f971bd94765eb875fbac1624..2918f91d8e1308bf5a47313e20ad3cec74918f3a 100644
 --- a/chrome/browser/media/webrtc/desktop_media_list_base.cc
 +++ b/chrome/browser/media/webrtc/desktop_media_list_base.cc
-@@ -56,7 +56,7 @@ void DesktopMediaListBase::Update(UpdateCallback callback) {
+@@ -22,6 +22,11 @@ DesktopMediaListBase::DesktopMediaListBase(base::TimeDelta update_period)
+ 
+ DesktopMediaListBase::~DesktopMediaListBase() {}
+ 
++void DesktopMediaListBase::AddObserver(DesktopMediaListObserver* observer) {
++  DCHECK(!observer_);
++  observer_ = observer;
++}
++
+ void DesktopMediaListBase::SetUpdatePeriod(base::TimeDelta period) {
+   DCHECK(!observer_);
+   update_period_ = period;
+@@ -56,7 +61,7 @@ void DesktopMediaListBase::Update(UpdateCallback callback) {
    DCHECK(sources_.empty());
    DCHECK(!refresh_callback_);
    refresh_callback_ = std::move(callback);
@@ -31,7 +53,7 @@ index 9d9b7435044c4b84f971bd94765eb875fbac1624..eb7e10f7d9e937ebd6f776e4b4ec495d
  }
  
  int DesktopMediaListBase::GetSourceCount() const {
-@@ -70,6 +70,11 @@ const DesktopMediaList::Source& DesktopMediaListBase::GetSource(
+@@ -70,6 +75,11 @@ const DesktopMediaList::Source& DesktopMediaListBase::GetSource(
    return sources_[index];
  }
  
@@ -43,11 +65,32 @@ index 9d9b7435044c4b84f971bd94765eb875fbac1624..eb7e10f7d9e937ebd6f776e4b4ec495d
  DesktopMediaID::Type DesktopMediaListBase::GetMediaListType() const {
    return type_;
  }
+@@ -81,6 +91,12 @@ DesktopMediaListBase::SourceDescription::SourceDescription(
+ 
+ void DesktopMediaListBase::UpdateSourcesList(
+     const std::vector<SourceDescription>& new_sources) {
++  // Notify observer when there was no new source captured.
++  if (new_sources.empty()) {
++    observer_->OnSourceUnchanged(this);
++    return;
++  }
++
+   typedef std::set<DesktopMediaID> SourceSet;
+   SourceSet new_source_set;
+   for (size_t i = 0; i < new_sources.size(); ++i) {
 diff --git a/chrome/browser/media/webrtc/desktop_media_list_base.h b/chrome/browser/media/webrtc/desktop_media_list_base.h
-index 3c09ec3111d54cb4f0b74f16a81292b779009eae..26acc18acaef21ced3604fe7ede079d8577f53f4 100644
+index 3c09ec3111d54cb4f0b74f16a81292b779009eae..5c3667822afd47a22878b508b844a615c24f3162 100644
 --- a/chrome/browser/media/webrtc/desktop_media_list_base.h
 +++ b/chrome/browser/media/webrtc/desktop_media_list_base.h
-@@ -34,6 +34,7 @@ class DesktopMediaListBase : public DesktopMediaList {
+@@ -27,6 +27,7 @@ class DesktopMediaListBase : public DesktopMediaList {
+   ~DesktopMediaListBase() override;
+ 
+   // DesktopMediaList interface.
++  void AddObserver(DesktopMediaListObserver* observer) override;
+   void SetUpdatePeriod(base::TimeDelta period) override;
+   void SetThumbnailSize(const gfx::Size& thumbnail_size) override;
+   void SetViewDialogWindowId(content::DesktopMediaID dialog_id) override;
+@@ -34,6 +35,7 @@ class DesktopMediaListBase : public DesktopMediaList {
    void Update(UpdateCallback callback) override;
    int GetSourceCount() const override;
    const Source& GetSource(int index) const override;
@@ -55,6 +98,18 @@ index 3c09ec3111d54cb4f0b74f16a81292b779009eae..26acc18acaef21ced3604fe7ede079d8
    content::DesktopMediaID::Type GetMediaListType() const override;
  
    static uint32_t GetImageHash(const gfx::Image& image);
+diff --git a/chrome/browser/media/webrtc/desktop_media_list_observer.h b/chrome/browser/media/webrtc/desktop_media_list_observer.h
+index ad7f766a36b1b6b2a8bc0f96369f1aaadf6681f7..f6c6c14a0937430df62c9b9c1132c5916a9f2009 100644
+--- a/chrome/browser/media/webrtc/desktop_media_list_observer.h
++++ b/chrome/browser/media/webrtc/desktop_media_list_observer.h
+@@ -20,6 +20,7 @@ class DesktopMediaListObserver {
+                              int new_index) = 0;
+   virtual void OnSourceNameChanged(DesktopMediaList* list, int index) = 0;
+   virtual void OnSourceThumbnailChanged(DesktopMediaList* list, int index) = 0;
++  virtual void OnSourceUnchanged(DesktopMediaList* list) = 0;
+ 
+  protected:
+   virtual ~DesktopMediaListObserver() {}
 diff --git a/chrome/browser/media/webrtc/native_desktop_media_list.cc b/chrome/browser/media/webrtc/native_desktop_media_list.cc
 index 2b109bd1dea2aed647ec01c0660b2d4c963312f2..8567b4c84b55f1f7774ef3755dca63e94ddd7a29 100644
 --- a/chrome/browser/media/webrtc/native_desktop_media_list.cc

+ 6 - 6
patches/chromium/disable-redraw-lock.patch

@@ -15,10 +15,10 @@ the redraw locking mechanism, which fixes these issues. The electron issue
 can be found at https://github.com/electron/electron/issues/1821
 
 diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc
-index 5a60f89ef1cb766a7b06ef80c4bee16c7de593e2..4a96f076a200e59289cbb1f152ec9d3d266f4214 100644
+index 00971fc552171adb0ee9d4227a0bd03dfe1306be..10748277ed62c1e60bb95cfd9e8ddfe06dea4066 100644
 --- a/ui/views/win/hwnd_message_handler.cc
 +++ b/ui/views/win/hwnd_message_handler.cc
-@@ -348,6 +348,10 @@ constexpr int kSynthesizedMouseMessagesTimeDifference = 500;
+@@ -305,6 +305,10 @@ constexpr int kSynthesizedMouseMessagesTimeDifference = 500;
  
  }  // namespace
  
@@ -29,7 +29,7 @@ index 5a60f89ef1cb766a7b06ef80c4bee16c7de593e2..4a96f076a200e59289cbb1f152ec9d3d
  // A scoping class that prevents a window from being able to redraw in response
  // to invalidations that may occur within it for the lifetime of the object.
  //
-@@ -399,6 +403,7 @@ class HWNDMessageHandler::ScopedRedrawLock {
+@@ -356,6 +360,7 @@ class HWNDMessageHandler::ScopedRedrawLock {
          cancel_unlock_(false),
          should_lock_(owner_->IsVisible() && !owner->HasChildRenderingWindow() &&
                       ::IsWindow(hwnd_) &&
@@ -37,7 +37,7 @@ index 5a60f89ef1cb766a7b06ef80c4bee16c7de593e2..4a96f076a200e59289cbb1f152ec9d3d
                       (!(GetWindowLong(hwnd_, GWL_STYLE) & WS_CAPTION) ||
                        !ui::win::IsAeroGlassEnabled())) {
      if (should_lock_)
-@@ -1022,6 +1027,10 @@ HWNDMessageHandler::RegisterUnadjustedMouseEvent() {
+@@ -976,6 +981,10 @@ HWNDMessageHandler::RegisterUnadjustedMouseEvent() {
    return scoped_enable;
  }
  
@@ -49,7 +49,7 @@ index 5a60f89ef1cb766a7b06ef80c4bee16c7de593e2..4a96f076a200e59289cbb1f152ec9d3d
  // HWNDMessageHandler, gfx::WindowImpl overrides:
  
 diff --git a/ui/views/win/hwnd_message_handler.h b/ui/views/win/hwnd_message_handler.h
-index 4044afcc0fd1f076fc392d34417e3ccaa1347031..2bd5fcdf0293a07938d22902121517a458bd3e88 100644
+index 8299c29aa1cff21c9ce66bb0a1934149f4be5d12..504bad57987009ec8c87641a52eb28d98e2d5c06 100644
 --- a/ui/views/win/hwnd_message_handler.h
 +++ b/ui/views/win/hwnd_message_handler.h
 @@ -202,6 +202,8 @@ class VIEWS_EXPORT HWNDMessageHandler : public gfx::WindowImpl,
@@ -62,7 +62,7 @@ index 4044afcc0fd1f076fc392d34417e3ccaa1347031..2bd5fcdf0293a07938d22902121517a4
    HICON GetDefaultWindowIcon() const override;
    HICON GetSmallWindowIcon() const override;
 diff --git a/ui/views/win/hwnd_message_handler_delegate.h b/ui/views/win/hwnd_message_handler_delegate.h
-index ddc640e7a5d278e08c056f1989ac258c9ae8bfae..a5d050dadad3c565b0151ee945e5d17f42255aa3 100644
+index 45c4e5b29d05ea0323596fa2c5034c2e30a68f70..e25aac69b09954fbc267309beba98ec0877fa2ac 100644
 --- a/ui/views/win/hwnd_message_handler_delegate.h
 +++ b/ui/views/win/hwnd_message_handler_delegate.h
 @@ -46,6 +46,8 @@ class VIEWS_EXPORT HWNDMessageHandlerDelegate {

+ 51 - 43
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 8d8d18e2c62dbabfaa81d79f0555954b0b319d3d..298bfe91b9c9f4cbb3b07fe9bc368a1e84433ed1 100644
+index 855b96ae0c398506ec81bd24c0430f2573706d80..977c07db32933a9cc04b1f0613014718d4725640 100644
 --- a/cc/trees/layer_tree_host_impl.cc
 +++ b/cc/trees/layer_tree_host_impl.cc
-@@ -1815,6 +1815,12 @@ const gfx::ColorSpace& LayerTreeHostImpl::GetRasterColorSpace() const {
+@@ -1822,6 +1822,12 @@ const gfx::ColorSpace& LayerTreeHostImpl::GetRasterColorSpace() const {
  
  const gfx::ColorSpace& LayerTreeHostImpl::GetRasterColorSpaceAndId(
      int* id) const {
@@ -37,7 +37,7 @@ index 8d8d18e2c62dbabfaa81d79f0555954b0b319d3d..298bfe91b9c9f4cbb3b07fe9bc368a1e
    // The pending tree will have the most recently updated color space, so
    // prefer that.
 diff --git a/cc/trees/layer_tree_settings.h b/cc/trees/layer_tree_settings.h
-index b6dd56de7cde72051caeedeef3ee413b8f24eba6..0da3f40ebc81170f63e61d8dc5714df5dd72c049 100644
+index 182eb5f68731afdaba5ce71d0fa67ea1051eb0dc..3dd350583c3f23445841c3e46122ae6e809508b2 100644
 --- a/cc/trees/layer_tree_settings.h
 +++ b/cc/trees/layer_tree_settings.h
 @@ -96,6 +96,8 @@ class CC_EXPORT LayerTreeSettings {
@@ -83,7 +83,7 @@ index f17aa1fa451f1b99d7f083e07edd49b11f7639e4..09f7c5d6a92d89c199b296771a8ff60c
        !command_line->HasSwitch(switches::kUIDisablePartialSwap);
  #if defined(OS_MACOSX)
 diff --git a/components/viz/service/display/gl_renderer.cc b/components/viz/service/display/gl_renderer.cc
-index 9eb0276cbedd99b41e537720ea159cdaac7ce705..fbc49a3aa2a5458050acf0280f6caaa659941a68 100644
+index cf811dcdec761ce6825cb1bffb83249b5e144cae..6303a6b2ab37548e580abe946be33ae75e5a0abe 100644
 --- a/components/viz/service/display/gl_renderer.cc
 +++ b/components/viz/service/display/gl_renderer.cc
 @@ -83,6 +83,9 @@
@@ -108,7 +108,7 @@ index 9eb0276cbedd99b41e537720ea159cdaac7ce705..fbc49a3aa2a5458050acf0280f6caaa6
  
    // Use the full quad_rect for debug quads to not move the edges based on
    // partial swaps.
-@@ -1428,7 +1432,8 @@ void GLRenderer::ChooseRPDQProgram(DrawRenderPassDrawQuadParams* params,
+@@ -1476,7 +1480,8 @@ void GLRenderer::ChooseRPDQProgram(DrawRenderPassDrawQuadParams* params,
            params->use_color_matrix, tint_gl_composited_content_,
            params->apply_shader_based_rounded_corner &&
                ShouldApplyRoundedCorner(params->quad)),
@@ -118,7 +118,7 @@ index 9eb0276cbedd99b41e537720ea159cdaac7ce705..fbc49a3aa2a5458050acf0280f6caaa6
  }
  
  void GLRenderer::UpdateRPDQUniforms(DrawRenderPassDrawQuadParams* params) {
-@@ -1899,8 +1904,8 @@ void GLRenderer::DrawSolidColorQuad(const SolidColorDrawQuad* quad,
+@@ -1947,8 +1952,8 @@ void GLRenderer::DrawSolidColorQuad(const SolidColorDrawQuad* quad,
    SetUseProgram(ProgramKey::SolidColor(use_aa ? USE_AA : NO_AA,
                                         tint_gl_composited_content_,
                                         ShouldApplyRoundedCorner(quad)),
@@ -129,7 +129,7 @@ index 9eb0276cbedd99b41e537720ea159cdaac7ce705..fbc49a3aa2a5458050acf0280f6caaa6
    SetShaderColor(color, opacity);
    if (current_program_->rounded_corner_rect_location() != -1) {
      SetShaderRoundedCorner(
-@@ -2055,8 +2060,8 @@ void GLRenderer::DrawContentQuadAA(const ContentDrawQuadBase* quad,
+@@ -2103,8 +2108,8 @@ void GLRenderer::DrawContentQuadAA(const ContentDrawQuadBase* quad,
                                                : NON_PREMULTIPLIED_ALPHA,
                         false, false, tint_gl_composited_content_,
                         ShouldApplyRoundedCorner(quad)),
@@ -140,7 +140,7 @@ index 9eb0276cbedd99b41e537720ea159cdaac7ce705..fbc49a3aa2a5458050acf0280f6caaa6
  
    if (current_program_->tint_color_matrix_location() != -1) {
      auto matrix = cc::DebugColors::TintCompositedContentColorTransformMatrix();
-@@ -2152,8 +2157,8 @@ void GLRenderer::DrawContentQuadNoAA(const ContentDrawQuadBase* quad,
+@@ -2200,8 +2205,8 @@ void GLRenderer::DrawContentQuadNoAA(const ContentDrawQuadBase* quad,
                         !quad->ShouldDrawWithBlending(), has_tex_clamp_rect,
                         tint_gl_composited_content_,
                         ShouldApplyRoundedCorner(quad)),
@@ -151,7 +151,7 @@ index 9eb0276cbedd99b41e537720ea159cdaac7ce705..fbc49a3aa2a5458050acf0280f6caaa6
  
    if (current_program_->tint_color_matrix_location() != -1) {
      auto matrix = cc::DebugColors::TintCompositedContentColorTransformMatrix();
-@@ -2256,7 +2261,7 @@ void GLRenderer::DrawYUVVideoQuad(const YUVVideoDrawQuad* quad,
+@@ -2304,7 +2309,7 @@ void GLRenderer::DrawYUVVideoQuad(const YUVVideoDrawQuad* quad,
    DCHECK_NE(src_color_space, src_color_space.GetAsFullRangeRGB());
  
    gfx::ColorSpace dst_color_space =
@@ -160,7 +160,7 @@ index 9eb0276cbedd99b41e537720ea159cdaac7ce705..fbc49a3aa2a5458050acf0280f6caaa6
    // Force sRGB output on Windows for overlay candidate video quads to match
    // DirectComposition behavior in case these switch between overlays and
    // compositing. See https://crbug.com/811118 for details.
-@@ -2412,8 +2417,8 @@ void GLRenderer::DrawStreamVideoQuad(const StreamVideoDrawQuad* quad,
+@@ -2460,8 +2465,8 @@ void GLRenderer::DrawStreamVideoQuad(const StreamVideoDrawQuad* quad,
  
    SetUseProgram(ProgramKey::VideoStream(tex_coord_precision,
                                          ShouldApplyRoundedCorner(quad)),
@@ -171,7 +171,7 @@ index 9eb0276cbedd99b41e537720ea159cdaac7ce705..fbc49a3aa2a5458050acf0280f6caaa6
  
    DCHECK_EQ(GL_TEXTURE0, GetActiveTextureUnit(gl_));
    gl_->BindTexture(GL_TEXTURE_EXTERNAL_OES, lock.texture_id());
-@@ -2475,8 +2480,8 @@ void GLRenderer::FlushTextureQuadCache(BoundGeometry flush_binding) {
+@@ -2523,8 +2528,8 @@ void GLRenderer::FlushTextureQuadCache(BoundGeometry flush_binding) {
        draw_cache_.nearest_neighbor ? GL_NEAREST : GL_LINEAR);
  
    // Bind the program to the GL state.
@@ -182,7 +182,7 @@ index 9eb0276cbedd99b41e537720ea159cdaac7ce705..fbc49a3aa2a5458050acf0280f6caaa6
  
    if (current_program_->rounded_corner_rect_location() != -1) {
      SetShaderRoundedCorner(
-@@ -3185,7 +3190,9 @@ void GLRenderer::PrepareGeometry(BoundGeometry binding) {
+@@ -3233,7 +3238,9 @@ void GLRenderer::PrepareGeometry(BoundGeometry binding) {
  void GLRenderer::SetUseProgram(const ProgramKey& program_key_no_color,
                                 const gfx::ColorSpace& src_color_space,
                                 const gfx::ColorSpace& dst_color_space) {
@@ -193,7 +193,7 @@ index 9eb0276cbedd99b41e537720ea159cdaac7ce705..fbc49a3aa2a5458050acf0280f6caaa6
  
    gfx::ColorSpace adjusted_color_space = src_color_space;
    float sdr_white_level = current_frame()->sdr_white_level;
-@@ -3564,7 +3571,7 @@ void GLRenderer::CopyRenderPassDrawQuadToOverlayResource(
+@@ -3612,7 +3619,7 @@ void GLRenderer::CopyRenderPassDrawQuadToOverlayResource(
  
    *overlay_texture = FindOrCreateOverlayTexture(
        params.quad->render_pass_id, iosurface_width, iosurface_height,
@@ -202,7 +202,7 @@ index 9eb0276cbedd99b41e537720ea159cdaac7ce705..fbc49a3aa2a5458050acf0280f6caaa6
    *new_bounds = gfx::RectF(updated_dst_rect.origin(),
                             gfx::SizeF((*overlay_texture)->texture.size()));
  
-@@ -3782,8 +3789,8 @@ void GLRenderer::FlushOverdrawFeedback(const gfx::Rect& output_rect) {
+@@ -3830,8 +3837,8 @@ void GLRenderer::FlushOverdrawFeedback(const gfx::Rect& output_rect) {
  
    PrepareGeometry(SHARED_BINDING);
  
@@ -213,17 +213,17 @@ index 9eb0276cbedd99b41e537720ea159cdaac7ce705..fbc49a3aa2a5458050acf0280f6caaa6
  
    gfx::Transform render_matrix;
    render_matrix.Translate(0.5 * output_rect.width() + output_rect.x(),
-@@ -3943,3 +3950,5 @@ gfx::Size GLRenderer::GetRenderPassBackingPixelSize(
+@@ -3991,3 +3998,5 @@ gfx::Size GLRenderer::GetRenderPassBackingPixelSize(
  }
  
  }  // namespace viz
 +
 +#undef PATCH_CS
 diff --git a/content/browser/gpu/gpu_process_host.cc b/content/browser/gpu/gpu_process_host.cc
-index e42a2f780170f01edce84753d60b1fba3a429aeb..3cb62924adf93c4d437c8fa81529efc5188d7f77 100644
+index 6deb2a50ff258ce3b1f892abccd6be2f9cf4e255..ab723f93e259453689ece2b2f447cbed1854e4c1 100644
 --- a/content/browser/gpu/gpu_process_host.cc
 +++ b/content/browser/gpu/gpu_process_host.cc
-@@ -196,6 +196,7 @@ GpuTerminationStatus ConvertToGpuTerminationStatus(
+@@ -186,6 +186,7 @@ GpuTerminationStatus ConvertToGpuTerminationStatus(
  
  // Command-line switches to propagate to the GPU process.
  static const char* const kSwitchNames[] = {
@@ -232,18 +232,18 @@ index e42a2f780170f01edce84753d60b1fba3a429aeb..3cb62924adf93c4d437c8fa81529efc5
      service_manager::switches::kGpuSandboxAllowSysVShm,
      service_manager::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 0408a35db18ecdcad1521e4123aed4bd12bcf2c8..94898420ab1b93f61c830e19cd31ed0a1716922e 100644
+index 71e6b162a8e56e63731b61c171c20d134e7e8b47..ea6722ee4162bdc1e0d8f7548bc971d268d343c4 100644
 --- a/content/browser/renderer_host/render_process_host_impl.cc
 +++ b/content/browser/renderer_host/render_process_host_impl.cc
-@@ -225,6 +225,7 @@
+@@ -226,6 +226,7 @@
  #include "ui/base/ui_base_switches.h"
  #include "ui/base/ui_base_switches_util.h"
  #include "ui/display/display_switches.h"
 +#include "ui/gfx/switches.h"
  #include "ui/gl/gl_switches.h"
  #include "ui/native_theme/native_theme_features.h"
- #include "url/url_constants.h"
-@@ -3015,6 +3016,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
+ #include "url/origin.h"
+@@ -3039,6 +3040,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[] = {
@@ -252,10 +252,10 @@ index 0408a35db18ecdcad1521e4123aed4bd12bcf2c8..94898420ab1b93f61c830e19cd31ed0a
      service_manager::switches::kDisableInProcessStackTraces,
      service_manager::switches::kDisableSeccompFilterSandbox,
 diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
-index 74cdb6031587640946ed08f37f1579ea4e68414c..68a5ec2d04dc3ec1c81d8f62fa067416f2faee29 100644
+index 84af6512284655c8781fd839fc50cd3a75395889..d51198f40580d023d2bfcb6a131b7e5a0e2d4769 100644
 --- a/content/renderer/render_widget.cc
 +++ b/content/renderer/render_widget.cc
-@@ -2930,6 +2930,9 @@ cc::LayerTreeSettings RenderWidget::GenerateLayerTreeSettings(
+@@ -2976,6 +2976,9 @@ cc::LayerTreeSettings RenderWidget::GenerateLayerTreeSettings(
    settings.main_frame_before_activation_enabled =
        cmd.HasSwitch(cc::switches::kEnableMainFrameBeforeActivation);
  
@@ -266,10 +266,18 @@ index 74cdb6031587640946ed08f37f1579ea4e68414c..68a5ec2d04dc3ec1c81d8f62fa067416
    // is what the renderer uses if its not threaded.
    settings.enable_checker_imaging =
 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 1aedba288aed698fd1b7ac6a4ef1a67fc892f84a..df2b5b120483225c2bd21a337e6085dbceca4ec4 100644
+index 1aedba288aed698fd1b7ac6a4ef1a67fc892f84a..0113b09e2f2bb85b4ec43a90503b9ed98e42fd0f 100644
 --- a/third_party/blink/renderer/platform/graphics/canvas_color_params.cc
 +++ b/third_party/blink/renderer/platform/graphics/canvas_color_params.cc
-@@ -12,6 +12,7 @@
+@@ -4,6 +4,7 @@
+ 
+ #include "third_party/blink/renderer/platform/graphics/canvas_color_params.h"
+ 
++#include "base/command_line.h"
+ #include "cc/paint/skia_paint_canvas.h"
+ #include "components/viz/common/resources/resource_format_utils.h"
+ #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
+@@ -12,6 +13,7 @@
  #include "third_party/khronos/GLES3/gl3.h"
  #include "third_party/skia/include/core/SkSurfaceProps.h"
  #include "ui/gfx/color_space.h"
@@ -277,7 +285,7 @@ index 1aedba288aed698fd1b7ac6a4ef1a67fc892f84a..df2b5b120483225c2bd21a337e6085db
  
  namespace blink {
  
-@@ -89,6 +90,11 @@ uint8_t CanvasColorParams::BytesPerPixel() const {
+@@ -89,6 +91,11 @@ uint8_t CanvasColorParams::BytesPerPixel() const {
  }
  
  gfx::ColorSpace CanvasColorParams::GetSamplerGfxColorSpace() const {
@@ -289,7 +297,7 @@ index 1aedba288aed698fd1b7ac6a4ef1a67fc892f84a..df2b5b120483225c2bd21a337e6085db
    gfx::ColorSpace::PrimaryID primary_id = GetPrimaryID(color_space_);
  
    // TODO(ccameron): This needs to take into account whether or not this texture
-@@ -102,6 +108,11 @@ gfx::ColorSpace CanvasColorParams::GetSamplerGfxColorSpace() const {
+@@ -102,6 +109,11 @@ gfx::ColorSpace CanvasColorParams::GetSamplerGfxColorSpace() const {
  }
  
  gfx::ColorSpace CanvasColorParams::GetStorageGfxColorSpace() const {
@@ -302,7 +310,7 @@ index 1aedba288aed698fd1b7ac6a4ef1a67fc892f84a..df2b5b120483225c2bd21a337e6085db
  
    gfx::ColorSpace::TransferID transfer_id =
 diff --git a/ui/gfx/mac/io_surface.cc b/ui/gfx/mac/io_surface.cc
-index 41f7fcbdd63af315f4b4e768bfef3b5004807a0b..398a4fdea3cc0ab4f5132deeb9365189f9c928c3 100644
+index c383d42c986aa29fcdfc2009901ed452ef480b55..1b8d0818155a407eb42c3f785e9609fe7bfa3dc7 100644
 --- a/ui/gfx/mac/io_surface.cc
 +++ b/ui/gfx/mac/io_surface.cc
 @@ -16,6 +16,7 @@
@@ -313,19 +321,19 @@ index 41f7fcbdd63af315f4b4e768bfef3b5004807a0b..398a4fdea3cc0ab4f5132deeb9365189
  
  namespace gfx {
  
-@@ -186,6 +187,11 @@ IOSurfaceRef CreateIOSurface(const gfx::Size& size,
- 
-   // Ensure that all IOSurfaces start as sRGB.
-   CGColorSpaceRef color_space = base::mac::GetSRGBColorSpace();
-+  auto* cmd_line = base::CommandLine::ForCurrentProcess();
-+  if (cmd_line->HasSwitch(switches::kDisableColorCorrectRendering)) {
-+    color_space = base::mac::GetSystemColorSpace();
-+  }
+@@ -261,6 +262,11 @@ IOSurfaceRef CreateIOSurface(const gfx::Size& size,
+     IOSurfaceSetValue(surface, CFSTR("IOSurfaceColorSpace"), kCGColorSpaceSRGB);
+   } else {
+     CGColorSpaceRef color_space = base::mac::GetSRGBColorSpace();
++    auto* cmd_line = base::CommandLine::ForCurrentProcess();
++    if (cmd_line->HasSwitch(switches::kDisableColorCorrectRendering)) {
++      color_space = base::mac::GetSystemColorSpace();
++    }
 +
-   base::ScopedCFTypeRef<CFDataRef> color_space_icc(
-       CGColorSpaceCopyICCProfile(color_space));
-   IOSurfaceSetValue(surface, CFSTR("IOSurfaceColorSpace"), color_space_icc);
-@@ -197,6 +203,14 @@ IOSurfaceRef CreateIOSurface(const gfx::Size& size,
+     base::ScopedCFTypeRef<CFDataRef> color_space_icc(
+         CGColorSpaceCopyICCProfile(color_space));
+     IOSurfaceSetValue(surface, CFSTR("IOSurfaceColorSpace"), color_space_icc);
+@@ -277,6 +283,14 @@ bool IOSurfaceCanSetColorSpace(const ColorSpace& color_space) {
  
  void IOSurfaceSetColorSpace(IOSurfaceRef io_surface,
                              const ColorSpace& color_space) {
@@ -337,9 +345,9 @@ index 41f7fcbdd63af315f4b4e768bfef3b5004807a0b..398a4fdea3cc0ab4f5132deeb9365189
 +    return;
 +  }
 +
-   // Special-case sRGB.
-   if (color_space == ColorSpace::CreateSRGB()) {
-     base::ScopedCFTypeRef<CFDataRef> srgb_icc(
+   if (!internal::IOSurfaceSetColorSpace(io_surface, color_space)) {
+     DLOG(ERROR) << "Failed to set color space for IOSurface: "
+                 << color_space.ToString();
 diff --git a/ui/gfx/switches.cc b/ui/gfx/switches.cc
 index ba3dbf23d1df7a3b0cc199054f36a88014daa0e7..f8a563a78cee2856da0f2ad556beba19b01a2e59 100644
 --- a/ui/gfx/switches.cc

+ 4 - 4
patches/chromium/disable_hidden.patch

@@ -5,10 +5,10 @@ Subject: disable_hidden.patch
 
 
 diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
-index 55c13fa06f7c6a5e7b3bd072ed7ffc452fd24438..09b6a881a5644859eafb216eee1172aeb8d086b2 100644
+index 98273d31f12a368675580e37e849e6afb0b9d048..089d2e596d6ba753a13f0f3f6791a35fbb40b51a 100644
 --- a/content/browser/renderer_host/render_widget_host_impl.cc
 +++ b/content/browser/renderer_host/render_widget_host_impl.cc
-@@ -683,6 +683,9 @@ void RenderWidgetHostImpl::WasHidden() {
+@@ -674,6 +674,9 @@ void RenderWidgetHostImpl::WasHidden() {
    if (is_hidden_)
      return;
  
@@ -19,10 +19,10 @@ index 55c13fa06f7c6a5e7b3bd072ed7ffc452fd24438..09b6a881a5644859eafb216eee1172ae
  
    TRACE_EVENT0("renderer_host", "RenderWidgetHostImpl::WasHidden");
 diff --git a/content/browser/renderer_host/render_widget_host_impl.h b/content/browser/renderer_host/render_widget_host_impl.h
-index 71bfb5e5e6e0aba5615bc76cae1b551ac1880d09..c5175b7fd5c5394703fca85e57b4be5faf618b63 100644
+index b5c6734044e0361a2b9e3d2f6800bb9a679cd73d..477dac2d5ba5ef93f990f625d063be95b4c7a7d5 100644
 --- a/content/browser/renderer_host/render_widget_host_impl.h
 +++ b/content/browser/renderer_host/render_widget_host_impl.h
-@@ -200,6 +200,9 @@ class CONTENT_EXPORT RenderWidgetHostImpl
+@@ -185,6 +185,9 @@ class CONTENT_EXPORT RenderWidgetHostImpl
    // RenderWidgetHostImpl.
    static RenderWidgetHostImpl* From(RenderWidgetHost* rwh);
  

+ 2 - 2
patches/chromium/disable_user_gesture_requirement_for_beforeunload_dialogs.patch

@@ -6,10 +6,10 @@ Subject: disable_user_gesture_requirement_for_beforeunload_dialogs.patch
 See https://github.com/electron/electron/issues/10754
 
 diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
-index 3c8e5db44c4174d5e876a8874fc702cc3233fc7b..31d45afae965efeb15b83d9f4259cc50abe987dd 100644
+index 511aac290866fa739e4c51d487baa8cfdbe52c78..c608456b22923568b83da5a0ae5c78c4af8c7970 100644
 --- a/third_party/blink/renderer/core/dom/document.cc
 +++ b/third_party/blink/renderer/core/dom/document.cc
-@@ -4181,7 +4181,9 @@ bool Document::DispatchBeforeUnloadEvent(ChromeClient* chrome_client,
+@@ -4150,7 +4150,9 @@ bool Document::DispatchBeforeUnloadEvent(ChromeClient* chrome_client,
          "frame that never had a user gesture since its load. "
          "https://www.chromestatus.com/feature/5082396709879808";
      Intervention::GenerateReport(frame_, "BeforeUnloadNoGesture", message);

+ 2 - 2
patches/chromium/exclude-a-few-test-files-from-build.patch

@@ -7,10 +7,10 @@ Compilation of those files fails with the Chromium 68.
 Remove the patch during the Chromium 69 upgrade.
 
 diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn
-index 854d6c6b9763cbec3a4dd74635726e2c0e7c6944..4fe9ee97104c2b021d00a661ff7dbb7fe9a6f681 100644
+index 495b789a66e901e311e164a62e2024851b81fe60..f12b1b3d1de217bf52b098398d6db19a9504b5c5 100644
 --- a/third_party/blink/renderer/platform/BUILD.gn
 +++ b/third_party/blink/renderer/platform/BUILD.gn
-@@ -1781,7 +1781,7 @@ jumbo_source_set("blink_platform_unittests_sources") {
+@@ -1805,7 +1805,7 @@ jumbo_source_set("blink_platform_unittests_sources") {
      "graphics/paint/drawing_display_item_test.cc",
      "graphics/paint/drawing_recorder_test.cc",
      "graphics/paint/float_clip_rect_test.cc",

+ 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 b9a8a12b8abb386fec548a26e4686af2e3822b8c..18af342553139669e485e5c34961de231f927f4c 100644
+index 144714a3a1e63bb891b86cba12a27de50be7f976..e98a296a6b52ec4c6eb336e2d882a36e6f58b76c 100644
 --- a/services/network/network_context.cc
 +++ b/services/network/network_context.cc
-@@ -928,6 +928,13 @@ void NetworkContext::SetNetworkConditions(
+@@ -931,6 +931,13 @@ void NetworkContext::SetNetworkConditions(
                                        std::move(network_conditions));
  }
  
@@ -51,10 +51,10 @@ index b9a8a12b8abb386fec548a26e4686af2e3822b8c..18af342553139669e485e5c34961de23
    // 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 e98063a71435ee8828f3b5a21b569325965f7c58..dd34e65752d54b193965b7e7fea2cae324782204 100644
+index f0a41d64804eab8195c389b457f6c0119d24a783..b531fa64af4ae625cd8b79c40d08b64b40a76d1e 100644
 --- a/services/network/network_context.h
 +++ b/services/network/network_context.h
-@@ -222,6 +222,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
+@@ -226,6 +226,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 e98063a71435ee8828f3b5a21b569325965f7c58..dd34e65752d54b193965b7e7fea2cae3
    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 4691fde53fd7d6ff6e89c55a7fec88d77b39701c..33021fcda6d2cbe46225ba8cf56e137ee7ef9912 100644
+index 88e78f46415d7a416534e88c13bb45b26cc856f3..6b14d8354375377526e141ee499a7583be3f22b0 100644
 --- a/services/network/public/mojom/network_context.mojom
 +++ b/services/network/public/mojom/network_context.mojom
-@@ -912,6 +912,9 @@ interface NetworkContext {
+@@ -932,6 +932,9 @@ interface NetworkContext {
    SetNetworkConditions(mojo_base.mojom.UnguessableToken throttling_profile_id,
                         NetworkConditions? conditions);
  
@@ -77,10 +77,10 @@ index 4691fde53fd7d6ff6e89c55a7fec88d77b39701c..33021fcda6d2cbe46225ba8cf56e137e
    SetAcceptLanguage(string new_accept_language);
  
 diff --git a/services/network/test/test_network_context.h b/services/network/test/test_network_context.h
-index 4fe68bb40d8e009e9765ed884bbf898a10b86124..a84cf0a1b07751bbcad9b193a4a3a1683e0db80c 100644
+index f7f7e16c5bd6d85e3a65065a61df27d92f38ff1b..62161a5e54ddcbfd37c8ebfe631cb6d697b3d530 100644
 --- a/services/network/test/test_network_context.h
 +++ b/services/network/test/test_network_context.h
-@@ -98,6 +98,7 @@ class TestNetworkContext : public mojom::NetworkContext {
+@@ -99,6 +99,7 @@ class TestNetworkContext : public mojom::NetworkContext {
    void CloseIdleConnections(CloseIdleConnectionsCallback callback) override {}
    void SetNetworkConditions(const base::UnguessableToken& throttling_profile_id,
                              mojom::NetworkConditionsPtr conditions) override {}

+ 3 - 3
patches/chromium/feat_add_set_theme_source_to_allow_apps_to.patch

@@ -13,7 +13,7 @@ uses internally for things like menus and devtools.
 We can remove this patch once it has in some shape been upstreamed.
 
 diff --git a/ui/native_theme/native_theme.cc b/ui/native_theme/native_theme.cc
-index 5fd3bb3b60bda4449cc4743922758d62ee6decac..860b92c47f42d7517adb5e3370cc02d7e1c67b62 100644
+index a91c4e3fb94c19686f3325709b3003bf4998c538..20c9959ff47d2c4a83ff91e802a1336a4c37690f 100644
 --- a/ui/native_theme/native_theme.cc
 +++ b/ui/native_theme/native_theme.cc
 @@ -40,6 +40,8 @@ NativeTheme::NativeTheme()
@@ -26,7 +26,7 @@ index 5fd3bb3b60bda4449cc4743922758d62ee6decac..860b92c47f42d7517adb5e3370cc02d7
  }
  
 diff --git a/ui/native_theme/native_theme.h b/ui/native_theme/native_theme.h
-index ef45da79366c2e3ab242ec140989b407ac70dbb8..98ca8881b0b9f68a464e62f76589b29157126a86 100644
+index e479fc84f7013984fc53d18cad8812fbd43cb670..47fce78d2a55c7344297ba92b0083c01e3d1b72b 100644
 --- a/ui/native_theme/native_theme.h
 +++ b/ui/native_theme/native_theme.h
 @@ -429,6 +429,22 @@ class NATIVE_THEME_EXPORT NativeTheme {
@@ -52,7 +52,7 @@ index ef45da79366c2e3ab242ec140989b407ac70dbb8..98ca8881b0b9f68a464e62f76589b291
    // Returns a shared instance of the native theme that should be used for web
    // rendering. Do not use it in a normal application context (i.e. browser).
    // The returned object should not be deleted by the caller. This function is
-@@ -550,6 +566,8 @@ class NATIVE_THEME_EXPORT NativeTheme {
+@@ -553,6 +569,8 @@ class NATIVE_THEME_EXPORT NativeTheme {
    PreferredColorScheme preferred_color_scheme_ =
        PreferredColorScheme::kNoPreference;
  

+ 29 - 0
patches/chromium/fix_ambiguous_reference_to_data.patch

@@ -0,0 +1,29 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jeremy Apthorp <[email protected]>
+Date: Wed, 30 Oct 2019 16:26:29 -0700
+Subject: fix ambiguous reference to 'data'
+
+Upstreamed: https://chromium-review.googlesource.com/c/chromium/src/+/1891762
+
+diff --git a/base/containers/span.h b/base/containers/span.h
+index 2c402495a960f348275b7f925ca5dcdbf691ff7a..0faa4ad502d3982293f4faa50525a2340dbf2abd 100644
+--- a/base/containers/span.h
++++ b/base/containers/span.h
+@@ -498,7 +498,7 @@ template <size_t N,
+               decltype(base::data(std::declval<Container&>()))>,
+           typename = internal::EnableIfSpanCompatibleContainer<Container&, T>>
+ constexpr span<T, N> make_span(Container& container) noexcept {
+-  return span<T, N>(data(container), size(container));
++  return span<T, N>(base::data(container), base::size(container));
+ }
+ 
+ template <
+@@ -509,7 +509,7 @@ template <
+         decltype(base::data(std::declval<const Container&>()))>,
+     typename = internal::EnableIfSpanCompatibleContainer<const Container&, T>>
+ constexpr span<T, N> make_span(const Container& container) noexcept {
+-  return span<T, N>(data(container), size(container));
++  return span<T, N>(base::data(container), base::size(container));
+ }
+ 
+ template <int&... ExplicitArgumentBarrier, typename T, size_t X>

+ 3 - 3
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/content/utility/utility_service_factory.cc b/content/utility/utility_service_factory.cc
-index 9b0759ab820ddb0e2a9e609b88bbc1673607c4e3..2392fd01736550f404304df324da9d81dfb3d446 100644
+index 2c1c7f992f2a40509d2d8854fcd7a023d7e06b6d..4c3f2dc2e1e1bf4c06764c97f9be5b5331e311bb 100644
 --- a/content/utility/utility_service_factory.cc
 +++ b/content/utility/utility_service_factory.cc
-@@ -196,7 +196,7 @@ void UtilityServiceFactory::RunService(
+@@ -162,7 +162,7 @@ void UtilityServiceFactory::RunService(
  std::unique_ptr<service_manager::Service>
  UtilityServiceFactory::CreateAudioService(
      mojo::PendingReceiver<service_manager::mojom::Service> receiver) {
@@ -18,7 +18,7 @@ index 9b0759ab820ddb0e2a9e609b88bbc1673607c4e3..2392fd01736550f404304df324da9d81
 +#if defined(OS_MACOSX) && !defined(MAS_BUILD)
    // Don't connect to launch services when running sandboxed
    // (https://crbug.com/874785).
-   if (base::FeatureList::IsEnabled(
+   if (service_manager::IsAudioSandboxEnabled()) {
 diff --git a/sandbox/mac/system_services.cc b/sandbox/mac/system_services.cc
 index caa30bb378b30331f90057fe7ce3aec724104bf8..a766daa808495f7872051e129c6ad9f76f54e4fe 100644
 --- a/sandbox/mac/system_services.cc

+ 81 - 101
patches/chromium/frame_host_manager.patch

@@ -42,115 +42,95 @@ index 906a1ee4ac58b0744a32153bbaafeac4322a60e4..c90f4aead36cbf3767dc5094728963c2
    // another SiteInstance for the same site.
    void RegisterSiteInstance(SiteInstanceImpl* site_instance);
 diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc
-index b1be27659d80a3199242d43ec80ccd28a43059b1..f475ec2301011a0840e76dd0e8e40bf65fdf6106 100644
+index f7fc9cbc5edb0bfe1b3da0abd03b2d8565772607..7804e660e5d87f53d8661e36acaaf2fc0b52ec0e 100644
 --- a/content/browser/frame_host/render_frame_host_manager.cc
 +++ b/content/browser/frame_host/render_frame_host_manager.cc
-@@ -2250,6 +2250,21 @@ bool RenderFrameHostManager::InitRenderView(
+@@ -2126,6 +2126,16 @@ bool RenderFrameHostManager::InitRenderView(
  scoped_refptr<SiteInstance>
  RenderFrameHostManager::GetSiteInstanceForNavigationRequest(
      NavigationRequest* request) {
-+  BrowserContext* browser_context = nullptr;
-+  scoped_refptr<SiteInstanceImpl> candidate_site_instance;
-+  if (!GetContentClient()->browser()->CanUseCustomSiteInstance()) {
-+    browser_context =
-+        delegate_->GetControllerForRenderManager().GetBrowserContext();
-+    // If the navigation can swap SiteInstances, compute the SiteInstance it
-+    // should use.
-+    // TODO(clamy): We should also consider as a candidate SiteInstance the
-+    // speculative SiteInstance that was computed on redirects.
-+    candidate_site_instance =
-+        speculative_render_frame_host_
-+            ? speculative_render_frame_host_->GetSiteInstance()
-+            : nullptr;
-+  }
++  // Compute the SiteInstance that the navigation should use, which will be
++  // either the current SiteInstance or a new one.
++  //
++  // TODO(clamy): We should also consider as a candidate SiteInstance the
++  // speculative SiteInstance that was computed on redirects.
++  SiteInstanceImpl* candidate_site_instance =
++      speculative_render_frame_host_
++          ? speculative_render_frame_host_->GetSiteInstance()
++          : nullptr;
 +
    SiteInstance* current_site_instance = render_frame_host_->GetSiteInstance();
  
    // All children of MHTML documents must be MHTML documents. They all live in
-@@ -2293,6 +2308,59 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest(
-                                               request->common_params().url);
-     no_renderer_swap_allowed |=
-         request->from_begin_navigation() && !can_renderer_initiate_transfer;
-+
-+    if (!GetContentClient()->browser()->CanUseCustomSiteInstance()) {
-+      bool has_navigation_started = request->state() != NavigationRequest::NOT_STARTED;
-+      bool has_response_started =
-+          (request->state() == NavigationRequest::RESPONSE_STARTED ||
-+          request->state() == NavigationRequest::FAILED) &&
-+          !speculative_render_frame_host_;
-+      // Gives user a chance to choose a custom site instance.
-+      SiteInstance* affinity_site_instance = nullptr;
-+      scoped_refptr<SiteInstance> overriden_site_instance;
-+      bool should_register_site_instance = false;
-+      ContentBrowserClient::SiteInstanceForNavigationType siteInstanceType =
-+          GetContentClient()->browser()->ShouldOverrideSiteInstanceForNavigation(
-+              current_frame_host(), speculative_frame_host(), browser_context,
-+              request->common_params().url, has_navigation_started,
-+              has_response_started, &affinity_site_instance);
-+      switch (siteInstanceType) {
-+        case ContentBrowserClient::SiteInstanceForNavigationType::
-+            FORCE_CANDIDATE_OR_NEW:
-+          overriden_site_instance =
-+              candidate_site_instance
-+                  ? candidate_site_instance
-+                  : current_site_instance->CreateRelatedSiteInstance(
-+                                              request->common_params().url);
-+          should_register_site_instance = true;
-+          break;
-+        case ContentBrowserClient::SiteInstanceForNavigationType::FORCE_NEW:
-+          overriden_site_instance = current_site_instance->CreateRelatedSiteInstance(
-+              request->common_params().url);
-+          should_register_site_instance = true;
-+          break;
-+        case ContentBrowserClient::SiteInstanceForNavigationType::FORCE_CURRENT:
-+          overriden_site_instance = render_frame_host_->GetSiteInstance();
-+          break;
-+        case ContentBrowserClient::SiteInstanceForNavigationType::FORCE_AFFINITY:
-+          DCHECK(affinity_site_instance);
-+          overriden_site_instance =
-+              scoped_refptr<SiteInstance>(affinity_site_instance);
-+          break;
-+        case ContentBrowserClient::SiteInstanceForNavigationType::ASK_CHROMIUM:
-+          DCHECK(!affinity_site_instance);
-+          break;
-+        default:
-+          break;
-+      }
-+      if (overriden_site_instance) {
-+        if (should_register_site_instance) {
-+          GetContentClient()->browser()->RegisterPendingSiteInstance(
-+              render_frame_host_.get(), overriden_site_instance.get());
-+        }
-+        return overriden_site_instance;
-+      }
-+    }
-   } else {
-     // Subframe navigations will use the current renderer, unless specifically
-     // allowed to swap processes.
-@@ -2304,23 +2372,28 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest(
-   if (no_renderer_swap_allowed && !should_swap_for_error_isolation)
-     return scoped_refptr<SiteInstance>(current_site_instance);
- 
-+  if (GetContentClient()->browser()->CanUseCustomSiteInstance()) {
-   // If the navigation can swap SiteInstances, compute the SiteInstance it
-   // should use.
+@@ -2145,10 +2155,61 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest(
+   //
    // TODO(clamy): We should also consider as a candidate SiteInstance the
    // speculative SiteInstance that was computed on redirects.
 -  SiteInstanceImpl* candidate_site_instance =
-+  candidate_site_instance =
-       speculative_render_frame_host_
-           ? speculative_render_frame_host_->GetSiteInstance()
-           : nullptr;
+-      speculative_render_frame_host_
+-          ? speculative_render_frame_host_->GetSiteInstance()
+-          : nullptr;
++  if (!GetContentClient()->browser()->CanUseCustomSiteInstance() &&
++      frame_tree_node_->IsMainFrame()) {
++    BrowserContext* browser_context =
++        delegate_->GetControllerForRenderManager().GetBrowserContext();
++    bool has_navigation_started = request->state() != NavigationRequest::NOT_STARTED;
++    bool has_response_started =
++        (request->state() == NavigationRequest::RESPONSE_STARTED ||
++        request->state() == NavigationRequest::FAILED) &&
++        !speculative_render_frame_host_;
++    // Gives user a chance to choose a custom site instance.
++    SiteInstance* affinity_site_instance = nullptr;
++    scoped_refptr<SiteInstance> overriden_site_instance;
++    bool should_register_site_instance = false;
++    ContentBrowserClient::SiteInstanceForNavigationType siteInstanceType =
++        GetContentClient()->browser()->ShouldOverrideSiteInstanceForNavigation(
++            current_frame_host(), speculative_frame_host(), browser_context,
++            request->common_params().url, has_navigation_started,
++            has_response_started, &affinity_site_instance);
++    switch (siteInstanceType) {
++      case ContentBrowserClient::SiteInstanceForNavigationType::
++          FORCE_CANDIDATE_OR_NEW:
++        overriden_site_instance =
++            candidate_site_instance
++                ? candidate_site_instance
++                : current_site_instance->CreateRelatedSiteInstance(
++                                            request->common_params().url);
++        should_register_site_instance = true;
++        break;
++      case ContentBrowserClient::SiteInstanceForNavigationType::FORCE_NEW:
++        overriden_site_instance = current_site_instance->CreateRelatedSiteInstance(
++            request->common_params().url);
++        should_register_site_instance = true;
++        break;
++      case ContentBrowserClient::SiteInstanceForNavigationType::FORCE_CURRENT:
++        overriden_site_instance = render_frame_host_->GetSiteInstance();
++        break;
++      case ContentBrowserClient::SiteInstanceForNavigationType::FORCE_AFFINITY:
++        DCHECK(affinity_site_instance);
++        overriden_site_instance =
++            scoped_refptr<SiteInstance>(affinity_site_instance);
++        break;
++      case ContentBrowserClient::SiteInstanceForNavigationType::ASK_CHROMIUM:
++        DCHECK(!affinity_site_instance);
++        break;
++      default:
++        break;
++    }
++    if (overriden_site_instance) {
++      if (should_register_site_instance) {
++        GetContentClient()->browser()->RegisterPendingSiteInstance(
++            render_frame_host_.get(), overriden_site_instance.get());
++      }
++      return overriden_site_instance;
++    }
 +  }
  
    scoped_refptr<SiteInstance> dest_site_instance = GetSiteInstanceForNavigation(
-       request->common_params().url, request->source_site_instance(),
--      request->dest_site_instance(), candidate_site_instance,
-+      request->dest_site_instance(), candidate_site_instance.get(),
-       request->common_params().transition,
-       request->state() == NavigationRequest::FAILED,
+       request->common_params().url, request->GetSourceSiteInstance(),
+@@ -2158,6 +2219,9 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest(
        request->GetRestoreType() != RestoreType::NONE, request->is_view_source(),
-       was_server_redirect);
+       request->WasServerRedirect());
  
 +  GetContentClient()->browser()->RegisterPendingSiteInstance(
 +      render_frame_host_.get(), dest_site_instance.get());
@@ -159,10 +139,10 @@ index b1be27659d80a3199242d43ec80ccd28a43059b1..f475ec2301011a0840e76dd0e8e40bf6
  }
  
 diff --git a/content/browser/site_instance_impl.cc b/content/browser/site_instance_impl.cc
-index 2cee6bf52088a378a7c53343864d27aa78bdc106..4aca3c9724f8192a4f6e70e38473b408cadc6675 100644
+index ea72b3a9d57383a47c91795c11bd0b8fc2b92e55..2adb671d8c36ad22814b75c4be61fb3925dd2258 100644
 --- a/content/browser/site_instance_impl.cc
 +++ b/content/browser/site_instance_impl.cc
-@@ -368,6 +368,10 @@ bool SiteInstanceImpl::HasRelatedSiteInstance(const GURL& url) {
+@@ -360,6 +360,10 @@ bool SiteInstanceImpl::HasRelatedSiteInstance(const GURL& url) {
    return browsing_instance_->HasSiteInstance(url);
  }
  
@@ -174,10 +154,10 @@ index 2cee6bf52088a378a7c53343864d27aa78bdc106..4aca3c9724f8192a4f6e70e38473b408
      const GURL& url) {
    return browsing_instance_->GetSiteInstanceForURL(
 diff --git a/content/browser/site_instance_impl.h b/content/browser/site_instance_impl.h
-index 1edb9fd6b0c383f291735dd1a952fcb7b17cc87f..23967f040eb346be265faa2a92562e1fed190b8d 100644
+index 9fc7e1710f3038e82d7fac6c3fb608cd3a7071ba..ad1e884811e8f7de4dea43f9b754d578e62b4d92 100644
 --- a/content/browser/site_instance_impl.h
 +++ b/content/browser/site_instance_impl.h
-@@ -83,6 +83,7 @@ class CONTENT_EXPORT SiteInstanceImpl final : public SiteInstance,
+@@ -84,6 +84,7 @@ class CONTENT_EXPORT SiteInstanceImpl final : public SiteInstance,
    BrowserContext* GetBrowserContext() override;
    const GURL& GetSiteURL() override;
    scoped_refptr<SiteInstance> GetRelatedSiteInstance(const GURL& url) override;
@@ -186,10 +166,10 @@ index 1edb9fd6b0c383f291735dd1a952fcb7b17cc87f..23967f040eb346be265faa2a92562e1f
    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 da7eca5f443e2ecdcb3f0819848735aafeb43a00..ee14a76bf705c41082c78f7f0fcce968acf3a3b7 100644
+index 3fdc443b408c3d8f7ffdabf6b010d5fc1ecd22d5..0d0d0f8f90fd830882558b3358d4a168fe5746b7 100644
 --- a/content/public/browser/content_browser_client.cc
 +++ b/content/public/browser/content_browser_client.cc
-@@ -44,6 +44,21 @@
+@@ -49,6 +49,21 @@
  
  namespace content {
  
@@ -212,10 +192,10 @@ index da7eca5f443e2ecdcb3f0819848735aafeb43a00..ee14a76bf705c41082c78f7f0fcce968
      const MainFunctionParams& parameters) {
    return nullptr;
 diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h
-index 07fa16953d6167a5a381b28a5da3c08a78de4306..fe6864b5ba4c77a6694510db2f1add479241b156 100644
+index 891b69d65de0e47719af23eb7047d22d10417019..425e7ab657a2de0ff11e6989a0dc34e11f883999 100644
 --- a/content/public/browser/content_browser_client.h
 +++ b/content/public/browser/content_browser_client.h
-@@ -205,8 +205,45 @@ struct WebPreferences;
+@@ -215,8 +215,45 @@ struct WebPreferences;
  // the observer interfaces.)
  class CONTENT_EXPORT ContentBrowserClient {
   public:

+ 5 - 5
patches/chromium/gin_enable_disable_v8_platform.patch

@@ -22,10 +22,10 @@ index 5f8aea7105a188846fd48d199bb4e0ca2017a0ab..2514f591208372d6654ff9c5be50a51a
    g_reference_table = reference_table;
  }
 diff --git a/gin/public/isolate_holder.h b/gin/public/isolate_holder.h
-index 413e6c5bcc74cd01730c5d4dc66eb92aaf7df8de..6c5d101fef97e880bee20d2f76e4b339a624eb6f 100644
+index f23af2d9738f3aa76e3a49301e1c3216ee4a64b4..ede178acabc63c3c33d6ce93efd5632bec50ba89 100644
 --- a/gin/public/isolate_holder.h
 +++ b/gin/public/isolate_holder.h
-@@ -91,7 +91,8 @@ class GIN_EXPORT IsolateHolder {
+@@ -88,7 +88,8 @@ class GIN_EXPORT IsolateHolder {
    // reference pointers. Otherwise, it can be nullptr.
    static void Initialize(ScriptMode mode,
                           v8::ArrayBuffer::Allocator* allocator,
@@ -36,10 +36,10 @@ index 413e6c5bcc74cd01730c5d4dc66eb92aaf7df8de..6c5d101fef97e880bee20d2f76e4b339
    v8::Isolate* isolate() { return isolate_; }
  
 diff --git a/gin/v8_initializer.cc b/gin/v8_initializer.cc
-index aab46a000c5e9081440298ecef4844ead7a40b28..2cee8dee3f70148570613dc17827da19b193ff62 100644
+index 9298a9c75540d40133a8fc58c128aea521f3a37c..9474b26eba6d9c41162a197e11d6a871a2dd0259 100644
 --- a/gin/v8_initializer.cc
 +++ b/gin/v8_initializer.cc
-@@ -204,12 +204,14 @@ enum LoadV8FileResult {
+@@ -190,12 +190,14 @@ enum LoadV8FileResult {
  }  // namespace
  
  // static
@@ -57,7 +57,7 @@ index aab46a000c5e9081440298ecef4844ead7a40b28..2cee8dee3f70148570613dc17827da19
    if (!base::FeatureList::IsEnabled(features::kV8OptimizeJavascript)) {
      // We avoid explicitly passing --opt if kV8OptimizeJavascript is enabled
 diff --git a/gin/v8_initializer.h b/gin/v8_initializer.h
-index aa3863abe0ea71fc26222564425f54ff80077719..fbf84c00174cc081d71aff8a16d51d2211614ec7 100644
+index 2918c6235688ee4eb7c43387296e6d24145c14aa..069c2c96d5067f0444dac3c6ce6d83f75e770129 100644
 --- a/gin/v8_initializer.h
 +++ b/gin/v8_initializer.h
 @@ -20,7 +20,8 @@ namespace gin {

+ 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 b/tools/gritsettings/resource_ids
-index be4d09028b1232594f90159fa11f67708a55afe8..9a3ae55c11a37ce00c19b63d882afd8c4548a6d9 100644
+index 99f5bdd4665b865b5bc559644b7b5a268f9bfb20..899d72e6f0802e31c4ae70f3e0a19880b2557e8f 100644
 --- a/tools/gritsettings/resource_ids
 +++ b/tools/gritsettings/resource_ids
-@@ -457,6 +457,11 @@
+@@ -466,6 +466,11 @@
      "includes": [28880],
    },
  

+ 15 - 16
patches/chromium/ignore_rc_check.patch

@@ -6,20 +6,19 @@ Subject: ignore_rc_check.patch
 Dont compare RC.exe and RC.py output.
 FIXME: It has to be reverted once the script is fixed.
 
-diff --git a/build/toolchain/win/tool_wrapper.py b/build/toolchain/win/tool_wrapper.py
-index 3834cf2c01a9c63bfe7a6fc9e7549930a5eda01c..454b831a37c13fdd2fe4d8953d60dab661386f9a 100644
---- a/build/toolchain/win/tool_wrapper.py
-+++ b/build/toolchain/win/tool_wrapper.py
-@@ -250,7 +250,11 @@ class WinTool(object):
-       if rc_exe_exit_code == 0:
-         import filecmp
-         # Strip "/fo" prefix.
--        assert filecmp.cmp(rc_res_output[3:], rcpy_res_output[3:])
-+        # ------
-+        # Temporarily ignore compares
-+        # Nightly builds use very large version numbers that fail this check
-+        # FIXME(zacwalk): Enable the assert.
-+        # assert filecmp.cmp(rc_res_output[3:], rcpy_res_output[3:])
-     return rc_exe_exit_code
+diff --git a/build/toolchain/win/rc/rc.py b/build/toolchain/win/rc/rc.py
+index 5c0442bef19334004647bf6e5dcbabcf399f2ec6..05fb71a1a18d35d361cac8eddece95b665f74ed8 100755
+--- a/build/toolchain/win/rc/rc.py
++++ b/build/toolchain/win/rc/rc.py
+@@ -234,7 +234,10 @@ def CompareToMsRcOutput(preprocessed_output, is_utf8, flags):
+   # Assert Microsoft rc.exe and rc.py produced identical .res files.
+   if rc_exe_exit_code == 0:
+     import filecmp
+-    assert filecmp.cmp(msrc_out, flags.output)
++    # Temporarily ignore compares
++    # Nightly builds use very large version numbers that fail this check
++    # FIXME(zacwalk): Enable the assert.
++    # assert filecmp.cmp(msrc_out, flags.output)
+   return rc_exe_exit_code
+ 
  
-   def ExecActionWrapper(self, arch, rspfile, *dirname):

+ 1 - 1
patches/chromium/isolate_holder.patch

@@ -35,7 +35,7 @@ index 2514f591208372d6654ff9c5be50a51a39a881cb..4dd48f6a871cccb374c58adacb8ad9a8
        new PerIsolateData(isolate_, allocator, access_mode_, task_runner));
    if (isolate_creation_mode == IsolateCreationMode::kCreateSnapshot) {
 diff --git a/gin/public/isolate_holder.h b/gin/public/isolate_holder.h
-index 6c5d101fef97e880bee20d2f76e4b339a624eb6f..576086de0de0a6fea9e2f2077af3aff18fd3138a 100644
+index ede178acabc63c3c33d6ce93efd5632bec50ba89..ffe7331cf1806417a32e66970f81b7797b9b80fc 100644
 --- a/gin/public/isolate_holder.h
 +++ b/gin/public/isolate_holder.h
 @@ -75,7 +75,8 @@ class GIN_EXPORT IsolateHolder {

+ 13 - 70
patches/chromium/libgtkui_export.patch

@@ -6,103 +6,46 @@ Subject: libgtkui_export.patch
 Export libgtkui symbols for the GN component build.
 
 diff --git a/chrome/browser/ui/libgtkui/gtk_util.h b/chrome/browser/ui/libgtkui/gtk_util.h
-index e0ab34ca088e65b97ea6ce19c765e514acda760f..8c742d93ffabbd9795f9ba021b23c972e66eaec3 100644
+index c9712cd531c0e2114103bdf3f4cba3320b75c331..7fd8d177cec78e733c765097dcc0b9a65ed350ee 100644
 --- a/chrome/browser/ui/libgtkui/gtk_util.h
 +++ b/chrome/browser/ui/libgtkui/gtk_util.h
-@@ -11,6 +11,7 @@
+@@ -8,6 +8,7 @@
+ #include <gtk/gtk.h>
+ #include <string>
+ 
++#include "base/component_export.h"
  #include "ui/base/glib/scoped_gobject.h"
  #include "ui/native_theme/native_theme.h"
  #include "ui/views/window/frame_buttons.h"
-+#include "chrome/browser/ui/libgtkui/libgtkui_export.h"
- 
- typedef union _GdkEvent GdkEvent;
- 
-@@ -36,10 +37,10 @@ namespace libgtkui {
+@@ -34,11 +35,11 @@ namespace libgtkui {
  
  extern const color_utils::HSL kDefaultTintFrameIncognito;
  
 -void GtkInitFromCommandLine(const base::CommandLine& command_line);
-+LIBGTKUI_EXPORT void GtkInitFromCommandLine(const base::CommandLine& command_line);
- 
- // Returns the name of the ".desktop" file associated with our running process.
--std::string GetDesktopName(base::Environment* env);
-+LIBGTKUI_EXPORT std::string GetDesktopName(base::Environment* env);
- 
- GdkModifierType GetGdkModifierForAccelerator(
-     const ui::Accelerator& accelerator);
-@@ -52,7 +53,7 @@ void TurnButtonBlue(GtkWidget* button);
++COMPONENT_EXPORT(LIBGTKUI) void GtkInitFromCommandLine(const base::CommandLine& command_line);
  
  // Sets |dialog| as transient for |parent|, which will keep it on top and center
  // it above |parent|. Do nothing if |parent| is nullptr.
 -void SetGtkTransientForAura(GtkWidget* dialog, aura::Window* parent);
-+LIBGTKUI_EXPORT void SetGtkTransientForAura(GtkWidget* dialog, aura::Window* parent);
++COMPONENT_EXPORT(LIBGTKUI) void SetGtkTransientForAura(GtkWidget* dialog, aura::Window* parent);
  
  // Gets the transient parent aura window for |dialog|.
  aura::Window* GetAuraTransientParent(GtkWidget* dialog);
-@@ -158,7 +159,7 @@ void ApplyCssToContext(GtkStyleContext* context, const std::string& css);
+@@ -143,7 +144,7 @@ void ApplyCssToContext(GtkStyleContext* context, const std::string& css);
  
  // Get the 'color' property from the style context created by
  // GetStyleContextFromCss(|css_selector|).
 -SkColor GetFgColor(const std::string& css_selector);
-+LIBGTKUI_EXPORT SkColor GetFgColor(const std::string& css_selector);
++COMPONENT_EXPORT(LIBGTKUI) SkColor GetFgColor(const std::string& css_selector);
  
  ScopedCssProvider GetCssProvider(const std::string& css);
  
-@@ -171,7 +172,7 @@ void RenderBackground(const gfx::Size& size,
+@@ -156,7 +157,7 @@ void RenderBackground(const gfx::Size& size,
  // Renders a background from the style context created by
  // GetStyleContextFromCss(|css_selector|) into a 24x24 bitmap and
  // returns the average color.
 -SkColor GetBgColor(const std::string& css_selector);
-+LIBGTKUI_EXPORT SkColor GetBgColor(const std::string& css_selector);
++COMPONENT_EXPORT(LIBGTKUI) SkColor GetBgColor(const std::string& css_selector);
  
  // Renders the border from the style context created by
  // GetStyleContextFromCss(|css_selector|) into a 24x24 bitmap and
-diff --git a/chrome/browser/ui/libgtkui/skia_utils_gtk.h b/chrome/browser/ui/libgtkui/skia_utils_gtk.h
-index bd6ed68a11b0b6c08962f688c799bd0f6b8a8d0e..b1184475e0ab9f381dc3c78b1092e2e0ec59d60b 100644
---- a/chrome/browser/ui/libgtkui/skia_utils_gtk.h
-+++ b/chrome/browser/ui/libgtkui/skia_utils_gtk.h
-@@ -8,6 +8,7 @@
- #include <gtk/gtk.h>
- #include <stdint.h>
- 
-+#include "chrome/browser/ui/libgtkui/libgtkui_export.h"
- #include "third_party/skia/include/core/SkColor.h"
- 
- #if !GTK_CHECK_VERSION(3, 90, 0)
-@@ -48,7 +49,7 @@ const SkBitmap GdkPixbufToImageSkia(GdkPixbuf* pixbuf);
- // Convert and copy a SkBitmap to a GdkPixbuf. NOTE: this uses BGRAToRGBA, so
- // it is an expensive operation.  The returned GdkPixbuf will have a refcount of
- // 1, and the caller is responsible for unrefing it when done.
--GdkPixbuf* GdkPixbufFromSkBitmap(const SkBitmap& bitmap);
-+LIBGTKUI_EXPORT GdkPixbuf* GdkPixbufFromSkBitmap(const SkBitmap& bitmap);
- 
- }  // namespace libgtkui
- 
-diff --git a/chrome/browser/ui/libgtkui/unity_service.h b/chrome/browser/ui/libgtkui/unity_service.h
-index 8d67e1460837c7f8adb151adea131cc6440659a3..95fbb27b6a81e4d73d239e94f5105078a936b5af 100644
---- a/chrome/browser/ui/libgtkui/unity_service.h
-+++ b/chrome/browser/ui/libgtkui/unity_service.h
-@@ -5,18 +5,20 @@
- #ifndef CHROME_BROWSER_UI_LIBGTKUI_UNITY_SERVICE_H_
- #define CHROME_BROWSER_UI_LIBGTKUI_UNITY_SERVICE_H_
- 
-+#include "chrome/browser/ui/libgtkui/libgtkui_export.h"
-+
- namespace unity {
- 
- // Returns whether unity is currently running.
--bool IsRunning();
-+LIBGTKUI_EXPORT bool IsRunning();
- 
- // If unity is running, sets the download counter in the dock icon. Any value
- // other than 0 displays the badge.
--void SetDownloadCount(int count);
-+LIBGTKUI_EXPORT void SetDownloadCount(int count);
- 
- // If unity is running, sets the download progress bar in the dock icon. Any
- // value between 0.0 and 1.0 (exclusive) shows the progress bar.
--void SetProgressFraction(float percentage);
-+LIBGTKUI_EXPORT void SetProgressFraction(float percentage);
- 
- }  // namespace unity
- 

+ 5 - 5
patches/chromium/mas-cgdisplayusesforcetogray.patch

@@ -6,13 +6,13 @@ Subject: mas-cgdisplayusesforcetogray.patch
 Removes usage of the CGDisplayUsesForceToGray private API.
 
 diff --git a/ui/display/mac/screen_mac.mm b/ui/display/mac/screen_mac.mm
-index 85545ec7eaa6494fe542ee14e6f3e29ffa7d693e..bf352f9a6f087c28b6ce207bd0e5c09753ffb9cf 100644
+index 95675ad6ddf61e3809833894f0962908d12be4ff..8cd379bb3d10e88c95902896684d443366c759c4 100644
 --- a/ui/display/mac/screen_mac.mm
 +++ b/ui/display/mac/screen_mac.mm
-@@ -108,7 +108,17 @@ Display BuildDisplayForScreen(NSScreen* screen) {
- 
-   display.set_color_depth(NSBitsPerPixelFromDepth([screen depth]));
-   display.set_depth_per_component(NSBitsPerSampleFromDepth([screen depth]));
+@@ -116,7 +116,17 @@ Display BuildDisplayForScreen(NSScreen* screen) {
+       display.set_depth_per_component(Display::kHDR10BitsPerComponent);
+     }
+   }
 +#ifdef MAS_BUILD
 +  // This is equivalent to the CGDisplayUsesForceToGray() API as at 2018-08-06,
 +  // but avoids usage of the private API.

+ 0 - 23
patches/chromium/mas-lssetapplicationlaunchservicesserverconnectionstatus.patch

@@ -1,23 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Jeremy Apthorp <[email protected]>
-Date: Thu, 20 Sep 2018 17:49:34 -0700
-Subject: mas-lssetapplicationlaunchservicesserverconnectionstatus.patch
-
-Removes usage of the _LSSetApplicationLaunchServicesServerConnectionStatus
-private API.
-
-diff --git a/content/gpu/gpu_main.cc b/content/gpu/gpu_main.cc
-index d257830f5943937a634aa85539ad654310579e2c..4373f508964cb1e9fd51c952122ac2f41fb35ae9 100644
---- a/content/gpu/gpu_main.cc
-+++ b/content/gpu/gpu_main.cc
-@@ -286,8 +286,10 @@ int GpuMain(const MainFunctionParams& parameters) {
-         std::make_unique<base::SingleThreadTaskExecutor>(
-             base::MessagePumpType::NS_RUNLOOP);
- 
-+#ifndef MAS_BUILD
-     // Tell LaunchServices to continue without a connection to the daemon.
-     _LSSetApplicationLaunchServicesServerConnectionStatus(0, nullptr);
-+#endif
- #else
-     main_thread_task_executor =
-         std::make_unique<base::SingleThreadTaskExecutor>(

+ 4 - 4
patches/chromium/mas_blink_no_private_api.patch

@@ -73,7 +73,7 @@ index 94afefcee81b87c05bf9b1199d90d3d4b5ea84a6..2ec7f04c71824b47de1ddbf1f0e8625d
  
  }  // namespace blink
 diff --git a/third_party/blink/renderer/core/paint/theme_painter_mac.mm b/third_party/blink/renderer/core/paint/theme_painter_mac.mm
-index e94235acb17335fbc78c606ff26036871117bd09..7c4bd19215c67f649636ae69b9a21b5c1ba21ecc 100644
+index 8f4ae94bc1d8188d041654c50511f3346eee79de..fa06f47abbff3dcda937bf0b794f616e4818cd30 100644
 --- a/third_party/blink/renderer/core/paint/theme_painter_mac.mm
 +++ b/third_party/blink/renderer/core/paint/theme_painter_mac.mm
 @@ -41,6 +41,7 @@
@@ -92,7 +92,7 @@ index e94235acb17335fbc78c606ff26036871117bd09..7c4bd19215c67f649636ae69b9a21b5c
  
  namespace blink {
  
-@@ -72,10 +74,12 @@ void _NSDrawCarbonThemeListBox(NSRect frame,
+@@ -95,10 +97,12 @@ void _NSDrawCarbonThemeListBox(NSRect frame,
    // behavior change while remaining a fragile solution.
    // https://bugs.chromium.org/p/chromium/issues/detail?id=658085#c3
    if (!use_ns_text_field_cell) {
@@ -105,9 +105,9 @@ index e94235acb17335fbc78c606ff26036871117bd09..7c4bd19215c67f649636ae69b9a21b5c
      return false;
    }
  
-@@ -161,10 +165,12 @@ void _NSDrawCarbonThemeListBox(NSRect frame,
-                                     const PaintInfo& paint_info,
+@@ -186,10 +190,12 @@ void _NSDrawCarbonThemeListBox(NSRect frame,
                                      const IntRect& r) {
+   ScopedColorSchemeAppearance appearance(style.UsedColorScheme());
    LocalCurrentGraphicsContext local_context(paint_info.context, r);
 +#ifndef MAS_BUILD
    _NSDrawCarbonThemeListBox(

+ 36 - 20
patches/chromium/mas_no_private_api.patch

@@ -50,10 +50,26 @@ index 743d1364bcd13e24ecbe5ced730161d15b8c3e93..a5529ac8841b79f230f0fa8eae2b3cb2
  // 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 5bdcea914780468d93b55b2e89dc3628a683f85c..0358f557432590ed48f9cd9be868742069dafc72 100644
+index 2851641d0219164185567a100c2c19d49274c233..778da01c7eaf11ef954e213a5a6ecb5e53f3eb42 100644
 --- a/content/browser/accessibility/browser_accessibility_cocoa.mm
 +++ b/content/browser/accessibility/browser_accessibility_cocoa.mm
-@@ -229,6 +229,7 @@
+@@ -207,6 +207,7 @@
+ NSString* const NSAccessibilityLengthForTextMarkerRangeParameterizedAttribute =
+     @"AXLengthForTextMarkerRange";
+ 
++#ifndef MAS_BUILD
+ // Private attributes that can be used for testing text markers, e.g. in dump
+ // tree tests.
+ NSString* const
+@@ -218,6 +219,7 @@
+ NSString* const
+     NSAccessibilityTextMarkerNodeDebugDescriptionParameterizedAttribute =
+         @"AXTextMarkerNodeDebugDescription";
++#endif        
+ 
+ // Other private attributes.
+ NSString* const NSAccessibilitySelectTextWithCriteriaParameterizedAttribute =
+@@ -241,6 +243,7 @@
  // VoiceOver uses -1 to mean "no limit" for AXResultsLimit.
  const int kAXResultsLimitNoLimit = -1;
  
@@ -61,7 +77,7 @@ index 5bdcea914780468d93b55b2e89dc3628a683f85c..0358f557432590ed48f9cd9be8687420
  extern "C" {
  
  // The following are private accessibility APIs required for cursor navigation
-@@ -468,6 +469,7 @@ void AddMisspelledTextAttributes(const AXPlatformRange& ax_range,
+@@ -480,6 +483,7 @@ void AddMisspelledTextAttributes(const AXPlatformRange& ax_range,
    AddMisspelledTextAttributes(ax_range, attributed_text);
    return attributed_text;
  }
@@ -69,7 +85,7 @@ index 5bdcea914780468d93b55b2e89dc3628a683f85c..0358f557432590ed48f9cd9be8687420
  
  // Returns an autoreleased copy of the AXNodeData's attribute.
  NSString* NSStringForStringAttribute(BrowserAccessibility* browserAccessibility,
-@@ -735,7 +737,9 @@ + (void)initialize {
+@@ -748,7 +752,9 @@ + (void)initialize {
        {NSAccessibilityEditableAncestorAttribute, @"editableAncestor"},
        {NSAccessibilityElementBusyAttribute, @"elementBusy"},
        {NSAccessibilityEnabledAttribute, @"enabled"},
@@ -79,7 +95,7 @@ index 5bdcea914780468d93b55b2e89dc3628a683f85c..0358f557432590ed48f9cd9be8687420
        {NSAccessibilityExpandedAttribute, @"expanded"},
        {NSAccessibilityFocusableAncestorAttribute, @"focusableAncestor"},
        {NSAccessibilityFocusedAttribute, @"focused"},
-@@ -747,8 +751,10 @@ + (void)initialize {
+@@ -760,8 +766,10 @@ + (void)initialize {
        {NSAccessibilityHighestEditableAncestorAttribute,
         @"highestEditableAncestor"},
        {NSAccessibilityIndexAttribute, @"index"},
@@ -90,7 +106,7 @@ index 5bdcea914780468d93b55b2e89dc3628a683f85c..0358f557432590ed48f9cd9be8687420
        {NSAccessibilityInvalidAttribute, @"invalid"},
        {NSAccessibilityIsMultiSelectableAttribute, @"isMultiSelectable"},
        {NSAccessibilityLanguageAttribute, @"language"},
-@@ -770,13 +776,17 @@ + (void)initialize {
+@@ -783,13 +791,17 @@ + (void)initialize {
        {NSAccessibilityRowsAttribute, @"rows"},
        // TODO(aboxhall): expose
        // NSAccessibilityServesAsTitleForUIElementsAttribute
@@ -108,7 +124,7 @@ index 5bdcea914780468d93b55b2e89dc3628a683f85c..0358f557432590ed48f9cd9be8687420
        {NSAccessibilitySizeAttribute, @"size"},
        {NSAccessibilitySortDirectionAttribute, @"sortDirection"},
        {NSAccessibilitySubroleAttribute, @"subrole"},
-@@ -1272,6 +1282,7 @@ - (NSNumber*)enabled {
+@@ -1285,6 +1297,7 @@ - (NSNumber*)enabled {
                                    ax::mojom::Restriction::kDisabled];
  }
  
@@ -116,7 +132,7 @@ index 5bdcea914780468d93b55b2e89dc3628a683f85c..0358f557432590ed48f9cd9be8687420
  // Returns a text marker that points to the last character in the document that
  // can be selected with VoiceOver.
  - (id)endTextMarker {
-@@ -1282,6 +1293,7 @@ - (id)endTextMarker {
+@@ -1295,6 +1308,7 @@ - (id)endTextMarker {
    BrowserAccessibilityPositionInstance position = root->CreatePositionAt(0);
    return CreateTextMarker(position->CreatePositionAtEndOfAnchor());
  }
@@ -124,7 +140,7 @@ index 5bdcea914780468d93b55b2e89dc3628a683f85c..0358f557432590ed48f9cd9be8687420
  
  - (NSNumber*)expanded {
    if (![self instanceActive])
-@@ -1427,6 +1439,8 @@ - (NSNumber*)index {
+@@ -1440,6 +1454,8 @@ - (NSNumber*)index {
    return nil;
  }
  
@@ -133,7 +149,7 @@ index 5bdcea914780468d93b55b2e89dc3628a683f85c..0358f557432590ed48f9cd9be8687420
  - (NSNumber*)insertionPointLineNumber {
    if (![self instanceActive])
      return nil;
-@@ -1449,6 +1463,7 @@ - (NSNumber*)insertionPointLineNumber {
+@@ -1462,6 +1478,7 @@ - (NSNumber*)insertionPointLineNumber {
                         caretPosition->AsTextPosition()->text_offset());
    return @(std::distance(lineBreaks.begin(), iterator));
  }
@@ -141,7 +157,7 @@ index 5bdcea914780468d93b55b2e89dc3628a683f85c..0358f557432590ed48f9cd9be8687420
  
  // Returns whether or not this node should be ignored in the
  // accessibility tree.
-@@ -2134,6 +2149,7 @@ - (NSArray*)selectedChildren {
+@@ -2147,6 +2164,7 @@ - (NSArray*)selectedChildren {
    return ret;
  }
  
@@ -149,7 +165,7 @@ index 5bdcea914780468d93b55b2e89dc3628a683f85c..0358f557432590ed48f9cd9be8687420
  - (NSString*)selectedText {
    if (![self instanceActive])
      return nil;
-@@ -2145,11 +2161,13 @@ - (NSString*)selectedText {
+@@ -2158,11 +2176,13 @@ - (NSString*)selectedText {
      return nil;
    return base::SysUTF16ToNSString(range.GetText());
  }
@@ -163,7 +179,7 @@ index 5bdcea914780468d93b55b2e89dc3628a683f85c..0358f557432590ed48f9cd9be8687420
  - (NSValue*)selectedTextRange {
    if (![self instanceActive])
      return nil;
-@@ -2170,12 +2188,15 @@ - (NSValue*)selectedTextRange {
+@@ -2183,12 +2203,15 @@ - (NSValue*)selectedTextRange {
    int selLength = range.GetText().length();
    return [NSValue valueWithRange:NSMakeRange(selStart, selLength)];
  }
@@ -179,7 +195,7 @@ index 5bdcea914780468d93b55b2e89dc3628a683f85c..0358f557432590ed48f9cd9be8687420
  
  - (NSValue*)size {
    if (![self instanceActive])
-@@ -2208,6 +2229,7 @@ - (NSString*)sortDirection {
+@@ -2221,6 +2244,7 @@ - (NSString*)sortDirection {
    return nil;
  }
  
@@ -187,7 +203,7 @@ index 5bdcea914780468d93b55b2e89dc3628a683f85c..0358f557432590ed48f9cd9be8687420
  // Returns a text marker that points to the first character in the document that
  // can be selected with VoiceOver.
  - (id)startTextMarker {
-@@ -2218,6 +2240,7 @@ - (id)startTextMarker {
+@@ -2231,6 +2255,7 @@ - (id)startTextMarker {
    BrowserAccessibilityPositionInstance position = root->CreatePositionAt(0);
    return CreateTextMarker(position->CreatePositionAtStartOfAnchor());
  }
@@ -195,7 +211,7 @@ index 5bdcea914780468d93b55b2e89dc3628a683f85c..0358f557432590ed48f9cd9be8687420
  
  // Returns a subrole based upon the role.
  - (NSString*)subrole {
-@@ -2509,11 +2532,13 @@ - (NSAttributedString*)attributedValueForRange:(NSRange)range {
+@@ -2522,11 +2547,13 @@ - (NSAttributedString*)attributedValueForRange:(NSRange)range {
    NSMutableAttributedString* attributedValue =
        [[[NSMutableAttributedString alloc] initWithString:value] autorelease];
  
@@ -209,7 +225,7 @@ index 5bdcea914780468d93b55b2e89dc3628a683f85c..0358f557432590ed48f9cd9be8687420
  
    return [attributedValue attributedSubstringFromRange:range];
  }
-@@ -2616,9 +2641,8 @@ - (id)accessibilityAttributeValue:(NSString*)attribute
+@@ -2629,9 +2656,8 @@ - (id)accessibilityAttributeValue:(NSString*)attribute
        return ToBrowserAccessibilityCocoa(cell);
    }
  
@@ -221,7 +237,7 @@ index 5bdcea914780468d93b55b2e89dc3628a683f85c..0358f557432590ed48f9cd9be8687420
      BrowserAccessibilityPositionInstance position =
          CreatePositionFromTextMarker(parameter);
      if (!position->IsNullPosition())
-@@ -2929,6 +2953,7 @@ AXPlatformRange range(std::move(lineStartPosition),
+@@ -2942,6 +2968,7 @@ AXPlatformRange range(std::move(lineStartPosition),
  
      return CreateTextMarker(root->CreatePositionAt(index));
    }
@@ -229,7 +245,7 @@ index 5bdcea914780468d93b55b2e89dc3628a683f85c..0358f557432590ed48f9cd9be8687420
  
    if ([attribute isEqualToString:
                       NSAccessibilityBoundsForRangeParameterizedAttribute]) {
-@@ -2962,6 +2987,7 @@ AXPlatformRange range(std::move(lineStartPosition),
+@@ -2975,6 +3002,7 @@ AXPlatformRange range(std::move(lineStartPosition),
      return nil;
    }
  
@@ -237,7 +253,7 @@ index 5bdcea914780468d93b55b2e89dc3628a683f85c..0358f557432590ed48f9cd9be8687420
    if ([attribute
            isEqualToString:
                NSAccessibilityLineTextMarkerRangeForTextMarkerParameterizedAttribute]) {
-@@ -3042,6 +3068,7 @@ AXPlatformRange range(position->CreatePreviousLineStartPosition(
+@@ -3081,6 +3109,7 @@ AXPlatformRange range(position->CreatePreviousLineStartPosition(
  
      return @(child->GetIndexInParent());
    }

+ 46 - 27
patches/chromium/network_service_allow_remote_certificate_verification_logic.patch

@@ -5,10 +5,10 @@ Subject: network_service_allow_remote_certificate_verification_logic.patch
 
 
 diff --git a/services/network/network_context.cc b/services/network/network_context.cc
-index 647fd0d633e868c5f06bbb97f03333e863075f06..b9a8a12b8abb386fec548a26e4686af2e3822b8c 100644
+index a7598ca37cdd671cbafb5b69efe5d8c2932e7cd3..144714a3a1e63bb891b86cba12a27de50be7f976 100644
 --- a/services/network/network_context.cc
 +++ b/services/network/network_context.cc
-@@ -90,6 +90,11 @@
+@@ -91,6 +91,11 @@
  #include "services/network/url_loader.h"
  #include "services/network/url_request_context_builder_mojo.h"
  
@@ -20,7 +20,7 @@ index 647fd0d633e868c5f06bbb97f03333e863075f06..b9a8a12b8abb386fec548a26e4686af2
  #if BUILDFLAG(IS_CT_SUPPORTED)
  #include "components/certificate_transparency/chrome_ct_policy_enforcer.h"
  #include "components/certificate_transparency/chrome_require_ct_delegate.h"
-@@ -319,6 +324,79 @@ std::string HashesToBase64String(const net::HashValueVector& hashes) {
+@@ -325,6 +330,79 @@ std::string HashesToBase64String(const net::HashValueVector& hashes) {
  
  }  // namespace
  
@@ -100,7 +100,7 @@ index 647fd0d633e868c5f06bbb97f03333e863075f06..b9a8a12b8abb386fec548a26e4686af2
  constexpr uint32_t NetworkContext::kMaxOutstandingRequestsPerProcess;
  
  NetworkContext::PendingCertVerify::PendingCertVerify() = default;
-@@ -474,6 +552,13 @@ void NetworkContext::SetClient(
+@@ -477,6 +555,13 @@ void NetworkContext::SetClient(
    client_.Bind(std::move(client));
  }
  
@@ -112,21 +112,40 @@ index 647fd0d633e868c5f06bbb97f03333e863075f06..b9a8a12b8abb386fec548a26e4686af2
 +}
 +
  void NetworkContext::CreateURLLoaderFactory(
-     mojom::URLLoaderFactoryRequest request,
+     mojo::PendingReceiver<mojom::URLLoaderFactory> receiver,
      mojom::URLLoaderFactoryParamsPtr params) {
-@@ -1552,12 +1637,19 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext() {
-                   net::SystemTrustStoreProvider::CreateDefaultForSSL())));
+@@ -1545,6 +1630,7 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext() {
+       base::CommandLine::ForCurrentProcess();
+ 
+   std::unique_ptr<net::CertVerifier> cert_verifier;
++  std::unique_ptr<net::CertVerifier> temp_verifier;
+   if (g_cert_verifier_for_testing) {
+     cert_verifier = std::make_unique<WrappedTestingCertVerifier>();
+   } else {
+@@ -1592,8 +1678,8 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext() {
+     }
+ #endif
+ #if BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED)
+-    if (!cert_verifier) {
+-      cert_verifier = std::make_unique<net::CachingCertVerifier>(
++    if (!temp_verifier) {
++      temp_verifier = std::make_unique<net::CachingCertVerifier>(
+           std::make_unique<net::CoalescingCertVerifier>(
+               std::make_unique<net::MultiThreadedCertVerifier>(
+                   params_->use_builtin_cert_verifier
+@@ -1603,12 +1689,19 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext() {
+                             cert_net_fetcher_))));
      }
  #endif
 -    if (!cert_verifier)
 -      cert_verifier = net::CertVerifier::CreateDefault(cert_net_fetcher_);
-+    if (!cert_verifier) {
-+      auto mt_verifier = std::make_unique<net::MultiThreadedCertVerifier>(
-+              net::CertVerifyProc::CreateDefault(std::move(cert_net_fetcher_)));
-+      auto remote_cert_verifier = std::make_unique<RemoteCertVerifier>(std::move(mt_verifier));
-+      remote_cert_verifier_ = remote_cert_verifier.get();
-+      cert_verifier = std::make_unique<net::CachingCertVerifier>(std::move(remote_cert_verifier));
++    if (!temp_verifier) {
++      temp_verifier = std::make_unique<net::MultiThreadedCertVerifier>(
++          net::CertVerifyProc::CreateSystemVerifyProc(std::move(cert_net_fetcher_)));
 +    }
++    auto remote_cert_verifier = std::make_unique<RemoteCertVerifier>(std::move(temp_verifier));
++    remote_cert_verifier_ = remote_cert_verifier.get();
++    cert_verifier = std::make_unique<net::CachingCertVerifier>(std::move(remote_cert_verifier));
    }
  
 -  builder.SetCertVerifier(IgnoreErrorsCertVerifier::MaybeWrapCertVerifier(
@@ -139,10 +158,10 @@ index 647fd0d633e868c5f06bbb97f03333e863075f06..b9a8a12b8abb386fec548a26e4686af2
    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 98c968120b4ccedcdf321a365db038954095ae7a..e98063a71435ee8828f3b5a21b569325965f7c58 100644
+index 696144daa4165c33287c8d982dbcbe861871302e..f0a41d64804eab8195c389b457f6c0119d24a783 100644
 --- a/services/network/network_context.h
 +++ b/services/network/network_context.h
-@@ -81,6 +81,7 @@ class DomainReliabilityMonitor;
+@@ -84,6 +84,7 @@ class DomainReliabilityMonitor;
  
  namespace network {
  class CertVerifierWithTrustAnchors;
@@ -150,16 +169,16 @@ index 98c968120b4ccedcdf321a365db038954095ae7a..e98063a71435ee8828f3b5a21b569325
  class CookieManager;
  class ExpectCTReporter;
  class HostResolver;
-@@ -170,6 +171,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
-   // mojom::NetworkContext implementation:
-   void SetClient(
-       mojo::PendingRemote<mojom::NetworkContextClient> client) override;
+@@ -176,6 +177,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
+   void CreateURLLoaderFactory(
+       mojo::PendingReceiver<mojom::URLLoaderFactory> receiver,
+       mojom::URLLoaderFactoryParamsPtr params) override;
 +  void SetCertVerifierClient(
 +      mojo::PendingRemote<mojom::CertVerifierClient> client) override;
-   void CreateURLLoaderFactory(mojom::URLLoaderFactoryRequest request,
-                               mojom::URLLoaderFactoryParamsPtr params) override;
    void ResetURLLoaderFactories() override;
-@@ -564,6 +567,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
+   void GetCookieManager(
+       mojo::PendingReceiver<mojom::CookieManager> receiver) override;
+@@ -586,6 +589,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
    std::unique_ptr<network::NSSTempCertsCacheChromeOS> nss_temp_certs_cache_;
  #endif
  
@@ -169,11 +188,11 @@ index 98c968120b4ccedcdf321a365db038954095ae7a..e98063a71435ee8828f3b5a21b569325
    // CertNetFetcher is not used by the current platform.
    scoped_refptr<net::CertNetFetcherImpl> cert_net_fetcher_;
 diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom
-index 322670fb32403266f25c9f49079a25ef90dc01e2..4691fde53fd7d6ff6e89c55a7fec88d77b39701c 100644
+index 8628bc8e055bf483c39b745bb63371f1e363817a..88e78f46415d7a416534e88c13bb45b26cc856f3 100644
 --- a/services/network/public/mojom/network_context.mojom
 +++ b/services/network/public/mojom/network_context.mojom
-@@ -168,6 +168,17 @@ interface TrustedURLLoaderHeaderClient {
-                   pending_receiver<TrustedHeaderClient> header_client);
+@@ -181,6 +181,17 @@ interface TrustedURLLoaderHeaderClient {
+       pending_receiver<TrustedHeaderClient> header_client);
  };
  
 +interface CertVerifierClient {
@@ -190,7 +209,7 @@ index 322670fb32403266f25c9f49079a25ef90dc01e2..4691fde53fd7d6ff6e89c55a7fec88d7
  // Parameters for constructing a network context.
  struct NetworkContextParams {
    // Name used by memory tools to identify the context.
-@@ -740,6 +751,9 @@ interface NetworkContext {
+@@ -760,6 +771,9 @@ interface NetworkContext {
    // Sets a client for this network context.
    SetClient(pending_remote<NetworkContextClient> client);
  
@@ -198,5 +217,5 @@ index 322670fb32403266f25c9f49079a25ef90dc01e2..4691fde53fd7d6ff6e89c55a7fec88d7
 +  SetCertVerifierClient(pending_remote<CertVerifierClient>? client);
 +
    // Creates a new URLLoaderFactory with the given |params|.
-   CreateURLLoaderFactory(URLLoaderFactory& url_loader_factory,
+   CreateURLLoaderFactory(pending_receiver<URLLoaderFactory> url_loader_factory,
                           URLLoaderFactoryParams params);

+ 1 - 1
patches/chromium/no_cache_storage_check.patch

@@ -7,7 +7,7 @@ Do not check for unique origin in CacheStorage, in Electron we may have
 scripts running without an origin.
 
 diff --git a/content/browser/cache_storage/legacy/legacy_cache_storage.cc b/content/browser/cache_storage/legacy/legacy_cache_storage.cc
-index b1a4d62c9230fd11e74d4fa959b0d89f30a27e83..225c31ec025d73eb581dee9a05cb17cd70ee4be8 100644
+index 04d8efd155ffd10becd9e62ad0fafcc85eae6a25..d421eba832cbc090bf1de2b99509c0cb3c995973 100644
 --- a/content/browser/cache_storage/legacy/legacy_cache_storage.cc
 +++ b/content/browser/cache_storage/legacy/legacy_cache_storage.cc
 @@ -104,7 +104,7 @@ class LegacyCacheStorage::CacheLoader {

+ 6 - 6
patches/chromium/notification_provenance.patch

@@ -55,10 +55,10 @@ 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 ce997528ce2973b54dbbf965220cc30bcb19a094..e84b0b62d853b044e590a0c764f1b21ad3210886 100644
+index 951dc88b44e76b6736aa0ff30d548022486f0f6a..ea7f72b7aa05c31972e4abbdc6529ab044117b0b 100644
 --- a/content/browser/notifications/blink_notification_service_impl_unittest.cc
 +++ b/content/browser/notifications/blink_notification_service_impl_unittest.cc
-@@ -138,7 +138,7 @@ class BlinkNotificationServiceImplTest : public ::testing::Test {
+@@ -139,7 +139,7 @@ class BlinkNotificationServiceImplTest : public ::testing::Test {
  
      notification_service_ = std::make_unique<BlinkNotificationServiceImpl>(
          notification_context_.get(), &browser_context_,
@@ -68,10 +68,10 @@ index ce997528ce2973b54dbbf965220cc30bcb19a094..e84b0b62d853b044e590a0c764f1b21a
          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 2a447b73d763b7c91359f1b4550a002ff9e5e715..bd434393cf35605a8cc05d6fb96215cf76b5417a 100644
+index 9ada5345a004a761b6e12ac0259d61e9fd8de5e9..9c13bd9e7d2604ef72b28029a9733153e776754f 100644
 --- a/content/browser/notifications/platform_notification_context_impl.cc
 +++ b/content/browser/notifications/platform_notification_context_impl.cc
-@@ -207,12 +207,13 @@ void PlatformNotificationContextImpl::Shutdown() {
+@@ -208,12 +208,13 @@ void PlatformNotificationContextImpl::Shutdown() {
  }
  
  void PlatformNotificationContextImpl::CreateService(
@@ -108,10 +108,10 @@ index 4bf25bf1fa69f7d3869369172d375e2e489e62a1..f80ef2cecc8b111dc54e109646573a59
        mojo::PendingReceiver<blink::mojom::NotificationService> receiver);
  
 diff --git a/content/browser/renderer_interface_binders.cc b/content/browser/renderer_interface_binders.cc
-index 8030fd5e66fab694d3f3a54dcb4688c14dcba473..18f259bdd9b5340a50494311983646d9b9244469 100644
+index ca880850d5f538c6615fb8b3546d4726bf42b7f6..918448ace7c99bd406ff49d3903aeae98f4fc831 100644
 --- a/content/browser/renderer_interface_binders.cc
 +++ b/content/browser/renderer_interface_binders.cc
-@@ -135,7 +135,7 @@ void RendererInterfaceBinders::InitializeParameterizedBinderRegistry() {
+@@ -136,7 +136,7 @@ void RendererInterfaceBinders::InitializeParameterizedBinderRegistry() {
           RenderProcessHost* host, const url::Origin& origin) {
          static_cast<StoragePartitionImpl*>(host->GetStoragePartition())
              ->GetPlatformNotificationContext()

+ 2 - 2
patches/chromium/out_of_process_instance.patch

@@ -5,10 +5,10 @@ Subject: out_of_process_instance.patch
 
 
 diff --git a/pdf/out_of_process_instance.cc b/pdf/out_of_process_instance.cc
-index a3786a8397536bdcb247c6a0a0ea6db4b174eae8..ab7f2276f4254d1d4cd608fa9815345185737665 100644
+index 4fc9ee9db2679dc7a1e115350ac339e0a741d1ac..bd38200dc27422e575afe9b25063edf9f341031e 100644
 --- a/pdf/out_of_process_instance.cc
 +++ b/pdf/out_of_process_instance.cc
-@@ -479,7 +479,9 @@ bool OutOfProcessInstance::Init(uint32_t argc,
+@@ -486,7 +486,9 @@ bool OutOfProcessInstance::Init(uint32_t argc,
    std::string document_url = document_url_var.AsString();
    base::StringPiece document_url_piece(document_url);
    is_print_preview_ = IsPrintPreviewUrl(document_url_piece);

+ 9 - 9
patches/chromium/pepper_flash.patch

@@ -28,7 +28,7 @@ index 735da93c3cabb8c6139971295740ba14a30d1b69..533f53fbc42397608e3762e370cc935c
    // Non-owning pointer to the filter must outlive this class.
    explicit ChromeBrowserPepperHostFactory(content::BrowserPpapiHost* host);
 diff --git a/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc b/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc
-index 37245c48cacbc5db164c61e4499f34ee83e0fce7..0fef12892e965e319e45f5dd1a9c5c9fc606aa9a 100644
+index 4bb88c55a82a83cef8330ec8157b49d5adb097ce..48f4e385a57eb0e00c90488fbf052900b6884775 100644
 --- a/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc
 +++ b/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc
 @@ -7,10 +7,12 @@
@@ -52,8 +52,8 @@ index 37245c48cacbc5db164c61e4499f34ee83e0fce7..0fef12892e965e319e45f5dd1a9c5c9f
    Profile* profile =
        Profile::FromBrowserContext(render_process_host->GetBrowserContext());
    HostContentSettingsMap* content_settings =
-@@ -70,5 +73,6 @@ int32_t PepperBrokerMessageFilter::OnIsAllowed(
-                                           std::string());
+@@ -68,5 +71,6 @@ int32_t PepperBrokerMessageFilter::OnIsAllowed(
+       std::string());
    if (setting == CONTENT_SETTING_ALLOW)
      return PP_OK;
 -  return PP_ERROR_FAILED;
@@ -61,7 +61,7 @@ index 37245c48cacbc5db164c61e4499f34ee83e0fce7..0fef12892e965e319e45f5dd1a9c5c9f
 +  return PP_OK;
  }
 diff --git a/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.cc b/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.cc
-index 91c1562d9894e57fd5c3abfde157127144b31a91..8f4caca848d649db9bd26a4ce37509b29865f3c1 100644
+index d45f9a3b3b03498e96344ec741797cd649197a39..a282955a9007974905daa8611bd68fdccdfe34af 100644
 --- a/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.cc
 +++ b/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.cc
 @@ -8,9 +8,11 @@
@@ -86,7 +86,7 @@ index 91c1562d9894e57fd5c3abfde157127144b31a91..8f4caca848d649db9bd26a4ce37509b2
      int render_process_id) {
 @@ -55,6 +58,7 @@ scoped_refptr<content_settings::CookieSettings> GetCookieSettings(
    }
-   return NULL;
+   return nullptr;
  }
 +#endif
  
@@ -258,7 +258,7 @@ index b9d2ce7f7f6837ee7b304daac82d21a3147c6faf..4d4b023d62d12b4d119acbfdee64f415
  
    base::WeakPtrFactory<PepperFlashDRMHost> weak_factory_{this};
 diff --git a/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc b/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc
-index 00db4e2fa2ac89d89ecd31174e192dcb17f3e912..df5a53c162059270ad673fffebbd432f6df0d212 100644
+index 0fa0fa341e93bd089ef2a22f74450af55db69f5b..9a6d8e5740d6ccede998efd3a96496acd9efabfb 100644
 --- a/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc
 +++ b/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc
 @@ -8,17 +8,21 @@
@@ -285,7 +285,7 @@ index 00db4e2fa2ac89d89ecd31174e192dcb17f3e912..df5a53c162059270ad673fffebbd432f
  #include "ppapi/host/host_message_context.h"
 @@ -27,12 +31,11 @@
  #include "ppapi/shared_impl/file_system_util.h"
- #include "storage/browser/fileapi/isolated_context.h"
+ #include "storage/browser/file_system/isolated_context.h"
  
 -#if BUILDFLAG(ENABLE_EXTENSIONS)
 +#if 0
@@ -358,11 +358,11 @@ index 00db4e2fa2ac89d89ecd31174e192dcb17f3e912..df5a53c162059270ad673fffebbd432f
  int32_t PepperIsolatedFileSystemMessageFilter::OpenPluginPrivateFileSystem(
      ppapi::host::HostMessageContext* context) {
 diff --git a/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.h b/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.h
-index 1d5ff1f6aa14812f2a6552f601900b03f3e3c8e7..5b6d0297c874146c21af37b983b2d8ee387b31ce 100644
+index b36248debee4f5e0503e7611f7d1c47d59650f5b..7af31ee0d2cbb4c8fc7cd41c356305d6476815c5 100644
 --- a/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.h
 +++ b/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.h
 @@ -20,7 +20,9 @@
- #include "storage/browser/fileapi/isolated_context.h"
+ #include "storage/browser/file_system/isolated_context.h"
  #include "url/gurl.h"
  
 +#if 0

+ 84 - 84
patches/chromium/printing.patch

@@ -11,27 +11,29 @@ 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_worker.cc b/chrome/browser/printing/print_job_worker.cc
-index 13f9d7af3ae796ecec3a9189aa59f4b20171fd7a..9c35b294340cce070a9f428dac6aa587c93ccc6c 100644
+index ab32d5475a0e269d32f6ab71f7dc82aa9e02035a..9ada750416f02d23c2f9faae0c41e4a7541183f7 100644
 --- a/chrome/browser/printing/print_job_worker.cc
 +++ b/chrome/browser/printing/print_job_worker.cc
-@@ -21,12 +21,12 @@
+@@ -21,7 +21,6 @@
  #include "chrome/browser/browser_process.h"
  #include "chrome/browser/chrome_notification_types.h"
  #include "chrome/browser/printing/print_job.h"
 -#include "chrome/grit/generated_resources.h"
+ #include "components/crash/core/common/crash_keys.h"
  #include "content/public/browser/browser_task_traits.h"
  #include "content/public/browser/browser_thread.h"
- #include "content/public/browser/notification_service.h"
+@@ -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"
 +#include "electron/grit/electron_resources.h"
  #include "printing/print_job_constants.h"
  #include "printing/printed_document.h"
  #include "printing/printing_utils.h"
-@@ -203,9 +203,14 @@ void PrintJobWorker::SetSettingsFromPOD(
- void PrintJobWorker::UpdatePrintSettings(base::Value new_settings,
-                                          SettingsCallback callback) {
-   DCHECK_CURRENTLY_ON(BrowserThread::UI);
+@@ -221,9 +221,14 @@ void PrintJobWorker::UpdatePrintSettings(base::Value new_settings,
+         print_backend->GetPrinterDriverInfo(printer_name));
+   }
+ 
 -  PrintingContext::Result result =
 -      printing_context_->UpdatePrintSettings(std::move(new_settings));
 -  GetSettingsDone(std::move(callback), result);
@@ -46,7 +48,7 @@ index 13f9d7af3ae796ecec3a9189aa59f4b20171fd7a..9c35b294340cce070a9f428dac6aa587
  }
  
  #if defined(OS_CHROMEOS)
-@@ -221,6 +226,13 @@ void PrintJobWorker::UpdatePrintSettingsFromPOD(
+@@ -239,6 +244,13 @@ void PrintJobWorker::UpdatePrintSettingsFromPOD(
  
  void PrintJobWorker::GetSettingsDone(SettingsCallback callback,
                                       PrintingContext::Result result) {
@@ -61,7 +63,7 @@ index 13f9d7af3ae796ecec3a9189aa59f4b20171fd7a..9c35b294340cce070a9f428dac6aa587
  }
  
 diff --git a/chrome/browser/printing/print_view_manager_base.cc b/chrome/browser/printing/print_view_manager_base.cc
-index 7d1e56b3b1a8691477598b0103e2c69c171ec2c8..980971e2b8dd143fde3376f17352f672f2c3a8ad 100644
+index 81cb954f02363c829947dde830f340a761c80a77..2a26bb6d5367337fa13da07cb07588684d1ea05a 100644
 --- a/chrome/browser/printing/print_view_manager_base.cc
 +++ b/chrome/browser/printing/print_view_manager_base.cc
 @@ -27,10 +27,7 @@
@@ -115,25 +117,28 @@ index 7d1e56b3b1a8691477598b0103e2c69c171ec2c8..980971e2b8dd143fde3376f17352f672
  }
  
  PrintViewManagerBase::~PrintViewManagerBase() {
-@@ -123,12 +126,14 @@ PrintViewManagerBase::~PrintViewManagerBase() {
+@@ -123,7 +126,8 @@ PrintViewManagerBase::~PrintViewManagerBase() {
    DisconnectFromCurrentPrintJob();
  }
  
 -bool PrintViewManagerBase::PrintNow(content::RenderFrameHost* rfh) {
 +bool PrintViewManagerBase::PrintNow(content::RenderFrameHost* rfh,
-+                                    std::unique_ptr<IPC::Message> message,
 +                                    CompletionCallback callback) {
    DisconnectFromCurrentPrintJob();
  
+   // Don't print / print preview interstitials or crashed tabs.
+@@ -131,7 +135,9 @@ bool PrintViewManagerBase::PrintNow(content::RenderFrameHost* rfh) {
+     return false;
+ 
    SetPrintingRFH(rfh);
--  int32_t id = rfh->GetRoutingID();
--  return PrintNowInternal(rfh, std::make_unique<PrintMsg_PrintPages>(id));
+-  GetPrintRenderFrame(rfh)->PrintRequestedPages();
 +  callback_ = std::move(callback);
-+  return PrintNowInternal(rfh, std::move(message));
++  // FIXME: pass 'silent' through from the caller..?
++  GetPrintRenderFrame(rfh)->PrintRequestedPages(false /* silent */);
+   return true;
  }
  
- #if BUILDFLAG(ENABLE_PRINT_PREVIEW)
-@@ -242,9 +247,9 @@ void PrintViewManagerBase::StartLocalPrintJob(
+@@ -246,9 +252,9 @@ void PrintViewManagerBase::StartLocalPrintJob(
  void PrintViewManagerBase::UpdatePrintingEnabled() {
    DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
    // The Unretained() is safe because ForEachFrame() is synchronous.
@@ -146,7 +151,7 @@ index 7d1e56b3b1a8691477598b0103e2c69c171ec2c8..980971e2b8dd143fde3376f17352f672
  }
  
  void PrintViewManagerBase::NavigationStopped() {
-@@ -347,7 +352,7 @@ void PrintViewManagerBase::OnPrintingFailed(int cookie) {
+@@ -351,7 +357,7 @@ void PrintViewManagerBase::OnPrintingFailed(int cookie) {
    PrintManager::OnPrintingFailed(cookie);
  
  #if BUILDFLAG(ENABLE_PRINT_PREVIEW)
@@ -155,7 +160,7 @@ index 7d1e56b3b1a8691477598b0103e2c69c171ec2c8..980971e2b8dd143fde3376f17352f672
  #endif
  
    ReleasePrinterQuery();
-@@ -445,9 +450,13 @@ void PrintViewManagerBase::OnNotifyPrintJobEvent(
+@@ -449,9 +455,13 @@ void PrintViewManagerBase::OnNotifyPrintJobEvent(
            content::NotificationService::NoDetails());
        break;
      }
@@ -171,7 +176,7 @@ index 7d1e56b3b1a8691477598b0103e2c69c171ec2c8..980971e2b8dd143fde3376f17352f672
        NOTREACHED();
        break;
      }
-@@ -542,8 +551,6 @@ bool PrintViewManagerBase::CreateNewPrintJob(
+@@ -546,8 +556,6 @@ bool PrintViewManagerBase::CreateNewPrintJob(
    DCHECK(!quit_inner_loop_);
    DCHECK(query);
  
@@ -180,7 +185,7 @@ index 7d1e56b3b1a8691477598b0103e2c69c171ec2c8..980971e2b8dd143fde3376f17352f672
  
    // We can't print if there is no renderer.
    if (!web_contents()->GetRenderViewHost() ||
-@@ -558,8 +565,6 @@ bool PrintViewManagerBase::CreateNewPrintJob(
+@@ -562,8 +570,6 @@ bool PrintViewManagerBase::CreateNewPrintJob(
    print_job_->SetSource(PrintJob::Source::PRINT_PREVIEW, /*source_id=*/"");
  #endif  // defined(OS_CHROMEOS)
  
@@ -189,7 +194,7 @@ index 7d1e56b3b1a8691477598b0103e2c69c171ec2c8..980971e2b8dd143fde3376f17352f672
    printing_succeeded_ = false;
    return true;
  }
-@@ -608,6 +613,13 @@ void PrintViewManagerBase::ReleasePrintJob() {
+@@ -612,14 +618,22 @@ void PrintViewManagerBase::ReleasePrintJob() {
    content::RenderFrameHost* rfh = printing_rfh_;
    printing_rfh_ = nullptr;
  
@@ -203,9 +208,8 @@ index 7d1e56b3b1a8691477598b0103e2c69c171ec2c8..980971e2b8dd143fde3376f17352f672
    if (!print_job_)
      return;
  
-@@ -617,8 +629,9 @@ void PrintViewManagerBase::ReleasePrintJob() {
-     rfh->Send(msg.release());
-   }
+   if (rfh)
+     GetPrintRenderFrame(rfh)->PrintingDone(printing_succeeded_);
  
 -  registrar_.Remove(this, chrome::NOTIFICATION_PRINT_JOB_EVENT,
 -                    content::Source<PrintJob>(print_job_.get()));
@@ -215,7 +219,7 @@ index 7d1e56b3b1a8691477598b0103e2c69c171ec2c8..980971e2b8dd143fde3376f17352f672
    // Don't close the worker thread.
    print_job_ = nullptr;
  }
-@@ -693,6 +706,9 @@ bool PrintViewManagerBase::PrintNowInternal(
+@@ -694,6 +708,9 @@ bool PrintViewManagerBase::PrintNowInternal(
    // Don't print / print preview interstitials or crashed tabs.
    if (IsInterstitialOrCrashed())
      return false;
@@ -226,7 +230,7 @@ index 7d1e56b3b1a8691477598b0103e2c69c171ec2c8..980971e2b8dd143fde3376f17352f672
  }
  
 diff --git a/chrome/browser/printing/print_view_manager_base.h b/chrome/browser/printing/print_view_manager_base.h
-index af49d3e2f8abaf7dc4d82dc3f9beccdf4fbd9f18..dd9eb11d31b4ee3d415b1fca7d97872da132203d 100644
+index af49d3e2f8abaf7dc4d82dc3f9beccdf4fbd9f18..26eecede8e698046c4b304a06b49946a9e5342ff 100644
 --- a/chrome/browser/printing/print_view_manager_base.h
 +++ b/chrome/browser/printing/print_view_manager_base.h
 @@ -33,6 +33,8 @@ class PrintJob;
@@ -238,18 +242,17 @@ index af49d3e2f8abaf7dc4d82dc3f9beccdf4fbd9f18..dd9eb11d31b4ee3d415b1fca7d97872d
  // Base class for managing the print commands for a WebContents.
  class PrintViewManagerBase : public content::NotificationObserver,
                               public PrintManager {
-@@ -42,7 +44,9 @@ class PrintViewManagerBase : public content::NotificationObserver,
+@@ -42,7 +44,8 @@ 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.
 -  virtual bool PrintNow(content::RenderFrameHost* rfh);
 +  virtual bool PrintNow(content::RenderFrameHost* rfh,
-+                        std::unique_ptr<IPC::Message> message,
 +                        CompletionCallback callback);
  
  #if BUILDFLAG(ENABLE_PRINT_PREVIEW)
    // Prints the document in |print_data| with settings specified in
-@@ -206,9 +210,15 @@ class PrintViewManagerBase : public content::NotificationObserver,
+@@ -206,9 +209,15 @@ class PrintViewManagerBase : public content::NotificationObserver,
    // The current RFH that is printing with a system printing dialog.
    content::RenderFrameHost* printing_rfh_;
  
@@ -377,23 +380,21 @@ index 9fbea6d0a2dbe55b1d600fbc217dee5aa8ae8cd5..de9bd267e408c02fd4da7d903523c0e6
  
    // content::BrowserMessageFilter:
    bool OnMessageReceived(const IPC::Message& message) override;
-diff --git a/components/printing/common/print_messages.h b/components/printing/common/print_messages.h
-index f9f5d1c07e4068d0706770ca81bd92ce166c3822..9f0e079b941296fa27b8cf0a66abfa45a6183b42 100644
---- a/components/printing/common/print_messages.h
-+++ b/components/printing/common/print_messages.h
-@@ -365,7 +365,9 @@ IPC_MESSAGE_ROUTED0(PrintMsg_PrintNodeUnderContextMenu)
- #if BUILDFLAG(ENABLE_PRINTING)
- // Tells the RenderFrame to switch the CSS to print media type, renders every
- // requested pages and switch back the CSS to display media type.
--IPC_MESSAGE_ROUTED0(PrintMsg_PrintPages)
-+IPC_MESSAGE_ROUTED2(PrintMsg_PrintPages,
-+                    bool /* silent print */,
-+                    base::DictionaryValue /* settings */)
- 
- // Like PrintMsg_PrintPages, but using the print preview document's frame/node.
- IPC_MESSAGE_ROUTED0(PrintMsg_PrintForSystemDialog)
+diff --git a/components/printing/common/print.mojom b/components/printing/common/print.mojom
+index d5ff612320fb3f324b58c91b0c05e0eac689beef..9fafde963ecce596c9514384d2aa11a7540e0d87 100644
+--- a/components/printing/common/print.mojom
++++ b/components/printing/common/print.mojom
+@@ -16,7 +16,7 @@ interface PrintRenderer {
+ 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.
+-  PrintRequestedPages();
++  PrintRequestedPages(bool silent);
+ 
+   // 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 27cf579e4ca10661c34c130097783f02e13f3521..e8f1b610fb8fa700ac3de9df268a7b6a4b449850 100644
+index 95bf92929983110de4489ee18f52783ddf178bcf..c82a3765fa2e0a45ed379e924f7546550644a1d0 100644
 --- a/components/printing/renderer/print_render_frame_helper.cc
 +++ b/components/printing/renderer/print_render_frame_helper.cc
 @@ -38,6 +38,7 @@
@@ -404,7 +405,7 @@ index 27cf579e4ca10661c34c130097783f02e13f3521..e8f1b610fb8fa700ac3de9df268a7b6a
  #include "printing/units.h"
  #include "third_party/blink/public/common/associated_interfaces/associated_interface_registry.h"
  #include "third_party/blink/public/common/frame/frame_owner_element_type.h"
-@@ -1149,7 +1150,8 @@ void PrintRenderFrameHelper::ScriptedPrint(bool user_initiated) {
+@@ -1161,7 +1162,8 @@ void PrintRenderFrameHelper::ScriptedPrint(bool user_initiated) {
      web_frame->DispatchBeforePrintEvent();
      if (!weak_this)
        return;
@@ -414,37 +415,34 @@ index 27cf579e4ca10661c34c130097783f02e13f3521..e8f1b610fb8fa700ac3de9df268a7b6a
      if (weak_this)
        web_frame->DispatchAfterPrintEvent();
    }
-@@ -1224,7 +1226,9 @@ void PrintRenderFrameHelper::InitiatePrintPreview(
- #endif  // BUILDFLAG(ENABLE_PRINT_PREVIEW)
+@@ -1197,7 +1199,7 @@ void PrintRenderFrameHelper::BindPrintRenderFrameReceiver(
+   receivers_.Add(this, std::move(receiver));
  }
  
--void PrintRenderFrameHelper::OnPrintPages() {
-+void PrintRenderFrameHelper::OnPrintPages(
-+    bool silent,
-+    const base::DictionaryValue& settings) {
+-void PrintRenderFrameHelper::PrintRequestedPages() {
++void PrintRenderFrameHelper::PrintRequestedPages(bool silent) {
+   ScopedIPC scoped_ipc(weak_ptr_factory_.GetWeakPtr());
    if (ipc_nesting_level_ > 1)
      return;
- 
-@@ -1237,7 +1241,8 @@ void PrintRenderFrameHelper::OnPrintPages() {
+@@ -1211,7 +1213,7 @@ void PrintRenderFrameHelper::PrintRequestedPages() {
    // If we are printing a PDF extension frame, find the plugin node and print
    // that instead.
    auto plugin = delegate_->GetPdfElement(frame);
 -  Print(frame, plugin, PrintRequestType::kRegular);
-+  Print(frame, plugin, PrintRequestType::kRegular,
-+        silent, settings);
-   if (weak_this)
++  Print(frame, plugin, PrintRequestType::kRegular, silent, base::DictionaryValue());
+   if (!render_frame_gone_)
      frame->DispatchAfterPrintEvent();
    // WARNING: |this| may be gone at this point. Do not do any more work here and
-@@ -1254,7 +1259,7 @@ void PrintRenderFrameHelper::OnPrintForSystemDialog() {
+@@ -1228,7 +1230,7 @@ void PrintRenderFrameHelper::PrintForSystemDialog() {
+     return;
    }
-   auto weak_this = weak_ptr_factory_.GetWeakPtr();
    Print(frame, print_preview_context_.source_node(),
 -        PrintRequestType::kRegular);
 +        PrintRequestType::kRegular, false, base::DictionaryValue());
-   if (weak_this)
+   if (!render_frame_gone_)
      frame->DispatchAfterPrintEvent();
    // WARNING: |this| may be gone at this point. Do not do any more work here and
-@@ -1289,6 +1294,8 @@ void PrintRenderFrameHelper::OnPrintPreview(
+@@ -1308,6 +1310,8 @@ void PrintRenderFrameHelper::OnPrintPreview(
    if (ipc_nesting_level_ > 1)
      return;
  
@@ -453,7 +451,7 @@ index 27cf579e4ca10661c34c130097783f02e13f3521..e8f1b610fb8fa700ac3de9df268a7b6a
    print_preview_context_.OnPrintPreview();
  
    UMA_HISTOGRAM_ENUMERATION("PrintPreview.PreviewEvent",
-@@ -1662,7 +1669,9 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) {
+@@ -1662,7 +1666,9 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) {
  
      auto self = weak_ptr_factory_.GetWeakPtr();
      Print(duplicate_node.GetDocument().GetFrame(), duplicate_node,
@@ -464,7 +462,7 @@ index 27cf579e4ca10661c34c130097783f02e13f3521..e8f1b610fb8fa700ac3de9df268a7b6a
      // Check if |this| is still valid.
      if (!self)
        return;
-@@ -1673,7 +1682,9 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) {
+@@ -1673,7 +1679,9 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) {
  
  void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame,
                                     const blink::WebNode& node,
@@ -475,7 +473,7 @@ index 27cf579e4ca10661c34c130097783f02e13f3521..e8f1b610fb8fa700ac3de9df268a7b6a
    // If still not finished with earlier print request simply ignore.
    if (prep_frame_view_)
      return;
-@@ -1681,7 +1692,7 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame,
+@@ -1681,7 +1689,7 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame,
    FrameReference frame_ref(frame);
  
    int expected_page_count = 0;
@@ -484,7 +482,7 @@ index 27cf579e4ca10661c34c130097783f02e13f3521..e8f1b610fb8fa700ac3de9df268a7b6a
      DidFinishPrinting(FAIL_PRINT_INIT);
      return;  // Failed to init print page settings.
    }
-@@ -1701,8 +1712,11 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame,
+@@ -1701,8 +1709,11 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame,
  
      PrintMsg_PrintPages_Params print_settings;
      auto self = weak_ptr_factory_.GetWeakPtr();
@@ -498,7 +496,7 @@ index 27cf579e4ca10661c34c130097783f02e13f3521..e8f1b610fb8fa700ac3de9df268a7b6a
      // Check if |this| is still valid.
      if (!self)
        return;
-@@ -1926,10 +1940,23 @@ void PrintRenderFrameHelper::IPCProcessed() {
+@@ -1926,10 +1937,23 @@ void PrintRenderFrameHelper::IPCProcessed() {
      base::ThreadTaskRunnerHandle::Get()->DeleteSoon(FROM_HERE, this);
  }
  
@@ -525,7 +523,7 @@ index 27cf579e4ca10661c34c130097783f02e13f3521..e8f1b610fb8fa700ac3de9df268a7b6a
    // 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.
-@@ -1949,12 +1976,14 @@ bool PrintRenderFrameHelper::InitPrintSettings(bool fit_to_paper_size) {
+@@ -1949,12 +1973,14 @@ bool PrintRenderFrameHelper::InitPrintSettings(bool fit_to_paper_size) {
    return result;
  }
  
@@ -545,20 +543,19 @@ index 27cf579e4ca10661c34c130097783f02e13f3521..e8f1b610fb8fa700ac3de9df268a7b6a
      Send(new PrintHostMsg_ShowInvalidPrinterSettingsError(routing_id()));
      return false;
 diff --git a/components/printing/renderer/print_render_frame_helper.h b/components/printing/renderer/print_render_frame_helper.h
-index 00b3e4647a192411262bc5e7c1c0cfac3e3f81bb..5bade84672ef9d8b8acb8e8d503760aca6635cb7 100644
+index dcb0da469d5aab19bc568deb07d3619f8defa76e..9d5049cc42a8a13055fadc94e02c9feca7fe8955 100644
 --- a/components/printing/renderer/print_render_frame_helper.h
 +++ b/components/printing/renderer/print_render_frame_helper.h
-@@ -204,7 +204,8 @@ class PrintRenderFrameHelper
-       bool has_selection) override;
- 
-   // Message handlers ---------------------------------------------------------
--  void OnPrintPages();
-+  void OnPrintPages(bool silent,
-+                    const base::DictionaryValue& settings);
-   void OnPrintForSystemDialog();
+@@ -212,7 +212,7 @@ class PrintRenderFrameHelper
+       mojo::PendingAssociatedReceiver<mojom::PrintRenderFrame> receiver);
+ 
+   // printing::mojom::PrintRenderFrame:
+-  void PrintRequestedPages() override;
++  void PrintRequestedPages(bool silent) override;
+   void PrintForSystemDialog() override;
  #if BUILDFLAG(ENABLE_PRINT_PREVIEW)
-   void OnPrintPreview(const base::DictionaryValue& settings);
-@@ -253,7 +254,9 @@ class PrintRenderFrameHelper
+   void InitiatePrintPreview(
+@@ -266,7 +266,9 @@ class PrintRenderFrameHelper
    // WARNING: |this| may be gone after this method returns.
    void Print(blink::WebLocalFrame* frame,
               const blink::WebNode& node,
@@ -569,7 +566,7 @@ index 00b3e4647a192411262bc5e7c1c0cfac3e3f81bb..5bade84672ef9d8b8acb8e8d503760ac
  
    // Notification when printing is done - signal tear-down/free resources.
    void DidFinishPrinting(PrintingResult result);
-@@ -262,12 +265,14 @@ class PrintRenderFrameHelper
+@@ -275,12 +277,14 @@ class PrintRenderFrameHelper
  
    // Initialize print page settings with default settings.
    // Used only for native printing workflow.
@@ -587,28 +584,31 @@ index 00b3e4647a192411262bc5e7c1c0cfac3e3f81bb..5bade84672ef9d8b8acb8e8d503760ac
  #if BUILDFLAG(ENABLE_PRINT_PREVIEW)
    // Set options for print preset from source PDF document.
 diff --git a/printing/print_settings_conversion.cc b/printing/print_settings_conversion.cc
-index 7403d3ea6200e2443ca23cb483c2a36fa6ff5027..05fcb8c2ef6d1074cf37b8974830d3fe1dd6e011 100644
+index f844f92e2cc3b094e265ab40d4e47a4ab57b6ce0..3decdb6a8faa49d6f25b9be9340ff1e3a3b5461b 100644
 --- a/printing/print_settings_conversion.cc
 +++ b/printing/print_settings_conversion.cc
-@@ -184,11 +184,12 @@ bool PrintSettingsFromJobSettings(const base::Value& job_settings,
+@@ -182,12 +182,14 @@ bool PrintSettingsFromJobSettings(const base::Value& job_settings,
  
    settings->set_dpi_xy(dpi_horizontal.value(), dpi_vertical.value());
  #endif
++  const std::string* device_name =
++      job_settings.FindStringKey(kSettingDeviceName);
 +  if (!device_name->empty())
 +    settings->set_device_name(base::UTF8ToUTF16(*device_name));
  
    settings->set_collate(collate.value());
    settings->set_copies(copies.value());
    settings->SetOrientation(landscape.value());
--  settings->set_device_name(base::UTF8ToUTF16(*device_name));
+-  settings->set_device_name(
+-      base::UTF8ToUTF16(*job_settings.FindStringKey(kSettingDeviceName)));
    settings->set_duplex_mode(static_cast<DuplexMode>(duplex_mode.value()));
    settings->set_color(static_cast<ColorModel>(color.value()));
    settings->set_scale_factor(static_cast<double>(scale_factor.value()) / 100.0);
 diff --git a/printing/printing_context.cc b/printing/printing_context.cc
-index cd5c27c87df175676504a06b4e1904f6b836dc90..c4f6acf66bc69f1e7db633aa5b3b03a913ffb666 100644
+index 73940192472b1576a701cad3abbb92f2d72aa77e..bc0d39ccd113306691ae532e9fbc5b64c9aa0a33 100644
 --- a/printing/printing_context.cc
 +++ b/printing/printing_context.cc
-@@ -93,8 +93,6 @@ PrintingContext::Result PrintingContext::UsePdfSettings() {
+@@ -90,8 +90,6 @@ PrintingContext::Result PrintingContext::UsePdfSettings() {
  
  PrintingContext::Result PrintingContext::UpdatePrintSettings(
      base::Value job_settings) {

+ 7 - 6
patches/chromium/proxy_config_monitor.patch

@@ -6,7 +6,7 @@ Subject: proxy_config_monitor.patch
 Allow monitoring proxy config changes for a pref service.
 
 diff --git a/chrome/browser/net/proxy_config_monitor.cc b/chrome/browser/net/proxy_config_monitor.cc
-index f1e287553244cfd1054c4949ffbb1acdaccbe1e2..94cbca68cedc314d55993375bc48159c9a9bfb3d 100644
+index 342db7adee575cc49a38bbdfcf1bbfcc0e30cf57..fc8e6b49d96534546dfa97846c2be79cff8a96e5 100644
 --- a/chrome/browser/net/proxy_config_monitor.cc
 +++ b/chrome/browser/net/proxy_config_monitor.cc
 @@ -10,7 +10,9 @@
@@ -19,7 +19,7 @@ index f1e287553244cfd1054c4949ffbb1acdaccbe1e2..94cbca68cedc314d55993375bc48159c
  #include "components/proxy_config/pref_proxy_config_tracker_impl.h"
  #include "content/public/browser/browser_thread.h"
  #include "mojo/public/cpp/bindings/associated_interface_ptr.h"
-@@ -19,12 +21,13 @@
+@@ -21,12 +23,13 @@
  #include "chrome/browser/chromeos/profiles/profile_helper.h"
  #endif  // defined(OS_CHROMEOS)
  
@@ -34,7 +34,7 @@ index f1e287553244cfd1054c4949ffbb1acdaccbe1e2..94cbca68cedc314d55993375bc48159c
  ProxyConfigMonitor::ProxyConfigMonitor(Profile* profile) {
    DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
    DCHECK(profile);
-@@ -54,6 +57,7 @@ ProxyConfigMonitor::ProxyConfigMonitor(Profile* profile) {
+@@ -56,6 +59,7 @@ ProxyConfigMonitor::ProxyConfigMonitor(Profile* profile) {
  
    proxy_config_service_->AddObserver(this);
  }
@@ -67,7 +67,7 @@ index f1e287553244cfd1054c4949ffbb1acdaccbe1e2..94cbca68cedc314d55993375bc48159c
  }
  #endif
 diff --git a/chrome/browser/net/proxy_config_monitor.h b/chrome/browser/net/proxy_config_monitor.h
-index 0f20947c7819c3be2086a69f5997412652a99915..a88a1e001a4c1b8d7bafdac74fb060a1ee30361d 100644
+index abffb6dbdbf730e2cc4423eaca6a9a8a9f8af582..7fe1badcdebebce9028825ac98d7ab6cfa65dcdd 100644
 --- a/chrome/browser/net/proxy_config_monitor.h
 +++ b/chrome/browser/net/proxy_config_monitor.h
 @@ -40,11 +40,12 @@ class ProxyConfigMonitor : public net::ProxyConfigService::Observer,
@@ -84,11 +84,12 @@ index 0f20947c7819c3be2086a69f5997412652a99915..a88a1e001a4c1b8d7bafdac74fb060a1
    // Creates a ProxyConfigMonitor that gets proxy settings from the
    // |local_state|, for use with NetworkContexts not
    // associated with a profile. Must be destroyed before |local_state|.
-@@ -91,7 +92,6 @@ class ProxyConfigMonitor : public net::ProxyConfigService::Observer,
+@@ -91,7 +92,7 @@ class ProxyConfigMonitor : public net::ProxyConfigService::Observer,
  
  #if BUILDFLAG(ENABLE_EXTENSIONS)
-   mojo::BindingSet<network::mojom::ProxyErrorClient> error_binding_set_;
+   mojo::ReceiverSet<network::mojom::ProxyErrorClient> error_receiver_set_;
 -  Profile* profile_ = nullptr;
++  // Profile* profile_ = nullptr;
  #endif
  
    DISALLOW_COPY_AND_ASSIGN(ProxyConfigMonitor);

+ 2 - 2
patches/chromium/put_back_deleted_colors_for_autofill.patch

@@ -8,7 +8,7 @@ needed in chromium but our autofill implementation uses them.  This patch can be
 our autofill implementation to work like Chromium's.
 
 diff --git a/chrome/browser/ui/libgtkui/native_theme_gtk.cc b/chrome/browser/ui/libgtkui/native_theme_gtk.cc
-index b77b8a53b0246b05e3c45e74eaf2b5c44c6dad88..7af171f6cd5d76e87e2fca32f5dbcc34d7e0a974 100644
+index ad87f4729fe2cec2cf6e12b5bfcaf68bccf0390d..b1c3fd0f798d520da0637268dcbd51ecde9b40a7 100644
 --- a/chrome/browser/ui/libgtkui/native_theme_gtk.cc
 +++ b/chrome/browser/ui/libgtkui/native_theme_gtk.cc
 @@ -279,6 +279,27 @@ SkColor SkColorFromColorId(ui::NativeTheme::ColorId color_id) {
@@ -78,7 +78,7 @@ index 7fd49a2e26968daaa16ed3322b516f53ff60fb56..f902910ecc8e5b4945187e836655362e
      case NativeTheme::kColorId_ThrobberSpinningColor:
        return gfx::kGoogleBlue600;
 diff --git a/ui/native_theme/native_theme.h b/ui/native_theme/native_theme.h
-index c1d4ad9a27d895af32fd0311a640e2f62a30635a..ef45da79366c2e3ab242ec140989b407ac70dbb8 100644
+index f1330721a711c61211ea136286ee884bc00e1975..e479fc84f7013984fc53d18cad8812fbd43cb670 100644
 --- a/ui/native_theme/native_theme.h
 +++ b/ui/native_theme/native_theme.h
 @@ -389,6 +389,11 @@ class NATIVE_THEME_EXPORT NativeTheme {

+ 1 - 1
patches/chromium/render_widget_host_view_mac.patch

@@ -66,7 +66,7 @@ index d8de080eb6a30f16282661941b9a95da4fa41d70..326c5a13f6924643c699ca3cc2f98262
    return validAttributesForMarkedText_.get();
  }
 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 ed9ea51809ec7f06b246b933281dc22b9b0055f7..32f3f2cceb742065db8b52a9f6aa814cfc30f955 100644
+index 4549c3d871d4c07333a557e311e38755c116fe45..de722efe61cb6823e62f1101b5aa3447f6795687 100644
 --- a/content/browser/renderer_host/render_widget_host_view_mac.mm
 +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
 @@ -63,6 +63,7 @@

+ 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 92fe7cd1cc2181277c4c49ee978762d1b32c8116..858d53eb3f7e5b358860e5ea3b15612e4015b1ed 100644
+index 88401aecde364267ee572fb93ca1be2ee6501cb7..e11c6bcf61bdc01f005cd79f88493b3fe61ec4dd 100644
 --- a/chrome/BUILD.gn
 +++ b/chrome/BUILD.gn
-@@ -1599,7 +1599,7 @@ if (is_chrome_branded && !is_android) {
+@@ -1636,7 +1636,7 @@ if (is_chrome_branded && !is_android) {
    }
  }
  
@@ -64,7 +64,7 @@ index 92fe7cd1cc2181277c4c49ee978762d1b32c8116..858d53eb3f7e5b358860e5ea3b15612e
    chrome_paks("packed_resources") {
      if (is_mac) {
        output_dir = "$root_gen_dir/repack"
-@@ -1623,6 +1623,12 @@ if (!is_android) {
+@@ -1660,6 +1660,12 @@ if (!is_android) {
    }
  }
  

+ 188 - 0
patches/chromium/revert_remove_contentrendererclient_shouldfork.patch

@@ -0,0 +1,188 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: deepak1556 <[email protected]>
+Date: Wed, 23 Oct 2019 15:30:18 -0700
+Subject: Revert "Remove ContentRendererClient::ShouldFork."
+
+This reverts commit 6b068eb8ca4a3c7350bdafa22fc0cf0636ef8b74.
+
+diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
+index feea878036d61c2ed128b8e0397cfd6979eed04a..e53f7ea3d5d0fb0e02ca526042d7937a3b627936 100644
+--- a/chrome/renderer/chrome_content_renderer_client.cc
++++ b/chrome/renderer/chrome_content_renderer_client.cc
+@@ -1225,6 +1225,25 @@ bool ChromeContentRendererClient::AllowPopup() {
+ #endif
+ }
+ 
++bool ChromeContentRendererClient::ShouldFork(WebLocalFrame* frame,
++                                             const GURL& url,
++                                             const std::string& http_method,
++                                             bool is_initial_navigation,
++                                             bool is_server_redirect) {
++  DCHECK(!frame->Parent());
++
++  // If |url| matches one of the prerendered URLs, stop this navigation and try
++  // to swap in the prerendered page on the browser process. If the prerendered
++  // page no longer exists by the time the OpenURL IPC is handled, a normal
++  // navigation is attempted.
++  if (prerender_dispatcher_.get() &&
++      prerender_dispatcher_->IsPrerenderURL(url)) {
++    return true;
++  }
++
++  return false;
++}
++
+ void ChromeContentRendererClient::WillSendRequest(
+     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 43000eb90bab005dcc058f38a5d791a3eee1cef2..de98288514c95f703d6ab3a70c6daad9943cf4f8 100644
+--- a/chrome/renderer/chrome_content_renderer_client.h
++++ b/chrome/renderer/chrome_content_renderer_client.h
+@@ -136,6 +136,11 @@ class ChromeContentRendererClient
+       base::SingleThreadTaskRunner* compositor_thread_task_runner) override;
+   bool RunIdleHandlerWhenWidgetsHidden() override;
+   bool AllowPopup() override;
++  bool ShouldFork(blink::WebLocalFrame* frame,
++                  const GURL& url,
++                  const std::string& http_method,
++                  bool is_initial_navigation,
++                  bool is_server_redirect) override;
+   void WillSendRequest(blink::WebLocalFrame* frame,
+                        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 ccd9c50b299b00936cce032b842e509eeb157ab0..ed275b4ab86fdad2af974746841111c7c231c04c 100644
+--- a/content/public/renderer/content_renderer_client.cc
++++ b/content/public/renderer/content_renderer_client.cc
+@@ -105,6 +105,14 @@ bool ContentRendererClient::HandleNavigation(
+ }
+ #endif
+ 
++bool ContentRendererClient::ShouldFork(blink::WebLocalFrame* frame,
++                                       const GURL& url,
++                                       const std::string& http_method,
++                                       bool is_initial_navigation,
++                                       bool is_server_redirect) {
++  return false;
++}
++
+ void ContentRendererClient::WillSendRequest(blink::WebLocalFrame* frame,
+                                             ui::PageTransition transition_type,
+                                             const blink::WebURL& url,
+diff --git a/content/public/renderer/content_renderer_client.h b/content/public/renderer/content_renderer_client.h
+index a05cef66facd477057fedb388e4000475bc76830..906920393c34043d19183064a2a4506c0a03e80d 100644
+--- a/content/public/renderer/content_renderer_client.h
++++ b/content/public/renderer/content_renderer_client.h
+@@ -212,6 +212,13 @@ class CONTENT_EXPORT ContentRendererClient {
+                                 bool is_redirect);
+ #endif
+ 
++  // Returns true if we should fork a new process for the given navigation.
++  virtual bool ShouldFork(blink::WebLocalFrame* frame,
++                          const GURL& url,
++                          const std::string& http_method,
++                          bool is_initial_navigation,
++                          bool is_server_redirect);
++
+   // Notifies the embedder that the given frame is requesting the resource at
+   // |url|. If the function returns a valid |new_url|, the request must be
+   // updated to use it. The |attach_same_site_cookies| output parameter
+diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
+index 0891971aeaea4a09d4d8b0a420054cc304d8ae97..4837f6f73fe80a64071ca65b3beed7e07fe0c8fd 100644
+--- a/content/renderer/render_frame_impl.cc
++++ b/content/renderer/render_frame_impl.cc
+@@ -6178,6 +6178,15 @@ void RenderFrameImpl::BeginNavigation(
+     int cumulative_bindings = RenderProcess::current()->GetEnabledBindings();
+     bool should_fork = HasWebUIScheme(url) || HasWebUIScheme(old_url) ||
+                        (cumulative_bindings & kWebUIBindingsPolicyMask);
++
++    if (!should_fork) {
++      // Give the embedder a chance.
++      bool is_initial_navigation = render_view_->history_list_length_ == 0;
++      should_fork = GetContentClient()->renderer()->ShouldFork(
++          frame_, url, info->url_request.HttpMethod().Utf8(),
++          is_initial_navigation, false /* is_redirect */);
++    }
++
+     if (should_fork) {
+       OpenURL(std::move(info));
+       return;  // Suppress the load here.
+diff --git a/content/renderer/render_view_browsertest.cc b/content/renderer/render_view_browsertest.cc
+index b8c9f30a3492696bf3f2eb1996e54f09b8ef32a3..913eadc2b3faf21ca579ca094a0e90ecade246c7 100644
+--- a/content/renderer/render_view_browsertest.cc
++++ b/content/renderer/render_view_browsertest.cc
+@@ -989,6 +989,73 @@ TEST_F(RenderViewImplTest, BeginNavigationForWebUI) {
+       FrameHostMsg_OpenURL::ID));
+ }
+ 
++class AlwaysForkingRenderViewTest : public RenderViewImplTest {
++ public:
++  ContentRendererClient* CreateContentRendererClient() override {
++    return new TestContentRendererClient;
++  }
++
++ private:
++  class TestContentRendererClient : public ContentRendererClient {
++   public:
++    bool ShouldFork(blink::WebLocalFrame* frame,
++                    const GURL& url,
++                    const std::string& http_method,
++                    bool is_initial_navigation,
++                    bool is_server_redirect) override {
++      return true;
++    }
++  };
++};
++
++TEST_F(AlwaysForkingRenderViewTest, BeginNavigationDoesNotForkEmptyUrl) {
++  GURL example_url("http://example.com");
++  GURL empty_url("");
++
++  LoadHTMLWithUrlOverride("<body></body", example_url.spec().c_str());
++  EXPECT_EQ(example_url,
++            GURL(frame()->GetWebFrame()->GetDocumentLoader()->GetUrl()));
++
++  // Empty url should never fork.
++  blink::WebURLRequest request(empty_url);
++  request.SetMode(network::mojom::RequestMode::kNavigate);
++  request.SetRedirectMode(network::mojom::RedirectMode::kManual);
++  request.SetRequestContext(blink::mojom::RequestContextType::INTERNAL);
++  request.SetRequestorOrigin(blink::WebSecurityOrigin::Create(example_url));
++  auto navigation_info = std::make_unique<blink::WebNavigationInfo>();
++  navigation_info->url_request = request;
++  navigation_info->frame_type =
++      network::mojom::RequestContextFrameType::kTopLevel;
++  navigation_info->navigation_policy = blink::kWebNavigationPolicyCurrentTab;
++  frame()->BeginNavigation(std::move(navigation_info));
++  EXPECT_FALSE(render_thread_->sink().GetUniqueMessageMatching(
++      FrameHostMsg_OpenURL::ID));
++}
++
++TEST_F(AlwaysForkingRenderViewTest, BeginNavigationDoesNotForkAboutBlank) {
++  GURL example_url("http://example.com");
++  GURL blank_url(url::kAboutBlankURL);
++
++  LoadHTMLWithUrlOverride("<body></body", example_url.spec().c_str());
++  EXPECT_EQ(example_url,
++            GURL(frame()->GetWebFrame()->GetDocumentLoader()->GetUrl()));
++
++  // about:blank should never fork.
++  blink::WebURLRequest request(blank_url);
++  request.SetMode(network::mojom::RequestMode::kNavigate);
++  request.SetRedirectMode(network::mojom::RedirectMode::kManual);
++  request.SetRequestContext(blink::mojom::RequestContextType::INTERNAL);
++  request.SetRequestorOrigin(blink::WebSecurityOrigin::Create(example_url));
++  auto navigation_info = std::make_unique<blink::WebNavigationInfo>();
++  navigation_info->url_request = request;
++  navigation_info->frame_type =
++      network::mojom::RequestContextFrameType::kTopLevel;
++  navigation_info->navigation_policy = blink::kWebNavigationPolicyCurrentTab;
++  frame()->BeginNavigation(std::move(navigation_info));
++  EXPECT_FALSE(render_thread_->sink().GetUniqueMessageMatching(
++      FrameHostMsg_OpenURL::ID));
++}
++
+ // This test verifies that when device emulation is enabled, RenderFrameProxy
+ // continues to receive the original ScreenInfo and not the emualted
+ // ScreenInfo.

+ 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 81aceae802b32bc21f639996cb197e62cf52af1d..8bd95d5053f7911074041a62581097c8eb2322aa 100644
+index 67e9a8e89c8f031e1b1fbba421fa9c60f99c22e3..99aecdc7d11ff11e65c4e77c4b952833870d966f 100644
 --- a/content/renderer/render_thread_impl.cc
 +++ b/content/renderer/render_thread_impl.cc
-@@ -1523,7 +1523,7 @@ bool RenderThreadImpl::IsGpuMemoryBufferCompositorResourcesEnabled() {
+@@ -1531,7 +1531,7 @@ bool RenderThreadImpl::IsGpuMemoryBufferCompositorResourcesEnabled() {
  }
  
  bool RenderThreadImpl::IsElasticOverscrollEnabled() {

+ 12 - 12
patches/chromium/ssl_security_state_tab_helper.patch

@@ -6,7 +6,7 @@ Subject: ssl_security_state_tab_helper.patch
 Allows populating security tab info for devtools in Electron.
 
 diff --git a/chrome/browser/ssl/security_state_tab_helper.cc b/chrome/browser/ssl/security_state_tab_helper.cc
-index e971e3506864865d1b05218d42fa5d54a72cc742..a1aa2036c405dbbc310b12ac6c956579cf1aa1d9 100644
+index bc60f256d9d1a07d04a50ad245a5de6490f5091b..e29f4e910349440cd388227d36bf303c885a651d 100644
 --- a/chrome/browser/ssl/security_state_tab_helper.cc
 +++ b/chrome/browser/ssl/security_state_tab_helper.cc
 @@ -13,21 +13,25 @@
@@ -15,8 +15,8 @@ index e971e3506864865d1b05218d42fa5d54a72cc742..a1aa2036c405dbbc310b12ac6c956579
  #include "build/build_config.h"
 +#if 0
  #include "chrome/browser/browser_process.h"
- #include "chrome/browser/lookalikes/safety_tips/reputation_web_contents_observer.h"
  #include "chrome/browser/profiles/profile.h"
+ #include "chrome/browser/reputation/reputation_web_contents_observer.h"
  #include "chrome/browser/safe_browsing/safe_browsing_service.h"
  #include "chrome/browser/safe_browsing/ui_manager.h"
 +#endif
@@ -72,23 +72,23 @@ index e971e3506864865d1b05218d42fa5d54a72cc742..a1aa2036c405dbbc310b12ac6c956579
  
  SecurityStateTabHelper::SecurityStateTabHelper(
      content::WebContents* web_contents)
-@@ -145,6 +153,7 @@ SecurityStateTabHelper::GetVisibleSecurityState() const {
+@@ -158,6 +166,7 @@ SecurityStateTabHelper::GetVisibleSecurityState() {
    // information is still being initialized, thus no need to check for that.
    state->malicious_content_status = GetMaliciousContentStatus();
  
 +#if 0
-   safety_tips::ReputationWebContentsObserver* reputation_web_contents_observer =
-       safety_tips::ReputationWebContentsObserver::FromWebContents(
-           web_contents());
-@@ -153,6 +162,7 @@ SecurityStateTabHelper::GetVisibleSecurityState() const {
-           ? reputation_web_contents_observer
-                 ->GetSafetyTipStatusForVisibleNavigation()
-           : security_state::SafetyTipStatus::kUnknown;
+   ReputationWebContentsObserver* reputation_web_contents_observer =
+       ReputationWebContentsObserver::FromWebContents(web_contents());
+   state->safety_tip_info =
+@@ -166,6 +175,7 @@ SecurityStateTabHelper::GetVisibleSecurityState() {
+                 ->GetSafetyTipInfoForVisibleNavigation()
+           : security_state::SafetyTipInfo(
+                 {security_state::SafetyTipStatus::kUnknown, GURL()});
 +#endif
    return state;
  }
  
-@@ -220,6 +230,7 @@ SecurityStateTabHelper::GetMaliciousContentStatus() const {
+@@ -237,6 +247,7 @@ SecurityStateTabHelper::GetMaliciousContentStatus() const {
        web_contents()->GetController().GetVisibleEntry();
    if (!entry)
      return security_state::MALICIOUS_CONTENT_STATUS_NONE;
@@ -96,7 +96,7 @@ index e971e3506864865d1b05218d42fa5d54a72cc742..a1aa2036c405dbbc310b12ac6c956579
    safe_browsing::SafeBrowsingService* sb_service =
        g_browser_process->safe_browsing_service();
    if (!sb_service)
-@@ -298,6 +309,7 @@ SecurityStateTabHelper::GetMaliciousContentStatus() const {
+@@ -319,6 +330,7 @@ SecurityStateTabHelper::GetMaliciousContentStatus() const {
          break;
      }
    }

+ 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 3e85adafd4e5173d5ea9680a28e41fd8f4efbdfd..0408a35db18ecdcad1521e4123aed4bd12bcf2c8 100644
+index 70e105df714f0dda581b442fd9a54b7241815430..71e6b162a8e56e63731b61c171c20d134e7e8b47 100644
 --- a/content/browser/renderer_host/render_process_host_impl.cc
 +++ b/content/browser/renderer_host/render_process_host_impl.cc
-@@ -400,6 +400,11 @@ class RendererSandboxedProcessLauncherDelegate
+@@ -411,6 +411,11 @@ class RendererSandboxedProcessLauncherDelegate
    {
    }
  
@@ -37,7 +37,7 @@ index 3e85adafd4e5173d5ea9680a28e41fd8f4efbdfd..0408a35db18ecdcad1521e4123aed4bd
    ~RendererSandboxedProcessLauncherDelegate() override {}
  
  #if defined(OS_WIN)
-@@ -421,6 +426,9 @@ class RendererSandboxedProcessLauncherDelegate
+@@ -432,6 +437,9 @@ class RendererSandboxedProcessLauncherDelegate
  
  #if BUILDFLAG(USE_ZYGOTE_HANDLE)
    service_manager::ZygoteHandle GetZygote() override {
@@ -47,7 +47,7 @@ index 3e85adafd4e5173d5ea9680a28e41fd8f4efbdfd..0408a35db18ecdcad1521e4123aed4bd
      const base::CommandLine& browser_command_line =
          *base::CommandLine::ForCurrentProcess();
      base::CommandLine::StringType renderer_prefix =
-@@ -435,10 +443,13 @@ class RendererSandboxedProcessLauncherDelegate
+@@ -446,10 +454,13 @@ class RendererSandboxedProcessLauncherDelegate
      return service_manager::SANDBOX_TYPE_RENDERER;
    }
  
@@ -62,7 +62,7 @@ index 3e85adafd4e5173d5ea9680a28e41fd8f4efbdfd..0408a35db18ecdcad1521e4123aed4bd
  };
  
  const char kSessionStorageHolderKey[] = "kSessionStorageHolderKey";
-@@ -1734,11 +1745,18 @@ bool RenderProcessHostImpl::Init() {
+@@ -1705,11 +1716,18 @@ bool RenderProcessHostImpl::Init() {
        cmd_line->PrependWrapper(renderer_prefix);
      AppendRendererCommandLine(cmd_line.get());
  

+ 0 - 29
patches/chromium/ui_views_fix_jumbo_build.patch

@@ -1,29 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Deepak Mohan <[email protected]>
-Date: Wed, 11 Sep 2019 16:09:34 -0700
-Subject: ui/views: fix namespace qualification with jumbo_build
-
-In file included from gen/ui/views/views_jumbo_4.cc:45:
-.\../../ui/views/widget/widget_hwnd_utils.cc(112,11): error: no member named 'IsFormControlsRefreshEnabled'
-in namespace 'views::features'; did you mean '::features::IsFormControlsRefreshEnabled'?
-      if (features::IsFormControlsRefreshEnabled() &&
-          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-          ::features::IsFormControlsRefreshEnabled
-../..\ui/base/ui_base_features.h(72,41): note: '::features::IsFormControlsRefreshEnabled' declared here
-COMPONENT_EXPORT(UI_BASE_FEATURES) bool IsFormControlsRefreshEnabled();
-                                        ^
-1 error generated.
-ninja: build stopped: subcommand failed.
-
-diff --git a/ui/views/BUILD.gn b/ui/views/BUILD.gn
-index b92fe5397a0f6223ef0c171755cc6e473c225b59..951ba8fedf20dd836adf48f70fa68f2f4128d88a 100644
---- a/ui/views/BUILD.gn
-+++ b/ui/views/BUILD.gn
-@@ -592,6 +592,7 @@ jumbo_component("views") {
-       "win/scoped_enable_unadjusted_mouse_events_win.cc",
-       "win/scoped_fullscreen_visibility.cc",
-     ]
-+    jumbo_excluded_sources = [ "widget/widget_hwnd_utils.cc" ]
-     libs = [
-       "dwmapi.lib",
-       "imm32.lib",

+ 2 - 2
patches/chromium/unsandboxed_ppapi_processes_skip_zygote.patch

@@ -6,10 +6,10 @@ Subject: unsandboxed_ppapi_processes_skip_zygote.patch
 Unsandboxed ppapi processes should skip zygote.
 
 diff --git a/content/browser/ppapi_plugin_process_host.cc b/content/browser/ppapi_plugin_process_host.cc
-index 86c23036817bc69ed44331acb5257582a3c66ff9..f3e184daf801dacb6a1a57ace82d22734ba770c5 100644
+index b906149ca57ea427d04752565cc21dc86728a72a..8cff1826d89d6e128d40ffb748a5f2ebf9c270e0 100644
 --- a/content/browser/ppapi_plugin_process_host.cc
 +++ b/content/browser/ppapi_plugin_process_host.cc
-@@ -128,6 +128,9 @@ class PpapiPluginSandboxedProcessLauncherDelegate
+@@ -124,6 +124,9 @@ class PpapiPluginSandboxedProcessLauncherDelegate
    service_manager::ZygoteHandle GetZygote() override {
      const base::CommandLine& browser_command_line =
          *base::CommandLine::ForCurrentProcess();

+ 2 - 2
patches/chromium/v8_context_snapshot_generator.patch

@@ -7,10 +7,10 @@ v8_context_snapshot_generator is a build time executable.
 The patch adds the config.
 
 diff --git a/tools/v8_context_snapshot/BUILD.gn b/tools/v8_context_snapshot/BUILD.gn
-index 2d7b357cfc2cd60e6e880a8c93b32166376540b5..002e9e67f8009e780182150705417c500a01c5cd 100644
+index 7cd1597a83dc2546ba960b09f7e1f2f7181a683e..fd0f83fc7ee30a7f7d939369a97ac66aad2883ab 100644
 --- a/tools/v8_context_snapshot/BUILD.gn
 +++ b/tools/v8_context_snapshot/BUILD.gn
-@@ -109,6 +109,7 @@ if (use_v8_context_snapshot) {
+@@ -117,6 +117,7 @@ if (use_v8_context_snapshot) {
      configs += [
        "//v8:external_startup_data",
        ":disable_icf",

+ 4 - 4
patches/chromium/web_contents.patch

@@ -5,10 +5,10 @@ Subject: web_contents.patch
 
 
 diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
-index 3eea51d39eb9239e0eb5d706497d84c8bb1b156f..8586f71224f1cae6a5e9b4005a6acfef9ff64d4d 100644
+index 5a0b39b50481123fb6b37043a2bb8f002bc754ca..c13511e26189e68376e29f38c4ae2e1cc8fd3c57 100644
 --- a/content/browser/web_contents/web_contents_impl.cc
 +++ b/content/browser/web_contents/web_contents_impl.cc
-@@ -2135,6 +2135,12 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
+@@ -2124,6 +2124,12 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
    std::string unique_name;
    frame_tree_.root()->SetFrameName(params.main_frame_name, unique_name);
  
@@ -21,7 +21,7 @@ index 3eea51d39eb9239e0eb5d706497d84c8bb1b156f..8586f71224f1cae6a5e9b4005a6acfef
    WebContentsViewDelegate* delegate =
        GetContentClient()->browser()->GetWebContentsViewDelegate(this);
  
-@@ -2150,6 +2156,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
+@@ -2139,6 +2145,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
            &render_view_host_delegate_view_);
      }
    }
@@ -92,7 +92,7 @@ index c45581fd22b7ba28b76bdebfffdc872b820798c8..f22ac0e611cc79aa1bc7f85836d69e3a
  
  RenderWidgetHostViewBase* WebContentsViewGuest::CreateViewForChildWidget(
 diff --git a/content/public/browser/web_contents.h b/content/public/browser/web_contents.h
-index 6708e254b314efc2366b86e0dcd5b312ec77038e..94a5b87ca72998729f1fca14f247914bb81d60d1 100644
+index 075dd25454306b3f689cf58245ac448b25a64f93..750de66b8002ba66d0f2247d0075da1e51ac764c 100644
 --- a/content/public/browser/web_contents.h
 +++ b/content/public/browser/web_contents.h
 @@ -79,9 +79,12 @@ class BrowserPluginGuestDelegate;

+ 2 - 2
patches/chromium/webview_cross_drag.patch

@@ -5,10 +5,10 @@ Subject: webview_cross_drag.patch
 
 
 diff --git a/content/browser/web_contents/web_contents_view_aura.cc b/content/browser/web_contents/web_contents_view_aura.cc
-index fbefaf207527d4e9be49f7eb455d8c1461dea409..c5d81b68fba3b0deef5018a499728595bf459dcd 100644
+index d8f6e22f0cfc8d84adcb5291a27f8d928b37a812..392935bd098b9e1540ad9550001d066dfaa5def7 100644
 --- a/content/browser/web_contents/web_contents_view_aura.cc
 +++ b/content/browser/web_contents/web_contents_view_aura.cc
-@@ -800,6 +800,7 @@ gfx::NativeView WebContentsViewAura::GetRenderWidgetHostViewParent() const {
+@@ -796,6 +796,7 @@ gfx::NativeView WebContentsViewAura::GetRenderWidgetHostViewParent() const {
  
  bool WebContentsViewAura::IsValidDragTarget(
      RenderWidgetHostImpl* target_rwh) const {

+ 8 - 8
patches/chromium/worker_context_will_destroy.patch

@@ -5,10 +5,10 @@ Subject: worker_context_will_destroy.patch
 
 
 diff --git a/content/public/renderer/content_renderer_client.h b/content/public/renderer/content_renderer_client.h
-index 902bd023e6d2e26a5a89ed441651edd5f364f009..906920393c34043d19183064a2a4506c0a03e80d 100644
+index c1ed9f008b495d4afe05c21a81639383758b36d1..a05cef66facd477057fedb388e4000475bc76830 100644
 --- a/content/public/renderer/content_renderer_client.h
 +++ b/content/public/renderer/content_renderer_client.h
-@@ -383,6 +383,11 @@ class CONTENT_EXPORT ContentRendererClient {
+@@ -376,6 +376,11 @@ class CONTENT_EXPORT ContentRendererClient {
    virtual void DidInitializeWorkerContextOnWorkerThread(
        v8::Local<v8::Context> context) {}
  
@@ -21,10 +21,10 @@ index 902bd023e6d2e26a5a89ed441651edd5f364f009..906920393c34043d19183064a2a4506c
    // 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 875a9079d0d5e97d04ca9870cb1d35dbe39fb24b..08cdba51792cbc73eb55ca7bb1d0ca1711ca97e8 100644
+index dbe2b9c350d32f614c97720ca29dc23cdd6cccbb..2291c764213a2afd10a6074c4d988c7e8011f0e4 100644
 --- a/content/renderer/renderer_blink_platform_impl.cc
 +++ b/content/renderer/renderer_blink_platform_impl.cc
-@@ -994,6 +994,12 @@ void RendererBlinkPlatformImpl::WillStopWorkerThread() {
+@@ -912,6 +912,12 @@ void RendererBlinkPlatformImpl::WillStopWorkerThread() {
    WorkerThreadRegistry::Instance()->WillStopCurrentWorkerThread();
  }
  
@@ -38,10 +38,10 @@ index 875a9079d0d5e97d04ca9870cb1d35dbe39fb24b..08cdba51792cbc73eb55ca7bb1d0ca17
      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 b183977096477563043b288b33d90d3ce9fbd8de..87bd2530eb060c8e68a5a2ca090ce80cd63b942e 100644
+index d2d54ab6ef51f54b6df66f0138d745dd788d9816..c5514f982cbc4acf10bdcf96da533d3f933853b6 100644
 --- a/content/renderer/renderer_blink_platform_impl.h
 +++ b/content/renderer/renderer_blink_platform_impl.h
-@@ -200,6 +200,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl {
+@@ -184,6 +184,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl {
    void DidStartWorkerThread() override;
    void WillStopWorkerThread() override;
    void WorkerContextCreated(const v8::Local<v8::Context>& worker) override;
@@ -50,10 +50,10 @@ index b183977096477563043b288b33d90d3ce9fbd8de..87bd2530eb060c8e68a5a2ca090ce80c
        const blink::WebString& header_name) override;
  
 diff --git a/third_party/blink/public/platform/platform.h b/third_party/blink/public/platform/platform.h
-index 83b3a264c0731acb567401ce64085560470a457f..70cab2fd7d3f5a30683ad2c8da7dcd453f939502 100644
+index a363c7f5c1874c894fa13c78782945456b691e40..c9850694c1fe563d78e9aa482a2d50298fc90b21 100644
 --- a/third_party/blink/public/platform/platform.h
 +++ b/third_party/blink/public/platform/platform.h
-@@ -692,6 +692,7 @@ class BLINK_PLATFORM_EXPORT Platform {
+@@ -641,6 +641,7 @@ class BLINK_PLATFORM_EXPORT Platform {
    virtual void DidStartWorkerThread() {}
    virtual void WillStopWorkerThread() {}
    virtual void WorkerContextCreated(const v8::Local<v8::Context>& worker) {}

+ 4 - 2
patches/config.json

@@ -1,10 +1,12 @@
 {
   "src/electron/patches/chromium": "src",
 
-  "src/electron/patches/quiche": "src/net/third_party/quiche/src",
-
   "src/electron/patches/boringssl": "src/third_party/boringssl/src",
 
+  "src/electron/patches/perfetto":  "src/third_party/perfetto",
+
+  "src/electron/patches/skia":  "src/third_party/skia",
+
   "src/electron/patches/v8":  "src/v8",
 
   "src/electron/patches/node": "src/third_party/electron_node"

+ 1 - 3
patches/perfetto/.patches

@@ -1,3 +1 @@
-revert_fix_chrome_roll_update_protoc_host_toolchain_rules.patch
-revert_make_trace_processor_a_host-only_target.patch
-metatrace_remove_memset_and_trivial_ctor_assumption.patch
+build_win_fix_compilation_error_with_msstl.patch

+ 58 - 0
patches/perfetto/build_win_fix_compilation_error_with_msstl.patch

@@ -0,0 +1,58 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Deepak Mohan <[email protected]>
+Date: Thu, 24 Oct 2019 17:58:10 -0700
+Subject: build,[win]: fix compilation error with MSSTL
+
+Moves the accessor definition from header file to avoid the following
+error:
+
+\MSVC\14.16.27023\include\vector(905,3): error: arithmetic on a pointer
+to an incomplete type 'std::_Simple_types<perfetto::FieldDescriptorProto>::value_type' (aka 'perfetto::FieldDescriptorProto')
+                ++this->_Mylast();
+                ^ ~~~~~~~~~~~~~~~
+\MSVC\14.16.27023\include\vector(919,12): note: in instantiation of function template specialization
+'std::vector<perfetto::FieldDescriptorProto, std::allocator<perfetto::FieldDescriptorProto> >::_Emplace_back_with_unused_capacity<>'requested here
+                        return (_Emplace_back_with_unused_capacity(_STD forward<_Valty>(_Val)...));
+                                ^
+gen/third_party/perfetto\protos/perfetto/common/descriptor.gen.h(155,54): note: in instantiation of function template
+specialization 'std::vector<perfetto::FieldDescriptorProto, std::allocator<perfetto::FieldDescriptorProto> >::emplace_back<>' requested here
+  FieldDescriptorProto* add_extension() { extension_.emplace_back(); return &extension_.back(); }
+                                                     ^
+gen/third_party/perfetto\protos/perfetto/common/descriptor.gen.h(34,7): note: forward declaration of 'perfetto::FieldDescriptorProto'
+class FieldDescriptorProto;
+
+diff --git a/src/protozero/protoc_plugin/cppgen_plugin.cc b/src/protozero/protoc_plugin/cppgen_plugin.cc
+index 98e6c470471db090e2b6bd0824b58adcfc15100f..2ce5abfd9cbdae8d1d7aeeebf5403cd382942869 100644
+--- a/src/protozero/protoc_plugin/cppgen_plugin.cc
++++ b/src/protozero/protoc_plugin/cppgen_plugin.cc
+@@ -402,7 +402,7 @@ void CppObjGenerator::GenClassDecl(const Descriptor* msg, Printer* p) const {
+                GetCppType(field, false), "n", field->lowercase_name());
+       p->Print("void clear_$n$() { $n$_.clear(); }\n", "n",
+                field->lowercase_name());
+-      p->Print("$t$* add_$n$() { $n$_.emplace_back(); return &$n$_.back(); }\n",
++      p->Print("$t$* add_$n$();\n",
+                "t", GetCppType(field, false), "n", field->lowercase_name());
+     }
+   }
+@@ -461,6 +461,21 @@ void CppObjGenerator::GenClassDef(const Descriptor* msg, Printer* p) const {
+   p->Outdent();
+   p->Print("\n}\n\n");
+ 
++  // Generate Accessor Definitons for repeated field,
++  // worksaround incomplete type error with MSSTL.
++  for (int i = 0; i < msg->field_count(); i++) {
++    const FieldDescriptor* field = msg->field(i);
++    if (field->is_repeated()) {
++      p->Print("$t$* $n$::add_$p$() {\n", "t", GetCppType(field, false),
++               "n", full_name, "p", field->lowercase_name());
++      p->Indent();
++      p->Print("$n$_.emplace_back();\n", "n", field->lowercase_name());
++      p->Print("return &$n$_.back();\n", "n", field->lowercase_name());
++      p->Outdent();
++      p->Print("}\n\n");
++    }
++  }
++
+   std::string proto_type = GetFullName(msg, true);
+ 
+   // Genrate the ParseRawProto() method definition.

+ 0 - 80
patches/perfetto/metatrace_remove_memset_and_trivial_ctor_assumption.patch

@@ -1,80 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Primiano Tucci <[email protected]>
-Date: Thu, 3 Oct 2019 16:24:52 +0100
-Subject: metatrace: remove memset and trivial-ctor assumption
-
-Turns out that on MSVC std::atomic<int> is not trivially constructible
-(although I think is still a plain old int, it just fails the check).
-Fall back on resetting each element individually.
-Thankfully the compiler can see through and eventually figures out
-it can do a memset: https://godbolt.org/z/wMre8O
-
-Bug: chromium:1010616
-Change-Id: I971ff888306d6bdbaf6e6b886f9ca506ddc1b30a
-
-diff --git a/include/perfetto/ext/base/metatrace.h b/include/perfetto/ext/base/metatrace.h
-index 3858f68ec5eaf130aafa7d33f52a00e370395204..2c587c3fc63093f71a05e4c757def5c6384bf703 100644
---- a/include/perfetto/ext/base/metatrace.h
-+++ b/include/perfetto/ext/base/metatrace.h
-@@ -116,22 +116,33 @@ struct Record {
-     timestamp_ns_high = static_cast<uint16_t>(diff >> 32);
-   }
- 
-+  // We can't just memset() this class because on MSVC std::atomic<> is not
-+  // trivially constructible anymore. Also std::atomic<> has a deleted copy
-+  // constructor so we cant just do "*this = Record()" either.
-+  // See http://bit.ly/339Jlzd .
-+  void clear() {
-+    this->~Record();
-+    new (this) Record();
-+  }
-+
-   // This field holds the type (counter vs event) in the MSB and event ID (as
-   // defined in metatrace_events.h) in the lowest 15 bits. It is also used also
-   // as a linearization point: this is always written after all the other
-   // fields with a release-store. This is so the reader can determine whether it
-   // can safely process the other event fields after a load-acquire.
--  std::atomic<uint16_t> type_and_id;
-+  std::atomic<uint16_t> type_and_id{};
- 
-   // Timestamp is stored as a 48-bits value diffed against g_enabled_timestamp.
-   // This gives us 78 hours from Enabled().
--  uint16_t timestamp_ns_high;
--  uint32_t timestamp_ns_low;
-+  uint16_t timestamp_ns_high = 0;
-+  uint32_t timestamp_ns_low = 0;
- 
--  uint32_t thread_id;
-+  uint32_t thread_id = 0;
- 
-   union {
--    uint32_t duration_ns;   // If type == event.
-+    // Only one of the two elements can be zero initialized, clang complains
-+    // about "initializing multiple members of union" otherwise.
-+    uint32_t duration_ns = 0;  // If type == event.
-     int32_t counter_value;  // If type == counter.
-   };
- };
-diff --git a/src/base/metatrace.cc b/src/base/metatrace.cc
-index 9ef2c68777c5d497d92b12d52df4df2454feda02..67d167c8d07bc8701d261c56d11ba17afcb6ec8a 100644
---- a/src/base/metatrace.cc
-+++ b/src/base/metatrace.cc
-@@ -84,15 +84,9 @@ void Disable() {
- 
- // static
- void RingBuffer::Reset() {
--  static_assert(PERFETTO_IS_TRIVIALLY_CONSTRUCTIBLE(Record) &&
--                    std::is_trivially_destructible<Record>::value,
--                "Record must be trivial");
--  // Cast pointers to void* to suppress "-Wclass-memaccess" from gcc, which
--  // triggers as we're doing a raw memory set for a class (Record) that doesn't
--  // have a copy assignment operator (due to the atomic |type_and_id|).
--  memset(static_cast<void*>(records_.data()), 0, sizeof(records_));
--  memset(static_cast<void*>(&bankruptcy_record_), 0,
--         sizeof(bankruptcy_record_));
-+  bankruptcy_record_.clear();
-+  for (Record& record : records_)
-+    record.clear();
-   wr_index_ = 0;
-   rd_index_ = 0;
-   has_overruns_ = false;

+ 0 - 1
patches/quiche/.patches

@@ -1 +0,0 @@
-include_ostream_in_quic_ip_address_h.patch

+ 0 - 25
patches/quiche/include_ostream_in_quic_ip_address_h.patch

@@ -1,25 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: vasilvv <[email protected]>
-Date: Thu, 3 Oct 2019 09:37:10 -0700
-Subject: [build] Include ostream in quic_ip_address.h
-
-Explicitly #include <ostream> in quic/platform/api/quic_ip_address.h, since std::ostream is referenced in it. In the C++ STL shipped with Visual Studio 2019, none of the headers included in quic_ip_address.h ends up including the required templates, which caused a compile error.
-
-Patch by Jaime Bernardo <[email protected]>: https://quiche-review.googlesource.com/c/quiche/+/10280
-
-gfe-relnote: n/a (no functional change)
-PiperOrigin-RevId: 272678937
-Change-Id: I304ed7ad7f114924268ef832551fb2ddcba73402
-
-diff --git a/quic/platform/api/quic_ip_address.h b/quic/platform/api/quic_ip_address.h
-index e1a1076cbcbd0bfe72e69b4c0fefe2b21ec4426c..3585970d9d50f2b026616e758576dd466044c39b 100644
---- a/quic/platform/api/quic_ip_address.h
-+++ b/quic/platform/api/quic_ip_address.h
-@@ -15,6 +15,7 @@
- #include <sys/types.h>
- #endif
- 
-+#include <ostream>
- #include <string>
- 
- #include "net/third_party/quiche/src/quic/platform/api/quic_export.h"

+ 1 - 0
patches/skia/.patches

@@ -0,0 +1 @@
+build_fix_compilation_on_macos_with_10_14_sdk.patch

+ 39 - 0
patches/skia/build_fix_compilation_on_macos_with_10_14_sdk.patch

@@ -0,0 +1,39 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: deepak1556 <[email protected]>
+Date: Mon, 21 Oct 2019 15:20:20 -0700
+Subject: build: fix compilation on macOS with 10.14 SDK
+
+typename 'B0' is defined in sys/termios.h
+
+Bug: none
+Change-Id: I6a2e6eb1a91f123459087280b70493dab795bbd3
+
+diff --git a/AUTHORS b/AUTHORS
+index 80776a6afc6954e298a00b9403121514e353c2da..7c4d154f8dfcdfaafbec930ba1486f8e0613f1e7 100644
+--- a/AUTHORS
++++ b/AUTHORS
+@@ -17,6 +17,7 @@ Amazon, Inc <*@amazon.com>
+ Anthony Catel <[email protected]>
+ ARM <*@arm.com>
+ Dawson Coleman <[email protected]>
++Deepak Mohan <[email protected]>
+ Ehsan Akhgari <[email protected]>
+ Facebook, Inc. <*fb.com>
+ George Wright <[email protected]>
+diff --git a/include/private/SkTLogic.h b/include/private/SkTLogic.h
+index f128a462b4a2084b5edb1a58d3485ed4cf465a7f..8cf8c284f1d0d8aaec304f55028d46a7667e8628 100644
+--- a/include/private/SkTLogic.h
++++ b/include/private/SkTLogic.h
+@@ -62,9 +62,9 @@ template<> struct make_index_sequence<1> : skstd::index_sequence<0>{};
+ struct monostate {};
+ 
+ template<typename...> struct conjunction : std::true_type { };
+-template<typename B0> struct conjunction<B0> : B0 { };
+-template<typename B0, typename... Bs>
+-struct conjunction<B0, Bs...> : std::conditional<bool(B0::value), conjunction<Bs...>, B0>::type { };
++template<typename T> struct conjunction<T> : T { };
++template<typename T, typename... Ts>
++struct conjunction<T, Ts...> : std::conditional<bool(T::value), conjunction<Ts...>, T>::type { };
+ }  // namespace skstd
+ 
+ // The sknonstd namespace contains things we would like to be proposed and feel std-ish.

+ 0 - 1
patches/v8/.patches

@@ -7,4 +7,3 @@ export_symbols_needed_for_windows_build.patch
 workaround_an_undefined_symbol_error.patch
 do_not_export_private_v8_symbols_on_windows.patch
 revert_cleanup_switch_offset_of_to_offsetof_where_possible.patch
-ptr-compr_temporarily_disable_31_bit_smis_on_64-bit_architectures.patch

+ 4 - 4
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 24052f25bf7499743d1bf59846325274c3fd81c0..c5f0436eb771b6ca86fdf8e0dc195221c6b481f4 100644
+index f3a05531aa8b9d8c2b9c04ffaff505dbbef9e46d..fe86e1a17f2cad844ef92f45a8da6e7fee4eba49 100644
 --- a/include/v8.h
 +++ b/include/v8.h
-@@ -4748,6 +4748,13 @@ class V8_EXPORT ArrayBuffer : public Object {
+@@ -4926,6 +4926,13 @@ class V8_EXPORT ArrayBuffer : public Object {
       */
      virtual void* AllocateUninitialized(size_t length) = 0;
  
@@ -30,10 +30,10 @@ index 24052f25bf7499743d1bf59846325274c3fd81c0..c5f0436eb771b6ca86fdf8e0dc195221
       * 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 b03cc11532e0ec1d0e047bd794d15416cb343670..e9e46fd117dbf67a0fb7bdf560e152daa8624ff8 100644
+index 15ccbbe9cca3f15751a720c0cab10d815e59d51d..f6f2ba988d95660637f6733dafdd12db7acaa992 100644
 --- a/src/api/api.cc
 +++ b/src/api/api.cc
-@@ -518,6 +518,10 @@ void V8::SetSnapshotDataBlob(StartupData* snapshot_blob) {
+@@ -516,6 +516,10 @@ void V8::SetSnapshotDataBlob(StartupData* snapshot_blob) {
    i::V8::SetSnapshotBlob(snapshot_blob);
  }
  

+ 4 - 4
patches/v8/build_gn.patch

@@ -5,10 +5,10 @@ Subject: build_gn.patch
 
 
 diff --git a/BUILD.gn b/BUILD.gn
-index 7e683f86e529316f923b8ff2b6fe5ed94f22420a..b0e242d6c369185172184c1f4a88247aa1e0896c 100644
+index f67cce51b1ececd643271a8c55972571a45fd51d..23180f0a67ebc2eab3b7a0588dfb21823c5ecad9 100644
 --- a/BUILD.gn
 +++ b/BUILD.gn
-@@ -284,7 +284,7 @@ config("internal_config") {
+@@ -281,7 +281,7 @@ config("internal_config") {
      ":v8_header_features",
    ]
  
@@ -17,7 +17,7 @@ index 7e683f86e529316f923b8ff2b6fe5ed94f22420a..b0e242d6c369185172184c1f4a88247a
      defines += [ "BUILDING_V8_SHARED" ]
    }
  }
-@@ -3834,7 +3834,7 @@ if (current_toolchain == v8_generator_toolchain) {
+@@ -3780,7 +3780,7 @@ if (current_toolchain == v8_generator_toolchain) {
        "src/interpreter/bytecodes.h",
      ]
  
@@ -26,7 +26,7 @@ index 7e683f86e529316f923b8ff2b6fe5ed94f22420a..b0e242d6c369185172184c1f4a88247a
  
      deps = [
        ":v8_libbase",
-@@ -3865,6 +3865,8 @@ if (v8_use_snapshot && current_toolchain == v8_snapshot_toolchain) {
+@@ -3813,6 +3813,8 @@ if (current_toolchain == v8_snapshot_toolchain) {
  
      configs = [ ":internal_config" ]
  

+ 4 - 4
patches/v8/dcheck.patch

@@ -5,10 +5,10 @@ Subject: dcheck.patch
 
 
 diff --git a/src/api/api.cc b/src/api/api.cc
-index 11ca1064085568986b8d21250dd8617f0d03f652..39dc796b72553259b167721a4fd51f3f51ef1358 100644
+index d753abd5d2d7e788b7dd96a200d5be0d85f87fe3..68ca3303470448d42fcbc1f3b7794404756b5972 100644
 --- a/src/api/api.cc
 +++ b/src/api/api.cc
-@@ -8501,7 +8501,7 @@ void Isolate::SetPromiseRejectCallback(PromiseRejectCallback callback) {
+@@ -8698,7 +8698,7 @@ void Isolate::SetPromiseRejectCallback(PromiseRejectCallback callback) {
  }
  
  void Isolate::RunMicrotasks() {
@@ -18,10 +18,10 @@ index 11ca1064085568986b8d21250dd8617f0d03f652..39dc796b72553259b167721a4fd51f3f
    isolate->default_microtask_queue()->RunMicrotasks(isolate);
  }
 diff --git a/src/heap/heap.cc b/src/heap/heap.cc
-index 92265dd7665887cea46be407180e42de4985f8fd..4268f289c22953c386e28ed3968bedf80e595914 100644
+index 9c68990a7cb6e3160164fefbe8d800e1659e7760..a9935cc42ca3bd8805fb7d5c719676c0032be233 100644
 --- a/src/heap/heap.cc
 +++ b/src/heap/heap.cc
-@@ -5312,9 +5312,9 @@ void Heap::TearDown() {
+@@ -5311,9 +5311,9 @@ void Heap::TearDown() {
  void Heap::AddGCPrologueCallback(v8::Isolate::GCCallbackWithData callback,
                                   GCType gc_type, void* data) {
    DCHECK_NOT_NULL(callback);

+ 64 - 63
patches/v8/deps_provide_more_v8_backwards_compatibility.patch

@@ -22,128 +22,129 @@ Reviewed-By: Yang Guo <[email protected]>
 Reviewed-By: Michaël Zasso <[email protected]>
 
 diff --git a/include/v8.h b/include/v8.h
-index c5f0436eb771b6ca86fdf8e0dc195221c6b481f4..4c93d92fe36c6712a239c47e42bcb2cb6992cb57 100644
+index fe86e1a17f2cad844ef92f45a8da6e7fee4eba49..3450677471b7276b631ea12a4cd39514c8105b46 100644
 --- a/include/v8.h
 +++ b/include/v8.h
-@@ -1195,6 +1195,10 @@ class V8_EXPORT PrimitiveArray {
+@@ -1330,6 +1330,10 @@ class V8_EXPORT PrimitiveArray {
   public:
    static Local<PrimitiveArray> New(Isolate* isolate, int length);
    int Length() const;
-+  V8_DEPRECATED("Use Isolate* version",
-+      void Set(int index, Local<Primitive> item));
-+  V8_DEPRECATED("Use Isolate* version",
-+      Local<Primitive> Get(int index));
++  V8_DEPRECATED("Use Isolate* version")
++  void Set(int index, Local<Primitive> item);
++  V8_DEPRECATED("Use Isolate* version")
++  Local<Primitive> Get(int index);
    void Set(Isolate* isolate, int index, Local<Primitive> item);
    Local<Primitive> Get(Isolate* isolate, int index);
  };
-@@ -1935,6 +1939,8 @@ class V8_EXPORT StackTrace {
+@@ -2078,6 +2082,8 @@ class V8_EXPORT StackTrace {
    /**
     * Returns a StackFrame at a particular index.
     */
-+  V8_DEPRECATED("Use Isolate version",
-+                Local<StackFrame> GetFrame(uint32_t index) const);
++  V8_DEPRECATED("Use Isolate version")
++  Local<StackFrame> GetFrame(uint32_t index) const;
    Local<StackFrame> GetFrame(Isolate* isolate, uint32_t index) const;
  
    /**
-@@ -2629,6 +2635,13 @@ class V8_EXPORT Value : public Data {
+@@ -2774,6 +2780,15 @@ class V8_EXPORT Value : public Data {
  
    Local<Boolean> ToBoolean(Isolate* isolate) const;
  
-+  inline V8_DEPRECATED("Use maybe version",
-+                       Local<Boolean> ToBoolean() const);
-+  inline V8_DEPRECATED("Use maybe version", Local<String> ToString() const);
-+  inline V8_DEPRECATED("Use maybe version", Local<Object> ToObject() const);
-+  inline V8_DEPRECATED("Use maybe version",
-+                       Local<Integer> ToInteger() const);
++  V8_DEPRECATED("Use maybe version")
++  inline Local<Boolean> ToBoolean() const;
++  V8_DEPRECATED("Use maybe version")
++  inline Local<String> ToString() const;
++  V8_DEPRECATED("Use maybe version")
++  inline Local<Object> ToObject() const;
++  V8_DEPRECATED("Use maybe version")
++  inline Local<Integer> ToInteger() const;
 +
    /**
     * Attempts to convert a string to an array index.
     * Returns an empty handle if the conversion fails.
-@@ -2645,7 +2658,14 @@ class V8_EXPORT Value : public Data {
+@@ -2790,7 +2805,14 @@ class V8_EXPORT Value : public Data {
        Local<Context> context) const;
    V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
  
-+  V8_DEPRECATED("Use maybe version", bool BooleanValue() const);
-+  V8_DEPRECATED("Use maybe version", double NumberValue() const);
-+  V8_DEPRECATED("Use maybe version", int64_t IntegerValue() const);
-+  V8_DEPRECATED("Use maybe version", uint32_t Uint32Value() const);
-+  V8_DEPRECATED("Use maybe version", int32_t Int32Value() const);
++  V8_DEPRECATED("Use maybe version") bool BooleanValue() const;
++  V8_DEPRECATED("Use maybe version") double NumberValue() const;
++  V8_DEPRECATED("Use maybe version") int64_t IntegerValue() const;
++  V8_DEPRECATED("Use maybe version") uint32_t Uint32Value() const;
++  V8_DEPRECATED("Use maybe version") int32_t Int32Value() const;
 +
    /** JS == */
-+  V8_DEPRECATED("Use maybe version", bool Equals(Local<Value> that) const);
++  V8_DEPRECATED("Use maybe version") bool Equals(Local<Value> that) const;
    V8_WARN_UNUSED_RESULT Maybe<bool> Equals(Local<Context> context,
                                             Local<Value> that) const;
    bool StrictEquals(Local<Value> that) const;
-@@ -2752,6 +2772,8 @@ class V8_EXPORT String : public Name {
+@@ -2897,6 +2919,8 @@ class V8_EXPORT String : public Name {
     * Returns the number of bytes in the UTF-8 encoded
     * representation of this string.
     */
-+  V8_DEPRECATED("Use Isolate version instead", int Utf8Length() const);
++  V8_DEPRECATED("Use Isolate version instead") int Utf8Length() const;
 +
    int Utf8Length(Isolate* isolate) const;
  
    /**
-@@ -2808,12 +2830,23 @@ class V8_EXPORT String : public Name {
+@@ -2953,12 +2977,22 @@ class V8_EXPORT String : public Name {
    // 16-bit character codes.
    int Write(Isolate* isolate, uint16_t* buffer, int start = 0, int length = -1,
              int options = NO_OPTIONS) const;
-+  V8_DEPRECATED("Use Isolate* version",
-+                int Write(uint16_t* buffer, int start = 0, int length = -1,
-+                          int options = NO_OPTIONS) const);
++  V8_DEPRECATED("Use Isolate* version")
++  int Write(uint16_t* buffer, int start = 0, int length = -1,
++            int options = NO_OPTIONS) const;
    // One byte characters.
    int WriteOneByte(Isolate* isolate, uint8_t* buffer, int start = 0,
                     int length = -1, int options = NO_OPTIONS) const;
-+  V8_DEPRECATED("Use Isolate* version",
-+                int WriteOneByte(uint8_t* buffer, int start = 0,
-+                                 int length = -1, int options = NO_OPTIONS)
-+                    const);
++  V8_DEPRECATED("Use Isolate* version")
++  int WriteOneByte(uint8_t* buffer, int start = 0,
++                   int length = -1, int options = NO_OPTIONS) const;
    // UTF-8 encoded characters.
    int WriteUtf8(Isolate* isolate, char* buffer, int length = -1,
                  int* nchars_ref = nullptr, int options = NO_OPTIONS) const;
-+  V8_DEPRECATED("Use Isolate* version",
-+                int WriteUtf8(char* buffer, int length = -1,
-+                              int* nchars_ref = nullptr,
-+                              int options = NO_OPTIONS) const);
++  V8_DEPRECATED("Use Isolate* version")
++  int WriteUtf8(char* buffer, int length = -1,
++                int* nchars_ref = nullptr,
++                int options = NO_OPTIONS) const;
  
    /**
     * A zero length string.
-@@ -2981,6 +3014,9 @@ class V8_EXPORT String : public Name {
+@@ -3126,6 +3160,8 @@ class V8_EXPORT String : public Name {
     */
    static Local<String> Concat(Isolate* isolate, Local<String> left,
                                Local<String> right);
-+  static V8_DEPRECATED("Use Isolate* version",
-+                       Local<String> Concat(Local<String> left,
-+                                            Local<String> right));
++  V8_DEPRECATED("Use Isolate* version")
++  static Local<String> Concat(Local<String> left, Local<String> right);
  
    /**
     * Creates a new external string using the data defined in the given
-@@ -3045,6 +3081,8 @@ class V8_EXPORT String : public Name {
+@@ -3190,6 +3226,8 @@ class V8_EXPORT String : public Name {
     */
    class V8_EXPORT Utf8Value {
     public:
-+    V8_DEPRECATED("Use Isolate version",
-+                  explicit Utf8Value(Local<v8::Value> obj));
++    V8_DEPRECATED("Use Isolate version")
++    explicit Utf8Value(Local<v8::Value> obj);
      Utf8Value(Isolate* isolate, Local<v8::Value> obj);
      ~Utf8Value();
      char* operator*() { return str_; }
-@@ -3068,6 +3106,7 @@ class V8_EXPORT String : public Name {
+@@ -3213,6 +3251,8 @@ class V8_EXPORT String : public Name {
     */
    class V8_EXPORT Value {
     public:
-+    V8_DEPRECATED("Use Isolate version", explicit Value(Local<v8::Value> obj));
++    V8_DEPRECATED("Use Isolate version")
++    explicit Value(Local<v8::Value> obj);
      Value(Isolate* isolate, Local<v8::Value> obj);
      ~Value();
      uint16_t* operator*() { return str_; }
-@@ -5407,6 +5446,8 @@ class V8_EXPORT BooleanObject : public Object {
+@@ -5689,6 +5729,8 @@ class V8_EXPORT BooleanObject : public Object {
  class V8_EXPORT StringObject : public Object {
   public:
    static Local<Value> New(Isolate* isolate, Local<String> value);
-+  V8_DEPRECATED("Use Isolate* version",
-+                static Local<Value> New(Local<String> value));
++  V8_DEPRECATED("Use Isolate* version")
++  static Local<Value> New(Local<String> value);
  
    Local<String> ValueOf() const;
  
-@@ -10741,6 +10782,29 @@ template <class T> Value* Value::Cast(T* value) {
+@@ -11131,6 +11173,29 @@ template <class T> Value* Value::Cast(T* value) {
  }
  
  
@@ -174,10 +175,10 @@ index c5f0436eb771b6ca86fdf8e0dc195221c6b481f4..4c93d92fe36c6712a239c47e42bcb2cb
  #ifdef V8_ENABLE_CHECKS
    CheckCast(value);
 diff --git a/src/api/api.cc b/src/api/api.cc
-index e9e46fd117dbf67a0fb7bdf560e152daa8624ff8..11ca1064085568986b8d21250dd8617f0d03f652 100644
+index f6f2ba988d95660637f6733dafdd12db7acaa992..d753abd5d2d7e788b7dd96a200d5be0d85f87fe3 100644
 --- a/src/api/api.cc
 +++ b/src/api/api.cc
-@@ -2206,6 +2206,10 @@ int PrimitiveArray::Length() const {
+@@ -2199,6 +2199,10 @@ int PrimitiveArray::Length() const {
    return array->length();
  }
  
@@ -188,7 +189,7 @@ index e9e46fd117dbf67a0fb7bdf560e152daa8624ff8..11ca1064085568986b8d21250dd8617f
  void PrimitiveArray::Set(Isolate* v8_isolate, int index,
                           Local<Primitive> item) {
    i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate);
-@@ -2219,6 +2223,10 @@ void PrimitiveArray::Set(Isolate* v8_isolate, int index,
+@@ -2212,6 +2216,10 @@ void PrimitiveArray::Set(Isolate* v8_isolate, int index,
    array->set(index, *i_item);
  }
  
@@ -199,7 +200,7 @@ index e9e46fd117dbf67a0fb7bdf560e152daa8624ff8..11ca1064085568986b8d21250dd8617f
  Local<Primitive> PrimitiveArray::Get(Isolate* v8_isolate, int index) {
    i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate);
    i::Handle<i::FixedArray> array = Utils::OpenHandle(this);
-@@ -2960,6 +2968,10 @@ void Message::PrintCurrentStackTrace(Isolate* isolate, FILE* out) {
+@@ -2975,6 +2983,10 @@ void Message::PrintCurrentStackTrace(Isolate* isolate, FILE* out) {
  
  // --- S t a c k T r a c e ---
  
@@ -210,7 +211,7 @@ index e9e46fd117dbf67a0fb7bdf560e152daa8624ff8..11ca1064085568986b8d21250dd8617f
  Local<StackFrame> StackTrace::GetFrame(Isolate* v8_isolate,
                                         uint32_t index) const {
    i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate);
-@@ -3547,6 +3559,34 @@ MaybeLocal<BigInt> Value::ToBigInt(Local<Context> context) const {
+@@ -3562,6 +3574,34 @@ MaybeLocal<BigInt> Value::ToBigInt(Local<Context> context) const {
    RETURN_ESCAPED(result);
  }
  
@@ -245,7 +246,7 @@ index e9e46fd117dbf67a0fb7bdf560e152daa8624ff8..11ca1064085568986b8d21250dd8617f
  bool Value::BooleanValue(Isolate* v8_isolate) const {
    return Utils::OpenHandle(this)->BooleanValue(
        reinterpret_cast<i::Isolate*>(v8_isolate));
-@@ -3894,6 +3934,11 @@ MaybeLocal<Uint32> Value::ToArrayIndex(Local<Context> context) const {
+@@ -3951,6 +3991,11 @@ MaybeLocal<Uint32> Value::ToArrayIndex(Local<Context> context) const {
    return Local<Uint32>();
  }
  
@@ -257,7 +258,7 @@ index e9e46fd117dbf67a0fb7bdf560e152daa8624ff8..11ca1064085568986b8d21250dd8617f
  Maybe<bool> Value::Equals(Local<Context> context, Local<Value> that) const {
    i::Isolate* isolate = Utils::OpenHandle(*context)->GetIsolate();
    auto self = Utils::OpenHandle(this);
-@@ -5111,6 +5156,10 @@ bool String::ContainsOnlyOneByte() const {
+@@ -5168,6 +5213,10 @@ bool String::ContainsOnlyOneByte() const {
    return helper.Check(*str);
  }
  
@@ -268,7 +269,7 @@ index e9e46fd117dbf67a0fb7bdf560e152daa8624ff8..11ca1064085568986b8d21250dd8617f
  int String::Utf8Length(Isolate* isolate) const {
    i::Handle<i::String> str = Utils::OpenHandle(this);
    str = i::String::Flatten(reinterpret_cast<i::Isolate*>(isolate), str);
-@@ -5263,6 +5312,14 @@ static int WriteUtf8Impl(i::Vector<const Char> string, char* write_start,
+@@ -5320,6 +5369,14 @@ static int WriteUtf8Impl(i::Vector<const Char> string, char* write_start,
  }
  }  // anonymous namespace
  
@@ -283,7 +284,7 @@ index e9e46fd117dbf67a0fb7bdf560e152daa8624ff8..11ca1064085568986b8d21250dd8617f
  int String::WriteUtf8(Isolate* v8_isolate, char* buffer, int capacity,
                        int* nchars_ref, int options) const {
    i::Handle<i::String> str = Utils::OpenHandle(this);
-@@ -5301,6 +5358,17 @@ static inline int WriteHelper(i::Isolate* isolate, const String* string,
+@@ -5358,6 +5415,17 @@ static inline int WriteHelper(i::Isolate* isolate, const String* string,
    return end - start;
  }
  
@@ -301,7 +302,7 @@ index e9e46fd117dbf67a0fb7bdf560e152daa8624ff8..11ca1064085568986b8d21250dd8617f
  int String::WriteOneByte(Isolate* isolate, uint8_t* buffer, int start,
                           int length, int options) const {
    return WriteHelper(reinterpret_cast<i::Isolate*>(isolate), this, buffer,
-@@ -6218,6 +6286,11 @@ MaybeLocal<String> String::NewFromTwoByte(Isolate* isolate,
+@@ -6269,6 +6337,11 @@ MaybeLocal<String> String::NewFromTwoByte(Isolate* isolate,
    return result;
  }
  
@@ -313,7 +314,7 @@ index e9e46fd117dbf67a0fb7bdf560e152daa8624ff8..11ca1064085568986b8d21250dd8617f
  Local<String> v8::String::Concat(Isolate* v8_isolate, Local<String> left,
                                   Local<String> right) {
    i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate);
-@@ -6488,6 +6561,10 @@ bool v8::BooleanObject::ValueOf() const {
+@@ -6539,6 +6612,10 @@ bool v8::BooleanObject::ValueOf() const {
    return js_primitive_wrapper->value().IsTrue(isolate);
  }
  
@@ -324,7 +325,7 @@ index e9e46fd117dbf67a0fb7bdf560e152daa8624ff8..11ca1064085568986b8d21250dd8617f
  Local<v8::Value> v8::StringObject::New(Isolate* v8_isolate,
                                         Local<String> value) {
    i::Handle<i::String> string = Utils::OpenHandle(*value);
-@@ -8874,6 +8951,9 @@ bool MicrotasksScope::IsRunningMicrotasks(Isolate* v8_isolate) {
+@@ -9078,6 +9155,9 @@ bool MicrotasksScope::IsRunningMicrotasks(Isolate* v8_isolate) {
    return microtask_queue->IsRunningMicrotasks();
  }
  
@@ -334,7 +335,7 @@ index e9e46fd117dbf67a0fb7bdf560e152daa8624ff8..11ca1064085568986b8d21250dd8617f
  String::Utf8Value::Utf8Value(v8::Isolate* isolate, v8::Local<v8::Value> obj)
      : str_(nullptr), length_(0) {
    if (obj.IsEmpty()) return;
-@@ -8891,6 +8971,9 @@ String::Utf8Value::Utf8Value(v8::Isolate* isolate, v8::Local<v8::Value> obj)
+@@ -9095,6 +9175,9 @@ String::Utf8Value::Utf8Value(v8::Isolate* isolate, v8::Local<v8::Value> obj)
  
  String::Utf8Value::~Utf8Value() { i::DeleteArray(str_); }
  

+ 4 - 4
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 62d1548a10e367795ec3d649fe1cf112b278ec19..8d49e29cb4ab4d7d3373cef20e9033b0ac4ca07a 100644
+index dd08294f26ba634330fd4d3b574708447f6809ce..58b4fb993e468bffc258c59fd7bf5c829e28446c 100644
 --- a/BUILD.gn
 +++ b/BUILD.gn
-@@ -284,6 +284,10 @@ config("internal_config") {
+@@ -281,6 +281,10 @@ config("internal_config") {
      ":v8_header_features",
    ]
  
@@ -27,10 +27,10 @@ index 62d1548a10e367795ec3d649fe1cf112b278ec19..8d49e29cb4ab4d7d3373cef20e9033b0
      defines += [ "BUILDING_V8_SHARED" ]
    }
 diff --git a/src/base/macros.h b/src/base/macros.h
-index 329c5a90636aa5ef587c743ed20b56c2c2195037..1d43c165341fcf089bf8d5566394d1b80d3c8b22 100644
+index 5f52a9893e6a564640bde19d6cf376b74ab9a429..b7f3c4e837947311cef6373bd6a7c1b589da9dc9 100644
 --- a/src/base/macros.h
 +++ b/src/base/macros.h
-@@ -395,13 +395,17 @@ bool is_inbounds(float_t v) {
+@@ -399,13 +399,17 @@ bool is_inbounds(float_t v) {
  #ifdef V8_OS_WIN
  
  // Setup for Windows shared library export.

+ 2 - 2
patches/v8/export_symbols_needed_for_windows_build.patch

@@ -6,10 +6,10 @@ Subject: Export symbols needed for Windows build
 These symbols are required to build v8 with BUILD_V8_SHARED on Windows.
 
 diff --git a/src/objects/objects.h b/src/objects/objects.h
-index b4e78a19377df73051c2e6e650d5b654ca435c6b..93de4136f2a0498038d17866f99f72ea8e217b2f 100644
+index c98b60d70fa889dc393ca63aba4d116fa8fb2ccd..9db7958f5ef23d5d781505d3ea724149427370bf 100644
 --- a/src/objects/objects.h
 +++ b/src/objects/objects.h
-@@ -796,7 +796,7 @@ enum class KeyCollectionMode {
+@@ -811,7 +811,7 @@ enum class KeyCollectionMode {
  // Utility superclass for stack-allocated objects that must be updated
  // on gc.  It provides two ways for the gc to update instances, either
  // iterating or updating after gc.

+ 4 - 4
patches/v8/expose_mksnapshot.patch

@@ -6,14 +6,14 @@ Subject: expose_mksnapshot.patch
 Needed in order to target mksnapshot for mksnapshot zip.
 
 diff --git a/BUILD.gn b/BUILD.gn
-index b0e242d6c369185172184c1f4a88247aa1e0896c..62d1548a10e367795ec3d649fe1cf112b278ec19 100644
+index 23180f0a67ebc2eab3b7a0588dfb21823c5ecad9..dd08294f26ba634330fd4d3b574708447f6809ce 100644
 --- a/BUILD.gn
 +++ b/BUILD.gn
-@@ -3845,7 +3845,6 @@ if (current_toolchain == v8_generator_toolchain) {
+@@ -3791,7 +3791,6 @@ if (current_toolchain == v8_generator_toolchain) {
  
- if (v8_use_snapshot && current_toolchain == v8_snapshot_toolchain) {
+ if (current_toolchain == v8_snapshot_toolchain) {
    v8_executable("mksnapshot") {
 -    visibility = [ ":*" ]  # Only targets in this file can depend on this.
  
      sources = [
-       "src/snapshot/embedded/embedded-file-writer.cc",
+       "src/snapshot/embedded/embedded-empty.cc",

+ 0 - 30
patches/v8/ptr-compr_temporarily_disable_31_bit_smis_on_64-bit_architectures.patch

@@ -1,30 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Igor Sheludko <[email protected]>
-Date: Tue, 15 Oct 2019 10:46:52 +0200
-Subject: [ptr-compr] Temporarily disable 31 bit Smis on 64-bit architectures
-
-The reason is to unblock M79 blocked by chromium:1009439 while full
-solution is not ready yet.
-
-This CL will be reverted after the M79 branch point.
-
-Bug: v8:9767, chromium:1009439
-Change-Id: I5302d86fe953ecd94d9a4bba0d29c807b7b9d703
-Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1862554
-Reviewed-by: Toon Verwaest <[email protected]>
-Commit-Queue: Igor Sheludko <[email protected]>
-Cr-Commit-Position: refs/heads/master@{#64286}
-
-diff --git a/BUILD.gn b/BUILD.gn
-index 6207d71c542c46a4716a51baeb8518eca0f8e1c0..db7179968237406318c64d68eae08027860e98f9 100644
---- a/BUILD.gn
-+++ b/BUILD.gn
-@@ -108,7 +108,7 @@ declare_args() {
- 
-   # Enable pointer compression (sets -dV8_COMPRESS_POINTERS).
-   v8_enable_pointer_compression = false
--  v8_enable_31bit_smis_on_64bit_arch = true
-+  v8_enable_31bit_smis_on_64bit_arch = false
- 
-   # Sets -dOBJECT_PRINT.
-   v8_enable_object_print = ""

+ 5 - 5
patches/v8/workaround_an_undefined_symbol_error.patch

@@ -12,10 +12,10 @@ By moving some functions out of the the arm64-assembler header file,
 this error no longer seems to happen.
 
 diff --git a/src/codegen/arm64/assembler-arm64.cc b/src/codegen/arm64/assembler-arm64.cc
-index c798d3a8a03ed9ed49c4562ef3968fae38c55fbe..7369b80c0762bc86d7e763674479bbd426c0a1fa 100644
+index ea2f4696bdbca1468c67acd3ced4c19f4cc698aa..7ef52a8b508a7388d5781c9508accbaa73378834 100644
 --- a/src/codegen/arm64/assembler-arm64.cc
 +++ b/src/codegen/arm64/assembler-arm64.cc
-@@ -3589,6 +3589,22 @@ void Assembler::MoveWide(const Register& rd, uint64_t imm, int shift,
+@@ -3588,6 +3588,22 @@ void Assembler::MoveWide(const Register& rd, uint64_t imm, int shift,
         ImmMoveWide(static_cast<int>(imm)) | ShiftMoveWide(shift));
  }
  
@@ -39,10 +39,10 @@ index c798d3a8a03ed9ed49c4562ef3968fae38c55fbe..7369b80c0762bc86d7e763674479bbd4
                         const Operand& operand, FlagsUpdate S, AddSubOp op) {
    DCHECK_EQ(rd.SizeInBits(), rn.SizeInBits());
 diff --git a/src/codegen/arm64/assembler-arm64.h b/src/codegen/arm64/assembler-arm64.h
-index 10542a278db27660ec2dc4650f74653f46139c65..44b679cdf6e08297d77cdbe1224dd861a24e2f17 100644
+index 23e8acb1f95c913623aaa41c3bf53906e6247606..54ff81749b1b47cb192e442863c01778b57af1d5 100644
 --- a/src/codegen/arm64/assembler-arm64.h
 +++ b/src/codegen/arm64/assembler-arm64.h
-@@ -2099,11 +2099,7 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
+@@ -2103,11 +2103,7 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
      return rm.code() << Rm_offset;
    }
  
@@ -55,7 +55,7 @@ index 10542a278db27660ec2dc4650f74653f46139c65..44b679cdf6e08297d77cdbe1224dd861
  
    static Instr Ra(CPURegister ra) {
      DCHECK_NE(ra.code(), kSPRegInternalCode);
-@@ -2127,15 +2123,8 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
+@@ -2131,15 +2127,8 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
  
    // These encoding functions allow the stack pointer to be encoded, and
    // disallow the zero register.

+ 1 - 1
script/nan-spec-runner.js

@@ -17,7 +17,7 @@ async function main () {
   const nodeDir = path.resolve(BASE, `out/${utils.getOutDir(true)}/gen/node_headers`)
   const env = Object.assign({}, process.env, {
     npm_config_nodedir: nodeDir,
-    npm_config_msvs_version: '2017',
+    npm_config_msvs_version: '2019',
     npm_config_arch: process.env.NPM_CONFIG_ARCH
   })
   const { status: buildStatus } = cp.spawnSync(NPX_CMD, ['node-gyp', 'rebuild', '--directory', 'test'], {

+ 1 - 1
script/spec-runner.js

@@ -219,7 +219,7 @@ async function installSpecModules (dir) {
   const nodeDir = path.resolve(BASE, `out/${utils.getOutDir(true)}/gen/node_headers`)
   const env = Object.assign({}, process.env, {
     npm_config_nodedir: nodeDir,
-    npm_config_msvs_version: '2017'
+    npm_config_msvs_version: '2019'
   })
   const { status } = childProcess.spawnSync(NPX_CMD, [`yarn@${YARN_VERSION}`, 'install', '--frozen-lockfile'], {
     env,

+ 1 - 0
script/strip-binaries.py

@@ -9,6 +9,7 @@ from lib.util import execute, get_out_dir
 LINUX_BINARIES_TO_STRIP = [
   'electron',
   'chrome-sandbox',
+  'crashpad_handler',
   'libffmpeg.so',
   'libGLESv2.so',
   'libEGL.so',

+ 1 - 1
script/verify-mksnapshot.py

@@ -27,7 +27,7 @@ def main():
       if args.snapshot_files_dir is None:
         mkargs = [ get_binary_path('mksnapshot', app_path), \
                     SNAPSHOT_SOURCE, '--startup_blob', 'snapshot_blob.bin', \
-                    '--no-native-code-counters' ]
+                    '--no-native-code-counters', '--turbo_instruction_scheduling' ]
         subprocess.check_call(mkargs)
         print('ok mksnapshot successfully created snapshot_blob.bin.')
         context_snapshot = 'v8_context_snapshot.bin'

+ 2 - 2
script/zip_manifests/dist_zip.linux.arm.manifest

@@ -62,12 +62,12 @@ locales/uk.pak
 locales/vi.pak
 locales/zh-CN.pak
 locales/zh-TW.pak
-natives_blob.bin
 resources.pak
 resources/default_app.asar
 snapshot_blob.bin
 swiftshader/libEGL.so
 swiftshader/libGLESv2.so
-swiftshader/libvk_swiftshader_icd.json
+libvk_swiftshader_icd.json
+crashpad_handler
 v8_context_snapshot.bin
 version

+ 2 - 2
script/zip_manifests/dist_zip.linux.arm64.manifest

@@ -62,12 +62,12 @@ locales/uk.pak
 locales/vi.pak
 locales/zh-CN.pak
 locales/zh-TW.pak
-natives_blob.bin
 resources.pak
 resources/default_app.asar
 snapshot_blob.bin
 swiftshader/libEGL.so
 swiftshader/libGLESv2.so
-swiftshader/libvk_swiftshader_icd.json
+libvk_swiftshader_icd.json
+crashpad_handler
 v8_context_snapshot.bin
 version

+ 2 - 2
script/zip_manifests/dist_zip.linux.x64.manifest

@@ -62,12 +62,12 @@ locales/uk.pak
 locales/vi.pak
 locales/zh-CN.pak
 locales/zh-TW.pak
-natives_blob.bin
 resources.pak
 resources/default_app.asar
 snapshot_blob.bin
 swiftshader/libEGL.so
 swiftshader/libGLESv2.so
-swiftshader/libvk_swiftshader_icd.json
+libvk_swiftshader_icd.json
+crashpad_handler
 v8_context_snapshot.bin
 version

+ 2 - 2
script/zip_manifests/dist_zip.linux.x86.manifest

@@ -62,12 +62,12 @@ locales/uk.pak
 locales/vi.pak
 locales/zh-CN.pak
 locales/zh-TW.pak
-natives_blob.bin
 resources.pak
 resources/default_app.asar
 snapshot_blob.bin
 swiftshader/libEGL.so
 swiftshader/libGLESv2.so
-swiftshader/libvk_swiftshader_icd.json
+libvk_swiftshader_icd.json
+crashpad_handler
 v8_context_snapshot.bin
 version

+ 0 - 1
script/zip_manifests/dist_zip.mac.x64.manifest

@@ -87,7 +87,6 @@ Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resourc
 Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/mr.lproj/locale.pak
 Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ms.lproj/
 Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ms.lproj/locale.pak
-Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/natives_blob.bin
 Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/nb.lproj/
 Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/nb.lproj/locale.pak
 Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/nl.lproj/

+ 0 - 1
script/zip_manifests/dist_zip.mac_mas.x64.manifest

@@ -86,7 +86,6 @@ Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resourc
 Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/mr.lproj/locale.pak
 Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ms.lproj/
 Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ms.lproj/locale.pak
-Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/natives_blob.bin
 Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/nb.lproj/
 Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/nb.lproj/locale.pak
 Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/nl.lproj/

+ 1 - 2
script/zip_manifests/dist_zip.win.arm64.manifest

@@ -60,13 +60,12 @@ locales/uk.pak
 locales/vi.pak
 locales/zh-CN.pak
 locales/zh-TW.pak
-natives_blob.bin
 resources.pak
 resources/default_app.asar
 snapshot_blob.bin
 swiftshader/libEGL.dll
 swiftshader/libGLESv2.dll
-swiftshader/libvk_swiftshader_icd.json
+libvk_swiftshader_icd.json
 vk_swiftshader.dll
 v8_context_snapshot.bin
 version

+ 1 - 2
script/zip_manifests/dist_zip.win.ia32.manifest

@@ -61,13 +61,12 @@ locales/uk.pak
 locales/vi.pak
 locales/zh-CN.pak
 locales/zh-TW.pak
-natives_blob.bin
 resources.pak
 resources/default_app.asar
 snapshot_blob.bin
 swiftshader/libEGL.dll
 swiftshader/libGLESv2.dll
-swiftshader/libvk_swiftshader_icd.json
+libvk_swiftshader_icd.json
 vk_swiftshader.dll
 v8_context_snapshot.bin
 version

+ 1 - 2
script/zip_manifests/dist_zip.win.x64.manifest

@@ -61,13 +61,12 @@ locales/uk.pak
 locales/vi.pak
 locales/zh-CN.pak
 locales/zh-TW.pak
-natives_blob.bin
 resources.pak
 resources/default_app.asar
 snapshot_blob.bin
 swiftshader/libEGL.dll
 swiftshader/libGLESv2.dll
-swiftshader/libvk_swiftshader_icd.json
+libvk_swiftshader_icd.json
 vk_swiftshader.dll
 v8_context_snapshot.bin
 version

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