Browse Source

chore: bump chromium to 76.0.3809.3 (6-0-x) (#18504)

* chore: bump chromium in DEPS to 76.0.3807.2

* chore: update patches

* fix: Don't leak system network context when nw service is disabled

https://chromium-review.googlesource.com/c/chromium/src/+/1632494
NetworkService is now deleted by using SequnceLocalStorageSlot
on the IO thread when the service is disabled, which expects
all associated NetworkContexts on that sequence to be destroyed.

* chore: bump chromium in DEPS to 76.0.3808.1

* fix: Destroy all network contexts before primary network context

* chore: update patches

* Simplify out-of-process service registration

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

* [ThreadPool] Rename base::ThreadPool to base::ThreadPoolInstance

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

* fix: -Winconsistent-missing-override warnings

* chore: bump chromium in DEPS to 76.0.3809.1

* chore: update patches

* Change CreateBrowserMainParts to return unique_ptrs

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

* chore: bump chromium in DEPS to 76.0.3809.3
Electron Bot 5 years ago
parent
commit
10d0268070
51 changed files with 234 additions and 214 deletions
  1. 1 1
      DEPS
  2. 2 2
      atom/app/node_main.cc
  3. 3 22
      atom/browser/atom_browser_client.cc
  4. 1 2
      atom/browser/atom_browser_client.h
  5. 5 4
      atom/browser/atom_browser_context.cc
  6. 31 8
      atom/browser/io_thread.cc
  7. 17 7
      atom/browser/io_thread.h
  8. 16 10
      atom/browser/net/url_request_context_getter.cc
  9. 1 1
      atom/browser/net/url_request_context_getter.h
  10. 3 3
      atom/browser/notifications/win/windows_toast_notification.h
  11. 3 1
      electron_paks.gni
  12. 0 10
      electron_strings.grdp
  13. 2 2
      patches/common/chromium/add_contentgpuclient_precreatemessageloop_callback.patch
  14. 13 5
      patches/common/chromium/autofill_size_calculation.patch
  15. 3 3
      patches/common/chromium/blink_local_frame.patch
  16. 2 2
      patches/common/chromium/blink_world_context.patch
  17. 12 12
      patches/common/chromium/can_create_window.patch
  18. 2 2
      patches/common/chromium/content_allow_embedder_to_prevent_locking_scheme_registry.patch
  19. 2 2
      patches/common/chromium/content_browser_main_loop.patch
  20. 5 5
      patches/common/chromium/cross_site_document_resource_handler.patch
  21. 1 1
      patches/common/chromium/dcheck.patch
  22. 4 4
      patches/common/chromium/disable-redraw-lock.patch
  23. 7 7
      patches/common/chromium/disable_color_correct_rendering.patch
  24. 2 2
      patches/common/chromium/disable_detach_webview_frame.patch
  25. 1 1
      patches/common/chromium/disable_hidden.patch
  26. 10 10
      patches/common/chromium/disable_network_services_by_default.patch
  27. 2 2
      patches/common/chromium/disable_user_gesture_requirement_for_beforeunload_dialogs.patch
  28. 2 2
      patches/common/chromium/exclude-a-few-test-files-from-build.patch
  29. 7 7
      patches/common/chromium/frame_host_manager.patch
  30. 2 2
      patches/common/chromium/gritsettings_resource_ids.patch
  31. 6 6
      patches/common/chromium/mas-lssetapplicationlaunchservicesserverconnectionstatus.patch
  32. 1 1
      patches/common/chromium/no_cache_storage_check.patch
  33. 2 2
      patches/common/chromium/notification_provenance.patch
  34. 3 3
      patches/common/chromium/printing.patch
  35. 1 1
      patches/common/chromium/render_widget_host_view_base.patch
  36. 1 1
      patches/common/chromium/render_widget_host_view_mac.patch
  37. 3 3
      patches/common/chromium/resource_file_conflict.patch
  38. 2 2
      patches/common/chromium/scroll_bounce_flag.patch
  39. 5 5
      patches/common/chromium/support_mixed_sandbox_with_zygote.patch
  40. 2 2
      patches/common/chromium/unsandboxed_ppapi_processes_skip_zygote.patch
  41. 1 1
      patches/common/chromium/viz_osr.patch
  42. 3 3
      patches/common/chromium/web_contents.patch
  43. 1 1
      patches/common/chromium/webview_cross_drag.patch
  44. 12 12
      patches/common/chromium/worker_context_will_destroy.patch
  45. 1 1
      patches/common/v8/add_realloc.patch
  46. 4 4
      patches/common/v8/build_gn.patch
  47. 4 4
      patches/common/v8/dcheck.patch
  48. 3 3
      patches/common/v8/deps_provide_more_v8_backwards_compatibility.patch
  49. 2 2
      patches/common/v8/export_symbols_needed_for_windows_build.patch
  50. 4 4
      patches/common/v8/expose_mksnapshot.patch
  51. 11 11
      patches/common/v8/workaround_an_undefined_symbol_error.patch

+ 1 - 1
DEPS

@@ -10,7 +10,7 @@ gclient_gn_args = [
 
 vars = {
   'chromium_version':
-    '76.0.3805.4',
+    '76.0.3809.3',
   'node_version':
     'a86a4a160dc520c61a602c949a32a1bc4c0fc633',
 

+ 2 - 2
atom/app/node_main.cc

@@ -48,7 +48,7 @@ int NodeMain(int argc, char* argv[]) {
     gin::V8Initializer::LoadV8Natives();
 
     // V8 requires a task scheduler apparently
-    base::ThreadPool::CreateAndStartWithDefaultParams("Electron");
+    base::ThreadPoolInstance::CreateAndStartWithDefaultParams("Electron");
 
     // Initialize gin::IsolateHolder.
     JavascriptEnvironment gin_env(loop);
@@ -116,7 +116,7 @@ int NodeMain(int argc, char* argv[]) {
   // gin::IsolateHolder waits for tasks running in ThreadPool in its
   // destructor and thus must be destroyed before ThreadPool starts skipping
   // CONTINUE_ON_SHUTDOWN tasks.
-  base::ThreadPool::GetInstance()->Shutdown();
+  base::ThreadPoolInstance::Get()->Shutdown();
 
   v8::V8::Dispose();
 

+ 3 - 22
atom/browser/atom_browser_client.cc

@@ -76,7 +76,6 @@
 #include "services/device/public/cpp/geolocation/location_provider.h"
 #include "services/network/public/cpp/features.h"
 #include "services/network/public/cpp/resource_request_body.h"
-#include "services/proxy_resolver/public/mojom/proxy_resolver.mojom.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/base/resource/resource_bundle.h"
 #include "v8/include/v8.h"
@@ -108,8 +107,6 @@
 
 #if BUILDFLAG(ENABLE_PRINTING)
 #include "chrome/browser/printing/printing_message_filter.h"
-#include "chrome/services/printing/public/mojom/constants.mojom.h"
-#include "components/services/pdf_compositor/public/interfaces/pdf_compositor.mojom.h"
 #endif  // BUILDFLAG(ENABLE_PRINTING)
 
 using content::BrowserThread;
@@ -705,23 +702,6 @@ network::mojom::NetworkContext* AtomBrowserClient::GetSystemNetworkContext() {
   return g_browser_process->system_network_context_manager()->GetContext();
 }
 
-void AtomBrowserClient::RegisterOutOfProcessServices(
-    OutOfProcessServiceMap* services) {
-  (*services)[proxy_resolver::mojom::kProxyResolverServiceName] =
-      base::BindRepeating(&l10n_util::GetStringUTF16,
-                          IDS_UTILITY_PROCESS_PROXY_RESOLVER_NAME);
-
-#if BUILDFLAG(ENABLE_PRINTING)
-  (*services)[printing::mojom::kServiceName] =
-      base::BindRepeating(&l10n_util::GetStringUTF16,
-                          IDS_UTILITY_PROCESS_PDF_COMPOSITOR_SERVICE_NAME);
-
-  (*services)[printing::mojom::kChromePrintingServiceName] =
-      base::BindRepeating(&l10n_util::GetStringUTF16,
-                          IDS_UTILITY_PROCESS_PRINTING_SERVICE_NAME);
-#endif
-}
-
 base::Optional<service_manager::Manifest>
 AtomBrowserClient::GetServiceManifestOverlay(base::StringPiece name) {
   if (name == content::mojom::kBrowserServiceName)
@@ -738,9 +718,10 @@ net::NetLog* AtomBrowserClient::GetNetLog() {
   return g_browser_process->net_log();
 }
 
-content::BrowserMainParts* AtomBrowserClient::CreateBrowserMainParts(
+std::unique_ptr<content::BrowserMainParts>
+AtomBrowserClient::CreateBrowserMainParts(
     const content::MainFunctionParams& params) {
-  return new AtomBrowserMainParts(params);
+  return std::make_unique<AtomBrowserMainParts>(params);
 }
 
 void AtomBrowserClient::WebNotificationAllowed(

+ 1 - 2
atom/browser/atom_browser_client.h

@@ -142,7 +142,6 @@ class AtomBrowserClient : public content::ContentBrowserClient,
       bool in_memory,
       const base::FilePath& relative_partition_path) override;
   network::mojom::NetworkContext* GetSystemNetworkContext() override;
-  void RegisterOutOfProcessServices(OutOfProcessServiceMap* services) override;
   base::Optional<service_manager::Manifest> GetServiceManifestOverlay(
       base::StringPiece name) override;
   std::vector<service_manager::Manifest> GetExtraServiceManifests() override;
@@ -151,7 +150,7 @@ class AtomBrowserClient : public content::ContentBrowserClient,
   content::DevToolsManagerDelegate* GetDevToolsManagerDelegate() override;
   content::PlatformNotificationService* GetPlatformNotificationService(
       content::BrowserContext* browser_context) override;
-  content::BrowserMainParts* CreateBrowserMainParts(
+  std::unique_ptr<content::BrowserMainParts> CreateBrowserMainParts(
       const content::MainFunctionParams&) override;
   base::FilePath GetDefaultDownloadDirectory() override;
   scoped_refptr<network::SharedURLLoaderFactory>

+ 5 - 4
atom/browser/atom_browser_context.cc

@@ -110,11 +110,12 @@ AtomBrowserContext::~AtomBrowserContext() {
   NotifyWillBeDestroyed(this);
   ShutdownStoragePartitions();
 
-  BrowserThread::DeleteSoon(BrowserThread::IO, FROM_HERE,
-                            std::move(resource_context_));
-
-  if (!base::FeatureList::IsEnabled(network::features::kNetworkService))
+  if (!base::FeatureList::IsEnabled(network::features::kNetworkService)) {
     io_handle_->ShutdownOnUIThread();
+  } else {
+    BrowserThread::DeleteSoon(BrowserThread::IO, FROM_HERE,
+                              std::move(resource_context_));
+  }
 
   // Notify any keyed services of browser context destruction.
   BrowserContextDependencyManager::GetInstance()->DestroyBrowserContextServices(

+ 31 - 8
atom/browser/io_thread.cc

@@ -6,6 +6,7 @@
 
 #include <utility>
 
+#include "atom/browser/net/url_request_context_getter.h"
 #include "components/net_log/chrome_net_log.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/network_service_instance.h"
@@ -35,6 +36,24 @@ IOThread::~IOThread() {
   BrowserThread::SetIOThreadDelegate(nullptr);
 }
 
+void IOThread::RegisterURLRequestContextGetter(
+    atom::URLRequestContextGetter* getter) {
+  base::AutoLock lock(lock_);
+
+  DCHECK(!base::FeatureList::IsEnabled(network::features::kNetworkService));
+  DCHECK_EQ(0u, request_context_getters_.count(getter));
+  request_context_getters_.insert(getter);
+}
+
+void IOThread::DeregisterURLRequestContextGetter(
+    atom::URLRequestContextGetter* getter) {
+  base::AutoLock lock(lock_);
+
+  DCHECK(!base::FeatureList::IsEnabled(network::features::kNetworkService));
+  DCHECK_EQ(1u, request_context_getters_.count(getter));
+  request_context_getters_.erase(getter);
+}
+
 void IOThread::Init() {
   if (!base::FeatureList::IsEnabled(network::features::kNetworkService)) {
     std::unique_ptr<network::URLRequestContextBuilderMojo> builder =
@@ -55,20 +74,24 @@ void IOThread::Init() {
     network_service->ConfigureHttpAuthPrefs(
         std::move(http_auth_dynamic_params_));
 
-    system_network_context_ =
-        network_service
-            ->CreateNetworkContextWithBuilder(
-                std::move(network_context_request_),
-                std::move(network_context_params_), std::move(builder),
-                &system_request_context_)
-            .release();
+    system_network_context_ = network_service->CreateNetworkContextWithBuilder(
+        std::move(network_context_request_), std::move(network_context_params_),
+        std::move(builder), &system_request_context_);
   }
 }
 
 void IOThread::CleanUp() {
-  if (!base::FeatureList::IsEnabled(network::features::kNetworkService))
+  if (!base::FeatureList::IsEnabled(network::features::kNetworkService)) {
     system_request_context_->proxy_resolution_service()->OnShutdown();
 
+    base::AutoLock lock(lock_);
+    for (auto* getter : request_context_getters_) {
+      getter->NotifyContextShuttingDown();
+    }
+
+    system_network_context_.reset();
+  }
+
   if (net_log_)
     net_log_->ShutDownBeforeThreadPool();
 }

+ 17 - 7
atom/browser/io_thread.h

@@ -6,12 +6,18 @@
 #define ATOM_BROWSER_IO_THREAD_H_
 
 #include <memory>
+#include <set>
 
 #include "atom/browser/net/system_network_context_manager.h"
 #include "base/macros.h"
+#include "base/synchronization/lock.h"
 #include "content/public/browser/browser_thread_delegate.h"
 #include "services/network/public/mojom/network_service.mojom.h"
 
+namespace atom {
+class URLRequestContextGetter;
+}
+
 namespace net {
 class URLRequestContext;
 }
@@ -27,6 +33,9 @@ class IOThread : public content::BrowserThreadDelegate {
       SystemNetworkContextManager* system_network_context_manager);
   ~IOThread() override;
 
+  void RegisterURLRequestContextGetter(atom::URLRequestContextGetter* getter);
+  void DeregisterURLRequestContextGetter(atom::URLRequestContextGetter* getter);
+
  protected:
   // BrowserThreadDelegate Implementation, runs on the IO thread.
   void Init() override;
@@ -39,13 +48,7 @@ class IOThread : public content::BrowserThreadDelegate {
 
   // When the network service is disabled, this holds on to a
   // content::NetworkContext class that owns |system_request_context_|.
-  // TODO(deepak1556): primary network context has to be destroyed after
-  // other active contexts, but since the ownership of latter is not released
-  // before IO thread is destroyed, it results in a DCHECK failure.
-  // We leak the reference to primary context to workaround this issue,
-  // since there is only one instance for the entire lifetime of app, it is
-  // safe.
-  network::mojom::NetworkContext* system_network_context_;
+  std::unique_ptr<network::mojom::NetworkContext> system_network_context_;
   net::URLRequestContext* system_request_context_;
 
   // These are set on the UI thread, and then consumed during initialization on
@@ -59,6 +62,13 @@ class IOThread : public content::BrowserThreadDelegate {
   network::mojom::HttpAuthStaticParamsPtr http_auth_static_params_;
   network::mojom::HttpAuthDynamicParamsPtr http_auth_dynamic_params_;
 
+  // |lock_| protects access to |request_context_getters_|.
+  base::Lock lock_;
+
+  // List of all request contexts that needs to be notified when
+  // IO thread is shutting down.
+  std::set<atom::URLRequestContextGetter*> request_context_getters_;
+
   DISALLOW_COPY_AND_ASSIGN(IOThread);
 };
 

+ 16 - 10
atom/browser/net/url_request_context_getter.cc

@@ -122,9 +122,13 @@ URLRequestContextGetter::Handle::CreateMainRequestContextGetter(
     content::URLRequestInterceptorScopedVector protocol_interceptors) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   DCHECK(!main_request_context_getter_.get());
+  DCHECK(g_browser_process->io_thread());
+
   LazyInitialize();
   main_request_context_getter_ = new URLRequestContextGetter(
       this, protocol_handlers, std::move(protocol_interceptors));
+  g_browser_process->io_thread()->RegisterURLRequestContextGetter(
+      main_request_context_getter_.get());
   return main_request_context_getter_;
 }
 
@@ -203,13 +207,13 @@ void URLRequestContextGetter::Handle::LazyInitialize() {
 
 void URLRequestContextGetter::Handle::ShutdownOnUIThread() {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
-  if (main_request_context_getter_.get()) {
+
+  if (main_request_context_getter_) {
     if (BrowserThread::IsThreadInitialized(BrowserThread::IO)) {
       base::PostTaskWithTraits(
           FROM_HERE, {BrowserThread::IO},
           base::BindOnce(&URLRequestContextGetter::NotifyContextShuttingDown,
-                         base::RetainedRef(main_request_context_getter_),
-                         std::move(resource_context_)));
+                         base::RetainedRef(main_request_context_getter_)));
     }
   }
 
@@ -238,18 +242,20 @@ URLRequestContextGetter::~URLRequestContextGetter() {
   DCHECK(context_shutting_down_);
 }
 
-void URLRequestContextGetter::NotifyContextShuttingDown(
-    std::unique_ptr<content::ResourceContext> resource_context) {
+void URLRequestContextGetter::NotifyContextShuttingDown() {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
+  DCHECK(g_browser_process->io_thread());
+  DCHECK(context_handle_);
 
-  // todo(brenca): remove once C70 lands
-  if (url_request_context_ && url_request_context_->cookie_store()) {
-    url_request_context_->cookie_store()->FlushStore(base::NullCallback());
-  }
+  if (context_shutting_down_)
+    return;
+
+  g_browser_process->io_thread()->DeregisterURLRequestContextGetter(this);
 
   context_shutting_down_ = true;
-  resource_context.reset();
+  context_handle_->resource_context_.reset();
   net::URLRequestContextGetter::NotifyContextShuttingDown();
+  network_context_.reset();
 }
 
 net::URLRequestContext* URLRequestContextGetter::GetURLRequestContext() {

+ 1 - 1
atom/browser/net/url_request_context_getter.h

@@ -37,7 +37,7 @@ class URLRequestContextGetter : public net::URLRequestContextGetter {
 
   // Discard reference to URLRequestContext and inform observers to
   // shutdown. Must be called only on IO thread.
-  void NotifyContextShuttingDown(std::unique_ptr<content::ResourceContext>);
+  void NotifyContextShuttingDown();
 
   AtomURLRequestJobFactory* job_factory() const {
     return top_job_factory_.get();

+ 3 - 3
atom/browser/notifications/win/windows_toast_notification.h

@@ -112,13 +112,13 @@ class ToastEventHandler : public RuntimeClass<RuntimeClassFlags<ClassicCom>,
 
   IFACEMETHODIMP Invoke(
       ABI::Windows::UI::Notifications::IToastNotification* sender,
-      IInspectable* args);
+      IInspectable* args) override;
   IFACEMETHODIMP Invoke(
       ABI::Windows::UI::Notifications::IToastNotification* sender,
-      ABI::Windows::UI::Notifications::IToastDismissedEventArgs* e);
+      ABI::Windows::UI::Notifications::IToastDismissedEventArgs* e) override;
   IFACEMETHODIMP Invoke(
       ABI::Windows::UI::Notifications::IToastNotification* sender,
-      ABI::Windows::UI::Notifications::IToastFailedEventArgs* e);
+      ABI::Windows::UI::Notifications::IToastFailedEventArgs* e) override;
 
  private:
   base::WeakPtr<Notification> notification_;  // weak ref.

+ 3 - 1
electron_paks.gni

@@ -148,15 +148,17 @@ template("electron_paks") {
       "${root_gen_dir}/chrome/platform_locale_settings_",
       "${root_gen_dir}/components/strings/components_strings_",
       "${root_gen_dir}/content/app/strings/content_strings_",
+      "${root_gen_dir}/device/bluetooth/strings/bluetooth_strings_",
+      "${root_gen_dir}/services/strings/services_strings_",
       "${root_gen_dir}/ui/strings/app_locale_settings_",
       "${root_gen_dir}/ui/strings/ui_strings_",
-      "${root_gen_dir}/device/bluetooth/strings/bluetooth_strings_",
     ]
     deps = [
       "//chrome/app/resources:platform_locale_settings",
       "//components/strings:components_strings",
       "//content/app/strings",
       "//device/bluetooth/strings",
+      "//services/strings",
       "//ui/strings:app_locale_settings",
       "//ui/strings:ui_strings",
     ]

+ 0 - 10
electron_strings.grdp

@@ -1,15 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <grit-part>
-  <!-- Proxy Resolver Service -->
-  <message name="IDS_UTILITY_PROCESS_PROXY_RESOLVER_NAME" desc="The name of the utility process used for out-of-process V8 proxy resolution.">
-    V8 Proxy Resolver
-  </message>
-
-  <!-- PDF Compositor Service -->
-  <message name="IDS_UTILITY_PROCESS_PDF_COMPOSITOR_SERVICE_NAME" desc="The name of the utility process used for PDF compositing.">
-    PDF Compositor Service
-  </message>
-
   <!-- Printing Service -->
   <message name="IDS_UTILITY_PROCESS_PRINTING_SERVICE_NAME" desc="The name of the utility process used for printing conversions.">
     Printing Service

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

@@ -9,7 +9,7 @@ Allows Electron to restore WER when ELECTRON_DEFAULT_ERROR_MODE is set.
 This should be upstreamed
 
 diff --git a/content/gpu/gpu_main.cc b/content/gpu/gpu_main.cc
-index 39e87967360a9c7a2856ce4df9c182c782efb2a5..ade3e7905d01b25128f477c68c10edd0f96626c3 100644
+index 82f0c4f62be2f210db2c3ed1169c2a816c59cf1f..20dcb7dd1ee1172cfbf263f14724dd4701fa6eae 100644
 --- a/content/gpu/gpu_main.cc
 +++ b/content/gpu/gpu_main.cc
 @@ -234,6 +234,10 @@ int GpuMain(const MainFunctionParams& parameters) {
@@ -23,7 +23,7 @@ index 39e87967360a9c7a2856ce4df9c182c782efb2a5..ade3e7905d01b25128f477c68c10edd0
    // We are experiencing what appear to be memory-stomp issues in the GPU
    // process. These issues seem to be impacting the message loop and listeners
    // registered to it. Create the message loop on the heap to guard against
-@@ -329,7 +333,6 @@ int GpuMain(const MainFunctionParams& parameters) {
+@@ -335,7 +339,6 @@ int GpuMain(const MainFunctionParams& parameters) {
  
    GpuProcess gpu_process(io_thread_priority);
  

+ 13 - 5
patches/common/chromium/autofill_size_calculation.patch

@@ -9,22 +9,30 @@ then some methods call into the original. Let's just return an empty
 gfx::Rect and do the actual job in the subclass.
 
 diff --git a/chrome/browser/ui/autofill/popup_view_common.cc b/chrome/browser/ui/autofill/popup_view_common.cc
-index 004e9cb86bee7c10f6a68cdf6ceb60bf39627e1d..a78dc65c413ce72d31a364e1b36dbe067cf579d7 100644
+index 25e2cfce4999bdf6a94d61aae4558470d18f89ed..c9880bcd639eb59ae52c38dbdabbd86ebac3b530 100644
 --- a/chrome/browser/ui/autofill/popup_view_common.cc
 +++ b/chrome/browser/ui/autofill/popup_view_common.cc
-@@ -8,9 +8,11 @@
+@@ -8,15 +8,19 @@
  #include <utility>
  
  #include "build/build_config.h"
 +#if 0
  #include "chrome/browser/platform_util.h"
- #include "chrome/browser/ui/browser_finder.h"
- #include "chrome/browser/ui/browser_window.h"
 +#endif
  #include "ui/gfx/geometry/vector2d.h"
  
  #if defined(OS_ANDROID)
-@@ -176,14 +178,14 @@ gfx::Rect PopupViewCommon::GetWindowBounds(gfx::NativeView container_view) {
+ #include "ui/android/view_android.h"
+ #include "ui/android/window_android.h"
+ #else  // defined(OS_ANDROID)
++#if 0
+ #include "chrome/browser/ui/browser_finder.h"
+ #include "chrome/browser/ui/browser_window.h"
++#endif
+ #include "ui/views/widget/widget.h"
+ #endif  // !defined(OS_ANDROID)
+ 
+@@ -176,14 +180,14 @@ gfx::Rect PopupViewCommon::GetWindowBounds(gfx::NativeView container_view) {
        views::Widget::GetTopLevelWidgetForNativeView(container_view);
    if (widget)
      return widget->GetWindowBoundsInScreen();

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

@@ -14,10 +14,10 @@ when there is code doing that.
 This patch reverts the change to fix the crash in Electron.
 
 diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc
-index b5e3f6498dbbc4dafffe39eca93d0f477868001a..22bb327aa2f17c6f2807341475c010eff54317c4 100644
+index 4851cb4a227b8cbccfb0775d46f1ea001e5fce74..8f24199a056eac92ba7f2173fb1c7f173d50d6ff 100644
 --- a/third_party/blink/renderer/core/frame/local_frame.cc
 +++ b/third_party/blink/renderer/core/frame/local_frame.cc
-@@ -392,10 +392,6 @@ void LocalFrame::DetachImpl(FrameDetachType type) {
+@@ -393,10 +393,6 @@ void LocalFrame::DetachImpl(FrameDetachType type) {
    }
    CHECK(!view_ || !view_->IsAttached());
  
@@ -28,7 +28,7 @@ index b5e3f6498dbbc4dafffe39eca93d0f477868001a..22bb327aa2f17c6f2807341475c010ef
    if (!Client())
      return;
  
-@@ -413,6 +409,10 @@ void LocalFrame::DetachImpl(FrameDetachType type) {
+@@ -414,6 +410,10 @@ void LocalFrame::DetachImpl(FrameDetachType type) {
    // Notify ScriptController that the frame is closing, since its cleanup ends
    // up calling back to LocalFrameClient via WindowProxy.
    GetScriptController().ClearForClose();

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

@@ -19,7 +19,7 @@ index 82fb3fdfe6bfa8c8d885ee133270b6f2564325a8..f3bad71eab608d3b9ac0e08446c9e520
    // 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 c8174f4b93b78b9368ef38ecb56e9eccf0b71467..73c2bed83ce240574065e3699617d091a581e9e9 100644
+index b12520bc8d2f49d3bd03e4e9d228902e98785e3a..50fdbeec3d01cd16aa7a9f597fb4e6eb8451dffb 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
 @@ -873,6 +873,13 @@ v8::Local<v8::Object> WebLocalFrameImpl::GlobalProxy() const {
@@ -37,7 +37,7 @@ index c8174f4b93b78b9368ef38ecb56e9eccf0b71467..73c2bed83ce240574065e3699617d091
    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 3db1bec7516a40eb2f654574baa108e99ff9fb2d..fb5b43e48e455d64ce986cb5490291fc1c18d8ba 100644
+index b503bf7cef554dfb35c2123cba51c0fba7402c7e..2d38c4cebcd4040bbd417d4ae9189da954d9cfce 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
 @@ -146,6 +146,8 @@ class CORE_EXPORT WebLocalFrameImpl final

+ 12 - 12
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 c7901db74eb58fb0caf75ce8e1113278aa0063ed..dfe2a45e0b619500406afc46eed5b7ca11cb2fad 100644
+index ae459238a1bd31e219f1b1a2cb539d4c071dcf33..63e11474acb2af5406015b7a3d39dc51cf160506 100644
 --- a/content/browser/frame_host/render_frame_host_impl.cc
 +++ b/content/browser/frame_host/render_frame_host_impl.cc
-@@ -3712,6 +3712,7 @@ void RenderFrameHostImpl::CreateNewWindow(
+@@ -3709,6 +3709,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,
@@ -32,10 +32,10 @@ index 82882159b0bac6d47d678c485de0aacc7db06c2d..dd2299094b79d82da7ec1cd8f559050b
  
  // 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 ce9d0ede84da62061278f7fb0c543fc2e8a0216e..3729dcc9ea3272c943754a92c6ed1d7a1fd8fcf3 100644
+index f4c61acba134daf907a1b9afaaf0327a183287e4..d15061de5254fd4f248fed92f47a1b1fcf34cd68 100644
 --- a/content/public/browser/content_browser_client.cc
 +++ b/content/public/browser/content_browser_client.cc
-@@ -518,6 +518,8 @@ bool ContentBrowserClient::CanCreateWindow(
+@@ -519,6 +519,8 @@ bool ContentBrowserClient::CanCreateWindow(
      const std::string& frame_name,
      WindowOpenDisposition disposition,
      const blink::mojom::WindowFeatures& features,
@@ -45,7 +45,7 @@ index ce9d0ede84da62061278f7fb0c543fc2e8a0216e..3729dcc9ea3272c943754a92c6ed1d7a
      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 449941ddc4d43dc4cb164f6af9dcc69991dddc8b..4c84fb3648b3de36015b325246559f8aefe2ebd5 100644
+index 1a16897afa4457319518bce5341a6e1416bd016e..e5cddbc3a28e0f90bd1d1ae6ebe28d5f2d0299c7 100644
 --- a/content/public/browser/content_browser_client.h
 +++ b/content/public/browser/content_browser_client.h
 @@ -177,6 +177,7 @@ class RenderFrameHost;
@@ -56,7 +56,7 @@ index 449941ddc4d43dc4cb164f6af9dcc69991dddc8b..4c84fb3648b3de36015b325246559f8a
  class SerialDelegate;
  class SiteInstance;
  class SpeechRecognitionManagerDelegate;
-@@ -802,6 +803,8 @@ class CONTENT_EXPORT ContentBrowserClient {
+@@ -804,6 +805,8 @@ class CONTENT_EXPORT ContentBrowserClient {
        const std::string& frame_name,
        WindowOpenDisposition disposition,
        const blink::mojom::WindowFeatures& features,
@@ -66,10 +66,10 @@ index 449941ddc4d43dc4cb164f6af9dcc69991dddc8b..4c84fb3648b3de36015b325246559f8a
        bool opener_suppressed,
        bool* no_javascript_access);
 diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
-index 49e1e5647f700350a07ad88306a06122d0f0f204..39c5ce2a631cc1d78e36dbda506212b87f5a1939 100644
+index 1aa52af90279e16f667cb07677c11141d2efce01..3cb0f9b3e24fb79e43b724d7ad5e6ad99cb7450f 100644
 --- a/content/renderer/render_view_impl.cc
 +++ b/content/renderer/render_view_impl.cc
-@@ -77,6 +77,7 @@
+@@ -76,6 +76,7 @@
  #include "content/renderer/ime_event_guard.h"
  #include "content/renderer/internal_document_state_data.h"
  #include "content/renderer/loader/request_extra_data.h"
@@ -77,7 +77,7 @@ index 49e1e5647f700350a07ad88306a06122d0f0f204..39c5ce2a631cc1d78e36dbda506212b8
  #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/video_capture_impl_manager.h"
-@@ -1358,6 +1359,8 @@ WebView* RenderViewImpl::CreateView(
+@@ -1356,6 +1357,8 @@ WebView* RenderViewImpl::CreateView(
    }
    params->features = ConvertWebWindowFeaturesToMojoWindowFeatures(features);
  
@@ -87,10 +87,10 @@ index 49e1e5647f700350a07ad88306a06122d0f0f204..39c5ce2a631cc1d78e36dbda506212b8
    // moved on send.
    bool is_background_tab =
 diff --git a/content/shell/browser/web_test/web_test_content_browser_client.cc b/content/shell/browser/web_test/web_test_content_browser_client.cc
-index 3e3f251af3c531fca379f7fa00f67d671bbe2d5f..e77427146729664247e4dd3313f8533a78059bf7 100644
+index 0c8320a60fcfe0bb9353587afcd9e057206fea18..7ae8aec1f042e275ea27911039c18663f22620ea 100644
 --- a/content/shell/browser/web_test/web_test_content_browser_client.cc
 +++ b/content/shell/browser/web_test/web_test_content_browser_client.cc
-@@ -299,6 +299,8 @@ bool WebTestContentBrowserClient::CanCreateWindow(
+@@ -304,6 +304,8 @@ bool WebTestContentBrowserClient::CanCreateWindow(
      const std::string& frame_name,
      WindowOpenDisposition disposition,
      const blink::mojom::WindowFeatures& features,
@@ -100,7 +100,7 @@ index 3e3f251af3c531fca379f7fa00f67d671bbe2d5f..e77427146729664247e4dd3313f8533a
      bool opener_suppressed,
      bool* no_javascript_access) {
 diff --git a/content/shell/browser/web_test/web_test_content_browser_client.h b/content/shell/browser/web_test/web_test_content_browser_client.h
-index 8b9ae118bca4678c315d820af6b4dbe850943ed4..acde862d6d48429db5936f2e6735017dc2ef647e 100644
+index c07734ff32037fe4de7a5082d3409ee99ae19870..f0b47cc56ba5565d142e5b38efcefe333ce89e2f 100644
 --- a/content/shell/browser/web_test/web_test_content_browser_client.h
 +++ b/content/shell/browser/web_test/web_test_content_browser_client.h
 @@ -69,6 +69,8 @@ class WebTestContentBrowserClient : public ShellContentBrowserClient {

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

@@ -12,10 +12,10 @@ 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 dcf8654b210be64d55d98c784075e2453e6dad8f..cee4e47229b8d6bbb1e8b8e985eb3bb0b240f910 100644
+index a388e279e9ef62d4484182bdde02de264a263186..4e8c72ad1602f576014ea5c8bb1d572e1490a8ff 100644
 --- a/content/app/content_main_runner_impl.cc
 +++ b/content/app/content_main_runner_impl.cc
-@@ -750,7 +750,7 @@ int ContentMainRunnerImpl::Initialize(const ContentMainParams& params) {
+@@ -752,7 +752,7 @@ int ContentMainRunnerImpl::Initialize(const ContentMainParams& params) {
  #endif
  
      RegisterPathProvider();

+ 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 5f22028d622e43d2fc0efe68976ec21c4afa60f5..5c180d5367be3df04b51fe00aa3a02abc2fefb60 100644
+index dc34314c001aae412b44196805ad202694c180ef..9fd749dcd26555d84bc43aa3df3e8593371330c1 100644
 --- a/content/browser/browser_main_loop.cc
 +++ b/content/browser/browser_main_loop.cc
-@@ -1525,7 +1525,7 @@ void BrowserMainLoop::MainMessageLoopRun() {
+@@ -1529,7 +1529,7 @@ void BrowserMainLoop::MainMessageLoopRun() {
    }
  
    base::RunLoop run_loop;

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

@@ -8,7 +8,7 @@ this patch can be removed once we switch to network service,
 where the embedders have a chance to design their URLLoaders.
 
 diff --git a/content/browser/loader/cross_site_document_resource_handler.cc b/content/browser/loader/cross_site_document_resource_handler.cc
-index 2151c5b9698e9a2768875d04a2297956cc4c0d41..8a316a117ab367bcbac947894cbe1bc2428de93e 100644
+index d514c10160dd12f225c42e927977660cacbc9c43..49345f1d4d75c8b96efe485202d89774a05b6e34 100644
 --- a/content/browser/loader/cross_site_document_resource_handler.cc
 +++ b/content/browser/loader/cross_site_document_resource_handler.cc
 @@ -671,6 +671,9 @@ bool CrossSiteDocumentResourceHandler::ShouldBlockBasedOnHeaders(
@@ -22,10 +22,10 @@ index 2151c5b9698e9a2768875d04a2297956cc4c0d41..8a316a117ab367bcbac947894cbe1bc2
  }
  
 diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc
-index 2317ddf6a3c533f701fe44bf1b8114eb042c2189..9a823a98175c33c84b8d44a95c9d7d44568807ca 100644
+index 671d2259d50bfbb5b56a79907c1c86218ee04469..373eee0faf29f2d4be98156f4abd476c61dff713 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
+@@ -62,6 +62,10 @@ ContentBrowserClient::SiteInstanceForNavigationType ContentBrowserClient::Should
    return SiteInstanceForNavigationType::ASK_CHROMIUM;
  }
  
@@ -33,11 +33,11 @@ index 2317ddf6a3c533f701fe44bf1b8114eb042c2189..9a823a98175c33c84b8d44a95c9d7d44
 +  return false;
 +}
 +
- BrowserMainParts* ContentBrowserClient::CreateBrowserMainParts(
+ std::unique_ptr<BrowserMainParts> ContentBrowserClient::CreateBrowserMainParts(
      const MainFunctionParams& parameters) {
    return nullptr;
 diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h
-index a81f40507b2233c3bde03b940cccd6be0aaa4926..1a208d24bae80277e4a60f4180bb7f95c38561ce 100644
+index fcc5a0e5cd830afe459c1defe968b01e3f05f764..3067cf61e02f6abd048dc888237ef9e2d4909a78 100644
 --- a/content/public/browser/content_browser_client.h
 +++ b/content/public/browser/content_browser_client.h
 @@ -242,6 +242,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 25f8796f96bf176ef4bd222eb2426226b3107c83..8e7765eed9b9f24ddc3cb92e97893ff70dbeb683 100644
+index f50c1283c195a9fdffbf737a0368cf4ffe3940d5..c57cda2907fa68d1d8c6095d1bbd7ffb69db7d26 100644
 --- a/content/browser/frame_host/navigation_controller_impl.cc
 +++ b/content/browser/frame_host/navigation_controller_impl.cc
 @@ -1242,8 +1242,10 @@ NavigationType NavigationControllerImpl::ClassifyNavigation(

+ 4 - 4
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 f67479a1f9230f6869c281c884251792bf957cf9..deebf94235041cd439e5b94c81a43aa89b158445 100644
+index de88c769b5be6b7f568d999d8bb92792e0e0ae19..ba47d52fd467e01c3d36db48d3b546bfa8468ed5 100644
 --- a/ui/views/win/hwnd_message_handler.cc
 +++ b/ui/views/win/hwnd_message_handler.cc
-@@ -285,6 +285,10 @@ constexpr int kSynthesizedMouseMessagesTimeDifference = 500;
+@@ -286,6 +286,10 @@ constexpr int kSynthesizedMouseMessagesTimeDifference = 500;
  
  }  // namespace
  
@@ -29,7 +29,7 @@ index f67479a1f9230f6869c281c884251792bf957cf9..deebf94235041cd439e5b94c81a43aa8
  // 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.
  //
-@@ -336,6 +340,7 @@ class HWNDMessageHandler::ScopedRedrawLock {
+@@ -337,6 +341,7 @@ class HWNDMessageHandler::ScopedRedrawLock {
          cancel_unlock_(false),
          should_lock_(owner_->IsVisible() && !owner->HasChildRenderingWindow() &&
                       ::IsWindow(hwnd_) &&
@@ -37,7 +37,7 @@ index f67479a1f9230f6869c281c884251792bf957cf9..deebf94235041cd439e5b94c81a43aa8
                       (!(GetWindowLong(hwnd_, GWL_STYLE) & WS_CAPTION) ||
                        !ui::win::IsAeroGlassEnabled())) {
      if (should_lock_)
-@@ -936,6 +941,10 @@ bool HWNDMessageHandler::HasChildRenderingWindow() {
+@@ -937,6 +942,10 @@ bool HWNDMessageHandler::HasChildRenderingWindow() {
        hwnd());
  }
  

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

@@ -65,7 +65,7 @@ index 78a6b5739caed8c3925f303c52ed107be8e4ccfe..ddbf660e594c1a991d4e758fa11b1b2e
        !command_line->HasSwitch(switches::kUIDisablePartialSwap);
  #if defined(OS_WIN)
 diff --git a/components/viz/service/display/gl_renderer.cc b/components/viz/service/display/gl_renderer.cc
-index edf8e92edadae9354962a98712e3bc0ac7410fbe..553c181f04180185acfcf865e59c6dea839cc973 100644
+index b7a65f6dae8f2fcba0ba127cb50f0f338a26b9d0..bc1d0d3dd92d1adc6c94803755a23c28ff47771a 100644
 --- a/components/viz/service/display/gl_renderer.cc
 +++ b/components/viz/service/display/gl_renderer.cc
 @@ -80,6 +80,9 @@
@@ -203,7 +203,7 @@ index edf8e92edadae9354962a98712e3bc0ac7410fbe..553c181f04180185acfcf865e59c6dea
 +
 +#undef PATCH_CS
 diff --git a/content/browser/gpu/gpu_process_host.cc b/content/browser/gpu/gpu_process_host.cc
-index f19bbb46ea6f3962f83d10fb400ae55584a17a9e..c5dff79af54a03ef888e4474e5ea53689e8e8cd7 100644
+index f34cfb51693648a7b342d21a61c601090209355a..b488efc71edf5d79e16c25d3d7be2d8ea9fa2ec8 100644
 --- a/content/browser/gpu/gpu_process_host.cc
 +++ b/content/browser/gpu/gpu_process_host.cc
 @@ -191,6 +191,7 @@ GpuTerminationStatus ConvertToGpuTerminationStatus(
@@ -215,10 +215,10 @@ index f19bbb46ea6f3962f83d10fb400ae55584a17a9e..c5dff79af54a03ef888e4474e5ea5368
      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 f58456df8d856346a2350b87ecd84de5b75e0d13..e0b39de61eb43f2ac779e273d3df937e38c201c4 100644
+index c09ee4ccb619327a8723b389b758d200bf49a45c..40d6675f3f7901fc76bbcc2a4854de0a6dcceeec 100644
 --- a/content/browser/renderer_host/render_process_host_impl.cc
 +++ b/content/browser/renderer_host/render_process_host_impl.cc
-@@ -217,6 +217,7 @@
+@@ -218,6 +218,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 f58456df8d856346a2350b87ecd84de5b75e0d13..e0b39de61eb43f2ac779e273d3df937e
  #include "ui/gl/gl_switches.h"
  #include "ui/native_theme/native_theme_features.h"
  
-@@ -2912,6 +2913,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
+@@ -2913,6 +2914,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 f58456df8d856346a2350b87ecd84de5b75e0d13..e0b39de61eb43f2ac779e273d3df937e
      network::switches::kExplicitlyAllowedPorts,
      service_manager::switches::kDisableInProcessStackTraces,
 diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
-index 3efeb92f38e2ec5bb7303fa1c66cbab7dc78671c..b67999f475460bd5bf3caa449d27a508c62e5b20 100644
+index 33817ba20ae6cbfec8a28313092df9c10b1bf966..ea1a574c1f6d2a0f880391b21397c2cb342cbc77 100644
 --- a/content/renderer/render_widget.cc
 +++ b/content/renderer/render_widget.cc
-@@ -2799,6 +2799,9 @@ cc::LayerTreeSettings RenderWidget::GenerateLayerTreeSettings(
+@@ -2810,6 +2810,9 @@ cc::LayerTreeSettings RenderWidget::GenerateLayerTreeSettings(
    settings.main_frame_before_activation_enabled =
        cmd.HasSwitch(cc::switches::kEnableMainFrameBeforeActivation);
  

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

@@ -12,10 +12,10 @@ 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 40b42d5c85d693d15aedb6265628fe8da15dae76..1fdf88d06a869da2edad9383456cc89129f7d7cc 100644
+index a28f80496b26f5a833060c88bd25b1e652ca3420..434edc879af6a09dd45630551de8f7b5cc8a3a7e 100644
 --- a/content/browser/frame_host/render_frame_proxy_host.cc
 +++ b/content/browser/frame_host/render_frame_proxy_host.cc
-@@ -261,6 +261,12 @@ void RenderFrameProxyHost::BubbleLogicalScroll(
+@@ -268,6 +268,12 @@ void RenderFrameProxyHost::BubbleLogicalScroll(
  
  void RenderFrameProxyHost::OnDetach() {
    if (frame_tree_node_->render_manager()->IsMainFrameForInnerDelegate()) {

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

@@ -5,7 +5,7 @@ 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 bd0343cbb4ba7d91f7541f94d27499b1e1a120e8..e28d6e0077455a461f270988e3c46a89e1c485b2 100644
+index d1cf894d19b1cfa5e11dd44844ff15ed6a42dd58..553167fa07a3acee25434cfd71a968a112d56752 100644
 --- a/content/browser/renderer_host/render_widget_host_impl.cc
 +++ b/content/browser/renderer_host/render_widget_host_impl.cc
 @@ -672,6 +672,9 @@ void RenderWidgetHostImpl::WasHidden() {

+ 10 - 10
patches/common/chromium/disable_network_services_by_default.patch

@@ -12,15 +12,15 @@ We should remove this patch after all Electron's code has been migrated to the
 NetworkService.
 
 diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc
-index ae63eaa3a0e58905332bcd3b5623c34c2b4a9281..36499b0051936c356801067b1ba7714a5a608f3b 100644
+index 6d52910b8a248519a5eedad42d4f081840db92e7..89635931c4d45447f82156974a3145394098ef68 100644
 --- a/services/network/public/cpp/features.cc
 +++ b/services/network/public/cpp/features.cc
-@@ -21,7 +21,7 @@ const base::Feature kNetworkService {
-   "NetworkService",
- #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || \
-     (defined(OS_LINUX) && !defined(IS_CHROMECAST))
--      base::FEATURE_ENABLED_BY_DEFAULT
-+      base::FEATURE_DISABLED_BY_DEFAULT
- #else
-       base::FEATURE_DISABLED_BY_DEFAULT
- #endif
+@@ -18,7 +18,7 @@ const base::Feature kNetworkErrorLogging{"NetworkErrorLogging",
+                                          base::FEATURE_ENABLED_BY_DEFAULT};
+ // Enables the network service.
+ const base::Feature kNetworkService{"NetworkService",
+-                                    base::FEATURE_ENABLED_BY_DEFAULT};
++                                    base::FEATURE_DISABLED_BY_DEFAULT};
+ 
+ // Out of Blink CORS
+ const base::Feature kOutOfBlinkCors{"OutOfBlinkCors",

+ 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 bb3aff0859f1a6998889aa4b3fb2ca1143c0ed24..eb950ec3352634980447b91e46a652a877eb8782 100644
+index 7be135720a40d819bf19afddce77670d721cfe59..1ceaf378636e16d5e93f5acc6ff42019fc87f680 100644
 --- a/third_party/blink/renderer/core/dom/document.cc
 +++ b/third_party/blink/renderer/core/dom/document.cc
-@@ -3649,7 +3649,9 @@ bool Document::DispatchBeforeUnloadEvent(ChromeClient* chrome_client,
+@@ -3653,7 +3653,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 99269e86e5b60e1191cc4bfef59f8fb3f8cb2f27..0c90eaaaa5b08e33ea7fce212429a4e9f7a49cf5 100644
+index 21474e0e0396381b86512d901e64b1b1a170ed91..1e5f5f11df2de2f53bd7f52508983f0f3ca12420 100644
 --- a/third_party/blink/renderer/platform/BUILD.gn
 +++ b/third_party/blink/renderer/platform/BUILD.gn
-@@ -1749,7 +1749,7 @@ jumbo_source_set("blink_platform_unittests_sources") {
+@@ -1712,7 +1712,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",

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

@@ -7,7 +7,7 @@ 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 b5301d164138f21ca8ae01abfb153efde51ec324..91efc5f94f61f7bccc2ff802851097df8eb52818 100644
+index 297b61198dd46114b3d8c89488a71ed01aa299c4..0f64b4926f9077fbf5c4729fed5888088b6912e8 100644
 --- a/content/browser/frame_host/render_frame_host_manager.cc
 +++ b/content/browser/frame_host/render_frame_host_manager.cc
 @@ -2127,6 +2127,16 @@ bool RenderFrameHostManager::InitRenderView(
@@ -27,7 +27,7 @@ index b5301d164138f21ca8ae01abfb153efde51ec324..91efc5f94f61f7bccc2ff802851097df
    // 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();
-@@ -2159,6 +2169,51 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest(
+@@ -2158,6 +2168,51 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest(
                                                request.common_params().url);
      no_renderer_swap_allowed |=
          request.from_begin_navigation() && !can_renderer_initiate_transfer;
@@ -79,7 +79,7 @@ index b5301d164138f21ca8ae01abfb153efde51ec324..91efc5f94f61f7bccc2ff802851097df
    } else {
      // Subframe navigations will use the current renderer, unless specifically
      // allowed to swap processes.
-@@ -2170,23 +2225,17 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest(
+@@ -2169,23 +2224,17 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest(
    if (no_renderer_swap_allowed && !should_swap_for_error_isolation)
      return scoped_refptr<SiteInstance>(current_site_instance);
  
@@ -108,10 +108,10 @@ index b5301d164138f21ca8ae01abfb153efde51ec324..91efc5f94f61f7bccc2ff802851097df
  }
  
 diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc
-index 3729dcc9ea3272c943754a92c6ed1d7a1fd8fcf3..2317ddf6a3c533f701fe44bf1b8114eb042c2189 100644
+index d15061de5254fd4f248fed92f47a1b1fcf34cd68..671d2259d50bfbb5b56a79907c1c86218ee04469 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,
+@@ -52,6 +52,16 @@ void OverrideOnBindInterface(const service_manager::BindSourceInfo& remote_info,
                                                           handle);
  }
  
@@ -125,11 +125,11 @@ index 3729dcc9ea3272c943754a92c6ed1d7a1fd8fcf3..2317ddf6a3c533f701fe44bf1b8114eb
 +  return SiteInstanceForNavigationType::ASK_CHROMIUM;
 +}
 +
- BrowserMainParts* ContentBrowserClient::CreateBrowserMainParts(
+ std::unique_ptr<BrowserMainParts> ContentBrowserClient::CreateBrowserMainParts(
      const MainFunctionParams& parameters) {
    return nullptr;
 diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h
-index 4c84fb3648b3de36015b325246559f8aefe2ebd5..a81f40507b2233c3bde03b940cccd6be0aaa4926 100644
+index e5cddbc3a28e0f90bd1d1ae6ebe28d5f2d0299c7..fcc5a0e5cd830afe459c1defe968b01e3f05f764 100644
 --- a/content/public/browser/content_browser_client.h
 +++ b/content/public/browser/content_browser_client.h
 @@ -211,8 +211,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 8f879aae6036650326cae426bf52bceb65aa48ec..a71ee07331c3c45d05689c619b3bc5780e62e798 100644
+index 2a7cb2dcb562781310062bc93af3a3d2f5f57fa2..8948459732b4a9ba35a394b4c26be566484c2830 100644
 --- a/tools/gritsettings/resource_ids
 +++ b/tools/gritsettings/resource_ids
-@@ -448,6 +448,11 @@
+@@ -452,6 +452,11 @@
      "includes": [28880],
    },
  

+ 6 - 6
patches/common/chromium/mas-lssetapplicationlaunchservicesserverconnectionstatus.patch

@@ -7,17 +7,17 @@ Removes usage of the _LSSetApplicationLaunchServicesServerConnectionStatus
 private API.
 
 diff --git a/content/gpu/gpu_main.cc b/content/gpu/gpu_main.cc
-index a838f0ccfe1991bf2cf7c394c5e8edba101c30ab..39e87967360a9c7a2856ce4df9c182c782efb2a5 100644
+index f0d320c6772acb67752a997f507c96844e3549b8..82f0c4f62be2f210db2c3ed1169c2a816c59cf1f 100644
 --- a/content/gpu/gpu_main.cc
 +++ b/content/gpu/gpu_main.cc
-@@ -278,8 +278,10 @@ int GpuMain(const MainFunctionParams& parameters) {
-     std::unique_ptr<base::MessagePump> pump(new base::MessagePumpNSRunLoop());
-     main_message_loop.reset(new base::MessageLoop(std::move(pump)));
+@@ -283,8 +283,10 @@ int GpuMain(const MainFunctionParams& parameters) {
+         std::make_unique<base::SingleThreadTaskExecutor>(
+             base::MessagePump::Type::NS_RUNLOOP);
  
 +#ifndef MAS_BUILD
      // Tell LaunchServices to continue without a connection to the daemon.
      _LSSetApplicationLaunchServicesServerConnectionStatus(0, nullptr);
 +#endif
  #else
-     main_message_loop.reset(
-         new base::MessageLoop(base::MessageLoop::TYPE_DEFAULT));
+     main_thread_task_executor =
+         std::make_unique<base::SingleThreadTaskExecutor>(

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

@@ -7,7 +7,7 @@ Do not check for unique origin in CacheStorage, in Electron we may have
 scripts running without an origin.
 
 diff --git a/content/browser/cache_storage/legacy/legacy_cache_storage.cc b/content/browser/cache_storage/legacy/legacy_cache_storage.cc
-index 6250b9e0300745e632b3208223d00a8b97bd09f9..4663bfba7017241dde7c286541fcb33bd98f4fbe 100644
+index f91df0d1bc58bdc7244c6b248844f2bd51c90fa3..d1935f5a7bc189e9621e83a02c4cf4d1bf72ab60 100644
 --- a/content/browser/cache_storage/legacy/legacy_cache_storage.cc
 +++ b/content/browser/cache_storage/legacy/legacy_cache_storage.cc
 @@ -106,7 +106,7 @@ class LegacyCacheStorage::CacheLoader {

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

@@ -109,10 +109,10 @@ index 3373171efb690863c70cd10bd465fc4b3dd5320c..64f2c0344eb9978e712f5c39e1f43d9b
  
    // Removes |service| from the list of owned services, for example because the
 diff --git a/content/browser/renderer_interface_binders.cc b/content/browser/renderer_interface_binders.cc
-index c3955dd7250f0e608dc21e7b553d9b00af43286d..081d717c0bdffe04146e8cb854d0f52bfe644015 100644
+index a391b2789480156ae9406dc879fba84a97483597..5355777bba513047cd979f3a1e664d9918ae1112 100644
 --- a/content/browser/renderer_interface_binders.cc
 +++ b/content/browser/renderer_interface_binders.cc
-@@ -207,7 +207,7 @@ void RendererInterfaceBinders::InitializeParameterizedBinderRegistry() {
+@@ -209,7 +209,7 @@ void RendererInterfaceBinders::InitializeParameterizedBinderRegistry() {
                      RenderProcessHost* host, const url::Origin& origin) {
          static_cast<StoragePartitionImpl*>(host->GetStoragePartition())
              ->GetPlatformNotificationContext()

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

@@ -27,7 +27,7 @@ index 691c476708b6bcef9f231bc990b81dd06c4c0cc4..d124a4558affaf244ea82ab37f823db6
  #include "printing/printed_document.h"
  #include "printing/printing_utils.h"
 diff --git a/chrome/browser/printing/print_view_manager_base.cc b/chrome/browser/printing/print_view_manager_base.cc
-index 007b003dd58d44acd6e1351c237fca6463d90602..4ddbf18e335609623aba42cc39a7c977fe8c5229 100644
+index 309477ec68ed90f4d0229d92f37a6456e779c51c..84fd2dce14f3c95aba6df2170417b0612287070e 100644
 --- a/chrome/browser/printing/print_view_manager_base.cc
 +++ b/chrome/browser/printing/print_view_manager_base.cc
 @@ -27,10 +27,7 @@
@@ -132,7 +132,7 @@ index 007b003dd58d44acd6e1351c237fca6463d90602..4ddbf18e335609623aba42cc39a7c977
      return;
  
 diff --git a/chrome/browser/printing/print_view_manager_base.h b/chrome/browser/printing/print_view_manager_base.h
-index a2569836d04ff968e690215f56f6de3b6d884874..6ddec22641b74d5484c2e0d4f62e5d71d8d783e9 100644
+index cf074791d0e2e17bbf8cf0b000b8d63e235b7deb..0838041cfe45d26dca65b549452535820191ae44 100644
 --- a/chrome/browser/printing/print_view_manager_base.h
 +++ b/chrome/browser/printing/print_view_manager_base.h
 @@ -39,6 +39,8 @@ class PrintJob;
@@ -155,7 +155,7 @@ index a2569836d04ff968e690215f56f6de3b6d884874..6ddec22641b74d5484c2e0d4f62e5d71
  
  #if BUILDFLAG(ENABLE_PRINT_PREVIEW)
    // Prints the document in |print_data| with settings specified in
-@@ -197,6 +201,9 @@ class PrintViewManagerBase : public content::NotificationObserver,
+@@ -195,6 +199,9 @@ class PrintViewManagerBase : public content::NotificationObserver,
    // The current RFH that is printing with a system printing dialog.
    content::RenderFrameHost* printing_rfh_;
  

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

@@ -5,7 +5,7 @@ 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 3291e61a244ccf5e88fb8cafe10d01ce9b79b92c..9b5bb201f1725ca433d33a023bc887f6e85f648c 100644
+index a2902adc59b6b4083334130f3a8e29fca0c440d2..34673d9ab62311c458a581f98865014f01c4bcc0 100644
 --- a/content/browser/renderer_host/render_widget_host_view_base.cc
 +++ b/content/browser/renderer_host/render_widget_host_view_base.cc
 @@ -660,6 +660,15 @@ viz::FrameSinkId RenderWidgetHostViewBase::FrameSinkIdAtPoint(

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

@@ -66,7 +66,7 @@ index 8284524948c54c91e80e61c046ef7a8a7e66ba66..5e0218a0933df9440bcb86ac89373c41
    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 605fe2face44403b470fb372fadb22c38b6d1068..e25d4e7abc435cf16522aa66a423f5c0b64eddb9 100644
+index 19b52c4e90dabefe3043c2871a26d7538b7c6e31..a1138408c0985efc1334c9a92f7e875680b69a4a 100644
 --- a/content/browser/renderer_host/render_widget_host_view_mac.mm
 +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
 @@ -62,6 +62,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 2503eb797188cbb22be0ad703a35d30c16dfad9f..f0c614e9e174a2fa362242559026c8c30dee56bf 100644
+index 7b277dc44034b556594bf47736d3ea95e85d2ac2..3d642578ed329b970e23785c09106b4cfdd9445a 100644
 --- a/chrome/BUILD.gn
 +++ b/chrome/BUILD.gn
-@@ -1685,7 +1685,7 @@ if (is_chrome_branded && !is_android) {
+@@ -1686,7 +1686,7 @@ if (is_chrome_branded && !is_android) {
    }
  }
  
@@ -64,7 +64,7 @@ index 2503eb797188cbb22be0ad703a35d30c16dfad9f..f0c614e9e174a2fa362242559026c8c3
    chrome_paks("packed_resources") {
      if (is_mac) {
        output_dir = "$root_gen_dir/repack"
-@@ -1709,6 +1709,12 @@ if (!is_android) {
+@@ -1710,6 +1710,12 @@ if (!is_android) {
    }
  }
  

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

@@ -6,10 +6,10 @@ Subject: scroll_bounce_flag.patch
 Patch to make scrollBounce option work.
 
 diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
-index 036f9c735e5409fe69c992a97eb57d7d224e6e81..97a9928d0c9ecd8c18f925e5d660e3de39745386 100644
+index a908f83034f553b3b6769d75e295eeee2602bfc6..89b9be1f227f9040c5814d051d3cad1bbbe7baa1 100644
 --- a/content/renderer/render_thread_impl.cc
 +++ b/content/renderer/render_thread_impl.cc
-@@ -1520,7 +1520,7 @@ bool RenderThreadImpl::IsGpuMemoryBufferCompositorResourcesEnabled() {
+@@ -1523,7 +1523,7 @@ bool RenderThreadImpl::IsGpuMemoryBufferCompositorResourcesEnabled() {
  }
  
  bool RenderThreadImpl::IsElasticOverscrollEnabled() {

+ 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 a1ed7949ba0623af8989b7286c11bca797278227..f58456df8d856346a2350b87ecd84de5b75e0d13 100644
+index 1aa874a2cf34f0cbd17e8a95e3c6ce41d809e590..c09ee4ccb619327a8723b389b758d200bf49a45c 100644
 --- a/content/browser/renderer_host/render_process_host_impl.cc
 +++ b/content/browser/renderer_host/render_process_host_impl.cc
-@@ -417,6 +417,10 @@ class RendererSandboxedProcessLauncherDelegate
+@@ -418,6 +418,10 @@ class RendererSandboxedProcessLauncherDelegate
      : public SandboxedProcessLauncherDelegate {
   public:
    RendererSandboxedProcessLauncherDelegate() {}
@@ -36,7 +36,7 @@ index a1ed7949ba0623af8989b7286c11bca797278227..f58456df8d856346a2350b87ecd84de5
  
    ~RendererSandboxedProcessLauncherDelegate() override {}
  
-@@ -436,6 +440,9 @@ class RendererSandboxedProcessLauncherDelegate
+@@ -437,6 +441,9 @@ class RendererSandboxedProcessLauncherDelegate
  
  #if BUILDFLAG(USE_ZYGOTE_HANDLE)
    service_manager::ZygoteHandle GetZygote() override {
@@ -46,7 +46,7 @@ index a1ed7949ba0623af8989b7286c11bca797278227..f58456df8d856346a2350b87ecd84de5
      const base::CommandLine& browser_command_line =
          *base::CommandLine::ForCurrentProcess();
      base::CommandLine::StringType renderer_prefix =
-@@ -449,6 +456,11 @@ class RendererSandboxedProcessLauncherDelegate
+@@ -450,6 +457,11 @@ class RendererSandboxedProcessLauncherDelegate
    service_manager::SandboxType GetSandboxType() override {
      return service_manager::SANDBOX_TYPE_RENDERER;
    }
@@ -58,7 +58,7 @@ index a1ed7949ba0623af8989b7286c11bca797278227..f58456df8d856346a2350b87ecd84de5
  };
  
  const char kSessionStorageHolderKey[] = "kSessionStorageHolderKey";
-@@ -1729,11 +1741,18 @@ bool RenderProcessHostImpl::Init() {
+@@ -1730,11 +1742,18 @@ bool RenderProcessHostImpl::Init() {
        cmd_line->PrependWrapper(renderer_prefix);
      AppendRendererCommandLine(cmd_line.get());
  

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

@@ -5,10 +5,10 @@ Subject: unsandboxed ppapi processes skip zygote
 
 
 diff --git a/content/browser/ppapi_plugin_process_host.cc b/content/browser/ppapi_plugin_process_host.cc
-index 817fa41a2dcb4692b33915281b1efc66d1b07334..e7c58a83517061bc127b57e6e0e6875d681b3430 100644
+index 37713154ca38166f5abf34f128211e84a9267553..2afb96a4c46d654630c5519b7654b42654a88b5f 100644
 --- a/content/browser/ppapi_plugin_process_host.cc
 +++ b/content/browser/ppapi_plugin_process_host.cc
-@@ -106,6 +106,9 @@ class PpapiPluginSandboxedProcessLauncherDelegate
+@@ -121,6 +121,9 @@ class PpapiPluginSandboxedProcessLauncherDelegate
    service_manager::ZygoteHandle GetZygote() override {
      const base::CommandLine& browser_command_line =
          *base::CommandLine::ForCurrentProcess();

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

@@ -98,7 +98,7 @@ index 93c52d2b928cba6e98723e19b005fb7bd7089a58..4dc645e770a2a039ed8e4ff4de555767
   private:
    const HWND hwnd_;
 diff --git a/components/viz/service/BUILD.gn b/components/viz/service/BUILD.gn
-index e2bb3f029f754a5d4d3902af0c0c87da762182eb..10b369fe9ac1e7739c288c4ccf09f621ea444bab 100644
+index f17983a5cc70f8ab1e5c531de8e26fdec04a079b..16aefe38f0c674d97a89d3e511dc104ae0670f26 100644
 --- a/components/viz/service/BUILD.gn
 +++ b/components/viz/service/BUILD.gn
 @@ -117,6 +117,8 @@ viz_component("service") {

+ 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 05f63c0802d4af296064e258e827098fbe97e972..0b3cee64c9a13ed6cc0f187571eb90db12fcb66a 100644
+index f88cff5ab6d117c24cd827bdf30f8dff10b09ade..8ab7f889b7bed52c03d9061c1f061472eea1d599 100644
 --- a/content/browser/web_contents/web_contents_impl.cc
 +++ b/content/browser/web_contents/web_contents_impl.cc
-@@ -2068,6 +2068,12 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
+@@ -2070,6 +2070,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 05f63c0802d4af296064e258e827098fbe97e972..0b3cee64c9a13ed6cc0f187571eb90db
    WebContentsViewDelegate* delegate =
        GetContentClient()->browser()->GetWebContentsViewDelegate(this);
  
-@@ -2083,6 +2089,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
+@@ -2085,6 +2091,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
            &render_view_host_delegate_view_);
      }
    }

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

@@ -17,7 +17,7 @@ index ee5760ecbe0f836d0e49f53527252a48f4344b03..a413be0448816152f99d234a4e409bf0
        GetRenderViewHostID(web_contents_->GetRenderViewHost()) !=
        drag_start_view_id_;
 diff --git a/content/browser/web_contents/web_drag_dest_mac.mm b/content/browser/web_contents/web_drag_dest_mac.mm
-index 9423f9c8a225f9d18f6dcd0b9f7de033cbe495df..e7fe311327f698a760c09db2c7677a10c59f5224 100644
+index f4250007968103cb174d201eb377b04e589dc0a8..90e548004049f3636dee08341f2b77af6de78e1a 100644
 --- a/content/browser/web_contents/web_drag_dest_mac.mm
 +++ b/content/browser/web_contents/web_drag_dest_mac.mm
 @@ -336,6 +336,7 @@ - (void)setDragStartTrackersForProcess:(int)processID {

+ 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 fa2e153443329bcb5a48fe5c577db74a1aec26ca..6bad6c2e34e73d990d49fca4ad953cfbf8deba83 100644
+index 31fcd7d89bf8f23d32ad385351d272e81aad36a1..373a76a576e2ccdf604036daadf012c24d409858 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 {
+@@ -389,6 +389,11 @@ class CONTENT_EXPORT ContentRendererClient {
    virtual void DidInitializeWorkerContextOnWorkerThread(
        v8::Local<v8::Context> context) {}
  
@@ -21,10 +21,10 @@ index fa2e153443329bcb5a48fe5c577db74a1aec26ca..6bad6c2e34e73d990d49fca4ad953cfb
    // 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 922aae383d1eb768c94068674fe57864717baf35..2772afc477188a5c465bb7cdb4c97a28da560700 100644
+index 32f5e253cee84ef0a9a88d500cb96e4a2321933c..307905c8bcd8de877b5f319b6ff24729a9b40b44 100644
 --- a/content/renderer/renderer_blink_platform_impl.cc
 +++ b/content/renderer/renderer_blink_platform_impl.cc
-@@ -1051,6 +1051,12 @@ void RendererBlinkPlatformImpl::WillStopWorkerThread() {
+@@ -1044,6 +1044,12 @@ void RendererBlinkPlatformImpl::WillStopWorkerThread() {
    WorkerThreadRegistry::Instance()->WillStopCurrentWorkerThread();
  }
  
@@ -38,22 +38,22 @@ index 922aae383d1eb768c94068674fe57864717baf35..2772afc477188a5c465bb7cdb4c97a28
      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 39d9cf7590c11a178acbf8f9c6dbc3d20088860c..bef9d6351c2a9456ffc5279343515c017a390d97 100644
+index ba77a976729d592c132778efffc5def8ec3ab35a..b85b09f0542df58aebb2e8e9c4ed69fba4f04272 100644
 --- a/content/renderer/renderer_blink_platform_impl.h
 +++ b/content/renderer/renderer_blink_platform_impl.h
-@@ -200,6 +200,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl {
+@@ -199,6 +199,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;
- 
-   void RecordMetricsForBackgroundedRendererPurge() override;
+   bool IsExcludedHeaderForServiceWorkerFetchEvent(
+       const blink::WebString& header_name) override;
  
 diff --git a/third_party/blink/public/platform/platform.h b/third_party/blink/public/platform/platform.h
-index 782a3a3a121620a130ff165e0f0bccba0fe0c61a..cdbabdbd09065e843bf6fe75055b7fc32a310065 100644
+index cd2e8603c391b1732abb8621ee41a2703ded6c39..44723c4d76cb2bcd258d8859aee4530ce4c753ee 100644
 --- a/third_party/blink/public/platform/platform.h
 +++ b/third_party/blink/public/platform/platform.h
-@@ -656,6 +656,7 @@ class BLINK_PLATFORM_EXPORT Platform {
+@@ -659,6 +659,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 782a3a3a121620a130ff165e0f0bccba0fe0c61a..cdbabdbd09065e843bf6fe75055b7fc3
        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 512c3335456016c6d9afebe607999cff3e9f4709..7c90cb0cd86f528895f6ffebfcde854acb7cd124 100644
+index 6c71516b1906fa2cae5440782595af7a2eea8ab7..c150855e51c6623c950c3875a447217ca091ea50 100644
 --- a/third_party/blink/renderer/core/workers/worker_thread.cc
 +++ b/third_party/blink/renderer/core/workers/worker_thread.cc
-@@ -637,6 +637,12 @@ void WorkerThread::PrepareForShutdownOnWorkerThread() {
+@@ -640,6 +640,12 @@ void WorkerThread::PrepareForShutdownOnWorkerThread() {
      nested_runner_->QuitNow();
    }
  

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

@@ -30,7 +30,7 @@ index c54b088404229dccf015e20b6a5bab19d3d94e69..cc603dc4aae69de4b09f06ed0bca48cd
       * Free the memory block of size |length|, pointed to by |data|.
       * That memory is guaranteed to be previously allocated by |Allocate|.
 diff --git a/src/api/api.cc b/src/api/api.cc
-index e6d23c4306eaae0aca293a200d998c2f68f7db17..dc1efc9015ab058eb38812eba7cd92e050a709b0 100644
+index 74fc41ae4935044bc23c11a511abd5342d8f8e5d..a4e275c19097a9083606707d969791194e9b23d0 100644
 --- a/src/api/api.cc
 +++ b/src/api/api.cc
 @@ -515,6 +515,10 @@ void V8::SetSnapshotDataBlob(StartupData* snapshot_blob) {

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

@@ -5,10 +5,10 @@ Subject: build_gn.patch
 
 
 diff --git a/BUILD.gn b/BUILD.gn
-index 029a66a4358a3bc13963e089105a3dc46e341228..98df02e301361b2a4b01b19aa44e53e6e721bed7 100644
+index cd77a334e7dd92676ff28b5bb57137aee51d8950..de1b2590efdfbe0dfd9c3af93d778b7faaf7ed50 100644
 --- a/BUILD.gn
 +++ b/BUILD.gn
-@@ -273,7 +273,7 @@ config("internal_config") {
+@@ -269,7 +269,7 @@ config("internal_config") {
      ":v8_header_features",
    ]
  
@@ -17,7 +17,7 @@ index 029a66a4358a3bc13963e089105a3dc46e341228..98df02e301361b2a4b01b19aa44e53e6
      defines += [ "BUILDING_V8_SHARED" ]
    }
  }
-@@ -3780,7 +3780,7 @@ if (current_toolchain == v8_generator_toolchain) {
+@@ -3787,7 +3787,7 @@ if (current_toolchain == v8_generator_toolchain) {
        "src/interpreter/bytecodes.h",
      ]
  
@@ -26,7 +26,7 @@ index 029a66a4358a3bc13963e089105a3dc46e341228..98df02e301361b2a4b01b19aa44e53e6
  
      deps = [
        ":v8_libbase",
-@@ -3811,6 +3811,8 @@ if (v8_use_snapshot && current_toolchain == v8_snapshot_toolchain) {
+@@ -3818,6 +3818,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/api.cc b/src/api/api.cc
-index 659a45618a69bf742730d3456e3d4860efa9994f..103f2f479262bea69358544c59a784915d070e06 100644
+index a0e2766c60eee5e2bd1d7b651b1e16f656f79cdd..53f4449081e5ba082af72d7ab2db37e3eebdba46 100644
 --- a/src/api/api.cc
 +++ b/src/api/api.cc
-@@ -8238,7 +8238,7 @@ void Isolate::SetPromiseRejectCallback(PromiseRejectCallback callback) {
+@@ -8236,7 +8236,7 @@ void Isolate::SetPromiseRejectCallback(PromiseRejectCallback callback) {
  }
  
  void Isolate::RunMicrotasks() {
@@ -18,10 +18,10 @@ index 659a45618a69bf742730d3456e3d4860efa9994f..103f2f479262bea69358544c59a78491
    isolate->default_microtask_queue()->RunMicrotasks(isolate);
  }
 diff --git a/src/heap/heap.cc b/src/heap/heap.cc
-index c4c52bab7c3a5dac285a3349fce12b74400e7290..afc6418f6aed1f017b6fbf8f93ed487b61bda5c7 100644
+index 52387b5bc16e47c7453c13213549d3721e59e46d..8cdb21d3f1463fdbc4fc641c7bc8d30f3f07fe59 100644
 --- a/src/heap/heap.cc
 +++ b/src/heap/heap.cc
-@@ -5085,9 +5085,9 @@ void Heap::TearDown() {
+@@ -5080,9 +5080,9 @@ void Heap::TearDown() {
  void Heap::AddGCPrologueCallback(v8::Isolate::GCCallbackWithData callback,
                                   GCType gc_type, void* data) {
    DCHECK_NOT_NULL(callback);

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

@@ -174,7 +174,7 @@ index cc603dc4aae69de4b09f06ed0bca48cdae8eebd3..c59b0fa69880c237e3b60f190160d8b9
  #ifdef V8_ENABLE_CHECKS
    CheckCast(value);
 diff --git a/src/api/api.cc b/src/api/api.cc
-index dc1efc9015ab058eb38812eba7cd92e050a709b0..659a45618a69bf742730d3456e3d4860efa9994f 100644
+index a4e275c19097a9083606707d969791194e9b23d0..a0e2766c60eee5e2bd1d7b651b1e16f656f79cdd 100644
 --- a/src/api/api.cc
 +++ b/src/api/api.cc
 @@ -2171,6 +2171,10 @@ int PrimitiveArray::Length() const {
@@ -324,7 +324,7 @@ index dc1efc9015ab058eb38812eba7cd92e050a709b0..659a45618a69bf742730d3456e3d4860
  Local<v8::Value> v8::StringObject::New(Isolate* v8_isolate,
                                         Local<String> value) {
    i::Handle<i::String> string = Utils::OpenHandle(*value);
-@@ -8591,6 +8668,9 @@ bool MicrotasksScope::IsRunningMicrotasks(Isolate* v8_isolate) {
+@@ -8589,6 +8666,9 @@ bool MicrotasksScope::IsRunningMicrotasks(Isolate* v8_isolate) {
    return microtask_queue->IsRunningMicrotasks();
  }
  
@@ -334,7 +334,7 @@ index dc1efc9015ab058eb38812eba7cd92e050a709b0..659a45618a69bf742730d3456e3d4860
  String::Utf8Value::Utf8Value(v8::Isolate* isolate, v8::Local<v8::Value> obj)
      : str_(nullptr), length_(0) {
    if (obj.IsEmpty()) return;
-@@ -8608,6 +8688,9 @@ String::Utf8Value::Utf8Value(v8::Isolate* isolate, v8::Local<v8::Value> obj)
+@@ -8606,6 +8686,9 @@ String::Utf8Value::Utf8Value(v8::Isolate* isolate, v8::Local<v8::Value> obj)
  
  String::Utf8Value::~Utf8Value() { i::DeleteArray(str_); }
  

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

@@ -6,7 +6,7 @@ Subject: Export symbols needed for Windows build
 These symbols are required to build v8 with BUILD_V8_SHARED on Windows.
 
 diff --git a/src/objects/objects.h b/src/objects/objects.h
-index 2a66cfff36a304ca19e20c83edd2bd9532bae549..d0e4ce49c972f4b873661610cc1d677bcc626f46 100644
+index 857f3ed0f6d537cd648f23f04a0ab4c28cce1f96..14c73a0425b4e1e677426eee929910add5615201 100644
 --- a/src/objects/objects.h
 +++ b/src/objects/objects.h
 @@ -791,7 +791,7 @@ enum class KeyCollectionMode {
@@ -19,7 +19,7 @@ index 2a66cfff36a304ca19e20c83edd2bd9532bae549..d0e4ce49c972f4b873661610cc1d677b
    explicit inline Relocatable(Isolate* isolate);
    inline virtual ~Relocatable();
 diff --git a/src/objects/ordered-hash-table.h b/src/objects/ordered-hash-table.h
-index 16db56818e5074e35cbb65b34219786c4cfe0d51..b14b8b44cedad707e99d175c9f63a1472ebe3c6e 100644
+index a83109ed90fa4544939c3825c3a78856f41128a6..06459f407fb99218490a132bd1c5df859cbf2b3c 100644
 --- a/src/objects/ordered-hash-table.h
 +++ b/src/objects/ordered-hash-table.h
 @@ -60,7 +60,7 @@ namespace internal {

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

@@ -6,15 +6,15 @@ Subject: expose_mksnapshot.patch
 Needed in order to target mksnapshot for mksnapshot zip.
 
 diff --git a/BUILD.gn b/BUILD.gn
-index 98df02e301361b2a4b01b19aa44e53e6e721bed7..e49d32517f4b48e6f7cc71d4994037190f9b9156 100644
+index de1b2590efdfbe0dfd9c3af93d778b7faaf7ed50..8530728d8702edd19cef1530f345fb6284a73f47 100644
 --- a/BUILD.gn
 +++ b/BUILD.gn
-@@ -3791,8 +3791,6 @@ if (current_toolchain == v8_generator_toolchain) {
+@@ -3798,8 +3798,6 @@ if (current_toolchain == v8_generator_toolchain) {
  
  if (v8_use_snapshot && current_toolchain == v8_snapshot_toolchain) {
    v8_executable("mksnapshot") {
 -    visibility = [ ":*" ]  # Only targets in this file can depend on this.
 -
      sources = [
-       "src/snapshot/embedded-file-writer.cc",
-       "src/snapshot/embedded-file-writer.h",
+       "src/snapshot/embedded/embedded-file-writer.cc",
+       "src/snapshot/embedded/embedded-file-writer.h",

+ 11 - 11
patches/common/v8/workaround_an_undefined_symbol_error.patch

@@ -11,11 +11,11 @@ with messages like this in the log:
 By moving some functions out of the the arm64-assembler header file,
 this error no longer seems to happen.
 
-diff --git a/src/arm64/assembler-arm64.cc b/src/arm64/assembler-arm64.cc
-index 4408a44770bcc5106bc2dd843ef4954dad7ff7df..df9683fd5e9720255ff6b83e47ec64e2f83f7722 100644
---- a/src/arm64/assembler-arm64.cc
-+++ b/src/arm64/assembler-arm64.cc
-@@ -4013,6 +4013,22 @@ void Assembler::MoveWide(const Register& rd, uint64_t imm, int shift,
+diff --git a/src/codegen/arm64/assembler-arm64.cc b/src/codegen/arm64/assembler-arm64.cc
+index 1806f82b461a5f7368281bcd3741fd8195a20f11..53da75760ba31bed3e3cf19397474b353bc83fdf 100644
+--- a/src/codegen/arm64/assembler-arm64.cc
++++ b/src/codegen/arm64/assembler-arm64.cc
+@@ -3786,6 +3786,22 @@ void Assembler::MoveWide(const Register& rd, uint64_t imm, int shift,
         ImmMoveWide(static_cast<int>(imm)) | ShiftMoveWide(shift));
  }
  
@@ -38,11 +38,11 @@ index 4408a44770bcc5106bc2dd843ef4954dad7ff7df..df9683fd5e9720255ff6b83e47ec64e2
  void Assembler::AddSub(const Register& rd, const Register& rn,
                         const Operand& operand, FlagsUpdate S, AddSubOp op) {
    DCHECK_EQ(rd.SizeInBits(), rn.SizeInBits());
-diff --git a/src/arm64/assembler-arm64.h b/src/arm64/assembler-arm64.h
-index 019295a527d29c2c00c3d092064a3ddde8b45263..ff832ce687e404572474c619f205ec826f2f2c1e 100644
---- a/src/arm64/assembler-arm64.h
-+++ b/src/arm64/assembler-arm64.h
-@@ -2230,11 +2230,7 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
+diff --git a/src/codegen/arm64/assembler-arm64.h b/src/codegen/arm64/assembler-arm64.h
+index 04cd4222417f5ac88f3c5f3278c45f1d128c7c8c..fb5feb23074ac888e85a3676c1cbbb63126e72d5 100644
+--- a/src/codegen/arm64/assembler-arm64.h
++++ b/src/codegen/arm64/assembler-arm64.h
+@@ -2148,11 +2148,7 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
      return rm.code() << Rm_offset;
    }
  
@@ -55,7 +55,7 @@ index 019295a527d29c2c00c3d092064a3ddde8b45263..ff832ce687e404572474c619f205ec82
  
    static Instr Ra(CPURegister ra) {
      DCHECK_NE(ra.code(), kSPRegInternalCode);
-@@ -2258,15 +2254,8 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
+@@ -2176,15 +2172,8 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
  
    // These encoding functions allow the stack pointer to be encoded, and
    // disallow the zero register.