Browse Source

Merge pull request #17507 from electron/chromium-upgrade/75

chore: update to chromium 75.0.3740.3
Samuel Attard 6 years ago
parent
commit
5d45b59f7f
74 changed files with 597 additions and 398 deletions
  1. 7 4
      .circleci/config.yml
  2. 1 0
      BUILD.gn
  3. 1 1
      DEPS
  4. 5 1
      atom/browser/api/atom_api_cookies.cc
  5. 5 1
      atom/browser/atom_browser_client.cc
  6. 6 1
      atom/browser/atom_browser_client.h
  7. 3 0
      atom/browser/io_thread.cc
  8. 16 0
      atom/browser/mac/atom_application.h
  9. 0 3
      atom/browser/net/network_context_service.cc
  10. 0 5
      atom/browser/net/system_network_context_manager.cc
  11. 4 2
      atom/browser/net/url_request_context_getter.cc
  12. 9 0
      atom/browser/notifications/platform_notification_service.cc
  13. 4 0
      atom/browser/notifications/platform_notification_service.h
  14. 6 6
      atom/browser/notifications/win/win32_desktop_notifications/desktop_notification_controller.cc
  15. 1 0
      atom/browser/notifications/win/win32_desktop_notifications/toast.cc
  16. 3 1
      atom/browser/notifications/win/win32_desktop_notifications/toast.h
  17. 1 1
      atom/browser/notifications/win/win32_desktop_notifications/toast_uia.cc
  18. 1 1
      atom/browser/ui/cocoa/delayed_native_view_host.cc
  19. 1 1
      atom/browser/ui/cocoa/delayed_native_view_host.h
  20. 7 4
      atom/browser/ui/inspectable_web_contents_impl.cc
  21. 1 1
      atom/common/native_mate_converters/content_converter.h
  22. 1 1
      atom/common/platform_util_linux.cc
  23. 1 1
      build/zip.py
  24. 2 2
      docs/development/build-instructions-macos.md
  25. 0 1
      patches/common/boringssl/.patches
  26. 0 19
      patches/common/boringssl/handle_pub_key_null_in_ec_key_set_public_key.patch
  27. 2 1
      patches/common/chromium/.patches
  28. 1 1
      patches/common/chromium/add_realloc.patch
  29. 2 2
      patches/common/chromium/allow_webview_file_url.patch
  30. 1 1
      patches/common/chromium/blink-worker-enable-csp-in-file-scheme.patch
  31. 2 2
      patches/common/chromium/blink_file_path.patch
  32. 1 1
      patches/common/chromium/blink_local_frame.patch
  33. 5 5
      patches/common/chromium/blink_world_context.patch
  34. 10 10
      patches/common/chromium/can_create_window.patch
  35. 2 2
      patches/common/chromium/compositor_delegate.patch
  36. 1 1
      patches/common/chromium/content_allow_embedder_to_prevent_locking_scheme_registry.patch
  37. 2 2
      patches/common/chromium/content_browser_main_loop.patch
  38. 2 2
      patches/common/chromium/cross_site_document_resource_handler.patch
  39. 1 1
      patches/common/chromium/dcheck.patch
  40. 7 7
      patches/common/chromium/disable-redraw-lock.patch
  41. 11 11
      patches/common/chromium/disable_color_correct_rendering.patch
  42. 20 0
      patches/common/chromium/disable_custom_libcxx_on_windows.patch
  43. 1 1
      patches/common/chromium/disable_detach_webview_frame.patch
  44. 3 3
      patches/common/chromium/disable_hidden.patch
  45. 2 2
      patches/common/chromium/disable_user_gesture_requirement_for_beforeunload_dialogs.patch
  46. 2 2
      patches/common/chromium/exclude-a-few-test-files-from-build.patch
  47. 3 3
      patches/common/chromium/fix_disable_usage_of_pthread_fchdir_np_and_pthread_chdir_np_in_mas.patch
  48. 2 2
      patches/common/chromium/fix_disable_usage_of_setapplicationisdaemon_and.patch
  49. 25 0
      patches/common/chromium/fix_retain_compatibility_with_msvc.patch
  50. 6 6
      patches/common/chromium/frame_host_manager.patch
  51. 2 2
      patches/common/chromium/gritsettings_resource_ids.patch
  52. 2 2
      patches/common/chromium/ignore_rc_check.patch
  53. 12 12
      patches/common/chromium/mas_no_private_api.patch
  54. 2 2
      patches/common/chromium/no_cache_storage_check.patch
  55. 12 12
      patches/common/chromium/notification_provenance.patch
  56. 13 13
      patches/common/chromium/printing.patch
  57. 6 6
      patches/common/chromium/render_widget_host_view_base.patch
  58. 5 5
      patches/common/chromium/render_widget_host_view_mac.patch
  59. 3 3
      patches/common/chromium/resource_file_conflict.patch
  60. 1 1
      patches/common/chromium/scroll_bounce_flag.patch
  61. 16 37
      patches/common/chromium/ssl_security_state_tab_helper.patch
  62. 5 5
      patches/common/chromium/support_mixed_sandbox_with_zygote.patch
  63. 3 3
      patches/common/chromium/web_contents.patch
  64. 0 117
      patches/common/chromium/webgl_context_attributes.patch
  65. 2 2
      patches/common/chromium/webview_cross_drag.patch
  66. 12 12
      patches/common/chromium/worker_context_will_destroy.patch
  67. 1 0
      patches/common/v8/.patches
  68. 3 3
      patches/common/v8/add_realloc.patch
  69. 3 3
      patches/common/v8/build_gn.patch
  70. 4 4
      patches/common/v8/dcheck.patch
  71. 2 2
      patches/common/v8/deps_backport_detailed_line_info_for_cpu_profiler.patch
  72. 25 25
      patches/common/v8/deps_provide_more_v8_backwards_compatibility.patch
  73. 2 2
      patches/common/v8/expose_mksnapshot.patch
  74. 261 0
      patches/common/v8/fixme_revert_heap_api_remove_deprecated_apis.patch

+ 7 - 4
.circleci/config.yml

@@ -507,12 +507,15 @@ steps-lint: &steps-lint
         name: Download GN Binary
         command: |
           chromium_revision="$(grep -A1 chromium_version src/electron/DEPS | tr -d '\n' | cut -d\' -f4)"
+          gn_version="$(curl -sL "https://chromium.googlesource.com/chromium/src/+/${chromium_revision}/DEPS?format=TEXT" | base64 -d | grep gn_version | head -n1 | cut -d\' -f4)"
 
-          mkdir -p "buildtools/linux64"
-          curl -sL "https://chromium.googlesource.com/chromium/src/+/${chromium_revision}/buildtools/linux64/gn.sha1?format=TEXT" | base64 -d > "buildtools/linux64/gn.sha1"
-          echo 'export CHROMIUM_BUILDTOOLS_PATH="'"$PWD"'/buildtools"' >> $BASH_ENV
+          cipd ensure -ensure-file - -root . <<-CIPD
+          \$ServiceURL https://chrome-infra-packages.appspot.com/
+          @Subdir buildtools/linux64
+          gn/gn/linux-amd64 $gn_version
+          CIPD
 
-          download_from_google_storage --bucket chromium-gn -s "buildtools/linux64/gn.sha1"
+          echo 'export CHROMIUM_BUILDTOOLS_PATH="'"$PWD"'/buildtools"' >> $BASH_ENV
     - run:
         name: Run Lint
         command: |

+ 1 - 0
BUILD.gn

@@ -414,6 +414,7 @@ static_library("electron_lib") {
     "//third_party/libyuv",
     "//third_party/webrtc_overrides:init_webrtc",
     "//third_party/widevine/cdm:headers",
+    "//ui/base/idle",
     "//ui/events:dom_keycode_converter",
     "//ui/gl",
     "//ui/native_theme",

+ 1 - 1
DEPS

@@ -10,7 +10,7 @@ gclient_gn_args = [
 
 vars = {
   'chromium_version':
-    '74.0.3729.58',
+    '75.0.3740.3',
   'node_version':
     '2dc0f8811b2b295c08d797b8a11b030234c98502',
 

+ 5 - 1
atom/browser/api/atom_api_cookies.cc

@@ -303,8 +303,12 @@ void SetCookieOnIO(scoped_refptr<net::URLRequestContextGetter> getter,
                  EXCLUDE_FAILURE_TO_STORE);
     return;
   }
+  net::CookieOptions options;
+  if (http_only) {
+    options.set_include_httponly();
+  }
   GetCookieStore(getter)->SetCanonicalCookieAsync(
-      std::move(canonical_cookie), url.scheme(), http_only,
+      std::move(canonical_cookie), url.scheme(), options,
       std::move(completion_callback));
 }
 

+ 5 - 1
atom/browser/atom_browser_client.cc

@@ -830,7 +830,11 @@ bool AtomBrowserClient::HandleExternalProtocol(
     ui::PageTransition page_transition,
     bool has_user_gesture,
     const std::string& method,
-    const net::HttpRequestHeaders& headers) {
+    const net::HttpRequestHeaders& headers,
+    network::mojom::URLLoaderFactoryRequest* factory_request,
+    // clang-format off
+    network::mojom::URLLoaderFactory*& out_factory) {  // NOLINT
+  // clang-format on
   base::PostTaskWithTraits(
       FROM_HERE, {BrowserThread::UI},
       base::BindOnce(&HandleExternalProtocolInUI, url, web_contents_getter,

+ 6 - 1
atom/browser/atom_browser_client.h

@@ -172,7 +172,12 @@ class AtomBrowserClient : public content::ContentBrowserClient,
       ui::PageTransition page_transition,
       bool has_user_gesture,
       const std::string& method,
-      const net::HttpRequestHeaders& headers) override;
+      const net::HttpRequestHeaders& headers,
+      network::mojom::URLLoaderFactoryRequest* factory_request,
+      // clang-format off
+      network::mojom::URLLoaderFactory*& out_factory)  // NOLINT
+      // clang-format on
+      override;
 
  private:
   struct ProcessPreferences {

+ 3 - 0
atom/browser/io_thread.cc

@@ -40,6 +40,9 @@ void IOThread::Init() {
     std::unique_ptr<network::URLRequestContextBuilderMojo> builder =
         std::make_unique<network::URLRequestContextBuilderMojo>();
 
+    // Enable file:// support.
+    builder->set_file_enabled(true);
+
     auto cert_verifier = std::make_unique<net::CachingCertVerifier>(
         std::make_unique<net::MultiThreadedCertVerifier>(
             net::CertVerifyProc::CreateDefault()));

+ 16 - 0
atom/browser/mac/atom_application.h

@@ -17,6 +17,22 @@
 - (void)setAppearance:(NSAppearance*)appearance API_AVAILABLE(macosx(10.14));
 @end
 
+#if !defined(MAC_OS_X_VERSION_10_13_2)
+
+// forward declare Touch ID APIs
+typedef NS_ENUM(NSInteger, LABiometryType) {
+  LABiometryTypeNone = 0,
+  LABiometryTypeFaceID = 1,
+  LABiometryTypeTouchID = 2,
+} API_AVAILABLE(macosx(10.13.2));
+
+@interface LAContext (HighSierraPointTwoSDK)
+@property(nonatomic, readonly)
+    LABiometryType biometryType API_AVAILABLE(macosx(10.13.2));
+@end
+
+#endif
+
 // forward declare Access APIs
 typedef NSString* AVMediaType NS_EXTENSIBLE_STRING_ENUM;
 

+ 0 - 3
atom/browser/net/network_context_service.cc

@@ -80,9 +80,6 @@ NetworkContextService::CreateNetworkContextParams(bool in_memory,
   network_context_params->enable_ftp_url_support = true;
 #endif  // !BUILDFLAG(DISABLE_FTP_SUPPORT)
 
-  // Needed for PAC scripts that use data URLs.
-  network_context_params->enable_data_url_support = true;
-
   proxy_config_monitor_.AddToNetworkContextParams(network_context_params.get());
 
   BrowserProcessImpl::ApplyProxyModeFromCommandLine(

+ 0 - 5
atom/browser/net/system_network_context_manager.cc

@@ -249,11 +249,6 @@ SystemNetworkContextManager::CreateNetworkContextParams() {
 
   network_context_params->http_cache_enabled = false;
 
-  // These are needed for PAC scripts that use file or data URLs (Or FTP URLs?).
-  // TODO(crbug.com/839566): remove file support for all cases.
-  network_context_params->enable_data_url_support = true;
-  if (!base::FeatureList::IsEnabled(network::features::kNetworkService))
-    network_context_params->enable_file_url_support = true;
 #if !BUILDFLAG(DISABLE_FTP_SUPPORT)
   network_context_params->enable_ftp_url_support = true;
 #endif

+ 4 - 2
atom/browser/net/url_request_context_getter.cc

@@ -156,8 +156,6 @@ URLRequestContextGetter::Handle::CreateNetworkContextParams() {
       net::HttpUtil::GenerateAcceptLanguageHeader(
           AtomBrowserClient::Get()->GetApplicationLocale());
 
-  network_context_params->enable_data_url_support = false;
-
   if (!browser_context_->IsOffTheRecord()) {
     auto base_path = browser_context_->GetPath();
     network_context_params->http_cache_path =
@@ -263,6 +261,10 @@ net::URLRequestContext* URLRequestContextGetter::GetURLRequestContext() {
   if (!url_request_context_) {
     std::unique_ptr<network::URLRequestContextBuilderMojo> builder =
         std::make_unique<network::URLRequestContextBuilderMojo>();
+
+    // Enable file:// support.
+    builder->set_file_enabled(true);
+
     auto network_delegate = std::make_unique<AtomNetworkDelegate>();
     network_delegate_ = network_delegate.get();
     builder->set_network_delegate(std::move(network_delegate));

+ 9 - 0
atom/browser/notifications/platform_notification_service.cc

@@ -134,4 +134,13 @@ void PlatformNotificationService::RecordNotificationUkmEvent(
     content::BrowserContext* browser_context,
     const content::NotificationDatabaseData& data) {}
 
+void PlatformNotificationService::ScheduleTrigger(
+    content::BrowserContext* browser_context,
+    base::Time timestamp) {}
+
+base::Time PlatformNotificationService::ReadNextTriggerTimestamp(
+    content::BrowserContext* browser_context) {
+  return base::Time::Max();
+}
+
 }  // namespace atom

+ 4 - 0
atom/browser/notifications/platform_notification_service.h

@@ -49,6 +49,10 @@ class PlatformNotificationService
   void RecordNotificationUkmEvent(
       content::BrowserContext* browser_context,
       const content::NotificationDatabaseData& data) override;
+  void ScheduleTrigger(content::BrowserContext* browser_context,
+                       base::Time timestamp) override;
+  base::Time ReadNextTriggerTimestamp(
+      content::BrowserContext* browser_context) override;
 
  private:
   AtomBrowserClient* browser_client_;

+ 6 - 6
atom/browser/notifications/win/win32_desktop_notifications/desktop_notification_controller.cc

@@ -126,7 +126,7 @@ LRESULT CALLBACK DesktopNotificationController::WndProc(HWND hwnd,
 }
 
 void DesktopNotificationController::StartAnimation() {
-  _ASSERT(hwnd_controller_);
+  DCHECK(hwnd_controller_);
 
   if (!is_animating_ && hwnd_controller_) {
     // NOTE: 15ms is shorter than what we'd need for 60 fps, but since
@@ -217,7 +217,7 @@ void DesktopNotificationController::AnimateAll() {
   }
 
   if (!keep_animating) {
-    _ASSERT(hwnd_controller_);
+    DCHECK(hwnd_controller_);
     if (hwnd_controller_)
       KillTimer(hwnd_controller_, TimerID_Animate);
     is_animating_ = false;
@@ -325,7 +325,7 @@ void DesktopNotificationController::CreateToast(NotificationLink&& data) {
     int toast_pos = 0;
     if (!instances_.empty()) {
       auto& item = instances_.back();
-      _ASSERT(item.hwnd);
+      DCHECK(item.hwnd);
 
       ScreenMetrics scr;
       auto* toast = Toast::Get(item.hwnd);
@@ -379,7 +379,7 @@ DesktopNotificationController::Notification::Notification(
 DesktopNotificationController::Notification::Notification(
     const shared_ptr<NotificationData>& data)
     : data_(data) {
-  _ASSERT(data != nullptr);
+  DCHECK(data != nullptr);
 }
 
 DesktopNotificationController::Notification::~Notification() = default;
@@ -391,7 +391,7 @@ bool DesktopNotificationController::Notification::operator==(
 
 void DesktopNotificationController::Notification::Close() {
   // No business calling this when not pointing to a valid instance
-  _ASSERT(data_);
+  DCHECK(data_);
 
   if (data_->controller)
     data_->controller->CloseNotification(*this);
@@ -401,7 +401,7 @@ void DesktopNotificationController::Notification::Set(std::wstring caption,
                                                       std::wstring body_text,
                                                       HBITMAP image) {
   // No business calling this when not pointing to a valid instance
-  _ASSERT(data_);
+  DCHECK(data_);
 
   // Do nothing when the notification has been closed
   if (!data_->controller)

+ 1 - 0
atom/browser/notifications/win/win32_desktop_notifications/toast.cc

@@ -13,6 +13,7 @@
 #include <uxtheme.h>
 #include <windowsx.h>
 #include <algorithm>
+#include <cmath>
 #include <memory>
 
 #include "atom/browser/notifications/win/win32_desktop_notifications/common.h"

+ 3 - 1
atom/browser/notifications/win/win32_desktop_notifications/toast.h

@@ -9,6 +9,8 @@
 
 #include "atom/browser/notifications/win/win32_desktop_notifications/desktop_notification_controller.h"
 
+#include "base/logging.h"
+
 namespace atom {
 
 class DesktopNotificationController::Toast {
@@ -42,7 +44,7 @@ class DesktopNotificationController::Toast {
     return ease_in_active_ || ease_out_active_ || IsStackCollapseActive();
   }
   bool IsHighlighted() const {
-    _ASSERT(!(is_highlighted_ && !IsWindowVisible(hwnd_)));
+    DCHECK(!(is_highlighted_ && !IsWindowVisible(hwnd_)));
     return is_highlighted_;
   }
 

+ 1 - 1
atom/browser/notifications/win/win32_desktop_notifications/toast_uia.cc

@@ -31,7 +31,7 @@ ULONG DesktopNotificationController::Toast::UIAutomationInterface::Release() {
     delete this;
     return 0;
   }
-  _ASSERT(ret > 0);
+  DCHECK_GT(ret, 0);
   return ret;
 }
 

+ 1 - 1
atom/browser/ui/cocoa/delayed_native_view_host.cc

@@ -12,7 +12,7 @@ DelayedNativeViewHost::DelayedNativeViewHost(gfx::NativeView native_view)
 DelayedNativeViewHost::~DelayedNativeViewHost() {}
 
 void DelayedNativeViewHost::ViewHierarchyChanged(
-    const ViewHierarchyChangedDetails& details) {
+    const views::ViewHierarchyChangedDetails& details) {
   NativeViewHost::ViewHierarchyChanged(details);
   if (details.is_add && GetWidget())
     Attach(native_view_);

+ 1 - 1
atom/browser/ui/cocoa/delayed_native_view_host.h

@@ -18,7 +18,7 @@ class DelayedNativeViewHost : public views::NativeViewHost {
 
   // views::View:
   void ViewHierarchyChanged(
-      const ViewHierarchyChangedDetails& details) override;
+      const views::ViewHierarchyChangedDetails& details) override;
 
  private:
   gfx::NativeView native_view_;

+ 7 - 4
atom/browser/ui/inspectable_web_contents_impl.cc

@@ -429,7 +429,7 @@ void InspectableWebContentsImpl::CallClientFunction(
   }
   javascript.append(");");
   GetDevToolsWebContents()->GetMainFrame()->ExecuteJavaScript(
-      base::UTF8ToUTF16(javascript));
+      base::UTF8ToUTF16(javascript), base::NullCallback());
 }
 
 gfx::Rect InspectableWebContentsImpl::GetDevToolsBounds() const {
@@ -476,7 +476,8 @@ void InspectableWebContentsImpl::LoadCompleted() {
     }
     base::string16 javascript = base::UTF8ToUTF16(
         "Components.dockController.setDockSide(\"" + dock_state_ + "\");");
-    GetDevToolsWebContents()->GetMainFrame()->ExecuteJavaScript(javascript);
+    GetDevToolsWebContents()->GetMainFrame()->ExecuteJavaScript(
+        javascript, base::NullCallback());
   }
 
   if (view_->GetDelegate())
@@ -738,7 +739,8 @@ void InspectableWebContentsImpl::DispatchProtocolMessage(
   if (message.length() < kMaxMessageChunkSize) {
     base::string16 javascript =
         base::UTF8ToUTF16("DevToolsAPI.dispatchMessage(" + message + ");");
-    GetDevToolsWebContents()->GetMainFrame()->ExecuteJavaScript(javascript);
+    GetDevToolsWebContents()->GetMainFrame()->ExecuteJavaScript(
+        javascript, base::NullCallback());
     return;
   }
 
@@ -887,7 +889,8 @@ void InspectableWebContentsImpl::DidFinishNavigation(
                                    base::GenerateGUID().c_str());
   // Invoking content::DevToolsFrontendHost::SetupExtensionsAPI(frame, script);
   // should be enough, but it seems to be a noop currently.
-  frame->ExecuteJavaScriptForTests(base::UTF8ToUTF16(script));
+  frame->ExecuteJavaScriptForTests(base::UTF8ToUTF16(script),
+                                   base::NullCallback());
 }
 
 void InspectableWebContentsImpl::SendMessageAck(int request_id,

+ 1 - 1
atom/common/native_mate_converters/content_converter.h

@@ -12,7 +12,7 @@
 #include "content/public/common/referrer.h"
 #include "content/public/common/stop_find_action.h"
 #include "native_mate/converter.h"
-#include "third_party/blink/public/platform/modules/permissions/permission_status.mojom.h"
+#include "third_party/blink/public/mojom/permissions/permission_status.mojom.h"
 
 namespace content {
 struct ContextMenuParams;

+ 1 - 1
atom/common/platform_util_linux.cc

@@ -27,7 +27,7 @@ bool XDGUtilV(const std::vector<std::string>& argv, const bool wait_for_exit) {
   // to a command that needs a terminal.  Set the environment variable telling
   // it that we definitely don't have a terminal available and that it should
   // bring up a new terminal if necessary.  See "man mailcap".
-  options.environ["MM_NOTTTY"] = "1";
+  options.environment["MM_NOTTTY"] = "1";
 
   base::Process process = base::LaunchProcess(argv, options);
   if (!process.IsValid())

+ 1 - 1
build/zip.py

@@ -52,7 +52,7 @@ def main(argv):
   if sys.platform == 'darwin':
     execute(['zip', '-r', '-y', dist_zip] + list(dist_files))
   else:
-    with zipfile.ZipFile(dist_zip, 'w', zipfile.ZIP_DEFLATED) as z:
+    with zipfile.ZipFile(dist_zip, 'w', zipfile.ZIP_DEFLATED, True) as z:
       for dep in dist_files:
         if skip_path(dep, dist_zip, target_cpu):
           continue

+ 2 - 2
docs/development/build-instructions-macos.md

@@ -5,7 +5,7 @@ Follow the guidelines below for building Electron on macOS.
 ## Prerequisites
 
 * macOS >= 10.11.6
-* [Xcode](https://developer.apple.com/technologies/tools/) >= 8.2.1
+* [Xcode](https://developer.apple.com/technologies/tools/) >= 9.0.0
 * [node.js](https://nodejs.org) (external)
 * Python 2.7 with support for TLS 1.2
 
@@ -36,7 +36,7 @@ the following Python modules:
 If you're developing Electron and don't plan to redistribute your
 custom Electron build, you may skip this section.
 
-Official Electron builds are built with [Xcode 8.3.3](http://adcdownload.apple.com/Developer_Tools/Xcode_8.3.3/Xcode_8.3.3.xip), and the MacOS 10.12 SDK.  Building with a newer SDK works too, but the releases currently use the 10.12 SDK.
+Official Electron builds are built with [Xcode 9.4.1](http://adcdownload.apple.com/Developer_Tools/Xcode_9.4.1/Xcode_9.4.1.xip), and the MacOS 10.13 SDK.  Building with a newer SDK works too, but the releases currently use the 10.13 SDK.
 
 ## Building Electron
 

+ 0 - 1
patches/common/boringssl/.patches

@@ -1,3 +1,2 @@
 expose_ripemd160.patch
 expose_aes-cfb.patch
-handle_pub_key_null_in_ec_key_set_public_key.patch

+ 0 - 19
patches/common/boringssl/handle_pub_key_null_in_ec_key_set_public_key.patch

@@ -1,19 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Jeremy Apthorp <[email protected]>
-Date: Mon, 4 Mar 2019 10:59:35 -0800
-Subject: handle pub_key == null in EC_KEY_set_public_key
-
-
-diff --git a/crypto/fipsmodule/ec/ec_key.c b/crypto/fipsmodule/ec/ec_key.c
-index 4bc12a073650f66f5ae8ba2beabb9a6fb2b21878..7e86ccb0d76c66f32fc05c7093c870d5da7b9994 100644
---- a/crypto/fipsmodule/ec/ec_key.c
-+++ b/crypto/fipsmodule/ec/ec_key.c
-@@ -267,7 +267,7 @@ int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub_key) {
-     return 0;
-   }
- 
--  if (EC_GROUP_cmp(key->group, pub_key->group, NULL) != 0) {
-+  if (pub_key != NULL && EC_GROUP_cmp(key->group, pub_key->group, NULL) != 0) {
-     OPENSSL_PUT_ERROR(EC, EC_R_GROUP_MISMATCH);
-     return 0;
-   }

+ 2 - 1
patches/common/chromium/.patches

@@ -17,7 +17,6 @@ render_widget_host_view_mac.patch
 stream_resource_handler.patch
 thread_capabilities.patch
 web_contents.patch
-webgl_context_attributes.patch
 webview_cross_drag.patch
 worker_context_will_destroy.patch
 disable_user_gesture_requirement_for_beforeunload_dialogs.patch
@@ -71,3 +70,5 @@ revert_build_swiftshader_for_arm32.patch
 fix_disable_usage_of_abort_report_np_in_mas_builds.patch
 fix_disable_usage_of_pthread_fchdir_np_and_pthread_chdir_np_in_mas.patch
 fix_disable_usage_of_setapplicationisdaemon_and.patch
+disable_custom_libcxx_on_windows.patch
+fix_retain_compatibility_with_msvc.patch

+ 1 - 1
patches/common/chromium/add_realloc.patch

@@ -39,7 +39,7 @@ 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 061543362fa67972d79d651432a0b3223eb9a559..bbf403607369dccb115f681e09cc1070d80ba35c 100644
+index 0fdf8ba729f7fabcc2779299bc591ee2dd1fa9ba..611b44c5b70166665b132cfde79d0b2f0ea5ddad 100644
 --- a/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc
 +++ b/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc
 @@ -650,6 +650,10 @@ class ArrayBufferAllocator : public v8::ArrayBuffer::Allocator {

+ 2 - 2
patches/common/chromium/allow_webview_file_url.patch

@@ -6,10 +6,10 @@ Subject: allow_webview_file_url.patch
 Allow webview to load non-web URLs.
 
 diff --git a/content/browser/loader/resource_dispatcher_host_impl.cc b/content/browser/loader/resource_dispatcher_host_impl.cc
-index f6d8cf0e1b7373498739d6821a4b6b2725cf3c5c..3144e81cdb79b0b235385701c2eb81b6b9017213 100644
+index e06d2a5e9da5bd0218102636b5e8a0e981db31bc..af8db86dde165c087302d8bc5802e3dafde6a577 100644
 --- a/content/browser/loader/resource_dispatcher_host_impl.cc
 +++ b/content/browser/loader/resource_dispatcher_host_impl.cc
-@@ -1536,6 +1536,8 @@ void ResourceDispatcherHostImpl::BeginNavigationRequest(
+@@ -1522,6 +1522,8 @@ void ResourceDispatcherHostImpl::BeginNavigationRequest(
        !policy->IsWebSafeScheme(info.common_params.url.scheme()) &&
        !is_external_protocol;
  

+ 1 - 1
patches/common/chromium/blink-worker-enable-csp-in-file-scheme.patch

@@ -5,7 +5,7 @@ Subject: blink-worker-enable-csp-in-file-scheme.patch
 
 
 diff --git a/third_party/blink/renderer/core/workers/worker_classic_script_loader.cc b/third_party/blink/renderer/core/workers/worker_classic_script_loader.cc
-index 6575793a7df4eed2b1cc1cd59c559c591648c478..bf00aeb1df1dea4668a2d6645aefb578d1fc86e2 100644
+index 6e5842541701f0d094164914e5a53e60d7526d1e..9696f24f0f3edfbe9d9f78376956f0602e3a12aa 100644
 --- a/third_party/blink/renderer/core/workers/worker_classic_script_loader.cc
 +++ b/third_party/blink/renderer/core/workers/worker_classic_script_loader.cc
 @@ -307,7 +307,6 @@ void WorkerClassicScriptLoader::ProcessContentSecurityPolicy(

+ 2 - 2
patches/common/chromium/blink_file_path.patch

@@ -7,7 +7,7 @@ This is used by editors to obtain the filesystem path from a dragged file. See
 documentation at https://electronjs.org/docs/api/file-object
 
 diff --git a/third_party/blink/renderer/core/fileapi/file.h b/third_party/blink/renderer/core/fileapi/file.h
-index 6ae1e8ed179717d630518eeddd1a6c453139605d..a7167220fa0bc93ee845bb1a48a65c49f137e6fe 100644
+index 3abff1a1e4de7978e01587cc1bf2b3deb4318161..5213d1c46dcc25de84c4b882454b1f7d079f237f 100644
 --- a/third_party/blink/renderer/core/fileapi/file.h
 +++ b/third_party/blink/renderer/core/fileapi/file.h
 @@ -202,6 +202,9 @@ class CORE_EXPORT File final : public Blob {
@@ -19,7 +19,7 @@ index 6ae1e8ed179717d630518eeddd1a6c453139605d..a7167220fa0bc93ee845bb1a48a65c49
 +
    // Getter for the lastModified IDL attribute,
    // http://dev.w3.org/2006/webapi/FileAPI/#file-attrs
-   long long lastModified() const;
+   int64_t lastModified() const;
 diff --git a/third_party/blink/renderer/core/fileapi/file.idl b/third_party/blink/renderer/core/fileapi/file.idl
 index 940f8e62ce228beaf71f5a4be88539a431415ab1..0cf315636afe0e5e1533b3372cdfe2c09ec581e1 100644
 --- a/third_party/blink/renderer/core/fileapi/file.idl

+ 1 - 1
patches/common/chromium/blink_local_frame.patch

@@ -14,7 +14,7 @@ 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 a7b483e821fe73f4d725ae21b3182778024c5bed..aed4b5e3c72857173868b20a85cd341bcc990d2b 100644
+index 7bb3906762dbfe73e3c57d7c416168a2df8c99e4..64ef55ab3aa93c71fd58816ef2983e797f8dd75c 100644
 --- a/third_party/blink/renderer/core/frame/local_frame.cc
 +++ b/third_party/blink/renderer/core/frame/local_frame.cc
 @@ -409,10 +409,6 @@ void LocalFrame::DetachImpl(FrameDetachType type) {

+ 5 - 5
patches/common/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 fa0fca68d181f6783bb88e99f42697d5efbd3a49..93630884c3a3a4441645d76742796322f39653c3 100644
+index 611a2f6443a954f984e11c4cf84991c60f1ea08a..60afd4d8805da3d9fcb9f2a0fc0b857b550615eb 100644
 --- a/third_party/blink/public/web/web_local_frame.h
 +++ b/third_party/blink/public/web/web_local_frame.h
-@@ -348,6 +348,9 @@ class WebLocalFrame : public WebFrame {
+@@ -350,6 +350,9 @@ class WebLocalFrame : public WebFrame {
    // be calling this API.
    virtual v8::Local<v8::Context> MainWorldScriptContext() const = 0;
  
@@ -19,10 +19,10 @@ index fa0fca68d181f6783bb88e99f42697d5efbd3a49..93630884c3a3a4441645d76742796322
    // 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 6f19b08f41cf815e17d1d97870f5936771b8794c..9bc16c70f52e03e7f1c277c60f4aac802856d226 100644
+index 3ae069323d53af44a8c061ee3dd0efe558e20692..818f91e2744f1d8c7c02c665d17136c6cf992f89 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
-@@ -864,6 +864,13 @@ v8::Local<v8::Object> WebLocalFrameImpl::GlobalProxy() const {
+@@ -865,6 +865,13 @@ v8::Local<v8::Object> WebLocalFrameImpl::GlobalProxy() const {
    return MainWorldScriptContext()->Global();
  }
  
@@ -37,7 +37,7 @@ index 6f19b08f41cf815e17d1d97870f5936771b8794c..9bc16c70f52e03e7f1c277c60f4aac80
    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 1d365801c7094a1ea091b1ecfea7ab3d3527bcec..b0df9b3ca6d33fd187a3cbcd750603e4a7db98d3 100644
+index 84d256cad315d93a434a5878805c7114175df3a7..165ba0f0081755a3ece4aa6fdcfb653508bd6df4 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
 @@ -148,6 +148,8 @@ class CORE_EXPORT WebLocalFrameImpl final

+ 10 - 10
patches/common/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 ff75eeab521bf92d0ea40ef6372b229b0233f4f0..6b037a3bd5ace397e1b357498ae3c562084d38af 100644
+index f1ee6aab83bfa5557ff27bca07d69e9a3544ded6..3421d787abf08f3854a5cf21ec62b880fcbba518 100644
 --- a/content/browser/frame_host/render_frame_host_impl.cc
 +++ b/content/browser/frame_host/render_frame_host_impl.cc
-@@ -3694,6 +3694,7 @@ void RenderFrameHostImpl::CreateNewWindow(
+@@ -3646,6 +3646,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 ff75eeab521bf92d0ea40ef6372b229b0233f4f0..6b037a3bd5ace397e1b357498ae3c562
            &no_javascript_access);
  
 diff --git a/content/common/frame.mojom b/content/common/frame.mojom
-index 16a30995a0e20b1a32a418be5a44f1e3c2305cee..637ed8e1ee82cf1cacfedaf142fccc7d63ae98d6 100644
+index 8406b096d6f1e3e3c4b82a02ff4efa0d97ced63e..69424cdd76d458d632e0e2ed902858a7a607b43a 100644
 --- a/content/common/frame.mojom
 +++ b/content/common/frame.mojom
-@@ -261,6 +261,10 @@ struct CreateNewWindowParams {
+@@ -275,6 +275,10 @@ struct CreateNewWindowParams {
  
    // The window features to use for the new window.
    blink.mojom.WindowFeatures features;
@@ -32,10 +32,10 @@ index 16a30995a0e20b1a32a418be5a44f1e3c2305cee..637ed8e1ee82cf1cacfedaf142fccc7d
  
  // 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 9cd2333fe0270a36e4fdc67231adec3324f2f814..4665bd481c452ff790f3626b2f5dc2ab621ebfdf 100644
+index 6a952d2c52082a0a0fe1a256babfb49014d22e0b..04c766ffe55d6c24b7aaa19e70236a7a93fb015c 100644
 --- a/content/public/browser/content_browser_client.cc
 +++ b/content/public/browser/content_browser_client.cc
-@@ -506,6 +506,8 @@ bool ContentBrowserClient::CanCreateWindow(
+@@ -513,6 +513,8 @@ bool ContentBrowserClient::CanCreateWindow(
      const std::string& frame_name,
      WindowOpenDisposition disposition,
      const blink::mojom::WindowFeatures& features,
@@ -45,7 +45,7 @@ index 9cd2333fe0270a36e4fdc67231adec3324f2f814..4665bd481c452ff790f3626b2f5dc2ab
      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 009991aa57e8f543d2fdb7095b2fe2c863373d71..ef7385a2d8619b1264e4aa77629d16948bd3669a 100644
+index 42b673aea33b2831308244eb12e2670156e8f615..3f9739aa7b3a29106bc267ee9ba67dd7ebdd3099 100644
 --- a/content/public/browser/content_browser_client.h
 +++ b/content/public/browser/content_browser_client.h
 @@ -175,6 +175,7 @@ class RenderFrameHost;
@@ -56,7 +56,7 @@ index 009991aa57e8f543d2fdb7095b2fe2c863373d71..ef7385a2d8619b1264e4aa77629d1694
  class SerialDelegate;
  class ServiceManagerConnection;
  class SiteInstance;
-@@ -778,6 +779,8 @@ class CONTENT_EXPORT ContentBrowserClient {
+@@ -786,6 +787,8 @@ class CONTENT_EXPORT ContentBrowserClient {
        const std::string& frame_name,
        WindowOpenDisposition disposition,
        const blink::mojom::WindowFeatures& features,
@@ -66,7 +66,7 @@ index 009991aa57e8f543d2fdb7095b2fe2c863373d71..ef7385a2d8619b1264e4aa77629d1694
        bool opener_suppressed,
        bool* no_javascript_access);
 diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
-index c748edbf5a3264c89b83a88ade3449ce472839ad..6452ef002ce63936f5321bf755f47408f59d0207 100644
+index 2002ea3db55b47c8792ad4e2fca54b08585e89ea..07126db61d6985e42628ea2e518eeda9457f0e71 100644
 --- a/content/renderer/render_view_impl.cc
 +++ b/content/renderer/render_view_impl.cc
 @@ -76,6 +76,7 @@
@@ -77,7 +77,7 @@ index c748edbf5a3264c89b83a88ade3449ce472839ad..6452ef002ce63936f5321bf755f47408
  #include "content/renderer/media/audio/audio_device_factory.h"
  #include "content/renderer/media/stream/media_stream_device_observer.h"
  #include "content/renderer/media/video_capture_impl_manager.h"
-@@ -1354,6 +1355,8 @@ WebView* RenderViewImpl::CreateView(
+@@ -1360,6 +1361,8 @@ WebView* RenderViewImpl::CreateView(
    }
    params->features = ConvertWebWindowFeaturesToMojoWindowFeatures(features);
  

+ 2 - 2
patches/common/chromium/compositor_delegate.patch

@@ -5,10 +5,10 @@ Subject: compositor_delegate.patch
 
 
 diff --git a/content/browser/compositor/gpu_process_transport_factory.cc b/content/browser/compositor/gpu_process_transport_factory.cc
-index 4768ac1a3bac8dee0b146d2ad30a50c6aee330c4..531c862a7a01bd74775621115fade56025cd15c6 100644
+index ff4e3109b11fea4e0a732ebf9ac9c17e4b5d5e8e..09eee0aae0306545af49258a8f11813c06655023 100644
 --- a/content/browser/compositor/gpu_process_transport_factory.cc
 +++ b/content/browser/compositor/gpu_process_transport_factory.cc
-@@ -452,11 +452,20 @@ void GpuProcessTransportFactory::EstablishedGpuChannel(
+@@ -451,11 +451,20 @@ void GpuProcessTransportFactory::EstablishedGpuChannel(
        // surfaces as they are not following the correct mode.
        DisableGpuCompositing(compositor.get());
      }

+ 1 - 1
patches/common/chromium/content_allow_embedder_to_prevent_locking_scheme_registry.patch

@@ -12,7 +12,7 @@ Without this patch, calling `registerStandardSchemes` during initialization
 when in debug mode will cause a DCHECK to fire.
 
 diff --git a/content/app/content_main_runner_impl.cc b/content/app/content_main_runner_impl.cc
-index f006f0992df5b8192849799c2d3d546779d87a08..a63b9d5a95960cca15cde5e392cbe06a0325f517 100644
+index 010ecd6f98489d0945f0998bed2a3c6ff1ff7137..793004d877394bb89447db275cc8d0d8660d263a 100644
 --- a/content/app/content_main_runner_impl.cc
 +++ b/content/app/content_main_runner_impl.cc
 @@ -757,7 +757,7 @@ int ContentMainRunnerImpl::Initialize(const ContentMainParams& params) {

+ 2 - 2
patches/common/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 c964fa664130a1a1694cbe876df0d47d17f5818c..d9711114839e7b68ee4fe71590854833d8302b28 100644
+index f79b1a629779af2b991a1c95ad4e0d4a8ec6d217..28f2aaf4ef55e505e278719956277f1aefe0146a 100644
 --- a/content/browser/browser_main_loop.cc
 +++ b/content/browser/browser_main_loop.cc
-@@ -1547,7 +1547,7 @@ void BrowserMainLoop::MainMessageLoopRun() {
+@@ -1548,7 +1548,7 @@ void BrowserMainLoop::MainMessageLoopRun() {
    }
  
    base::RunLoop run_loop;

+ 2 - 2
patches/common/chromium/cross_site_document_resource_handler.patch

@@ -22,7 +22,7 @@ index f86a9167ac1ec5e7b082e474eb4b5f217d06df92..47df32ecb078a8f18e474f5c38faf2c7
  }
  
 diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc
-index 08fd583f43c15505fa7b8fa4947db429bb3cc595..a841e5c00e2fcc52481ffffcd62fa55892ab8109 100644
+index b41997165352e06cd6179e1d0dd3c18e4ab819a2..bab2e97e836c81ccce6f7ba874ecfcafc3a05de0 100644
 --- a/content/public/browser/content_browser_client.cc
 +++ b/content/public/browser/content_browser_client.cc
 @@ -61,6 +61,10 @@ ContentBrowserClient::SiteInstanceForNavigationType ContentBrowserClient::Should
@@ -37,7 +37,7 @@ index 08fd583f43c15505fa7b8fa4947db429bb3cc595..a841e5c00e2fcc52481ffffcd62fa558
      const MainFunctionParams& parameters) {
    return nullptr;
 diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h
-index 53aeab691ae012401008162e71415e64fa204177..9161d0055ad26bd95de7f8fcad3c1587db1e54e9 100644
+index 406cca4538b978a8de41845b02f4c0d15b393cde..a5e64cf1f90b3a184e0b5ce69f5a9baedcf1a27c 100644
 --- a/content/public/browser/content_browser_client.h
 +++ b/content/public/browser/content_browser_client.h
 @@ -241,6 +241,9 @@ class CONTENT_EXPORT ContentBrowserClient {

+ 1 - 1
patches/common/chromium/dcheck.patch

@@ -17,7 +17,7 @@ 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 90cfe806ba0bef2182f7a1cc7ad02c0010dc2136..e702bf2151aa9f6c3b1981ad9725d1d814494a31 100644
+index 922b03f6e0e529adde410a7b90a549613d47136e..a7845665caf99292b8179bb9ea6440710a9abe2d 100644
 --- a/content/browser/frame_host/navigation_controller_impl.cc
 +++ b/content/browser/frame_host/navigation_controller_impl.cc
 @@ -1201,8 +1201,10 @@ NavigationType NavigationControllerImpl::ClassifyNavigation(

+ 7 - 7
patches/common/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 3703f163d2370292912d969395eccf372284db73..bedfaf0ebfefc5dcca530b8aaab4a829017f3fb9 100644
+index 3046987d5e26d38f3098a21af48e3b115bdadaf7..b484e4b4c1a7872e0c9ae9622370d9a71c5d96c8 100644
 --- a/ui/views/win/hwnd_message_handler.cc
 +++ b/ui/views/win/hwnd_message_handler.cc
-@@ -290,6 +290,10 @@ const int kSynthesizedMouseMessagesTimeDifference = 500;
+@@ -284,6 +284,10 @@ constexpr int kSynthesizedMouseMessagesTimeDifference = 500;
  
  }  // namespace
  
@@ -29,7 +29,7 @@ index 3703f163d2370292912d969395eccf372284db73..bedfaf0ebfefc5dcca530b8aaab4a829
  // 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.
  //
-@@ -341,6 +345,7 @@ class HWNDMessageHandler::ScopedRedrawLock {
+@@ -335,6 +339,7 @@ class HWNDMessageHandler::ScopedRedrawLock {
          cancel_unlock_(false),
          should_lock_(owner_->IsVisible() && !owner->HasChildRenderingWindow() &&
                       ::IsWindow(hwnd_) &&
@@ -37,7 +37,7 @@ index 3703f163d2370292912d969395eccf372284db73..bedfaf0ebfefc5dcca530b8aaab4a829
                       (!(GetWindowLong(hwnd_, GWL_STYLE) & WS_CAPTION) ||
                        !ui::win::IsAeroGlassEnabled())) {
      if (should_lock_)
-@@ -942,6 +947,10 @@ bool HWNDMessageHandler::HasChildRenderingWindow() {
+@@ -936,6 +941,10 @@ bool HWNDMessageHandler::HasChildRenderingWindow() {
        hwnd());
  }
  
@@ -49,11 +49,11 @@ index 3703f163d2370292912d969395eccf372284db73..bedfaf0ebfefc5dcca530b8aaab4a829
  // HWNDMessageHandler, gfx::WindowImpl overrides:
  
 diff --git a/ui/views/win/hwnd_message_handler.h b/ui/views/win/hwnd_message_handler.h
-index 925996e356994bf27939565beb9663c4416de1bc..8c2b5fc09da64a4766c1918eee34d4cfe651958d 100644
+index 3f0c9e26627f9dcda04418a6551f4c815aeb4972..b66321d0e2d93dc436fe24d93e65fad00bf3f42a 100644
 --- a/ui/views/win/hwnd_message_handler.h
 +++ b/ui/views/win/hwnd_message_handler.h
 @@ -183,6 +183,8 @@ class VIEWS_EXPORT HWNDMessageHandler : public gfx::WindowImpl,
-   typedef std::set<DWORD> TouchIDs;
+   using TouchIDs = std::set<DWORD>;
    enum class DwmFrameState { OFF, ON };
  
 +  bool HasNativeFrame();
@@ -62,7 +62,7 @@ index 925996e356994bf27939565beb9663c4416de1bc..8c2b5fc09da64a4766c1918eee34d4cf
    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 a3c4e34bd26891e1bb98bc47038700da7e5a6b94..a919147ef1d46fe562ac74cdf515ae2d3ff8e2c4 100644
+index 3b06661ed6d694a6209f8584065391e074e3e6b3..c8d2583db0b102628f53f554785e5282d8008830 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 {

+ 11 - 11
patches/common/chromium/disable_color_correct_rendering.patch

@@ -32,10 +32,10 @@ index 04e48714a6f4fcf980f91d75e319667dc0ee18a4..0ec60a0bf9f903de67f69422f22b674b
    // Image Decode Service and raster tiles without images until the decode is
    // ready.
 diff --git a/components/viz/common/display/renderer_settings.h b/components/viz/common/display/renderer_settings.h
-index ce4fb4ca4f04c5668795c56ce536b4be292aa278..a6fec64c65f5916896e627473b0f8645a867a5ce 100644
+index 78041fcb9647f740c6a142ec65f2418712c6286c..04e75ac40c38a38bdec634d1aa645854cb1a80d6 100644
 --- a/components/viz/common/display/renderer_settings.h
 +++ b/components/viz/common/display/renderer_settings.h
-@@ -20,6 +20,7 @@ class VIZ_COMMON_EXPORT RendererSettings {
+@@ -23,6 +23,7 @@ class VIZ_COMMON_EXPORT RendererSettings {
    RendererSettings(const RendererSettings& other);
    ~RendererSettings();
  
@@ -44,10 +44,10 @@ index ce4fb4ca4f04c5668795c56ce536b4be292aa278..a6fec64c65f5916896e627473b0f8645
    bool force_antialiasing = false;
    bool force_blending_with_shaders = false;
 diff --git a/components/viz/host/renderer_settings_creation.cc b/components/viz/host/renderer_settings_creation.cc
-index ee1f83f4d3db713f64c4175615be816198ea44a1..446df2e9b84565677ae63893391291877661a267 100644
+index 5d06436069bc7ecc04f3794a873e6f7f22d55042..c5176776562d3506eef384e5e2c4d5a6e89aba63 100644
 --- a/components/viz/host/renderer_settings_creation.cc
 +++ b/components/viz/host/renderer_settings_creation.cc
-@@ -11,6 +11,7 @@
+@@ -12,6 +12,7 @@
  #include "components/viz/common/display/renderer_settings.h"
  #include "components/viz/common/features.h"
  #include "ui/base/ui_base_switches.h"
@@ -55,7 +55,7 @@ index ee1f83f4d3db713f64c4175615be816198ea44a1..446df2e9b84565677ae6389339129187
  
  #if defined(OS_MACOSX)
  #include "ui/base/cocoa/remote_layer_api.h"
-@@ -43,6 +44,8 @@ bool GetSwitchValueAsInt(const base::CommandLine* command_line,
+@@ -48,6 +49,8 @@ bool GetSwitchValueAsInt(const base::CommandLine* command_line,
  RendererSettings CreateRendererSettings() {
    RendererSettings renderer_settings;
    base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
@@ -203,7 +203,7 @@ index 9e0979a93d698665b08623ad7cbc11939d7f4ff8..93f99b09250ab1f515e13de3ac80cea1
 +
 +#undef PATCH_CS
 diff --git a/content/browser/gpu/gpu_process_host.cc b/content/browser/gpu/gpu_process_host.cc
-index e43e5f6bb667a62e7e1205e8da6073de6179e79f..027a552cfbfce3f4f8fe5670bec7db45ad19e57a 100644
+index 6a288270e96b2288a1c7a53bba94f21ee41e0707..e7010b8cd6d3dc4c6479fbbabff131fb59a9d3c4 100644
 --- a/content/browser/gpu/gpu_process_host.cc
 +++ b/content/browser/gpu/gpu_process_host.cc
 @@ -192,6 +192,7 @@ GpuTerminationStatus ConvertToGpuTerminationStatus(
@@ -215,10 +215,10 @@ index e43e5f6bb667a62e7e1205e8da6073de6179e79f..027a552cfbfce3f4f8fe5670bec7db45
      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 b5a8bc48d92a6b2f7fc031ca7ee662db26941008..7805ce82b11be1eaed59aae1fe76f6fd13e901a5 100644
+index e600dd4b1599d7aa0e02c2bab2644c6ee8703140..6b188f8d94a6f372f59ef6a0f6438ef63dfd541f 100644
 --- a/content/browser/renderer_host/render_process_host_impl.cc
 +++ b/content/browser/renderer_host/render_process_host_impl.cc
-@@ -220,6 +220,7 @@
+@@ -219,6 +219,7 @@
  #include "ui/base/ui_base_switches.h"
  #include "ui/base/ui_base_switches_util.h"
  #include "ui/display/display_switches.h"
@@ -226,7 +226,7 @@ index b5a8bc48d92a6b2f7fc031ca7ee662db26941008..7805ce82b11be1eaed59aae1fe76f6fd
  #include "ui/gl/gl_switches.h"
  #include "ui/native_theme/native_theme_features.h"
  
-@@ -2953,6 +2954,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
+@@ -2939,6 +2940,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[] = {
@@ -235,10 +235,10 @@ index b5a8bc48d92a6b2f7fc031ca7ee662db26941008..7805ce82b11be1eaed59aae1fe76f6fd
      network::switches::kExplicitlyAllowedPorts,
      service_manager::switches::kDisableInProcessStackTraces,
 diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
-index e4e8117be4b425e82b58e7e58ce0008a353e4fba..ede9225f944796d4375a704b944b79c47750f8f2 100644
+index dd7a1cb4d0c303ac03e612b6702c8731882ca88d..22939ad3934b64ac8018663b56d788eeacde61f7 100644
 --- a/content/renderer/render_widget.cc
 +++ b/content/renderer/render_widget.cc
-@@ -2771,6 +2771,9 @@ cc::LayerTreeSettings RenderWidget::GenerateLayerTreeSettings(
+@@ -2805,6 +2805,9 @@ cc::LayerTreeSettings RenderWidget::GenerateLayerTreeSettings(
    settings.main_frame_before_activation_enabled =
        cmd.HasSwitch(cc::switches::kEnableMainFrameBeforeActivation);
  

+ 20 - 0
patches/common/chromium/disable_custom_libcxx_on_windows.patch

@@ -0,0 +1,20 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Samuel Attard <[email protected]>
+Date: Fri, 29 Mar 2019 11:04:46 -0700
+Subject: disable custom libcxx on windows
+
+
+diff --git a/build/config/c++/c++.gni b/build/config/c++/c++.gni
+index 5d45ff18455275e2ab416030fb01b103c7a630cf..39774eb51b112e02a9aa9c5288e8b52e33fdcb17 100644
+--- a/build/config/c++/c++.gni
++++ b/build/config/c++/c++.gni
+@@ -13,7 +13,8 @@ declare_args() {
+   # TODO(https://crbug.com/942939): Re-enable libc++ on Windows with libfuzzer.
+   use_custom_libcxx =
+       is_fuchsia || is_android || is_mac ||
+-      (is_win && is_clang && !use_libfuzzer) ||
++      # Do not use custom libcxx on windows
++      # (is_win && is_clang && !use_libfuzzer) ||
+       (is_linux &&
+        (!is_chromeos || default_toolchain != "//build/toolchain/cros:target"))
+ 

+ 1 - 1
patches/common/chromium/disable_detach_webview_frame.patch

@@ -12,7 +12,7 @@ this patch was introduced in Chrome 66.
 Update(zcbenz): The bug is still in Chrome 72.
 
 diff --git a/content/browser/frame_host/render_frame_proxy_host.cc b/content/browser/frame_host/render_frame_proxy_host.cc
-index 59ce8f3cbb143f97371bba507dc851bcf0fbfe00..5101f19660f3519e74dde7fa6d9533666a2629df 100644
+index 3260ea62afa77c902580869dd6b7a652f8b69c34..152de4b65d9140f2d0ada72d2a22b2a7cfe97681 100644
 --- a/content/browser/frame_host/render_frame_proxy_host.cc
 +++ b/content/browser/frame_host/render_frame_proxy_host.cc
 @@ -270,6 +270,12 @@ void RenderFrameProxyHost::SetDestructionCallback(

+ 3 - 3
patches/common/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 5be3603a8100f731e70dd1ea47205c3e213af413..bf9dc541d3e8889f512fe287e48b67210bc5c2b8 100644
+index a69f7599680cf91340429df922ab503e86be8adf..091a2a140f2f12dabbecad412a20e44f66829a2f 100644
 --- a/content/browser/renderer_host/render_widget_host_impl.cc
 +++ b/content/browser/renderer_host/render_widget_host_impl.cc
-@@ -765,6 +765,9 @@ void RenderWidgetHostImpl::WasHidden() {
+@@ -764,6 +764,9 @@ void RenderWidgetHostImpl::WasHidden() {
    if (is_hidden_)
      return;
  
@@ -19,7 +19,7 @@ index 5be3603a8100f731e70dd1ea47205c3e213af413..bf9dc541d3e8889f512fe287e48b6721
  
    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 4ea7d993a8d84eabf2485e07e51fa20f2c2c17e7..06ecfc4c90dc8105fdb2ed05386b5ea0e8a7ef3a 100644
+index ce8bfd88b4956101a376c71623d392ca93b49caf..2ba6d13468468333e03afe3f0a50fdeeacf4972e 100644
 --- a/content/browser/renderer_host/render_widget_host_impl.h
 +++ b/content/browser/renderer_host/render_widget_host_impl.h
 @@ -153,6 +153,9 @@ class CONTENT_EXPORT RenderWidgetHostImpl

+ 2 - 2
patches/common/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 02e6831f00c14a9aab6ba6d4218a94ec133c6076..5746b1207c4ecd6c2d252be79a7e97bd82cc8d0a 100644
+index faecf207e5ab8e40c4c8e72bab79c0d12cd6a4d3..ee6eb1aeaaee8b97e4c6a3e741e75c71ab931305 100644
 --- a/third_party/blink/renderer/core/dom/document.cc
 +++ b/third_party/blink/renderer/core/dom/document.cc
-@@ -3682,7 +3682,9 @@ bool Document::DispatchBeforeUnloadEvent(ChromeClient* chrome_client,
+@@ -3562,7 +3562,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/common/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 77b4b56becc7a0d6b2cc056f08adbe3459dae131..38f42acf2b7e97a4867b9b1064b3782eaf80a0c6 100644
+index 256f726a20a030d2b4ab7b528270669b8952cd10..38c68c1a8db0ec6fe57f8a74f62b1c5bd0620f95 100644
 --- a/third_party/blink/renderer/platform/BUILD.gn
 +++ b/third_party/blink/renderer/platform/BUILD.gn
-@@ -1734,7 +1734,7 @@ jumbo_source_set("blink_platform_unittests_sources") {
+@@ -1738,7 +1738,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",

+ 3 - 3
patches/common/chromium/fix_disable_usage_of_pthread_fchdir_np_and_pthread_chdir_np_in_mas.patch

@@ -5,10 +5,10 @@ Subject: fix: disable usage of pthread_fchdir_np and pthread_chdir_np in MAS
  builds
 
 diff --git a/base/process/launch_mac.cc b/base/process/launch_mac.cc
-index a72c9f18f60293ba33a2007f28def704bc3c2f1b..b397584be8b518bd9800f63fd3a523298911b122 100644
+index c6d5cbbd5417a1b18a6cf94a681de6c671089e35..92d683619e8de505d5172a8ae09e6e67f28da96f 100644
 --- a/base/process/launch_mac.cc
 +++ b/base/process/launch_mac.cc
-@@ -24,10 +24,12 @@
+@@ -25,10 +25,12 @@
  // descriptor. libpthread only exposes a syscall wrapper starting in
  // macOS 10.12, but the system call dates back to macOS 10.5. On older OSes,
  // the syscall is issued directly.
@@ -21,7 +21,7 @@ index a72c9f18f60293ba33a2007f28def704bc3c2f1b..b397584be8b518bd9800f63fd3a52329
  
  namespace base {
  
-@@ -94,21 +96,29 @@ class PosixSpawnFileActions {
+@@ -95,21 +97,29 @@ class PosixSpawnFileActions {
  };
  
  int ChangeCurrentThreadDirectory(const char* path) {

+ 2 - 2
patches/common/chromium/fix_disable_usage_of_setapplicationisdaemon_and.patch

@@ -5,10 +5,10 @@ Subject: fix: 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 b8bc22e665f803aa455a8d3f270e3fd2141b2a9c..79c92be87aedf605803501d98a5a1952fa36e586 100644
+index a122c033798110b715c4c2b18d809ec360c06419..2d65f284d9e68f13e0ecb5bf5d9a3276e2a62686 100644
 --- a/content/utility/utility_service_factory.cc
 +++ b/content/utility/utility_service_factory.cc
-@@ -202,7 +202,7 @@ void UtilityServiceFactory::RunNetworkServiceOnIOThread(
+@@ -205,7 +205,7 @@ void UtilityServiceFactory::RunNetworkServiceOnIOThread(
  std::unique_ptr<service_manager::Service>
  UtilityServiceFactory::CreateAudioService(
      service_manager::mojom::ServiceRequest request) {

+ 25 - 0
patches/common/chromium/fix_retain_compatibility_with_msvc.patch

@@ -0,0 +1,25 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Samuel Attard <[email protected]>
+Date: Tue, 2 Apr 2019 14:38:43 -0700
+Subject: fix: retain compatibility with MSVC++
+
+The C++ standard has always forbidden containers of const elements such
+as std::set<const T>.  In order to retain compability with MSVC++ this
+code can not exist in Chromium.
+
+This should probably also be fixed in libc++ to prevent this occurring
+again but this fixes the build for now.
+
+diff --git a/components/language/core/browser/language_prefs.cc b/components/language/core/browser/language_prefs.cc
+index 317aa1d8298cd697c5388ddeb9680b39e562e9ab..df258ca62acfa8a198bcb7c4be31746a491d938b 100644
+--- a/components/language/core/browser/language_prefs.cc
++++ b/components/language/core/browser/language_prefs.cc
+@@ -85,7 +85,7 @@ void LanguagePrefs::ResetEmptyFluentLanguagesToDefault() {
+ }
+ 
+ base::Value LanguagePrefs::GetDefaultFluentLanguages() {
+-  std::set<const std::string> languages;
++  std::set<std::string> languages;
+ #if defined(OS_CHROMEOS)
+   // Preferred languages.
+   std::string language = language::kFallbackInputMethodLocale;

+ 6 - 6
patches/common/chromium/frame_host_manager.patch

@@ -7,10 +7,10 @@ Allows embedder to intercept site instances chosen by chromium
 and respond with custom instance.
 
 diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc
-index cc7c7b4ffab5377fa71016e233fbfaae87d50329..81a351569528e74fa44e68a804de968bc3a08742 100644
+index 5116c5e77acb759b504e3c1dae027b868edb7013..cf10fdf5136d35961abf972603863ba8fa97dfb5 100644
 --- a/content/browser/frame_host/render_frame_host_manager.cc
 +++ b/content/browser/frame_host/render_frame_host_manager.cc
-@@ -2030,6 +2030,16 @@ bool RenderFrameHostManager::InitRenderView(
+@@ -2008,6 +2008,16 @@ bool RenderFrameHostManager::InitRenderView(
  scoped_refptr<SiteInstance>
  RenderFrameHostManager::GetSiteInstanceForNavigationRequest(
      const NavigationRequest& request) {
@@ -27,7 +27,7 @@ index cc7c7b4ffab5377fa71016e233fbfaae87d50329..81a351569528e74fa44e68a804de968b
    // First, check if the navigation can switch SiteInstances. If not, the
    // navigation should use the current SiteInstance.
    SiteInstance* current_site_instance = render_frame_host_->GetSiteInstance();
-@@ -2062,6 +2072,51 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest(
+@@ -2040,6 +2050,51 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest(
                                                request.common_params().url);
      no_renderer_swap_allowed |=
          request.from_begin_navigation() && !can_renderer_initiate_transfer;
@@ -79,7 +79,7 @@ index cc7c7b4ffab5377fa71016e233fbfaae87d50329..81a351569528e74fa44e68a804de968b
    } else {
      // Subframe navigations will use the current renderer, unless specifically
      // allowed to swap processes.
-@@ -2073,23 +2128,17 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest(
+@@ -2051,23 +2106,17 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest(
    if (no_renderer_swap_allowed && !should_swap_for_error_isolation)
      return scoped_refptr<SiteInstance>(current_site_instance);
  
@@ -108,7 +108,7 @@ index cc7c7b4ffab5377fa71016e233fbfaae87d50329..81a351569528e74fa44e68a804de968b
  }
  
 diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc
-index 4665bd481c452ff790f3626b2f5dc2ab621ebfdf..08fd583f43c15505fa7b8fa4947db429bb3cc595 100644
+index 04c766ffe55d6c24b7aaa19e70236a7a93fb015c..b41997165352e06cd6179e1d0dd3c18e4ab819a2 100644
 --- a/content/public/browser/content_browser_client.cc
 +++ b/content/public/browser/content_browser_client.cc
 @@ -51,6 +51,16 @@ void OverrideOnBindInterface(const service_manager::BindSourceInfo& remote_info,
@@ -129,7 +129,7 @@ index 4665bd481c452ff790f3626b2f5dc2ab621ebfdf..08fd583f43c15505fa7b8fa4947db429
      const MainFunctionParams& parameters) {
    return nullptr;
 diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h
-index ef7385a2d8619b1264e4aa77629d16948bd3669a..53aeab691ae012401008162e71415e64fa204177 100644
+index 3f9739aa7b3a29106bc267ee9ba67dd7ebdd3099..406cca4538b978a8de41845b02f4c0d15b393cde 100644
 --- a/content/public/browser/content_browser_client.h
 +++ b/content/public/browser/content_browser_client.h
 @@ -210,8 +210,37 @@ CONTENT_EXPORT void OverrideOnBindInterface(

+ 2 - 2
patches/common/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 e823c9b9edfd1aaac4909d8926e729ef79f25d70..2810e6b743507257f23a797c67ee23911c5745cf 100644
+index e271342ea2458afe618543a8ff475cf265fb1aca..8ef1d7c83a49ed6144898e045d8e195a0c658af4 100644
 --- a/tools/gritsettings/resource_ids
 +++ b/tools/gritsettings/resource_ids
-@@ -424,6 +424,11 @@
+@@ -427,6 +427,11 @@
      "includes": [28880],
    },
  

+ 2 - 2
patches/common/chromium/ignore_rc_check.patch

@@ -7,10 +7,10 @@ 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 6f01ebf4026444d405cb3b837b21a6370c357180..d03be4244bfa37953b55783f2e245df76b634522 100644
+index f173adb20333998e22c5b937a3e7ce1b62e7ef1e..1b884b7a4badf9096a92068261f3e132181785f9 100644
 --- a/build/toolchain/win/tool_wrapper.py
 +++ b/build/toolchain/win/tool_wrapper.py
-@@ -220,7 +220,11 @@ class WinTool(object):
+@@ -224,7 +224,11 @@ class WinTool(object):
        if rc_exe_exit_code == 0:
          import filecmp
          # Strip "/fo" prefix.

+ 12 - 12
patches/common/chromium/mas_no_private_api.patch

@@ -38,7 +38,7 @@ index d38fa48b8b890d90f2911995a2a51c249005c827..5fe68c71fe101a307ef565013a91b109
  // 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 9b8e15866a325faee845a97f0e5a2f14e343d2f6..148d5fdd3f11ab318f6a0d0add23bd4533b47ed9 100644
+index 17dc6271190c0687fb38c181d9fdb6b5d6addcd4..90cc1e5d47b52aeac38e8e3b638b1f76fa24075a 100644
 --- a/content/browser/accessibility/browser_accessibility_cocoa.mm
 +++ b/content/browser/accessibility/browser_accessibility_cocoa.mm
 @@ -141,6 +141,7 @@
@@ -101,7 +101,7 @@ index 9b8e15866a325faee845a97f0e5a2f14e343d2f6..148d5fdd3f11ab318f6a0d0add23bd45
  
  - (NSNumber*)expanded {
    if (![self instanceActive])
-@@ -2035,6 +2045,7 @@ - (NSValue*)selectedTextRange {
+@@ -2027,6 +2037,7 @@ - (NSValue*)selectedTextRange {
    return [NSValue valueWithRange:NSMakeRange(selStart, selLength)];
  }
  
@@ -109,7 +109,7 @@ index 9b8e15866a325faee845a97f0e5a2f14e343d2f6..148d5fdd3f11ab318f6a0d0add23bd45
  - (id)selectedTextMarkerRange {
    if (![self instanceActive])
      return nil;
-@@ -2067,6 +2078,7 @@ - (id)selectedTextMarkerRange {
+@@ -2059,6 +2070,7 @@ - (id)selectedTextMarkerRange {
                                                 anchorAffinity, *focusObject,
                                                 focusOffset, focusAffinity));
  }
@@ -117,7 +117,7 @@ index 9b8e15866a325faee845a97f0e5a2f14e343d2f6..148d5fdd3f11ab318f6a0d0add23bd45
  
  - (NSValue*)size {
    if (![self instanceActive])
-@@ -2099,6 +2111,7 @@ - (NSString*)sortDirection {
+@@ -2091,6 +2103,7 @@ - (NSString*)sortDirection {
    return nil;
  }
  
@@ -125,7 +125,7 @@ index 9b8e15866a325faee845a97f0e5a2f14e343d2f6..148d5fdd3f11ab318f6a0d0add23bd45
  // Returns a text marker that points to the first character in the document that
  // can be selected with VoiceOver.
  - (id)startTextMarker {
-@@ -2109,6 +2122,7 @@ - (id)startTextMarker {
+@@ -2101,6 +2114,7 @@ - (id)startTextMarker {
    BrowserAccessibilityPositionInstance position = root->CreatePositionAt(0);
    return CreateTextMarker(position->CreatePositionAtStartOfAnchor());
  }
@@ -133,7 +133,7 @@ index 9b8e15866a325faee845a97f0e5a2f14e343d2f6..148d5fdd3f11ab318f6a0d0add23bd45
  
  // Returns a subrole based upon the role.
  - (NSString*)subrole {
-@@ -2414,12 +2428,14 @@ - (NSAttributedString*)attributedValueForRange:(NSRange)range {
+@@ -2406,12 +2420,14 @@ - (NSAttributedString*)attributedValueForRange:(NSRange)range {
    NSMutableAttributedString* attributedValue =
        [[[NSMutableAttributedString alloc] initWithString:value] autorelease];
  
@@ -148,7 +148,7 @@ index 9b8e15866a325faee845a97f0e5a2f14e343d2f6..148d5fdd3f11ab318f6a0d0add23bd45
  
    return [attributedValue attributedSubstringFromRange:range];
  }
-@@ -2504,6 +2520,7 @@ - (id)accessibilityAttributeValue:(NSString*)attribute
+@@ -2496,6 +2512,7 @@ - (id)accessibilityAttributeValue:(NSString*)attribute
        return ToBrowserAccessibilityCocoa(cell);
    }
  
@@ -156,7 +156,7 @@ index 9b8e15866a325faee845a97f0e5a2f14e343d2f6..148d5fdd3f11ab318f6a0d0add23bd45
    if ([attribute isEqualToString:@"AXUIElementForTextMarker"]) {
      BrowserAccessibilityPositionInstance position =
          CreatePositionFromTextMarker(parameter);
-@@ -2681,6 +2698,7 @@ - (id)accessibilityAttributeValue:(NSString*)attribute
+@@ -2673,6 +2690,7 @@ - (id)accessibilityAttributeValue:(NSString*)attribute
      NSString* text = GetTextForTextMarkerRange(parameter);
      return [NSNumber numberWithInt:[text length]];
    }
@@ -164,7 +164,7 @@ index 9b8e15866a325faee845a97f0e5a2f14e343d2f6..148d5fdd3f11ab318f6a0d0add23bd45
  
    if ([attribute isEqualToString:
                       NSAccessibilityBoundsForRangeParameterizedAttribute]) {
-@@ -2714,6 +2732,7 @@ - (id)accessibilityAttributeValue:(NSString*)attribute
+@@ -2706,6 +2724,7 @@ - (id)accessibilityAttributeValue:(NSString*)attribute
      return nil;
    }
  
@@ -172,7 +172,7 @@ index 9b8e15866a325faee845a97f0e5a2f14e343d2f6..148d5fdd3f11ab318f6a0d0add23bd45
    if ([attribute
            isEqualToString:
                NSAccessibilityLineTextMarkerRangeForTextMarkerParameterizedAttribute]) {
-@@ -2793,6 +2812,7 @@ AXPlatformRange range(position->CreatePreviousLineStartPosition(
+@@ -2785,6 +2804,7 @@ AXPlatformRange range(position->CreatePreviousLineStartPosition(
  
      return @(child->GetIndexInParent());
    }
@@ -277,10 +277,10 @@ index fe0b73b51492ca08cbebf3aec74ea0a7caf44aef..fb8b362097f18d947219af36f84b9bea
  
  void BluetoothAdapterMac::RemovePairingDelegateInternal(
 diff --git a/media/audio/BUILD.gn b/media/audio/BUILD.gn
-index fa3a7b08b0ae4f09ff2aeffffc93e65181f4994b..64cf5f96e7c85e2d8969c11ccd27ba6d3154fe91 100644
+index dbc89abd64d5dae45b239482804ecdabbf7086f6..aba6eb679303fc7fb033ddf05fc941cf27ce8439 100644
 --- a/media/audio/BUILD.gn
 +++ b/media/audio/BUILD.gn
-@@ -184,6 +184,12 @@ source_set("audio") {
+@@ -180,6 +180,12 @@ source_set("audio") {
        "mac/scoped_audio_unit.cc",
        "mac/scoped_audio_unit.h",
      ]

+ 2 - 2
patches/common/chromium/no_cache_storage_check.patch

@@ -7,10 +7,10 @@ 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/cache_storage.cc b/content/browser/cache_storage/cache_storage.cc
-index 9e0249a6060b4d84cd8a99db2e40d96b4e715148..2e8e12de9778eeb2bc45e293b6653feeb5b6f779 100644
+index 8ccf3c92c3edd453e0ff3a314d344187056d818b..25e78ca803256ea0115e72c2a3f583c466e2b944 100644
 --- a/content/browser/cache_storage/cache_storage.cc
 +++ b/content/browser/cache_storage/cache_storage.cc
-@@ -103,7 +103,7 @@ class CacheStorage::CacheLoader {
+@@ -106,7 +106,7 @@ class CacheStorage::CacheLoader {
          cache_storage_(cache_storage),
          origin_(origin),
          owner_(owner) {

+ 12 - 12
patches/common/chromium/notification_provenance.patch

@@ -31,7 +31,7 @@ index f251139f5976d4ff52ac4d0f89a2c627c1809c8a..457890dcb49ca59c61326c633d74eabc
  }
  
 diff --git a/content/browser/notifications/blink_notification_service_impl.h b/content/browser/notifications/blink_notification_service_impl.h
-index 088637b68b1fb40fb8a32bb72781b425077e668a..ec2cce6b644e6cc8fd899a761fb55d9a01b65f98 100644
+index cc5f8d1e673962cb435ad9c9547c336ad5542c84..c340739dc78519606081e4190d4538a74e72501a 100644
 --- a/content/browser/notifications/blink_notification_service_impl.h
 +++ b/content/browser/notifications/blink_notification_service_impl.h
 @@ -36,6 +36,7 @@ class CONTENT_EXPORT BlinkNotificationServiceImpl
@@ -51,7 +51,7 @@ index 088637b68b1fb40fb8a32bb72781b425077e668a..ec2cce6b644e6cc8fd899a761fb55d9a
  
    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 a2fb2bbd8761b0c0078fbde0999f4f8f434c4a35..e68613c4a4c6b05694514071c7dc2e0c4419d141 100644
+index 8beb9e516bcf636e95f7481837e67e197422d830..d9fc224db4704057e8cb1596173310d8392bc7d7 100644
 --- a/content/browser/notifications/blink_notification_service_impl_unittest.cc
 +++ b/content/browser/notifications/blink_notification_service_impl_unittest.cc
 @@ -130,7 +130,7 @@ class BlinkNotificationServiceImplTest : public ::testing::Test {
@@ -64,10 +64,10 @@ index a2fb2bbd8761b0c0078fbde0999f4f8f434c4a35..e68613c4a4c6b05694514071c7dc2e0c
          mojo::MakeRequest(&notification_service_ptr_));
  
 diff --git a/content/browser/notifications/platform_notification_context_impl.cc b/content/browser/notifications/platform_notification_context_impl.cc
-index 9d43b4e8cbd0238fdcde03e31537a68c4edb9471..ba5a87e8fca4680e7acd173111d5882a8f0667f9 100644
+index 739a98f2846f0e680e5b175c19692edf754a2bc7..2e9e406e066c750d7fb80ab719265df3e2dba38e 100644
 --- a/content/browser/notifications/platform_notification_context_impl.cc
 +++ b/content/browser/notifications/platform_notification_context_impl.cc
-@@ -178,12 +178,13 @@ void PlatformNotificationContextImpl::Shutdown() {
+@@ -182,12 +182,13 @@ void PlatformNotificationContextImpl::Shutdown() {
  }
  
  void PlatformNotificationContextImpl::CreateService(
@@ -84,10 +84,10 @@ index 9d43b4e8cbd0238fdcde03e31537a68c4edb9471..ba5a87e8fca4680e7acd173111d5882a
  
  void PlatformNotificationContextImpl::RemoveService(
 diff --git a/content/browser/notifications/platform_notification_context_impl.h b/content/browser/notifications/platform_notification_context_impl.h
-index c7c9bc8fb304697bb1802d04e26038c65b8facdc..e73d2b0a276d4a0a7d1a484d11d5ac43d963cc77 100644
+index 24918cede3f2894627c7aaa29e68fa3834bea108..b31583d13a73c72f5a27587add92855472f30dc8 100644
 --- a/content/browser/notifications/platform_notification_context_impl.h
 +++ b/content/browser/notifications/platform_notification_context_impl.h
-@@ -25,6 +25,7 @@
+@@ -24,6 +24,7 @@
  #include "content/common/content_export.h"
  #include "content/public/browser/browser_thread.h"
  #include "content/public/browser/platform_notification_context.h"
@@ -95,7 +95,7 @@ index c7c9bc8fb304697bb1802d04e26038c65b8facdc..e73d2b0a276d4a0a7d1a484d11d5ac43
  #include "third_party/blink/public/platform/modules/notifications/notification_service.mojom.h"
  
  class GURL;
-@@ -66,7 +67,8 @@ class CONTENT_EXPORT PlatformNotificationContextImpl
+@@ -65,7 +66,8 @@ class CONTENT_EXPORT PlatformNotificationContextImpl
    void Shutdown();
  
    // Creates a BlinkNotificationServiceImpl that is owned by this context.
@@ -119,10 +119,10 @@ index b317a37b4fa12be4e737a91948110fd16308c221..b3968f52c478ce051370e543b2fb9043
    parameterized_binder_registry_.AddInterface(
        base::BindRepeating(&BackgroundFetchServiceImpl::CreateForWorker));
 diff --git a/content/public/browser/platform_notification_service.h b/content/public/browser/platform_notification_service.h
-index c7209a74a84ae4a284170ba882ee537cb732d467..4960a11bc922fd79c00bf418e1468f09f0457407 100644
+index b8aaa76d1ffcf92251fd7f229a8e075aba5b2ce3..ab1151f63ff0f21cad5747f5f96afe89d9207107 100644
 --- a/content/public/browser/platform_notification_service.h
 +++ b/content/public/browser/platform_notification_service.h
-@@ -27,6 +27,7 @@ struct PlatformNotificationData;
+@@ -28,6 +28,7 @@ struct PlatformNotificationData;
  namespace content {
  
  class BrowserContext;
@@ -130,7 +130,7 @@ index c7209a74a84ae4a284170ba882ee537cb732d467..4960a11bc922fd79c00bf418e1468f09
  
  // The service using which notifications can be presented to the user. There
  // should be a unique instance of the PlatformNotificationService depending
-@@ -42,6 +43,7 @@ class CONTENT_EXPORT PlatformNotificationService {
+@@ -43,6 +44,7 @@ class CONTENT_EXPORT PlatformNotificationService {
    // Displays the notification described in |notification_data| to the user.
    // This method must be called on the UI thread.
    virtual void DisplayNotification(
@@ -139,7 +139,7 @@ index c7209a74a84ae4a284170ba882ee537cb732d467..4960a11bc922fd79c00bf418e1468f09
        const std::string& notification_id,
        const GURL& origin,
 diff --git a/content/test/mock_platform_notification_service.cc b/content/test/mock_platform_notification_service.cc
-index 7d16ee63cd349c107a0a0c35446cef557be1aed1..ac9860af1234d2c451525bbd924b79fb32f99015 100644
+index a313cb378e5623b9e55786829e0043974c0cb294..26deae4aa831e050035afb294673d7861c4c7578 100644
 --- a/content/test/mock_platform_notification_service.cc
 +++ b/content/test/mock_platform_notification_service.cc
 @@ -26,6 +26,7 @@ MockPlatformNotificationService::MockPlatformNotificationService() = default;
@@ -151,7 +151,7 @@ index 7d16ee63cd349c107a0a0c35446cef557be1aed1..ac9860af1234d2c451525bbd924b79fb
      const std::string& notification_id,
      const GURL& origin,
 diff --git a/content/test/mock_platform_notification_service.h b/content/test/mock_platform_notification_service.h
-index 89aad27b34da99fc90e2d0352994eb3baa64fae4..0c8b8dbdacc83006c53fd85894d95c8fa01166d8 100644
+index 9488023df808cfd6633b3ab9b02d66a1bd929d29..d16e9394d1eea6bc657d1a07a1d09c52a7692bdd 100644
 --- a/content/test/mock_platform_notification_service.h
 +++ b/content/test/mock_platform_notification_service.h
 @@ -45,6 +45,7 @@ class MockPlatformNotificationService : public PlatformNotificationService {

+ 13 - 13
patches/common/chromium/printing.patch

@@ -283,10 +283,10 @@ index 1802034a6e15a6ad8b0d9591cfb79ba5873dc982..a827091facdb4f6b1d74ce826c3492ce
  // Like PrintMsg_PrintPages, but using the print preview document's frame/node.
  IPC_MESSAGE_ROUTED0(PrintMsg_PrintForSystemDialog)
 diff --git a/components/printing/renderer/print_render_frame_helper.cc b/components/printing/renderer/print_render_frame_helper.cc
-index 40ea9d21b07a04fc9b32adf4c24106506afb3e2e..1ba13510f24659040e8a99c5399e6de899d90965 100644
+index 222db5c6b09900001fa835c6dcbd0b200b467a0a..dd85f247d6267aa97fced685991cd2efa617638c 100644
 --- a/components/printing/renderer/print_render_frame_helper.cc
 +++ b/components/printing/renderer/print_render_frame_helper.cc
-@@ -1108,7 +1108,9 @@ void PrintRenderFrameHelper::ScriptedPrint(bool user_initiated) {
+@@ -1109,7 +1109,9 @@ void PrintRenderFrameHelper::ScriptedPrint(bool user_initiated) {
      web_frame->DispatchBeforePrintEvent();
      if (!weak_this)
        return;
@@ -297,7 +297,7 @@ index 40ea9d21b07a04fc9b32adf4c24106506afb3e2e..1ba13510f24659040e8a99c5399e6de8
      if (weak_this)
        web_frame->DispatchAfterPrintEvent();
    }
-@@ -1156,7 +1158,10 @@ void PrintRenderFrameHelper::OnDestruct() {
+@@ -1157,7 +1159,10 @@ void PrintRenderFrameHelper::OnDestruct() {
    delete this;
  }
  
@@ -309,7 +309,7 @@ index 40ea9d21b07a04fc9b32adf4c24106506afb3e2e..1ba13510f24659040e8a99c5399e6de8
    if (ipc_nesting_level_ > 1)
      return;
  
-@@ -1169,7 +1174,8 @@ void PrintRenderFrameHelper::OnPrintPages() {
+@@ -1170,7 +1175,8 @@ void PrintRenderFrameHelper::OnPrintPages() {
    // If we are printing a PDF extension frame, find the plugin node and print
    // that instead.
    auto plugin = delegate_->GetPdfElement(frame);
@@ -319,7 +319,7 @@ index 40ea9d21b07a04fc9b32adf4c24106506afb3e2e..1ba13510f24659040e8a99c5399e6de8
    if (weak_this)
      frame->DispatchAfterPrintEvent();
    // WARNING: |this| may be gone at this point. Do not do any more work here and
-@@ -1186,7 +1192,7 @@ void PrintRenderFrameHelper::OnPrintForSystemDialog() {
+@@ -1187,7 +1193,7 @@ void PrintRenderFrameHelper::OnPrintForSystemDialog() {
    }
    auto weak_this = weak_ptr_factory_.GetWeakPtr();
    Print(frame, print_preview_context_.source_node(),
@@ -328,7 +328,7 @@ index 40ea9d21b07a04fc9b32adf4c24106506afb3e2e..1ba13510f24659040e8a99c5399e6de8
    if (weak_this)
      frame->DispatchAfterPrintEvent();
    // WARNING: |this| may be gone at this point. Do not do any more work here and
-@@ -1222,6 +1228,8 @@ void PrintRenderFrameHelper::OnPrintPreview(
+@@ -1223,6 +1229,8 @@ void PrintRenderFrameHelper::OnPrintPreview(
    if (ipc_nesting_level_ > 1)
      return;
  
@@ -337,7 +337,7 @@ index 40ea9d21b07a04fc9b32adf4c24106506afb3e2e..1ba13510f24659040e8a99c5399e6de8
    print_preview_context_.OnPrintPreview();
  
    UMA_HISTOGRAM_ENUMERATION("PrintPreview.PreviewEvent",
-@@ -1615,7 +1623,10 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) {
+@@ -1616,7 +1624,10 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) {
  
      auto self = weak_ptr_factory_.GetWeakPtr();
      Print(duplicate_node.GetDocument().GetFrame(), duplicate_node,
@@ -349,7 +349,7 @@ index 40ea9d21b07a04fc9b32adf4c24106506afb3e2e..1ba13510f24659040e8a99c5399e6de8
      // Check if |this| is still valid.
      if (!self)
        return;
-@@ -1626,7 +1637,10 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) {
+@@ -1627,7 +1638,10 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) {
  
  void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame,
                                     const blink::WebNode& node,
@@ -361,7 +361,7 @@ index 40ea9d21b07a04fc9b32adf4c24106506afb3e2e..1ba13510f24659040e8a99c5399e6de8
    // If still not finished with earlier print request simply ignore.
    if (prep_frame_view_)
      return;
-@@ -1634,7 +1648,7 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame,
+@@ -1635,7 +1649,7 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame,
    FrameReference frame_ref(frame);
  
    int expected_page_count = 0;
@@ -370,7 +370,7 @@ index 40ea9d21b07a04fc9b32adf4c24106506afb3e2e..1ba13510f24659040e8a99c5399e6de8
      DidFinishPrinting(FAIL_PRINT_INIT);
      return;  // Failed to init print page settings.
    }
-@@ -1654,8 +1668,9 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame,
+@@ -1655,8 +1669,9 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame,
  
      PrintMsg_PrintPages_Params print_settings;
      auto self = weak_ptr_factory_.GetWeakPtr();
@@ -382,7 +382,7 @@ index 40ea9d21b07a04fc9b32adf4c24106506afb3e2e..1ba13510f24659040e8a99c5399e6de8
      // Check if |this| is still valid.
      if (!self)
        return;
-@@ -1665,6 +1680,7 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame,
+@@ -1666,6 +1681,7 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame,
              ? blink::kWebPrintScalingOptionSourceSize
              : scaling_option;
      SetPrintPagesParams(print_settings);
@@ -390,7 +390,7 @@ index 40ea9d21b07a04fc9b32adf4c24106506afb3e2e..1ba13510f24659040e8a99c5399e6de8
      if (print_settings.params.dpi.IsEmpty() ||
          !print_settings.params.document_cookie) {
        DidFinishPrinting(OK);  // Release resources and fail silently on failure.
-@@ -1853,10 +1869,24 @@ std::vector<int> PrintRenderFrameHelper::GetPrintedPages(
+@@ -1854,10 +1870,24 @@ std::vector<int> PrintRenderFrameHelper::GetPrintedPages(
    return printed_pages;
  }
  
@@ -418,7 +418,7 @@ index 40ea9d21b07a04fc9b32adf4c24106506afb3e2e..1ba13510f24659040e8a99c5399e6de8
    // 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.
-@@ -1876,12 +1906,14 @@ bool PrintRenderFrameHelper::InitPrintSettings(bool fit_to_paper_size) {
+@@ -1877,12 +1907,14 @@ bool PrintRenderFrameHelper::InitPrintSettings(bool fit_to_paper_size) {
    return result;
  }
  

+ 6 - 6
patches/common/chromium/render_widget_host_view_base.patch

@@ -5,10 +5,10 @@ Subject: render_widget_host_view_base.patch
 
 
 diff --git a/content/browser/renderer_host/render_widget_host_view_base.cc b/content/browser/renderer_host/render_widget_host_view_base.cc
-index 2672a26d934d082d4c12c4c40db191963d5b789a..b25dada44e04f0299e11919e02c84d5c3a596668 100644
+index be38173457a659fb4b9d1922e416fe3e27420af2..95205c9eaabfdce44b66525c94aacf0b5cdefcc6 100644
 --- a/content/browser/renderer_host/render_widget_host_view_base.cc
 +++ b/content/browser/renderer_host/render_widget_host_view_base.cc
-@@ -652,6 +652,15 @@ viz::FrameSinkId RenderWidgetHostViewBase::FrameSinkIdAtPoint(
+@@ -658,6 +658,15 @@ viz::FrameSinkId RenderWidgetHostViewBase::FrameSinkIdAtPoint(
    return frame_sink_id.is_valid() ? frame_sink_id : GetFrameSinkId();
  }
  
@@ -25,7 +25,7 @@ index 2672a26d934d082d4c12c4c40db191963d5b789a..b25dada44e04f0299e11919e02c84d5c
      const blink::WebMouseEvent& event,
      const ui::LatencyInfo& latency) {
 diff --git a/content/browser/renderer_host/render_widget_host_view_base.h b/content/browser/renderer_host/render_widget_host_view_base.h
-index 8cdb72afa1bce774414fc494c1403630961611f2..1887ec9995909f9883fe06af4a9bbe65aca80958 100644
+index 6aa5e70a3e14064172182907a62007f9b4da38b8..b7419cc69eb0380461060d0ee6a2aac990643aef 100644
 --- a/content/browser/renderer_host/render_widget_host_view_base.h
 +++ b/content/browser/renderer_host/render_widget_host_view_base.h
 @@ -23,8 +23,10 @@
@@ -52,9 +52,9 @@ index 8cdb72afa1bce774414fc494c1403630961611f2..1887ec9995909f9883fe06af4a9bbe65
  class WebCursor;
  class DelegatedFrameHost;
  struct TextInputState;
-@@ -142,6 +146,9 @@ class CONTENT_EXPORT RenderWidgetHostViewBase
-   TouchSelectionControllerClientManager*
+@@ -143,6 +147,9 @@ class CONTENT_EXPORT RenderWidgetHostViewBase
    GetTouchSelectionControllerClientManager() override;
+   void SetLastTabChangeStartTime(base::TimeTicks start_time) final;
  
 +  virtual void InitAsGuest(RenderWidgetHostView* parent_host_view,
 +                           RenderWidgetHostViewGuest* guest_view) {}
@@ -62,7 +62,7 @@ index 8cdb72afa1bce774414fc494c1403630961611f2..1887ec9995909f9883fe06af4a9bbe65
    // This only needs to be overridden by RenderWidgetHostViewBase subclasses
    // that handle content embedded within other RenderWidgetHostViews.
    gfx::PointF TransformPointToRootCoordSpaceF(
-@@ -352,6 +359,11 @@ class CONTENT_EXPORT RenderWidgetHostViewBase
+@@ -362,6 +369,11 @@ class CONTENT_EXPORT RenderWidgetHostViewBase
    virtual void ProcessGestureEvent(const blink::WebGestureEvent& event,
                                     const ui::LatencyInfo& latency);
  

+ 5 - 5
patches/common/chromium/render_widget_host_view_mac.patch

@@ -5,7 +5,7 @@ Subject: render_widget_host_view_mac.patch
 
 
 diff --git a/content/browser/renderer_host/render_widget_host_view_cocoa.mm b/content/browser/renderer_host/render_widget_host_view_cocoa.mm
-index ed18a0a46c22620850d4384e6bb82dba80a3b6d8..c940999eeec8fcf2a2a4514d0edd67f844979b41 100644
+index d04130dcb387a985c57fd0d94c10a8c327afe6f3..8d2ed9af59a8e9bbd242ab098cba7f75fc1e6a3e 100644
 --- a/content/browser/renderer_host/render_widget_host_view_cocoa.mm
 +++ b/content/browser/renderer_host/render_widget_host_view_cocoa.mm
 @@ -142,6 +142,11 @@ void ExtractUnderlines(NSAttributedString* string,
@@ -30,7 +30,7 @@ index ed18a0a46c22620850d4384e6bb82dba80a3b6d8..c940999eeec8fcf2a2a4514d0edd67f8
    return [self acceptsMouseEventsWhenInactive];
  }
  
-@@ -765,6 +773,10 @@ - (void)keyEvent:(NSEvent*)theEvent wasKeyEquivalent:(BOOL)equiv {
+@@ -786,6 +794,10 @@ - (void)keyEvent:(NSEvent*)theEvent wasKeyEquivalent:(BOOL)equiv {
                                eventType == NSKeyDown &&
                                !(modifierFlags & NSCommandKeyMask);
  
@@ -41,7 +41,7 @@ index ed18a0a46c22620850d4384e6bb82dba80a3b6d8..c940999eeec8fcf2a2a4514d0edd67f8
    // We only handle key down events and just simply forward other events.
    if (eventType != NSKeyDown) {
      clientHelper_->ForwardKeyboardEvent(event, latency_info);
-@@ -1513,9 +1525,11 @@ - (id)accessibilityFocusedUIElement {
+@@ -1534,9 +1546,11 @@ - (id)accessibilityFocusedUIElement {
  // Since this implementation doesn't have to wait any IPC calls, this doesn't
  // make any key-typing jank. --hbono 7/23/09
  //
@@ -53,7 +53,7 @@ index ed18a0a46c22620850d4384e6bb82dba80a3b6d8..c940999eeec8fcf2a2a4514d0edd67f8
  
  - (NSArray*)validAttributesForMarkedText {
    // This code is just copied from WebKit except renaming variables.
-@@ -1524,7 +1538,10 @@ - (NSArray*)validAttributesForMarkedText {
+@@ -1545,7 +1559,10 @@ - (NSArray*)validAttributesForMarkedText {
          initWithObjects:NSUnderlineStyleAttributeName,
                          NSUnderlineColorAttributeName,
                          NSMarkedClauseSegmentAttributeName,
@@ -66,7 +66,7 @@ index ed18a0a46c22620850d4384e6bb82dba80a3b6d8..c940999eeec8fcf2a2a4514d0edd67f8
    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 f6937e35b3e4421a5584d6046ba824ac7e0d0847..b150724b7bee7ffe171a3095519ecd2ca9a38826 100644
+index cb067c08a07b2fafb056f0d1cfa3d6b39c521a88..74d4ddbf24a2441a4eaafcde932ad67df9c7c913 100644
 --- a/content/browser/renderer_host/render_widget_host_view_mac.mm
 +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
 @@ -61,6 +61,7 @@

+ 3 - 3
patches/common/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 3bd3fb2b18fb6309b22d2ffff5b3372afd6e486d..523faaa6df78cac1b758f49f8180583c7682c85a 100644
+index 7e918a479736690e375182b8baf9de44af23aa43..f43097d5983ffabd58824da6a3005255635d4176 100644
 --- a/chrome/BUILD.gn
 +++ b/chrome/BUILD.gn
-@@ -1650,7 +1650,7 @@ if (is_chrome_branded && !is_android) {
+@@ -1646,7 +1646,7 @@ if (is_chrome_branded && !is_android) {
    }
  }
  
@@ -64,7 +64,7 @@ index 3bd3fb2b18fb6309b22d2ffff5b3372afd6e486d..523faaa6df78cac1b758f49f8180583c
    chrome_paks("packed_resources") {
      if (is_mac) {
        output_dir = "$root_gen_dir/repack"
-@@ -1674,6 +1674,12 @@ if (!is_android) {
+@@ -1670,6 +1670,12 @@ if (!is_android) {
    }
  }
  

+ 1 - 1
patches/common/chromium/scroll_bounce_flag.patch

@@ -6,7 +6,7 @@ Subject: scroll_bounce_flag.patch
 Patch to make scrollBounce option work.
 
 diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
-index 44d963793f143530704a0a06273e51d7c68766cc..5cea319fea51e27f6bd5be7221bafb186b2a3973 100644
+index 01be4381e488e7171e02281e158cbad227f5ae09..7739228c99432dd66fda16614c40a50254294224 100644
 --- a/content/renderer/render_thread_impl.cc
 +++ b/content/renderer/render_thread_impl.cc
 @@ -1535,7 +1535,7 @@ bool RenderThreadImpl::IsGpuMemoryBufferCompositorResourcesEnabled() {

+ 16 - 37
patches/common/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 4c1b8bda5a8dbd52d0047e8945490d25c21a3164..2fcc2f9a2b233223b99d67df0f2ecaf02b464ae7 100644
+index 1ca339cf487763237d45b7ce2cead2459ecd7e93..754821b54f7c8e6b1653e201ca36bd26db842329 100644
 --- a/chrome/browser/ssl/security_state_tab_helper.cc
 +++ b/chrome/browser/ssl/security_state_tab_helper.cc
 @@ -12,10 +12,12 @@
@@ -22,16 +22,18 @@ index 4c1b8bda5a8dbd52d0047e8945490d25c21a3164..2fcc2f9a2b233223b99d67df0f2ecaf0
  #include "chrome/common/chrome_switches.h"
  #include "chrome/common/pref_names.h"
  #include "chrome/common/secure_origin_whitelist.h"
-@@ -42,7 +44,7 @@
- #include "chrome/browser/chromeos/policy/policy_cert_service_factory.h"
+@@ -45,8 +47,10 @@
  #endif  // defined(OS_CHROMEOS)
  
--#if defined(SAFE_BROWSING_DB_LOCAL)
+ #if defined(FULL_SAFE_BROWSING)
 +#if 0
  #include "chrome/browser/safe_browsing/chrome_password_protection_service.h"
  #endif
++#endif
+ 
+ namespace {
  
-@@ -78,7 +80,9 @@ bool IsOriginSecureWithWhitelist(
+@@ -82,7 +86,9 @@ bool IsOriginSecureWithWhitelist(
  
  }  // namespace
  
@@ -41,7 +43,7 @@ index 4c1b8bda5a8dbd52d0047e8945490d25c21a3164..2fcc2f9a2b233223b99d67df0f2ecaf0
  
  SecurityStateTabHelper::SecurityStateTabHelper(
      content::WebContents* web_contents)
-@@ -138,6 +142,7 @@ void SecurityStateTabHelper::DidFinishNavigation(
+@@ -161,6 +167,7 @@ void SecurityStateTabHelper::DidFinishNavigation(
      UMA_HISTOGRAM_BOOLEAN("interstitial.ssl.visited_site_after_warning", true);
    }
  
@@ -49,7 +51,7 @@ index 4c1b8bda5a8dbd52d0047e8945490d25c21a3164..2fcc2f9a2b233223b99d67df0f2ecaf0
    // Security indicator UI study (https://crbug.com/803501): Show a message in
    // the console to reduce developer confusion about the experimental UI
    // treatments for HTTPS pages with EV certificates.
-@@ -165,6 +170,7 @@ void SecurityStateTabHelper::DidFinishNavigation(
+@@ -188,6 +195,7 @@ void SecurityStateTabHelper::DidFinishNavigation(
            "Validation is still valid.");
      }
    }
@@ -57,7 +59,7 @@ index 4c1b8bda5a8dbd52d0047e8945490d25c21a3164..2fcc2f9a2b233223b99d67df0f2ecaf0
  }
  
  void SecurityStateTabHelper::DidChangeVisibleSecurityState() {
-@@ -190,6 +196,7 @@ SecurityStateTabHelper::GetMaliciousContentStatus() const {
+@@ -211,6 +219,7 @@ SecurityStateTabHelper::GetMaliciousContentStatus() const {
        web_contents()->GetController().GetVisibleEntry();
    if (!entry)
      return security_state::MALICIOUS_CONTENT_STATUS_NONE;
@@ -65,7 +67,7 @@ index 4c1b8bda5a8dbd52d0047e8945490d25c21a3164..2fcc2f9a2b233223b99d67df0f2ecaf0
    safe_browsing::SafeBrowsingService* sb_service =
        g_browser_process->safe_browsing_service();
    if (!sb_service)
-@@ -257,6 +264,7 @@ SecurityStateTabHelper::GetMaliciousContentStatus() const {
+@@ -278,6 +287,7 @@ SecurityStateTabHelper::GetMaliciousContentStatus() const {
          break;
      }
    }
@@ -73,7 +75,7 @@ index 4c1b8bda5a8dbd52d0047e8945490d25c21a3164..2fcc2f9a2b233223b99d67df0f2ecaf0
    return security_state::MALICIOUS_CONTENT_STATUS_NONE;
  }
  
-@@ -275,15 +283,19 @@ std::vector<std::string> SecurityStateTabHelper::GetSecureOriginsAndPatterns()
+@@ -285,16 +295,20 @@ std::vector<std::string> SecurityStateTabHelper::GetSecureOriginsAndPatterns()
      const {
    const base::CommandLine& command_line =
        *base::CommandLine::ForCurrentProcess();
@@ -83,37 +85,14 @@ index 4c1b8bda5a8dbd52d0047e8945490d25c21a3164..2fcc2f9a2b233223b99d67df0f2ecaf0
    PrefService* prefs = profile->GetPrefs();
 +#endif
    std::string origins_str = "";
-   if (command_line.HasSwitch(switches::kUnsafelyTreatInsecureOriginAsSecure)) {
+   if (command_line.HasSwitch(
+           network::switches::kUnsafelyTreatInsecureOriginAsSecure)) {
      origins_str = command_line.GetSwitchValueASCII(
-         switches::kUnsafelyTreatInsecureOriginAsSecure);
+         network::switches::kUnsafelyTreatInsecureOriginAsSecure);
 +#if 0
    } else if (prefs->HasPrefPath(prefs::kUnsafelyTreatInsecureOriginAsSecure)) {
      origins_str = prefs->GetString(prefs::kUnsafelyTreatInsecureOriginAsSecure);
 +#endif
    }
-   return secure_origin_whitelist::ParseWhitelist(origins_str);
+   return network::ParseSecureOriginAllowlist(origins_str);
  }
-diff --git a/chrome/common/secure_origin_whitelist.cc b/chrome/common/secure_origin_whitelist.cc
-index b70d6ced887d2a2ecb576b20d79e7fc4272e2054..5a75fe115c3c77f4a9edf7913b47341a757d1b42 100644
---- a/chrome/common/secure_origin_whitelist.cc
-+++ b/chrome/common/secure_origin_whitelist.cc
-@@ -13,7 +13,9 @@
- #include "chrome/common/chrome_switches.h"
- #include "chrome/common/pref_names.h"
- #include "components/prefs/pref_registry_simple.h"
-+#if 0
- #include "extensions/common/constants.h"
-+#endif
- #include "net/base/registry_controlled_domains/registry_controlled_domain.h"
- #include "url/gurl.h"
- #include "url/origin.h"
-@@ -163,7 +165,9 @@ std::vector<std::string> GetWhitelist() {
- 
- std::set<std::string> GetSchemesBypassingSecureContextCheck() {
-   std::set<std::string> schemes;
-+#if 0
-   schemes.insert(extensions::kExtensionScheme);
-+#endif
-   return schemes;
- }
- 

+ 5 - 5
patches/common/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 d2cf83659d91d0439c341d8b9fe40d36f616a9d3..b5a8bc48d92a6b2f7fc031ca7ee662db26941008 100644
+index 19cb14736dfd1e87f3f3d9e0e552e6c0fdec5290..e600dd4b1599d7aa0e02c2bab2644c6ee8703140 100644
 --- a/content/browser/renderer_host/render_process_host_impl.cc
 +++ b/content/browser/renderer_host/render_process_host_impl.cc
-@@ -423,6 +423,10 @@ class RendererSandboxedProcessLauncherDelegate
+@@ -422,6 +422,10 @@ class RendererSandboxedProcessLauncherDelegate
      : public SandboxedProcessLauncherDelegate {
   public:
    RendererSandboxedProcessLauncherDelegate() {}
@@ -36,7 +36,7 @@ index d2cf83659d91d0439c341d8b9fe40d36f616a9d3..b5a8bc48d92a6b2f7fc031ca7ee662db
  
    ~RendererSandboxedProcessLauncherDelegate() override {}
  
-@@ -442,6 +446,9 @@ class RendererSandboxedProcessLauncherDelegate
+@@ -441,6 +445,9 @@ class RendererSandboxedProcessLauncherDelegate
  
  #if BUILDFLAG(USE_ZYGOTE_HANDLE)
    service_manager::ZygoteHandle GetZygote() override {
@@ -46,7 +46,7 @@ index d2cf83659d91d0439c341d8b9fe40d36f616a9d3..b5a8bc48d92a6b2f7fc031ca7ee662db
      const base::CommandLine& browser_command_line =
          *base::CommandLine::ForCurrentProcess();
      base::CommandLine::StringType renderer_prefix =
-@@ -455,6 +462,11 @@ class RendererSandboxedProcessLauncherDelegate
+@@ -454,6 +461,11 @@ class RendererSandboxedProcessLauncherDelegate
    service_manager::SandboxType GetSandboxType() override {
      return service_manager::SANDBOX_TYPE_RENDERER;
    }
@@ -58,7 +58,7 @@ index d2cf83659d91d0439c341d8b9fe40d36f616a9d3..b5a8bc48d92a6b2f7fc031ca7ee662db
  };
  
  const char kSessionStorageHolderKey[] = "kSessionStorageHolderKey";
-@@ -1741,11 +1753,18 @@ bool RenderProcessHostImpl::Init() {
+@@ -1736,11 +1748,18 @@ bool RenderProcessHostImpl::Init() {
        cmd_line->PrependWrapper(renderer_prefix);
      AppendRendererCommandLine(cmd_line.get());
  

+ 3 - 3
patches/common/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 c7ea2789c7d8cb28df9f270340c201cf73a03e7e..34578d40d4505d7bb134650686c2cc61af2c7c3a 100644
+index 487d5876e20ddcfe8a7b55f4ee5ba32e82934ba0..f603b8ce6ee7a27af2e2c5ecf8bf1e6660d8eec4 100644
 --- a/content/browser/web_contents/web_contents_impl.cc
 +++ b/content/browser/web_contents/web_contents_impl.cc
-@@ -2069,6 +2069,12 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
+@@ -2066,6 +2066,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 c7ea2789c7d8cb28df9f270340c201cf73a03e7e..34578d40d4505d7bb134650686c2cc61
    WebContentsViewDelegate* delegate =
        GetContentClient()->browser()->GetWebContentsViewDelegate(this);
  
-@@ -2084,6 +2090,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
+@@ -2081,6 +2087,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
            &render_view_host_delegate_view_);
      }
    }

+ 0 - 117
patches/common/chromium/webgl_context_attributes.patch

@@ -1,117 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Milan Burda <[email protected]>
-Date: Thu, 20 Sep 2018 17:47:01 -0700
-Subject: webgl_context_attributes.patch
-
-
-diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer/renderer_blink_platform_impl.cc
-index 1277a3b2c1e4d9ff61d7e4968831e03e57395c51..b9f3d081a6ff0309aa4f2133e42bc097addaaf4e 100644
---- a/content/renderer/renderer_blink_platform_impl.cc
-+++ b/content/renderer/renderer_blink_platform_impl.cc
-@@ -916,8 +916,10 @@ RendererBlinkPlatformImpl::CreateOffscreenGraphicsContext3DProvider(
-   attributes.sample_buffers = 0;
-   attributes.bind_generates_resource = false;
-   attributes.enable_raster_interface = web_attributes.enable_raster_interface;
--  // Prefer discrete GPU for WebGL.
--  attributes.gpu_preference = gl::PreferDiscreteGpu;
-+
-+  attributes.gpu_preference = web_attributes.prefer_integrated_gpu
-+      ? gl::PreferIntegratedGpu
-+      : gl::PreferDiscreteGpu;
- 
-   attributes.fail_if_major_perf_caveat =
-       web_attributes.fail_if_major_performance_caveat;
-diff --git a/third_party/blink/public/platform/platform.h b/third_party/blink/public/platform/platform.h
-index e89fff83c1c7795bc26831565d1bf25eda4195ae..d7ac7d96ad5c3e20075948c329a6d5ede0ae7a38 100644
---- a/third_party/blink/public/platform/platform.h
-+++ b/third_party/blink/public/platform/platform.h
-@@ -538,6 +538,7 @@ class BLINK_PLATFORM_EXPORT Platform {
-     kWebGPUContextType,  // WebGPU context
-   };
-   struct ContextAttributes {
-+    bool prefer_integrated_gpu = false;
-     bool fail_if_major_performance_caveat = false;
-     ContextType context_type = kGLES2ContextType;
-     // Offscreen contexts usually share a surface for the default frame buffer
-diff --git a/third_party/blink/renderer/core/html/canvas/canvas_context_creation_attributes_core.h b/third_party/blink/renderer/core/html/canvas/canvas_context_creation_attributes_core.h
-index 614e4e3a8737c1149baac1aedb985c6be62c9a84..3ae0b2a809532707ca9c8b3964737a1a5941e132 100644
---- a/third_party/blink/renderer/core/html/canvas/canvas_context_creation_attributes_core.h
-+++ b/third_party/blink/renderer/core/html/canvas/canvas_context_creation_attributes_core.h
-@@ -30,6 +30,7 @@ class CORE_EXPORT CanvasContextCreationAttributesCore {
-   String pixel_format = "uint8";
-   bool premultiplied_alpha = true;
-   bool preserve_drawing_buffer = false;
-+  String power_preference = "default";
-   bool stencil = false;
-   bool xr_compatible = false;
- };
-diff --git a/third_party/blink/renderer/modules/canvas/htmlcanvas/canvas_context_creation_attributes_module.idl b/third_party/blink/renderer/modules/canvas/htmlcanvas/canvas_context_creation_attributes_module.idl
-index ad9f867f46be2c652da9fd328517de6d87de31a7..b4f97a0fdc658a23d5d021172e32d68f68a7c38f 100644
---- a/third_party/blink/renderer/modules/canvas/htmlcanvas/canvas_context_creation_attributes_module.idl
-+++ b/third_party/blink/renderer/modules/canvas/htmlcanvas/canvas_context_creation_attributes_module.idl
-@@ -28,6 +28,12 @@ enum CanvasPixelFormat {
-     "float16",
- };
- 
-+enum CanvasPowerPreference {
-+    "default",
-+    "low-power",
-+    "high-performance",
-+};
-+
- [PermissiveDictionaryConversion]
- dictionary CanvasContextCreationAttributesModule {
-     // This is an experimental feature, but it is not hidden behind a flag in
-@@ -47,6 +53,7 @@ dictionary CanvasContextCreationAttributesModule {
-     boolean antialias = true;
-     boolean premultipliedAlpha = true;
-     boolean preserveDrawingBuffer = false;
-+    CanvasPowerPreference powerPreference = "default";
-     boolean failIfMajorPerformanceCaveat = false;
-     [OriginTrialEnabled=WebXR] boolean xrCompatible = false;
- };
-diff --git a/third_party/blink/renderer/modules/webgl/webgl_context_attribute_helpers.cc b/third_party/blink/renderer/modules/webgl/webgl_context_attribute_helpers.cc
-index 7a74942ab1f4495956d8e96ecd98b8028a20efa3..9a868cdb36ce468d3116379cfc04da28acfe010b 100644
---- a/third_party/blink/renderer/modules/webgl/webgl_context_attribute_helpers.cc
-+++ b/third_party/blink/renderer/modules/webgl/webgl_context_attribute_helpers.cc
-@@ -17,6 +17,7 @@ WebGLContextAttributes* ToWebGLContextAttributes(
-   result->setAntialias(attrs.antialias);
-   result->setPremultipliedAlpha(attrs.premultiplied_alpha);
-   result->setPreserveDrawingBuffer(attrs.preserve_drawing_buffer);
-+  result->setPowerPreference(attrs.power_preference);
-   result->setFailIfMajorPerformanceCaveat(
-       attrs.fail_if_major_performance_caveat);
-   result->setXrCompatible(attrs.xr_compatible);
-@@ -29,6 +30,7 @@ Platform::ContextAttributes ToPlatformContextAttributes(
-     Platform::ContextType context_type,
-     bool support_own_offscreen_surface) {
-   Platform::ContextAttributes result;
-+  result.prefer_integrated_gpu = attrs.power_preference == "low-power";
-   result.fail_if_major_performance_caveat =
-       attrs.fail_if_major_performance_caveat;
-   result.context_type = context_type;
-diff --git a/third_party/blink/renderer/modules/webgl/webgl_context_attributes.idl b/third_party/blink/renderer/modules/webgl/webgl_context_attributes.idl
-index 725dbfb351e7556e137750d95104648c879dffc1..2e4df15a8dfe1a8ea504205e951a3d270e23ed46 100644
---- a/third_party/blink/renderer/modules/webgl/webgl_context_attributes.idl
-+++ b/third_party/blink/renderer/modules/webgl/webgl_context_attributes.idl
-@@ -26,6 +26,12 @@
- 
- // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2
- 
-+enum WebGLPowerPreference {
-+    "default",
-+    "low-power",
-+    "high-performance",
-+};
-+
- dictionary WebGLContextAttributes {
-     boolean alpha = true;
-     boolean depth = true;
-@@ -33,6 +39,7 @@ dictionary WebGLContextAttributes {
-     boolean antialias = true;
-     boolean premultipliedAlpha = true;
-     boolean preserveDrawingBuffer = false;
-+    WebGLPowerPreference powerPreference = "default";
-     boolean failIfMajorPerformanceCaveat = false;
-     [OriginTrialEnabled=WebXR] boolean xrCompatible = false;
-     // TODO(crbug.com/788439): remove OriginTrialEnabled.

+ 2 - 2
patches/common/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 3ae2cd85d98ebde08361b4dce810456b43b8cd1c..d8d1b975d0d88db8cf147e57763e30ce58d1eb17 100644
+index 0c15633445d75373cd6e2e7da773d6c318758e4e..0c1c53947153497d33fdf9b6841abe1fcbcf0fd8 100644
 --- a/content/browser/web_contents/web_contents_view_aura.cc
 +++ b/content/browser/web_contents/web_contents_view_aura.cc
-@@ -676,6 +676,7 @@ gfx::NativeView WebContentsViewAura::GetRenderWidgetHostViewParent() const {
+@@ -575,6 +575,7 @@ gfx::NativeView WebContentsViewAura::GetRenderWidgetHostViewParent() const {
  
  bool WebContentsViewAura::IsValidDragTarget(
      RenderWidgetHostImpl* target_rwh) const {

+ 12 - 12
patches/common/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 3b5c53a10c8d6aa2e173a7e7788e8955c7299d4f..614f5f8296c13f127cb081d1b05c908a52c92daf 100644
+index b8da0451f5857d9bffa7dc913dcf0304da2325b4..566faeff313c1f23a209ddb4ee6194efb8fc11fb 100644
 --- a/content/public/renderer/content_renderer_client.h
 +++ b/content/public/renderer/content_renderer_client.h
-@@ -384,6 +384,11 @@ class CONTENT_EXPORT ContentRendererClient {
+@@ -383,6 +383,11 @@ class CONTENT_EXPORT ContentRendererClient {
    virtual void DidInitializeWorkerContextOnWorkerThread(
        v8::Local<v8::Context> context) {}
  
@@ -21,10 +21,10 @@ index 3b5c53a10c8d6aa2e173a7e7788e8955c7299d4f..614f5f8296c13f127cb081d1b05c908a
    // 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 b9f3d081a6ff0309aa4f2133e42bc097addaaf4e..276a52e903658748d373e61be9b084a1f44519d1 100644
+index 84554504ddbcccf9bd85d8eea2f0d42b3ba5a1f6..9d756c084eb31ee4d74ba5f0fa5ca9294c15a66b 100644
 --- a/content/renderer/renderer_blink_platform_impl.cc
 +++ b/content/renderer/renderer_blink_platform_impl.cc
-@@ -1064,6 +1064,12 @@ void RendererBlinkPlatformImpl::WillStopWorkerThread() {
+@@ -1083,6 +1083,12 @@ void RendererBlinkPlatformImpl::WillStopWorkerThread() {
    WorkerThreadRegistry::Instance()->WillStopCurrentWorkerThread();
  }
  
@@ -38,22 +38,22 @@ index b9f3d081a6ff0309aa4f2133e42bc097addaaf4e..276a52e903658748d373e61be9b084a1
      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 38ff3be9084334641d5537dda5b5fe5e8f9f8417..93c4dc904fd4f539faf48adc3c8770d052855050 100644
+index a1f782b108b160dc5837a225f313f4c056728471..001a84fdc47591e09730ba49bb7d3219a2961bba 100644
 --- a/content/renderer/renderer_blink_platform_impl.h
 +++ b/content/renderer/renderer_blink_platform_impl.h
-@@ -210,6 +210,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl {
+@@ -211,6 +211,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl {
    void DidStartWorkerThread() override;
    void WillStopWorkerThread() override;
    void WorkerContextCreated(const v8::Local<v8::Context>& worker) override;
 +  void WorkerContextWillDestroy(const v8::Local<v8::Context>& worker) override;
  
-   // Disables the WebSandboxSupport implementation for testing.
-   // Tests that do not set up a full sandbox environment should call
+   void RecordMetricsForBackgroundedRendererPurge() override;
+ 
 diff --git a/third_party/blink/public/platform/platform.h b/third_party/blink/public/platform/platform.h
-index d7ac7d96ad5c3e20075948c329a6d5ede0ae7a38..66881ba9b2511ef39e58c983907ec1894c046c2a 100644
+index c6c49fcbe38b9a4e892c50e68a2cbc3e2bbeb30b..45d2c3dde539ef61d190f13c1964d0127e435c9b 100644
 --- a/third_party/blink/public/platform/platform.h
 +++ b/third_party/blink/public/platform/platform.h
-@@ -687,6 +687,7 @@ class BLINK_PLATFORM_EXPORT Platform {
+@@ -681,6 +681,7 @@ class BLINK_PLATFORM_EXPORT Platform {
    virtual void DidStartWorkerThread() {}
    virtual void WillStopWorkerThread() {}
    virtual void WorkerContextCreated(const v8::Local<v8::Context>& worker) {}
@@ -62,10 +62,10 @@ index d7ac7d96ad5c3e20075948c329a6d5ede0ae7a38..66881ba9b2511ef39e58c983907ec189
        const WebSecurityOrigin& script_origin) {
      return false;
 diff --git a/third_party/blink/renderer/core/workers/worker_thread.cc b/third_party/blink/renderer/core/workers/worker_thread.cc
-index e55b99843fa42056197875b883a944f6de4ad79d..eb1508065eee7235816e2d6047220291007324e4 100644
+index 96dacc97cac57a039f2506ab4d4e3ca2664e18ef..5a31664f44ec87d87e1500b00ec4732918ede625 100644
 --- a/third_party/blink/renderer/core/workers/worker_thread.cc
 +++ b/third_party/blink/renderer/core/workers/worker_thread.cc
-@@ -559,6 +559,12 @@ void WorkerThread::PrepareForShutdownOnWorkerThread() {
+@@ -558,6 +558,12 @@ void WorkerThread::PrepareForShutdownOnWorkerThread() {
        SetExitCode(ExitCode::kGracefullyTerminated);
    }
  

+ 1 - 0
patches/common/v8/.patches

@@ -4,3 +4,4 @@ build_gn.patch
 expose_mksnapshot.patch
 deps_provide_more_v8_backwards_compatibility.patch
 dcheck.patch
+fixme_revert_heap_api_remove_deprecated_apis.patch

+ 3 - 3
patches/common/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 6ecc48af33288c1d5b8a8d847581c1edd8c173f9..ea203a23a945a03e4494a1b3d615381dd5699e2c 100644
+index 6dee8ca634900af699ac1a54e10fc2a1ec4a7319..fd4e4f95022cb8e7332f9371ab478b8063cf048c 100644
 --- a/include/v8.h
 +++ b/include/v8.h
-@@ -4695,6 +4695,13 @@ class V8_EXPORT ArrayBuffer : public Object {
+@@ -4694,6 +4694,13 @@ class V8_EXPORT ArrayBuffer : public Object {
       */
      virtual void* AllocateUninitialized(size_t length) = 0;
  
@@ -30,7 +30,7 @@ index 6ecc48af33288c1d5b8a8d847581c1edd8c173f9..ea203a23a945a03e4494a1b3d615381d
       * 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.cc b/src/api.cc
-index 168522f8c36b4385479ebba7f06f8a5261ab7a85..b87dfac21d26177128f7c434bc2577e18ab905c6 100644
+index a5bb14f935a0a96380cbaf9839a5063dbd420a16..b6071ee70e1f5f8c308118fc21fbab387129d07f 100644
 --- a/src/api.cc
 +++ b/src/api.cc
 @@ -516,6 +516,10 @@ void V8::SetSnapshotDataBlob(StartupData* snapshot_blob) {

+ 3 - 3
patches/common/v8/build_gn.patch

@@ -5,10 +5,10 @@ Subject: build_gn.patch
 
 
 diff --git a/BUILD.gn b/BUILD.gn
-index fddd525297773e843cbd7a8b11a72c3e094b06d8..d8a2b8e11a3e0e9820dca061a00dbf1a6859bcf4 100644
+index b843e32765a93fe50ccc78427558daeb3447c2a8..1eefb5b89c8a91ee3a9eb9f4a5b22cc499d97539 100644
 --- a/BUILD.gn
 +++ b/BUILD.gn
-@@ -240,7 +240,7 @@ config("internal_config") {
+@@ -246,7 +246,7 @@ config("internal_config") {
      ":v8_header_features",
    ]
  
@@ -17,7 +17,7 @@ index fddd525297773e843cbd7a8b11a72c3e094b06d8..d8a2b8e11a3e0e9820dca061a00dbf1a
      defines += [ "BUILDING_V8_SHARED" ]
    }
  }
-@@ -3530,6 +3530,8 @@ if (v8_use_snapshot && current_toolchain == v8_snapshot_toolchain) {
+@@ -3558,6 +3558,8 @@ if (v8_use_snapshot && current_toolchain == v8_snapshot_toolchain) {
  
      configs = [ ":internal_config" ]
  

+ 4 - 4
patches/common/v8/dcheck.patch

@@ -5,10 +5,10 @@ Subject: dcheck.patch
 
 
 diff --git a/src/api.cc b/src/api.cc
-index 16b3d6d6d29ff6c79245e8f69132d7367708024e..3b5c0a8efa502cf0caf1dae9b426bab1c86d16b6 100644
+index a6c14a5be90679ed4d17fa04bb9feb30a05d42f9..8532ad08999316427add386696326b43dc1994d8 100644
 --- a/src/api.cc
 +++ b/src/api.cc
-@@ -8620,7 +8620,7 @@ void Isolate::SetPromiseRejectCallback(PromiseRejectCallback callback) {
+@@ -8617,7 +8617,7 @@ void Isolate::SetPromiseRejectCallback(PromiseRejectCallback callback) {
  
  
  void Isolate::RunMicrotasks() {
@@ -18,10 +18,10 @@ index 16b3d6d6d29ff6c79245e8f69132d7367708024e..3b5c0a8efa502cf0caf1dae9b426bab1
    isolate->default_microtask_queue()->RunMicrotasks(isolate);
  }
 diff --git a/src/heap/heap.cc b/src/heap/heap.cc
-index e72269d40a369f2e9ae9f12b54fe8f828e252a9a..1192c1ee6cc19eac3dff7ce36e364aa1403eafbc 100644
+index 18e357712e10060c70875a1c2e69b754a521efe1..eec4b79ead7c9cc980c7eaf100f103acc81b96f7 100644
 --- a/src/heap/heap.cc
 +++ b/src/heap/heap.cc
-@@ -4855,9 +4855,9 @@ void Heap::TearDown() {
+@@ -4881,9 +4881,9 @@ void Heap::TearDown() {
  void Heap::AddGCPrologueCallback(v8::Isolate::GCCallbackWithData callback,
                                   GCType gc_type, void* data) {
    DCHECK_NOT_NULL(callback);

+ 2 - 2
patches/common/v8/deps_backport_detailed_line_info_for_cpu_profiler.patch

@@ -20,10 +20,10 @@ Reviewed-By: James M Snell <[email protected]>
 Reviewed-By: Ruben Bridgewater <[email protected]>
 
 diff --git a/src/flag-definitions.h b/src/flag-definitions.h
-index c7dc7520ebc17f63dbba74225000c84f6d3d0152..07d965d39ad08c9f0aa9af199ac4f0124c233bcd 100644
+index 75d8167ca3dc5728de8a0901996794da6acf6d19..c2c3db1dc683085d33a754c401bfec31b9ac08d7 100644
 --- a/src/flag-definitions.h
 +++ b/src/flag-definitions.h
-@@ -1321,7 +1321,7 @@ DEFINE_BOOL(log_function_events, false,
+@@ -1337,7 +1337,7 @@ DEFINE_BOOL(log_function_events, false,
  DEFINE_BOOL(prof, false,
              "Log statistical profiling information (implies --log-code).")
  

+ 25 - 25
patches/common/v8/deps_provide_more_v8_backwards_compatibility.patch

@@ -22,10 +22,10 @@ Reviewed-By: Yang Guo <[email protected]>
 Reviewed-By: Michaël Zasso <[email protected]>
 
 diff --git a/include/v8.h b/include/v8.h
-index ea203a23a945a03e4494a1b3d615381dd5699e2c..6145cbca82fa30d42ef9e5ecf2caf7a571594098 100644
+index fd4e4f95022cb8e7332f9371ab478b8063cf048c..6a91f2571d1c0c7e92bff288da90a9550e5568ba 100644
 --- a/include/v8.h
 +++ b/include/v8.h
-@@ -1144,6 +1144,10 @@ class V8_EXPORT PrimitiveArray {
+@@ -1141,6 +1141,10 @@ class V8_EXPORT PrimitiveArray {
   public:
    static Local<PrimitiveArray> New(Isolate* isolate, int length);
    int Length() const;
@@ -36,7 +36,7 @@ index ea203a23a945a03e4494a1b3d615381dd5699e2c..6145cbca82fa30d42ef9e5ecf2caf7a5
    void Set(Isolate* isolate, int index, Local<Primitive> item);
    Local<Primitive> Get(Isolate* isolate, int index);
  };
-@@ -1847,6 +1851,8 @@ class V8_EXPORT StackTrace {
+@@ -1849,6 +1853,8 @@ class V8_EXPORT StackTrace {
    /**
     * Returns a StackFrame at a particular index.
     */
@@ -45,7 +45,7 @@ index ea203a23a945a03e4494a1b3d615381dd5699e2c..6145cbca82fa30d42ef9e5ecf2caf7a5
    Local<StackFrame> GetFrame(Isolate* isolate, uint32_t index) const;
  
    /**
-@@ -2547,6 +2553,13 @@ class V8_EXPORT Value : public Data {
+@@ -2549,6 +2555,13 @@ class V8_EXPORT Value : public Data {
    V8_DEPRECATE_SOON("Use maybe version",
                      Local<Int32> ToInt32(Isolate* isolate) const);
  
@@ -59,7 +59,7 @@ index ea203a23a945a03e4494a1b3d615381dd5699e2c..6145cbca82fa30d42ef9e5ecf2caf7a5
    /**
     * Attempts to convert a string to an array index.
     * Returns an empty handle if the conversion fails.
-@@ -2566,7 +2579,14 @@ class V8_EXPORT Value : public Data {
+@@ -2568,7 +2581,14 @@ class V8_EXPORT Value : public Data {
        Local<Context> context) const;
    V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
  
@@ -74,7 +74,7 @@ index ea203a23a945a03e4494a1b3d615381dd5699e2c..6145cbca82fa30d42ef9e5ecf2caf7a5
    V8_WARN_UNUSED_RESULT Maybe<bool> Equals(Local<Context> context,
                                             Local<Value> that) const;
    bool StrictEquals(Local<Value> that) const;
-@@ -2673,6 +2693,8 @@ class V8_EXPORT String : public Name {
+@@ -2675,6 +2695,8 @@ class V8_EXPORT String : public Name {
     * Returns the number of bytes in the UTF-8 encoded
     * representation of this string.
     */
@@ -83,7 +83,7 @@ index ea203a23a945a03e4494a1b3d615381dd5699e2c..6145cbca82fa30d42ef9e5ecf2caf7a5
    int Utf8Length(Isolate* isolate) const;
  
    /**
-@@ -2729,12 +2751,23 @@ class V8_EXPORT String : public Name {
+@@ -2731,12 +2753,23 @@ 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;
@@ -107,7 +107,7 @@ index ea203a23a945a03e4494a1b3d615381dd5699e2c..6145cbca82fa30d42ef9e5ecf2caf7a5
  
    /**
     * A zero length string.
-@@ -2922,6 +2955,9 @@ class V8_EXPORT String : public Name {
+@@ -2924,6 +2957,9 @@ class V8_EXPORT String : public Name {
     */
    static Local<String> Concat(Isolate* isolate, Local<String> left,
                                Local<String> right);
@@ -117,7 +117,7 @@ index ea203a23a945a03e4494a1b3d615381dd5699e2c..6145cbca82fa30d42ef9e5ecf2caf7a5
  
    /**
     * Creates a new external string using the data defined in the given
-@@ -2990,6 +3026,8 @@ class V8_EXPORT String : public Name {
+@@ -2992,6 +3028,8 @@ class V8_EXPORT String : public Name {
     */
    class V8_EXPORT Utf8Value {
     public:
@@ -126,7 +126,7 @@ index ea203a23a945a03e4494a1b3d615381dd5699e2c..6145cbca82fa30d42ef9e5ecf2caf7a5
      Utf8Value(Isolate* isolate, Local<v8::Value> obj);
      ~Utf8Value();
      char* operator*() { return str_; }
-@@ -3013,6 +3051,7 @@ class V8_EXPORT String : public Name {
+@@ -3015,6 +3053,7 @@ class V8_EXPORT String : public Name {
     */
    class V8_EXPORT Value {
     public:
@@ -134,7 +134,7 @@ index ea203a23a945a03e4494a1b3d615381dd5699e2c..6145cbca82fa30d42ef9e5ecf2caf7a5
      Value(Isolate* isolate, Local<v8::Value> obj);
      ~Value();
      uint16_t* operator*() { return str_; }
-@@ -5386,6 +5425,8 @@ class V8_EXPORT BooleanObject : public Object {
+@@ -5385,6 +5424,8 @@ class V8_EXPORT BooleanObject : public Object {
  class V8_EXPORT StringObject : public Object {
   public:
    static Local<Value> New(Isolate* isolate, Local<String> value);
@@ -143,7 +143,7 @@ index ea203a23a945a03e4494a1b3d615381dd5699e2c..6145cbca82fa30d42ef9e5ecf2caf7a5
  
    Local<String> ValueOf() const;
  
-@@ -10493,6 +10534,30 @@ template <class T> Value* Value::Cast(T* value) {
+@@ -10476,6 +10517,30 @@ template <class T> Value* Value::Cast(T* value) {
  }
  
  
@@ -175,10 +175,10 @@ index ea203a23a945a03e4494a1b3d615381dd5699e2c..6145cbca82fa30d42ef9e5ecf2caf7a5
  #ifdef V8_ENABLE_CHECKS
    CheckCast(value);
 diff --git a/src/api.cc b/src/api.cc
-index b87dfac21d26177128f7c434bc2577e18ab905c6..16b3d6d6d29ff6c79245e8f69132d7367708024e 100644
+index b6071ee70e1f5f8c308118fc21fbab387129d07f..a6c14a5be90679ed4d17fa04bb9feb30a05d42f9 100644
 --- a/src/api.cc
 +++ b/src/api.cc
-@@ -2227,6 +2227,10 @@ int PrimitiveArray::Length() const {
+@@ -2220,6 +2220,10 @@ int PrimitiveArray::Length() const {
    return array->length();
  }
  
@@ -189,7 +189,7 @@ index b87dfac21d26177128f7c434bc2577e18ab905c6..16b3d6d6d29ff6c79245e8f69132d736
  void PrimitiveArray::Set(Isolate* v8_isolate, int index,
                           Local<Primitive> item) {
    i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate);
-@@ -2240,6 +2244,10 @@ void PrimitiveArray::Set(Isolate* v8_isolate, int index,
+@@ -2233,6 +2237,10 @@ void PrimitiveArray::Set(Isolate* v8_isolate, int index,
    array->set(index, *i_item);
  }
  
@@ -200,7 +200,7 @@ index b87dfac21d26177128f7c434bc2577e18ab905c6..16b3d6d6d29ff6c79245e8f69132d736
  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);
-@@ -2945,6 +2953,10 @@ void Message::PrintCurrentStackTrace(Isolate* isolate, FILE* out) {
+@@ -2938,6 +2946,10 @@ void Message::PrintCurrentStackTrace(Isolate* isolate, FILE* out) {
  
  // --- S t a c k T r a c e ---
  
@@ -211,7 +211,7 @@ index b87dfac21d26177128f7c434bc2577e18ab905c6..16b3d6d6d29ff6c79245e8f69132d736
  Local<StackFrame> StackTrace::GetFrame(Isolate* v8_isolate,
                                         uint32_t index) const {
    i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate);
-@@ -3909,6 +3921,36 @@ void v8::RegExp::CheckCast(v8::Value* that) {
+@@ -3902,6 +3914,36 @@ void v8::RegExp::CheckCast(v8::Value* that) {
  }
  
  
@@ -248,7 +248,7 @@ index b87dfac21d26177128f7c434bc2577e18ab905c6..16b3d6d6d29ff6c79245e8f69132d736
  Maybe<bool> Value::BooleanValue(Local<Context> context) const {
    i::Isolate* isolate = reinterpret_cast<i::Isolate*>(context->GetIsolate());
    return Just(Utils::OpenHandle(this)->BooleanValue(isolate));
-@@ -3997,6 +4039,12 @@ MaybeLocal<Uint32> Value::ToArrayIndex(Local<Context> context) const {
+@@ -3990,6 +4032,12 @@ MaybeLocal<Uint32> Value::ToArrayIndex(Local<Context> context) const {
  }
  
  
@@ -261,7 +261,7 @@ index b87dfac21d26177128f7c434bc2577e18ab905c6..16b3d6d6d29ff6c79245e8f69132d736
  Maybe<bool> Value::Equals(Local<Context> context, Local<Value> that) const {
    i::Isolate* isolate = Utils::OpenHandle(*context)->GetIsolate();
    auto self = Utils::OpenHandle(this);
-@@ -5275,6 +5323,10 @@ bool String::ContainsOnlyOneByte() const {
+@@ -5268,6 +5316,10 @@ bool String::ContainsOnlyOneByte() const {
    return helper.Check(*str);
  }
  
@@ -272,7 +272,7 @@ index b87dfac21d26177128f7c434bc2577e18ab905c6..16b3d6d6d29ff6c79245e8f69132d736
  int String::Utf8Length(Isolate* isolate) const {
    i::Handle<i::String> str = Utils::OpenHandle(this);
    str = i::String::Flatten(reinterpret_cast<i::Isolate*>(isolate), str);
-@@ -5427,6 +5479,14 @@ static int WriteUtf8Impl(i::Vector<const Char> string, char* write_start,
+@@ -5420,6 +5472,14 @@ static int WriteUtf8Impl(i::Vector<const Char> string, char* write_start,
  }
  }  // anonymous namespace
  
@@ -287,7 +287,7 @@ index b87dfac21d26177128f7c434bc2577e18ab905c6..16b3d6d6d29ff6c79245e8f69132d736
  int String::WriteUtf8(Isolate* v8_isolate, char* buffer, int capacity,
                        int* nchars_ref, int options) const {
    i::Handle<i::String> str = Utils::OpenHandle(this);
-@@ -5467,6 +5527,18 @@ static inline int WriteHelper(i::Isolate* isolate, const String* string,
+@@ -5460,6 +5520,18 @@ static inline int WriteHelper(i::Isolate* isolate, const String* string,
  }
  
  
@@ -306,7 +306,7 @@ index b87dfac21d26177128f7c434bc2577e18ab905c6..16b3d6d6d29ff6c79245e8f69132d736
  int String::WriteOneByte(Isolate* isolate, uint8_t* buffer, int start,
                           int length, int options) const {
    return WriteHelper(reinterpret_cast<i::Isolate*>(isolate), this, buffer,
-@@ -6423,6 +6495,11 @@ MaybeLocal<String> String::NewFromTwoByte(Isolate* isolate,
+@@ -6414,6 +6486,11 @@ MaybeLocal<String> String::NewFromTwoByte(Isolate* isolate,
    return result;
  }
  
@@ -318,7 +318,7 @@ index b87dfac21d26177128f7c434bc2577e18ab905c6..16b3d6d6d29ff6c79245e8f69132d736
  Local<String> v8::String::Concat(Isolate* v8_isolate, Local<String> left,
                                   Local<String> right) {
    i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate);
-@@ -6705,6 +6782,11 @@ bool v8::BooleanObject::ValueOf() const {
+@@ -6696,6 +6773,11 @@ bool v8::BooleanObject::ValueOf() const {
  }
  
  
@@ -330,7 +330,7 @@ index b87dfac21d26177128f7c434bc2577e18ab905c6..16b3d6d6d29ff6c79245e8f69132d736
  Local<v8::Value> v8::StringObject::New(Isolate* v8_isolate,
                                         Local<String> value) {
    i::Handle<i::String> string = Utils::OpenHandle(*value);
-@@ -8970,6 +9052,9 @@ bool MicrotasksScope::IsRunningMicrotasks(Isolate* v8_isolate) {
+@@ -8976,6 +9058,9 @@ bool MicrotasksScope::IsRunningMicrotasks(Isolate* v8_isolate) {
    return microtask_queue->IsRunningMicrotasks();
  }
  
@@ -340,7 +340,7 @@ index b87dfac21d26177128f7c434bc2577e18ab905c6..16b3d6d6d29ff6c79245e8f69132d736
  String::Utf8Value::Utf8Value(v8::Isolate* isolate, v8::Local<v8::Value> obj)
      : str_(nullptr), length_(0) {
    if (obj.IsEmpty()) return;
-@@ -8989,6 +9074,9 @@ String::Utf8Value::~Utf8Value() {
+@@ -8995,6 +9080,9 @@ String::Utf8Value::~Utf8Value() {
    i::DeleteArray(str_);
  }
  

+ 2 - 2
patches/common/v8/expose_mksnapshot.patch

@@ -6,10 +6,10 @@ Subject: expose_mksnapshot.patch
 Needed in order to target mksnapshot for mksnapshot zip.
 
 diff --git a/BUILD.gn b/BUILD.gn
-index d8a2b8e11a3e0e9820dca061a00dbf1a6859bcf4..d3dbe37d0a145921dddaea72e394c87826d6d5fe 100644
+index 1eefb5b89c8a91ee3a9eb9f4a5b22cc499d97539..c2ec29b916155f36d8d181d82090afd857f4d041 100644
 --- a/BUILD.gn
 +++ b/BUILD.gn
-@@ -3520,8 +3520,6 @@ if (current_toolchain == v8_generator_toolchain) {
+@@ -3548,8 +3548,6 @@ if (current_toolchain == v8_generator_toolchain) {
  
  if (v8_use_snapshot && current_toolchain == v8_snapshot_toolchain) {
    v8_executable("mksnapshot") {

+ 261 - 0
patches/common/v8/fixme_revert_heap_api_remove_deprecated_apis.patch

@@ -0,0 +1,261 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Samuel Attard <[email protected]>
+Date: Thu, 21 Mar 2019 22:29:55 -0700
+Subject: fixme: Revert "[heap,api] Remove deprecated APIs"
+
+This reverts commit f4b860d9b81956fb9d6815932522f4043fef56fa.
+
+This commit removes deprecated APIs that nan relies on, temporarily
+reverting but we need to solve this with nan upstream
+
+diff --git a/include/v8-internal.h b/include/v8-internal.h
+index cbdce1c3f60eed53f67968e6b89755f418aecc3f..9254f7c9a2f3cf7dc92421e2863109b410a09da0 100644
+--- a/include/v8-internal.h
++++ b/include/v8-internal.h
+@@ -165,6 +165,7 @@ class Internals {
+   static const int kNodeStateMask = 0x7;
+   static const int kNodeStateIsWeakValue = 2;
+   static const int kNodeStateIsPendingValue = 3;
++  static const int kNodeStateIsNearDeathValue = 4;
+   static const int kNodeIsIndependentShift = 3;
+   static const int kNodeIsActiveShift = 4;
+ 
+diff --git a/include/v8.h b/include/v8.h
+index 6a91f2571d1c0c7e92bff288da90a9550e5568ba..caafc04a404ba96a2669ddcaf4e5b1bb91984c1a 100644
+--- a/include/v8.h
++++ b/include/v8.h
+@@ -577,6 +577,10 @@ template <class T> class PersistentBase {
+ 
+   V8_DEPRECATED("See MarkIndependent.", V8_INLINE bool IsIndependent() const);
+ 
++  /** Checks if the handle holds the only reference to an object. */
++  V8_DEPRECATED("Garbage collection internal state should not be relied on.",
++                V8_INLINE bool IsNearDeath() const);
++
+   /** Returns true if the handle's reference is weak.  */
+   V8_INLINE bool IsWeak() const;
+ 
+@@ -8565,6 +8569,17 @@ class V8_EXPORT Isolate {
+    */
+   void VisitHandlesWithClassIds(PersistentHandleVisitor* visitor);
+ 
++  /**
++   * Iterates through all the persistent handles in the current isolate's heap
++   * that have class_ids and are candidates to be marked as partially dependent
++   * handles. This will visit handles to young objects created since the last
++   * garbage collection but is free to visit an arbitrary superset of these
++   * objects.
++   */
++  V8_DEPRECATED(
++      "Use VisitHandlesWithClassIds",
++      void VisitHandlesForPartialDependence(PersistentHandleVisitor* visitor));
++
+   /**
+    * Iterates through all the persistent handles in the current isolate's heap
+    * that have class_ids and are weak to be marked as inactive if there is no
+@@ -9818,6 +9833,17 @@ bool PersistentBase<T>::IsIndependent() const {
+                         I::kNodeIsIndependentShift);
+ }
+ 
++template <class T>
++bool PersistentBase<T>::IsNearDeath() const {
++  typedef internal::Internals I;
++  if (this->IsEmpty()) return false;
++  uint8_t node_state =
++      I::GetNodeState(reinterpret_cast<internal::Address*>(this->val_));
++  return node_state == I::kNodeStateIsNearDeathValue ||
++      node_state == I::kNodeStateIsPendingValue;
++}
++
++
+ template <class T>
+ bool PersistentBase<T>::IsWeak() const {
+   typedef internal::Internals I;
+diff --git a/src/api.cc b/src/api.cc
+index 8532ad08999316427add386696326b43dc1994d8..f2d26a3e7503fe09619259578606d2bc5bd16161 100644
+--- a/src/api.cc
++++ b/src/api.cc
+@@ -8967,6 +8967,15 @@ void Isolate::VisitHandlesWithClassIds(PersistentHandleVisitor* visitor) {
+   isolate->global_handles()->IterateAllRootsWithClassIds(visitor);
+ }
+ 
++
++void Isolate::VisitHandlesForPartialDependence(
++    PersistentHandleVisitor* visitor) {
++  i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this);
++  i::DisallowHeapAllocation no_allocation;
++  isolate->global_handles()->IterateAllYoungRootsWithClassIds(visitor);
++}
++
++
+ void Isolate::VisitWeakHandles(PersistentHandleVisitor* visitor) {
+   i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this);
+   i::DisallowHeapAllocation no_allocation;
+diff --git a/src/global-handles.cc b/src/global-handles.cc
+index 350380b23ce6f4fe89e628285d2e69fb1cac88ee..5eb3d93f142ea4d6ec88a4468b6390ec5387da84 100644
+--- a/src/global-handles.cc
++++ b/src/global-handles.cc
+@@ -379,6 +379,7 @@ class GlobalHandles::Node final : public NodeBase<GlobalHandles::Node> {
+                   Internals::kNodeStateMask);
+     STATIC_ASSERT(WEAK == Internals::kNodeStateIsWeakValue);
+     STATIC_ASSERT(PENDING == Internals::kNodeStateIsPendingValue);
++    STATIC_ASSERT(NEAR_DEATH == Internals::kNodeStateIsNearDeathValue);
+     STATIC_ASSERT(static_cast<int>(IsIndependent::kShift) ==
+                   Internals::kNodeIsIndependentShift);
+     STATIC_ASSERT(static_cast<int>(IsActive::kShift) ==
+@@ -426,6 +427,11 @@ class GlobalHandles::Node final : public NodeBase<GlobalHandles::Node> {
+     flags_ = NodeWeaknessType::update(flags_, weakness_type);
+   }
+ 
++  bool IsNearDeath() const {
++    // Check for PENDING to ensure correct answer when processing callbacks.
++    return state() == PENDING || state() == NEAR_DEATH;
++  }
++
+   bool IsWeak() const { return state() == WEAK; }
+ 
+   bool IsInUse() const { return state() != FREE; }
+@@ -813,6 +819,10 @@ void GlobalHandles::AnnotateStrongRetainer(Address* location,
+   Node::FromLocation(location)->AnnotateStrongRetainer(label);
+ }
+ 
++bool GlobalHandles::IsNearDeath(Address* location) {
++  return Node::FromLocation(location)->IsNearDeath();
++}
++
+ bool GlobalHandles::IsWeak(Address* location) {
+   return Node::FromLocation(location)->IsWeak();
+ }
+diff --git a/src/global-handles.h b/src/global-handles.h
+index 8caa3c33ce72269ecd470328ad88260b2d6cb206..3604af1d28e5a899095335b033bca044a28b7d77 100644
+--- a/src/global-handles.h
++++ b/src/global-handles.h
+@@ -73,6 +73,9 @@ class GlobalHandles final {
+   // Clear the weakness of a global handle.
+   static void* ClearWeakness(Address* location);
+ 
++  // Tells whether global handle is near death.
++  static bool IsNearDeath(Address* location);
++
+   // Tells whether global handle is weak.
+   static bool IsWeak(Address* location);
+ 
+diff --git a/test/cctest/heap/test-heap.cc b/test/cctest/heap/test-heap.cc
+index fa3d5fe163fd1477c5bfba84d558172469e827f5..aae5f2d61f1b53389c8d4c3c511893010e49b59e 100644
+--- a/test/cctest/heap/test-heap.cc
++++ b/test/cctest/heap/test-heap.cc
+@@ -531,9 +531,14 @@ TEST(WeakGlobalHandlesScavenge) {
+ 
+   // Scavenge treats weak pointers as normal roots.
+   CcTest::CollectGarbage(NEW_SPACE);
++
+   CHECK((*h1)->IsString());
+   CHECK((*h2)->IsHeapNumber());
++
+   CHECK(!WeakPointerCleared);
++  CHECK(!global_handles->IsNearDeath(h2.location()));
++  CHECK(!global_handles->IsNearDeath(h1.location()));
++
+   GlobalHandles::Destroy(h1.location());
+   GlobalHandles::Destroy(h2.location());
+ }
+@@ -571,8 +576,11 @@ TEST(WeakGlobalUnmodifiedApiHandlesScavenge) {
+       &TestWeakGlobalHandleCallback, v8::WeakCallbackType::kParameter);
+ 
+   CcTest::CollectGarbage(NEW_SPACE);
++
+   CHECK((*h1)->IsHeapNumber());
+   CHECK(WeakPointerCleared);
++  CHECK(!global_handles->IsNearDeath(h1.location()));
++
+   GlobalHandles::Destroy(h1.location());
+ }
+ 
+@@ -609,7 +617,10 @@ TEST(WeakGlobalApiHandleModifiedMapScavenge) {
+       &TestWeakGlobalHandleCallback, v8::WeakCallbackType::kParameter);
+ 
+   CcTest::CollectGarbage(NEW_SPACE);
++
+   CHECK(!WeakPointerCleared);
++  CHECK(!global_handles->IsNearDeath(h1.location()));
++
+   GlobalHandles::Destroy(h1.location());
+ }
+ 
+@@ -650,7 +661,10 @@ TEST(WeakGlobalApiHandleWithElementsScavenge) {
+       &TestWeakGlobalHandleCallback, v8::WeakCallbackType::kParameter);
+ 
+   CcTest::CollectGarbage(NEW_SPACE);
++
+   CHECK(!WeakPointerCleared);
++  CHECK(!global_handles->IsNearDeath(h1.location()));
++
+   GlobalHandles::Destroy(h1.location());
+ }
+ 
+@@ -685,11 +699,17 @@ TEST(WeakGlobalHandlesMark) {
+   GlobalHandles::MakeWeak(
+       h2.location(), reinterpret_cast<void*>(&handle_and_id),
+       &TestWeakGlobalHandleCallback, v8::WeakCallbackType::kParameter);
++  CHECK(!GlobalHandles::IsNearDeath(h1.location()));
++  CHECK(!GlobalHandles::IsNearDeath(h2.location()));
+ 
+   // Incremental marking potentially marked handles before they turned weak.
+   CcTest::CollectAllGarbage();
++
+   CHECK((*h1)->IsString());
++
+   CHECK(WeakPointerCleared);
++  CHECK(!GlobalHandles::IsNearDeath(h1.location()));
++
+   GlobalHandles::Destroy(h1.location());
+ }
+ 
+diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc
+index fc74e99dd45a57e8b8b88de6c666008074cdaeea..c2d796bb770432411e660c888a189685da474a41 100644
+--- a/test/cctest/test-api.cc
++++ b/test/cctest/test-api.cc
+@@ -20472,6 +20472,43 @@ TEST(WrapperClassId) {
+   object.Reset();
+ }
+ 
++
++TEST(PersistentHandleInNewSpaceVisitor) {
++  LocalContext context;
++  v8::Isolate* isolate = context->GetIsolate();
++  v8::HandleScope scope(isolate);
++  v8::Persistent<v8::Object> object1(isolate, v8::Object::New(isolate));
++  CHECK_EQ(0, object1.WrapperClassId());
++  object1.SetWrapperClassId(42);
++  CHECK_EQ(42, object1.WrapperClassId());
++
++  CcTest::CollectAllGarbage();
++  CcTest::CollectAllGarbage();
++
++  v8::Persistent<v8::Object> object2(isolate, v8::Object::New(isolate));
++  CHECK_EQ(0, object2.WrapperClassId());
++  object2.SetWrapperClassId(42);
++  CHECK_EQ(42, object2.WrapperClassId());
++
++  Visitor42 visitor(&object2);
++#if __clang__
++#pragma clang diagnostic push
++#pragma clang diagnostic ignored "-Wdeprecated"
++#endif
++  // VisitHandlesForPartialDependence is marked deprecated. This test will be
++  // removed with the API method.
++  isolate->VisitHandlesForPartialDependence(&visitor);
++#if __clang__
++#pragma clang diagnostic pop
++#endif
++
++  CHECK_EQ(1, visitor.counter_);
++
++  object1.Reset();
++  object2.Reset();
++}
++
++
+ TEST(RegExp) {
+   LocalContext context;
+   v8::HandleScope scope(context->GetIsolate());